{
  "_format": "hh-sol-artifact-1",
  "contractName": "MineHandlerLib",
  "sourceName": "contracts/V3/handler/MineHandlerLib.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "roundCount",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "attCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "attRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "historyModRoundCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stdAttenuationRoundCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stdAttenuationRate",
              "type": "uint256"
            },
            {
              "internalType": "uint16",
              "name": "stdAttenuationRateDenominator",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "spanTimesPower",
              "type": "uint16"
            },
            {
              "internalType": "uint256",
              "name": "attRatioDenominator",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "attRatio",
              "type": "uint256"
            }
          ],
          "internalType": "struct MineHandlerLib.ParamAttenuation",
          "name": "param",
          "type": "tuple"
        }
      ],
      "name": "callLongTermRatio",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "roundCount",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "attCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "attRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "historyModRoundCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stdAttenuationRoundCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stdAttenuationRate",
              "type": "uint256"
            },
            {
              "internalType": "uint16",
              "name": "stdAttenuationRateDenominator",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "spanTimesPower",
              "type": "uint16"
            },
            {
              "internalType": "uint256",
              "name": "attRatioDenominator",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "attRatio",
              "type": "uint256"
            }
          ],
          "internalType": "struct MineHandlerLib.ParamAttenuation",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "getClaimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "roundCount",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "attenuationCountRate",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "ruleType",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "durationType",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "intervalTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "stdAttenuationRoundCount",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "stdAttenuationRate",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "stdAttenuationRateDenominator",
              "type": "uint16"
            }
          ],
          "internalType": "struct MineHandlerLib.RuleAttenuation",
          "name": "ruleAtt",
          "type": "tuple"
        }
      ],
      "name": "processLongTermAttRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "roundCount",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "attenuationCountRate",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "ruleType",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "durationType",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "intervalTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "stdAttenuationRoundCount",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "stdAttenuationRate",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "stdAttenuationRateDenominator",
              "type": "uint16"
            }
          ],
          "internalType": "struct MineHandlerLib.RuleAttenuation",
          "name": "ruleAtt",
          "type": "tuple"
        }
      ],
      "name": "processTimerAttRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x613c0961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100985760003560e01c8063083ccac81461009d57806316405151146100d05780631f5dbd12146100e35780631feca1981461011057806346fb8fe6146101305780636d0aa59514610168578063808ca544146101965780638d5a6cd5146101b65780639ef5e7bb146101e6578063e8131059146101f9575b600080fd5b6100b06100ab366004612d09565b610242565b604080519384526020840192909252908201526060015b60405180910390f35b6100b06100de366004612d09565b6103d4565b8180156100ef57600080fd5b506101036100fe366004613196565b610531565b6040516100c7919061325e565b61012361011e366004613271565b6105ef565b6040516100c7919061330a565b81801561013c57600080fd5b5061015061014b366004613394565b610c36565b6040516001600160801b0390911681526020016100c7565b81801561017457600080fd5b50610188610183366004613415565b610cf9565b6040516100c792919061346b565b8180156101a257600080fd5b506101506101b1366004613487565b6110cc565b8180156101c257600080fd5b506101d66101d1366004613584565b61133d565b60405190151581526020016100c7565b6101d66101f43660046135b1565b611477565b81801561020557600080fd5b506102196102143660046135ce565b6115e2565b6040516100c79493929190938452602084019290925260ff166040830152606082015260800190565b6000806000836060015163ffffffff166000141561027b5761026686612710613631565b63ffffffff16925061271091508490506103cb565b60008061028b8760c060006118aa565b905060006102a58860206102a08460c061365d565b6118aa565b905060006102c58960206102ba8460c061365d565b6102a090602061365d565b905060006040518061014001604052808c63ffffffff1681526020018463ffffffff168152602001856001600160c01b031681526020018363ffffffff1681526020018a6060015163ffffffff1681526020018a6080015161ffff1681526020018a60a0015161ffff168152602001600061ffff1681526020016000815260200160008152509050610356816105ef565b905061036a8a826040015160c060006118c9565b995061038a8a82602001516020600060c0610385919061365d565b6118c9565b99506103b08a82606001516020600060c06103a5919061365d565b61038590602061365d565b99508061012001518161010001518b97509750975050505050505b93509350939050565b600080806c0e596b7b0c643c7196d9ccd05d602b1b80826103f78860c0836118aa565b9050600061040c8960206102a08460c061365d565b905060006104218a60206102ba8460c061365d565b90506000896060015163ffffffff1611801561044f57506060890151610447908261368b565b63ffffffff16155b801561046457506000836001600160c01b0316115b156104b1578860a0015161ffff16896080015161ffff168461048691906136ae565b61049091906136d4565b6001600160c01b031694506104a66001836136fa565b9150600090506104cd565b6001600160c01b038316156104cd57826001600160c01b031694505b6104d86001826136fa565b90506104e88a8660c060006118c9565b99506105038a63ffffffff84166020610385600060c061365d565b995061051e8a63ffffffff831660206103a5600060c061365d565b949b939a50939850919650505050505050565b604080516020810190915260608152600061054a6118ee565b60ff8716604082015260608a015190915061056490611935565b60ff16815260c08101859052606089015161057e9061195a565b61058b9060ff1689613631565b61059790612710613631565b62ffffff16608082015260608901516105af9061198a565b63ffffffff1660a082015260e0810184905261010081018390526040805160208101909152606081526105e281836119c5565b9998505050505050505050565b610653604051806101400160405280600063ffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600061ffff168152602001600061ffff16815260200160008152602001600081525090565b8160c0015161ffff1661271014156106b557600f60e08301526509184e72a00061010083015260408201516106b0578160a001518260c0015161ffff168361010001516106a09190613722565b6106aa9190613741565b60408301525b6107be565b8160c0015161ffff166103e8141561070457601260e0830152678ac7230489e8000061010083015260408201516106b0578160a001518260c0015161ffff168361010001516106a09190613722565b8160c0015161ffff166064141561075857601460e08301526d314dc6448d9338c15b0a0000000061010083015260408201516106b0578160a001518260c0015161ffff168361010001516106a09190613722565b8160c0015161ffff16600a14156107be57601e60e08301526c0e596b7b0c643c7196d9ccd05d602b1b61010083015260408201516107be578160a001518260c0015161ffff168361010001516107ae9190613722565b6107b89190613741565b60408301525b60c0820151606083015161ffff9091169061081057808360a0015184604001516107e89190613722565b6107f29190613741565b60408401526020830180516001919061080c90839061365d565b9052505b60008360800151846000015163ffffffff168560600151610831919061365d565b11610867578351604085015161084d9163ffffffff1690613722565b846101200181815161085f919061365d565b905250610c24565b8360600151846080015161087b9190613755565b846040015161088a9190613722565b846101200181815161089c919061365d565b9052506080840151845160608601516108bb9163ffffffff169061365d565b6108c5919061376c565b9050600084608001518560800151866000015163ffffffff1687606001516108ed919061365d565b6108f79190613755565b6109019190613741565b90506001811115610b4b5760008560e0015161ffff16826109229190613741565b905060008660e0015161ffff168261093a9190613722565b6109449084613755565b9050600080868960a001518a6040015161095e9190613722565b6109689190613741565b905060018960200181815161097d919061365d565b90525060408901515b848310156109e95760e08a0151819061099f908a613864565b8b60e001518c60a001516109b39190613864565b6109bd9084613722565b6109c79190613741565b9150816109d85760019150506109e9565b506109e283613874565b9250610986565b60008a60e0015161ffff16846109ff9190613722565b9050600086851015610a6e575b8b60e0015161ffff16811015610a695781610a2681613874565b60a08e01519093508491508b90610a3d9083613722565b610a479190613741565b935083610a58576001935050610ac3565b50610a6281613874565b9050610a0c565b610ac3565b85811015610ac35781610a8081613874565b60a08e01519093508491508b90610a979083613722565b610aa19190613741565b935083610ab2576001935050610ac3565b50610abc81613874565b9050610a6e565b60808c015160a08d0151610ad7908c613755565b60a08e0151610ae69086613722565b610af0878e613722565b610afa9190613755565b610b049190613741565b610b0e9190613722565b8c61012001818151610b20919061365d565b90525060208c018051839190610b3790839061365d565b905250505060408a015250610bba92505050565b8060011415610bba57828560a001518660400151610b699190613722565b610b739190613741565b604086015260208501805160019190610b8d90839061365d565b90525060408501516080860151610ba49190613722565b8561012001818151610bb6919061365d565b9052505b8115610c2257828560a001518660400151610bd59190613722565b610bdf9190613741565b604086015260208501805160019190610bf990839061365d565b9052506040850151610c0c908390613722565b8561012001818151610c1e919061365d565b9052505b505b63ffffffff1660608401525090919050565b600080610c4a610c4584611f56565b611f83565b9050600060039050600782511115610c6a57610c67846007612098565b90505b6040516331048c1760e11b815263ffffffff8816600482015261ffff80881660248301528616604482015260ff821660648201526001600160a01b03891690636209182e90608401600060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b50505050610ced846110cc565b98975050505050505050565b6000610d116040518060200160405280606081525090565b60008560600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5457600080fd5b505afa158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c919061388f565b6001600160a01b03166305cce54f87606001516101000151610db189606001516120f0565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260440160006040518083038186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e3391908101906138ac565b9050610e4b6040518060200160405280606081525090565b6000610e556118ee565b9050610e648860600151611935565b60ff16815260008080805b86518110156110b157868181518110610e8a57610e8a613945565b602002602001015160ff1660001415610ea2576110a1565b60008c60600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061388f565b60608e015161010081015190610f32906120f0565b8a8581518110610f4457610f44613945565b6020026020010151604051602001610f8d94939291906001600160a01b0394909416845263ffffffff92909216602084015261ffff16604083015260ff16606082015260800190565b60408051808303601f19018152908290528051602090910120630334a78160e11b825260048201819052915060009030906306694f029060240160006040518083038186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101b919081019061395b565b9050600061102a826000612098565b905061103681886139ef565b96508c8761ffff161015801561104a575084155b1561109d5789848151811061106157611061613945565b6020026020010151955089848151811061107d5761107d613945565b602090810291909101015160ff16604089015250600193506110b1915050565b5050505b6110aa81613874565b9050610e6f565b506110bc85856119c5565b5099929850919650505050505050565b6000806110da836000612098565b905060006110e9846001612098565b905060006110f8856002612098565b90506000611107866003612098565b90506000611116876004612098565b90506000611125886005612098565b90506000611134896006612098565b905063ffffffff8416156111ab578161ffff168361ffff16106111ab5760405162461bcd60e51b815260206004820152602560248201527f696620617474656e756174652c206d7573742052617465203c2044656e6f6d696044820152643730ba37b960d91b606482015260840160405180910390fd5b60006111bd8160ff8a166008826118c9565b90506111dd6001600160801b03821660ff8916600861038560008261365d565b905061120c6001600160801b03821663ffffffff881660206112016000600861365d565b61038590600861365d565b905061123b6001600160801b03821663ffffffff871660206112306000600861365d565b6103a590600861365d565b90506112736001600160801b03821661ffff8616601061125d6000600861365d565b61126890600861365d565b6103a590602061365d565b90506112c16001600160801b03821661ffff851660106112956000600861365d565b6112a090600861365d565b6112ab90602061365d565b6112b690602061365d565b61038590601061365d565b90506112e36001600160801b03821661ffff851660106112956000600861365d565b905061132f6001600160801b03821660ff8416600861130360008261365d565b61130e90600861365d565b61131990602061365d565b61132490602061365d565b6112b690601061365d565b9a9950505050505050505050565b60c0820151600090819060ff166113c457610120840151604080518554602081810283018401845282018181526113bd949388928492918491908401828280156113a657602002820191906000526020600020905b815481526020019060010190808311611392575b50505050508152505061210a90919063ffffffff16565b9050611436565b610120840151604080518554602081810283018401845282018181526114339493889284929184919084018282801561141c57602002820191906000526020600020905b815481526020019060010190808311611408575b50505050508152505061219d90919063ffffffff16565b90505b8061146e5760c084015160ff1661145d57610120840151611458908490612214565b61146e565b61012084015161146e9084906122c4565b90505b92915050565b6000806114fe836000015184602001518560600151866040015187608001518860a00151604080516001600160a01b039788166020808301919091529688168183015263ffffffff958616606082015293871660808501529190931660a08301529190931660c0808501919091528151808503909101815260e09093019052815191012090565b6040516340477c5d60e01b81526004810182905290915060009030906340477c5d9060240160006040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115779190810190613a0c565b8460e0015161ffff168151811061159057611590613945565b6020026020010151905060008060ff168560c0015160ff1614156115c6576101208501516115bf90839061210a565b90506115da565b6101208501516115d790839061219d565b90505b949350505050565b6000806000806000306001600160a01b03166380fed7448860600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b15801561163a57600080fd5b505afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611672919061388f565b60608a0151610100810151906116879061233c565b6116948c606001516120f0565b604080516001600160a01b03909516602086015263ffffffff9093169284019290925261ffff908116606084015216608082015260a001604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016116ff91815260200190565b60206040518083038186803b15801561171757600080fd5b505afa15801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f9190613b49565b905060006040518060c00160405280611774846001600160801b0316600860006118aa565b60ff1681526020016117966001600160801b03851660086102a060008261365d565b60ff1681526020016117c6846001600160801b03166020600060086117bb919061365d565b6102a090600861365d565b63ffffffff1681526020016117f9846001600160801b03166020600060086117ee919061365d565b6102ba90600861365d565b63ffffffff1681526020016118356001600160801b038516601061181f6000600861365d565b61182a90600861365d565b6102ba90602061365d565b61ffff1681526020016118856001600160801b03851660106118596000600861365d565b61186490600861365d565b61186f90602061365d565b61187a90602061365d565b6102a090601061365d565b61ffff1690529050611898888883612356565b929b919a509850909650945050505050565b91821c916000806118be600180861b613755565b909416949350505050565b600083821b81836118dd600180881b613755565b901b19969096161795945050505050565b6118f6612b1e565b6118fe612b1e565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60006114718260a0015160086000600861194f919061365d565b61187a90601061365d565b60006114718260a00151601060006008611974919061365d565b61197f90601061365d565b6117bb90601061365d565b60006114718260a001516020600060086119a4919061365d565b6119af90601061365d565b6119ba90601061365d565b61187a90600861365d565b60c0810151600190156119e057806119dc81613874565b9150505b8160e00151612710146119fb57806119f781613874565b9150505b81610100015161271014611a175780611a1381613874565b9150505b61014082015151151580611a3057506101608201515115155b80611a4057506101a08201515115155b15611ab2576000826101600151518361014001515111611a8557826101a00151518361016001515111611a7957826101a0015151611a8d565b82610160015151611a8d565b826101400151515b9050611a9a816004613722565b611aa4908361365d565b60ff90911661012084015290505b806001600160401b03811115611aca57611aca612bc0565b604051908082528060200260200182016040528015611af3578160200160208202803683370190505b5083528151611b039084906125c4565b611b1183836020015161261c565b611b1f838360600151612655565b611b2d8383604001516126a4565b611b3c838361012001516126e8565b60008060019050836080015162ffffff1661271014611b7157611b63858560800151612779565b611b6e6001836139ef565b91505b8360a0015163ffffffff1661271014611ba057611b92858560a001516127e0565b611b9d6002836139ef565b91505b60c084015115611be65760c0840151855182611bbb81613874565b935081518110611bcd57611bcd613945565b6020908102919091010152611be36004836139ef565b91505b8360e0015161271014611c2f5760e0840151855182611c0481613874565b935081518110611c1657611c16613945565b6020908102919091010152611c2c6008836139ef565b91505b83610100015161271014611c7a57610100840151855182611c4f81613874565b935081518110611c6157611c61613945565b6020908102919091010152611c776010836139ef565b91505b61012084015160ff1615611f455760005b84610120015160ff16811015611f3657600085610140015151118015611cb657508461014001515181105b15611d0d578461014001518181518110611cd257611cd2613945565b602002602001015186600001518380611cea90613874565b945081518110611cfc57611cfc613945565b602002602001018181525050611d3b565b855160009083611d1c81613874565b945081518110611d2e57611d2e613945565b6020026020010181815250505b600085610160015151118015611d5657508461016001515181105b15611dad578461016001518181518110611d7257611d72613945565b602002602001015186600001518380611d8a90613874565b945081518110611d9c57611d9c613945565b602002602001018181525050611ddb565b855160009083611dbc81613874565b945081518110611dce57611dce613945565b6020026020010181815250505b600085610180015151118015611df657508461018001515181105b15611e50578461018001518181518110611e1257611e12613945565b602002602001015160ff1686600001518380611e2d90613874565b945081518110611e3f57611e3f613945565b602002602001018181525050611e7d565b8551819083611e5e81613874565b945081518110611e7057611e70613945565b6020026020010181815250505b6000856101a0015151118015611e985750846101a001515181105b15611ef857846101a001518181518110611eb457611eb4613945565b60200260200101516001600160a01b031686600001518380611ed590613874565b945081518110611ee757611ee7613945565b602002602001018181525050611f26565b855160009083611f0781613874565b945081518110611f1957611f19613945565b6020026020010181815250505b611f2f81613874565b9050611c8b565b50611f426020836139ef565b91505b611f4f8583612853565b5050505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6060611f8e826128a3565b611f9757600080fd5b6000611fa2836128dc565b90506000816001600160401b03811115611fbe57611fbe612bc0565b60405190808252806020026020018201604052801561200357816020015b6040805180820190915260008082526020820152815260200190600190039081611fdc5790505b5090506000612015856020015161295f565b8560200151612024919061365d565b90506000805b8481101561208d5761203b836129e1565b915060405180604001604052808381526020018481525084828151811061206457612064613945565b6020908102919091010152612079828461365d565b92508061208581613874565b91505061202a565b509195945050505050565b6000806120a7610c4585611f56565b90506115da6120d1828560ff16815181106120c4576120c4613945565b6020026020010151611f83565b6002815181106120e3576120e3613945565b6020026020010151612a8a565b60006114718260a0015160106000600861187a919061365d565b6000612193836000015160008151811061212657612126613945565b60200260200101516001846000600861213f9190613b72565b61214a906004613b72565b612155906008613b72565b612160906004613b72565b61216b906010613b72565b612176906018613b72565b612181906020613b72565b61218b9190613b72565b60ff166118aa565b6001149392505050565b600061219383600001516000815181106121b9576121b9613945565b6020026020010151600184600060086121d29190613b72565b6121dd906004613b72565b6121e8906008613b72565b6121f3906004613b72565b6121fe906010613b72565b612209906018613b72565b612176906020613b72565b61229e8260000160008154811061222d5761222d613945565b9060005260206000200154600180846000600861224a9190613b72565b612255906004613b72565b612260906008613b72565b61226b906004613b72565b612276906010613b72565b612281906018613b72565b61228c906020613b72565b6122969190613b72565b60ff166118c9565b826000016000815481106122b4576122b4613945565b6000918252602090912001555050565b61229e826000016000815481106122dd576122dd613945565b906000526020600020015460018084600060086122fa9190613b72565b612305906004613b72565b612310906008613b72565b61231b906004613b72565b612326906010613b72565b612331906018613b72565b612281906020613b72565b60006114718260a001516010600060086102a0919061365d565b6000806000806001856000015160ff1614156124895760608701516020810151610100820151600092309263f8970ff39233926123929061233c565b61239f8e606001516120f0565b604080516001600160a01b039687166020820152959094169385019390935263ffffffff909116606084015261ffff90811660808401521660a082015260c001604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161241391815260200190565b60206040518083038186803b15801561242b57600080fd5b505afa15801561243f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124639190613b97565b905060008061247389848a6103d4565b8a5192995090975090955093506125bb92505050565b60608701516020810151610100820151600092309263f8970ff39233926124af9061233c565b6124bc8e606001516120f0565b8e602001518f6060015160c0015160405160200161252797969594939291906001600160a01b039788168152958716602087015263ffffffff948516604087015261ffff9384166060870152919092166080850152931660a08301529190911660c082015260e00190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161255b91815260200190565b60206040518083038186803b15801561257357600080fd5b505afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab9190613b97565b905060008061247389848a610242565b93509350935093565b6125f982600001516000815181106125de576125de613945565b60200260200101518260ff16600860ff16600060ff166118c9565b8251805160009061260c5761260c613945565b6020026020010181815250505050565b6125f9826000015160008151811061263657612636613945565b60200260200101518260ff16600460ff16600060086122969190613b72565b6125f9826000015160008151811061266f5761266f613945565b60200260200101518260ff16600460ff166000600861268e9190613b72565b612699906004613b72565b612296906008613b72565b6125f982600001516000815181106126be576126be613945565b60200260200101518260ff16600860ff16600060086126dd9190613b72565b612296906004613b72565b6125f9826000015160008151811061270257612702613945565b60200260200101518260ff16600860ff16600060086127219190613b72565b61272c906004613b72565b612737906008613b72565b612742906004613b72565b61274d906010613b72565b612758906018613b72565b612763906020613b72565b61276e906020613b72565b612296906020613b72565b6125f9826000015160008151811061279357612793613945565b60200260200101518262ffffff16601860ff16600060086127b49190613b72565b6127bf906004613b72565b6127ca906008613b72565b6127d5906004613b72565b612296906010613b72565b6125f982600001516000815181106127fa576127fa613945565b60200260200101518263ffffffff16602060ff166000600861281c9190613b72565b612827906004613b72565b612832906008613b72565b61283d906004613b72565b612848906010613b72565b612296906018613b72565b6125f9826000015160008151811061286d5761286d613945565b60200260200101518261ffff16601060ff166000600861288d9190613b72565b612898906004613b72565b6126dd906008613b72565b80516000906128b457506000919050565b6020820151805160001a9060c08210156128d2575060009392505050565b5060019392505050565b80516000906128ed57506000919050565b6000806128fd846020015161295f565b846020015161290c919061365d565b9050600084600001518560200151612924919061365d565b90505b8082101561295657612938826129e1565b612942908361365d565b91508261294e81613874565b935050612927565b50909392505050565b8051600090811a60808110156129785750600092915050565b60b8811080612993575060c08110801590612993575060f881105b156129a15750600192915050565b60c08110156129d5576129b6600160b8613bb0565b6129c39060ff1682613755565b6129ce90600161365d565b9392505050565b6129b6600160f8613bb0565b80516000908190811a60808110156129fc5760019150612a83565b60b8811015612a2257612a10608082613755565b612a1b90600161365d565b9150612a83565b60c0811015612a4f5760b78103600185019450806020036101000a85510460018201810193505050612a83565b60f8811015612a6357612a1060c082613755565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b805160009015801590612a9f57508151602110155b612aa857600080fd5b600080612ab484612ad7565b8151919350915060208210156115da5760208290036101000a9004949350505050565b6000806000612ae9846020015161295f565b90506000818560200151612afd919061365d565b90506000828660000151612b119190613755565b9196919550909350505050565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b803563ffffffff81168114612bbb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612bf857612bf8612bc0565b60405290565b60405160a081016001600160401b0381118282101715612bf857612bf8612bc0565b604080519081016001600160401b0381118282101715612bf857612bf8612bc0565b60405161018081016001600160401b0381118282101715612bf857612bf8612bc0565b60405161014081016001600160401b0381118282101715612bf857612bf8612bc0565b604051602081016001600160401b0381118282101715612bf857612bf8612bc0565b604051601f8201601f191681016001600160401b0381118282101715612cd257612cd2612bc0565b604052919050565b60ff81168114612ce957600080fd5b50565b8035612bbb81612cda565b803561ffff81168114612bbb57600080fd5b6000806000838503610100811215612d2057600080fd5b612d2985612ba7565b93506020850135925060c0603f1982011215612d4457600080fd5b50612d4d612bd6565b6040850135612d5b81612cda565b81526060850135612d6b81612cda565b6020820152612d7c60808601612ba7565b6040820152612d8d60a08601612ba7565b6060820152612d9e60c08601612cf7565b6080820152612daf60e08601612cf7565b60a0820152809150509250925092565b6001600160a01b0381168114612ce957600080fd5b8035612bbb81612dbf565b60006001600160401b03821115612df857612df8612bc0565b5060051b60200190565b600082601f830112612e1357600080fd5b81356020612e28612e2383612ddf565b612caa565b82815260059290921b84018101918181019086841115612e4757600080fd5b8286015b84811015612f895780356001600160401b0380821115612e6a57600080fd5b9088019060a0828b03601f19011215612e8257600080fd5b612e8a612bfe565b86830135612e9781612cda565b8152604083810135612ea881612dbf565b828901526060848101358284015260808501359083015260a084013583811115612ed25760008081fd5b8085019450508b603f850112612eea57600092508283fd5b878401359250612efc612e2384612ddf565b83815260069390931b8401810192888101908d851115612f1c5760008081fd5b948201945b84861015612f735782868f031215612f395760008081fd5b612f41612c20565b612f4a87612ba7565b81528a8701358060040b8114612f605760008081fd5b818c015282529482019490890190612f21565b6080840152505085525050918301918301612e4b565b509695505050505050565b60006001600160401b03821115612fad57612fad612bc0565b50601f01601f191660200190565b600082601f830112612fcc57600080fd5b8135612fda612e2382612f94565b818152846020838601011115612fef57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561301e57600080fd5b613026612bfe565b9050813561303381612dbf565b8152602082013561304381612dbf565b6020820152604082013561305681612dbf565b604082015260608201356001600160401b038082111561307557600080fd5b90830190610180828603121561308a57600080fd5b613092612c42565b61309b83612dd4565b81526130a960208401612dd4565b60208201526130ba60408401612dd4565b60408201526130cb60608401612dd4565b60608201526080830135608082015260a083013560a08201526130f060c08401612ba7565b60c082015261310160e08401612ba7565b60e0820152610100613114818501612ba7565b90820152610120613126848201612cec565b90820152610140838101358381111561313e57600080fd5b61314a88828701612e02565b828401525050610160808401358381111561316457600080fd5b61317088828701612fbb565b82840152505080606085015250505061318b60808301612cec565b608082015292915050565b600080600080600080600060e0888a0312156131b157600080fd5b87356001600160401b038111156131c757600080fd5b6131d38a828b0161300c565b9750506131e260208901612ba7565b95506131f060408901612cf7565b9450606088013561320081612cda565b9699959850939660808101359560a0820135955060c0909101359350915050565b805160208084528151848201819052600092820190839060408701905b80831015612f89578351825292840192600192909201919084019061323e565b6020815260006129ce6020830184613221565b6000610140828403121561328457600080fd5b61328c612c65565b61329583612ba7565b81526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201526132d560c08401612cf7565b60c08201526132e660e08401612cf7565b60e08201526101008381013590820152610120928301359281019290925250919050565b815163ffffffff16815261014081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015161336060c084018261ffff169052565b5060e083015161337660e084018261ffff169052565b50610100838101519083015261012092830151929091019190915290565b600080600080600060a086880312156133ac57600080fd5b85356133b781612dbf565b94506133c560208701612ba7565b93506133d360408701612cf7565b92506133e160608701612cf7565b915060808601356001600160401b038111156133fc57600080fd5b61340888828901612fbb565b9150509295509295909350565b60008060006060848603121561342a57600080fd5b83356001600160401b0381111561344057600080fd5b61344c8682870161300c565b93505061345b60208501612ba7565b9150604084013590509250925092565b60ff831681526040602082015260006115da6040830184613221565b60006020828403121561349957600080fd5b81356001600160401b038111156134af57600080fd5b6115da84828501612fbb565b600061014082840312156134ce57600080fd5b6134d6612c65565b90506134e182612dd4565b81526134ef60208301612dd4565b602082015261350060408301612dd4565b604082015261351160608301612ba7565b606082015261352260808301612ba7565b608082015261353360a08301612dd4565b60a082015261354460c08301612cec565b60c082015261355560e08301612cf7565b60e0820152610100613568818401612cec565b9082015261012061357a838201612cec565b9082015292915050565b600080610160838503121561359857600080fd5b6135a284846134bb565b94610140939093013593505050565b600061014082840312156135c457600080fd5b6129ce83836134bb565b600080604083850312156135e157600080fd5b82356001600160401b038111156135f757600080fd5b6136038582860161300c565b92505061361260208401612ba7565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516818304811182151516156136545761365461361b565b02949350505050565b600082198211156136705761367061361b565b500190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806136a2576136a2613675565b92169190910692915050565b60006001600160c01b03828116848216811515828404821116156136545761365461361b565b60006001600160c01b03838116806136ee576136ee613675565b92169190910492915050565b600063ffffffff8083168185168083038211156137195761371961361b565b01949350505050565b600081600019048311821515161561373c5761373c61361b565b500290565b60008261375057613750613675565b500490565b6000828210156137675761376761361b565b500390565b60008261377b5761377b613675565b500690565b600181815b808511156137bb5781600019048211156137a1576137a161361b565b808516156137ae57918102915b93841c9390800290613785565b509250929050565b6000826137d257506001611471565b816137df57506000611471565b81600181146137f557600281146137ff5761381b565b6001915050611471565b60ff8411156138105761381061361b565b50506001821b611471565b5060208310610133831016604e8410600b841016171561383e575081810a611471565b6138488383613780565b806000190482111561385c5761385c61361b565b029392505050565b60006129ce61ffff8416836137c3565b60006000198214156138885761388861361b565b5060010190565b6000602082840312156138a157600080fd5b815161146e81612dbf565b600060208083850312156138bf57600080fd5b82516001600160401b038111156138d557600080fd5b8301601f810185136138e657600080fd5b80516138f4612e2382612ddf565b81815260059190911b8201830190838101908783111561391357600080fd5b928401925b8284101561393a57835161392b81612cda565b82529284019290840190613918565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561396e57600080fd5b82516001600160401b0381111561398457600080fd5b8301601f8101851361399557600080fd5b80516139a3612e2382612f94565b81815286848385010111156139b757600080fd5b60005b828110156139d55783810185015182820186015284016139ba565b82811115612f895750600091810190930152509392505050565b600061ffff8083168185168083038211156137195761371961361b565b60006020808385031215613a1f57600080fd5b82516001600160401b0380821115613a3657600080fd5b818501915085601f830112613a4a57600080fd5b8151613a58612e2382612ddf565b81815260059190911b83018401908481019088831115613a7757600080fd5b8585015b83811015613b3c57805185811115613a935760008081fd5b8601808b03601f1901881315613aa95760008081fd5b613ab1612c88565b8882015187811115613ac35760008081fd5b8083019250508b603f830112613ad95760008081fd5b888201516040613aeb612e2383612ddf565b82815260059290921b84018101918b8101908f841115613b0b5760008081fd5b948201945b83861015613b295785518252948c0194908c0190613b10565b8452505050845250918601918601613a7b565b5098975050505050505050565b600060208284031215613b5b57600080fd5b81516001600160801b038116811461146e57600080fd5b600060ff821660ff84168060ff03821115613b8f57613b8f61361b565b019392505050565b600060208284031215613ba957600080fd5b5051919050565b600060ff821660ff841680821015613bca57613bca61361b565b9003939250505056fea2646970667358221220e86ecbaa16d6c39e79d09f8cf4cbf122ac5f8beb3c1fa2d107d9e8f43fbb1f1b64736f6c63430008080033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100985760003560e01c8063083ccac81461009d57806316405151146100d05780631f5dbd12146100e35780631feca1981461011057806346fb8fe6146101305780636d0aa59514610168578063808ca544146101965780638d5a6cd5146101b65780639ef5e7bb146101e6578063e8131059146101f9575b600080fd5b6100b06100ab366004612d09565b610242565b604080519384526020840192909252908201526060015b60405180910390f35b6100b06100de366004612d09565b6103d4565b8180156100ef57600080fd5b506101036100fe366004613196565b610531565b6040516100c7919061325e565b61012361011e366004613271565b6105ef565b6040516100c7919061330a565b81801561013c57600080fd5b5061015061014b366004613394565b610c36565b6040516001600160801b0390911681526020016100c7565b81801561017457600080fd5b50610188610183366004613415565b610cf9565b6040516100c792919061346b565b8180156101a257600080fd5b506101506101b1366004613487565b6110cc565b8180156101c257600080fd5b506101d66101d1366004613584565b61133d565b60405190151581526020016100c7565b6101d66101f43660046135b1565b611477565b81801561020557600080fd5b506102196102143660046135ce565b6115e2565b6040516100c79493929190938452602084019290925260ff166040830152606082015260800190565b6000806000836060015163ffffffff166000141561027b5761026686612710613631565b63ffffffff16925061271091508490506103cb565b60008061028b8760c060006118aa565b905060006102a58860206102a08460c061365d565b6118aa565b905060006102c58960206102ba8460c061365d565b6102a090602061365d565b905060006040518061014001604052808c63ffffffff1681526020018463ffffffff168152602001856001600160c01b031681526020018363ffffffff1681526020018a6060015163ffffffff1681526020018a6080015161ffff1681526020018a60a0015161ffff168152602001600061ffff1681526020016000815260200160008152509050610356816105ef565b905061036a8a826040015160c060006118c9565b995061038a8a82602001516020600060c0610385919061365d565b6118c9565b99506103b08a82606001516020600060c06103a5919061365d565b61038590602061365d565b99508061012001518161010001518b97509750975050505050505b93509350939050565b600080806c0e596b7b0c643c7196d9ccd05d602b1b80826103f78860c0836118aa565b9050600061040c8960206102a08460c061365d565b905060006104218a60206102ba8460c061365d565b90506000896060015163ffffffff1611801561044f57506060890151610447908261368b565b63ffffffff16155b801561046457506000836001600160c01b0316115b156104b1578860a0015161ffff16896080015161ffff168461048691906136ae565b61049091906136d4565b6001600160c01b031694506104a66001836136fa565b9150600090506104cd565b6001600160c01b038316156104cd57826001600160c01b031694505b6104d86001826136fa565b90506104e88a8660c060006118c9565b99506105038a63ffffffff84166020610385600060c061365d565b995061051e8a63ffffffff831660206103a5600060c061365d565b949b939a50939850919650505050505050565b604080516020810190915260608152600061054a6118ee565b60ff8716604082015260608a015190915061056490611935565b60ff16815260c08101859052606089015161057e9061195a565b61058b9060ff1689613631565b61059790612710613631565b62ffffff16608082015260608901516105af9061198a565b63ffffffff1660a082015260e0810184905261010081018390526040805160208101909152606081526105e281836119c5565b9998505050505050505050565b610653604051806101400160405280600063ffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600061ffff168152602001600061ffff16815260200160008152602001600081525090565b8160c0015161ffff1661271014156106b557600f60e08301526509184e72a00061010083015260408201516106b0578160a001518260c0015161ffff168361010001516106a09190613722565b6106aa9190613741565b60408301525b6107be565b8160c0015161ffff166103e8141561070457601260e0830152678ac7230489e8000061010083015260408201516106b0578160a001518260c0015161ffff168361010001516106a09190613722565b8160c0015161ffff166064141561075857601460e08301526d314dc6448d9338c15b0a0000000061010083015260408201516106b0578160a001518260c0015161ffff168361010001516106a09190613722565b8160c0015161ffff16600a14156107be57601e60e08301526c0e596b7b0c643c7196d9ccd05d602b1b61010083015260408201516107be578160a001518260c0015161ffff168361010001516107ae9190613722565b6107b89190613741565b60408301525b60c0820151606083015161ffff9091169061081057808360a0015184604001516107e89190613722565b6107f29190613741565b60408401526020830180516001919061080c90839061365d565b9052505b60008360800151846000015163ffffffff168560600151610831919061365d565b11610867578351604085015161084d9163ffffffff1690613722565b846101200181815161085f919061365d565b905250610c24565b8360600151846080015161087b9190613755565b846040015161088a9190613722565b846101200181815161089c919061365d565b9052506080840151845160608601516108bb9163ffffffff169061365d565b6108c5919061376c565b9050600084608001518560800151866000015163ffffffff1687606001516108ed919061365d565b6108f79190613755565b6109019190613741565b90506001811115610b4b5760008560e0015161ffff16826109229190613741565b905060008660e0015161ffff168261093a9190613722565b6109449084613755565b9050600080868960a001518a6040015161095e9190613722565b6109689190613741565b905060018960200181815161097d919061365d565b90525060408901515b848310156109e95760e08a0151819061099f908a613864565b8b60e001518c60a001516109b39190613864565b6109bd9084613722565b6109c79190613741565b9150816109d85760019150506109e9565b506109e283613874565b9250610986565b60008a60e0015161ffff16846109ff9190613722565b9050600086851015610a6e575b8b60e0015161ffff16811015610a695781610a2681613874565b60a08e01519093508491508b90610a3d9083613722565b610a479190613741565b935083610a58576001935050610ac3565b50610a6281613874565b9050610a0c565b610ac3565b85811015610ac35781610a8081613874565b60a08e01519093508491508b90610a979083613722565b610aa19190613741565b935083610ab2576001935050610ac3565b50610abc81613874565b9050610a6e565b60808c015160a08d0151610ad7908c613755565b60a08e0151610ae69086613722565b610af0878e613722565b610afa9190613755565b610b049190613741565b610b0e9190613722565b8c61012001818151610b20919061365d565b90525060208c018051839190610b3790839061365d565b905250505060408a015250610bba92505050565b8060011415610bba57828560a001518660400151610b699190613722565b610b739190613741565b604086015260208501805160019190610b8d90839061365d565b90525060408501516080860151610ba49190613722565b8561012001818151610bb6919061365d565b9052505b8115610c2257828560a001518660400151610bd59190613722565b610bdf9190613741565b604086015260208501805160019190610bf990839061365d565b9052506040850151610c0c908390613722565b8561012001818151610c1e919061365d565b9052505b505b63ffffffff1660608401525090919050565b600080610c4a610c4584611f56565b611f83565b9050600060039050600782511115610c6a57610c67846007612098565b90505b6040516331048c1760e11b815263ffffffff8816600482015261ffff80881660248301528616604482015260ff821660648201526001600160a01b03891690636209182e90608401600060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b50505050610ced846110cc565b98975050505050505050565b6000610d116040518060200160405280606081525090565b60008560600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5457600080fd5b505afa158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c919061388f565b6001600160a01b03166305cce54f87606001516101000151610db189606001516120f0565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260440160006040518083038186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e3391908101906138ac565b9050610e4b6040518060200160405280606081525090565b6000610e556118ee565b9050610e648860600151611935565b60ff16815260008080805b86518110156110b157868181518110610e8a57610e8a613945565b602002602001015160ff1660001415610ea2576110a1565b60008c60600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061388f565b60608e015161010081015190610f32906120f0565b8a8581518110610f4457610f44613945565b6020026020010151604051602001610f8d94939291906001600160a01b0394909416845263ffffffff92909216602084015261ffff16604083015260ff16606082015260800190565b60408051808303601f19018152908290528051602090910120630334a78160e11b825260048201819052915060009030906306694f029060240160006040518083038186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101b919081019061395b565b9050600061102a826000612098565b905061103681886139ef565b96508c8761ffff161015801561104a575084155b1561109d5789848151811061106157611061613945565b6020026020010151955089848151811061107d5761107d613945565b602090810291909101015160ff16604089015250600193506110b1915050565b5050505b6110aa81613874565b9050610e6f565b506110bc85856119c5565b5099929850919650505050505050565b6000806110da836000612098565b905060006110e9846001612098565b905060006110f8856002612098565b90506000611107866003612098565b90506000611116876004612098565b90506000611125886005612098565b90506000611134896006612098565b905063ffffffff8416156111ab578161ffff168361ffff16106111ab5760405162461bcd60e51b815260206004820152602560248201527f696620617474656e756174652c206d7573742052617465203c2044656e6f6d696044820152643730ba37b960d91b606482015260840160405180910390fd5b60006111bd8160ff8a166008826118c9565b90506111dd6001600160801b03821660ff8916600861038560008261365d565b905061120c6001600160801b03821663ffffffff881660206112016000600861365d565b61038590600861365d565b905061123b6001600160801b03821663ffffffff871660206112306000600861365d565b6103a590600861365d565b90506112736001600160801b03821661ffff8616601061125d6000600861365d565b61126890600861365d565b6103a590602061365d565b90506112c16001600160801b03821661ffff851660106112956000600861365d565b6112a090600861365d565b6112ab90602061365d565b6112b690602061365d565b61038590601061365d565b90506112e36001600160801b03821661ffff851660106112956000600861365d565b905061132f6001600160801b03821660ff8416600861130360008261365d565b61130e90600861365d565b61131990602061365d565b61132490602061365d565b6112b690601061365d565b9a9950505050505050505050565b60c0820151600090819060ff166113c457610120840151604080518554602081810283018401845282018181526113bd949388928492918491908401828280156113a657602002820191906000526020600020905b815481526020019060010190808311611392575b50505050508152505061210a90919063ffffffff16565b9050611436565b610120840151604080518554602081810283018401845282018181526114339493889284929184919084018282801561141c57602002820191906000526020600020905b815481526020019060010190808311611408575b50505050508152505061219d90919063ffffffff16565b90505b8061146e5760c084015160ff1661145d57610120840151611458908490612214565b61146e565b61012084015161146e9084906122c4565b90505b92915050565b6000806114fe836000015184602001518560600151866040015187608001518860a00151604080516001600160a01b039788166020808301919091529688168183015263ffffffff958616606082015293871660808501529190931660a08301529190931660c0808501919091528151808503909101815260e09093019052815191012090565b6040516340477c5d60e01b81526004810182905290915060009030906340477c5d9060240160006040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115779190810190613a0c565b8460e0015161ffff168151811061159057611590613945565b6020026020010151905060008060ff168560c0015160ff1614156115c6576101208501516115bf90839061210a565b90506115da565b6101208501516115d790839061219d565b90505b949350505050565b6000806000806000306001600160a01b03166380fed7448860600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b15801561163a57600080fd5b505afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611672919061388f565b60608a0151610100810151906116879061233c565b6116948c606001516120f0565b604080516001600160a01b03909516602086015263ffffffff9093169284019290925261ffff908116606084015216608082015260a001604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016116ff91815260200190565b60206040518083038186803b15801561171757600080fd5b505afa15801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f9190613b49565b905060006040518060c00160405280611774846001600160801b0316600860006118aa565b60ff1681526020016117966001600160801b03851660086102a060008261365d565b60ff1681526020016117c6846001600160801b03166020600060086117bb919061365d565b6102a090600861365d565b63ffffffff1681526020016117f9846001600160801b03166020600060086117ee919061365d565b6102ba90600861365d565b63ffffffff1681526020016118356001600160801b038516601061181f6000600861365d565b61182a90600861365d565b6102ba90602061365d565b61ffff1681526020016118856001600160801b03851660106118596000600861365d565b61186490600861365d565b61186f90602061365d565b61187a90602061365d565b6102a090601061365d565b61ffff1690529050611898888883612356565b929b919a509850909650945050505050565b91821c916000806118be600180861b613755565b909416949350505050565b600083821b81836118dd600180881b613755565b901b19969096161795945050505050565b6118f6612b1e565b6118fe612b1e565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60006114718260a0015160086000600861194f919061365d565b61187a90601061365d565b60006114718260a00151601060006008611974919061365d565b61197f90601061365d565b6117bb90601061365d565b60006114718260a001516020600060086119a4919061365d565b6119af90601061365d565b6119ba90601061365d565b61187a90600861365d565b60c0810151600190156119e057806119dc81613874565b9150505b8160e00151612710146119fb57806119f781613874565b9150505b81610100015161271014611a175780611a1381613874565b9150505b61014082015151151580611a3057506101608201515115155b80611a4057506101a08201515115155b15611ab2576000826101600151518361014001515111611a8557826101a00151518361016001515111611a7957826101a0015151611a8d565b82610160015151611a8d565b826101400151515b9050611a9a816004613722565b611aa4908361365d565b60ff90911661012084015290505b806001600160401b03811115611aca57611aca612bc0565b604051908082528060200260200182016040528015611af3578160200160208202803683370190505b5083528151611b039084906125c4565b611b1183836020015161261c565b611b1f838360600151612655565b611b2d8383604001516126a4565b611b3c838361012001516126e8565b60008060019050836080015162ffffff1661271014611b7157611b63858560800151612779565b611b6e6001836139ef565b91505b8360a0015163ffffffff1661271014611ba057611b92858560a001516127e0565b611b9d6002836139ef565b91505b60c084015115611be65760c0840151855182611bbb81613874565b935081518110611bcd57611bcd613945565b6020908102919091010152611be36004836139ef565b91505b8360e0015161271014611c2f5760e0840151855182611c0481613874565b935081518110611c1657611c16613945565b6020908102919091010152611c2c6008836139ef565b91505b83610100015161271014611c7a57610100840151855182611c4f81613874565b935081518110611c6157611c61613945565b6020908102919091010152611c776010836139ef565b91505b61012084015160ff1615611f455760005b84610120015160ff16811015611f3657600085610140015151118015611cb657508461014001515181105b15611d0d578461014001518181518110611cd257611cd2613945565b602002602001015186600001518380611cea90613874565b945081518110611cfc57611cfc613945565b602002602001018181525050611d3b565b855160009083611d1c81613874565b945081518110611d2e57611d2e613945565b6020026020010181815250505b600085610160015151118015611d5657508461016001515181105b15611dad578461016001518181518110611d7257611d72613945565b602002602001015186600001518380611d8a90613874565b945081518110611d9c57611d9c613945565b602002602001018181525050611ddb565b855160009083611dbc81613874565b945081518110611dce57611dce613945565b6020026020010181815250505b600085610180015151118015611df657508461018001515181105b15611e50578461018001518181518110611e1257611e12613945565b602002602001015160ff1686600001518380611e2d90613874565b945081518110611e3f57611e3f613945565b602002602001018181525050611e7d565b8551819083611e5e81613874565b945081518110611e7057611e70613945565b6020026020010181815250505b6000856101a0015151118015611e985750846101a001515181105b15611ef857846101a001518181518110611eb457611eb4613945565b60200260200101516001600160a01b031686600001518380611ed590613874565b945081518110611ee757611ee7613945565b602002602001018181525050611f26565b855160009083611f0781613874565b945081518110611f1957611f19613945565b6020026020010181815250505b611f2f81613874565b9050611c8b565b50611f426020836139ef565b91505b611f4f8583612853565b5050505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6060611f8e826128a3565b611f9757600080fd5b6000611fa2836128dc565b90506000816001600160401b03811115611fbe57611fbe612bc0565b60405190808252806020026020018201604052801561200357816020015b6040805180820190915260008082526020820152815260200190600190039081611fdc5790505b5090506000612015856020015161295f565b8560200151612024919061365d565b90506000805b8481101561208d5761203b836129e1565b915060405180604001604052808381526020018481525084828151811061206457612064613945565b6020908102919091010152612079828461365d565b92508061208581613874565b91505061202a565b509195945050505050565b6000806120a7610c4585611f56565b90506115da6120d1828560ff16815181106120c4576120c4613945565b6020026020010151611f83565b6002815181106120e3576120e3613945565b6020026020010151612a8a565b60006114718260a0015160106000600861187a919061365d565b6000612193836000015160008151811061212657612126613945565b60200260200101516001846000600861213f9190613b72565b61214a906004613b72565b612155906008613b72565b612160906004613b72565b61216b906010613b72565b612176906018613b72565b612181906020613b72565b61218b9190613b72565b60ff166118aa565b6001149392505050565b600061219383600001516000815181106121b9576121b9613945565b6020026020010151600184600060086121d29190613b72565b6121dd906004613b72565b6121e8906008613b72565b6121f3906004613b72565b6121fe906010613b72565b612209906018613b72565b612176906020613b72565b61229e8260000160008154811061222d5761222d613945565b9060005260206000200154600180846000600861224a9190613b72565b612255906004613b72565b612260906008613b72565b61226b906004613b72565b612276906010613b72565b612281906018613b72565b61228c906020613b72565b6122969190613b72565b60ff166118c9565b826000016000815481106122b4576122b4613945565b6000918252602090912001555050565b61229e826000016000815481106122dd576122dd613945565b906000526020600020015460018084600060086122fa9190613b72565b612305906004613b72565b612310906008613b72565b61231b906004613b72565b612326906010613b72565b612331906018613b72565b612281906020613b72565b60006114718260a001516010600060086102a0919061365d565b6000806000806001856000015160ff1614156124895760608701516020810151610100820151600092309263f8970ff39233926123929061233c565b61239f8e606001516120f0565b604080516001600160a01b039687166020820152959094169385019390935263ffffffff909116606084015261ffff90811660808401521660a082015260c001604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161241391815260200190565b60206040518083038186803b15801561242b57600080fd5b505afa15801561243f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124639190613b97565b905060008061247389848a6103d4565b8a5192995090975090955093506125bb92505050565b60608701516020810151610100820151600092309263f8970ff39233926124af9061233c565b6124bc8e606001516120f0565b8e602001518f6060015160c0015160405160200161252797969594939291906001600160a01b039788168152958716602087015263ffffffff948516604087015261ffff9384166060870152919092166080850152931660a08301529190911660c082015260e00190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161255b91815260200190565b60206040518083038186803b15801561257357600080fd5b505afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab9190613b97565b905060008061247389848a610242565b93509350935093565b6125f982600001516000815181106125de576125de613945565b60200260200101518260ff16600860ff16600060ff166118c9565b8251805160009061260c5761260c613945565b6020026020010181815250505050565b6125f9826000015160008151811061263657612636613945565b60200260200101518260ff16600460ff16600060086122969190613b72565b6125f9826000015160008151811061266f5761266f613945565b60200260200101518260ff16600460ff166000600861268e9190613b72565b612699906004613b72565b612296906008613b72565b6125f982600001516000815181106126be576126be613945565b60200260200101518260ff16600860ff16600060086126dd9190613b72565b612296906004613b72565b6125f9826000015160008151811061270257612702613945565b60200260200101518260ff16600860ff16600060086127219190613b72565b61272c906004613b72565b612737906008613b72565b612742906004613b72565b61274d906010613b72565b612758906018613b72565b612763906020613b72565b61276e906020613b72565b612296906020613b72565b6125f9826000015160008151811061279357612793613945565b60200260200101518262ffffff16601860ff16600060086127b49190613b72565b6127bf906004613b72565b6127ca906008613b72565b6127d5906004613b72565b612296906010613b72565b6125f982600001516000815181106127fa576127fa613945565b60200260200101518263ffffffff16602060ff166000600861281c9190613b72565b612827906004613b72565b612832906008613b72565b61283d906004613b72565b612848906010613b72565b612296906018613b72565b6125f9826000015160008151811061286d5761286d613945565b60200260200101518261ffff16601060ff166000600861288d9190613b72565b612898906004613b72565b6126dd906008613b72565b80516000906128b457506000919050565b6020820151805160001a9060c08210156128d2575060009392505050565b5060019392505050565b80516000906128ed57506000919050565b6000806128fd846020015161295f565b846020015161290c919061365d565b9050600084600001518560200151612924919061365d565b90505b8082101561295657612938826129e1565b612942908361365d565b91508261294e81613874565b935050612927565b50909392505050565b8051600090811a60808110156129785750600092915050565b60b8811080612993575060c08110801590612993575060f881105b156129a15750600192915050565b60c08110156129d5576129b6600160b8613bb0565b6129c39060ff1682613755565b6129ce90600161365d565b9392505050565b6129b6600160f8613bb0565b80516000908190811a60808110156129fc5760019150612a83565b60b8811015612a2257612a10608082613755565b612a1b90600161365d565b9150612a83565b60c0811015612a4f5760b78103600185019450806020036101000a85510460018201810193505050612a83565b60f8811015612a6357612a1060c082613755565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b805160009015801590612a9f57508151602110155b612aa857600080fd5b600080612ab484612ad7565b8151919350915060208210156115da5760208290036101000a9004949350505050565b6000806000612ae9846020015161295f565b90506000818560200151612afd919061365d565b90506000828660000151612b119190613755565b9196919550909350505050565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b803563ffffffff81168114612bbb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612bf857612bf8612bc0565b60405290565b60405160a081016001600160401b0381118282101715612bf857612bf8612bc0565b604080519081016001600160401b0381118282101715612bf857612bf8612bc0565b60405161018081016001600160401b0381118282101715612bf857612bf8612bc0565b60405161014081016001600160401b0381118282101715612bf857612bf8612bc0565b604051602081016001600160401b0381118282101715612bf857612bf8612bc0565b604051601f8201601f191681016001600160401b0381118282101715612cd257612cd2612bc0565b604052919050565b60ff81168114612ce957600080fd5b50565b8035612bbb81612cda565b803561ffff81168114612bbb57600080fd5b6000806000838503610100811215612d2057600080fd5b612d2985612ba7565b93506020850135925060c0603f1982011215612d4457600080fd5b50612d4d612bd6565b6040850135612d5b81612cda565b81526060850135612d6b81612cda565b6020820152612d7c60808601612ba7565b6040820152612d8d60a08601612ba7565b6060820152612d9e60c08601612cf7565b6080820152612daf60e08601612cf7565b60a0820152809150509250925092565b6001600160a01b0381168114612ce957600080fd5b8035612bbb81612dbf565b60006001600160401b03821115612df857612df8612bc0565b5060051b60200190565b600082601f830112612e1357600080fd5b81356020612e28612e2383612ddf565b612caa565b82815260059290921b84018101918181019086841115612e4757600080fd5b8286015b84811015612f895780356001600160401b0380821115612e6a57600080fd5b9088019060a0828b03601f19011215612e8257600080fd5b612e8a612bfe565b86830135612e9781612cda565b8152604083810135612ea881612dbf565b828901526060848101358284015260808501359083015260a084013583811115612ed25760008081fd5b8085019450508b603f850112612eea57600092508283fd5b878401359250612efc612e2384612ddf565b83815260069390931b8401810192888101908d851115612f1c5760008081fd5b948201945b84861015612f735782868f031215612f395760008081fd5b612f41612c20565b612f4a87612ba7565b81528a8701358060040b8114612f605760008081fd5b818c015282529482019490890190612f21565b6080840152505085525050918301918301612e4b565b509695505050505050565b60006001600160401b03821115612fad57612fad612bc0565b50601f01601f191660200190565b600082601f830112612fcc57600080fd5b8135612fda612e2382612f94565b818152846020838601011115612fef57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561301e57600080fd5b613026612bfe565b9050813561303381612dbf565b8152602082013561304381612dbf565b6020820152604082013561305681612dbf565b604082015260608201356001600160401b038082111561307557600080fd5b90830190610180828603121561308a57600080fd5b613092612c42565b61309b83612dd4565b81526130a960208401612dd4565b60208201526130ba60408401612dd4565b60408201526130cb60608401612dd4565b60608201526080830135608082015260a083013560a08201526130f060c08401612ba7565b60c082015261310160e08401612ba7565b60e0820152610100613114818501612ba7565b90820152610120613126848201612cec565b90820152610140838101358381111561313e57600080fd5b61314a88828701612e02565b828401525050610160808401358381111561316457600080fd5b61317088828701612fbb565b82840152505080606085015250505061318b60808301612cec565b608082015292915050565b600080600080600080600060e0888a0312156131b157600080fd5b87356001600160401b038111156131c757600080fd5b6131d38a828b0161300c565b9750506131e260208901612ba7565b95506131f060408901612cf7565b9450606088013561320081612cda565b9699959850939660808101359560a0820135955060c0909101359350915050565b805160208084528151848201819052600092820190839060408701905b80831015612f89578351825292840192600192909201919084019061323e565b6020815260006129ce6020830184613221565b6000610140828403121561328457600080fd5b61328c612c65565b61329583612ba7565b81526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201526132d560c08401612cf7565b60c08201526132e660e08401612cf7565b60e08201526101008381013590820152610120928301359281019290925250919050565b815163ffffffff16815261014081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015161336060c084018261ffff169052565b5060e083015161337660e084018261ffff169052565b50610100838101519083015261012092830151929091019190915290565b600080600080600060a086880312156133ac57600080fd5b85356133b781612dbf565b94506133c560208701612ba7565b93506133d360408701612cf7565b92506133e160608701612cf7565b915060808601356001600160401b038111156133fc57600080fd5b61340888828901612fbb565b9150509295509295909350565b60008060006060848603121561342a57600080fd5b83356001600160401b0381111561344057600080fd5b61344c8682870161300c565b93505061345b60208501612ba7565b9150604084013590509250925092565b60ff831681526040602082015260006115da6040830184613221565b60006020828403121561349957600080fd5b81356001600160401b038111156134af57600080fd5b6115da84828501612fbb565b600061014082840312156134ce57600080fd5b6134d6612c65565b90506134e182612dd4565b81526134ef60208301612dd4565b602082015261350060408301612dd4565b604082015261351160608301612ba7565b606082015261352260808301612ba7565b608082015261353360a08301612dd4565b60a082015261354460c08301612cec565b60c082015261355560e08301612cf7565b60e0820152610100613568818401612cec565b9082015261012061357a838201612cec565b9082015292915050565b600080610160838503121561359857600080fd5b6135a284846134bb565b94610140939093013593505050565b600061014082840312156135c457600080fd5b6129ce83836134bb565b600080604083850312156135e157600080fd5b82356001600160401b038111156135f757600080fd5b6136038582860161300c565b92505061361260208401612ba7565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516818304811182151516156136545761365461361b565b02949350505050565b600082198211156136705761367061361b565b500190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806136a2576136a2613675565b92169190910692915050565b60006001600160c01b03828116848216811515828404821116156136545761365461361b565b60006001600160c01b03838116806136ee576136ee613675565b92169190910492915050565b600063ffffffff8083168185168083038211156137195761371961361b565b01949350505050565b600081600019048311821515161561373c5761373c61361b565b500290565b60008261375057613750613675565b500490565b6000828210156137675761376761361b565b500390565b60008261377b5761377b613675565b500690565b600181815b808511156137bb5781600019048211156137a1576137a161361b565b808516156137ae57918102915b93841c9390800290613785565b509250929050565b6000826137d257506001611471565b816137df57506000611471565b81600181146137f557600281146137ff5761381b565b6001915050611471565b60ff8411156138105761381061361b565b50506001821b611471565b5060208310610133831016604e8410600b841016171561383e575081810a611471565b6138488383613780565b806000190482111561385c5761385c61361b565b029392505050565b60006129ce61ffff8416836137c3565b60006000198214156138885761388861361b565b5060010190565b6000602082840312156138a157600080fd5b815161146e81612dbf565b600060208083850312156138bf57600080fd5b82516001600160401b038111156138d557600080fd5b8301601f810185136138e657600080fd5b80516138f4612e2382612ddf565b81815260059190911b8201830190838101908783111561391357600080fd5b928401925b8284101561393a57835161392b81612cda565b82529284019290840190613918565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561396e57600080fd5b82516001600160401b0381111561398457600080fd5b8301601f8101851361399557600080fd5b80516139a3612e2382612f94565b81815286848385010111156139b757600080fd5b60005b828110156139d55783810185015182820186015284016139ba565b82811115612f895750600091810190930152509392505050565b600061ffff8083168185168083038211156137195761371961361b565b60006020808385031215613a1f57600080fd5b82516001600160401b0380821115613a3657600080fd5b818501915085601f830112613a4a57600080fd5b8151613a58612e2382612ddf565b81815260059190911b83018401908481019088831115613a7757600080fd5b8585015b83811015613b3c57805185811115613a935760008081fd5b8601808b03601f1901881315613aa95760008081fd5b613ab1612c88565b8882015187811115613ac35760008081fd5b8083019250508b603f830112613ad95760008081fd5b888201516040613aeb612e2383612ddf565b82815260059290921b84018101918b8101908f841115613b0b5760008081fd5b948201945b83861015613b295785518252948c0194908c0190613b10565b8452505050845250918601918601613a7b565b5098975050505050505050565b600060208284031215613b5b57600080fd5b81516001600160801b038116811461146e57600080fd5b600060ff821660ff84168060ff03821115613b8f57613b8f61361b565b019392505050565b600060208284031215613ba957600080fd5b5051919050565b600060ff821660ff841680821015613bca57613bca61361b565b9003939250505056fea2646970667358221220e86ecbaa16d6c39e79d09f8cf4cbf122ac5f8beb3c1fa2d107d9e8f43fbb1f1b64736f6c63430008080033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
