//
0x608060405234801561001057600080fd5b506040516142e33803806142e383398181016040528101906100329190610372565b33858581600090816100449190610658565b5080600190816100549190610658565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100c0919061076b565b60405180910390fd5b6100d88161010160201b60201c565b5082600b8190555081600c8190555080601090816100f69190610658565b505050505050610786565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61022e826101e5565b810181811067ffffffffffffffff8211171561024d5761024c6101f6565b5b80604052505050565b60006102606101c7565b905061026c8282610225565b919050565b600067ffffffffffffffff82111561028c5761028b6101f6565b5b610295826101e5565b9050602081019050919050565b60005b838110156102c05780820151818401526020810190506102a5565b60008484015250505050565b60006102df6102da84610271565b610256565b9050828152602081018484840111156102fb576102fa6101e0565b5b6103068482856102a2565b509392505050565b600082601f830112610323576103226101db565b5b81516103338482602086016102cc565b91505092915050565b6000819050919050565b61034f8161033c565b811461035a57600080fd5b50565b60008151905061036c81610346565b92915050565b600080600080600060a0868803121561038e5761038d6101d1565b5b600086015167ffffffffffffffff8111156103ac576103ab6101d6565b5b6103b88882890161030e565b955050602086015167ffffffffffffffff8111156103d9576103d86101d6565b5b6103e58882890161030e565b94505060406103f68882890161035d565b93505060606104078882890161035d565b925050608086015167ffffffffffffffff811115610428576104276101d6565b5b6104348882890161030e565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061049357607f821691505b6020821081036104a6576104a561044c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261050e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104d1565b61051886836104d1565b95508019841693508086168417925050509392505050565b6000819050919050565b600061055561055061054b8461033c565b610530565b61033c565b9050919050565b6000819050919050565b61056f8361053a565b61058361057b8261055c565b8484546104de565b825550505050565b600090565b61059861058b565b6105a3818484610566565b505050565b5b818110156105c7576105bc600082610590565b6001810190506105a9565b5050565b601f82111561060c576105dd816104ac565b6105e6846104c1565b810160208510156105f5578190505b610609610601856104c1565b8301826105a8565b50505b505050565b600082821c905092915050565b600061062f60001984600802610611565b1980831691505092915050565b6000610648838361061e565b9150826002028217905092915050565b61066182610441565b67ffffffffffffffff81111561067a576106796101f6565b5b610684825461047b565b61068f8282856105cb565b600060209050601f8311600181146106c257600084156106b0578287015190505b6106ba858261063c565b865550610722565b601f1984166106d0866104ac565b60005b828110156106f8578489015182556001820191506020850194506020810190506106d3565b868310156107155784890151610711601f89168261061e565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107558261072a565b9050919050565b6107658161074a565b82525050565b6000602082019050610780600083018461075c565b92915050565b613b4e806107956000396000f3fe60806040526004361061020f5760003560e01c80634f6ccce71161011857806395d89b41116100a0578063acd083f81161006f578063acd083f8146107a2578063b88d4fde146107cd578063c87b56dd146107f6578063e985e9c514610833578063f2fde38b146108705761020f565b806395d89b41146106e65780639e34070f14610711578063a22cb4651461074e578063a2309ff8146107775761020f565b806376a1bce0116100e757806376a1bce0146106135780637b1b1de61461063e5780638da5cb5b146106695780638ec294a014610694578063931688cb146106bd5761020f565b80634f6ccce7146105455780636352211e1461058257806370a08231146105bf578063715018a6146105fc5761020f565b80632ab4d0521161019b5780633ccfd60b1161016a5780633ccfd60b1461046257806340398d671461047957806342842e0e146104b657806342966c68146104df5780634f558e79146105085761020f565b80632ab4d052146103b35780632f745c59146103de57806331f684c01461041b578063379607f5146104465761020f565b8063172f50a4116101e2578063172f50a4146102e257806318160ddd1461030b57806323b872dd1461033657806326ba27e31461035f5780632919bd5b1461038a5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612a19565b610899565b6040516102489190612a61565b60405180910390f35b34801561025d57600080fd5b50610266610913565b6040516102739190612b0c565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190612b64565b6109a5565b6040516102b09190612bd2565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190612c19565b6109c1565b005b3480156102ee57600080fd5b5061030960048036038101906103049190612b64565b6109d7565b005b34801561031757600080fd5b50610320610a6a565b60405161032d9190612c68565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190612c83565b610a77565b005b34801561036b57600080fd5b50610374610b79565b6040516103819190612c68565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac9190612b64565b610b7f565b005b3480156103bf57600080fd5b506103c8610cc2565b6040516103d59190612c68565b60405180910390f35b3480156103ea57600080fd5b5061040560048036038101906104009190612c19565b610cc8565b6040516104129190612c68565b60405180910390f35b34801561042757600080fd5b50610430610d71565b60405161043d9190612c68565b60405180910390f35b610460600480360381019061045b9190612b64565b610d88565b005b34801561046e57600080fd5b50610477610f3d565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612cd6565b610f95565b6040516104ad9190612dc1565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190612c83565b61103d565b005b3480156104eb57600080fd5b5061050660048036038101906105019190612b64565b61105d565b005b34801561051457600080fd5b5061052f600480360381019061052a9190612b64565b6110df565b60405161053c9190612a61565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190612b64565b611109565b6040516105799190612c68565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190612b64565b61117f565b6040516105b69190612bd2565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190612cd6565b611191565b6040516105f39190612c68565b60405180910390f35b34801561060857600080fd5b5061061161124b565b005b34801561061f57600080fd5b5061062861125f565b6040516106359190612c68565b60405180910390f35b34801561064a57600080fd5b50610653611265565b6040516106609190612c68565b60405180910390f35b34801561067557600080fd5b5061067e61126b565b60405161068b9190612bd2565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190612b64565b611295565b005b3480156106c957600080fd5b506106e460048036038101906106df9190612f18565b6112de565b005b3480156106f257600080fd5b506106fb611330565b6040516107089190612b0c565b60405180910390f35b34801561071d57600080fd5b5061073860048036038101906107339190612b64565b6113c2565b6040516107459190612a61565b60405180910390f35b34801561075a57600080fd5b5061077560048036038101906107709190612f8d565b6113ec565b005b34801561078357600080fd5b5061078c611402565b6040516107999190612c68565b60405180910390f35b3480156107ae57600080fd5b506107b761140c565b6040516107c49190612c68565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef919061306e565b611412565b005b34801561080257600080fd5b5061081d60048036038101906108189190612b64565b611437565b60405161082a9190612b0c565b60405180910390f35b34801561083f57600080fd5b5061085a600480360381019061085591906130f1565b6114cb565b6040516108679190612a61565b60405180910390f35b34801561087c57600080fd5b5061089760048036038101906108929190612cd6565b61155f565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061090c575061090b826115e5565b5b9050919050565b60606000805461092290613160565b80601f016020809104026020016040519081016040528092919081815260200182805461094e90613160565b801561099b5780601f106109705761010080835404028352916020019161099b565b820191906000526020600020905b81548152906001019060200180831161097e57829003601f168201915b5050505050905090565b60006109b0826116c7565b506109ba8261174f565b9050919050565b6109d382826109ce61178c565b611794565b5050565b6109df6117a6565b6109e7610a6a565b811015610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2090613203565b60405180910390fd5b80600b819055507ff2672935fc79f5237559e2e2999dbe743bf65430894ac2b37666890e7c69e1af81604051610a5f9190612c68565b60405180910390a150565b6000600880549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae95760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ae09190612bd2565b60405180910390fd5b6000610afd8383610af861178c565b61182d565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b73578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610b6a93929190613223565b60405180910390fd5b50505050565b600f5481565b610b876117a6565b600b5481600d54610b989190613289565b1115610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd090613309565b60405180910390fd5b60005b81811015610cbe5760006001600d54610bf59190613289565b905080600d819055506001601260008484610c109190613289565b815260200190815260200160002060006101000a81548160ff021916908315150217905550600f6000815480929190610c4890613329565b91905055507fac4cf949b8c454f75a9b9c81945673669b8b45198a484ab2d3a22f7eee346ade816010610c7a8461194a565b604051602001610c8b929190613491565b604051602081830303815290604052604051610ca89291906134c0565b60405180910390a1508080600101915050610bdc565b5050565b600b5481565b6000610cd383611191565b8210610d185782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610d0f9291906134f0565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000600e54600d54610d839190613519565b905090565b80600d5481600e54610d9a9190613289565b1115610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290613599565b60405180910390fd5b600b5481610de7610a6a565b610df19190613289565b1115610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990613309565b60405180910390fd5b81600c54610e4091906135b9565b3414610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890613647565b60405180910390fd5b60005b82811015610f385760006001600e54610e9d9190613289565b905080600e8190555060016011600083815260200190815260200160002060006101000a81548160ff021916908315150217905550610edc3382611a18565b3373ffffffffffffffffffffffffffffffffffffffff167fb792983f4be9cd6a6722f6cf3c136d8cf44f77c5cf7cb263f75f36b04806a01b82604051610f229190612c68565b60405180910390a2508080600101915050610e84565b505050565b610f456117a6565b610f4d61126b565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f92573d6000803e3d6000fd5b50565b60606000610fa283611191565b905060008167ffffffffffffffff811115610fc057610fbf612ded565b5b604051908082528060200260200182016040528015610fee5781602001602082028036833780820191505090505b50905060005b82811015611032576110068582610cc8565b82828151811061101957611018613667565b5b6020026020010181815250508080600101915050610ff4565b508092505050919050565b61105883838360405180602001604052806000815250611412565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1661107d8261117f565b73ffffffffffffffffffffffffffffffffffffffff16146110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca906136e2565b60405180910390fd5b6110dc81611a36565b50565b60006012600083815260200190815260200160002060009054906101000a900460ff169050919050565b6000611113610a6a565b8210611159576000826040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526004016111509291906134f0565b60405180910390fd5b6008828154811061116d5761116c613667565b5b90600052602060002001549050919050565b600061118a826116c7565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112045760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016111fb9190612bd2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112536117a6565b61125d6000611abc565b565b600d5481565b600c5481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61129d6117a6565b80600c819055507f3200057f39b60b2ce0d5c0768cd90469dc468a882eec07ce1802fef660ebee59816040516112d39190612c68565b60405180910390a150565b6112e66117a6565b80601090816112f59190613899565b507f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad816040516113259190612b0c565b60405180910390a150565b60606001805461133f90613160565b80601f016020809104026020016040519081016040528092919081815260200182805461136b90613160565b80156113b85780601f1061138d576101008083540402835291602001916113b8565b820191906000526020600020905b81548152906001019060200180831161139b57829003601f168201915b5050505050905090565b60006011600083815260200190815260200160002060009054906101000a900460ff169050919050565b6113fe6113f761178c565b8383611b82565b5050565b6000600f54905090565b600e5481565b61141d848484610a77565b61143161142861178c565b85858585611cf1565b50505050565b60606012600083815260200190815260200160002060009054906101000a900460ff16611499576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611490906139b7565b60405180910390fd5b60106114a48361194a565b6040516020016114b5929190613491565b6040516020818303038152906040529050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115676117a6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115d95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016115d09190612bd2565b60405180910390fd5b6115e281611abc565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116b057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806116c057506116bf82611ea2565b5b9050919050565b6000806116d383611f0c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361174657826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161173d9190612c68565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6117a18383836001611f49565b505050565b6117ae61178c565b73ffffffffffffffffffffffffffffffffffffffff166117cc61126b565b73ffffffffffffffffffffffffffffffffffffffff161461182b576117ef61178c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016118229190612bd2565b60405180910390fd5b565b60008061183b85858561210e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187f5761187a84612328565b6118be565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118bd576118bc8185612371565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611900576118fb8461245c565b61193f565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461193e5761193d858561252d565b5b5b809150509392505050565b606060006001611959846125b8565b01905060008167ffffffffffffffff81111561197857611977612ded565b5b6040519080825280601f01601f1916602001820160405280156119aa5781602001600182028036833780820191505090505b509050600082602001820190505b600115611a0d578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611a0157611a006139d7565b5b049450600085036119b8575b819350505050919050565b611a3282826040518060200160405280600081525061270b565b5050565b6000611a45600083600061182d565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab857816040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611aaf9190612c68565b60405180910390fd5b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf357816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611bea9190612bd2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ce49190612a61565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611e9b578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401611d509493929190613a5b565b6020604051808303816000875af1925050508015611d8c57506040513d601f19601f82011682018060405250810190611d899190613abc565b60015b611e10573d8060008114611dbc576040519150601f19603f3d011682016040523d82523d6000602084013e611dc1565b606091505b506000815103611e0857836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611dff9190612bd2565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e9957836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611e909190612bd2565b60405180910390fd5b505b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611f825750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120b6576000611f92846116c7565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ffd57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612010575061200e81846114cb565b155b1561205257826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016120499190612bd2565b60405180910390fd5b81156120b457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008061211a84611f0c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461215c5761215b81848661272f565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121ed5761219e600085600080611f49565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612270576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600061237c83611191565b90506000600760008481526020019081526020016000205490506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508282146124285760008160008581526020019081526020016000205490508082600085815260200190815260200160002081905550826007600083815260200190815260200160002081905550505b6007600085815260200190815260200160002060009055806000848152602001908152602001600020600090555050505050565b600060016008805490506124709190613519565b90506000600960008481526020019081526020016000205490506000600883815481106124a05761249f613667565b5b9060005260206000200154905080600883815481106124c2576124c1613667565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061251157612510613ae9565b5b6001900381819060005260206000200160009055905550505050565b6000600161253a84611191565b6125449190613519565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612616577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161260c5761260b6139d7565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612653576d04ee2d6d415b85acef81000000008381612649576126486139d7565b5b0492506020810190505b662386f26fc10000831061268257662386f26fc100008381612678576126776139d7565b5b0492506010810190505b6305f5e10083106126ab576305f5e10083816126a1576126a06139d7565b5b0492506008810190505b61271083106126d05761271083816126c6576126c56139d7565b5b0492506004810190505b606483106126f357606483816126e9576126e86139d7565b5b0492506002810190505b600a8310612702576001810190505b80915050919050565b61271583836127f3565b61272a61272061178c565b6000858585611cf1565b505050565b61273a8383836128ec565b6127ee57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127af57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016127a69190612c68565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016127e59291906134f0565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128655760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161285c9190612bd2565b60405180910390fd5b60006128738383600061182d565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146128e75760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016128de9190612bd2565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129a457508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612965575061296484846114cb565b5b806129a357508273ffffffffffffffffffffffffffffffffffffffff1661298b8361174f565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129f6816129c1565b8114612a0157600080fd5b50565b600081359050612a13816129ed565b92915050565b600060208284031215612a2f57612a2e6129b7565b5b6000612a3d84828501612a04565b91505092915050565b60008115159050919050565b612a5b81612a46565b82525050565b6000602082019050612a766000830184612a52565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab6578082015181840152602081019050612a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ade82612a7c565b612ae88185612a87565b9350612af8818560208601612a98565b612b0181612ac2565b840191505092915050565b60006020820190508181036000830152612b268184612ad3565b905092915050565b6000819050919050565b612b4181612b2e565b8114612b4c57600080fd5b50565b600081359050612b5e81612b38565b92915050565b600060208284031215612b7a57612b796129b7565b5b6000612b8884828501612b4f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bbc82612b91565b9050919050565b612bcc81612bb1565b82525050565b6000602082019050612be76000830184612bc3565b92915050565b612bf681612bb1565b8114612c0157600080fd5b50565b600081359050612c1381612bed565b92915050565b60008060408385031215612c3057612c2f6129b7565b5b6000612c3e85828601612c04565b9250506020612c4f85828601612b4f565b9150509250929050565b612c6281612b2e565b82525050565b6000602082019050612c7d6000830184612c59565b92915050565b600080600060608486031215612c9c57612c9b6129b7565b5b6000612caa86828701612c04565b9350506020612cbb86828701612c04565b9250506040612ccc86828701612b4f565b9150509250925092565b600060208284031215612cec57612ceb6129b7565b5b6000612cfa84828501612c04565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d3881612b2e565b82525050565b6000612d4a8383612d2f565b60208301905092915050565b6000602082019050919050565b6000612d6e82612d03565b612d788185612d0e565b9350612d8383612d1f565b8060005b83811015612db4578151612d9b8882612d3e565b9750612da683612d56565b925050600181019050612d87565b5085935050505092915050565b60006020820190508181036000830152612ddb8184612d63565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e2582612ac2565b810181811067ffffffffffffffff82111715612e4457612e43612ded565b5b80604052505050565b6000612e576129ad565b9050612e638282612e1c565b919050565b600067ffffffffffffffff821115612e8357612e82612ded565b5b612e8c82612ac2565b9050602081019050919050565b82818337600083830152505050565b6000612ebb612eb684612e68565b612e4d565b905082815260208101848484011115612ed757612ed6612de8565b5b612ee2848285612e99565b509392505050565b600082601f830112612eff57612efe612de3565b5b8135612f0f848260208601612ea8565b91505092915050565b600060208284031215612f2e57612f2d6129b7565b5b600082013567ffffffffffffffff811115612f4c57612f4b6129bc565b5b612f5884828501612eea565b91505092915050565b612f6a81612a46565b8114612f7557600080fd5b50565b600081359050612f8781612f61565b92915050565b60008060408385031215612fa457612fa36129b7565b5b6000612fb285828601612c04565b9250506020612fc385828601612f78565b9150509250929050565b600067ffffffffffffffff821115612fe857612fe7612ded565b5b612ff182612ac2565b9050602081019050919050565b600061301161300c84612fcd565b612e4d565b90508281526020810184848401111561302d5761302c612de8565b5b613038848285612e99565b509392505050565b600082601f83011261305557613054612de3565b5b8135613065848260208601612ffe565b91505092915050565b60008060008060808587031215613088576130876129b7565b5b600061309687828801612c04565b94505060206130a787828801612c04565b93505060406130b887828801612b4f565b925050606085013567ffffffffffffffff8111156130d9576130d86129bc565b5b6130e587828801613040565b91505092959194509250565b60008060408385031215613108576131076129b7565b5b600061311685828601612c04565b925050602061312785828601612c04565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061317857607f821691505b60208210810361318b5761318a613131565b5b50919050565b7f43616e6e6f74207265647563652062656c6f772063757272656e74207375707060008201527f6c79000000000000000000000000000000000000000000000000000000000000602082015250565b60006131ed602283612a87565b91506131f882613191565b604082019050919050565b6000602082019050818103600083015261321c816131e0565b9050919050565b60006060820190506132386000830186612bc3565b6132456020830185612c59565b6132526040830184612bc3565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061329482612b2e565b915061329f83612b2e565b92508282019050808211156132b7576132b661325a565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006132f3601283612a87565b91506132fe826132bd565b602082019050919050565b60006020820190508181036000830152613322816132e6565b9050919050565b600061333482612b2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133665761336561325a565b5b600182019050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461339e81613160565b6133a88186613371565b945060018216600081146133c357600181146133d85761340b565b60ff198316865281151582028601935061340b565b6133e18561337c565b60005b83811015613403578154818901526001820191506020810190506133e4565b838801955050505b50505092915050565b600061341f82612a7c565b6134298185613371565b9350613439818560208601612a98565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b600061347b600583613371565b915061348682613445565b600582019050919050565b600061349d8285613391565b91506134a98284613414565b91506134b48261346e565b91508190509392505050565b60006040820190506134d56000830185612c59565b81810360208301526134e78184612ad3565b90509392505050565b60006040820190506135056000830185612bc3565b6135126020830184612c59565b9392505050565b600061352482612b2e565b915061352f83612b2e565b92508282039050818111156135475761354661325a565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320746f20636c61696d000000000000600082015250565b6000613583601a83612a87565b915061358e8261354d565b602082019050919050565b600060208201905081810360008301526135b281613576565b9050919050565b60006135c482612b2e565b91506135cf83612b2e565b92508282026135dd81612b2e565b915082820484148315176135f4576135f361325a565b5b5092915050565b7f496e636f7272656374204554482073656e740000000000000000000000000000600082015250565b6000613631601283612a87565b915061363c826135fb565b602082019050919050565b6000602082019050818103600083015261366081613624565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b60006136cc600d83612a87565b91506136d782613696565b602082019050919050565b600060208201905081810360008301526136fb816136bf565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261374f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613712565b6137598683613712565b95508019841693508086168417925050509392505050565b6000819050919050565b600061379661379161378c84612b2e565b613771565b612b2e565b9050919050565b6000819050919050565b6137b08361377b565b6137c46137bc8261379d565b84845461371f565b825550505050565b600090565b6137d96137cc565b6137e48184846137a7565b505050565b5b81811015613808576137fd6000826137d1565b6001810190506137ea565b5050565b601f82111561384d5761381e8161337c565b61382784613702565b81016020851015613836578190505b61384a61384285613702565b8301826137e9565b50505b505050565b600082821c905092915050565b600061387060001984600802613852565b1980831691505092915050565b6000613889838361385f565b9150826002028217905092915050565b6138a282612a7c565b67ffffffffffffffff8111156138bb576138ba612ded565b5b6138c58254613160565b6138d082828561380c565b600060209050601f83116001811461390357600084156138f1578287015190505b6138fb858261387d565b865550613963565b601f1984166139118661337c565b60005b8281101561393957848901518255600182019150602085019450602081019050613914565b868310156139565784890151613952601f89168261385f565b8355505b6001600288020188555050505b505050505050565b7f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e00600082015250565b60006139a1601f83612a87565b91506139ac8261396b565b602082019050919050565b600060208201905081810360008301526139d081613994565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000613a2d82613a06565b613a378185613a11565b9350613a47818560208601612a98565b613a5081612ac2565b840191505092915050565b6000608082019050613a706000830187612bc3565b613a7d6020830186612bc3565b613a8a6040830185612c59565b8181036060830152613a9c8184613a22565b905095945050505050565b600081519050613ab6816129ed565b92915050565b600060208284031215613ad257613ad16129b7565b5b6000613ae084828501613aa7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220d3966b73e9639d2e683306c40ba895fd90c16b5ce7c9648eac09836d680ee0aa64736f6c634300081c003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000115c000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000104475737450696e204e46542044726f7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544534e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6475737470696e2e66756e2f697066732f00000000000000