bsc/core/systemcontracts/gibbs/mainnet/TokenHubContract

1 line
37 KiB
Plaintext

60806040526004361061036f5760003560e01c80639a854bbd116101c6578063bd466461116100f7578063f014847211610095578063fc1a598f1161006f578063fc1a598f14610d58578063fc3e590814610a3b578063fd6a687914610d8b578063ff9c0027146106ec576103b7565b8063f014847214610d19578063f9a2bbc714610d2e578063fa9e915914610d43576103b7565b8063d9e6dae9116100d1578063d9e6dae91461066e578063dc927faf14610cda578063e1c7392a14610cef578063ebf71d5314610d04576103b7565b8063bd46646114610c0d578063c81b166214610c40578063c8509d8114610c55576103b7565b8063aa7415f511610164578063b99328c51161013e578063b99328c514610b77578063b9fd21e314610bb0578063ba35ead614610bc5578063bbface1f14610bda576103b7565b8063aa7415f514610a50578063ab51bb9614610a97578063ac43175114610aac576103b7565b8063a1a11bf5116101a0578063a1a11bf5146109fc578063a496fba214610a11578063a78abc1614610a26578063a7c9f02d14610a3b576103b7565b80639a854bbd146109995780639a99b4f0146109ae5780639dc09262146109e7576103b7565b806361368475116102a0578063727be1f81161023e578063831d65d111610218578063831d65d1146108c05780638b87b21f146105ed5780638eff336c1461094557806396713da914610984576103b7565b8063727be1f81461086c57806375d47a0a146108965780637942fd05146108ab576103b7565b80636e47b4821161027a5780636e47b4821461082d57806370fd5bad146106ec578063718a8aa81461084257806371d3086314610857576103b7565b8063613684751461066e57806366dea52a146106ec5780636e05652014610701576103b7565b806343a368b91161030d57806350432d32116102e757806350432d321461068357806351e806721461069857806359b92789146106ad5780635d499b1b146106d7576103b7565b806343a368b91461062d578063493279b1146106425780634bf6c8821461066e576103b7565b8063149d14d911610349578063149d14d9146105155780633d7132231461053c5780633dffc387146105ed57806343756e5c14610618576103b7565b80630bee7a67146103bc5780630e2374a5146103ea5780631182b8751461041b576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610da0565b6040805163ffffffff9092168252519081900360200190f35b3480156103f657600080fd5b506103ff610da5565b604080516001600160a01b039092168252519081900360200190f35b34801561042757600080fd5b506104a06004803603604081101561043e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561046257600080fd5b82018360208201111561047457600080fd5b803590602001918460018302840111600160201b8311171561049557600080fd5b509092509050610dab565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104da5781810151838201526020016104c2565b50505050905090810190601f1680156105075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052157600080fd5b5061052a610ed9565b60408051918252519081900360200190f35b34801561054857600080fd5b506103ff6004803603602081101561055f57600080fd5b810190602081018135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610edf945050505050565b3480156105f957600080fd5b50610602610f03565b6040805160ff9092168252519081900360200190f35b34801561062457600080fd5b506103ff610f08565b34801561063957600080fd5b5061052a610f0e565b34801561064e57600080fd5b50610657610f1a565b6040805161ffff9092168252519081900360200190f35b34801561067a57600080fd5b50610602610f1f565b34801561068f57600080fd5b5061052a610f24565b3480156106a457600080fd5b506103ff610f2f565b3480156106b957600080fd5b506103ff600480360360208110156106d057600080fd5b5035610f35565b3480156106e357600080fd5b5061052a610f50565b3480156106f857600080fd5b50610602610f59565b6108196004803603608081101561071757600080fd5b810190602081018135600160201b81111561073157600080fd5b82018360208201111561074357600080fd5b803590602001918460208302840111600160201b8311171561076457600080fd5b919390929091602081019035600160201b81111561078157600080fd5b82018360208201111561079357600080fd5b803590602001918460208302840111600160201b831117156107b457600080fd5b919390929091602081019035600160201b8111156107d157600080fd5b8201836020820111156107e357600080fd5b803590602001918460208302840111600160201b8311171561080457600080fd5b91935091503567ffffffffffffffff16610f5e565b604080519115158252519081900360200190f35b34801561083957600080fd5b506103ff611433565b34801561084e57600080fd5b50610602611439565b34801561086357600080fd5b5061052a61143e565b34801561087857600080fd5b506108196004803603602081101561088f57600080fd5b5035611444565b3480156108a257600080fd5b506103ff6114c5565b3480156108b757600080fd5b506106026114cb565b3480156108cc57600080fd5b506103b5600480360360408110156108e357600080fd5b60ff8235169190810190604081016020820135600160201b81111561090757600080fd5b82018360208201111561091957600080fd5b803590602001918460018302840111600160201b8311171561093a57600080fd5b5090925090506114d0565b34801561095157600080fd5b506103b56004803603606081101561096857600080fd5b508035906001600160a01b036020820135169060400135611619565b34801561099057600080fd5b5061060261169f565b3480156109a557600080fd5b5061052a6116a4565b3480156109ba57600080fd5b5061052a600480360360408110156109d157600080fd5b506001600160a01b0381351690602001356116b0565b3480156109f357600080fd5b506103ff6117ee565b348015610a0857600080fd5b506103ff6117f4565b348015610a1d57600080fd5b506106026117fa565b348015610a3257600080fd5b506108196117ff565b348015610a4757600080fd5b50610602611808565b61081960048036036080811015610a6657600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff1661180d565b348015610aa357600080fd5b506103d16117fa565b348015610ab857600080fd5b506103b560048036036040811015610acf57600080fd5b810190602081018135600160201b811115610ae957600080fd5b820183602082011115610afb57600080fd5b803590602001918460018302840111600160201b83111715610b1c57600080fd5b919390929091602081019035600160201b811115610b3957600080fd5b820183602082011115610b4b57600080fd5b803590602001918460018302840111600160201b83111715610b6c57600080fd5b509092509050611ece565b348015610b8357600080fd5b506103b560048036036040811015610b9a57600080fd5b50803590602001356001600160a01b031661213d565b348015610bbc57600080fd5b5061052a6121b3565b348015610bd157600080fd5b5061052a6121bd565b348015610be657600080fd5b5061052a60048036036020811015610bfd57600080fd5b50356001600160a01b03166121c3565b348015610c1957600080fd5b5061052a60048036036020811015610c3057600080fd5b50356001600160a01b03166121d5565b348015610c4c57600080fd5b506103ff6121f0565b348015610c6157600080fd5b506103b560048036036040811015610c7857600080fd5b60ff8235169190810190604081016020820135600160201b811115610c9c57600080fd5b820183602082011115610cae57600080fd5b803590602001918460018302840111600160201b83111715610ccf57600080fd5b5090925090506121f6565b348015610ce657600080fd5b506103ff6122c6565b348015610cfb57600080fd5b506103b56122cc565b348015610d1057600080fd5b5061060261236c565b348015610d2557600080fd5b50610602612371565b348015610d3a57600080fd5b506103ff612376565b348015610d4f57600080fd5b5061052a61237c565b348015610d6457600080fd5b506104a060048036036020811015610d7b57600080fd5b50356001600160a01b0316612382565b348015610d9757600080fd5b506103ff6124a9565b606481565b61200181565b60005460609060ff16610df3576040805162461bcd60e51b8152602060048201526019602482015260008051602061490c833981519152604482015290519081900360640190fd5b3361200014610e335760405162461bcd60e51b815260040180806020018281038252602f8152602001806148ba602f913960400191505060405180910390fd5b60ff841660021415610e8557610e7e83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124af92505050565b9050610ed2565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b60015490565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b61100181565b670de0b6b3a764000081565b603881565b600881565b66071afd498d000081565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff16610fa4576040805162461bcd60e51b8152602060048201526019602482015260008051602061490c833981519152604482015290519081900360640190fd5b868514610fe25760405162461bcd60e51b815260040180806020018281038252603b81526020018061487f603b913960400191505060405180910390fd5b8683146110205760405162461bcd60e51b815260040180806020018281038252603f815260200180614752603f913960400191505060405180910390fd5b426078018267ffffffffffffffff16101561106c5760405162461bcd60e51b81526004018080602001828103825260248152602001806146426024913960400191505060405180910390fd5b6402540be4003406156110b05760405162461bcd60e51b81526004018080602001828103825260408152602001806149826040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156110e3578160200160208202803683370190505b50905060005b848110156111be576402540be4008b8b8381811061110357fe5b905060200201358161111157fe5b061561114e5760405162461bcd60e51b815260040180806020018281038252603c815260200180614791603c913960400191505060405180910390fd5b6111738b8b8381811061115d57fe5b90506020020135856125d390919063ffffffff16565b935061119f6402540be4008c8c8481811061118a57fe5b9050602002013561262d90919063ffffffff16565b8282815181106111ab57fe5b60209081029190910101526001016110e9565b506001546111e3906111d6908663ffffffff61266f16565b849063ffffffff6125d316565b3410156112215760405162461bcd60e51b815260040180806020018281038252605681526020018061492c6056913960600191505060405180910390fd5b611231348463ffffffff6126c816565b915061123b614468565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036112ff8461270a565b611314876402540be40063ffffffff61262d16565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561137257818101518382015260200161135a565b50505050905090810190601f16801561139f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156113c057600080fd5b505af11580156113d4573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b600033612001146114865760405162461bcd60e51b81526004018080602001828103825260338152602001806145826033913960400191505060405180910390fd5b81156114bd576040516120019083156108fc029084906000818181858888f193505050501580156114bb573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff16611515576040805162461bcd60e51b8152602060048201526019602482015260008051602061490c833981519152604482015290519081900360640190fd5b33612000146115555760405162461bcd60e51b815260040180806020018281038252602f8152602001806148ba602f913960400191505060405180910390fd5b60ff8316600314156115a5576115a082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129c592505050565b611614565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b33611008146116595760405162461bcd60e51b81526004018080602001828103825260238152602001806148e96023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b600981565b677ce66c50e284000081565b6000805460ff166116f6576040805162461bcd60e51b8152602060048201526019602482015260008051602061490c833981519152604482015290519081900360640190fd5b33611005146117365760405162461bcd60e51b815260040180806020018281038252602f8152602001806145b5602f913960400191505060405180910390fd5b60004783106117455747611747565b825b9050670de0b6b3a76400008111156117635760009150506117e8565b80156117e5576040516001600160a01b0385169082156108fc029083906000818181858888f1935050505015801561179f573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff16611853576040805162461bcd60e51b8152602060048201526019602482015260008051602061490c833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff16101561189f5760405162461bcd60e51b81526004018080602001828103825260248152602001806146426024913960400191505060405180910390fd5b6402540be4003406156118e35760405162461bcd60e51b81526004018080602001828103825260408152602001806149826040913960400191505060405180910390fd5b600080806001600160a01b0388166119c25760015461190990879063ffffffff6125d316565b3410156119475760405162461bcd60e51b81526004018080602001828103825260618152602001806146cc6061913960800191505060405180910390fd5b6402540be40086061561198b5760405162461bcd60e51b815260040180806020018281038252603c815260200180614791603c913960400191505060405180910390fd5b61199b348763ffffffff6126c816565b90506119b2866402540be40063ffffffff61262d16565b6221272160e91b93509150611c65565b6001600160a01b038816600090815260036020526040902054925082611a195760405162461bcd60e51b815260040180806020018281038252603181526020018061469b6031913960400191505060405180910390fd5b600154341015611a5a5760405162461bcd60e51b815260040180806020018281038252603f8152602001806147ee603f913960400191505060405180910390fd5b506001600160a01b0387166000908152600260205260409020543490600881111580611aa55750600881118015611aa55750611aa3876007198301600a0a63ffffffff612a2116565b155b611ae05760405162461bcd60e51b815260040180806020018281038252603c815260200180614791603c913960400191505060405180910390fd5b611aea8782612a63565b9250611af584612aa3565b15611b3d576305f5e100831015611b3d5760405162461bcd60e51b815260040180806020018281038252603a8152602001806145e4603a913960400191505060405180910390fd5b600881101580611b575750600881108015611b5757508683115b611b925760405162461bcd60e51b815260040180806020018281038252602581526020018061472d6025913960400191505060405180910390fd5b677ce66c50e2840000831115611bd95760405162461bcd60e51b81526004018080602001828103825260358152602001806146666035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b505050506040513d6020811015611c5857600080fd5b5051611c6357600080fd5b505b611c6d614468565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff168152509050828160400151600081518110611d1b57fe5b602002602001018181525050878160600151600081518110611d3957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050338160800151600081518110611d6b57fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d76003611d968461270a565b611dab866402540be40063ffffffff61262d16565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611e09578181015183820152602001611df1565b50505050905090810190601f168015611e365780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611e5757600080fd5b505af1158015611e6b573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b3361100714611f0e5760405162461bcd60e51b815260040180806020018281038252602e81526020018061482d602e913960400191505060405180910390fd5b60208114611f63576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b81141561206b576020820151670de0b6b3a7640000811180159061201257506402540be4008106155b612063576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b6001556120a8565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b336110081461217d5760405162461bcd60e51b81526004018080602001828103825260238152602001806148e96023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b0392909216835260039052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff1661223b576040805162461bcd60e51b8152602060048201526019602482015260008051602061490c833981519152604482015290519081900360640190fd5b336120001461227b5760405162461bcd60e51b815260040180806020018281038252602f8152602001806148ba602f913960400191505060405180910390fd5b60ff8316600314156115a5576115a082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ba992505050565b61100381565b60005460ff1615612324576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b600481565b600581565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561241257828160ff16815181106123e657fe5b01602001516001600160f81b031916156124055760019091019061240a565b612412565b6001016123cb565b5060608160ff166040519080825280601f01601f191660200182016040528015612443576020820181803683370190505b50905060005b8260ff168160ff16101561249f57838160ff168151811061246657fe5b602001015160f81c60f81b828260ff168151811061248057fe5b60200101906001600160f81b031916908160001a905350600101612449565b5095945050505050565b61100481565b60606124b96144b4565b60006124c484612ca7565b915091508061251a576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b600061252583612de6565b905063ffffffff8116156125b9576040808401516020808601516001600160a01b031660009081526002909152918220546125609190612a63565b905061256a6144e9565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff1681525090506125ad81613133565b95505050505050610efe565b50506040805160008152602081019091529150610efe9050565b6000828201838110156117e5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006117e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061320f565b60008261267e575060006117e8565b8282028284828161268b57fe5b04146117e55760405162461bcd60e51b81526004018080602001828103825260218152602001806147cd6021913960400191505060405180910390fd5b60006117e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132b1565b60408051600680825260e08201909252606091829190816020015b606081526020019060019003908161272557505083519091506127479061330b565b8160008151811061275457fe5b602002602001018190525061277583602001516001600160a01b031661331e565b8160018151811061278257fe5b6020026020010181905250600083604001515190506060816040519080825280602002602001820160405280156127cd57816020015b60608152602001906001900390816127b85790505b50905060005b8281101561281a576127fb866040015182815181106127ee57fe5b602002602001015161330b565b82828151811061280757fe5b60209081029190910101526001016127d3565b5061282481613341565b8360028151811061283157fe5b602002602001018190525060608260405190808252806020026020018201604052801561287257816020015b606081526020019060019003908161285d5790505b50905060005b838110156128c8576128a98760600151828151811061289357fe5b60200260200101516001600160a01b031661331e565b8282815181106128b557fe5b6020908102919091010152600101612878565b506128d281613341565b846003815181106128df57fe5b602002602001018190525060608360405190808252806020026020018201604052801561292057816020015b606081526020019060019003908161290b5790505b50905060005b84811015612960576129418860800151828151811061289357fe5b82828151811061294d57fe5b6020908102919091010152600101612926565b5061296a81613341565b8560048151811061297757fe5b60200260200101819052506129998760a0015167ffffffffffffffff1661330b565b856005815181106129a657fe5b60200260200101819052506129ba85613341565b979650505050505050565b6129cd614510565b60006129d8836133cb565b9150915080612a185760405162461bcd60e51b815260040180806020018281038252602481526020018061485b6024913960400191505060405180910390fd5b61161482613596565b60006117e583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250613a1a565b60006008821115612a8c57612a85836007198401600a0a63ffffffff61262d16565b90506117e8565b6117e5836008849003600a0a63ffffffff61266f16565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff161015612b1957828160ff1681518110612aed57fe5b01602001516001600160f81b03191615612b0c57600190910190612b11565b612b19565b600101612ad2565b50600760ff82161015612b3157600092505050610efe565b816005820360ff1681518110612b4357fe5b6020910101516001600160f81b031916602d60f81b14612b6857600092505050610efe565b816001820360ff1681518110612b7a57fe5b6020910101516001600160f81b031916604d60f81b14612b9f57600092505050610efe565b5060019392505050565b612bb1614468565b6000612bbc83613a7c565b9150915080612bfc5760405162461bcd60e51b815260040180806020018281038252602481526020018061461e6024913960400191505060405180910390fd5b612c04614510565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015612c8557612c6285604001518281518110612c5457fe5b602002602001015183613ce0565b85604001518281518110612c7257fe5b6020908102919091010152600101612c34565b506080840151604083015260056060830152612ca082613596565b5050505050565b612caf6144b4565b6000612cb96144b4565b612cc1614547565b612cd2612ccd86613d19565b613d3e565b90506000805b612ce183613d88565b15612dd95780612d0357612cfc612cf784613da9565b613df7565b8452612dd1565b8060011415612d3057612d1d612d1884613da9565b613eae565b6001600160a01b03166020850152612dd1565b8060021415612d4f57612d45612cf784613da9565b6040850152612dd1565b8060031415612d7757612d64612d1884613da9565b6001600160a01b03166060850152612dd1565b8060041415612d9f57612d8c612d1884613da9565b6001600160a01b03166080850152612dd1565b8060051415612dcc57612db4612cf784613da9565b67ffffffffffffffff1660a085015260019150612dd1565b612dd9565b600101612cd8565b5091935090915050915091565b60208101516000906001600160a01b0316612f1d578160a0015167ffffffffffffffff16421115612e1957506001610efe565b8160400151471015612e2d57506003610efe565b606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114612e84576040519150601f19603f3d011682016040523d82523d6000602084013e612e89565b606091505b5050905080612e9c575060049050610efe565b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060009050610efe565b8160a0015167ffffffffffffffff16421115612f3b57506001610efe565b81516020808401516001600160a01b031660009081526003909152604090205414612f6857506002610efe565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015612fb857600080fd5b5086fa158015612fcc573d6000803e3d6000fd5b50505050506040513d6020811015612fe357600080fd5b50516040840151909150811015612ffe575060039050610efe565b600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561306f57600080fd5b5087f1158015613083573d6000803e3d6000fd5b50505050506040513d602081101561309a57600080fd5b505190508015613127577f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5984602001518560600151866040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060009150610efe9050565b5060059150610efe9050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161314e57505083519091506131709061330b565b8160008151811061317d57fe5b6020026020010181905250613195836020015161330b565b816001815181106131a257fe5b60200260200101819052506131c383604001516001600160a01b031661331e565b816002815181106131d057fe5b60200260200101819052506131ee836060015163ffffffff1661330b565b816003815181106131fb57fe5b6020026020010181905250610ed281613341565b6000818361329b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613260578181015183820152602001613248565b50505050905090810190601f16801561328d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816132a757fe5b0495945050505050565b600081848411156133035760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613260578181015183820152602001613248565b505050900390565b60606117e861331983613ec8565b613fae565b60408051600560a21b8318601482015260348101909152606090610ed281613fae565b60608151600014156133625750604080516000815260208101909152610efe565b60608260008151811061337157fe5b602002602001015190506000600190505b83518110156133b2576133a88285838151811061339b57fe5b6020026020010151614000565b9150600101613382565b50610ed26133c5825160c060ff1661407d565b82614000565b6133d3614510565b60006133dd614510565b6133e5614547565b6133f1612ccd86613d19565b90506000805b61340083613d88565b15612dd9578061342657613416612d1884613da9565b6001600160a01b0316845261358e565b80600114156134c757606061344261343d85613da9565b614175565b9050805160405190808252806020026020018201604052801561346f578160200160208202803683370190505b50602086015260005b81518110156134c05761349d82828151811061349057fe5b6020026020010151613df7565b866020015182815181106134ad57fe5b6020908102919091010152600101613478565b505061358e565b80600214156135695760606134de61343d85613da9565b9050805160405190808252806020026020018201604052801561350b578160200160208202803683370190505b50604086015260005b81518110156134c05761353982828151811061352c57fe5b6020026020010151613eae565b8660400151828151811061354957fe5b6001600160a01b0390921660209283029190910190910152600101613514565b8060031415612dcc5761357e612cf784613da9565b63ffffffff166060850152600191505b6001016133f7565b80516001600160a01b03166137c05760005b8160200151518110156137ba576000826040015182815181106135c757fe5b60200260200101516001600160a01b0316612710846020015184815181106135eb57fe5b60209081029190910101516040516000818181858888f193505050503d8060008114613633576040519150601f19603f3d011682016040523d82523d6000602084013e613638565b606091505b50509050806136fb577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061367757fe5b60200260200101518560200151858151811061368f57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16137b1565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061373157fe5b60200260200101518560200151858151811061374957fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016135a8565b50613a17565b60005b816020015151811015613a1557600082600001516001600160a01b031663a9059cbb61c350856040015185815181106137f857fe5b60200260200101518660200151868151811061381057fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561386757600080fd5b5087f115801561387b573d6000803e3d6000fd5b50505050506040513d602081101561389257600080fd5b505190508015613956577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106138d257fe5b6020026020010151856020015185815181106138ea57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1613a0c565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061398c57fe5b6020026020010151856020015185815181106139a457fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016137c3565b505b50565b60008183613a695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613260578181015183820152602001613248565b50828481613a7357fe5b06949350505050565b613a84614468565b6000613a8e614468565b613a96614547565b613aa2612ccd86613d19565b90506000805b613ab183613d88565b15612dd95780613ace57613ac7612cf784613da9565b8452613cd8565b8060011415613af657613ae3612d1884613da9565b6001600160a01b03166020850152613cd8565b8060021415613b85576060613b0d61343d85613da9565b90508051604051908082528060200260200182016040528015613b3a578160200160208202803683370190505b50604086015260005b8151811015613b7e57613b5b82828151811061349057fe5b86604001518281518110613b6b57fe5b6020908102919091010152600101613b43565b5050613cd8565b8060031415613c1a576060613b9c61343d85613da9565b90508051604051908082528060200260200182016040528015613bc9578160200160208202803683370190505b50606086015260005b8151811015613b7e57613bea82828151811061352c57fe5b86606001518281518110613bfa57fe5b6001600160a01b0390921660209283029190910190910152600101613bd2565b8060041415613caf576060613c3161343d85613da9565b90508051604051908082528060200260200182016040528015613c5e578160200160208202803683370190505b50608086015260005b8151811015613b7e57613c7f82828151811061352c57fe5b86608001518281518110613c8f57fe5b6001600160a01b0390921660209283029190910190910152600101613c67565b8060051415612dcc57613cc4612cf784613da9565b67ffffffffffffffff1660a0850152600191505b600101613aa8565b60006008821115613d0257612a85836007198401600a0a63ffffffff61266f16565b6117e5836008849003600a0a63ffffffff61262d16565b613d21614567565b506040805180820190915281518152602082810190820152919050565b613d46614547565b613d4f82614246565b613d5857600080fd5b6000613d678360200151614276565b60208085015160408051808201909152868152920190820152915050919050565b6000613d92614567565b505080518051602091820151919092015191011190565b613db1614567565b613dba82613d88565b613dc357600080fd5b60208201516000613dd3826142d9565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590613e0c57508151602110155b613e1557600080fd5b6000613e248360200151614276565b90508083600001511015613e7f576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015613ea557826020036101000a820491505b50949350505050565b8051600090601514613ebf57600080fd5b6117e882613df7565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416613f0c57506018613f30565b6fffffffffffffffffffffffffffffffff198416613f2c57506010613f30565b5060005b6020811015613f6657818181518110613f4557fe5b01602001516001600160f81b03191615613f5e57613f66565b600101613f30565b60008160200390506060816040519080825280601f01601f191660200182016040528015613f9b576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015613fe05750607f60f81b82600081518110613fce57fe5b01602001516001600160f81b03191611155b15613fec575080610efe565b6117e8613ffe8351608060ff1661407d565b835b6060806040519050835180825260208201818101602087015b81831015614031578051835260209283019201614019565b50855184518101855292509050808201602086015b8183101561405e578051835260209283019201614046565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106140cd576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116141275782840160f81b8160008151811061410957fe5b60200101906001600160f81b031916908160001a90535090506117e8565b606061413285613ec8565b90508381510160370160f81b8260008151811061414b57fe5b60200101906001600160f81b031916908160001a90535061416c8282614000565b95945050505050565b606061418082614246565b61418957600080fd5b60006141948361440c565b90506060816040519080825280602002602001820160405280156141d257816020015b6141bf614567565b8152602001906001900390816141b75790505b50905060006141e48560200151614276565b60208601510190506000805b8481101561423b57614201836142d9565b915060405180604001604052808381526020018481525084828151811061422457fe5b6020908102919091010152918101916001016141f0565b509195945050505050565b805160009061425757506000610efe565b6020820151805160001a9060c0821015612b9f57600092505050610efe565b8051600090811a6080811015614290576000915050610efe565b60b88110806142ab575060c081108015906142ab575060f881105b156142ba576001915050610efe565b60c08110156142ce5760b519019050610efe565b60f519019050610efe565b80516000908190811a60808110156142f45760019150614405565b60b881101561430957607e1981019150614405565b60c081101561438357600060b78203600186019550806020036101000a86510491506001810182019350508083101561437d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614405565b60f88110156143985760be1981019150614405565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614403576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009061441d57506000610efe565b600080905060006144318460200151614276565b602085015185519181019250015b8082101561445f57614450826142d9565b6001909301929091019061443f565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b604051806040016040528061455a614567565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea264697066735822122012cb49df8f867c0c8903152f4f4e8058086f9ead137f1a15b2400e401b8e252f64736f6c63430006040033