0x60a06040523480156200001157600080fd5b5060405162005940380380620059408339810160408190526200003491620000d5565b806001600160a01b038116620000c25760405162461bcd60e51b815260206004820152604360248201527f59656c61794f776e61626c653a3a636f6e7374727563746f723a2059656c617960448201527f206f776e657220636f6e747261637420616464726573732063616e6e6f74206260648201526206520360ec1b608482015260a40160405180910390fd5b6001600160a01b03166080525062000107565b600060208284031215620000e857600080fd5b81516001600160a01b03811681146200010057600080fd5b9392505050565b60805161581d620001236000396000614166015261581d6000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c806388278207116101b2578063cbfd3a43116100f9578063d7febbca116100a2578063e42084df1161007c578063e42084df146109fe578063e4c4949514610a1e578063edcd508a14610a31578063f46eccc414610a5457600080fd5b8063d7febbca146109d0578063dd62ed3e146109d8578063e3d1d5bf146109eb57600080fd5b8063d131ef57116100d3578063d131ef5714610915578063d4f54eae14610928578063d6a182b3146109bd57600080fd5b8063cbfd3a43146108da578063cf456ae7146108e2578063d09f88b5146108f557600080fd5b8063a04d80431161015b578063ab95e67e11610135578063ab95e67e146108ac578063c8800d1c146108bf578063c8a168ef146108d257600080fd5b8063a04d80431461087e578063a5ef7fab14610891578063a9059cbb1461089957600080fd5b806395d89b411161018c57806395d89b411461081c5780639dc29fac146108585780639e52c7521461086b57600080fd5b8063882782071461068a5780638afd9bc4146106e35780638c2a80341461070957600080fd5b806344b066f5116102765780635eb5164d1161021f5780637a1957ca116101f95780637a1957ca146106675780637a81cf261461066f57806385cf95ac1461067757600080fd5b80635eb5164d1461064357806370a082311461064b57806378362cd61461065e57600080fd5b80635b1534cb116102505780635b1534cb146105595780635b4653441461061a5780635df0f4b61461063a57600080fd5b806344b066f51461051b578063468682c0146105255780635638f3dd1461054657600080fd5b80632d43b867116102d85780633f9a6020116102b25780633f9a6020146104ec57806340c10f19146104ff57806343481a181461051257600080fd5b80632d43b867146104015780632e638b5f146104bd578063313ce567146104d257600080fd5b806316349cff1161030957806316349cff146103c557806318160ddd146103e657806323b872dd146103ee57600080fd5b806306fdde0314610330578063095ea7b31461038257806312fb3175146103a5575b600080fd5b61036c6040518060400160405280600c81526020017f5374616b65642059656c6179000000000000000000000000000000000000000081525081565b6040516103799190614f61565b60405180910390f35b610395610390366004614ff8565b610a77565b6040519015158152602001610379565b6103b86103b3366004615022565b610b07565b604051610379919061503d565b6103d86103d3366004615022565b610d43565b604051908152602001610379565b6103d8610d62565b6103956103fc3660046150bf565b610da7565b61048061040f3660046150fb565b60066020908152600091825260409182902082518083018452815465ffffffffffff9081168252845180850186526001840154821681528551808601875260028501548316815286518087018852600386015484168152875196870190975260049094015490911684529093909285565b60408051955165ffffffffffff9081168752945185166020870152925184169285019290925251821660608401525116608082015260a001610379565b6104d06104cb366004615022565b610e32565b005b6104da601281565b60405160ff9091168152602001610379565b6104d06104fa366004614ff8565b610e4e565b6104d061050d366004614ff8565b610ed5565b6103d860035481565b6103d862093a8081565b610538610533366004615022565b610f5d565b604051610379929190615114565b6104d06105543660046151d4565b6110c8565b6105d9610567366004614ff8565b600b60209081526000928352604080842090915290825290205465ffffffffffff81169066ffffffffffffff66010000000000008204169067ffffffffffffffff6d01000000000000000000000000008204811691750100000000000000000000000000000000000000000090041684565b6040805165ffffffffffff909516855266ffffffffffffff909316602085015267ffffffffffffffff91821692840192909252166060820152608001610379565b61062d610628366004615022565b6112a8565b604051610379919061520b565b6103d860005481565b6103d86113cb565b6103d8610659366004615022565b6113dc565b6103d860095481565b6104d061145d565b6103d860d081565b6103d86106853660046150fb565b61146f565b610692611491565b6040516103799190600060808201905065ffffffffffff8084511683528060208501511660208401525066ffffffffffffff604084015116604083015261ffff606084015116606083015292915050565b6106f66106f1366004614ff8565b6114c4565b60405161ffff9091168152602001610379565b6107b3610717366004614ff8565b600860209081526000928352604080842082529183529181902081518083018352815465ffffffffffff808216835261ffff660100000000000092839004811684880152855180870187526001860154808416825284900482168189015286518088018852600287015480851682528590048316818a015287518089019098526003909601549283168752929091041694840194909452929184565b60408051855165ffffffffffff908116825260209687015161ffff908116888401528651821693830193909352948601518216606082015283518516608082015292850151811660a0840152815190931660c0830152909201511660e082015261010001610379565b61036c6040518060400160405280600581526020017f73594c415900000000000000000000000000000000000000000000000000000081525081565b6104d0610866366004614ff8565b61150b565b6103d8610879366004615297565b61162f565b6103d861088c3660046150fb565b61167d565b6106f6611749565b6103956108a7366004614ff8565b61175b565b6103d86108ba366004615022565b6117e6565b6104d06108cd3660046152ca565b611a50565b6106f6611d8b565b6103d8611d9b565b6104d06108f03660046151d4565b611db1565b6103d8610903366004615022565b60046020526000908152604090205481565b6103d86109233660046152ec565b611f6b565b610692604080516080810182526000808252602082018190529181018290526060810191909152506040805160808101825260055465ffffffffffff8082168352660100000000000082041660208301526c01000000000000000000000000810466ffffffffffffff169282019290925273010000000000000000000000000000000000000090910461ffff16606082015290565b61062d6109cb366004615022565b6123e2565b6103d861244b565b6103d86109e6366004615352565b612462565b6104d06109f9366004615352565b6124ed565b6103d8610a0c366004615022565b600a6020526000908152604090205481565b6104d0610a2c366004615385565b612d88565b610395610a3f366004615022565b60026020526000908152604090205460ff1681565b610395610a62366004615022565b60016020526000908152604090205460ff1681565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73594c41593a3a617070726f76653a2050726f6869626974656420416374696f60448201527f6e0000000000000000000000000000000000000000000000000000000000000060648201526000906084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600c60209081526040808320805482518185028101850190935280835260609493830182828015610b9b57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610b625790505b50505050509050805167ffffffffffffffff811115610bbc57610bbc6153c5565b604051908082528060200260200182016040528015610c2c57816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610bda5790505b50915060005b8151811015610d3c5773ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604081208351909190849084908110610c7757610c776153f4565b60209081029190910181015161ffff1682528181019290925260409081016000208151608081018352905465ffffffffffff8116825266ffffffffffffff66010000000000008204169382019390935267ffffffffffffffff6d0100000000000000000000000000840481169282019290925275010000000000000000000000000000000000000000009092041660608201528351849083908110610d1e57610d1e6153f4565b60200260200101819052508080610d3490615452565b915050610c32565b5050919050565b600080610d4f836133c3565b509050610d5b8161360c565b9392505050565b600080610d6d613655565b509050610d816009546509184e72a0000290565b610d8a8261360c565b600354610d97919061548a565b610da1919061548a565b91505090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f73594c41593a3a7472616e7366657246726f6d3a2050726f686962697465642060448201527f416374696f6e00000000000000000000000000000000000000000000000000006064820152600090608401610afe565b610e3a613731565b610e426137d0565b610e4b816138ff565b50565b610e56613731565b610e5e6137d0565b81610e68816138ff565b6000610e7383613abc565b9050610e7f8482613ace565b8373ffffffffffffffffffffffffffffffffffffffff167fe24fb5918dfdd34ee115de98f0d2960d0ce30d6169a74367fd256ff3b5048b7484604051610ec791815260200190565b60405180910390a250505050565b610edd613e52565b8060036000828254610eef919061548a565b909155505073ffffffffffffffffffffffffffffffffffffffff821660008181526004602052604090819020805484019055517f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe90610f519084815260200190565b60405180910390a25050565b6060806000610f6b846133c3565b509050610f7781613ef1565b156110c25760608101516000610f8c83613f0b565b90508067ffffffffffffffff811115610fa757610fa76153c5565b604051908082528060200260200182016040528015610fec57816020015b6040805180820190915260008082526020820152815260200190600190039081610fc55790505b5093508067ffffffffffffffff811115611008576110086153c5565b60405190808252806020026020018201604052801561104d57816020015b60408051808201909152600080825260208201528152602001906001900390816110265790505b50945060005b84518110156110be576110668784613f7e565b858281518110611078576110786153f4565b602002602001018190525082868281518110611096576110966153f4565b60200260200101819052506110aa836140be565b9250806110b681615452565b915050611053565b5050505b50915091565b6110d0614135565b61115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f59656c61794f776e61626c653a3a6f6e6c794f776e65723a2043616c6c65722060448201527f6973206e6f74207468652059656c6179206f776e6572000000000000000000006064820152608401610afe565b73ffffffffffffffffffffffffffffffffffffffff8216611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f73594c41593a3a7365744772616475616c4d696e7465723a206772616475616c60448201527f206d696e7465722063616e6e6f7420626520746865207a65726f20616464726560648201527f7373000000000000000000000000000000000000000000000000000000000000608482015260a401610afe565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fd066a75103af5bd5a100de58375e7cf390671150ac63a9f845137e25042bf1589101610f51565b6112fe6040805160c0810182526000808252602080830182905282840182905283518085018552828152808201839052606084015283518085019094528184528301529060808201908152600060209091015290565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260076020908152604091829020825160c081018452815465ffffffffffff808216835266010000000000008204168285015266ffffffffffffff6c01000000000000000000000000909104168185015283518085018552600183015461ffff808216835260ff6201000092839004811684880152606085019390935286518088019097526002850154808216885291909104909116938501939093526080810193909352600301541660a082015290565b6113d960d062093a806154a2565b81565b6000806113e8836133c3565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600a60205260409020549091506509184e72a000026114238261360c565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260046020526040902054611453919061548a565b610d5b919061548a565b611465613731565b61146d6137d0565b565b600061147e62093a80836154a2565b60005461148b919061548a565b92915050565b6040805160808101825260008082526020820181905291810182905260608101829052906114bd613655565b5092915050565b600c60205281600052604060002081815481106114e057600080fd5b9060005260206000209060109182820401919006600202915091509054906101000a900461ffff1681565b611513613e52565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548111156115c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f73594c41593a6275726e3a205573657220696e7374616e7420706f776572206260448201527f616c616e636520746f6f206c6f770000000000000000000000000000000000006064820152608401610afe565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600460205260409081902080548490039055600380548490039055517f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df790610f519084815260200190565b6000611639613731565b600061164484613abc565b9050611665858265ffffffffffff1661165b611d8b565b61ffff16866141e6565b65ffffffffffff166509184e72a00002949350505050565b60008054821015611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f73594c41593a3a6765745472616e636865496e6465783a2054696d65206d757360448201527f74206265206d6f7265206f7220657175616c20746f207468652066697273742060648201527f7472616e6368652074696d650000000000000000000000000000000000000000608482015260a401610afe565b61173f826145db565b61ffff1692915050565b60006001611755611d8b565b03905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73594c41593a3a7472616e736665723a2050726f68696269746564204163746960448201527f6f6e0000000000000000000000000000000000000000000000000000000000006064820152600090608401610afe565b60006117f0613731565b60006117fa611d8b565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c60205260408120805461ffff93909316935091905b81811015611a3b576000838281548110611849576118496153f4565b6000918252602080832060108304015473ffffffffffffffffffffffffffffffffffffffff8b168452600b82526040808520600f9094166002026101000a90910461ffff16808552928252928390208351608081018552905465ffffffffffff811682526601000000000000810466ffffffffffffff16928201929092526d0100000000000000000000000000820467ffffffffffffffff9081169482019490945275010000000000000000000000000000000000000000009091049092166060830152915061191986826145fe565b15611a265761192d81898461ffff16614628565b611937908861548a565b9650846119456001866154df565b81548110611955576119556153f4565b90600052602060002090601091828204019190066002029054906101000a900461ffff1685848154811061198b5761198b6153f4565b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff160217905550848054806119ca576119ca6154f6565b60008281526020902060107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191820401805461ffff6002600f8516026101000a0219169055905583611a1e81615525565b945050611a34565b82611a3081615452565b9350505b505061182d565b506509184e72a000840293505050505b919050565b336000908152600b602090815260408083208584529091529020805465ffffffffffff16611b00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73594c41593a3a636f6e74696e75654c6f636b75703a204e6f206c6f636b757060448201527f20706f736974696f6e20666f756e6400000000000000000000000000000000006064820152608401610afe565b80547501000000000000000000000000000000000000000000900467ffffffffffffffff168211611bb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f73594c41593a3a636f6e74696e75654c6f636b75703a204c6f636b757020646560448201527f61646c696e652073686f756c6420626520696e207468652066757475726500006064820152608401610afe565b60d0611bbf84846154df565b1115611c4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f73594c41593a3a636f6e74696e75654c6f636b75703a204c6f636b757020706560448201527f72696f642065786365656473206120746f74616c206f662034207965617273006064820152608401610afe565b805460009060d090611c82907501000000000000000000000000000000000000000000900467ffffffffffffffff16856154df565b8354611c96919065ffffffffffff166154a2565b611ca09190615589565b6009805482019055336000818152600a602090815260409182902080548501905585547fffffff0000000000000000ffffffffffffffff00000000000000ffffffffffff811666010000000000009182900466ffffffffffffff9081168701169091027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff1617750100000000000000000000000000000000000000000067ffffffffffffffff8916021786558151888152908101849052908101869052919250907ff105efae42c9c08d5eafed7135b77068bb81a1845393b4473ae79e86c94e97f190606001610ec7565b6000611d96426145db565b905090565b6000611d96611da8611d8b565b61ffff1661146f565b611db9614135565b611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f59656c61794f776e61626c653a3a6f6e6c794f776e65723a2043616c6c65722060448201527f6973206e6f74207468652059656c6179206f776e6572000000000000000000006064820152608401610afe565b73ffffffffffffffffffffffffffffffffffffffff8216611ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73594c41593a3a7365744d696e7465723a206d696e7465722063616e6e6f742060448201527f626520746865207a65726f2061646472657373000000000000000000000000006064820152608401610afe565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f583b0aa0e528532caf4b907c11d7a8158a122fe2a6fb80cd9b09776ebea8d92d9101610f51565b6000611f75613731565b611f7d6137d0565b83611f87816138ff565b6000611fa186611f9c3688900388018861559d565b61470c565b8054909150600090611fc0906601000000000000900461ffff16614793565b825490915065ffffffffffff168061205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f73594c41593a3a6d696772617465546f4c6f636b75703a205472616e6368652060448201527f616c7265616479206c6f636b65640000000000000000000000000000000000006064820152608401610afe565b6000612064614813565b905061ffff811615806120885750835461ffff808316660100000000000090920416115b612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f73594c41593a3a6d696772617465546f4c6f636b75703a205472616e6368652060448201527f6d617475726564000000000000000000000000000000000000000000000000006064820152608401610afe565b83546000906601000000000000900461ffff1661212f611d8b565b6121399190615630565b6121479061ffff1684615653565b73ffffffffffffffffffffffffffffffffffffffff8b166000908152600760205260409020805465ffffffffffff928316935085926006916121959185916601000000000000900416615681565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555082600560000160068282829054906101000a900465ffffffffffff166121dd9190615681565b825465ffffffffffff9182166101009390930a92830291909202199091161790555073ffffffffffffffffffffffffffffffffffffffff8a1660009081526007602052604090208054829190600c9061225190849066ffffffffffffff6c01000000000000000000000000909104166156a0565b92506101000a81548166ffffffffffffff021916908366ffffffffffffff160217905550806005600001600c8282829054906101000a900466ffffffffffffff1661229c91906156a0565b825466ffffffffffffff9182166101009390930a92830291909202199091161790555084547fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000016855583548390859060009061230190849065ffffffffffff16615681565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555061234d8a8465ffffffffffff168760000160069054906101000a900461ffff1661ffff168b6141e6565b84546040805165ffffffffffff86168152660100000000000090920461ffff16602083015266ffffffffffffff83169082015273ffffffffffffffffffffffffffffffffffffffff8b16907ff6028e08bd4265711d36773ee2b3ab6b15824a3938c53ce8022919564a1b8d049060600160405180910390a2505065ffffffffffff166509184e72a00002979650505050505050565b6124386040805160c0810182526000808252602080830182905282840182905283518085018552828152808201839052606084015283518085019094528184528301529060808201908152600060209091015290565b6000612443836133c3565b509392505050565b600080612456613655565b509050610da18161360c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f73594c41593a3a616c6c6f77616e63653a2050726f686962697465642041637460448201527f696f6e00000000000000000000000000000000000000000000000000000000006064820152600090608401610afe565b6124f5613731565b6124fe82614838565b61258a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f73594c41593a3a6d6967726174653a205573657220646f6573206e6f7420657860448201527f69737400000000000000000000000000000000000000000000000000000000006064820152608401610afe565b61259381614838565b15612620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f73594c41593a3a6d6967726174653a205573657220616c72656164792065786960448201527f73747300000000000000000000000000000000000000000000000000000000006064820152608401610afe565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020908152604091829020825160c081018452815465ffffffffffff808216835266010000000000008204168285015266ffffffffffffff6c01000000000000000000000000909104168185015283518085018552600183015461ffff808216835260ff6201000092839004811684880152606085019390935286518088019097526002850154808216885291909104909116938501939093526080810193909352600301541660a08201526126f381613ef1565b1561288e5760608101515160808201515161ffff9182169116815b81811161288a5773ffffffffffffffffffffffffffffffffffffffff8681166000908152600860208181526040808420868552808352818520958b16855292825280842086855282529092208354815465ffffffffffff9182167fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008083168217855587547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000093841690921766010000000000009283900461ffff90811684029190911786556001808a0180549188018054928816838616811782558254938816179286900484168602929092179091556002808b0180549189018054928916838716811782558254938916179287900485168702929092179091556003808c0180549190990180549190981694811685178855885490871690941793859004909216909302919091179093559390945284548416909455815483169091558254821690925581541690558061288281615452565b91505061270e565b5050505b73ffffffffffffffffffffffffffffffffffffffff83166000908152600c602090815260408083208054825181850281018501909352808352919290919083018282801561292357602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116128ea5790505b5050505050905060005b8151811015612ae657600082828151811061294a5761294a6153f4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff8089166000908152600b808552604080832061ffff909516808452948652808320938b168352908552808220938252929093529120815481547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000811665ffffffffffff9092169182178355835466ffffffffffffff66010000000000009182900416027fffffffffffffffffffffffffffffffffffffff0000000000000000000000000090911690911717808255825467ffffffffffffffff6d01000000000000000000000000009182900481169091027fffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffff8316811784559354750100000000000000000000000000000000000000000090819004909116027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff9093167fffffff00000000000000000000000000000000ffffffffffffffffffffffffff909116179190911790555080612ade81615452565b91505061292d565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600c602090815260409091208251612b1d92840190614e86565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600c60205260408120612b4c91614f2b565b73ffffffffffffffffffffffffffffffffffffffff84811660008181526007602090815260408083209488168084528184208654815465ffffffffffff9182167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000082168117845589547fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921617660100000000000091829004909216021780825587547fffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff9091166c010000000000000000000000009182900466ffffffffffffff1690910217815560018088018054918301805461ffff9384167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008083168217845584547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000938416909217620100009283900460ff9081168402919091179094556002808e01805491890180549289168385168117825582549387161792859004909616909302179093556003808d01805491909701805491909616908416179094558989528a547fffffffffffffffffffffffffff0000000000000000000000000000000000000016909a5581548a1690915581549098169055805490961690955560048252808320805486855282852055848452839055600a909152808220805485845282842055838352829055517fa7db278cab056bb874b7c975ab2e76c18be44e39da120a9cc6550170ec781cec9190a350505050565b612d90613731565b612d986137d0565b82612da2816138ff565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600760209081526040808320815160c081018352815465ffffffffffff80821683526601000000000000808304821684880190815266ffffffffffffff6c010000000000000000000000009485900481168689015287518089018952600188015461ffff808216835260ff62010000928390048116848e01526060808b01949094528b51808d018d5260028c015480841682529390930416828d01526080808a0192909252600390990154891660a089015289519081018a52600554808716825294850490951699850199909952938204909316958201959095527301000000000000000000000000000000000000009094049092169383019390935251825192939192612ecc91906156c0565b835190915065ffffffffffff1615612ef157612eec8284600001516148c7565b600083525b602083015165ffffffffffff1615612f1957612f11828460200151614903565b600060208401525b604083015166ffffffffffffff1615612f4257612f3a82846040015161493c565b600060408401525b612f4b83613ef1565b156130cb5760608301515160808401515161ffff9182169116815b8181116130c75773ffffffffffffffffffffffffffffffffffffffff8a166000908152600860209081526040808320848452825291829020825160c081018452815465ffffffffffff8082166080840190815261ffff660100000000000093849004811660a0860152908452865180880188526001860154808416825284900482168188015284870152865180880188526002860154808416825284900482168188015284880152865180880190975260039094015490811686520490911691830191909152606081019190915261303d90614987565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600860209081526040808320848452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090811682556001820180548216905560028201805482169055600390910180549091169055806130bf81615452565b915050612f66565b5050505b6040518060400160405280600061ffff168152602001600060ff16815250836060018190525082600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548166ffffffffffffff021916908366ffffffffffffff16021790555060608201518160010160008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548160ff021916908360ff160217905550505060808201518160020160008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548160ff021916908360ff160217905550505060a08201518160030160006101000a81548161ffff021916908361ffff16021790555090505081600560008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548166ffffffffffffff021916908366ffffffffffffff16021790555060608201518160000160136101000a81548161ffff021916908361ffff1602179055509050508673ffffffffffffffffffffffffffffffffffffffff167f828d875bb1fd38ee261c0c069e9bc63df13bf8e7e59acc2385ea66b86c83513787876040516133779291909182521515602082015260400190565b60405180910390a2846133ba57600061338f876149b9565b90508065ffffffffffff168265ffffffffffff1611156133b8578082036133b68982613ace565b505b505b50505050505050565b6134196040805160c0810182526000808252602080830182905282840182905283518085018552828152808201839052606084015283518085019094528184528301529060808201908152600060209091015290565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760209081526040808320815160c081018352815465ffffffffffff808216835266010000000000008204168286015266ffffffffffffff6c01000000000000000000000000909104168184015282518084018452600183015461ffff808216835260ff62010000928390048116848901526060850193909352855180870190965260028501548082168752919091049091169484019490945260808101929092526003015490911660a0820152816134ed611749565b90508061ffff168260a0015161ffff160361350d57509360009350915050565b61351682613ef1565b156135f9576000613525614813565b905061ffff81161561358b576000613541878560600151613f7e565b90505b61354d84613ef1565b801561356557508161ffff16816020015161ffff1611155b156135895761357484826149e6565b613582878560600151613f7e565b9050613544565b505b613599838361ffff16614aa5565b156135f75760008360a00151836135b09190615630565b61ffff16905080846020015165ffffffffffff166135ce91906156ea565b846040018181516135df9190615710565b66ffffffffffffff169052505061ffff821660a08401525b505b61ffff1660a08201529360019350915050565b600061363261362d836040015166ffffffffffffff166509184e72a0000290565b614ac2565b825161364b9065ffffffffffff166509184e72a0000290565b61148b919061548a565b60408051608081018252600080825260208201819052918101829052606081018290529080613682611749565b6040805160808101825260055465ffffffffffff8082168352660100000000000082041660208301526c01000000000000000000000000810466ffffffffffffff169282019290925261ffff7301000000000000000000000000000000000000009092048216606082015294501690505b80836060015161ffff16101561372c576060830180519061371382615732565b61ffff1690525061372383614acf565b600191506136f3565b509091565b3360009081526002602052604090205460ff1661146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f73594c41593a3a5f6f6e6c794772616475616c4d696e7465723a20496e73756660448201527f66696369656e742050726976696c6567657300000000000000000000000000006064820152608401610afe565b6000806137db613655565b9150915080156138fb578151600580546020808601516040808801516060808a015165ffffffffffff9889167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009097168717660100000000000099909516988902949094177fffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff166c0100000000000000000000000066ffffffffffffff9093169283027fffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff161773010000000000000000000000000000000000000061ffff90951694850217909655815194855292840195909552938201527fb968421445b12044d4cf86ecc7f3f9589111c9efab4b7561360aea60f3e832eb9101610f51565b5050565b60008061390b836133c3565b915091508015613ab75773ffffffffffffffffffffffffffffffffffffffff831660008181526007602090815260409182902085518154878401518886015165ffffffffffff9384167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009093168317660100000000000094909216938402919091177fffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff166c0100000000000000000000000066ffffffffffffff9092169182021784556060808a015180516001870180549289015161ffff9283167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000948516176201000060ff92831681029190911790925560808e0151805160028b018054928d0151918616929096169190911791169091021790915560a08b0151600390960180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169690911695861790558651928352948201929092529384015292917febc99566369f3a0bb7856de228673359eed87e744e506850f424863304607709910160405180910390a35b505050565b600061148b6509184e72a00083615589565b8065ffffffffffff16600003613ae2575050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020908152604091829020825160c081018452815465ffffffffffff808216835266010000000000008204168285019081526c0100000000000000000000000090910466ffffffffffffff168286015284518086018652600184015461ffff8082168352620100009182900460ff9081168489015260608601939093528751808901909852600286015480821689529190910490911694860194909452608082019490945260039091015490911660a0820152815190918391613bc49083906156c0565b65ffffffffffff908116909152600580548593509091600691613bf391859166010000000000009004166156c0565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055506000613c25848360800151613f7e565b90506000613c31611d8b565b90506000613c3e84613ef1565b1590508080613c5857508161ffff16836020015161ffff16105b15613ca7576000613c6c85608001516140be565b90508115613c7c57606085018190525b60808501526040805180820190915265ffffffffffff8616815261ffff831660208201529250613cc5565b8483600001818151613cb991906156c0565b65ffffffffffff169052505b613cd7836020015161ffff1686614b8e565b613ce686856080015185614bdf565b50505073ffffffffffffffffffffffffffffffffffffffff90921660009081526007602090815260409182902084518154838701519487015166ffffffffffffff166c01000000000000000000000000027fffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff65ffffffffffff9687166601000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090931696909316959095171716929092178255606084015180516001840180549284015160ff908116620100009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000095861661ffff958616171790925560808801518051600288018054929097015190921690920291909316928216929092179190911790915560a09093015160039091018054919093167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000919091161790915550565b3360009081526001602052604090205460ff1661146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f73594c41593a3a5f6f6e6c794d696e7465723a20496e73756666696369656e7460448201527f2050726976696c656765730000000000000000000000000000000000000000006064820152608401610afe565b60608101515160009061ffff1615611a4b57506001919050565b6060810151608082015160208201518251600093929160ff1690613f30906004615753565b613f3a9190615774565b816020015160ff1682600001516004613f539190615753565b613f5d9190615774565b613f679190615630565b613f72906001615774565b61ffff16949350505050565b6040805180820182526000808252602080830182905273ffffffffffffffffffffffffffffffffffffffff8616825260088152838220855161ffff16835281529281209284015191929160ff1690036140025760408051808201909152815465ffffffffffff811682526601000000000000900461ffff16602082015291506114bd565b826020015160ff166001036140455760408051808201909152600182015465ffffffffffff811682526601000000000000900461ffff16602082015291506114bd565b826020015160ff166002036140885760408051808201909152600282015465ffffffffffff811682526601000000000000900461ffff16602082015291506114bd565b60408051808201909152600382015465ffffffffffff811682526601000000000000900461ffff16602082015291505092915050565b6040805180820190915260008082526020820152815161ffff166000036140e85760018152919050565b6003826020015160ff16101561411d57815161ffff1681526020820151614110906001615791565b60ff166020820152919050565b815161412a906001615774565b61ffff168152919050565b6040517f83c603e30000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906383c603e390602401602060405180830381865afa1580156141c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9691906157b6565b60006141f283836154df565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600b60209081526040808320878452909152902080549192509065ffffffffffff16156143135780547501000000000000000000000000000000000000000000900467ffffffffffffffff16831461430e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f73594c41593a3a6d696e744c6f636b75703a204c6f636b757020706f7369746960448201527f6f6e20616c726561647920657869737473207769746820646966666572656e7460648201527f20646561646c696e650000000000000000000000000000000000000000000000608482015260a401610afe565b614416565b61431b611d8b565b61ffff168311801561432e575060d08211155b6143ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f73594c41593a3a6d696e744c6f636b75703a20496e76616c696420646561646c60448201527f696e6500000000000000000000000000000000000000000000000000000000006064820152608401610afe565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600c6020908152604082208054600181018255908352912060108204018054600f9092166002026101000a61ffff81810219909316928716029190911790555b600060d061442484886154a2565b61442e9190615589565b600980548201905573ffffffffffffffffffffffffffffffffffffffff88166000908152600a602052604081208054830190558354919250879184919061447e90849065ffffffffffff166156c0565b92506101000a81548165ffffffffffff021916908365ffffffffffff160217905550808260000160068282829054906101000a900466ffffffffffffff166144c69190615710565b825466ffffffffffffff9182166101009390930a928302919092021990911617905550815467ffffffffffffffff8581167501000000000000000000000000000000000000000000027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff9188166d010000000000000000000000000002919091167fffffff00000000000000000000000000000000ffffffffffffffffffffffffff9092169190911717825560408051878152602081018390529081018690526060810185905273ffffffffffffffffffffffffffffffffffffffff8816907f8d57bc413d172db24c650affb289486236f8cf804335bc881bb5033401acd5da9060800160405180910390a250505050505050565b600062093a806000548303816145f3576145f361555a565b046001019050919050565b805160009065ffffffffffff1615801590610d5b5750506060015167ffffffffffffffff16111590565b6020838101516009805466ffffffffffffff90921691829003905573ffffffffffffffffffffffffffffffffffffffff84166000818152600a84526040908190208054939093039092558551915184815265ffffffffffff9092169290917fdebd6c689e64ba7da4f3606a398615e9e8df6a117b5fb6fe720db13a3cd34f5a910160405180910390a273ffffffffffffffffffffffffffffffffffffffff9092166000908152600b602090815260408083209383529290522080547fffffff0000000000000000000000000000000000000000000000000000000000169055919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600860209081526040808320845161ffff168452825282209083015160ff168203614755579050806114bd565b826020015160ff1660010361476f578060010191506114bd565b826020015160ff16600203614789578060020191506114bd565b6003019392505050565b6000806147a1600584615589565b60008181526006602052604081209192506147bd6005866157d3565b9050806000036147cf57509392505050565b806001036147e257506001019392505050565b806002036147f557506002019392505050565b8060030361480857506003019392505050565b506004019392505050565b60008061481e611d8b565b61ffff16905060d08111156148345760d0810391505b5090565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081206003015461ffff16151580614896575073ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604090205415155b8061148b57505073ffffffffffffffffffffffffffffffffffffffff16600090815260046020526040902054151590565b815165ffffffffffff808316911610156148e2575060009052565b80826000018181516148f49190615681565b65ffffffffffff169052505050565b8065ffffffffffff16826020015165ffffffffffff16101561492a57600060208301525050565b80826020018181516148f49190615681565b8066ffffffffffffff16826040015166ffffffffffffff16101561496557600060408301525050565b808260400181815161497791906156a0565b66ffffffffffffff169052505050565b805161499290614d99565b61499f8160200151614d99565b6149ac8160400151614d99565b610e4b8160600151614d99565b60006149c482613abc565b9050816509184e72a00065ffffffffffff8316021015611a4b57600101919050565b60006149f9826020015161ffff16614e01565b825160a085015191925090600090614a119084615630565b61ffff16905080856020015165ffffffffffff16614a2f91906156ea565b85604001818151614a409190615710565b66ffffffffffffff1690525065ffffffffffff821660d002614a62868261493c565b8286600001818151614a7491906156c0565b65ffffffffffff16905250614a898684614903565b614a9286614e1a565b50505061ffff1660a09092019190915250565b6000818360a0015161ffff16108015610d5b5750610d5b83613ef1565b600061148b60d083615589565b806020015165ffffffffffff1681604001818151614aed9190615710565b66ffffffffffffff16905250606081015160d061ffff90911610610e4b57600060d0826060015161ffff16614b2291906154df565b614b2d90600161548a565b90506000614b3a82614793565b5465ffffffffffff1690508015613ab75765ffffffffffff811660d002614b61848261493c565b614b6b8483614903565b8184600001818151614b7d91906156c0565b65ffffffffffff1690525050505050565b6000614b9983614793565b805490915082908290600090614bb890849065ffffffffffff166156c0565b92506101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860209081526040808320855161ffff1684528252822090840151909160ff9091169003614c745781518154602084015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff90921691909117178155614d93565b826020015160ff16600103614cda578151600182018054602085015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff90931692909217919091179055614d93565b826020015160ff16600203614d40578151600282018054602085015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff90931692909217919091179055614d93565b8151600382018054602085015161ffff166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911665ffffffffffff909316929092179190911790555b50505050565b805165ffffffffffff1615610e4b576000614dbb826020015161ffff16614793565b82518154919250908290600090614ddb90849065ffffffffffff16615681565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055505050565b60006001614e1060d08461548a565b61148b91906154df565b60808101515160608201515161ffff9081169116148015614e50575080608001516020015160ff1681606001516020015160ff16145b15614e71576040805180820190915260008082526020820152606082015250565b614e7e81606001516140be565b606082015250565b82805482825590600052602060002090600f01601090048101928215614f1f5791602002820160005b83821115614eef57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302614eaf565b8015614f1d5782816101000a81549061ffff0219169055600201602081600101049283019260010302614eef565b505b50614834929150614f4c565b50805460008255600f016010900490600052602060002090810190610e4b91905b5b808211156148345760008155600101614f4d565b600060208083528351808285015260005b81811015614f8e57858101830151858201604001528201614f72565b81811115614fa0576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a4b57600080fd5b6000806040838503121561500b57600080fd5b61501483614fd4565b946020939093013593505050565b60006020828403121561503457600080fd5b610d5b82614fd4565b602080825282518282018190526000919060409081850190868401855b828110156150b2578151805165ffffffffffff1685528681015166ffffffffffffff16878601528581015167ffffffffffffffff9081168787015260609182015116908501526080909301929085019060010161505a565b5091979650505050505050565b6000806000606084860312156150d457600080fd5b6150dd84614fd4565b92506150eb60208501614fd4565b9150604084013590509250925092565b60006020828403121561510d57600080fd5b5035919050565b60408082528351828201819052600091906020906060850190828801855b8281101561516657615156848351805161ffff16825260209081015160ff16910152565b9285019290840190600101615132565b5050508481038286015285518082528683019183019060005b818110156151b8576151a8838551805165ffffffffffff16825260209081015161ffff16910152565b928401929185019160010161517f565b509098975050505050505050565b8015158114610e4b57600080fd5b600080604083850312156151e757600080fd5b6151f083614fd4565b91506020830135615200816151c6565b809150509250929050565b60006101008201905065ffffffffffff8084511683528060208501511660208401525066ffffffffffffff604084015116604083015260608301516152646060840182805161ffff16825260209081015160ff16910152565b506080830151805161ffff1660a0840152602081015160ff1660c08401525061ffff60a08401511660e083015292915050565b6000806000606084860312156152ac57600080fd5b6152b584614fd4565b95602085013595506040909401359392505050565b600080604083850312156152dd57600080fd5b50508035926020909101359150565b6000806000838503608081121561530257600080fd5b61530b85614fd4565b935060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561533d57600080fd5b50602084019150606084013590509250925092565b6000806040838503121561536557600080fd5b61536e83614fd4565b915061537c60208401614fd4565b90509250929050565b60008060006060848603121561539a57600080fd5b6153a384614fd4565b92506020840135915060408401356153ba816151c6565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361548357615483615423565b5060010190565b6000821982111561549d5761549d615423565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154da576154da615423565b500290565b6000828210156154f1576154f1615423565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008161553457615534615423565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826155985761559861555a565b500490565b6000604082840312156155af57600080fd5b6040516040810181811067ffffffffffffffff821117156155f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052823561ffff8116811461560e57600080fd5b8152602083013560ff8116811461562457600080fd5b60208201529392505050565b600061ffff8381169083168181101561564b5761564b615423565b039392505050565b600065ffffffffffff8083168185168183048111821515161561567857615678615423565b02949350505050565b600065ffffffffffff8381169083168181101561564b5761564b615423565b600066ffffffffffffff8381169083168181101561564b5761564b615423565b600065ffffffffffff8083168185168083038211156156e1576156e1615423565b01949350505050565b600066ffffffffffffff8083168185168183048111821515161561567857615678615423565b600066ffffffffffffff8083168185168083038211156156e1576156e1615423565b600061ffff80831681810361574957615749615423565b6001019392505050565b600061ffff8083168185168183048111821515161561567857615678615423565b600061ffff8083168185168083038211156156e1576156e1615423565b600060ff821660ff84168060ff038211156157ae576157ae615423565b019392505050565b6000602082840312156157c857600080fd5b8151610d5b816151c6565b6000826157e2576157e261555a565b50069056fea264697066735822122059f48c6e2916dbc7ef5ecd3c6f961c28f4c4059d8c689c5e15f2430c232b289664736f6c634300080d0033000000000000000000000000ab865d95a574511a6c893c38a4d892275ca70570