UNPKG

@unruggable/gateways

Version:

Trustless Ethereum Multichain CCIP-Read Gateway

1 lines 82.8 kB
{"abi":[{"type":"constructor","inputs":[{"name":"urls","type":"string[]","internalType":"string[]"},{"name":"window","type":"uint256","internalType":"uint256"},{"name":"hooks","type":"address","internalType":"contract IVerifierHooks"},{"name":"rollup","type":"address","internalType":"contract IRollupCore"},{"name":"minBlocks","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"gatewayURLs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"getHooks","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVerifierHooks"}],"stateMutability":"view"},{"type":"function","name":"getLatestContext","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getStorageValues","inputs":[{"name":"context","type":"bytes","internalType":"bytes"},{"name":"req","type":"tuple","internalType":"struct GatewayRequest","components":[{"name":"ops","type":"bytes","internalType":"bytes"}]},{"name":"proof","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"},{"name":"exitCode","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getWindow","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGatewayURLs","inputs":[{"name":"urls","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"GatewayURLsChanged","inputs":[],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"CommitTooNew","inputs":[{"name":"latest","type":"uint256","internalType":"uint256"},{"name":"got","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CommitTooOld","inputs":[{"name":"latest","type":"uint256","internalType":"uint256"},{"name":"got","type":"uint256","internalType":"uint256"},{"name":"window","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ContentLengthMismatch","inputs":[]},{"type":"error","name":"EmptyItem","inputs":[]},{"type":"error","name":"InvalidDataRemainder","inputs":[]},{"type":"error","name":"InvalidHeader","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UnexpectedList","inputs":[]},{"type":"error","name":"UnexpectedString","inputs":[]}],"bytecode":{"object":"0x610100604052348015610010575f80fd5b506040516122a43803806122a483398101604081905261002f91610209565b848484338061005757604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100608161009d565b5082516100749060019060208601906100ec565b506080919091526001600160a01b0390811660a0529290921660c05260e0525061049892505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255905f5260205f20908101928215610130579160200282015b82811115610130578251829061012090826103d9565b509160200191906001019061010a565b5061013c929150610140565b5090565b8082111561013c575f610153828261015c565b50600101610140565b50805461016890610355565b5f825580601f10610177575050565b601f0160209004905f5260205f20908101906101939190610196565b50565b5b8082111561013c575f8155600101610197565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156101e6576101e66101aa565b604052919050565b80516001600160a01b0381168114610204575f80fd5b919050565b5f805f805f60a0868803121561021d575f80fd5b85516001600160401b0380821115610233575f80fd5b818801915088601f830112610246575f80fd5b815181811115610258576102586101aa565b61026760208260051b016101be565b8082825260208201915060208360051b86010192508b831115610288575f80fd5b602085015b83811015610318578051858111156102a3575f80fd5b8601603f81018e136102b3575f80fd5b6020810151868111156102c8576102c86101aa565b6102db601f8201601f19166020016101be565b8181528f60408385010111156102ef575f80fd5b8160408401602083015e5f6020838301015280865250505060208301925060208101905061028d565b50809950505050505060208601519350610334604087016101ee565b9250610342606087016101ee565b9150608086015190509295509295909350565b600181811c9082168061036957607f821691505b60208210810361038757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103d457805f5260205f20601f840160051c810160208510156103b25750805b601f840160051c820191505b818110156103d1575f81556001016103be565b50505b505050565b81516001600160401b038111156103f2576103f26101aa565b610406816104008454610355565b8461038d565b602080601f831160018114610439575f84156104225750858301515b5f19600386901b1c1916600185901b178555610490565b5f85815260208120601f198616915b8281101561046757888601518255948401946001909101908401610448565b508582101561048457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805160a05160c05160e051611d8e6105165f395f8181610181015281816102d301526109c701525f81816101a80152818161024d01528181610314015281816107640152818161087f015281816109280152610a2701525f818160ba01526105f501525f8181608a01528181610c180152610c600152611d8e5ff3fe608060405234801561000f575f80fd5b5060043610610081575f3560e01c80631d80051d146100855780635cd2525e146100b8578063715018a6146100e757806387c484fe146100f15780638da5cb5b146101065780638e5ea8df1461010e578063b50f2fbc14610121578063e3d1666e14610136578063f2fde38b14610157575b5f80fd5b6040517f000000000000000000000000000000000000000000000000000000000000000081526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516100af9190611389565b6100ef61016a565b005b6100f961017d565b6040516100af91906113cb565b6100da610440565b6100ef61011c3660046114ef565b61044e565b610129610495565b6040516100af91906115ab565b61014961014436600461162b565b610569565b6040516100af9291906116ee565b6100ef61016536600461175c565b61068d565b6101726106ca565b61017b5f6106fc565b565b60607f00000000000000000000000000000000000000000000000000000000000000005f0361024a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610202573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610226919061179d565b60405160200161023691906117b6565b604051602081830303815290604052905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ba9534a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102cb919061179d565b90505f6102f87f0000000000000000000000000000000000000000000000000000000000000000436117de565b90505b6040516324b204d360e21b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c906103499086906004016117b6565b61018060405180830381865afa158015610365573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038991906117f1565b9050818161014001516001600160401b0316111580156103ae57506103ae838261074b565b156103db57826040516020016103c491906117b6565b604051602081830303815290604052935050505090565b826001600160401b03165f036103f15750610402565b6103fa836118c1565b9250506102fb565b60405162461bcd60e51b815260206004820152600e60248201526d4e6974726f3a206e6f206e6f646560901b60448201526064015b60405180910390fd5b5f546001600160a01b031690565b6104566106ca565b80516104699060019060208401906112bb565b506040517fe621d803a0c96b9bbeea51d136777f6ea8a4ce0c4ac74f6645e18b4342e2fa07905f90a150565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015610560578382905f5260205f200180546104d5906118e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610501906118e2565b801561054c5780601f106105235761010080835404028352916020019161054c565b820191905f5260205f20905b81548152906001019060200180831161052f57829003601f168201915b5050505050815260200190600101906104b8565b50505050905090565b60605f808380602001905181019061058191906119ec565b90505f61059187835f01516107f0565b90505f6105ab826040015184604001518560200151610b56565b905073__$011ed85421b307e5206de383929e31be73$__6392a201d4886040518060a001604052805f815260200185815260200187606001518152602001876080015181526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152506040518363ffffffff1660e01b815260040161063d929190611ab4565b5f60405180830381865af4158015610657573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261067e9190810190611b85565b94509450505050935093915050565b6106956106ca565b6001600160a01b0381166106be575f604051631e4fbdf760e01b81526004016104379190611389565b6106c7816106fc565b50565b336106d3610440565b6001600160a01b03161461017b573360405163118cdaa760e01b81526004016104379190611389565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516317185fa560e21b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c617e94906107999086906004016117b6565b602060405180830381865afa1580156107b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d89190611bd8565b8260c001516001600160401b03161190505b92915050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f83806020019051810190610865919061179d565b6040516324b204d360e21b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c906108b49086906004016117b6565b61018060405180830381865afa1580156108d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f491906117f1565b9150806001600160401b0316836001600160401b031614610b4f576040516324b204d360e21b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9061095d9085906004016117b6565b61018060405180830381865afa158015610979573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d91906117f1565b90506109c58161014001516001600160401b03168461014001516001600160401b0316610c12565b7f00000000000000000000000000000000000000000000000000000000000000005f03610b03575b836001600160401b031681606001516001600160401b03161115610aa25760608101516040516324b204d360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916392c8134c91610a5b91906004016117b6565b61018060405180830381865afa158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b91906117f1565b90506109ed565b836001600160401b031681606001516001600160401b031614610afe5760405162461bcd60e51b8152602060048201526014602482015273139a5d1c9bce881b9bdd08199a5b985b1a5e995960621b6044820152606401610437565b610b4d565b610b0d848261074b565b610b4d5760405162461bcd60e51b81526020600482015260116024820152704e6974726f3a206e6f7420757361626c6560781b6044820152606401610437565b505b5092915050565b5f80838051906020012083604051602001610b7b929190918252602082015260400190565b604051602081830303815290604052805190602001209050848114610bd75760405162461bcd60e51b81526020600482015260126024820152714e6974726f3a20636f6e6669726d4461746160701b6044820152606401610437565b5f610be185610cbb565b9050610c0681600381518110610bf957610bf9611bef565b6020026020010151610cce565b925050505b9392505050565b81610c3d7f000000000000000000000000000000000000000000000000000000000000000083611c03565b1015610c8c57604051632a54241d60e21b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606401610437565b81811115610cb75760405163b356ade760e01b81526004810183905260248101829052604401610437565b5050565b60606107ea610cc983610d06565b610d4d565b5f80610cd983610ec0565b90508051602014610cfd576040516366c9448560e01b815260040160405180910390fd5b610c0b81611c16565b610d0e61130f565b81515f03610d2f57604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f805f610d5b85610f48565b919450925090506001816001811115610d7657610d76611c39565b14610d94576040516325ce355f60e11b815260040160405180910390fd5b8451610da08385611c03565b14610dbe57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b610ddd61130f565b815260200190600190039081610dd55790505093505f835b8651811015610eb4575f80610e396040518060400160405280858c5f0151610e1d91906117de565b8152602001858c60200151610e329190611c03565b9052610f48565b509150915060405180604001604052808383610e559190611c03565b8152602001848b60200151610e6a9190611c03565b815250888581518110610e7f57610e7f611bef565b6020908102919091010152610e95600185611c03565b9350610ea18183611c03565b610eab9084611c03565b92505050610df5565b50845250919392505050565b60605f805f610ece85610f48565b919450925090505f816001811115610ee857610ee8611c39565b14610f06576040516307fe6cb960e21b815260040160405180910390fd5b610f108284611c03565b855114610f3057604051630b8aa6f760e31b815260040160405180910390fd5b610f3f8560200151848461122b565b95945050505050565b5f805f835f01515f03610f6e57604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111610f90575f60015f9450945094505050611224565b60b78111611025575f610fa46080836117de565b905080875f015111610fc9576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015610ff55750600160ff1b6001600160f81b03198216105b156110135760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250611224915050565b60bf8111611103575f61103960b7836117de565b905080875f01511161105e576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f81900361108e5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116110bd5760405163babb01dd60e01b815260040160405180910390fd5b6110c78184611c03565b8951116110e7576040516366c9448560e01b815260040160405180910390fd5b6110f2836001611c03565b975095505f94506112249350505050565b60f7811161114d575f61111760c0836117de565b905080875f01511161113c576040516366c9448560e01b815260040160405180910390fd5b600195509350849250611224915050565b5f61115960f7836117de565b905080875f01511161117e576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f8190036111ae5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116111dd5760405163babb01dd60e01b815260040160405180910390fd5b6111e78184611c03565b895111611207576040516366c9448560e01b815260040160405180910390fd5b611212836001611c03565b97509550600194506112249350505050565b9193909250565b6060816001600160401b03811115611245576112456113dd565b6040519080825280601f01601f19166020018201604052801561126f576020820181803683370190505b5090508115610c0b575f6112838486611c03565b9050602082015f5b848110156112a357828101518282015260200161128b565b848111156112b1575f858301525b5050509392505050565b828054828255905f5260205f209081019282156112ff579160200282015b828111156112ff57825182906112ef9082611c99565b50916020019190600101906112d9565b5061130b929150611327565b5090565b60405180604001604052805f81526020015f81525090565b8082111561130b575f61133a8282611343565b50600101611327565b50805461134f906118e2565b5f825580601f1061135e575050565b601f0160209004905f5260205f20908101906106c791905b8082111561130b575f8155600101611376565b6001600160a01b0391909116815260200190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c0b602083018461139d565b634e487b7160e01b5f52604160045260245ffd5b60405161018081016001600160401b0381118282101715611414576114146113dd565b60405290565b60405160a081016001600160401b0381118282101715611414576114146113dd565b604051601f8201601f191681016001600160401b0381118282101715611464576114646113dd565b604052919050565b5f6001600160401b03821115611484576114846113dd565b5060051b60200190565b5f6001600160401b038211156114a6576114a66113dd565b50601f01601f191660200190565b5f6114c66114c18461148e565b61143c565b90508281528383830111156114d9575f80fd5b828260208301375f602084830101529392505050565b5f6020808385031215611500575f80fd5b82356001600160401b0380821115611516575f80fd5b818501915085601f830112611529575f80fd5b81356115376114c18261146c565b81815260059190911b83018401908481019088831115611555575f80fd5b8585015b8381101561159e5780358581111561156f575f80fd5b8601603f81018b1361157f575f80fd5b6115908b89830135604084016114b4565b845250918601918601611559565b5098975050505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561160057603f198886030184526115ee85835161139d565b945092850192908501906001016115d2565b5092979650505050505050565b5f82601f83011261161c575f80fd5b610c0b838335602085016114b4565b5f805f6060848603121561163d575f80fd5b83356001600160401b0380821115611653575f80fd5b61165f8783880161160d565b94506020860135915080821115611674575f80fd5b9085019060208288031215611687575f80fd5b6040516020810181811083821117156116a2576116a26113dd565b6040528235828111156116b3575f80fd5b6116bf8982860161160d565b825250935060408601359150808211156116d7575f80fd5b506116e48682870161160d565b9150509250925092565b5f604082016040835280855180835260608501915060608160051b860101925060208088015f5b8381101561174357605f1988870301855261173186835161139d565b95509382019390820190600101611715565b50505050508091505060ff831660208301529392505050565b5f6020828403121561176c575f80fd5b81356001600160a01b0381168114610c0b575f80fd5b80516001600160401b0381168114611798575f80fd5b919050565b5f602082840312156117ad575f80fd5b610c0b82611782565b6001600160401b0391909116815260200190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107ea576107ea6117ca565b5f6101808284031215611802575f80fd5b61180a6113f1565b82518152602083015160208201526040830151604082015261182e60608401611782565b606082015261183f60808401611782565b608082015261185060a08401611782565b60a082015261186160c08401611782565b60c082015261187260e08401611782565b60e0820152610100611885818501611782565b90820152610120611897848201611782565b908201526101406118a9848201611782565b90820152610160928301519281019290925250919050565b5f6001600160401b038216806118d9576118d96117ca565b5f190192915050565b600181811c908216806118f657607f821691505b60208210810361191457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f830112611929575f80fd5b81516119376114c18261148e565b81815284602083860101111561194b575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f82601f830112611976575f80fd5b815160206119866114c18361146c565b82815260059290921b840181019181810190868411156119a4575f80fd5b8286015b848110156119e15780516001600160401b038111156119c5575f80fd5b6119d38986838b010161191a565b8452509183019183016119a8565b509695505050505050565b5f602082840312156119fc575f80fd5b81516001600160401b0380821115611a12575f80fd5b9083019060a08286031215611a25575f80fd5b611a2d61141a565b611a3683611782565b815260208301516020820152604083015182811115611a53575f80fd5b611a5f8782860161191a565b604083015250606083015182811115611a76575f80fd5b611a8287828601611967565b606083015250608083015182811115611a99575f80fd5b611aa58782860161191a565b60808301525095945050505050565b604081525f83516020806040850152611ad0606085018361139d565b91508382038185015260a08201855183528186015182840152604086015160a0604085015281815180845260c08601915060c08160051b870101935084830192505f5b81811015611b415760bf19878603018352611b2f85855161139d565b94509285019291850191600101611b13565b50505050606086015191508281036060840152611b5e818361139d565b9150506080850151611b7b60808401826001600160a01b03169052565b5095945050505050565b5f8060408385031215611b96575f80fd5b82516001600160401b03811115611bab575f80fd5b611bb785828601611967565b925050602083015160ff81168114611bcd575f80fd5b809150509250929050565b5f60208284031215611be8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b808201808211156107ea576107ea6117ca565b80516020808301519190811015611914575f1960209190910360031b1b16919050565b634e487b7160e01b5f52602160045260245ffd5b601f821115611c9457805f5260205f20601f840160051c81016020851015611c725750805b601f840160051c820191505b81811015611c91575f8155600101611c7e565b50505b505050565b81516001600160401b03811115611cb257611cb26113dd565b611cc681611cc084546118e2565b84611c4d565b602080601f831160018114611cf9575f8415611ce25750858301515b5f19600386901b1c1916600185901b178555611d50565b5f85815260208120601f198616915b82811015611d2757888601518255948401946001909101908401611d08565b5085821015611d4457878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fea2646970667358221220c813f36cd66a36c537155b10de7dfd9f7c5a56a83866b1cfddc7ff313f0f793864736f6c63430008190033","sourceMap":"360:3297:23:-:0;;;479:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;653:4;659:6;667:5;566:10:0;;1269:95:39;;1322:31;;-1:-1:-1;;;1322:31:39;;1350:1;1322:31;;;2639:51:55;2612:18;;1322:31:39;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;588:12:0;;::::1;::::0;:5:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;610:16:0::1;::::0;;;;-1:-1:-1;;;;;636:14:0;;::::1;;::::0;684:16:23;;;::::1;;::::0;710:22:::1;::::0;-1:-1:-1;360:3297:23;;-1:-1:-1;;;360:3297:23;2912:187:39;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:39;;;-1:-1:-1;;;;;;3020:17:39;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;360:3297:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;360:3297:23;;;-1:-1:-1;360:3297:23;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:127:55;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:55;247:40;;-1:-1:-1;;;;;302:34:55;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:55:o;426:193::-;521:13;;-1:-1:-1;;;;;563:31:55;;553:42;;543:70;;609:1;606;599:12;543:70;426:193;;;:::o;624:1864::-;808:6;816;824;832;840;893:3;881:9;872:7;868:23;864:33;861:53;;;910:1;907;900:12;861:53;937:16;;-1:-1:-1;;;;;1002:14:55;;;999:34;;;1029:1;1026;1019:12;999:34;1067:6;1056:9;1052:22;1042:32;;1112:7;1105:4;1101:2;1097:13;1093:27;1083:55;;1134:1;1131;1124:12;1083:55;1163:2;1157:9;1185:2;1181;1178:10;1175:36;;;1191:18;;:::i;:::-;1231:38;1263:4;1258:2;1255:1;1251:10;1247:21;1231:38;:::i;:::-;1291:3;1315:2;1310:3;1303:15;1343:4;1338:3;1334:14;1327:21;;1396:4;1390:2;1387:1;1383:10;1379:2;1375:19;1371:30;1357:44;;1424:7;1416:6;1413:19;1410:39;;;1445:1;1442;1435:12;1410:39;1477:4;1473:2;1469:13;1491:708;1507:6;1502:3;1499:15;1491:708;;;1588:3;1582:10;1624:2;1611:11;1608:19;1605:39;;;1640:1;1637;1630:12;1605:39;1667:20;;1722:2;1714:11;;1710:25;-1:-1:-1;1700:53:55;;1749:1;1746;1739:12;1700:53;1790:4;1786:2;1782:13;1776:20;1819:2;1815;1812:10;1809:36;;;1825:18;;:::i;:::-;1871:55;1914:2;1895:13;;-1:-1:-1;;1891:27:55;1920:4;1887:38;1871:55;:::i;:::-;1953:2;1946:5;1939:17;1997:7;1992:2;1987;1983;1979:11;1975:20;1972:33;1969:53;;;2018:1;2015;2008:12;1969:53;2072:2;2067;2063;2059:11;2052:4;2045:5;2041:16;2035:40;2122:1;2115:4;2110:2;2103:5;2099:14;2095:25;2088:36;2149:5;2144:3;2137:18;;;;2184:4;2179:3;2175:14;2168:21;;1533:4;1528:3;1524:14;1517:21;;1491:708;;;1495:3;2218:5;2208:15;;;;;;;2263:4;2252:9;2248:20;2242:27;2232:37;;2288:65;2349:2;2338:9;2334:18;2288:65;:::i;:::-;2278:75;;2372:65;2433:2;2422:9;2418:18;2372:65;:::i;:::-;2362:75;;2477:3;2466:9;2462:19;2456:26;2446:36;;624:1864;;;;;;;;:::o;2701:380::-;2780:1;2776:12;;;;2823;;;2844:61;;2898:4;2890:6;2886:17;2876:27;;2844:61;2951:2;2943:6;2940:14;2920:18;2917:38;2914:161;;2997:10;2992:3;2988:20;2985:1;2978:31;3032:4;3029:1;3022:15;3060:4;3057:1;3050:15;2914:161;;2701:380;;;:::o;3212:518::-;3314:2;3309:3;3306:11;3303:421;;;3350:5;3347:1;3340:16;3394:4;3391:1;3381:18;3464:2;3452:10;3448:19;3445:1;3441:27;3435:4;3431:38;3500:4;3488:10;3485:20;3482:47;;;-1:-1:-1;3523:4:55;3482:47;3578:2;3573:3;3569:12;3566:1;3562:20;3556:4;3552:31;3542:41;;3633:81;3651:2;3644:5;3641:13;3633:81;;;3710:1;3696:16;;3677:1;3666:13;3633:81;;;3637:3;;3303:421;3212:518;;;:::o;3906:1345::-;4026:10;;-1:-1:-1;;;;;4048:30:55;;4045:56;;;4081:18;;:::i;:::-;4110:97;4200:6;4160:38;4192:4;4186:11;4160:38;:::i;:::-;4154:4;4110:97;:::i;:::-;4262:4;;4319:2;4308:14;;4336:1;4331:663;;;;5038:1;5055:6;5052:89;;;-1:-1:-1;5107:19:55;;;5101:26;5052:89;-1:-1:-1;;3863:1:55;3859:11;;;3855:24;3851:29;3841:40;3887:1;3883:11;;;3838:57;5154:81;;4301:944;;4331:663;3159:1;3152:14;;;3196:4;3183:18;;-1:-1:-1;;4367:20:55;;;4485:236;4499:7;4496:1;4493:14;4485:236;;;4588:19;;;4582:26;4567:42;;4680:27;;;;4648:1;4636:14;;;;4515:19;;4485:236;;;4489:3;4749:6;4740:7;4737:19;4734:201;;;4810:19;;;4804:26;-1:-1:-1;;4893:1:55;4889:14;;;4905:3;4885:24;4881:37;4877:42;4862:58;4847:74;;4734:201;;;4981:1;4972:6;4969:1;4965:14;4961:22;4955:4;4948:36;4301:944;;;;;3906:1345;;:::o;:::-;360:3297:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{"contracts/GatewayVM.sol":{"GatewayVM":[{"start":2757,"length":20}]}}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b5060043610610081575f3560e01c80631d80051d146100855780635cd2525e146100b8578063715018a6146100e757806387c484fe146100f15780638da5cb5b146101065780638e5ea8df1461010e578063b50f2fbc14610121578063e3d1666e14610136578063f2fde38b14610157575b5f80fd5b6040517f000000000000000000000000000000000000000000000000000000000000000081526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516100af9190611389565b6100ef61016a565b005b6100f961017d565b6040516100af91906113cb565b6100da610440565b6100ef61011c3660046114ef565b61044e565b610129610495565b6040516100af91906115ab565b61014961014436600461162b565b610569565b6040516100af9291906116ee565b6100ef61016536600461175c565b61068d565b6101726106ca565b61017b5f6106fc565b565b60607f00000000000000000000000000000000000000000000000000000000000000005f0361024a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610202573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610226919061179d565b60405160200161023691906117b6565b604051602081830303815290604052905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ba9534a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102cb919061179d565b90505f6102f87f0000000000000000000000000000000000000000000000000000000000000000436117de565b90505b6040516324b204d360e21b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c906103499086906004016117b6565b61018060405180830381865afa158015610365573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038991906117f1565b9050818161014001516001600160401b0316111580156103ae57506103ae838261074b565b156103db57826040516020016103c491906117b6565b604051602081830303815290604052935050505090565b826001600160401b03165f036103f15750610402565b6103fa836118c1565b9250506102fb565b60405162461bcd60e51b815260206004820152600e60248201526d4e6974726f3a206e6f206e6f646560901b60448201526064015b60405180910390fd5b5f546001600160a01b031690565b6104566106ca565b80516104699060019060208401906112bb565b506040517fe621d803a0c96b9bbeea51d136777f6ea8a4ce0c4ac74f6645e18b4342e2fa07905f90a150565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015610560578382905f5260205f200180546104d5906118e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610501906118e2565b801561054c5780601f106105235761010080835404028352916020019161054c565b820191905f5260205f20905b81548152906001019060200180831161052f57829003601f168201915b5050505050815260200190600101906104b8565b50505050905090565b60605f808380602001905181019061058191906119ec565b90505f61059187835f01516107f0565b90505f6105ab826040015184604001518560200151610b56565b905073__$011ed85421b307e5206de383929e31be73$__6392a201d4886040518060a001604052805f815260200185815260200187606001518152602001876080015181526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152506040518363ffffffff1660e01b815260040161063d929190611ab4565b5f60405180830381865af4158015610657573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261067e9190810190611b85565b94509450505050935093915050565b6106956106ca565b6001600160a01b0381166106be575f604051631e4fbdf760e01b81526004016104379190611389565b6106c7816106fc565b50565b336106d3610440565b6001600160a01b03161461017b573360405163118cdaa760e01b81526004016104379190611389565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516317185fa560e21b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c617e94906107999086906004016117b6565b602060405180830381865afa1580156107b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d89190611bd8565b8260c001516001600160401b03161190505b92915050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f83806020019051810190610865919061179d565b6040516324b204d360e21b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c906108b49086906004016117b6565b61018060405180830381865afa1580156108d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f491906117f1565b9150806001600160401b0316836001600160401b031614610b4f576040516324b204d360e21b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9061095d9085906004016117b6565b61018060405180830381865afa158015610979573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d91906117f1565b90506109c58161014001516001600160401b03168461014001516001600160401b0316610c12565b7f00000000000000000000000000000000000000000000000000000000000000005f03610b03575b836001600160401b031681606001516001600160401b03161115610aa25760608101516040516324b204d360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916392c8134c91610a5b91906004016117b6565b61018060405180830381865afa158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b91906117f1565b90506109ed565b836001600160401b031681606001516001600160401b031614610afe5760405162461bcd60e51b8152602060048201526014602482015273139a5d1c9bce881b9bdd08199a5b985b1a5e995960621b6044820152606401610437565b610b4d565b610b0d848261074b565b610b4d5760405162461bcd60e51b81526020600482015260116024820152704e6974726f3a206e6f7420757361626c6560781b6044820152606401610437565b505b5092915050565b5f80838051906020012083604051602001610b7b929190918252602082015260400190565b604051602081830303815290604052805190602001209050848114610bd75760405162461bcd60e51b81526020600482015260126024820152714e6974726f3a20636f6e6669726d4461746160701b6044820152606401610437565b5f610be185610cbb565b9050610c0681600381518110610bf957610bf9611bef565b6020026020010151610cce565b925050505b9392505050565b81610c3d7f000000000000000000000000000000000000000000000000000000000000000083611c03565b1015610c8c57604051632a54241d60e21b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606401610437565b81811115610cb75760405163b356ade760e01b81526004810183905260248101829052604401610437565b5050565b60606107ea610cc983610d06565b610d4d565b5f80610cd983610ec0565b90508051602014610cfd576040516366c9448560e01b815260040160405180910390fd5b610c0b81611c16565b610d0e61130f565b81515f03610d2f57604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f805f610d5b85610f48565b919450925090506001816001811115610d7657610d76611c39565b14610d94576040516325ce355f60e11b815260040160405180910390fd5b8451610da08385611c03565b14610dbe57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b610ddd61130f565b815260200190600190039081610dd55790505093505f835b8651811015610eb4575f80610e396040518060400160405280858c5f0151610e1d91906117de565b8152602001858c60200151610e329190611c03565b9052610f48565b509150915060405180604001604052808383610e559190611c03565b8152602001848b60200151610e6a9190611c03565b815250888581518110610e7f57610e7f611bef565b6020908102919091010152610e95600185611c03565b9350610ea18183611c03565b610eab9084611c03565b92505050610df5565b50845250919392505050565b60605f805f610ece85610f48565b919450925090505f816001811115610ee857610ee8611c39565b14610f06576040516307fe6cb960e21b815260040160405180910390fd5b610f108284611c03565b855114610f3057604051630b8aa6f760e31b815260040160405180910390fd5b610f3f8560200151848461122b565b95945050505050565b5f805f835f01515f03610f6e57604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111610f90575f60015f9450945094505050611224565b60b78111611025575f610fa46080836117de565b905080875f015111610fc9576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015610ff55750600160ff1b6001600160f81b03198216105b156110135760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250611224915050565b60bf8111611103575f61103960b7836117de565b905080875f01511161105e576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f81900361108e5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116110bd5760405163babb01dd60e01b815260040160405180910390fd5b6110c78184611c03565b8951116110e7576040516366c9448560e01b815260040160405180910390fd5b6110f2836001611c03565b975095505f94506112249350505050565b60f7811161114d575f61111760c0836117de565b905080875f01511161113c576040516366c9448560e01b815260040160405180910390fd5b600195509350849250611224915050565b5f61115960f7836117de565b905080875f01511161117e576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f8190036111ae5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116111dd5760405163babb01dd60e01b815260040160405180910390fd5b6111e78184611c03565b895111611207576040516366c9448560e01b815260040160405180910390fd5b611212836001611c03565b97509550600194506112249350505050565b9193909250565b6060816001600160401b03811115611245576112456113dd565b6040519080825280601f01601f19166020018201604052801561126f576020820181803683370190505b5090508115610c0b575f6112838486611c03565b9050602082015f5b848110156112a357828101518282015260200161128b565b848111156112b1575f858301525b5050509392505050565b828054828255905f5260205f209081019282156112ff579160200282015b828111156112ff57825182906112ef9082611c99565b50916020019190600101906112d9565b5061130b929150611327565b5090565b60405180604001604052805f81526020015f81525090565b8082111561130b575f61133a8282611343565b50600101611327565b50805461134f906118e2565b5f825580601f1061135e575050565b601f0160209004905f5260205f20908101906106c791905b8082111561130b575f8155600101611376565b6001600160a01b0391909116815260200190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c0b602083018461139d565b634e487b7160e01b5f52604160045260245ffd5b60405161018081016001600160401b0381118282101715611414576114146113dd565b60405290565b60405160a081016001600160401b0381118282101715611414576114146113dd565b604051601f8201601f191681016001600160401b0381118282101715611464576114646113dd565b604052919050565b5f6001600160401b03821115611484576114846113dd565b5060051b60200190565b5f6001600160401b038211156114a6576114a66113dd565b50601f01601f191660200190565b5f6114c66114c18461148e565b61143c565b90508281528383830111156114d9575f80fd5b828260208301375f602084830101529392505050565b5f6020808385031215611500575f80fd5b82356001600160401b0380821115611516575f80fd5b818501915085601f830112611529575f80fd5b81356115376114c18261146c565b81815260059190911b83018401908481019088831115611555575f80fd5b8585015b8381101561159e5780358581111561156f575f80fd5b8601603f81018b1361157f575f80fd5b6115908b89830135604084016114b4565b845250918601918601611559565b5098975050505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561160057603f198886030184526115ee85835161139d565b945092850192908501906001016115d2565b5092979650505050505050565b5f82601f83011261161c575f80fd5b610c0b838335602085016114b4565b5f805f6060848603121561163d575f80fd5b83356001600160401b0380821115611653575f80fd5b61165f8783880161160d565b94506020860135915080821115611674575f80fd5b9085019060208288031215611687575f80fd5b6040516020810181811083821117156116a2576116a26113dd565b6040528235828111156116b3575f80fd5b6116bf8982860161160d565b825250935060408601359150808211156116d7575f80fd5b506116e48682870161160d565b9150509250925092565b5f604082016040835280855180835260608501915060608160051b860101925060208088015f5b8381101561174357605f1988870301855261173186835161139d565b95509382019390820190600101611715565b50505050508091505060ff831660208301529392505050565b5f6020828403121561176c575f80fd5b81356001600160a01b0381168114610c0b575f80fd5b80516001600160401b0381168114611798575f80fd5b919050565b5f602082840312156117ad575f80fd5b610c0b82611782565b6001600160401b0391909116815260200190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107ea576107ea6117ca565b5f6101808284031215611802575f80fd5b61180a6113f1565b82518152602083015160208201526040830151604082015261182e60608401611782565b606082015261183f60808401611782565b608082015261185060a08401611782565b60a082015261186160c08401611782565b60c082015261187260e08401611782565b60e0820152610100611885818501611782565b90820152610120611897848201611782565b908201526101406118a9848201611782565b90820152610160928301519281019290925250919050565b5f6001600160401b038216806118d9576118d96117ca565b5f190192915050565b600181811c908216806118f657607f821691505b60208210810361191457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f830112611929575f80fd5b81516119376114c18261148e565b81815284602083860101111561194b575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f82601f830112611976575f80fd5b815160206119866114c18361146c565b82815260059290921b840181019181810190868411156119a4575f80fd5b8286015b848110156119e15780516001600160401b038111156119c5575f80fd5b6119d38986838b010161191a565b8452509183019183016119a8565b509695505050505050565b5f602082840312156119fc575f80fd5b81516001600160401b0380821115611a12575f80fd5b9083019060a08286031215611a25575f80fd5b611a2d61141a565b611a3683611782565b815260208301516020820152604083015182811115611a53575f80fd5b611a5f8782860161191a565b604083015250606083015182811115611a76575f80fd5b611a8287828601611967565b606083015250608083015182811115611a99575f80fd5b611aa58782860161191a565b60808301525095945050505050565b604081525f83516020806040850152611ad0606085018361139d565b91508382038185015260a08201855183528186015182840152604086015160a0604085015281815180845260c08601915060c08160051b870101935084830192505f5b81811015611b415760bf19878603018352611b2f85855161139d565b94509285019291850191600101611b13565b50505050606086015191508281036060840152611b5e818361139d565b9150506080850151611b7b60808401826001600160a01b03169052565b5095945050505050565b5f8060408385031215611b96575f80fd5b82516001600160401b03811115611bab575f80fd5b611bb785828601611967565b925050602083015160ff81168114611bcd575f80fd5b809150509250929050565b5f60208284031215611be8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b808201808211156107ea576107ea6117ca565b80516020808301519190811015611914575f1960209190910360031b1b16919050565b634e487b7160e01b5f52602160045260245ffd5b601f821115611c9457805f5260205f20601f840160051c81016020851015611c725750805b601f840160051c820191505b81811015611c91575f8155600101611c7e565b50505b505050565b81516001600160401b03811115611cb257611cb26113dd565b611cc681611cc084546118e2565b84611c4d565b602080601f831160018114611cf9575f8415611ce25750858301515b5f19600386901b1c1916600185901b178555611d50565b5f85815260208120601f198616915b82811015611d2757888601518255948401946001909101908401611d08565b5085821015611d4457878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fea2646970667358221220c813f36cd66a36c537155b10de7dfd9f7c5a56a83866b1cfddc7ff313f0f793864736f6c63430008190033","sourceMap":"360:3297:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;896:84:0;;;966:7;160:25:55;;148:2;133:18;896:84:0;;;;;;;;986:89;1062:6;986:89;;;;;;;:::i;2293:101:39:-;;;:::i;:::-;;745:554:23;;;:::i;:::-;;;;;;;:::i;1638:85:39:-;;;:::i;663:129:0:-;;;;;;:::i;:::-;;:::i;798:92::-;;;:::i;:::-;;;;;;;:::i;1464:620:23:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2543:215:39:-;;;;;;:::i;:::-;;:::i;2293:101::-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;745:554:23:-;796:12;824:10;838:1;824:15;820:90;;873:7;-1:-1:-1;;;;;873:23:23;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;862:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;855:44;;745:554;:::o;820:90::-;919:8;930:7;-1:-1:-1;;;;;930:25:23;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;919:38;-1:-1:-1;967:9:23;979:25;994:10;979:12;:25;:::i;:::-;967:37;;1014:245;1060:18;;-1:-1:-1;;;1060:18:23;;1041:16;;-1:-1:-1;;;;;1060:7:23;:15;;;;:18;;1076:1;;1060:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1041:37;;1119:1;1096:4;:19;;;-1:-1:-1;;;;;1096:24:23;;;:50;;;;;1124:22;1138:1;1141:4;1124:13;:22::i;:::-;1092:109;;;1184:1;1173:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;1166:20;;;;;745:554;:::o;1092:109::-;1218:1;-1:-1:-1;;;;;1218:6:23;1223:1;1218:6;1214:17;;1226:5;;;1214:17;1245:3;;;:::i;:::-;;;1027:232;1014:245;;;1268:24;;-1:-1:-1;;;1268:24:23;;9961:2:55;1268:24:23;;;9943:21:55;10000:2;9980:18;;;9973:30;-1:-1:-1;;;10019:18:55;;;10012:44;10073:18;;1268:24:23;;;;;;;;1638:85:39;1684:7;1710:6;-1:-1:-1;;;;;1710:6:39;;1638:85::o;663:129:0:-;1531:13:39;:11;:13::i;:::-;738:12:0;;::::1;::::0;:5:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;765:20:0::1;::::0;::::1;::::0;;;::::1;663:129:::0;:::o;798:92::-;844:15;878:5;871:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;798:92;:::o;1464:620:23:-;1620:14;1636;1662:21;1697:5;1686:33;;;;;;;;;;;;:::i;:::-;1662:57;;1729:16;1748:31;1760:7;1769:1;:9;;;1748:11;:31::i;:::-;1729:50;;1789:17;1809:111;1839:4;:16;;;1869:1;:17;;;1900:1;:10;;;1809:16;:111::i;:::-;1789:131;;1949:9;:21;1988:3;2009:54;;;;;;;;2023:1;2009:54;;;;2026:9;2009:54;;;;2037:1;:8;;;2009:54;;;;2047:1;:7;;;2009:54;;;;2056:6;-1:-1:-1;;;;;2009:54:23;;;;1949:128;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1949:128:23;;;;;;;;;;;;:::i;:::-;1930:147;;;;;;;1464:620;;;;;;:::o;2543:215:39:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:39;::::1;2623:91;;2700:1;2672:31;;-1:-1:-1::0;;;2672:31:39::1;;;;;;;;:::i;2623:91::-;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;735:10:40;1855:7:39;:5;:7::i;:::-;-1:-1:-1;;;;;1855:23:39;;1851:101;;735:10:40;1901:40:39;;-1:-1:-1;;;1901:40:39;;;;;;;;:::i;2912:187::-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:39;;;-1:-1:-1;;;;;;3020:17:39;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2090:327:23:-;2377:33;;-1:-1:-1;;;2377:33:23;;2168:4;;-1:-1:-1;;;;;2377:7:23;:26;;;;:33;;2404:5;;2377:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2358:4;:16;;;-1:-1:-1;;;;;2358:52:23;;2351:59;;2090:327;;;;;:::o;2423:750::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2555:15:23;2584:7;2573:29;;;;;;;;;;;;:::i;:::-;2619:24;;-1:-1:-1;;;2619:24:23;;2555:47;;-1:-1:-1;;;;;;2619:7:23;:15;;;;:24;;2635:7;;2619:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2612:31;;2668:8;-1:-1:-1;;;;;2657:19:23;:7;-1:-1:-1;;;;;2657:19:23;;2653:514;;2712:25;;-1:-1:-1;;;2712:25:23;;2692:17;;-1:-1:-1;;;;;2712:7:23;:15;;;;:25;;2728:8;;2712:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2692:45;;2751:55;2764:5;:20;;;-1:-1:-1;;;;;2751:55:23;2786:4;:19;;;-1:-1:-1;;;;;2751:55:23;:12;:55::i;:::-;2824:10;2838:1;2824:15;2820:337;;2859:111;2882:7;-1:-1:-1;;;;;2866:23:23;:5;:13;;;-1:-1:-1;;;;;2866:23:23;;2859:111;;;2937:13;;;;2921:30;;-1:-1:-1;;;2921:30:23;;-1:-1:-1;;;;;2921:7:23;:15;;;;:30;;2937:13;2921:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2913:38;;2859:111;;;3012:7;-1:-1:-1;;;;;2995:24:23;:5;:13;;;-1:-1:-1;;;;;2995:24:23;;2987:57;;;;-1:-1:-1;;;2987:57:23;;15385:2:55;2987:57:23;;;15367:21:55;15424:2;15404:18;;;15397:30;-1:-1:-1;;;15443:18:55;;;15436:50;15503:18;;2987:57:23;15183:344:55;2987:57:23;2820:337;;;3091:29;3105:7;3114:5;3091:13;:29::i;:::-;3083:59;;;;-1:-1:-1;;;3083:59:23;;15734:2:55;3083:59:23;;;15716:21:55;15773:2;15753:18;;;15746:30;-1:-1:-1;;;15792:18:55;;;15785:47;15849:18;;3083:59:23;15532:341:55;3083:59:23;2678:489;2653:514;2545:628;2423:750;;;;:::o;3179:476::-;3327:7;3346:16;3415:15;3405:26;;;;;;3433:8;3388:54;;;;;;;;16035:19:55;;;16079:2;16070:12;;16063:28;16116:2;16107:12;;15878:247;3388:54:23;;;;;;;;;;;;;3365:87;;;;;;3346:106;;3482:11;3470:8;:23;3462:54;;;;-1:-1:-1;;;3462:54:23;;16332:2:55;3462:54:23;;;16314:21:55;16371:2;16351:18;;;16344:30;-1:-1:-1;;;16390:18:55;;;16383:48;16448:18;;3462:54:23;16130:342:55;3462:54:23;3526:28;3557:35;3576:15;3557:18;:35::i;:::-;3526:66;;3609:39;3643:1;3645;3643:4;;;;;;;;:::i;:::-;;;;;;;3609:33;:39::i;:::-;3602:46;;;;3179:476;;;;;;:::o;1081:211:0:-;1176:6;1160:13;1166:7;1160:3;:13;:::i;:::-;:22;1156:69;;;1191:34;;-1:-1:-1;;;1191:34:0;;;;;16941:25:55;;;16982:18;;;16975:34;;;1217:7:0;17025:18:55;;;17018:34;16914:18;;1191:34:0;16739:319:55;1156:69:0;1245:6;1239:3;:12;1235:50;;;1260:25;;-1:-1:-1;;;1260:25:0;;;;;17237::55;;;17278:18;;;17271:34;;;17210:18;;1260:25:0;17063:248:55;1235:50:0;1081:211;;:::o;3631:130:53:-;3690:21;3730:24;3739:14;3749:3;3739:9;:14::i;:::-;3730:8;:24::i;579:253:8:-;677:7;696:14;713:25;733:4;713:19;:25::i;:::-;696:42;;752:1;:8;764:2;752:14;748:50;;775:23;;-1:-1:-1;;;775:23:8;;;;;;;;;;;748:50;815:10;823:1;815:10;:::i;1325:328:53:-;1385:19;;:::i;:::-;1463:3;:10;1477:1;1463:15;1459:39;;1487:11;;-1:-1:-1;;;1487:11:53;;;;;;;;;;;1459:39;-1:-1:-1;1605:41:53;;;;;;;;;1623:10;;1605:41;;1575:2;1566:12;;;1605:41;;;;;;;;1325:328::o;1805:1674::-;1866:21;1900:18;1920;1940:20;1964:18;1978:3;1964:13;:18::i;:::-;1899:83;;-1:-1:-1;1899:83:53;-1:-1:-1;1899:83:53;-1:-1:-1;2009:21:53;1997:8;:33;;;;;;;;:::i;:::-;;1993:64;;2039:18;;-1:-1:-1;;;2039:18:53;;;;;;;;;;;1993:64;2099:10;;2072:23;2085:10;2072;:23;:::i;:::-;:37;2068:72;;2118:22;;-1:-1:-1;;;2118:22:53;;;;;;;;;;;2068:72;2550:30;;;1150:2;2550:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;2543:37:53;-1:-1:-1;2591:17:53;2639:10;2659:681;2675:10;;2666:19;;2659:681;;;2702:18;2722;2745:150;2776:105;;;;;;;;2807:6;2794:3;:10;;;:19;;;;:::i;:::-;2776:105;;;;2871:6;2860:3;:7;;;2839:38;;;;:::i;:::-;2776:105;;2745:13;:150::i;:::-;2701:194;;;;;3100:153;;;;;;;;3147:10;3134;:23;;;;:::i;:::-;3100:153;;;;3231:6;3220:3;:7;;;3199:38;;;;:::i;:::-;3100:153;;;3082:4;3087:9;3082:15;;;;;;;;:::i;:::-;;;;;;;;;;:171;3268:14;3281:1;3268:14;;:::i;:::-;;-1:-1:-1;3306:23:53;3319:10;3306;:23;:::i;:::-;3296:33;;;;:::i;:::-;;;2687:653;;2659:681;;;-1:-1:-1;3440:23:53;;-1:-1:-1;3447:4:53;;1805:1674;-1:-1:-1;;;1805:1674:53:o;3892:393::-;3954:17;3984:18;4004;4024:20;4048:18;4062:3;4048:13;:18::i;:::-;3983:83;;-1:-1:-1;3983:83:53;-1:-1:-1;3983:83:53;-1:-1:-1;4093:21:53;4081:8;:33;;;;;;;;:::i;:::-;;4077:62;;4123:16;;-1:-1:-1;;;4123:16:53;;;;;;;;;;;4077:62;4168:23;4181:10;4168;:23;:::i;:::-;4154:10;;:37;4150:72;;4200:22;;-1:-1:-1;;;4200:22:53;;;;;;;;;;;4150:72;4240:38;4246:3;:7;;;4255:10;4267;4240:5;:38::i;:::-;4233:45;3892:393;-1:-1:-1;;;;;3892:393:53:o;5074:3092::-;5163:15;5180;5197:17;5516:3;:10;;;5530:1;5516:15;5512:39;;5540:11;;-1:-1:-1;;;5540:11:53;;;;;;;;;;;5512:39;5582:7;;;;5664:10;;5562:17;5656:19;5709:4;5699:14;;5695:2465;;5765:1;5768;5771:21;5757:36;;;;;;;;;;5695:2465;5824:4;5814:6;:14;5810:2350;;5930:14;5947:13;5956:4;5947:6;:13;:::i;:::-;5930:30;;5993:6;5979:3;:10;;;:20;5975:56;;6008:23;;-1:-1:-1;;;6008:23:53;;;;;;;;;;;5975:56;6153:1;6144:11;;;6138:18;-1:-1:-1;;;;;;6134:39:53;;6205:11;;:40;;;;-1:-1:-1;;;;;;;;;;6220:25:53;;;6205:40;6201:68;;;6254:15;;-1:-1:-1;;;6254:15:53;;;;;;;;;;;6201:68;-1:-1:-1;6292:1:53;;-1:-1:-1;6295:6:53;-1:-1:-1;6303:21:53;;-1:-1:-1;6284:41:53;;-1:-1:-1;;6284:41:53;5810:2350;6356:4;6346:6;:14;6342:1818;;6404:19;6426:13;6435:4;6426:6;:13;:::i;:::-;6404:35;;6472:11;6458:3;:10;;;:25;6454:61;;6492:23;;-1:-1:-1;;;6492:23:53;;;;;;;;;;;6454:61;6637:1;6628:11;;6622:18;-1:-1:-1;;;;;;6618:39:53;6530:25;6689:26;;;6685:54;;6724:15;;-1:-1:-1;;;6724:15:53;;;;;;;;;;;6685:54;6869:1;6860:11;;6854:18;6836:1;6832:19;;6827:3;6823:29;6819:54;6915:2;6905:12;;6901:40;;6926:15;;-1:-1:-1;;;6926:15:53;;;;;;;;;;;6901:40;6974:20;6988:6;6974:11;:20;:::i;:::-;6960:10;;:34;6956:70;;7003:23;;-1:-1:-1;;;7003:23:53;;;;;;;;;;;6956:70;7049:15;7053:11;7049:1;:15;:::i;:::-;7041:55;-1:-1:-1;7066:6:53;-1:-1:-1;7074:21:53;;-1:-1:-1;7041:55:53;;-1:-1:-1;;;;7041:55:53;6342:1818;7127:4;7117:6;:14;7113:1047;;7230:15;7248:13;7257:4;7248:6;:13;:::i;:::-;7230:31;;7294:7;7280:3;:10;;;:21;7276:57;;7310:23;;-1:-1:-1;;;7310:23:53;;;;;;;;;;;7276:57;7356:1;;-1:-1:-1;7359:7:53;-1:-1:-1;7356:1:53;;-1:-1:-1;7348:42:53;;-1:-1:-1;;7348:42:53;7113:1047;7447:20;7470:13;7479:4;7470:6;:13;:::i;:::-;7447:36;;7516:12;7502:3;:10;;;:26;7498:62;;7537:23;;-1:-1:-1;;;7537:23:53;;;;;;;;;;;7498:62;7682:1;7673:11;;7667:18;-1:-1:-1;;;;;;7663:39:53;7575:25;7734:26;;;7730:54;;7769:15;;-1:-1:-1;;;7769:15:53;;;;;;;;;;;7730:54;7917:1;7908:11;;7902:18;78