60a06040523480156200001157600080fd5b506040516200591938038062005919833981810160405260208110156200003757600080fd5b5051604080518082018252601781527f536164646c652043726f73732d417373657420537761700000000000000000006020828101919091528251808401909352600f83526e0536164646c6553796e74685377617608c1b9083015290620000a66301ffc9a760e01b6200012d565b8151620000bb9060069060208501906200025f565b508051620000d19060079060208401906200025f565b50620000e46380ac58cd60e01b6200012d565b620000f6635b5e139f60e01b6200012d565b6200010863780e9d6360e01b6200012d565b50506001600160601b0319606082901b1660805262000126620001b2565b50620002fb565b6001600160e01b031980821614156200018d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b604080516321f8a72160e01b81526822bc31b430b733b2b960b91b60048201529051734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef2916321f8a721916024808301926020929190829003018186803b1580156200021057600080fd5b505afa15801562000225573d6000803e3d6000fd5b505050506040513d60208110156200023c57600080fd5b5051600a80546001600160a01b0319166001600160a01b03909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002a257805160ff1916838001178555620002d2565b82800160010185558215620002d2579182015b82811115620002d2578251825591602001919060010190620002b5565b50620002e0929150620002e4565b5090565b5b80821115620002e05760008155600101620002e5565b60805160601c6155f16200032860003980610fca528061124f528061248b528061346c52506155f16000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80637d3913ca11610191578063b6bd8dcb116100e3578063d488743711610097578063ea4e9eb611610071578063ea4e9eb614610a4e578063ee1e709014610a8f578063fce3ee4114610abe576102f4565b8063d488743714610a10578063e504e7aa14610a18578063e985e9c514610a20576102f4565b8063c05b1bd4116100c8578063c05b1bd414610965578063c87b56dd146109c2578063cbc3c495146109df576102f4565b8063b6bd8dcb14610897578063b88d4fde1461089f576102f4565b8063892e196d11610145578063a042d45f1161011f578063a042d45f146107c1578063a22cb4651461082d578063b04a74ab1461085b576102f4565b8063892e196d1461078b57806395d89b4114610793578063a000a45d1461079b576102f4565b80638501259c116101765780638501259c146106fd578063859c9e6d1461071a57806387911b0d14610755576102f4565b80637d3913ca146106bd5780637fabc495146106da576102f4565b80632f745c591161024a5780634f6ccce7116101fe5780636352211e116101d85780636352211e146106725780636c0360eb1461068f57806370a0823114610697576102f4565b80634f6ccce7146105fa5780635af0feb3146106175780636141db901461064c576102f4565b806342842e0e1161022f57806342842e0e14610599578063441a3e70146105cf5780634d12fca4146105f2576102f4565b80632f745c591461056557806333a581d214610591576102f4565b80630aa07ba3116102ac578063218a89ad11610286578063218a89ad1461051f57806323b872dd1461052757806326cdb6d81461055d576102f4565b80630aa07ba31461048457806318160ddd146104d757806318f0595c146104df576102f4565b8063081812fc116102dd578063081812fc146103c9578063095ea7b3146104025780630a82660614610430576102f4565b806301ffc9a7146102f957806306fdde031461034c575b600080fd5b6103386004803603602081101561030f57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610ac6565b604080519115158252519081900360200190f35b610354610b01565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038e578181015183820152602001610376565b50505050905090810190601f1680156103bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e6600480360360208110156103df57600080fd5b5035610b97565b604080516001600160a01b039092168252519081900360200190f35b61042e6004803603604081101561041857600080fd5b506001600160a01b038135169060200135610bf9565b005b61046b6004803603608081101561044657600080fd5b506001600160a01b038135169060208101359060ff6040820135169060600135610cd4565b6040805192835260208301919091528051918290030190f35b6104c5600480360360a081101561049a57600080fd5b506001600160a01b038135169060208101359060ff6040820135169060608101359060800135610f23565b60408051918252519081900360200190f35b6104c5611217565b6104fc600480360360208110156104f557600080fd5b5035611228565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103e661124d565b61042e6004803603606081101561053d57600080fd5b506001600160a01b03813581169160208101359091169060400135611271565b6104c56112c8565b6104c56004803603604081101561057b57600080fd5b506001600160a01b0381351690602001356112ec565b6104c5611317565b61042e600480360360608110156105af57600080fd5b506001600160a01b0381358116916020810135909116906040013561131d565b61042e600480360360408110156105e557600080fd5b5080359060200135611338565b6103e6611691565b6104c56004803603602081101561061057600080fd5b50356116a0565b61042e6004803603606081101561062d57600080fd5b506001600160a01b038135169060ff60208201351690604001356116b6565b6104c56004803603602081101561066257600080fd5b50356001600160a01b0316611b38565b6103e66004803603602081101561068857600080fd5b5035611b90565b610354611bb8565b6104c5600480360360208110156106ad57600080fd5b50356001600160a01b0316611c19565b6103e6600480360360208110156106d357600080fd5b5035611c81565b6104c5600480360360408110156106f057600080fd5b5080359060200135611d94565b61042e6004803603602081101561071357600080fd5b5035611f06565b6104c56004803603608081101561073057600080fd5b506001600160a01b038135169060ff6020820135169060408101359060600135612238565b6104c5600480360360c081101561076b57600080fd5b5060ff6040820135811690606083013516608083013560a0840135612430565b61042e612822565b610354612911565b6103e6600480360360208110156107b157600080fd5b50356001600160a01b0316612972565b6107de600480360360208110156107d757600080fd5b50356129d1565b604051808660038111156107ee57fe5b8152602001858152602001846001600160a01b03168152602001838152602001826001600160a01b031681526020019550505050505060405180910390f35b61042e6004803603604081101561084357600080fd5b506001600160a01b0381351690602001351515612ca5565b6108816004803603602081101561087157600080fd5b50356001600160a01b0316612daa565b6040805160ff9092168252519081900360200190f35b6104c5612e0c565b61042e600480360360808110156108b557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156108f057600080fd5b82018360208201111561090257600080fd5b8035906020019184600183028401116401000000008311171561092457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612e12945050505050565b6109826004803603602081101561097b57600080fd5b5035612e70565b60405180856001600160a01b03168152602001848152602001836001600160a01b031681526020018260ff16815260200194505050505060405180910390f35b610354600480360360208110156109d857600080fd5b5035612eb9565b61046b600480360360a08110156109f557600080fd5b5060ff6040820135811690606083013516608083013561313c565b6108816133c6565b6103e66133cb565b61033860048036036040811015610a3657600080fd5b506001600160a01b03813581169160200135166133e3565b6104c5600480360360a0811015610a6457600080fd5b506001600160a01b038135169060ff6020820135169060408101359060608101359060800135613411565b61042e60048036036080811015610aa557600080fd5b5080359060208101359060408101359060600135613801565b6104c5613c81565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b8d5780601f10610b6257610100808354040283529160200191610b8d565b820191906000526020600020905b815481529060010190602001808311610b7057829003601f168201915b5050505050905090565b6000610ba282613ca5565b610bdd5760405162461bcd60e51b815260040180806020018281038252602c81526020018061543f602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610c0482611b90565b9050806001600160a01b0316836001600160a01b03161415610c575760405162461bcd60e51b81526004018080602001828103825260218152602001806154e76021913960400191505060405180910390fd5b806001600160a01b0316610c69613cb2565b6001600160a01b03161480610c8a5750610c8a81610c85613cb2565b6133e3565b610cc55760405162461bcd60e51b815260040180806020018281038252603881526020018061536f6038913960400191505060405180910390fd5b610ccf8383613cb6565b505050565b6000806000734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef26001600160a01b03166321f8a7217f45786368616e67655261746573000000000000000000000000000000000000006040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d6020811015610d7b57600080fd5b505190506000610d8a88612daa565b90506000610d9789611b38565b905080881415610dee576040805162461bcd60e51b815260206004820152600f60248201527f757365206e6f726d616c20737761700000000000000000000000000000000000604482015290519081900360640190fd5b6000836001600160a01b031663654a60ac8a89856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d6020811015610e6e57600080fd5b5051604080517fa95b089f00000000000000000000000000000000000000000000000000000000815260ff80871660048301528b16602482015260448101839052905191925082916001600160a01b038d169163a95b089f916064808301926020929190829003018186803b158015610ee657600080fd5b505afa158015610efa573d6000803e3d6000fd5b505050506040513d6020811015610f1057600080fd5b5051909b909a5098505050505050505050565b600082610f77576040805162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b6000610f8287611b38565b905080861415610fc35760405162461bcd60e51b81526004018080602001828103825260228152602001806152fb6022913960400191505060405180910390fd5b6000610fee7f0000000000000000000000000000000000000000000000000000000000000000613d3c565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561102b57600080fd5b505af115801561103f573d6000803e3d6000fd5b5050505060006110836040518060800160405280846001600160a01b031681526020018581526020018b6001600160a01b031681526020018960ff16815250613df7565b6000818152600e60205260409020805460ff1916600217905590506110a83382613efe565b60006110b389611c81565b90506110ca6001600160a01b03821633308a61402c565b6110de6001600160a01b03821684896140b4565b85836001600160a01b031663775723ca8b8a886040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050602060405180830381600087803b15801561113557600080fd5b505af1158015611149573d6000803e3d6000fd5b505050506040513d602081101561115f57600080fd5b505110156111b4576040805162461bcd60e51b815260206004820181905260248201527f6d696e4d656469756d53796e7468416d6f756e74206e6f742072656163686564604482015290519081900360640190fd5b604080516001600160a01b038c168152602081018b905280820189905260ff8a1660608201529051839133917fa21c38f889cd13904eb94938d8d6589dfe0b0cfbb34a86b456aa93d80359355f9181900360800190a35098975050505050505050565b60006112236002614134565b905090565b600b60205260009081526040902080546001909101546001600160a01b039091169082565b7f000000000000000000000000000000000000000000000000000000000000000081565b61128261127c613cb2565b8261413f565b6112bd5760405162461bcd60e51b81526004018080602001828103825260318152602001806155086031913960400191505060405180910390fd5b610ccf8383836141db565b7f45786368616e676552617465730000000000000000000000000000000000000081565b6001600160a01b038216600090815260016020526040812061130e9083614327565b90505b92915050565b60001981565b610ccf83838360405180602001604052806000815250612e12565b600061134383611b90565b90506001600160a01b03811633146113a2576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60016000848152600e602052604090205460ff1660038111156113c157fe5b11611413576040805162461bcd60e51b815260206004820152600e60248201527f696e76616c6964206974656d4964000000000000000000000000000000000000604482015290519081900360640190fd5b61141b615112565b506000838152600c6020908152604091829020825160808101845281546001600160a01b039081168083526001840154948301859052600290930154908116948201949094527401000000000000000000000000000000000000000090930460ff16606084015261148b91614333565b600061149a8260200151611c81565b90506000816001600160a01b03166370a0823184600001516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156114ef57600080fd5b505afa158015611503573d6000803e3d6000fd5b505050506040513d602081101561151957600080fd5b505185106115a65761152a866143cc565b506000858152600c6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001808201859055600290910180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055600e909252909120805460ff191690555b8251604080517f934785b70000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015287811660248301526044820189905284151560648301529151919092169163934785b791608480830192600092919082900301818387803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b5050604080516001600160a01b0386168152602081018990528415158183015290518993503392507f21e5f2f8aec336e654683c109188a5e47a3728916cb4ea35bc2e973a13d3aed99181900360600190a3505050505050565b600a546001600160a01b031681565b6000806116ae600284614499565b509392505050565b60ff8281161061170d576040805162461bcd60e51b815260206004820152601260248201527f696e64657820697320746f6f206c617267650000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166000908152600f60205260409020805460ff161561177c576040805162461bcd60e51b815260206004820152601260248201527f506f6f6c20616c72656164792061646465640000000000000000000000000000604482015290519081900360640190fd5b6000846001600160a01b03166382b86600856040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b1580156117c557600080fd5b505afa1580156117d9573d6000803e3d6000fd5b505050506040513d60208110156117ef57600080fd5b5051604080517fd4b83992000000000000000000000000000000000000000000000000000000008152905191925084916001600160a01b0384169163d4b83992916004808301926020929190829003018186803b15801561184f57600080fd5b505afa158015611863573d6000803e3d6000fd5b505050506040513d602081101561187957600080fd5b5051604080517fdbd06c8500000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163dbd06c8591600480820192602092909190829003018186803b1580156118d657600080fd5b505afa1580156118ea573d6000803e3d6000fd5b505050506040513d602081101561190057600080fd5b505114611954576040805162461bcd60e51b815260206004820152601a60248201527f63757272656e63794b657920646f6573206e6f74206d61746368000000000000604482015290519081900360640190fd5b815460ff1916600185810160ff16919091177fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03841602178355820183905560006040519080825280602002602001820160405280156119c9578160200160208202803683370190505b5080516119e0916002850191602090910190615139565b5060005b60ff8181161015611ae05760008560ff168260ff161415611a06575081611a7f565b866001600160a01b03166382b86600836040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611a4d57600080fd5b505afa925050508015611a7257506040513d6020811015611a6d57600080fd5b505160015b611a7c5750611ae0565b90505b600284018054600181018255600091825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155611ad790886000196144b5565b506001016119e4565b506040805160ff86168152602081018590526001600160a01b03838116828401529151918716917f833c463701786828b452ddb35a89c3f0b5e679ca63d31801d8da6e7e8054c8f09181900360600190a25050505050565b6001600160a01b0381166000908152600f6020526040812060010154806113115760405162461bcd60e51b81526004018080602001828103825260228152602001806152b56022913960400191505060405180910390fd5b6000611311826040518060600160405280602981526020016153d1602991396002919061460f565b60098054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b8d5780601f10610b6257610100808354040283529160200191610b8d565b60006001600160a01b038216611c605760405162461bcd60e51b815260040180806020018281038252602a8152602001806153a7602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061131190614134565b6000734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef26001600160a01b03166351456061836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611cdb57600080fd5b505afa158015611cef573d6000803e3d6000fd5b505050506040513d6020811015611d0557600080fd5b5051604080517fec55688900000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163ec55688991600480820192602092909190829003018186803b158015611d6257600080fd5b505afa158015611d76573d6000803e3d6000fd5b505050506040513d6020811015611d8c57600080fd5b505192915050565b600060016000848152600e602052604090205460ff166003811115611db557fe5b11611e07576040805162461bcd60e51b815260206004820152600e60248201527f696e76616c6964206974656d4964000000000000000000000000000000000000604482015290519081900360640190fd5b611e0f615112565b506000838152600c6020908152604091829020825160808101845281546001600160a01b0390811682526001830154938201939093526002909101549182169281018390527401000000000000000000000000000000000000000090910460ff1660608201529063a95b089f611e8482612daa565b8360600151866040518463ffffffff1660e01b8152600401808460ff1681526020018360ff168152602001828152602001935050505060206040518083038186803b158015611ed257600080fd5b505afa158015611ee6573d6000803e3d6000fd5b505050506040513d6020811015611efc57600080fd5b5051949350505050565b6000611f1182611b90565b90506001600160a01b0381163314611f70576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60016000838152600e602052604090205460ff166003811115611f8f57fe5b14611fe1576040805162461bcd60e51b815260206004820152600e60248201527f696e76616c6964206974656d4964000000000000000000000000000000000000604482015290519081900360640190fd5b611fe96151b6565b506000828152600b6020908152604091829020825180840190935280546001600160a01b031680845260019091015491830182905261202791614333565b60006120368260200151611c81565b9050612041846143cc565b6000848152600c6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810184905560020180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055600e8252808320805460ff19169055845181517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529151908516926370a082319260248082019391829003018186803b15801561211557600080fd5b505afa158015612129573d6000803e3d6000fd5b505050506040513d602081101561213f57600080fd5b50518351604080517f934785b70000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015288811660248301526044820185905260016064830152915193945091169163934785b79160848082019260009290919082900301818387803b1580156121bf57600080fd5b505af11580156121d3573d6000803e3d6000fd5b5050604080516001600160a01b0386168082526020820186905281830152606081018590526001608082015290518893503392507f5044c8cd0fcfe21244aecba3091a52a10187be167694fb3b69dc02cd4ee0f6379181900360a00190a35050505050565b60008061224486612daa565b90506000866001600160a01b031663a95b089f8784876040518463ffffffff1660e01b8152600401808460ff1681526020018360ff168152602001828152602001935050505060206040518083038186803b1580156122a257600080fd5b505afa1580156122b6573d6000803e3d6000fd5b505050506040513d60208110156122cc57600080fd5b5051905060006122db88611b38565b90506000734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef26001600160a01b03166321f8a7217f45786368616e67655261746573000000000000000000000000000000000000006040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561235757600080fd5b505afa15801561236b573d6000803e3d6000fd5b505050506040513d602081101561238157600080fd5b5051604080517f654a60ac0000000000000000000000000000000000000000000000000000000081526004810185905260248101869052604481018a905290519192506001600160a01b0383169163654a60ac91606480820192602092909190829003018186803b1580156123f557600080fd5b505afa158015612409573d6000803e3d6000fd5b505050506040513d602081101561241f57600080fd5b50519450505050505b949350505050565b600082612484576040805162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b60006124af7f0000000000000000000000000000000000000000000000000000000000000000613d3c565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156124ec57600080fd5b505af1158015612500573d6000803e3d6000fd5b5050505060006125298860016002811061251657fe5b60200201356001600160a01b0316611b38565b905060006125856040518060800160405280856001600160a01b031681526020018481526020018b60016002811061255d57fe5b60200201356001600160a01b03166001600160a01b031681526020018960ff16815250613df7565b6000818152600e60205260409020805460ff1916600317905590506125aa3382613efe565b6001600160a01b038935166000818152600f60205260408120600201805460ff8c169081106125d557fe5b6000918252602090912001546001600160a01b031690506125f88133308b61402c565b506000816001600160a01b031663916955868b61261485612daa565b8b6000426040518663ffffffff1660e01b8152600401808660ff1681526020018560ff16815260200184815260200183815260200182815260200195505050505050602060405180830381600087803b15801561267057600080fd5b505af1158015612684573d6000803e3d6000fd5b505050506040513d602081101561269a57600080fd5b505190506126bc85826126ac85612972565b6001600160a01b031691906140b4565b86856001600160a01b031663775723ca6126d585611b38565b84886040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050602060405180830381600087803b15801561271b57600080fd5b505af115801561272f573d6000803e3d6000fd5b505050506040513d602081101561274557600080fd5b5051101561279a576040805162461bcd60e51b815260206004820181905260248201527f6d696e4d656469756d53796e7468416d6f756e74206e6f742072656163686564604482015290519081900360640190fd5b82336001600160a01b03167f9cb72339b25a9ccd60f0fa8704e7f991199f02bf9c80300dc82a75305fe04f028d8d8c8e604051808560026020028082843760008382015260ff968716601f909101601f19169092019182525060208101939093525090911660408083019190915251908190036060019150a350909998505050505050505050565b604080517f21f8a7210000000000000000000000000000000000000000000000000000000081527f45786368616e676572000000000000000000000000000000000000000000000060048201529051734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef2916321f8a721916024808301926020929190829003018186803b1580156128ac57600080fd5b505afa1580156128c0573d6000803e3d6000fd5b505050506040513d60208110156128d657600080fd5b5051600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b60078054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b8d5780601f10610b6257610100808354040283529160200191610b8d565b6001600160a01b038082166000908152600f6020526040812054909161010090910416806113115760405162461bcd60e51b815260040180806020018281038252602381526020018061541c6023913960400191505060405180910390fd5b6000818152600e602052604081205460ff1690808080808560038111156129f457fe5b1415612a47576040805162461bcd60e51b815260206004820152600e60248201527f696e76616c6964206974656d4964000000000000000000000000000000000000604482015290519081900360640190fd5b6000806001876003811115612a5857fe5b1415612a955750506000868152600b6020526040902080546001909101546001600160a01b0390911690612a8b81611c81565b9450849250612b69565b612a9d615112565b5050506000868152600c6020908152604091829020825160808101845281546001600160a01b039081168083526001840154948301859052600290930154908116948201949094527401000000000000000000000000000000000000000090930460ff16606084015291612b1082611c81565b9550600f600082604001516001600160a01b03166001600160a01b03168152602001908152602001600020600201816060015160ff1681548110612b5057fe5b6000918252602090912001546001600160a01b03169350505b600a54604080517f059c29ec0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529151919092169163059c29ec916044808301926020929190829003018186803b158015612bd657600080fd5b505afa158015612bea573d6000803e3d6000fd5b505050506040513d6020811015612c0057600080fd5b5051604080517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529151929850908716916370a0823191602480820192602092909190829003018186803b158015612c6857600080fd5b505afa158015612c7c573d6000803e3d6000fd5b505050506040513d6020811015612c9257600080fd5b5051969895975093959491935090915050565b612cad613cb2565b6001600160a01b0316826001600160a01b03161415612d13576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000612d20613cb2565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155612d64613cb2565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b0381166000908152600f602052604081205460ff1680612e025760405162461bcd60e51b81526004018080602001828103825260248152602001806154c36024913960400191505060405180910390fd5b6000190192915050565b600d5481565b612e23612e1d613cb2565b8361413f565b612e5e5760405162461bcd60e51b81526004018080602001828103825260318152602001806155086031913960400191505060405180910390fd5b612e6a84848484614626565b50505050565b600c602052600090815260409020805460018201546002909201546001600160a01b03918216929181169074010000000000000000000000000000000000000000900460ff1684565b6060612ec482613ca5565b612eff5760405162461bcd60e51b815260040180806020018281038252602f815260200180615494602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015612f945780601f10612f6957610100808354040283529160200191612f94565b820191906000526020600020905b815481529060010190602001808311612f7757829003601f168201915b505050505090506060612fa5611bb8565b9050805160001415612fb957509050610afc565b81511561307a5780826040516020018083805190602001908083835b60208310612ff45780518252601f199092019160209182019101612fd5565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b6020831061303c5780518252601f19909201916020918201910161301d565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050610afc565b8061308485614678565b6040516020018083805190602001908083835b602083106130b65780518252601f199092019160209182019101613097565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106130fe5780518252601f1990920191602091820191016130df565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6000806000734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef26001600160a01b03166321f8a7217f45786368616e67655261746573000000000000000000000000000000000000006040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156131b957600080fd5b505afa1580156131cd573d6000803e3d6000fd5b505050506040513d60208110156131e357600080fd5b5051905060006001600160a01b0388351663a95b089f886132138b855b60200201356001600160a01b0316612daa565b886040518463ffffffff1660e01b8152600401808460ff1681526020018360ff168152602001828152602001935050505060206040518083038186803b15801561325c57600080fd5b505afa158015613270573d6000803e3d6000fd5b505050506040513d602081101561328657600080fd5b5051905060006001600160a01b03831663654a60ac6132a58b84612516565b846132b18d6001612516565b6040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b1580156132f357600080fd5b505afa158015613307573d6000803e3d6000fd5b505050506040513d602081101561331d57600080fd5b50519050806001600160a01b0360208b01351663a95b089f6133408c6001613200565b8a856040518463ffffffff1660e01b8152600401808460ff1681526020018360ff168152602001828152602001935050505060206040518083038186803b15801561338a57600080fd5b505afa15801561339e573d6000803e3d6000fd5b505050506040513d60208110156133b457600080fd5b5051909a909950975050505050505050565b60ff81565b734e3b31eb0e5cb73641ee1e65e7dcefe520ba3ef281565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600082613465576040805162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b60006134907f0000000000000000000000000000000000000000000000000000000000000000613d3c565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b50505050600061350d6040518060400160405280846001600160a01b0316815260200188815250614787565b6000818152600e60205260409020805460ff1916600117905590506135323382613efe565b6001600160a01b0388166000908152600f60205260408120600201805460ff8a1690811061355c57fe5b6000918252602090912001546001600160a01b0316905061357f8133308961402c565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516001600160a01b038316916370a08231916024808301926020929190829003018186803b1580156135de57600080fd5b505afa1580156135f2573d6000803e3d6000fd5b505050506040513d602081101561360857600080fd5b5051955060006001600160a01b038a1663916955868a6136278d612daa565b8a6000426040518663ffffffff1660e01b8152600401808660ff1681526020018560ff16815260200184815260200183815260200182815260200195505050505050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b505190506136bf84826126ac8d612972565b85846001600160a01b031663775723ca6136d88d611b38565b848c6040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050602060405180830381600087803b15801561371e57600080fd5b505af1158015613732573d6000803e3d6000fd5b505050506040513d602081101561374857600080fd5b5051101561379d576040805162461bcd60e51b815260206004820152601560248201527f6d696e416d6f756e74206e6f7420726561636865640000000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038c16815260ff8b166020820152808201899052606081018a90529051849133917f305dca8d8466ac672b08bd22cbb17d3a12b15601bbd232a13ed2f8e85cde0fa99181900360800190a3509098975050505050505050565b82613853576040805162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b600061385e85611b90565b9050336001600160a01b038216146138bd576040805162461bcd60e51b815260206004820152600f60248201527f6d757374206f776e206974656d49640000000000000000000000000000000000604482015290519081900360640190fd5b60016000868152600e602052604090205460ff1660038111156138dc57fe5b1161392e576040805162461bcd60e51b815260206004820152600e60248201527f696e76616c6964206974656d4964000000000000000000000000000000000000604482015290519081900360640190fd5b613936615112565b506000858152600c6020908152604091829020825160808101845281546001600160a01b039081168083526001840154948301859052600290930154908116948201949094527401000000000000000000000000000000000000000090930460ff1660608401526139a691614333565b60006139b58260200151611c81565b90506000816001600160a01b03166370a0823184600001516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a0a57600080fd5b505afa158015613a1e573d6000803e3d6000fd5b505050506040513d6020811015613a3457600080fd5b50518710613ac157613a45886143cc565b506000878152600c6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001808201859055600290910180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055600e909252909120805460ff191690555b60008084600001516001600160a01b0316635a3f4b23866040015186613aea8960400151612daa565b60608a0151604080517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b039586166004820152938516602485015260ff928316604485015291166064830152608482018e905260a482018d905260c482018c9052918a1660e4820152815161010480830193928290030181600087803b158015613b8257600080fd5b505af1158015613b96573d6000803e3d6000fd5b505050506040513d6040811015613bac57600080fd5b50805160209091015190925090508215613c185784600001516001600160a01b03166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bff57600080fd5b505af1158015613c13573d6000803e3d6000fd5b505050505b604080516001600160a01b038681168252602082018c905284168183015260608101839052841515608082015290518b9133917f5044c8cd0fcfe21244aecba3091a52a10187be167694fb3b69dc02cd4ee0f6379181900360a00190a350505050505050505050565b7f45786368616e676572000000000000000000000000000000000000000000000081565b6000611311600283614828565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190613d0382611b90565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09150506001600160a01b038116610afc576040805162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fd5b6000600019600d5410613e3b5760405162461bcd60e51b81526004018080602001828103825260238152602001806155996023913960400191505060405180910390fd5b50600d80546000908152600c6020908152604091829020845181546001600160a01b039182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178355928601516001808401919091559386015160029092018054606088015160ff1674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff94909316941693909317919091161790558154908101909155919050565b6001600160a01b038216613f59576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613f6281613ca5565b15613fb4576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613fc060008383610ccf565b6001600160a01b0382166000908152600160205260409020613fe29082614834565b50613fef60028284614840565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052612e6a908590614856565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ccf908490614856565b600061131182614907565b600061414a82613ca5565b6141855760405162461bcd60e51b815260040180806020018281038252602c815260200180615343602c913960400191505060405180910390fd5b600061419083611b90565b9050806001600160a01b0316846001600160a01b031614806141cb5750836001600160a01b03166141c084610b97565b6001600160a01b0316145b80612428575061242881856133e3565b826001600160a01b03166141ee82611b90565b6001600160a01b0316146142335760405162461bcd60e51b815260040180806020018281038252602981526020018061546b6029913960400191505060405180910390fd5b6001600160a01b0382166142785760405162461bcd60e51b81526004018080602001828103825260248152602001806152d76024913960400191505060405180910390fd5b614283838383610ccf565b61428e600082613cb6565b6001600160a01b03831660009081526001602052604090206142b0908261490b565b506001600160a01b03821660009081526001602052604090206142d39082614834565b506142e060028284614840565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061130e8383614917565b600a54604080517f1b16802c0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905291519190921691631b16802c9160448083019260609291908290030181600087803b1580156143a257600080fd5b505af11580156143b6573d6000803e3d6000fd5b505050506040513d6060811015612e6a57600080fd5b60006143d782611b90565b90506143e581600084610ccf565b6143f0600083613cb6565b600082815260086020526040902054600260001961010060018416150201909116041561442e57600082815260086020526040812061442e916151cd565b6001600160a01b0381166000908152600160205260409020614450908361490b565b5061445c60028361497b565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008080806144a88686614987565b9097909650945050505050565b8015806145545750604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561452657600080fd5b505afa15801561453a573d6000803e3d6000fd5b505050506040513d602081101561455057600080fd5b5051155b61458f5760405162461bcd60e51b81526004018080602001828103825260368152602001806155636036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052610ccf908490614856565b600061461c848484614a02565b90505b9392505050565b6146318484846141db565b61463d84848484614acc565b612e6a5760405162461bcd60e51b81526004018080602001828103825260328152602001806152836032913960400191505060405180910390fd5b6060816146b9575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610afc565b8160005b81156146d157600101600a820491506146bd565b60608167ffffffffffffffff811180156146ea57600080fd5b506040519080825280601f01601f191660200182016040528015614715576020820181803683370190505b50859350905060001982015b831561477e57600a840660300160f81b8282806001900393508151811061474457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350614721565b50949350505050565b6000600019600d54106147cb5760405162461bcd60e51b81526004018080602001828103825260238152602001806155996023913960400191505060405180910390fd5b50600d80546000908152600b60209081526040909120835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781559201516001928301558054918201905590565b600061130e8383614ca8565b600061130e8383614cc0565b600061461c84846001600160a01b038516614d0a565b60606148ab826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614da19092919063ffffffff16565b805190915015610ccf578080602001905160208110156148ca57600080fd5b5051610ccf5760405162461bcd60e51b815260040180806020018281038252602a815260200180615539602a913960400191505060405180910390fd5b5490565b600061130e8383614db0565b815460009082106149595760405162461bcd60e51b81526004018080602001828103825260228152602001806152616022913960400191505060405180910390fd5b82600001828154811061496857fe5b9060005260206000200154905092915050565b600061130e8383614e76565b8154600090819083106149cb5760405162461bcd60e51b81526004018080602001828103825260228152602001806153fa6022913960400191505060405180910390fd5b60008460000184815481106149dc57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281614a9d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a62578181015183820152602001614a4a565b50505050905090810190601f168015614a8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110614ab057fe5b9060005260206000209060020201600101549150509392505050565b6000614ae0846001600160a01b0316614f4a565b614aec57506001612428565b6060614c3d7f150b7a0200000000000000000000000000000000000000000000000000000000614b1a613cb2565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614b81578181015183820152602001614b69565b50505050905090810190601f168015614bae5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001615283603291396001600160a01b0388169190614da1565b90506000818060200190516020811015614c5657600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b6000614ccc8383614ca8565b614d0257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611311565b506000611311565b600082815260018401602052604081205480614d6f57505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561461f565b82856000016001830381548110614d8257fe5b906000526020600020906002020160010181905550600091505061461f565b606061461c8484600085614f50565b60008181526001830160205260408120548015614e6c5783546000198083019190810190600090879083908110614de357fe5b9060005260206000200154905080876000018481548110614e0057fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614e3057fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611311565b6000915050611311565b60008181526001830160205260408120548015614e6c5783546000198083019190810190600090879083908110614ea957fe5b9060005260206000209060020201905080876000018481548110614ec957fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614f0857fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506113119350505050565b3b151590565b606082471015614f915760405162461bcd60e51b815260040180806020018281038252602681526020018061531d6026913960400191505060405180910390fd5b614f9a85614f4a565b614feb576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061502a5780518252601f19909201916020918201910161500b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461508c576040519150601f19603f3d011682016040523d82523d6000602084013e615091565b606091505b50915091506150a18282866150ac565b979650505050505050565b606083156150bb57508161461f565b8251156150cb5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315614a62578181015183820152602001614a4a565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8280548282559060005260206000209081019282156151a6579160200282015b828111156151a657825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190615159565b506151b2929150615214565b5090565b604080518082019091526000808252602082015290565b50805460018160011615610100020316600290046000825580601f106151f35750615211565b601f016020900490600052602060002090810190615211919061524b565b50565b5b808211156151b25780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101615215565b5b808211156151b2576000815560010161524c56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e74657273796e7468206b6579206e6f7420666f756e6420666f7220676976656e20706f6f6c4552433732313a207472616e7366657220746f20746865207a65726f206164647265737373796e746820697320737570706f7274656420766961206e6f726d616c2073776170416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e647373796e74682061646472206e6f7420666f756e6420666f7220676976656e20706f6f6c4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e73796e746820696e646578206e6f7420666f756e6420666f7220676976656e20706f6f6c4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636570656e64696e6753776170734c656e6774682072656163686564206d61782073697a65a26469706673582212200c470228fcd7f605e29d2ebe6cb2642e97e8e7343c711b5457593e7d4fdef68864736f6c634300060c0033000000000000000000000000df815ea6b066ac9f3107d8863a6c19aa2a5d24d3