[ { "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": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_customGatewayAddress", "type": "address" }, { "internalType": "address", "name": "_routerAddress", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isArbitrumEnabled", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "l2CustomTokenAddress", "type": "address" }, { "internalType": "uint256", "name": "maxSubmissionCostForCustomGateway", "type": "uint256" }, { "internalType": "uint256", "name": "maxSubmissionCostForRouter", "type": "uint256" }, { "internalType": "uint256", "name": "maxGasForCustomGateway", "type": "uint256" }, { "internalType": "uint256", "name": "maxGasForRouter", "type": "uint256" }, { "internalType": "uint256", "name": "gasPriceBid", "type": "uint256" }, { "internalType": "uint256", "name": "valueForGateway", "type": "uint256" }, { "internalType": "uint256", "name": "valueForRouter", "type": "uint256" }, { "internalType": "address", "name": "creditBackAddress", "type": "address" } ], "name": "registerTokenOnL2", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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" } ]
60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801561004357600080fd5b506080516143bb61007b6000396000818161093a015281816109c801528181610e0901528181610e970152610f4701526143bb6000f3fe6080604052600436106101b75760003560e01c80634f1ef286116100ec578063a217fddf1161008a578063d539139311610064578063d53913931461064b578063d547741f14610676578063dd62ed3e1461069f578063fc792d8e146106dc576101b7565b8063a217fddf146105a6578063a457c2d7146105d1578063a9059cbb1461060e576101b7565b80638e5f5ad1116100c65780638e5f5ad1146104ea57806391d148541461051557806395d89b41146105525780639dc29fac1461057d576101b7565b80634f1ef2861461046657806352d1902d1461048257806370a08231146104ad576101b7565b80632f2ff15d116101595780633659cfe6116101335780633659cfe6146103ae57806339509351146103d757806340c10f1914610414578063485cc9551461043d576101b7565b80632f2ff15d14610331578063313ce5671461035a57806336568abe14610385576101b7565b806318160ddd1161019557806318160ddd1461026157806323b872dd1461028c578063248a9ca3146102c9578063282c51f314610306576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063095ea7b314610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612954565b6106f8565b6040516101f0919061299c565b60405180910390f35b34801561020557600080fd5b5061020e610772565b60405161021b9190612a50565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612b06565b610804565b604051610258919061299c565b60405180910390f35b34801561026d57600080fd5b50610276610827565b6040516102839190612b55565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612b70565b610831565b6040516102c0919061299c565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb9190612bf9565b610847565b6040516102fd9190612c35565b60405180910390f35b34801561031257600080fd5b5061031b610867565b6040516103289190612c35565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612c50565b61088b565b005b34801561036657600080fd5b5061036f6108ac565b60405161037c9190612cac565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190612c50565b6108b5565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612cc7565b610938565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612b06565b610ac0565b60405161040b919061299c565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190612b06565b610af7565b005b34801561044957600080fd5b50610464600480360381019061045f9190612cf4565b610b6e565b005b610480600480360381019061047b9190612e69565b610e07565b005b34801561048e57600080fd5b50610497610f43565b6040516104a49190612c35565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190612cc7565b610ffc565b6040516104e19190612b55565b60405180910390f35b3480156104f657600080fd5b506104ff61100e565b60405161050c9190612cac565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612c50565b611067565b604051610549919061299c565b60405180910390f35b34801561055e57600080fd5b506105676110d2565b6040516105749190612a50565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190612b06565b611164565b005b3480156105b257600080fd5b506105bb6111db565b6040516105c89190612c35565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190612b06565b6111e2565b604051610605919061299c565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612b06565b611259565b604051610642919061299c565b60405180910390f35b34801561065757600080fd5b5061066061127c565b60405161066d9190612c35565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190612c50565b6112a0565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190612cf4565b6112c1565b6040516106d39190612b55565b60405180910390f35b6106f660048036038101906106f19190612ec5565b611348565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061076b575061076a82611523565b5b9050919050565b60606036805461078190612fbe565b80601f01602080910402602001604051908101604052809291908181526020018280546107ad90612fbe565b80156107fa5780601f106107cf576101008083540402835291602001916107fa565b820191906000526020600020905b8154815290600101906020018083116107dd57829003601f168201915b5050505050905090565b60008061080f61158d565b905061081c818585611595565b600191505092915050565b6000603554905090565b600061083e84848461175e565b90509392505050565b600060fb6000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b61089482610847565b61089d8161178d565b6108a783836117a1565b505050565b60006012905090565b6108bd61158d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092190613061565b60405180910390fd5b6109348282611882565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16036109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd906130f3565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a05611964565b73ffffffffffffffffffffffffffffffffffffffff1614610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290613185565b60405180910390fd5b610a64816119bb565b610abd81600067ffffffffffffffff811115610a8357610a82612d3e565b5b6040519080825280601f01601f191660200182016040528015610ab55781602001600182028036833780820191505090505b506000611a0a565b50565b600080610acb61158d565b9050610aec818585610add85896112c1565b610ae791906131d4565b611595565b600191505092915050565b610b217f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611067565b610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5790613276565b60405180910390fd5b610b6a8282611b78565b5050565b60008060019054906101000a900460ff16159050808015610b9f5750600160008054906101000a900460ff1660ff16105b80610bcc5750610bae30611ccf565b158015610bcb5750600160008054906101000a900460ff1660ff16145b5b610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0290613308565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c48576001600060016101000a81548160ff0219169083151502179055505b610cbc6040518060400160405280601081526020017f546865205374616e6461726420555344000000000000000000000000000000008152506040518060400160405280600481526020017f5553447300000000000000000000000000000000000000000000000000000000815250611cf2565b610cc4611d4f565b610cee7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336117a1565b610d187f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848336117a1565b610d256000801b336117a1565b8261012d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508161012e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610e025760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610df9919061336d565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c906130f3565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ed4611964565b73ffffffffffffffffffffffffffffffffffffffff1614610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190613185565b60405180910390fd5b610f33826119bb565b610f3f82826001611a0a565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca906133fa565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b600061100782611da0565b9050919050565b600061012e60149054906101000a900460ff16611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105790613466565b60405180910390fd5b60b1905090565b600060fb600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060603780546110e190612fbe565b80601f016020809104026020016040519081016040528092919081815260200182805461110d90612fbe565b801561115a5780601f1061112f5761010080835404028352916020019161115a565b820191906000526020600020905b81548152906001019060200180831161113d57829003601f168201915b5050505050905090565b61118e7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833611067565b6111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c4906134d2565b60405180910390fd5b6111d78282611de9565b5050565b6000801b81565b6000806111ed61158d565b905060006111fb82866112c1565b905083811015611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790613564565b60405180910390fd5b61124d8286868403611595565b60019250505092915050565b60008061126461158d565b9050611271818585611fb8565b600191505092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6112a982610847565b6112b28161178d565b6112bc8383611882565b505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000801b6113558161178d565b600061012e60149054906101000a900460ff169050600161012e60146101000a81548160ff02191690831515021790555061012d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca346d4a868d8b8a8f896040518763ffffffff1660e01b81526004016113eb959493929190613593565b60206040518083038185885af1158015611409573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061142e91906135fb565b5061012e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d67b72d8561012d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a8e896040518763ffffffff1660e01b81526004016114b7959493929190613593565b60206040518083038185885af11580156114d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114fa91906135fb565b508061012e60146101000a81548160ff0219169083151502179055505050505050505050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb9061369a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a9061372c565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117519190612b55565b60405180910390a3505050565b60008061176961158d565b9050611776858285612231565b611781858585611fb8565b60019150509392505050565b61179e8161179961158d565b6122bd565b50565b6117ab8282611067565b61187e57600160fb600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061182361158d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61188c8282611067565b1561196057600060fb600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061190561158d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006119927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119c86000801b33611067565b611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90613798565b60405180910390fd5b50565b611a367f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b61234c565b60000160009054906101000a900460ff1615611a5a57611a5583612356565b611b73565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ac257506040513d601f19601f82011682018060405250810190611abf91906137cd565b60015b611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af89061386c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d906138fe565b60405180910390fd5b50611b7283838361240f565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde9061396a565b60405180910390fd5b611bf36000838361243b565b8060356000828254611c0591906131d4565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb79190612b55565b60405180910390a3611ccb60008383612440565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d38906139fc565b60405180910390fd5b611d4b8282612445565b5050565b600060019054906101000a900460ff16611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d95906139fc565b60405180910390fd5b565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f90613a8e565b60405180910390fd5b611e648260008361243b565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613b20565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603560008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f9f9190612b55565b60405180910390a3611fb383600084612440565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90613bb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208d90613c44565b60405180910390fd5b6120a183838361243b565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211f90613cd6565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122189190612b55565b60405180910390a361222b848484612440565b50505050565b600061223d84846112c1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122b757818110156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090613d42565b60405180910390fd5b6122b68484848403611595565b5b50505050565b6122c78282611067565b61233e576122d4816124b8565b6122e28360001c60206124e5565b6040516020016122f3929190613e36565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123359190612a50565b60405180910390fd5b5050565b6000819050919050565b6000819050919050565b61235f81611ccf565b61239e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239590613ee2565b60405180910390fd5b806123cb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61241883612721565b6000825111806124255750805b15612436576124348383612770565b505b505050565b505050565b505050565b600060019054906101000a900460ff16612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248b906139fc565b60405180910390fd5b81603690816124a391906140a4565b5080603790816124b391906140a4565b505050565b60606124de8273ffffffffffffffffffffffffffffffffffffffff16601460ff166124e5565b9050919050565b6060600060028360026124f89190614176565b61250291906131d4565b67ffffffffffffffff81111561251b5761251a612d3e565b5b6040519080825280601f01601f19166020018201604052801561254d5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612585576125846141d0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106125e9576125e86141d0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026126299190614176565b61263391906131d4565b90505b60018111156126d3577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612675576126746141d0565b5b1a60f81b82828151811061268c5761268b6141d0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806126cc906141ff565b9050612636565b5060008414612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e90614274565b60405180910390fd5b8091505092915050565b61272a81612356565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060612795838360405180606001604052806027815260200161435f6027913961279d565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516127c791906142db565b600060405180830381855af49150503d8060008114612802576040519150601f19603f3d011682016040523d82523d6000602084013e612807565b606091505b509150915061281886838387612823565b925050509392505050565b6060831561288557600083510361287d5761283d85611ccf565b61287c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128739061433e565b60405180910390fd5b5b829050612890565b61288f8383612898565b5b949350505050565b6000825111156128ab5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128df9190612a50565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612931816128fc565b811461293c57600080fd5b50565b60008135905061294e81612928565b92915050565b60006020828403121561296a576129696128f2565b5b60006129788482850161293f565b91505092915050565b60008115159050919050565b61299681612981565b82525050565b60006020820190506129b1600083018461298d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129f15780820151818401526020810190506129d6565b83811115612a00576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a22826129b7565b612a2c81856129c2565b9350612a3c8185602086016129d3565b612a4581612a06565b840191505092915050565b60006020820190508181036000830152612a6a8184612a17565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9d82612a72565b9050919050565b612aad81612a92565b8114612ab857600080fd5b50565b600081359050612aca81612aa4565b92915050565b6000819050919050565b612ae381612ad0565b8114612aee57600080fd5b50565b600081359050612b0081612ada565b92915050565b60008060408385031215612b1d57612b1c6128f2565b5b6000612b2b85828601612abb565b9250506020612b3c85828601612af1565b9150509250929050565b612b4f81612ad0565b82525050565b6000602082019050612b6a6000830184612b46565b92915050565b600080600060608486031215612b8957612b886128f2565b5b6000612b9786828701612abb565b9350506020612ba886828701612abb565b9250506040612bb986828701612af1565b9150509250925092565b6000819050919050565b612bd681612bc3565b8114612be157600080fd5b50565b600081359050612bf381612bcd565b92915050565b600060208284031215612c0f57612c0e6128f2565b5b6000612c1d84828501612be4565b91505092915050565b612c2f81612bc3565b82525050565b6000602082019050612c4a6000830184612c26565b92915050565b60008060408385031215612c6757612c666128f2565b5b6000612c7585828601612be4565b9250506020612c8685828601612abb565b9150509250929050565b600060ff82169050919050565b612ca681612c90565b82525050565b6000602082019050612cc16000830184612c9d565b92915050565b600060208284031215612cdd57612cdc6128f2565b5b6000612ceb84828501612abb565b91505092915050565b60008060408385031215612d0b57612d0a6128f2565b5b6000612d1985828601612abb565b9250506020612d2a85828601612abb565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d7682612a06565b810181811067ffffffffffffffff82111715612d9557612d94612d3e565b5b80604052505050565b6000612da86128e8565b9050612db48282612d6d565b919050565b600067ffffffffffffffff821115612dd457612dd3612d3e565b5b612ddd82612a06565b9050602081019050919050565b82818337600083830152505050565b6000612e0c612e0784612db9565b612d9e565b905082815260208101848484011115612e2857612e27612d39565b5b612e33848285612dea565b509392505050565b600082601f830112612e5057612e4f612d34565b5b8135612e60848260208601612df9565b91505092915050565b60008060408385031215612e8057612e7f6128f2565b5b6000612e8e85828601612abb565b925050602083013567ffffffffffffffff811115612eaf57612eae6128f7565b5b612ebb85828601612e3b565b9150509250929050565b60008060008060008060008060006101208a8c031215612ee857612ee76128f2565b5b6000612ef68c828d01612abb565b9950506020612f078c828d01612af1565b9850506040612f188c828d01612af1565b9750506060612f298c828d01612af1565b9650506080612f3a8c828d01612af1565b95505060a0612f4b8c828d01612af1565b94505060c0612f5c8c828d01612af1565b93505060e0612f6d8c828d01612af1565b925050610100612f7f8c828d01612abb565b9150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fd657607f821691505b602082108103612fe957612fe8612f8f565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061304b602f836129c2565b915061305682612fef565b604082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b60006130dd602c836129c2565b91506130e882613081565b604082019050919050565b6000602082019050818103600083015261310c816130d0565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b600061316f602c836129c2565b915061317a82613113565b604082019050919050565b6000602082019050818103600083015261319e81613162565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131df82612ad0565b91506131ea83612ad0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561321f5761321e6131a5565b5b828201905092915050565b7f696e76616c69642d6d696e746572000000000000000000000000000000000000600082015250565b6000613260600e836129c2565b915061326b8261322a565b602082019050919050565b6000602082019050818103600083015261328f81613253565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006132f2602e836129c2565b91506132fd82613296565b604082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b6000819050919050565b6000819050919050565b600061335761335261334d84613328565b613332565b612c90565b9050919050565b6133678161333c565b82525050565b6000602082019050613382600083018461335e565b92915050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b60006133e46038836129c2565b91506133ef82613388565b604082019050919050565b60006020820190508181036000830152613413816133d7565b9050919050565b7f4e4f545f45585045435445445f43414c4c000000000000000000000000000000600082015250565b60006134506011836129c2565b915061345b8261341a565b602082019050919050565b6000602082019050818103600083015261347f81613443565b9050919050565b7f696e76616c69642d6275726e6572000000000000000000000000000000000000600082015250565b60006134bc600e836129c2565b91506134c782613486565b602082019050919050565b600060208201905081810360008301526134eb816134af565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061354e6025836129c2565b9150613559826134f2565b604082019050919050565b6000602082019050818103600083015261357d81613541565b9050919050565b61358d81612a92565b82525050565b600060a0820190506135a86000830188613584565b6135b56020830187612b46565b6135c26040830186612b46565b6135cf6060830185612b46565b6135dc6080830184613584565b9695505050505050565b6000815190506135f581612ada565b92915050565b600060208284031215613611576136106128f2565b5b600061361f848285016135e6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136846024836129c2565b915061368f82613628565b604082019050919050565b600060208201905081810360008301526136b381613677565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006137166022836129c2565b9150613721826136ba565b604082019050919050565b6000602082019050818103600083015261374581613709565b9050919050565b7f696e76616c69642d61646d696e00000000000000000000000000000000000000600082015250565b6000613782600d836129c2565b915061378d8261374c565b602082019050919050565b600060208201905081810360008301526137b181613775565b9050919050565b6000815190506137c781612bcd565b92915050565b6000602082840312156137e3576137e26128f2565b5b60006137f1848285016137b8565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000613856602e836129c2565b9150613861826137fa565b604082019050919050565b6000602082019050818103600083015261388581613849565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b60006138e86029836129c2565b91506138f38261388c565b604082019050919050565b60006020820190508181036000830152613917816138db565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613954601f836129c2565b915061395f8261391e565b602082019050919050565b6000602082019050818103600083015261398381613947565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006139e6602b836129c2565b91506139f18261398a565b604082019050919050565b60006020820190508181036000830152613a15816139d9565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a786021836129c2565b9150613a8382613a1c565b604082019050919050565b60006020820190508181036000830152613aa781613a6b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b0a6022836129c2565b9150613b1582613aae565b604082019050919050565b60006020820190508181036000830152613b3981613afd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b9c6025836129c2565b9150613ba782613b40565b604082019050919050565b60006020820190508181036000830152613bcb81613b8f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c2e6023836129c2565b9150613c3982613bd2565b604082019050919050565b60006020820190508181036000830152613c5d81613c21565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613cc06026836129c2565b9150613ccb82613c64565b604082019050919050565b60006020820190508181036000830152613cef81613cb3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613d2c601d836129c2565b9150613d3782613cf6565b602082019050919050565b60006020820190508181036000830152613d5b81613d1f565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613da3601783613d62565b9150613dae82613d6d565b601782019050919050565b6000613dc4826129b7565b613dce8185613d62565b9350613dde8185602086016129d3565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613e20601183613d62565b9150613e2b82613dea565b601182019050919050565b6000613e4182613d96565b9150613e4d8285613db9565b9150613e5882613e13565b9150613e648284613db9565b91508190509392505050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000613ecc602d836129c2565b9150613ed782613e70565b604082019050919050565b60006020820190508181036000830152613efb81613ebf565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613f647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613f27565b613f6e8683613f27565b95508019841693508086168417925050509392505050565b6000613fa1613f9c613f9784612ad0565b613332565b612ad0565b9050919050565b6000819050919050565b613fbb83613f86565b613fcf613fc782613fa8565b848454613f34565b825550505050565b600090565b613fe4613fd7565b613fef818484613fb2565b505050565b5b8181101561401357614008600082613fdc565b600181019050613ff5565b5050565b601f8211156140585761402981613f02565b61403284613f17565b81016020851015614041578190505b61405561404d85613f17565b830182613ff4565b50505b505050565b600082821c905092915050565b600061407b6000198460080261405d565b1980831691505092915050565b6000614094838361406a565b9150826002028217905092915050565b6140ad826129b7565b67ffffffffffffffff8111156140c6576140c5612d3e565b5b6140d08254612fbe565b6140db828285614017565b600060209050601f83116001811461410e57600084156140fc578287015190505b6141068582614088565b86555061416e565b601f19841661411c86613f02565b60005b828110156141445784890151825560018201915060208501945060208101905061411f565b86831015614161578489015161415d601f89168261406a565b8355505b6001600288020188555050505b505050505050565b600061418182612ad0565b915061418c83612ad0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141c5576141c46131a5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061420a82612ad0565b91506000820361421d5761421c6131a5565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061425e6020836129c2565b915061426982614228565b602082019050919050565b6000602082019050818103600083015261428d81614251565b9050919050565b600081519050919050565b600081905092915050565b60006142b582614294565b6142bf818561429f565b93506142cf8185602086016129d3565b80840191505092915050565b60006142e782846142aa565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000614328601d836129c2565b9150614333826142f2565b602082019050919050565b600060208201905081810360008301526143578161431b565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220de3d39023aa45a2fc2a7be52add86221ef9e868561b408fd41e6a36eeede524b64736f6c634300080f0033