60a06040523480156200001157600080fd5b506040516200459b3803806200459b8339810160408190526200003491620002b0565b6040518060400160405280600981526020016833554c4c204e6f646560b81b8152506040518060400160405280600981526020016833554c4c204e4f444560b81b8152508160009080519060200190620000909291906200020a565b508051620000a69060019060208401906200020a565b50620000b89150600090503362000165565b620000e47f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a6813362000165565b600880546001600160a01b038089166001600160a01b0319928316179092556009805488841690831617905542600c819055600d8190556080879052600a8690556305f5e100600f819055601055606460115560138054938616939092169290921790556200015590829062000320565b601555506200039b945050505050565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff16620002065760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001c53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b828054620002189062000345565b90600052602060002090601f0160209004810192826200023c576000855562000287565b82601f106200025757805160ff191683800117855562000287565b8280016001018555821562000287579182015b82811115620002875782518255916020019190600101906200026a565b506200029592915062000299565b5090565b5b808211156200029557600081556001016200029a565b60008060008060008060c08789031215620002c9578182fd5b8651620002d68162000382565b6020880151909650620002e98162000382565b80955050604087015193506060870151925060808701516200030b8162000382565b8092505060a087015190509295509295509295565b600082198211156200034057634e487b7160e01b81526011600452602481fd5b500190565b600181811c908216806200035a57607f821691505b602082108114156200037c57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03811681146200039857600080fd5b50565b6080516141a5620003f660003960008181610ec501528181610f020152818161104c015281816110e4015281816112a1015281816113390152818161140f01528181611bf101528181611c2a0152611c6801526141a56000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c806360a92954116101de578063c86458d11161010f578063e6a72acf116100ad578063f41a951d1161007c578063f41a951d146107cb578063f7c618c1146107d3578063f8077fae146107f3578063fa7e2616146107fc57600080fd5b8063e6a72acf1461075d578063e985e9c514610770578063ede1b36c146107b9578063f1fec2b8146107c257600080fd5b8063d547741f116100e9578063d547741f14610727578063d547cfb71461073a578063ddeae03314610742578063e3161ddd1461075557600080fd5b8063c86458d1146106e1578063c87b56dd146106f4578063d4c5d2c61461070757600080fd5b806395d89b411161017c578063a217fddf11610156578063a217fddf146106ab578063a22cb465146106b3578063b88d4fde146106c6578063bc178628146106d957600080fd5b806395d89b4114610688578063960dfc7b146106905780639f2375371461069857600080fd5b806384449a9d116101b857806384449a9d1461060657806386c594181461060f57806391d148541461062f5780639456fbcc1461067557600080fd5b806360a92954146105d75780636352211e146105e057806370a08231146105f357600080fd5b80632f2ff15d116102b85780633e7e2137116102565780634d155561116102305780634d155561146105b757806350431ce4146105bf5780635820d2ce146105c75780635bfa62da146105cf57600080fd5b80633e7e21371461058957806340c10f191461059157806342842e0e146105a457600080fd5b8063349b595411610292578063349b59541461053e578063355274ea1461056557806336568abe1461056e578063372500ab1461058157600080fd5b80632f2ff15d1461050557806330176e131461051857806331d7a2621461052b57600080fd5b8063201743a71161032557806323b872dd116102ff57806323b872dd146104b45780632412bdb8146104c7578063248a9ca3146104da5780632afaaeab146104fd57600080fd5b8063201743a71461047857806321776d2514610481578063218fe3a5146104a157600080fd5b8063081812fc11610361578063081812fc14610401578063095ea7b31461043957806318160ddd1461044e5780631fb1cc2f1461046557600080fd5b806301ffc9a71461038857806303995b2d146103b057806306fdde03146103ec575b600080fd5b61039b610396366004613ceb565b610805565b60405190151581526020015b60405180910390f35b6103d76103be366004613b2a565b6007602052600090815260409020805460019091015482565b604080519283526020830191909152016103a7565b6103f4610816565b6040516103a79190613ef2565b61041461040f366004613caf565b6108a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a7565b61044c610447366004613c68565b610987565b005b610457600e5481565b6040519081526020016103a7565b61044c610473366004613caf565b610b14565b610457600f5481565b61045761048f366004613b2a565b60146020526000908152604090205481565b61044c6104af366004613b2a565b610b45565b61044c6104c2366004613b7e565b610b99565b61044c6104d5366004613b2a565b610c3a565b6104576104e8366004613caf565b60009081526006602052604090206001015490565b610457606481565b61044c610513366004613cc7565b610e4f565b61044c610526366004613d35565b610e75565b610457610539366004613b2a565b610e94565b6104577f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a68181565b61045761c35081565b61044c61057c366004613cc7565b610f8e565b61044c61103d565b610457611048565b61044c61059f366004613c68565b611134565b61044c6105b2366004613b7e565b611171565b610457601981565b61044c61118c565b601054610457565b61044c611274565b61045760115481565b6104146105ee366004613caf565b611441565b610457610601366004613b2a565b6114f3565b610457600a5481565b6009546104149073ffffffffffffffffffffffffffffffffffffffff1681565b61039b61063d366004613cc7565b600091825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61044c610683366004613d23565b6115c1565b6103f4611696565b601154610457565b61044c6106a6366004613caf565b6116a5565b610457600081565b61044c6106c1366004613c3b565b61178d565b61044c6106d4366004613bbe565b611798565b61044c61183a565b61044c6106ef366004613caf565b611856565b6103f4610702366004613caf565b611887565b6013546104149073ffffffffffffffffffffffffffffffffffffffff1681565b61044c610735366004613cc7565b611996565b6103f46119bc565b61044c610750366004613b2a565b611a4a565b61044c611bef565b61045761076b366004613caf565b611d14565b61039b61077e366004613b46565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b610457600d5481565b61045760105481565b600f54610457565b6008546104149073ffffffffffffffffffffffffffffffffffffffff1681565b610457600c5481565b610457600b5481565b600061081082611e37565b92915050565b60606000805461082590613fe6565b80601f016020809104026020016040519081016040528092919081815260200182805461085190613fe6565b801561089e5780601f106108735761010080835404028352916020019161089e565b820191906000526020600020905b81548152906001019060200180831161088157829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1661095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061099282611441565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610955565b3373ffffffffffffffffffffffffffffffffffffffff82161480610a795750610a79813361077e565b610b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610955565b610b0f8383611e8d565b505050565b7f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a681610b3f8133611f2d565b50601155565b6000610b518133611f2d565b50600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610ba33382611fff565b610c2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610955565b610b0f83838361216b565b4260155411610ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d6967726174696f6e3a204973206e6f772074696d656c6f636b6564000000006044820152606401610955565b73ffffffffffffffffffffffffffffffffffffffff8181166000818152601460205260408082205460135491517f70a082310000000000000000000000000000000000000000000000000000000081526004810194909452919391929116906370a082319060240160206040518083038186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5d9190613d7b565b610d679190613f6e565b905060008111610df9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4d6967726174696f6e3a20596f7520646f6e2774206861766520616e79206e6f60448201527f646573206f6e207468652070726576696f757320636f6e7472616374000000006064820152608401610955565b6019811115610e06575060195b73ffffffffffffffffffffffffffffffffffffffff821660009081526014602052604081208054839290610e3b908490613f05565b90915550610e4b905082826123dd565b5050565b600082815260066020526040902060010154610e6b8133611f2d565b610b0f83836126a5565b6000610e818133611f2d565b8151610b0f9060129060208501906139fd565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120600b54600c54610eea907f000000000000000000000000000000000000000000000000000000000000000090613f05565b42118015610ef95750600e5415155b15610f6a5760007f0000000000000000000000000000000000000000000000000000000000000000600c5442610f2f9190613f6e565b610f399190613f1d565b90506000600a5482610f4b9190613f31565b9050600e5481610f5b9190613f1d565b610f659084613f05565b925050505b60018201548254610f7c908390613f31565b610f869190613f6e565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81163314611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610955565b610e4b8282612799565b61104633611a4a565b565b60007f0000000000000000000000000000000000000000000000000000000000000000600d546110789190613f05565b42116110e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f207265776172647320636c61696d61626c652079657400000000000000006044820152606401610955565b60007f0000000000000000000000000000000000000000000000000000000000000000600d54426111119190613f6e565b61111b9190613f1d565b90506000600a548261112d9190613f31565b9392505050565b600061113f82611d14565b6009549091506111679073ffffffffffffffffffffffffffffffffffffffff16333084612854565b610b0f83836123dd565b610b0f83838360405180602001604052806000815250611798565b7f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a6816111b78133611f2d565b60405147906000908190339084908381818185875af1925050503d80600081146111fd576040519150601f19603f3d011682016040523d82523d6000602084013e611202565b606091505b50915091508161126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4661696c656420746f2073656e640000000000000000000000000000000000006044820152606401610955565b50505050565b7f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a68161129f8133611f2d565b7f0000000000000000000000000000000000000000000000000000000000000000600d546112cd9190613f05565b4211611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f207265776172647320636c61696d61626c652079657400000000000000006044820152606401610955565b60007f0000000000000000000000000000000000000000000000000000000000000000600d54426113669190613f6e565b6113709190613f1d565b90506000600a54826113829190613f31565b6008546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905291925073ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b1580156113f557600080fd5b505af1158015611409573d6000803e3d6000fd5b505050507f0000000000000000000000000000000000000000000000000000000000000000826114399190613f31565b600d55505050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610955565b600073ffffffffffffffffffffffffffffffffffffffff8216611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610955565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b7f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a6816115ec8133611f2d565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610b0f908490849073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b15801561165957600080fd5b505afa15801561166d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116919190613d7b565b612930565b60606001805461082590613fe6565b7f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a6816116d08133611f2d565b6010548211611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f5365744e6f646550726963653a204e6577206e6f6465207072696365206d757360448201527f742062652067726561746572207468616e207468652063757272656e74206e6f60648201527f6465207072696365000000000000000000000000000000000000000000000000608482015260a401610955565b50601055565b610e4b338383612986565b6117a23383611fff565b61182e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610955565b61126e84848484612ab4565b60006118468133611f2d565b61184e611bef565b506000600a55565b7f940d6b1946ff1d2b5a9f1909219c3c81a370804b5ba0f91ec0828c99a2e6a6816118818133611f2d565b50600f55565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610955565b6000611945612b57565b90506000815111611965576040518060200160405280600081525061112d565b8061196f84612b66565b604051602001611980929190613df9565b6040516020818303038152906040529392505050565b6000828152600660205260409020600101546119b28133611f2d565b610b0f8383612799565b601280546119c990613fe6565b80601f01602080910402602001604051908101604052809291908181526020018280546119f590613fe6565b8015611a425780601f10611a1757610100808354040283529160200191611a42565b820191906000526020600020905b815481529060010190602001808311611a2557829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090208054611ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f436c61696d526577617264733a206e6f206e6f646573000000000000000000006044820152606401610955565b611adf611bef565b600b548154600091611af091613f31565b90506000826001015482611b049190613f6e565b600184018390556008546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018490529293509116906340c10f1990604401600060405180830381600087803b158015611b8157600080fd5b505af1158015611b95573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff88168152602081018590527ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe935001905060405180910390a150505050565b7f0000000000000000000000000000000000000000000000000000000000000000600c54611c1d9190613f05565b421015611c2657565b60007f0000000000000000000000000000000000000000000000000000000000000000600c5442611c579190613f6e565b611c619190613f1d565b9050611c8d7f000000000000000000000000000000000000000000000000000000000000000082613f31565b600c54611c9a9190613f05565b600c55600e54611ca75750565b6000600a5482611cb79190613f31565b9050600e5481611cc79190613f1d565b600b54611cd49190613f05565b600b5560408051838152602081018390527f7fa9647ec1cc14e3822b46d05a2b9d4e019bde8875c0088c46b6503d71bf1722910160405180910390a15050565b60006019821115611da7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4d696e7420616d6f756e7420657863656564732073696e676c65207472616e7360448201527f616374696f6e206c696d697400000000000000000000000000000000000000006064820152608401610955565b600082600e54611db79190613f05565b9050601154811115611e2457600060115482611dd39190613f6e565b905060006010548286611de69190613f6e565b611df09190613f31565b90506000600f54601054611e049190613f05565b611e0e9084613f31565b9050611e1a8282613f05565b9450505050611e31565b60105461112d9084613f31565b50919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610810575061081082612ce6565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190611ee782611441565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e4b57611f858173ffffffffffffffffffffffffffffffffffffffff166014612dc9565b611f90836020612dc9565b604051602001611fa1929190613e28565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261095591600401613ef2565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166120b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610955565b60006120bb83611441565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061212a57508373ffffffffffffffffffffffffffffffffffffffff16612112846108a8565b73ffffffffffffffffffffffffffffffffffffffff16145b80610f86575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff16610f86565b8273ffffffffffffffffffffffffffffffffffffffff1661218b82611441565b73ffffffffffffffffffffffffffffffffffffffff161461222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610955565b73ffffffffffffffffffffffffffffffffffffffff82166122d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610955565b6122db8383836130cf565b6122e6600082611e8d565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080546001929061231c908490613f6e565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290612357908490613f05565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008111612447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43616e6e6f74206d696e742030206e6f646573000000000000000000000000006044820152606401610955565b60198111156124d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4d696e7420616d6f756e7420657863656564732073696e676c65207472616e7360448201527f616374696f6e206c696d697400000000000000000000000000000000000000006064820152608401610955565b600081600e546124e89190613f05565b600e5490915061c35082111561255a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f43616e6e6f74206d696e74206d6f7265207468616e20636170000000000000006044820152606401610955565b612562611bef565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020526040812080549091859183919061259b908490613f05565b9250508190555083600e60008282546125b49190613f05565b9091555050600b546125c69085613f31565b8160010160008282546125d99190613f05565b9091555050601154600e54111561261d576064601160008282546125fd9190613f05565b9091555050600f5460108054600090612617908490613f05565b90915550505b60005b8481101561264d5761263b866126368386613f05565b61326f565b8061264581614034565b915050612620565b506040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018690527f6eea83a83bae90a827069ef7db70c1b5cd045f8373251e3d967716f982dc7a4891015b60405180910390a15050505050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e4b57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561273b3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610e4b57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261126e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613289565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b0f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016128ae565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610955565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612abf84848461216b565b612acb84848484613395565b61126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610955565b60606012805461082590613fe6565b606081612ba657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612bd05780612bba81614034565b9150612bc99050600a83613f1d565b9150612baa565b60008167ffffffffffffffff811115612c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612c3c576020820181803683370190505b5090505b8415610f8657612c51600183613f6e565b9150612c5e600a8661406d565b612c69906030613f05565b60f81b818381518110612ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612cdf600a86613f1d565b9450612c40565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612d7957507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061081057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610810565b60606000612dd8836002613f31565b612de3906002613f05565b67ffffffffffffffff811115612e22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612e4c576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612eaa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612f70846002613f31565b612f7b906001613f05565b90505b6001811115613066577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612fe3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110613020577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361305f81613fb1565b9050612f7e565b50831561112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610955565b73ffffffffffffffffffffffffffffffffffffffff831615610b0f5761c350600e54101561317f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f57652068617665206e6f742079657420736f6c6420616c6c206e6f6465732c2060448201527f74656c6c20796f757220667269656e64732100000000000000000000000000006064820152608401610955565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260076020526040808220928516825290206131b561103d565b81548260006131c383613fb1565b9190505550600b548260010160008282546131de9190613f6e565b909155506131ec9050611bef565b80548160006131fa83614034565b9190505550600b548160010160008282546132159190613f05565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff8088168252861660208201529081018490527ffba1d7e008cc17116697aa6fc085994c4f96eb5d3ad084c939f8673c3471f45a90606001612696565b610e4b828260405180602001604052806000815250613594565b60006132eb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166136379092919063ffffffff16565b805190915015610b0f57808060200190518101906133099190613c93565b610b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610955565b600073ffffffffffffffffffffffffffffffffffffffff84163b15613589576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061340c903390899088908890600401613ea9565b602060405180830381600087803b15801561342657600080fd5b505af1925050508015613474575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261347191810190613d07565b60015b61353e573d8080156134a2576040519150601f19603f3d011682016040523d82523d6000602084013e6134a7565b606091505b508051613536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610955565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610f86565b506001949350505050565b61359e8383613646565b6135ab6000848484613395565b610b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610955565b6060610f868484600085613814565b73ffffffffffffffffffffffffffffffffffffffff82166136c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610955565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff161561374f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610955565b61375b600083836130cf565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290613791908490613f05565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060824710156138a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610955565b73ffffffffffffffffffffffffffffffffffffffff85163b613924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610955565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161394d9190613ddd565b60006040518083038185875af1925050503d806000811461398a576040519150601f19603f3d011682016040523d82523d6000602084013e61398f565b606091505b509150915061399f8282866139aa565b979650505050505050565b606083156139b957508161112d565b8251156139c95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109559190613ef2565b828054613a0990613fe6565b90600052602060002090601f016020900481019282613a2b5760008555613a71565b82601f10613a4457805160ff1916838001178555613a71565b82800160010185558215613a71579182015b82811115613a71578251825591602001919060010190613a56565b50613a7d929150613a81565b5090565b5b80821115613a7d5760008155600101613a82565b600067ffffffffffffffff80841115613ab157613ab16140df565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613af757613af76140df565b81604052809350858152868686011115613b1057600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613b3b578081fd5b813561112d8161410e565b60008060408385031215613b58578081fd5b8235613b638161410e565b91506020830135613b738161410e565b809150509250929050565b600080600060608486031215613b92578081fd5b8335613b9d8161410e565b92506020840135613bad8161410e565b929592945050506040919091013590565b60008060008060808587031215613bd3578081fd5b8435613bde8161410e565b93506020850135613bee8161410e565b925060408501359150606085013567ffffffffffffffff811115613c10578182fd5b8501601f81018713613c20578182fd5b613c2f87823560208401613a96565b91505092959194509250565b60008060408385031215613c4d578182fd5b8235613c588161410e565b91506020830135613b7381614133565b60008060408385031215613c7a578182fd5b8235613c858161410e565b946020939093013593505050565b600060208284031215613ca4578081fd5b815161112d81614133565b600060208284031215613cc0578081fd5b5035919050565b60008060408385031215613cd9578182fd5b823591506020830135613b738161410e565b600060208284031215613cfc578081fd5b813561112d81614141565b600060208284031215613d18578081fd5b815161112d81614141565b60008060408385031215613b58578182fd5b600060208284031215613d46578081fd5b813567ffffffffffffffff811115613d5c578182fd5b8201601f81018413613d6c578182fd5b610f8684823560208401613a96565b600060208284031215613d8c578081fd5b5051919050565b60008151808452613dab816020860160208601613f85565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251613def818460208701613f85565b9190910192915050565b60008351613e0b818460208801613f85565b835190830190613e1f818360208801613f85565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613e60816017850160208801613f85565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613e9d816028840160208801613f85565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152613ee86080830184613d93565b9695505050505050565b60208152600061112d6020830184613d93565b60008219821115613f1857613f18614081565b500190565b600082613f2c57613f2c6140b0565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f6957613f69614081565b500290565b600082821015613f8057613f80614081565b500390565b60005b83811015613fa0578181015183820152602001613f88565b8381111561126e5750506000910152565b600081613fc057613fc0614081565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600181811c90821680613ffa57607f821691505b60208210811415611e31577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561406657614066614081565b5060010190565b60008261407c5761407c6140b0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461413057600080fd5b50565b801515811461413057600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461413057600080fdfea2646970667358221220793bace7ed518da079f017a039a3fb492e3ea59ce84f0a983d9a687901ef30e864736f6c634300080400330000000000000000000000009e15f045e44ea5a80e7fbc193a35287712cc5569000000000000000000000000a7d7079b0fead91f3e65f86e8915cb59c1a4c6640000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000003c6eebd77469009c8000000000000000000000000000469ad839fca8890226653a4673a50f51df4dfd360000000000000000000000000000000000000000000000000000000000069780