0x60a06040523060805234801561001457600080fd5b50608051614b7f61005a600039600081816106c30152818161070c01528181610c8501528181610cc501528181610d3d0152818161186201526118a20152614b7f6000f3fe6080604052600436106101cd5760003560e01c806388afe1b5116100f7578063afd9a56511610095578063f0f4426011610064578063f0f4426014610538578063f14faf6f14610558578063f5e95acb14610578578063f953cec71461059857600080fd5b8063afd9a565146104aa578063c0857ba0146104d8578063d76276d4146104f8578063de9b771f1461051857600080fd5b80638b2b3d8b116100d15780638b2b3d8b14610434578063972c492814610449578063ab518e6e14610469578063aea4e49e1461048a57600080fd5b806388afe1b5146103dd57806389610a09146103fd57806389cf32041461041d57600080fd5b806352d1902d1161016f5780636930fd2a1161013e5780636930fd2a146103685780636cbe29ba146103885780637c5264b4146103a85780638456cb59146103c857600080fd5b806352d1902d146102c65780635c975abb146102db578063607f2d42146102ff57806361d027b31461032f57600080fd5b8063379607f5116101ab578063379607f5146102505780633f4ba83a146102705780634f1ef2861461028557806350e9aab11461029857600080fd5b80630e387de6146101d257806335322f37146102195780633659cfe614610230575b600080fd5b3480156101de57600080fd5b506102067f8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b03681565b6040519081526020015b60405180910390f35b34801561022557600080fd5b5061022e6105b8565b005b34801561023c57600080fd5b5061022e61024b366004614169565b6106a1565b34801561025c57600080fd5b5061022e61026b366004614186565b610778565b34801561027c57600080fd5b5061022e610c3e565b61022e610293366004614262565b610c7b565b3480156102a457600080fd5b506102066102b3366004614186565b6101086020526000908152604090205481565b3480156102d257600080fd5b50610206610d30565b3480156102e757600080fd5b5060975460ff165b6040519015158152602001610210565b34801561030b57600080fd5b506102ef61031a366004614186565b60fe6020526000908152604090205460ff1681565b34801561033b57600080fd5b5061010654610350906001600160a01b031681565b6040516001600160a01b039091168152602001610210565b34801561037457600080fd5b5061022e610383366004614186565b610de3565b34801561039457600080fd5b5061022e6103a33660046142b1565b610f18565b3480156103b457600080fd5b5061022e6103c33660046142d3565b611179565b3480156103d457600080fd5b5061022e6111e5565b3480156103e957600080fd5b506102066103f83660046142b1565b61121f565b34801561040957600080fd5b506102ef610418366004614186565b611251565b34801561042957600080fd5b5061020661010a5481565b34801561044057600080fd5b506102ef6112ea565b34801561045557600080fd5b5060fd54610350906001600160a01b031681565b34801561047557600080fd5b5061010554610350906001600160a01b031681565b34801561049657600080fd5b5061022e6104a5366004614169565b6114e4565b3480156104b657600080fd5b506102066104c5366004614186565b6101096020526000908152604090205481565b3480156104e457600080fd5b5060fc54610350906001600160a01b031681565b34801561050457600080fd5b5061022e610513366004614169565b611572565b34801561052457600080fd5b5060fb54610350906001600160a01b031681565b34801561054457600080fd5b5061022e610553366004614169565b6115f9565b34801561056457600080fd5b5061022e610573366004614186565b611686565b34801561058457600080fd5b5061022e610593366004614344565b611798565b3480156105a457600080fd5b5061022e6105b3366004614400565b611e42565b610103546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190614434565b61010154604051632e1a7d4d60e01b8152600481018390529192506000916001600160a01b0390911690632e1a7d4d906024016020604051808303816000875af1158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190614434565b505050565b600080516020614b2a8339815191526106b981611e58565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361070a5760405162461bcd60e51b81526004016107019061444d565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661073c611f05565b6001600160a01b0316146107625760405162461bcd60e51b815260040161070190614499565b61076b82611f21565b61077482611f7f565b5050565b610780611fbf565b600260c954036107a25760405162461bcd60e51b8152600401610701906144e5565b600260c955610105546001600160a01b03166108005760405162461bcd60e51b815260206004820152601b60248201527f436c61696d5661756c7420686173206e6f74206265656e2073657400000000006044820152606401610701565b6000818152610107602090815260408083208054825181850281018501909352808352919290919083018282801561085757602002820191906000526020600020905b815481526020019060010190808311610843575b50505050509050805160000361089f5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840c4c2e8c6d609b1b6044820152606401610701565b610102546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190614434565b61010154604051630d74982760e31b81529192506001600160a01b031690636ba4c1389061093f908590600401614557565b6020604051808303816000875af115801561095e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610982919061457f565b6109bd5760405162461bcd60e51b815260206004820152600c60248201526b10db185a5b4811985a5b195960a21b6044820152606401610701565b610102546040516370a0823160e01b815230600482015260009183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2f9190614434565b610a3991906145b0565b6000858152610108602052604081205491925081831115610a7e57610a5e82846145b0565b90508061010a6000828254610a7391906145c7565b925050819055508192505b610102546101005460405163095ea7b360e01b81526001600160a01b0391821660048201526024810186905291169063095ea7b3906044016020604051808303816000875af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af9919061457f565b610b455760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420417070726f76616c204465706f7369744d616e6167657200006044820152606401610701565b610100546101025461010554604051638b9e4f9360e01b81526001600160a01b039283166004820152908216602482015260448101869052911690638b9e4f9390606401600060405180830381600087803b158015610ba357600080fd5b505af1158015610bb7573d6000803e3d6000fd5b50506040805160036020820152908101899052606081018690526000925060800190506040516020818303038152906040529050610bf481612007565b867f1fb48cd7c6491d44b0c55f363eef71fb5d7d215688bcd7fa7a3118615c85ee77858885604051610c28939291906145df565b60405180910390a25050600160c9555050505050565b7f70afc91226fba57efa6b459a2add00f29a9a7961e6eb3103074a44780ab8cdc8610c6881611e58565b610c70612072565b610c786120bb565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610cc35760405162461bcd60e51b81526004016107019061444d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cf5611f05565b6001600160a01b031614610d1b5760405162461bcd60e51b815260040161070190614499565b610d2482611f21565b6107748282600161210d565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dd05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610701565b50600080516020614ae383398151915290565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110610e1957610e19614608565b602090810291909101015261010154604051630d74982760e31b81526001600160a01b0390911690636ba4c13890610e55908490600401614557565b6020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e98919061457f565b610ed35760405162461bcd60e51b815260206004820152600c60248201526b10db185a5b4811985a5b195960a21b6044820152606401610701565b610edb6112ea565b6107745760405162461bcd60e51b815260206004820152600e60248201526d11985a5b1959081d1bc81cd95b9960921b6044820152606401610701565b600260c95403610f3a5760405162461bcd60e51b8152600401610701906144e5565b600260c9557ff66846415d2bf9eabda9e84793ff9c0ea96d87f50fc41e66aa16469c6a442f05610f6981611e58565b61010a54610f7783856145c7565b1115610fc55760405162461bcd60e51b815260206004820152601860248201527f416d6f756e74206578636565647320696e737572616e636500000000000000006044820152606401610701565b610fcf82846145c7565b61010a6000828254610fe191906145b0565b9091555050610102546101015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af115801561103d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611061919061457f565b6110a85760405162461bcd60e51b8152602060048201526018602482015277111bdb985d1a5bdb881d1c985b9cd9995c8819985a5b195960421b6044820152606401610701565b610102546101065460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af11580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611123919061457f565b61116f5760405162461bcd60e51b815260206004820152601860248201527f5472656173757279207472616e73666572206661696c656400000000000000006044820152606401610701565b5050600160c95550565b61010454604051631f14992d60e21b81526001600160a01b03909116908190637c5264b4906111ae908690869060040161461e565b600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b7f70afc91226fba57efa6b459a2add00f29a9a7961e6eb3103074a44780ab8cdc861120f81611e58565b611217611fbf565b610c78612278565b610107602052816000526040600020818154811061123c57600080fd5b90600052602060002001600091509150505481565b6000818152610109602052604080822054610101548251630eaf323560e31b815283519293859384936001600160a01b03169263757991a89260048083019391928290030181865afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf919061464d565b90925090506112de81846145c7565b90911015949350505050565b610102546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190614434565b90506000811161139f5760405162461bcd60e51b815260206004820152600e60248201526d56616c7565206e6f74207a65726f60901b6044820152606401610701565b610102546101005460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af11580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a919061457f565b6114665760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420417070726f76616c204465706f7369744d616e6167657200006044820152606401610701565b610100546101025461010554604051638b9e4f9360e01b81526001600160a01b039283166004820152908216602482015260448101849052911690638b9e4f9390606401600060405180830381600087803b1580156114c457600080fd5b505af11580156114d8573d6000803e3d6000fd5b50505050600191505090565b60fd546001600160a01b0316156115505760405162461bcd60e51b815260206004820152602a60248201527f467842617365526f6f7454756e6e656c3a204348494c445f54554e4e454c5f4160448201526913149150511657d4d15560b21b6064820152608401610701565b60fd80546001600160a01b0319166001600160a01b0392909216919091179055565b600080516020614b2a83398151915261158a81611e58565b6001600160a01b0382166115d55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818db185a5b55985d5b1d60721b6044820152606401610701565b5061010580546001600160a01b0319166001600160a01b0392909216919091179055565b600080516020614b2a83398151915261161181611e58565b6001600160a01b0382166116625760405162461bcd60e51b8152602060048201526018602482015277496e76616c6964207472656173757279206164647265737360401b6044820152606401610701565b5061010680546001600160a01b0319166001600160a01b0392909216919091179055565b61168e611fbf565b600260c954036116b05760405162461bcd60e51b8152600401610701906144e5565b600260c955610102546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611731919061457f565b6117785760405162461bcd60e51b8152602060048201526018602482015277111bdb985d1a5bdb881d1c985b9cd9995c8819985a5b195960421b6044820152606401610701565b8061010a600082825461178b91906145c7565b9091555050600160c95550565b600054610100900460ff16158080156117b85750600054600160ff909116105b806117d25750303b1580156117d2575060005460ff166001145b6118355760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610701565b6000805460ff191660011790558015611858576000805461ff0019166101001790555b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036118a05760405162461bcd60e51b81526004016107019061444d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118d2611f05565b6001600160a01b0316146118f85760405162461bcd60e51b815260040161070190614499565b6001600160a01b038a166119425760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420436c61794d6174696360781b6044820152606401610701565b6001600160a01b0389166119985760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204465706f736974204d616e616765720000000000000000006044820152606401610701565b6001600160a01b0388166119ee5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420636865636b706f696e744d616e61676572000000000000006044820152606401610701565b6001600160a01b038716611a355760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908199e149bdbdd60921b6044820152606401610701565b6001600160a01b038616611a805760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21036b0ba34b1aa37b5b2b760711b6044820152606401610701565b6001600160a01b038516611acd5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21031b9a6b0ba34b1aa37b5b2b760611b6044820152606401610701565b6001600160a01b038416611b1c5760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420657263323050726564696361746560501b6044820152606401610701565b6001600160a01b038316611b685760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103937b632a6b0b730b3b2b960691b6044820152606401610701565b6001600160a01b038216611bb95760405162461bcd60e51b8152602060048201526018602482015277496e76616c6964207472656173757279206164647265737360401b6044820152606401610701565b61010180546001600160a01b03199081166001600160a01b038d811691909117909255610100805482168c841617905560fc805482168b841617905560fb8054909116918916919091179055611c0e306114e4565b611c166122b5565b611c1e6122e4565b611c26612313565b61010280546001600160a01b03199081166001600160a01b038981169182179093556101038054831689851617905560ff805483168785161790556101068054831686851617905561010480549092168784161790915560405163095ea7b360e01b8152918c16600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce7919061457f565b611d2b5760405162461bcd60e51b81526020600482015260156024820152744661696c656420417070726f76616c204d6174696360581b6044820152606401610701565b6101035460405163095ea7b360e01b81526001600160a01b038c8116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da4919061457f565b611df05760405162461bcd60e51b815260206004820152601760248201527f4661696c656420417070726f76616c2043734d617469630000000000000000006044820152606401610701565b8015611e36576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6000611e4d8261233a565b905061077481612620565b60ff546040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b03909116906312d9a6ad90604401602060405180830381865afa158015611ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ecb919061457f565b610c785760405162461bcd60e51b815260206004820152600b60248201526a105d5d1a0811985a5b195960aa1b6044820152606401610701565b600080516020614ae3833981519152546001600160a01b031690565b600080516020614b2a833981519152611f3981611e58565b6000826001600160a01b03163b116107745760405162461bcd60e51b81526020600482015260096024820152680858dbdb9d1c9858dd60ba1b6044820152606401610701565b611f88816126e5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60975460ff16156120055760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610701565b565b60fb5460fd5460405163b472047760e01b81526001600160a01b039283169263b47204779261203d9291169085906004016146c9565b600060405180830381600087803b15801561205757600080fd5b505af115801561206b573d6000803e3d6000fd5b5050505050565b60975460ff166120055760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610701565b6120c3612072565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156121405761069c836126e5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561219a575060408051601f3d908101601f1916820190925261219791810190614434565b60015b6121fd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610701565b600080516020614ae3833981519152811461226c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610701565b5061069c838383612781565b612280611fbf565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120f03390565b600054610100900460ff166122dc5760405162461bcd60e51b8152600401610701906146ed565b6120056127ac565b600054610100900460ff1661230b5760405162461bcd60e51b8152600401610701906146ed565b6120056127df565b600054610100900460ff166120055760405162461bcd60e51b8152600401610701906146ed565b606060006123478361280d565b905060006123548261286c565b905060006123618361289b565b905060008161236f846128c4565b61237886612a80565b60405160200161238a93929190614738565b60408051601f198184030181529181528151602092830120600081815260fe90935291205490915060ff161561240e5760405162461bcd60e51b8152602060048201526024808201527f4678526f6f7454756e6e656c3a20455849545f414c52454144595f50524f434560448201526314d4d15160e21b6064820152608401610701565b600081815260fe60205260408120805460ff1916600117905561243085612a9c565b9050600061243d82612be5565b905061244881612c75565b60fd546001600160a01b039081169116146124b35760405162461bcd60e51b815260206004820152602560248201527f4678526f6f7454756e6e656c3a20494e56414c49445f46585f4348494c445f54604482015264155393915360da1b6064820152608401610701565b60006124be87612c9e565b90506124de6124ce846020015190565b876124d88a612cba565b84612cd6565b6125365760405162461bcd60e51b815260206004820152602360248201527f4678526f6f7454756e6e656c3a20494e56414c49445f524543454950545f505260448201526227a7a360e91b6064820152608401610701565b6125648561254389612f89565b61254c8a612fa5565b846125568c612fc1565b61255f8d612fdd565b612ff9565b5060006125708361311f565b90507f8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b0366125a66125a183600061315b565b613193565b146125f35760405162461bcd60e51b815260206004820152601f60248201527f4678526f6f7454756e6e656c3a20494e56414c49445f5349474e4154555245006044820152606401610701565b60006125fe8461320e565b8060200190518101906126119190614765565b9b9a5050505050505050505050565b612628611fbf565b60008180602001905181019061263e9190614434565b9050600181036126735760008060008480602001905181019061266191906147d2565b9350935093505061206b83838361322a565b600281036126a65760008060008480602001905181019061269491906147d2565b9350935093505061206b8383836135e5565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964204d65737361676520436f646560601b6044820152606401610701565b6001600160a01b0381163b6127525760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610701565b600080516020614ae383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61278a83611f7f565b6000825111806127975750805b1561069c576127a683836137f0565b50505050565b600054610100900460ff166127d35760405162461bcd60e51b8152600401610701906146ed565b6097805460ff19169055565b600054610100900460ff166128065760405162461bcd60e51b8152600401610701906146ed565b600160c955565b60408051602081019091526060815260006128576128528460408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6138e4565b60408051602081019091529081529392505050565b6060612895826000015160088151811061288857612888614608565b60200260200101516139f9565b92915050565b600061289582600001516002815181106128b7576128b7614608565b6020026020010151613193565b60408051602081019091526000815281516060919015612895576000806128ec600086613a95565b60f81c9050600181148061290357508060ff166003145b156129aa576001855160026129189190614808565b61292291906145b0565b6001600160401b038111156129395761293961419f565b6040519080825280601f01601f191660200182016040528015612963576020820181803683370190505b5092506000612973600187613a95565b9050808460008151811061298957612989614608565b60200101906001600160f81b031916908160001a9053506001925050612a0d565b6002855160026129ba9190614808565b6129c491906145b0565b6001600160401b038111156129db576129db61419f565b6040519080825280601f01601f191660200182016040528015612a05576020820181803683370190505b509250600091505b60ff82165b8351811015612a7757612a3c612a2b60ff8516836145b0565b612a369060026145c7565b87613a95565b848281518110612a4e57612a4e614608565b60200101906001600160f81b031916908160001a90535080612a6f81614827565b915050612a12565b50505092915050565b600061289582600001516009815181106128b7576128b7614608565b612ac060405180606001604052806060815260200160608152602001600081525090565b612ada826000015160068151811061288857612888614608565b602082810182905260408051808201825260008082529083015280518082019091528251815291810190820152612b1081613b16565b15612b2557612b1e816138e4565b8252612bd1565b60208201518051600090612b3b906001906145b0565b6001600160401b03811115612b5257612b5261419f565b6040519080825280601f01601f191660200182016040528015612b7c576020820181803683370190505b509050600080836021019150826020019050612b9a82828551613b51565b604080518082018252600080825260209182015281518083019092528451825280850190820152612bca906138e4565b8652505050505b612bda83612a80565b604083015250919050565b604080516080810182526000918101828152606080830193909352815260208101919091526000612c338360000151600381518110612c2657612c26614608565b60200260200101516138e4565b836040015181518110612c4857612c48614608565b602002602001015190506040518060400160405280828152602001612c6c836138e4565b90529392505050565b60006128958260200151600081518110612c9157612c91614608565b6020026020010151613bdc565b600061289582600001516005815181106128b7576128b7614608565b6060612895826000015160078151811061288857612888614608565b600080612d0a8460408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b90506000612d17826138e4565b905060608085600080612d298b6128c4565b90508051600003612d44576000975050505050505050612f81565b60005b8651811015612f78578151831115612d6a57600098505050505050505050612f81565b612d8c878281518110612d7f57612d7f614608565b6020026020010151613bf6565b955085805190602001208414612dad57600098505050505050505050612f81565b612dc2878281518110612c2657612c26614608565b94508451601103612e945781518303612e21578c80519060200120612df38660108151811061288857612888614608565b8051906020012003612e1057600198505050505050505050612f81565b600098505050505050505050612f81565b6000828481518110612e3557612e35614608565b016020015160f81c90506010811115612e5a5760009950505050505050505050612f81565b612e7f868260ff1681518110612e7257612e72614608565b6020026020010151613c74565b9450612e8c6001856145c7565b935050612f66565b8451600203612e10576000612ebf612eb88760008151811061288857612888614608565b8486613ca2565b8351909150612ece82866145c7565b03612f21578d80519060200120612ef18760018151811061288857612888614608565b8051906020012003612f0f5760019950505050505050505050612f81565b60009950505050505050505050612f81565b80600003612f3b5760009950505050505050505050612f81565b612f4581856145c7565b9350612f5d86600181518110612e7257612e72614608565b9450612f669050565b80612f7081614827565b915050612d47565b50505050505050505b949350505050565b600061289582600001516003815181106128b7576128b7614608565b600061289582600001516004815181106128b7576128b7614608565b600061289582600001516000815181106128b7576128b7614608565b6060612895826000015160018151811061288857612888614608565b60fc546040516320a9cea560e11b8152600481018490526000918291829182916001600160a01b03909116906341539d4a9060240160a060405180830381865afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306f9190614840565b50935050925092506130c6828b61308691906145b0565b6040805160208082018f90528183018e9052606082018d905260808083018d90528351808403909101815260a09092019092528051910120908588613dab565b6131125760405162461bcd60e51b815260206004820152601c60248201527f4678526f6f7454756e6e656c3a20494e56414c49445f484541444552000000006044820152606401610701565b9998505050505050505050565b60408051602081019091526060815260405180602001604052806131538460200151600181518110612c2657612c26614608565b905292915050565b6040805180820190915260008082526020820152825180518390811061318357613183614608565b6020026020010151905092915050565b8051600090158015906131a857508151602110155b6131b157600080fd5b60006131c08360200151613f13565b905060008184600001516131d491906145b0565b90506000808386602001516131e991906145c7565b905080519150602083101561320557826020036101000a820491505b50949350505050565b6060612895826020015160028151811061288857612888614608565b61010154604080516339aa885b60e21b815281516000936001600160a01b03169263e6aa216c92600480820193918290030181865afa158015613271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613295919061488d565b509050600061010160009054906101000a90046001600160a01b03166001600160a01b0316639af1d35a6040518163ffffffff1660e01b8152600401608060405180830381865afa1580156132ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331291906148b9565b90506000670de0b6b3a7640000826000015161271061333191906145b0565b61271061333e8689614808565b6133489190614808565b6133529190614934565b61335c9190614934565b610102546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156133aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ce9190614434565b101580156133ea57508061010a54876133e791906145c7565b10155b6134365760405162461bcd60e51b815260206004820152601a60248201527f4465706f73697420436c61794d61746963206d69736d617463680000000000006044820152606401610701565b60008187111561346a5761344a82886145b0565b90508061010a600082825461345f91906145c7565b909155506134dd9050565b600061347688846145b0565b9050801580159061348a575061010a548111155b156134db578061010a60008282546134a291906145b0565b90915550506040518181527ff8197414ce98947e2aa37b4a62378bcc66e578a69368b62334fd25f93161eabd9060200160405180910390a15b505b6101015460405163b6b55f2560e01b8152600481018490526001600160a01b039091169063b6b55f25906024016020604051808303816000875af1158015613529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354d919061457f565b6135995760405162461bcd60e51b815260206004820152601860248201527f436c61794d61746963206465706f736974206661696c656400000000000000006044820152606401610701565b604080518381526020810188905290810182905285907feeb6f478f7fbf175f7a58b7867c353d9788fa25caca124017ad754138d28e6a19060600160405180910390a250505050505050565b60005b8381101561372157610101546040805163fd1ad55360e01b815290516000926001600160a01b03169163fd1ad5539160048083019260209291908290030181865afa15801561363b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365f9190614434565b905060006136768261367185896145b0565b613f8e565b905061368281846145c7565b61010154604051632e1a7d4d60e01b8152600481018490529194506000916001600160a01b0390911690632e1a7d4d906024016020604051808303816000875af11580156136d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f89190614434565b6000868152610107602090815260408220805460018101825590835291200155506135e8915050565b6101015460408051630eaf323560e31b815281516000936001600160a01b03169263757991a892600480820193918290030181865afa158015613768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061378c919061464d565b50600084815261010960209081526040808320849055610108825291829020879055815187815290810188905291925084917f3228bf4a0d547ed34051296b931fce02a1927888b6bc3dfbb85395d0cca1e9e0910160405180910390a25050505050565b60606001600160a01b0383163b6138585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610701565b600080846001600160a01b0316846040516138739190614948565b600060405180830381855af49150503d80600081146138ae576040519150601f19603f3d011682016040523d82523d6000602084013e6138b3565b606091505b50915091506138db8282604051806060016040528060278152602001614b0360279139613fa3565b95945050505050565b60606138ef82613b16565b6138f857600080fd5b600061390383613fbc565b90506000816001600160401b0381111561391f5761391f61419f565b60405190808252806020026020018201604052801561396457816020015b604080518082019091526000808252602082015281526020019060019003908161393d5790505b50905060006139768560200151613f13565b856020015161398591906145c7565b90506000805b848110156139ee5761399c83614041565b91506040518060400160405280838152602001848152508482815181106139c5576139c5614608565b60209081029190910101526139da82846145c7565b9250806139e681614827565b91505061398b565b509195945050505050565b8051606090613a0757600080fd5b6000613a168360200151613f13565b90506000818460000151613a2a91906145b0565b90506000816001600160401b03811115613a4657613a4661419f565b6040519080825280601f01601f191660200182016040528015613a70576020820181803683370190505b5090506000816020019050613205848760200151613a8e91906145c7565b82856140e5565b6000613aa2600284614964565b15613adc57601082613ab5600286614934565b81518110613ac557613ac5614608565b0160200151613ad7919060f81c614978565b613b0c565b601082613aea600286614934565b81518110613afa57613afa614608565b0160200151613b0c919060f81c61499a565b60f81b9392505050565b80516000908103613b2957506000919050565b6020820151805160001a9060c0821015613b47575060009392505050565b5060019392505050565b80600003613b5e57505050565b60208110613b965782518252613b756020846145c7565b9250613b826020836145c7565b9150613b8f6020826145b0565b9050613b5e565b80600003613ba357505050565b60006001613bb28360206145b0565b613bbe90610100614aa0565b613bc891906145b0565b935183518516941916939093179091525050565b8051600090601514613bed57600080fd5b61289582613193565b6060600082600001516001600160401b03811115613c1657613c1661419f565b6040519080825280601f01601f191660200182016040528015613c40576020820181803683370190505b5090508051600003613c525792915050565b6000816020019050613c6d84602001518286600001516140e5565b5092915050565b8051600090602114613c8557600080fd5b60008083602001516001613c9991906145c7565b51949350505050565b60008080613caf866128c4565b9050600081516001600160401b03811115613ccc57613ccc61419f565b6040519080825280601f01601f191660200182016040528015613cf6576020820181803683370190505b509050845b8251613d0790876145c7565b811015613d7a576000878281518110613d2257613d22614608565b01602001516001600160f81b03191690508083613d3f89856145b0565b81518110613d4f57613d4f614608565b60200101906001600160f81b031916908160001a905350508080613d7290614827565b915050613cfb565b508080519060200120828051906020012003613d995781519250613d9e565b600092505b50909150505b9392505050565b600060208251613dbb9190614964565b15613dff5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b6044820152606401610701565b600060208351613e0f9190614934565b9050613e1c816002614aa0565b8510613e625760405162461bcd60e51b81526020600482015260156024820152744c65616620696e64657820697320746f6f2062696760581b6044820152606401610701565b60008660205b85518111613f0557858101519250613e81600289614964565b600003613eb9576040805160208101849052908101849052606001604051602081830303815290604052805190602001209150613ee6565b60408051602081018590529081018390526060016040516020818303038152906040528051906020012091505b613ef1600289614934565b9750613efe6020826145c7565b9050613e68565b509094149695505050505050565b8051600090811a6080811015613f2c5750600092915050565b60b8811080613f47575060c08110801590613f47575060f881105b15613f555750600192915050565b60c0811015613f8257613f6a600160b8614aac565b613f779060ff16826145b0565b613da49060016145c7565b613f6a600160f8614aac565b6000818311613f9d5782613da4565b50919050565b60608315613fb2575081613da4565b613da4838361412a565b80516000908103613fcf57506000919050565b600080613fdf8460200151613f13565b8460200151613fee91906145c7565b905060008460000151856020015161400691906145c7565b90505b808210156140385761401a82614041565b61402490836145c7565b91508261403081614827565b935050614009565b50909392505050565b80516000908190811a608081101561405c5760019150613c6d565b60b8811015614082576140706080826145b0565b61407b9060016145c7565b9150613c6d565b60c08110156140af5760b78103600185019450806020036101000a85510460018201810193505050613c6d565b60f88110156140c35761407060c0826145b0565b60019390930151602084900360f7016101000a900490920160f5190192915050565b806000036140f257505050565b60208110613b9657825182526141096020846145c7565b92506141166020836145c7565b91506141236020826145b0565b90506140f2565b81511561413a5781518083602001fd5b8060405162461bcd60e51b81526004016107019190614acf565b6001600160a01b0381168114610c7857600080fd5b60006020828403121561417b57600080fd5b8135613da481614154565b60006020828403121561419857600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156141dd576141dd61419f565b604052919050565b60006001600160401b038211156141fe576141fe61419f565b50601f01601f191660200190565b600082601f83011261421d57600080fd5b813561423061422b826141e5565b6141b5565b81815284602083860101111561424557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561427557600080fd5b823561428081614154565b915060208301356001600160401b0381111561429b57600080fd5b6142a78582860161420c565b9150509250929050565b600080604083850312156142c457600080fd5b50508035926020909101359150565b600080602083850312156142e657600080fd5b82356001600160401b03808211156142fd57600080fd5b818501915085601f83011261431157600080fd5b81358181111561432057600080fd5b86602082850101111561433257600080fd5b60209290920196919550909350505050565b60008060008060008060008060006101208a8c03121561436357600080fd5b893561436e81614154565b985060208a013561437e81614154565b975060408a013561438e81614154565b965060608a013561439e81614154565b955060808a01356143ae81614154565b945060a08a01356143be81614154565b935060c08a01356143ce81614154565b925060e08a01356143de81614154565b91506101008a01356143ef81614154565b809150509295985092959850929598565b60006020828403121561441257600080fd5b81356001600160401b0381111561442857600080fd5b612f818482850161420c565b60006020828403121561444657600080fd5b5051919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600081518084526020808501945080840160005b8381101561454c57815187529582019590820190600101614530565b509495945050505050565b602081526000613da4602083018461451c565b8051801515811461457a57600080fd5b919050565b60006020828403121561459157600080fd5b613da48261456a565b634e487b7160e01b600052601160045260246000fd5b6000828210156145c2576145c261459a565b500390565b600082198211156145da576145da61459a565b500190565b8381526060602082015260006145f8606083018561451c565b9050826040830152949350505050565b634e487b7160e01b600052603260045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000806040838503121561466057600080fd5b505080516020909101519092909150565b60005b8381101561468c578181015183820152602001614674565b838111156127a65750506000910152565b600081518084526146b5816020860160208601614671565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090612f819083018461469d565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b83815260008351614750816020850160208801614671565b60209201918201929092526040019392505050565b60006020828403121561477757600080fd5b81516001600160401b0381111561478d57600080fd5b8201601f8101841361479e57600080fd5b80516147ac61422b826141e5565b8181528560208385010111156147c157600080fd5b6138db826020830160208601614671565b600080600080608085870312156147e857600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008160001904831182151516156148225761482261459a565b500290565b6000600182016148395761483961459a565b5060010190565b600080600080600060a0868803121561485857600080fd5b85519450602086015193506040860151925060608601519150608086015161487f81614154565b809150509295509295909350565b600080604083850312156148a057600080fd5b825191506148b06020840161456a565b90509250929050565b6000608082840312156148cb57600080fd5b604051608081018181106001600160401b03821117156148ed576148ed61419f565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b634e487b7160e01b600052601260045260246000fd5b6000826149435761494361491e565b500490565b6000825161495a818460208701614671565b9190910192915050565b6000826149735761497361491e565b500690565b600060ff83168061498b5761498b61491e565b8060ff84160691505092915050565b600060ff8316806149ad576149ad61491e565b8060ff84160491505092915050565b600181815b808511156149f75781600019048211156149dd576149dd61459a565b808516156149ea57918102915b93841c93908002906149c1565b509250929050565b600082614a0e57506001612895565b81614a1b57506000612895565b8160018114614a315760028114614a3b57614a57565b6001915050612895565b60ff841115614a4c57614a4c61459a565b50506001821b612895565b5060208310610133831016604e8410600b8410161715614a7a575081810a612895565b614a8483836149bc565b8060001904821115614a9857614a9861459a565b029392505050565b6000613da483836149ff565b600060ff821660ff841680821015614ac657614ac661459a565b90039392505050565b602081526000613da4602083018461469d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564b8ea7c31de614c54f5b3938aa9732e87deb869a880ec52d4bb778c09789441b1a2646970667358221220d3ff5c680f483a3c095a6405cc5b4ae68a93d601c26fd19a8cc3cf75efa20fc664736f6c634300080f0033