{
  "_format": "hh-sol-artifact-1",
  "contractName": "BlockHeaderRegistry",
  "sourceName": "contracts/blockRegistry/BlockHeaderRegistry.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "validator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "payload",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "validators",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cycleEnd",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "BlockAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "rpc",
          "type": "string"
        }
      ],
      "name": "BlockchainAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "BlockchainRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "rpc",
          "type": "string"
        }
      ],
      "name": "addBlockchain",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rlpHeader",
              "type": "bytes"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "vs",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct BlockHeaderRegistry.Signature",
              "name": "signature",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "cycleEnd",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "validators",
              "type": "address[]"
            }
          ],
          "internalType": "struct BlockHeaderRegistry.Block[]",
          "name": "blocks",
          "type": "tuple[]"
        }
      ],
      "name": "addSignedBlocks",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "blockHashes",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "cachedValidators",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "consensus",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "enabledBlockchains",
      "outputs": [
        {
          "internalType": "string",
          "name": "rpc",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "payloadHash",
          "type": "bytes32"
        }
      ],
      "name": "getBlockHashByPayloadHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRPCs",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "rpc",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "internalType": "struct BlockHeaderRegistry.Blockchain[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "number",
          "type": "uint256"
        }
      ],
      "name": "getSignedBlock",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes[]",
              "name": "signatures",
              "type": "bytes[]"
            },
            {
              "internalType": "uint256",
              "name": "cycleEnd",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "validators",
              "type": "address[]"
            },
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct BlockHeaderRegistry.SignedBlock",
          "name": "signedBlock",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "hasValidatorSigned",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voting",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_consensus",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isEventsOnly",
          "type": "bool"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isEventsOnly",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "rlpHeader",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "parseRLPBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "signedBlocks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "cycleEnd",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "voting",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612a1661004c600039600081816106c70152818161070701528181610790015281816107d001526109080152612a166000f3fe6080604052600436106100d95760003560e01c8063063d5669146100de5780633659cfe6146101145780634f1ef2861461013657806352c634ec1461014957806352d1902d1461017757806359f464ac1461019a578063631df4e4146101c757806367064084146101e757806376e1977d146102075780638ef3f76114610238578063c6be980c14610265578063d892369114610295578063db20f3b5146102b7578063dc20fa89146102f2578063e4bbb5a814610312578063ed8eeee314610332578063f105a76214610352578063fce1ccca1461039e575b600080fd5b3480156100ea57600080fd5b506100fe6100f93660046120c0565b6103be565b60405161010b919061217e565b60405180910390f35b34801561012057600080fd5b5061013461012f366004612236565b6106bc565b005b6101346101443660046122dc565b610785565b34801561015557600080fd5b5061016961016436600461233d565b61083f565b60405161010b929190612356565b34801561018357600080fd5b5061018c6108fb565b60405190815260200161010b565b3480156101a657600080fd5b5061018c6101b5366004612236565b606b6020526000908152604090205481565b3480156101d357600080fd5b5061018c6101e2366004612378565b6109a9565b3480156101f357600080fd5b5061018c6102023660046123a4565b6109e7565b34801561021357600080fd5b50606a5461022890600160a01b900460ff1681565b604051901515815260200161010b565b34801561024457600080fd5b50606a54610258906001600160a01b031681565b60405161010b919061241b565b34801561027157600080fd5b5061018c61028036600461233d565b60009081526067602052604090206003015490565b3480156102a157600080fd5b506102aa610a86565b60405161010b919061242f565b3480156102c357600080fd5b506102286102d23660046124a5565b606560209081526000928352604080842090915290825290205460ff1681565b3480156102fe57600080fd5b5061013461030d3660046124d1565b610b81565b34801561031e57600080fd5b5061013461032d36600461250f565b610de2565b34801561033e57600080fd5b5061013461034d366004612556565b610f34565b34801561035e57600080fd5b5061038961036d36600461233d565b6067602052600090815260409020600181015460039091015482565b6040805192835260208301919091520161010b565b3480156103aa57600080fd5b50606954610258906001600160a01b031681565b6103ec6040518060800160405280606081526020016000815260200160608152602001600080191681525090565b600083815260666020908152604080832085845282528083208054825181850281018501909352808352919290919083018282801561044a57602002820191906000526020600020905b815481526020019060010190808311610436575b5050505050905080516000141561049e5760405162461bcd60e51b81526020600482015260136024820152720bec4d8dec6d690c2e6d0cae65cd8cadccee8d606b1b60448201526064015b60405180910390fd5b6000816000815181106104b3576104b36125ca565b6020908102919091018101516000818152606790925260409091205490915060015b8351811015610550576000606760008684815181106104f6576104f66125ca565b602002602001015181526020019081526020016000206000018054905090508281111561053d57809250848281518110610532576105326125ca565b602002602001015193505b5080610548816125f6565b9150506104d5565b5060008281526067602090815260408083208151815460a09481028201850190935260808101838152909491938593919285929185015b828210156106335783829060005260206000200180546105a690612611565b80601f01602080910402602001604051908101604052809291908181526020018280546105d290612611565b801561061f5780601f106105f45761010080835404028352916020019161061f565b820191906000526020600020905b81548152906001019060200180831161060257829003601f168201915b505050505081526020019060010190610587565b505050508152602001600182015481526020016002820180548060200260200160405190810160405280929190818152602001828054801561069e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610680575b50505050508152602001600382015481525050935050505092915050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107055760405162461bcd60e51b815260040161049590612646565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610737611332565b6001600160a01b03161461075d5760405162461bcd60e51b815260040161049590612680565b6107668161134e565b6040805160008082526020820190925261078291839190611378565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107ce5760405162461bcd60e51b815260040161049590612646565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610800611332565b6001600160a01b0316146108265760405162461bcd60e51b815260040161049590612680565b61082f8261134e565b61083b82826001611378565b5050565b6068818154811061084f57600080fd5b906000526020600020906002020160009150905080600001805461087290612611565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612611565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050908060010154905082565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109965760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610495565b5060008051602061297a83398151915290565b606660205282600052604060002060205281600052604060002081815481106109d157600080fd5b9060005260206000200160009250925050505481565b600080610a31610a2c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e392505050565b611509565b905060008361a4ec148015610a47575060108251105b610a52576008610a55565b60065b60ff169050610a7c828281518110610a6f57610a6f6125ca565b6020026020010151611612565b9695505050505050565b60606068805480602002602001604051908101604052809291908181526020016000905b82821015610b785783829060005260206000209060020201604051806040016040529081600082018054610add90612611565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0990612611565b8015610b565780601f10610b2b57610100808354040283529160200191610b56565b820191906000526020600020905b815481529060010190602001808311610b3957829003601f168201915b5050505050815260200160018201548152505081526020019060010190610aaa565b50505050905090565b6069546001600160a01b03163314610bab5760405162461bcd60e51b8152600401610495906126ba565b60685460005b81811015610d54578360688281548110610bcd57610bcd6125ca565b9060005260206000209060020201600101541415610d42578251610cea5781610bf78260016126de565b1015610c73576068610c0a6001846126f6565b81548110610c1a57610c1a6125ca565b906000526020600020906002020160688281548110610c3b57610c3b6125ca565b90600052602060002090600202016000820181600001908054610c5d90612611565b610c68929190611f05565b506001918201549101555b6068805480610c8457610c8461270d565b60008281526020812060001990920191600283020190610ca48282611f90565b5060006001919091015590556040518481527f62509941575b6cd38681c5cb9b9f2e5db7f1f95db671e972ff3bbb05a49875ee906020015b60405180910390a150505050565b8260688281548110610cfe57610cfe6125ca565b90600052602060002090600202016000019080519060200190610d22929190611fca565b506000805160206129c18339815191528484604051610cdc929190612723565b80610d4c816125f6565b915050610bb1565b506040805180820190915260208082018590528382526068805460018101825560009190915282518051849360029093027fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c220977530192610db6928492910190611fca565b506020820151816001015550506000805160206129c18339815191528484604051610cdc929190612723565b600054610100900460ff1615808015610e025750600054600160ff909116105b80610e235750610e1130611660565b158015610e23575060005460ff166001145b610e865760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610495565b6000805460ff191660011790558015610ea9576000805461ff0019166101001790555b606980546001600160a01b0319166001600160a01b0386811691909117909155606a80549185166001600160a81b031990921691909117600160a01b841515021790558015610f2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610cdc565b50505050565b60005b8181101561132d5736838383818110610f5257610f526125ca565b9050602002810190610f64919061273c565b90506000610f72828061275c565b604051610f809291906127a9565b6040518091039020905081608001358114610fcd5760405162461bcd60e51b815260206004820152600d60248201526c0e4d8e090cac2c8cae490c2e6d609b1b6044820152606401610495565b6060820135607a811490600090608085013590610fed60c08701876127b9565b8760a00135604051602001611006959493929190612802565b6040516020818303038152906040528051906020012090506000611088611079836040517b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6020870135604088013561166f565b905061109381611697565b6110cf5760405162461bcd60e51b815260206004820152600d60248201526c3737ba103b30b634b230ba37b960991b6044820152606401610495565b60006110e86110de878061275c565b88606001356109e7565b606a54909150600160a01b900460ff166112805760008381526065602090815260408083206001600160a01b038616845290915290205460ff16156111325750505050505061131b565b60008381526065602090815260408083206001600160a01b03861684528252808320805460ff19166001179055858352606790915290205461121657606086013560009081526066602090815260408083208484528252822080546001810182559083529120018390558380156111b7575060006111b360c08801886127b9565b9050115b15611201576111c960c08701876127b9565b60008581526067602052604090206111e69260029091019161203e565b50600083815260676020526040902060a08701356001909101555b60008381526067602052604090206003018590555b60008381526067602090815260409182902082519092611249928a81013592918b01359101918252602082015260400190565b60408051601f1981840301815291905281546001810183556000928352602092839020825161127e9491909201920190611fca565b505b8060608701356001600160a01b0384167fbea5e0a625dfb1ce157ffaa70df88e91918faced66adc5690ed9df8ee7f8aa93866112bf60c08c018c6127b9565b8c60a001358d602001600001358e602001602001356040516020016112ee929190918252602082015260400190565b60408051601f198184030181529082905261130c9594939291612854565b60405180910390a45050505050505b80611325816125f6565b915050610f37565b505050565b60008051602061297a833981519152546001600160a01b031690565b6069546001600160a01b031633146107825760405162461bcd60e51b8152600401610495906126ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156113ab5761132d836117cc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611405575060408051601f3d908101601f19168201909252611402918101906128c5565b60015b6114685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610495565b60008051602061297a83398151915281146114d75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610495565b5061132d838383611866565b6114eb612091565b50604080518082019091528151815260209182019181019190915290565b60606115148261188b565b61151d57600080fd5b6000611528836118c4565b90506000816001600160401b0381111561154457611544612251565b60405190808252806020026020018201604052801561157d57816020015b61156a612091565b8152602001906001900390816115625790505b509050600061158f8560200151611947565b856020015161159e91906126de565b90506000805b84811015611607576115b5836119c8565b91506040518060400160405280838152602001848152508482815181106115de576115de6125ca565b60209081029190910101526115f382846126de565b9250806115ff816125f6565b9150506115a4565b509195945050505050565b80516000901580159061162757508151602110155b61163057600080fd5b60008061163c84611a71565b8151919350915060208210156116585760208290036101000a90045b949350505050565b6001600160a01b03163b151590565b600080600061167f868686611ab8565b9150915061168c81611af1565b5090505b9392505050565b606a546040805163af29518160e01b815290516000926001600160a01b03169163af2951819160048083019260209291908290030181865afa1580156116e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170591906128c5565b6001600160a01b0383166000908152606b6020526040902054148061172e575061172e82611c3a565b905080156117c757606a60009054906101000a90046001600160a01b03166001600160a01b031663af2951816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad91906128c5565b6001600160a01b0383166000908152606b60205260409020555b919050565b6117d581611660565b6118375760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610495565b60008051602061297a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61186f83611cdb565b60008251118061187c5750805b1561132d57610f2e8383611d1b565b805160009061189c57506000919050565b6020820151805160001a9060c08210156118ba575060009392505050565b5060019392505050565b80516000906118d557506000919050565b6000806118e58460200151611947565b84602001516118f491906126de565b905060008460000151856020015161190c91906126de565b90505b8082101561193e57611920826119c8565b61192a90836126de565b915082611936816125f6565b93505061190f565b50909392505050565b8051600090811a60808110156119605750600092915050565b60b881108061197b575060c0811080159061197b575060f881105b156119895750600192915050565b60c08110156119b65761199e600160b86128de565b6119ab9060ff16826126f6565b6116909060016126de565b61199e600160f86128de565b50919050565b80516000908190811a60808110156119e35760019150611a6a565b60b8811015611a09576119f76080826126f6565b611a029060016126de565b9150611a6a565b60c0811015611a365760b78103600185019450806020036101000a85510460018201810193505050611a6a565b60f8811015611a4a576119f760c0826126f6565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b6000806000611a838460200151611947565b90506000818560200151611a9791906126de565b90506000828660000151611aab91906126f6565b9196919550909350505050565b6000806001600160ff1b03831681611ad560ff86901c601b6126de565b9050611ae387828885611e0d565b935093505050935093915050565b6000816004811115611b0557611b05612901565b1415611b0e5750565b6001816004811115611b2257611b22612901565b1415611b6b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610495565b6002816004811115611b7f57611b7f612901565b1415611bcd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610495565b6003816004811115611be157611be1612901565b14156107825760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610495565b6000739c10a508bf2a18749dbc492185c39bc66efea4796001600160a01b0383161480611cd55750606a5460405163facd743b60e01b81526001600160a01b039091169063facd743b90611c9290859060040161241b565b6020604051808303816000875af1158015611cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd59190612917565b92915050565b611ce4816117cc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611d2683611660565b611d815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610495565b600080846001600160a01b031684604051611d9c9190612934565b600060405180830381855af49150503d8060008114611dd7576040519150601f19603f3d011682016040523d82523d6000602084013e611ddc565b606091505b5091509150611e04828260405180606001604052806027815260200161299a60279139611ec7565b95945050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115611e3a5750600090506003611ebe565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e8e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611eb757600060019250925050611ebe565b9150600090505b94509492505050565b60608315611ed6575081611690565b6116908383815115611eeb5781518083602001fd5b8060405162461bcd60e51b81526004016104959190612946565b828054611f1190612611565b90600052602060002090601f016020900481019282611f335760008555611f80565b82601f10611f445780548555611f80565b82800160010185558215611f8057600052602060002091601f016020900482015b82811115611f80578254825591600101919060010190611f65565b50611f8c9291506120ab565b5090565b508054611f9c90612611565b6000825580601f10611fac575050565b601f01602090049060005260206000209081019061078291906120ab565b828054611fd690612611565b90600052602060002090601f016020900481019282611ff85760008555611f80565b82601f1061201157805160ff1916838001178555611f80565b82800160010185558215611f80579182015b82811115611f80578251825591602001919060010190612023565b828054828255906000526020600020908101928215611f80579160200282015b82811115611f805781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061205e565b604051806040016040528060008152602001600081525090565b5b80821115611f8c57600081556001016120ac565b600080604083850312156120d357600080fd5b50508035926020909101359150565b60005b838110156120fd5781810151838201526020016120e5565b83811115610f2e5750506000910152565b600081518084526121268160208601602086016120e2565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b838110156121735781516001600160a01b03168752958201959082019060010161214e565b509495945050505050565b6000602080835260a08301845160808386015281815180845260c08701915060c08160051b8801019350848301925060005b818110156121de5760bf198886030183526121cc85855161210e565b945092850192918501916001016121b0565b5050505081850151604085015260408501519150601f19848203016060850152612208818361213a565b915050606084015160808401528091505092915050565b80356001600160a01b03811681146117c757600080fd5b60006020828403121561224857600080fd5b6116908261221f565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561228157612281612251565b604051601f8501601f19908116603f011681019082821181831017156122a9576122a9612251565b816040528093508581528686860111156122c257600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156122ef57600080fd5b6122f88361221f565b915060208301356001600160401b0381111561231357600080fd5b8301601f8101851361232457600080fd5b61233385823560208401612267565b9150509250929050565b60006020828403121561234f57600080fd5b5035919050565b604081526000612369604083018561210e565b90508260208301529392505050565b60008060006060848603121561238d57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156123b957600080fd5b83356001600160401b03808211156123d057600080fd5b818601915086601f8301126123e457600080fd5b8135818111156123f357600080fd5b87602082850101111561240557600080fd5b6020928301989097509590910135949350505050565b6001600160a01b0391909116815260200190565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561249757888303603f190185528151805187855261247a8886018261210e565b918901519489019490945294870194925090860190600101612456565b509098975050505050505050565b600080604083850312156124b857600080fd5b823591506124c86020840161221f565b90509250929050565b600080604083850312156124e457600080fd5b8235915060208301356001600160401b0381111561231357600080fd5b801515811461078257600080fd5b60008060006060848603121561252457600080fd5b61252d8461221f565b925061253b6020850161221f565b9150604084013561254b81612501565b809150509250925092565b6000806020838503121561256957600080fd5b82356001600160401b038082111561258057600080fd5b818501915085601f83011261259457600080fd5b8135818111156125a357600080fd5b8660208260051b85010111156125b857600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561260a5761260a6125e0565b5060010190565b600181811c9082168061262557607f821691505b602082108114156119c257634e487b7160e01b600052602260045260246000fd5b6020808252602c9082015260008051602061295a83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061295a83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600a90820152696f6e6c79566f74696e6760b01b604082015260600190565b600082198211156126f1576126f16125e0565b500190565b600082821015612708576127086125e0565b500390565b634e487b7160e01b600052603160045260246000fd5b828152604060208201526000611658604083018461210e565b6000823560de1983360301811261275257600080fd5b9190910192915050565b6000808335601e1984360301811261277357600080fd5b8301803591506001600160401b0382111561278d57600080fd5b6020019150368190038213156127a257600080fd5b9250929050565b8183823760009101908152919050565b6000808335601e198436030181126127d057600080fd5b8301803591506001600160401b038211156127ea57600080fd5b6020019150600581901b36038213156127a257600080fd5b858152600060208681840152604083018660005b87811015612842576001600160a01b0361282f8361221f565b1683529183019190830190600101612816565b50509384529092019695505050505050565b85815260806020808301829052908201859052600090869060a08401835b8881101561289e576001600160a01b0361288b8561221f565b1682529282019290820190600101612872565b5086604086015284810360608601526128b7818761210e565b9a9950505050505050505050565b6000602082840312156128d757600080fd5b5051919050565b600060ff821660ff8416808210156128f8576128f86125e0565b90039392505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561292957600080fd5b815161169081612501565b600082516127528184602087016120e2565b602081526000611690602083018461210e56fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564f3300e667302dba8542aa32316477d74cb3620e37163bcb4a19d9ce0049d1d9ca264697066735822122042f0312a29c7e5ce452faeef9dca5523c6dabb89ea869c2f4429a5ab5ad62f7d64736f6c634300080a0033",
  "deployedBytecode": "0x6080604052600436106100d95760003560e01c8063063d5669146100de5780633659cfe6146101145780634f1ef2861461013657806352c634ec1461014957806352d1902d1461017757806359f464ac1461019a578063631df4e4146101c757806367064084146101e757806376e1977d146102075780638ef3f76114610238578063c6be980c14610265578063d892369114610295578063db20f3b5146102b7578063dc20fa89146102f2578063e4bbb5a814610312578063ed8eeee314610332578063f105a76214610352578063fce1ccca1461039e575b600080fd5b3480156100ea57600080fd5b506100fe6100f93660046120c0565b6103be565b60405161010b919061217e565b60405180910390f35b34801561012057600080fd5b5061013461012f366004612236565b6106bc565b005b6101346101443660046122dc565b610785565b34801561015557600080fd5b5061016961016436600461233d565b61083f565b60405161010b929190612356565b34801561018357600080fd5b5061018c6108fb565b60405190815260200161010b565b3480156101a657600080fd5b5061018c6101b5366004612236565b606b6020526000908152604090205481565b3480156101d357600080fd5b5061018c6101e2366004612378565b6109a9565b3480156101f357600080fd5b5061018c6102023660046123a4565b6109e7565b34801561021357600080fd5b50606a5461022890600160a01b900460ff1681565b604051901515815260200161010b565b34801561024457600080fd5b50606a54610258906001600160a01b031681565b60405161010b919061241b565b34801561027157600080fd5b5061018c61028036600461233d565b60009081526067602052604090206003015490565b3480156102a157600080fd5b506102aa610a86565b60405161010b919061242f565b3480156102c357600080fd5b506102286102d23660046124a5565b606560209081526000928352604080842090915290825290205460ff1681565b3480156102fe57600080fd5b5061013461030d3660046124d1565b610b81565b34801561031e57600080fd5b5061013461032d36600461250f565b610de2565b34801561033e57600080fd5b5061013461034d366004612556565b610f34565b34801561035e57600080fd5b5061038961036d36600461233d565b6067602052600090815260409020600181015460039091015482565b6040805192835260208301919091520161010b565b3480156103aa57600080fd5b50606954610258906001600160a01b031681565b6103ec6040518060800160405280606081526020016000815260200160608152602001600080191681525090565b600083815260666020908152604080832085845282528083208054825181850281018501909352808352919290919083018282801561044a57602002820191906000526020600020905b815481526020019060010190808311610436575b5050505050905080516000141561049e5760405162461bcd60e51b81526020600482015260136024820152720bec4d8dec6d690c2e6d0cae65cd8cadccee8d606b1b60448201526064015b60405180910390fd5b6000816000815181106104b3576104b36125ca565b6020908102919091018101516000818152606790925260409091205490915060015b8351811015610550576000606760008684815181106104f6576104f66125ca565b602002602001015181526020019081526020016000206000018054905090508281111561053d57809250848281518110610532576105326125ca565b602002602001015193505b5080610548816125f6565b9150506104d5565b5060008281526067602090815260408083208151815460a09481028201850190935260808101838152909491938593919285929185015b828210156106335783829060005260206000200180546105a690612611565b80601f01602080910402602001604051908101604052809291908181526020018280546105d290612611565b801561061f5780601f106105f45761010080835404028352916020019161061f565b820191906000526020600020905b81548152906001019060200180831161060257829003601f168201915b505050505081526020019060010190610587565b505050508152602001600182015481526020016002820180548060200260200160405190810160405280929190818152602001828054801561069e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610680575b50505050508152602001600382015481525050935050505092915050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107055760405162461bcd60e51b815260040161049590612646565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610737611332565b6001600160a01b03161461075d5760405162461bcd60e51b815260040161049590612680565b6107668161134e565b6040805160008082526020820190925261078291839190611378565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107ce5760405162461bcd60e51b815260040161049590612646565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610800611332565b6001600160a01b0316146108265760405162461bcd60e51b815260040161049590612680565b61082f8261134e565b61083b82826001611378565b5050565b6068818154811061084f57600080fd5b906000526020600020906002020160009150905080600001805461087290612611565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612611565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050908060010154905082565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109965760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610495565b5060008051602061297a83398151915290565b606660205282600052604060002060205281600052604060002081815481106109d157600080fd5b9060005260206000200160009250925050505481565b600080610a31610a2c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e392505050565b611509565b905060008361a4ec148015610a47575060108251105b610a52576008610a55565b60065b60ff169050610a7c828281518110610a6f57610a6f6125ca565b6020026020010151611612565b9695505050505050565b60606068805480602002602001604051908101604052809291908181526020016000905b82821015610b785783829060005260206000209060020201604051806040016040529081600082018054610add90612611565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0990612611565b8015610b565780601f10610b2b57610100808354040283529160200191610b56565b820191906000526020600020905b815481529060010190602001808311610b3957829003601f168201915b5050505050815260200160018201548152505081526020019060010190610aaa565b50505050905090565b6069546001600160a01b03163314610bab5760405162461bcd60e51b8152600401610495906126ba565b60685460005b81811015610d54578360688281548110610bcd57610bcd6125ca565b9060005260206000209060020201600101541415610d42578251610cea5781610bf78260016126de565b1015610c73576068610c0a6001846126f6565b81548110610c1a57610c1a6125ca565b906000526020600020906002020160688281548110610c3b57610c3b6125ca565b90600052602060002090600202016000820181600001908054610c5d90612611565b610c68929190611f05565b506001918201549101555b6068805480610c8457610c8461270d565b60008281526020812060001990920191600283020190610ca48282611f90565b5060006001919091015590556040518481527f62509941575b6cd38681c5cb9b9f2e5db7f1f95db671e972ff3bbb05a49875ee906020015b60405180910390a150505050565b8260688281548110610cfe57610cfe6125ca565b90600052602060002090600202016000019080519060200190610d22929190611fca565b506000805160206129c18339815191528484604051610cdc929190612723565b80610d4c816125f6565b915050610bb1565b506040805180820190915260208082018590528382526068805460018101825560009190915282518051849360029093027fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c220977530192610db6928492910190611fca565b506020820151816001015550506000805160206129c18339815191528484604051610cdc929190612723565b600054610100900460ff1615808015610e025750600054600160ff909116105b80610e235750610e1130611660565b158015610e23575060005460ff166001145b610e865760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610495565b6000805460ff191660011790558015610ea9576000805461ff0019166101001790555b606980546001600160a01b0319166001600160a01b0386811691909117909155606a80549185166001600160a81b031990921691909117600160a01b841515021790558015610f2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610cdc565b50505050565b60005b8181101561132d5736838383818110610f5257610f526125ca565b9050602002810190610f64919061273c565b90506000610f72828061275c565b604051610f809291906127a9565b6040518091039020905081608001358114610fcd5760405162461bcd60e51b815260206004820152600d60248201526c0e4d8e090cac2c8cae490c2e6d609b1b6044820152606401610495565b6060820135607a811490600090608085013590610fed60c08701876127b9565b8760a00135604051602001611006959493929190612802565b6040516020818303038152906040528051906020012090506000611088611079836040517b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6020870135604088013561166f565b905061109381611697565b6110cf5760405162461bcd60e51b815260206004820152600d60248201526c3737ba103b30b634b230ba37b960991b6044820152606401610495565b60006110e86110de878061275c565b88606001356109e7565b606a54909150600160a01b900460ff166112805760008381526065602090815260408083206001600160a01b038616845290915290205460ff16156111325750505050505061131b565b60008381526065602090815260408083206001600160a01b03861684528252808320805460ff19166001179055858352606790915290205461121657606086013560009081526066602090815260408083208484528252822080546001810182559083529120018390558380156111b7575060006111b360c08801886127b9565b9050115b15611201576111c960c08701876127b9565b60008581526067602052604090206111e69260029091019161203e565b50600083815260676020526040902060a08701356001909101555b60008381526067602052604090206003018590555b60008381526067602090815260409182902082519092611249928a81013592918b01359101918252602082015260400190565b60408051601f1981840301815291905281546001810183556000928352602092839020825161127e9491909201920190611fca565b505b8060608701356001600160a01b0384167fbea5e0a625dfb1ce157ffaa70df88e91918faced66adc5690ed9df8ee7f8aa93866112bf60c08c018c6127b9565b8c60a001358d602001600001358e602001602001356040516020016112ee929190918252602082015260400190565b60408051601f198184030181529082905261130c9594939291612854565b60405180910390a45050505050505b80611325816125f6565b915050610f37565b505050565b60008051602061297a833981519152546001600160a01b031690565b6069546001600160a01b031633146107825760405162461bcd60e51b8152600401610495906126ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156113ab5761132d836117cc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611405575060408051601f3d908101601f19168201909252611402918101906128c5565b60015b6114685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610495565b60008051602061297a83398151915281146114d75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610495565b5061132d838383611866565b6114eb612091565b50604080518082019091528151815260209182019181019190915290565b60606115148261188b565b61151d57600080fd5b6000611528836118c4565b90506000816001600160401b0381111561154457611544612251565b60405190808252806020026020018201604052801561157d57816020015b61156a612091565b8152602001906001900390816115625790505b509050600061158f8560200151611947565b856020015161159e91906126de565b90506000805b84811015611607576115b5836119c8565b91506040518060400160405280838152602001848152508482815181106115de576115de6125ca565b60209081029190910101526115f382846126de565b9250806115ff816125f6565b9150506115a4565b509195945050505050565b80516000901580159061162757508151602110155b61163057600080fd5b60008061163c84611a71565b8151919350915060208210156116585760208290036101000a90045b949350505050565b6001600160a01b03163b151590565b600080600061167f868686611ab8565b9150915061168c81611af1565b5090505b9392505050565b606a546040805163af29518160e01b815290516000926001600160a01b03169163af2951819160048083019260209291908290030181865afa1580156116e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170591906128c5565b6001600160a01b0383166000908152606b6020526040902054148061172e575061172e82611c3a565b905080156117c757606a60009054906101000a90046001600160a01b03166001600160a01b031663af2951816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad91906128c5565b6001600160a01b0383166000908152606b60205260409020555b919050565b6117d581611660565b6118375760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610495565b60008051602061297a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61186f83611cdb565b60008251118061187c5750805b1561132d57610f2e8383611d1b565b805160009061189c57506000919050565b6020820151805160001a9060c08210156118ba575060009392505050565b5060019392505050565b80516000906118d557506000919050565b6000806118e58460200151611947565b84602001516118f491906126de565b905060008460000151856020015161190c91906126de565b90505b8082101561193e57611920826119c8565b61192a90836126de565b915082611936816125f6565b93505061190f565b50909392505050565b8051600090811a60808110156119605750600092915050565b60b881108061197b575060c0811080159061197b575060f881105b156119895750600192915050565b60c08110156119b65761199e600160b86128de565b6119ab9060ff16826126f6565b6116909060016126de565b61199e600160f86128de565b50919050565b80516000908190811a60808110156119e35760019150611a6a565b60b8811015611a09576119f76080826126f6565b611a029060016126de565b9150611a6a565b60c0811015611a365760b78103600185019450806020036101000a85510460018201810193505050611a6a565b60f8811015611a4a576119f760c0826126f6565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b6000806000611a838460200151611947565b90506000818560200151611a9791906126de565b90506000828660000151611aab91906126f6565b9196919550909350505050565b6000806001600160ff1b03831681611ad560ff86901c601b6126de565b9050611ae387828885611e0d565b935093505050935093915050565b6000816004811115611b0557611b05612901565b1415611b0e5750565b6001816004811115611b2257611b22612901565b1415611b6b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610495565b6002816004811115611b7f57611b7f612901565b1415611bcd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610495565b6003816004811115611be157611be1612901565b14156107825760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610495565b6000739c10a508bf2a18749dbc492185c39bc66efea4796001600160a01b0383161480611cd55750606a5460405163facd743b60e01b81526001600160a01b039091169063facd743b90611c9290859060040161241b565b6020604051808303816000875af1158015611cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd59190612917565b92915050565b611ce4816117cc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611d2683611660565b611d815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610495565b600080846001600160a01b031684604051611d9c9190612934565b600060405180830381855af49150503d8060008114611dd7576040519150601f19603f3d011682016040523d82523d6000602084013e611ddc565b606091505b5091509150611e04828260405180606001604052806027815260200161299a60279139611ec7565b95945050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115611e3a5750600090506003611ebe565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e8e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611eb757600060019250925050611ebe565b9150600090505b94509492505050565b60608315611ed6575081611690565b6116908383815115611eeb5781518083602001fd5b8060405162461bcd60e51b81526004016104959190612946565b828054611f1190612611565b90600052602060002090601f016020900481019282611f335760008555611f80565b82601f10611f445780548555611f80565b82800160010185558215611f8057600052602060002091601f016020900482015b82811115611f80578254825591600101919060010190611f65565b50611f8c9291506120ab565b5090565b508054611f9c90612611565b6000825580601f10611fac575050565b601f01602090049060005260206000209081019061078291906120ab565b828054611fd690612611565b90600052602060002090601f016020900481019282611ff85760008555611f80565b82601f1061201157805160ff1916838001178555611f80565b82800160010185558215611f80579182015b82811115611f80578251825591602001919060010190612023565b828054828255906000526020600020908101928215611f80579160200282015b82811115611f805781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061205e565b604051806040016040528060008152602001600081525090565b5b80821115611f8c57600081556001016120ac565b600080604083850312156120d357600080fd5b50508035926020909101359150565b60005b838110156120fd5781810151838201526020016120e5565b83811115610f2e5750506000910152565b600081518084526121268160208601602086016120e2565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b838110156121735781516001600160a01b03168752958201959082019060010161214e565b509495945050505050565b6000602080835260a08301845160808386015281815180845260c08701915060c08160051b8801019350848301925060005b818110156121de5760bf198886030183526121cc85855161210e565b945092850192918501916001016121b0565b5050505081850151604085015260408501519150601f19848203016060850152612208818361213a565b915050606084015160808401528091505092915050565b80356001600160a01b03811681146117c757600080fd5b60006020828403121561224857600080fd5b6116908261221f565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561228157612281612251565b604051601f8501601f19908116603f011681019082821181831017156122a9576122a9612251565b816040528093508581528686860111156122c257600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156122ef57600080fd5b6122f88361221f565b915060208301356001600160401b0381111561231357600080fd5b8301601f8101851361232457600080fd5b61233385823560208401612267565b9150509250929050565b60006020828403121561234f57600080fd5b5035919050565b604081526000612369604083018561210e565b90508260208301529392505050565b60008060006060848603121561238d57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156123b957600080fd5b83356001600160401b03808211156123d057600080fd5b818601915086601f8301126123e457600080fd5b8135818111156123f357600080fd5b87602082850101111561240557600080fd5b6020928301989097509590910135949350505050565b6001600160a01b0391909116815260200190565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561249757888303603f190185528151805187855261247a8886018261210e565b918901519489019490945294870194925090860190600101612456565b509098975050505050505050565b600080604083850312156124b857600080fd5b823591506124c86020840161221f565b90509250929050565b600080604083850312156124e457600080fd5b8235915060208301356001600160401b0381111561231357600080fd5b801515811461078257600080fd5b60008060006060848603121561252457600080fd5b61252d8461221f565b925061253b6020850161221f565b9150604084013561254b81612501565b809150509250925092565b6000806020838503121561256957600080fd5b82356001600160401b038082111561258057600080fd5b818501915085601f83011261259457600080fd5b8135818111156125a357600080fd5b8660208260051b85010111156125b857600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561260a5761260a6125e0565b5060010190565b600181811c9082168061262557607f821691505b602082108114156119c257634e487b7160e01b600052602260045260246000fd5b6020808252602c9082015260008051602061295a83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061295a83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600a90820152696f6e6c79566f74696e6760b01b604082015260600190565b600082198211156126f1576126f16125e0565b500190565b600082821015612708576127086125e0565b500390565b634e487b7160e01b600052603160045260246000fd5b828152604060208201526000611658604083018461210e565b6000823560de1983360301811261275257600080fd5b9190910192915050565b6000808335601e1984360301811261277357600080fd5b8301803591506001600160401b0382111561278d57600080fd5b6020019150368190038213156127a257600080fd5b9250929050565b8183823760009101908152919050565b6000808335601e198436030181126127d057600080fd5b8301803591506001600160401b038211156127ea57600080fd5b6020019150600581901b36038213156127a257600080fd5b858152600060208681840152604083018660005b87811015612842576001600160a01b0361282f8361221f565b1683529183019190830190600101612816565b50509384529092019695505050505050565b85815260806020808301829052908201859052600090869060a08401835b8881101561289e576001600160a01b0361288b8561221f565b1682529282019290820190600101612872565b5086604086015284810360608601526128b7818761210e565b9a9950505050505050505050565b6000602082840312156128d757600080fd5b5051919050565b600060ff821660ff8416808210156128f8576128f86125e0565b90039392505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561292957600080fd5b815161169081612501565b600082516127528184602087016120e2565b602081526000611690602083018461210e56fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564f3300e667302dba8542aa32316477d74cb3620e37163bcb4a19d9ce0049d1d9ca264697066735822122042f0312a29c7e5ce452faeef9dca5523c6dabb89ea869c2f4429a5ab5ad62f7d64736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
