60806040527372c232d56542ba082592dee7c77b1c6cfa758bcd600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073deaddeaddeaddeaddeaddeaddeaddeaddead0000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600a62000186919062000ef0565b66038d7ea4c680006200019a919062000f41565b600755620001ba605060075462000b9260201b620028421790919060201c565b600855620001da602860075462000b9260201b620028421790919060201c565b600955606460105560006011556103846012556101f46013556105dc601455612710601555736bbc9a7ad195b9f460b98f03e849dc3a2274955e601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507393b41068cf2f0d96e1e02049e2de132ceafd1a27601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a601855606460195560c8601e556064601f556107086021556000602260006101000a81548160ff0219169083151502179055506207a120602b556001602c60006101000a81548160ff02191690831515021790555061138860075462000312919062000fd1565b602d553480156200032257600080fd5b5060006200033562000be460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060007381b9fa50d5f5155ee17817c21702c3ae4780ad09905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c1919062001073565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200051f929190620010b6565b6020604051808303816000875af11580156200053f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000565919062001073565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006de919062001073565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806040516200072d9062000d48565b620007399190620010e3565b604051809103906000f08015801562000756573d6000803e3d6000fd5b50602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000aa38160075462000bec60201b60201c565b5062000ada601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660075462000bec60201b60201c565b50600754600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000b83919062001111565b60405180910390a350620011f6565b600062000bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000ce060201b60201c565b905092915050565b600033905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000cce919062001111565b60405180910390a36001905092915050565b6000808311829062000d2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d219190620011d2565b60405180910390fd5b506000838562000d3b919062000fd1565b9050809150509392505050565b6120318062005e4883390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000de45780860481111562000dbc5762000dbb62000d56565b5b600185161562000dcc5780820291505b808102905062000ddc8562000d85565b945062000d9c565b94509492505050565b60008262000dff576001905062000ed2565b8162000e0f576000905062000ed2565b816001811462000e28576002811462000e335762000e69565b600191505062000ed2565b60ff84111562000e485762000e4762000d56565b5b8360020a91508482111562000e625762000e6162000d56565b5b5062000ed2565b5060208310610133831016604e8410600b841016171562000ea35782820a90508381111562000e9d5762000e9c62000d56565b5b62000ed2565b62000eb2848484600162000d92565b9250905081840481111562000ecc5762000ecb62000d56565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000efd8262000ed9565b915062000f0a8362000ee3565b925062000f397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ded565b905092915050565b600062000f4e8262000ed9565b915062000f5b8362000ed9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f975762000f9662000d56565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fde8262000ed9565b915062000feb8362000ed9565b92508262000ffe5762000ffd62000fa2565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200103b826200100e565b9050919050565b6200104d816200102e565b81146200105957600080fd5b50565b6000815190506200106d8162001042565b92915050565b6000602082840312156200108c576200108b62001009565b5b60006200109c848285016200105c565b91505092915050565b620010b0816200102e565b82525050565b6000604082019050620010cd6000830185620010a5565b620010dc6020830184620010a5565b9392505050565b6000602082019050620010fa6000830184620010a5565b92915050565b6200110b8162000ed9565b82525050565b600060208201905062001128600083018462001100565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200116a5780820151818401526020810190506200114d565b838111156200117a576000848401525b50505050565b6000601f19601f8301169050919050565b60006200119e826200112e565b620011aa818562001139565b9350620011bc8185602086016200114a565b620011c78162001180565b840191505092915050565b60006020820190508181036000830152620011ee818462001191565b905092915050565b614c4280620012066000396000f3fe6080604052600436106103035760003560e01c80637d1db4a511610190578063c6d2577d116100dc578063e91f214e11610095578063f5cfec0a1161006f578063f5cfec0a14610b7b578063f708a64f14610ba4578063f84ba65d14610bcd578063f887ea4014610bf65761030a565b8063e91f214e14610ae8578063e96fada214610b13578063f1f3bca314610b3e5761030a565b8063c6d2577d146109c4578063ca33e64c146109ef578063d51ed1c814610a1a578063d806d12f14610a57578063dd62ed3e14610a82578063df20fd4914610abf5761030a565b8063a4b45c0011610149578063a9059cbb11610123578063a9059cbb1461091a578063ad5c464814610957578063b210b06d14610982578063bf56b371146109995761030a565b8063a4b45c001461089b578063a51af4c5146108c4578063a8aa1b31146108ef5761030a565b80637d1db4a51461079d57806382247ec0146107c857806389ef69f6146107f35780638da5cb5b1461081c57806395d89b41146108475780639d1944f5146108725761030a565b80632b112e491161024f5780635c85974f116102085780636ddd1713116101e25780636ddd1713146107075780637088fb7f1461073257806370a0823114610749578063715018a6146107865761030a565b80635c85974f1461068c5780635d0044ca146106b5578063658d4b7f146106de5761030a565b80632b112e491461057c5780632d48e896146105a7578063313ce567146105d05780633425c001146105fb5780633bb8a8d414610624578063571ac8b01461064f5761030a565b8063095ea7b3116102bc578063201e799111610296578063201e7991146104b05780632375ce40146104d957806323b872dd14610502578063296020e71461053f5761030a565b8063095ea7b31461040b5780631161ae391461044857806318160ddd146104855761030a565b806301339c211461030f5780630445b66714610326578063048c7baf1461035157806304a66b481461037a57806306fdde03146103a357806307c89fe8146103ce5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c21565b005b34801561033257600080fd5b5061033b610d0b565b6040516103489190613e79565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190613efd565b610d11565b005b34801561038657600080fd5b506103a1600480360381019061039c9190613f64565b610dea565b005b3480156103af57600080fd5b506103b8610f02565b6040516103c59190614078565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f091906140f8565b610f3f565b6040516104029190614134565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d919061414f565b61102a565b60405161043f9190614134565b60405180910390f35b34801561045457600080fd5b5061046f600480360381019061046a919061418f565b61111c565b60405161047c9190614134565b60405180910390f35b34801561049157600080fd5b5061049a611131565b6040516104a79190613e79565b60405180910390f35b3480156104bc57600080fd5b506104d760048036038101906104d2919061418f565b61113b565b005b3480156104e557600080fd5b5061050060048036038101906104fb91906141cf565b6111e2565b005b34801561050e57600080fd5b5061052960048036038101906105249190614222565b6112b5565b6040516105369190614134565b60405180910390f35b34801561054b57600080fd5b50610566600480360381019061056191906140f8565b611497565b6040516105739190614134565b60405180910390f35b34801561058857600080fd5b506105916114b7565b60405161059e9190613e79565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c9919061418f565b611539565b005b3480156105dc57600080fd5b506105e5611661565b6040516105f29190614291565b60405180910390f35b34801561060757600080fd5b50610622600480360381019061061d91906140f8565b61166a565b005b34801561063057600080fd5b5061063961175a565b6040516106469190614134565b60405180910390f35b34801561065b57600080fd5b50610676600480360381019061067191906140f8565b61176d565b6040516106839190614134565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae91906142ac565b611782565b005b3480156106c157600080fd5b506106dc60048036038101906106d791906142ac565b61183d565b005b3480156106ea57600080fd5b50610705600480360381019061070091906142d9565b6118f8565b005b34801561071357600080fd5b5061071c6119e8565b6040516107299190614134565b60405180910390f35b34801561073e57600080fd5b506107476119fb565b005b34801561075557600080fd5b50610770600480360381019061076b91906140f8565b611adf565b60405161077d9190613e79565b60405180910390f35b34801561079257600080fd5b5061079b611b28565b005b3480156107a957600080fd5b506107b2611c7b565b6040516107bf9190613e79565b60405180910390f35b3480156107d457600080fd5b506107dd611c81565b6040516107ea9190613e79565b60405180910390f35b3480156107ff57600080fd5b5061081a600480360381019061081591906140f8565b611c87565b005b34801561082857600080fd5b50610831611d77565b60405161083e9190614328565b60405180910390f35b34801561085357600080fd5b5061085c611da0565b6040516108699190614078565b60405180910390f35b34801561087e57600080fd5b50610899600480360381019061089491906142ac565b611ddd565b005b3480156108a757600080fd5b506108c260048036038101906108bd9190614343565b611e8b565b005b3480156108d057600080fd5b506108d9611fa6565b6040516108e69190614328565b60405180910390f35b3480156108fb57600080fd5b50610904611fcc565b6040516109119190614328565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c919061414f565b611ff2565b60405161094e9190614134565b60405180910390f35b34801561096357600080fd5b5061096c612007565b6040516109799190614328565b60405180910390f35b34801561098e57600080fd5b5061099761202d565b005b3480156109a557600080fd5b506109ae6120cc565b6040516109bb9190613e79565b60405180910390f35b3480156109d057600080fd5b506109d96120d2565b6040516109e69190613e79565b60405180910390f35b3480156109fb57600080fd5b50610a046120d8565b604051610a119190614328565b60405180910390f35b348015610a2657600080fd5b50610a416004803603810190610a3c91906142ac565b6120fe565b604051610a4e9190613e79565b60405180910390f35b348015610a6357600080fd5b50610a6c612170565b604051610a799190613e79565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa49190614343565b61217a565b604051610ab69190613e79565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae19190614383565b612201565b005b348015610af457600080fd5b50610afd6122bb565b604051610b0a9190613e79565b60405180910390f35b348015610b1f57600080fd5b50610b286122d1565b604051610b359190614328565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b6091906143c3565b6122f7565b604051610b729190613e79565b60405180910390f35b348015610b8757600080fd5b50610ba26004803603810190610b9d91906143f0565b612333565b005b348015610bb057600080fd5b50610bcb6004803603810190610bc691906142d9565b61243f565b005b348015610bd957600080fd5b50610bf46004803603810190610bef91906142d9565b61272c565b005b348015610c0257600080fd5b50610c0b61281c565b604051610c18919061448f565b60405180910390f35b610c2961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad906144f6565b60405180910390fd5b6000601c5414610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290614562565b60405180910390fd5b43601c8190555042601d81905550565b602d5481565b610d1961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d906144f6565b60405180910390fd5b83602260006101000a81548160ff02191690831515021790555082602481905550600060258190555081602681905550806027819055504360288190555050505050565b610df261288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e76906144f6565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550610ed282610ec485610eb6888a61289490919063ffffffff16565b61289490919063ffffffff16565b61289490919063ffffffff16565b601481905550806015819055506004601554610eee91906145e0565b60145410610efb57600080fd5b5050505050565b60606040518060400160405280600b81526020017f4841505059205348494241000000000000000000000000000000000000000000815250905090565b6000610f4961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd906144f6565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161110a9190613e79565b60405180910390a36001905092915050565b600082611128836120fe565b11905092915050565b6000600754905090565b61114361288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c7906144f6565b60405180910390fd5b81601881905550806019819055505050565b6111ea61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e906144f6565b60405180910390fd5b6002828461128591906145e0565b1115801561129257508183115b61129b57600080fd5b82601e8190555081601f8190555080602181905550505050565b6000600754600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461148357611402826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61148e848484612956565b90509392505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60006115346114e7600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611adf565b611526611515600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611adf565b60075461301c90919063ffffffff16565b61301c90919063ffffffff16565b905090565b61154161288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c5906144f6565b60405180910390fd5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161162b929190614611565b600060405180830381600087803b15801561164557600080fd5b505af1158015611659573d6000803e3d6000fd5b505050505050565b60006006905090565b61167261288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f6906144f6565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602260009054906101000a900460ff1681565b600061177b8260075461102a565b9050919050565b61178a61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e906144f6565b60405180910390fd5b6103e860075461182791906145e0565b81101561183357600080fd5b8060088190555050565b61184561288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c9906144f6565b60405180910390fd5b6103e86007546118e291906145e0565b8110156118ee57600080fd5b8060098190555050565b61190061288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611984906144f6565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602c60009054906101000a900460ff1681565b611a0361288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a87906144f6565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611adb573d6000803e3d6000fd5b5050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b3061288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb4906144f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b60095481565b611c8f61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d13906144f6565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f2448415050590000000000000000000000000000000000000000000000000000815250905090565b611de561288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e69906144f6565b60405180910390fd5b620b71b08110611e8157600080fd5b80602b8190555050565b611e9361288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f17906144f6565b60405180910390fd5b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fff338484612956565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61203561288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b9906144f6565b60405180910390fd5b6000602081905550565b601c5481565b601d5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061216961210b6114b7565b61215b61214c600261213e601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611adf565b61306690919063ffffffff16565b8561306690919063ffffffff16565b61284290919063ffffffff16565b9050919050565b6000601454905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61220961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d906144f6565b60405180910390fd5b81602c60006101000a81548160ff02191690831515021790555080602d819055505050565b6fffffffffffffffffffffffffffffffff801681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000436001601c54612309919061463a565b1061231857601454905061232e565b811561232857601454905061232e565b60145490505b919050565b61233b61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf906144f6565b60405180910390fd5b6123f482600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130e1565b801561243b57426020819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a6021546040516124329190613e79565b60405180910390a15b5050565b61244761288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb906144f6565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561255e5750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61256757600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561265957602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016126229291906146cb565b600060405180830381600087803b15801561263c57600080fd5b505af1158015612650573d6000803e3d6000fd5b50505050612728565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016126f59291906146f4565b600060405180830381600087803b15801561270f57600080fd5b505af1158015612723573d6000803e3d6000fd5b505050505b5050565b61273461288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b8906144f6565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061288483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132bf565b905092915050565b600033905090565b60008082846128a3919061463a565b9050838110156128e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128df90614769565b60405180910390fd5b8091505092915050565b600083831115829061293a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129319190614078565b60405180910390fd5b50600083856129499190614789565b9050809150509392505050565b6000602e60009054906101000a900460ff161561297f57612978848484613322565b9050613015565b60007381b9fa50d5f5155ee17817c21702c3ae4780ad0990506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612a2157508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b9050612a2d8685613490565b80158015612a855750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b195760095484600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad8919061463a565b10612b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0f90614809565b60405180910390fd5b5b8015612b4c57612b2761352d565b15612b3557612b34613604565b5b612b3d613b3f565b15612b4b57612b4a613bf2565b5b5b612bd5846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612c2387613c6e565b612c2d5784612c39565b612c38878787613cc5565b5b9050612c8d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612df357602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612dbd9291906146f4565b600060405180830381600087803b158015612dd757600080fd5b505af1925050508015612de8575060015b612df157612df2565b5b5b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f1657602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ee09291906146f4565b600060405180830381600087803b158015612efa57600080fd5b505af1925050508015612f0b575060015b612f1457612f15565b5b5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479602b546040518263ffffffff1660e01b8152600401612f739190613e79565b600060405180830381600087803b158015612f8d57600080fd5b505af1925050508015612f9e575060015b612fa757612fa8565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130059190613e79565b60405180910390a3600193505050505b9392505050565b600061305e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128f2565b905092915050565b60008083141561307957600090506130db565b600082846130879190614829565b905082848261309691906145e0565b146130d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cd906148f5565b60405180910390fd5b809150505b92915050565b6001602e60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561311957613118614915565b5b6040519080825280602002602001820160405280156131475781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061318157613180614944565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106131d0576131cf614944565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b815260040161326d9493929190614a31565b6000604051808303818588803b15801561328657600080fd5b505af115801561329a573d6000803e3d6000fd5b5050505050506000602e60006101000a81548160ff0219169083151502179055505050565b60008083118290613306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fd9190614078565b60405180910390fd5b506000838561331591906145e0565b9050809150509392505050565b60006133ad826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061344282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b600854811115806134ea5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352090614ac9565b60405180910390fd5b5050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561359a5750602e60009054906101000a900460ff16155b80156135b25750602c60009054906101000a900460ff165b80156135ff5750602d54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602e60006101000a81548160ff021916908315150217905550600061362f60185460195461111c565b61363b5760105461363e565b60005b9050600061367e600261367060145461366286602d5461306690919063ffffffff16565b61284290919063ffffffff16565b61284290919063ffffffff16565b9050600061369782602d5461301c90919063ffffffff16565b90506000600267ffffffffffffffff8111156136b6576136b5614915565b5b6040519080825280602002602001820160405280156136e45781602001602082028036833780820191505090505b50905030816000815181106136fc576136fb614944565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061376d5761376c614944565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401613810959493929190614ae9565b600060405180830381600087803b15801561382a57600080fd5b505af115801561383e573d6000803e3d6000fd5b505050506000613857824761301c90919063ffffffff16565b9050600061388361387260028961284290919063ffffffff16565b60145461301c90919063ffffffff16565b905060006138bf60026138b1846138a38c8861306690919063ffffffff16565b61284290919063ffffffff16565b61284290919063ffffffff16565b905060006138ea836138dc6012548761306690919063ffffffff16565b61284290919063ffffffff16565b90506000613915846139076013548861306690919063ffffffff16565b61284290919063ffffffff16565b9050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561398157600080fd5b505af193505050508015613993575060015b61399c5761399d565b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a05573d6000803e3d6000fd5b506000891115613b1857601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613a9896959493929190614b43565b60606040518083038185885af1158015613ab6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613adb9190614bb9565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051613b0f929190614611565b60405180910390a15b505050505050505050506000602e60006101000a81548160ff021916908315150217905550565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613bac5750602e60009054906101000a900460ff16155b8015613bc45750602260009054906101000a900460ff165b8015613bdf575043602754602854613bdc919061463a565b11155b8015613bed57506026544710155b905090565b613c20602654600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130e1565b43602881905550613c3e60265460255461289490919063ffffffff16565b6025819055506024546025541115613c6c576000602260006101000a81548160ff0219169083151502179055505b565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080613d47601554613d39613d2a601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146122f7565b8661306690919063ffffffff16565b61284290919063ffffffff16565b9050613d9b81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e3b9190613e79565b60405180910390a3613e56818461301c90919063ffffffff16565b9150509392505050565b6000819050919050565b613e7381613e60565b82525050565b6000602082019050613e8e6000830184613e6a565b92915050565b600080fd5b60008115159050919050565b613eae81613e99565b8114613eb957600080fd5b50565b600081359050613ecb81613ea5565b92915050565b613eda81613e60565b8114613ee557600080fd5b50565b600081359050613ef781613ed1565b92915050565b60008060008060808587031215613f1757613f16613e94565b5b6000613f2587828801613ebc565b9450506020613f3687828801613ee8565b9350506040613f4787828801613ee8565b9250506060613f5887828801613ee8565b91505092959194509250565b600080600080600060a08688031215613f8057613f7f613e94565b5b6000613f8e88828901613ee8565b9550506020613f9f88828901613ee8565b9450506040613fb088828901613ee8565b9350506060613fc188828901613ee8565b9250506080613fd288828901613ee8565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015614019578082015181840152602081019050613ffe565b83811115614028576000848401525b50505050565b6000601f19601f8301169050919050565b600061404a82613fdf565b6140548185613fea565b9350614064818560208601613ffb565b61406d8161402e565b840191505092915050565b60006020820190508181036000830152614092818461403f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140c58261409a565b9050919050565b6140d5816140ba565b81146140e057600080fd5b50565b6000813590506140f2816140cc565b92915050565b60006020828403121561410e5761410d613e94565b5b600061411c848285016140e3565b91505092915050565b61412e81613e99565b82525050565b60006020820190506141496000830184614125565b92915050565b6000806040838503121561416657614165613e94565b5b6000614174858286016140e3565b925050602061418585828601613ee8565b9150509250929050565b600080604083850312156141a6576141a5613e94565b5b60006141b485828601613ee8565b92505060206141c585828601613ee8565b9150509250929050565b6000806000606084860312156141e8576141e7613e94565b5b60006141f686828701613ee8565b935050602061420786828701613ee8565b925050604061421886828701613ee8565b9150509250925092565b60008060006060848603121561423b5761423a613e94565b5b6000614249868287016140e3565b935050602061425a868287016140e3565b925050604061426b86828701613ee8565b9150509250925092565b600060ff82169050919050565b61428b81614275565b82525050565b60006020820190506142a66000830184614282565b92915050565b6000602082840312156142c2576142c1613e94565b5b60006142d084828501613ee8565b91505092915050565b600080604083850312156142f0576142ef613e94565b5b60006142fe858286016140e3565b925050602061430f85828601613ebc565b9150509250929050565b614322816140ba565b82525050565b600060208201905061433d6000830184614319565b92915050565b6000806040838503121561435a57614359613e94565b5b6000614368858286016140e3565b9250506020614379858286016140e3565b9150509250929050565b6000806040838503121561439a57614399613e94565b5b60006143a885828601613ebc565b92505060206143b985828601613ee8565b9150509250929050565b6000602082840312156143d9576143d8613e94565b5b60006143e784828501613ebc565b91505092915050565b6000806040838503121561440757614406613e94565b5b600061441585828601613ee8565b925050602061442685828601613ebc565b9150509250929050565b6000819050919050565b600061445561445061444b8461409a565b614430565b61409a565b9050919050565b60006144678261443a565b9050919050565b60006144798261445c565b9050919050565b6144898161446e565b82525050565b60006020820190506144a46000830184614480565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144e0602083613fea565b91506144eb826144aa565b602082019050919050565b6000602082019050818103600083015261450f816144d3565b9050919050565b7f416c7265616479206c61756e6368656420626f69000000000000000000000000600082015250565b600061454c601483613fea565b915061455782614516565b602082019050919050565b6000602082019050818103600083015261457b8161453f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145eb82613e60565b91506145f683613e60565b92508261460657614605614582565b5b828204905092915050565b60006040820190506146266000830185613e6a565b6146336020830184613e6a565b9392505050565b600061464582613e60565b915061465083613e60565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614685576146846145b1565b5b828201905092915050565b6000819050919050565b60006146b56146b06146ab84614690565b614430565b613e60565b9050919050565b6146c58161469a565b82525050565b60006040820190506146e06000830185614319565b6146ed60208301846146bc565b9392505050565b60006040820190506147096000830185614319565b6147166020830184613e6a565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614753601b83613fea565b915061475e8261471d565b602082019050919050565b6000602082019050818103600083015261478281614746565b9050919050565b600061479482613e60565b915061479f83613e60565b9250828210156147b2576147b16145b1565b5b828203905092915050565b7f4d61782077616c6c657420686173206265656e20747269676765726564000000600082015250565b60006147f3601d83613fea565b91506147fe826147bd565b602082019050919050565b60006020820190508181036000830152614822816147e6565b9050919050565b600061483482613e60565b915061483f83613e60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614878576148776145b1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006148df602183613fea565b91506148ea82614883565b604082019050919050565b6000602082019050818103600083015261490e816148d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149a8816140ba565b82525050565b60006149ba838361499f565b60208301905092915050565b6000602082019050919050565b60006149de82614973565b6149e8818561497e565b93506149f38361498f565b8060005b83811015614a24578151614a0b88826149ae565b9750614a16836149c6565b9250506001810190506149f7565b5085935050505092915050565b6000608082019050614a4660008301876146bc565b8181036020830152614a5881866149d3565b9050614a676040830185614319565b614a746060830184613e6a565b95945050505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614ab3601183613fea565b9150614abe82614a7d565b602082019050919050565b60006020820190508181036000830152614ae281614aa6565b9050919050565b600060a082019050614afe6000830188613e6a565b614b0b60208301876146bc565b8181036040830152614b1d81866149d3565b9050614b2c6060830185614319565b614b396080830184613e6a565b9695505050505050565b600060c082019050614b586000830189614319565b614b656020830188613e6a565b614b7260408301876146bc565b614b7f60608301866146bc565b614b8c6080830185614319565b614b9960a0830184613e6a565b979650505050505050565b600081519050614bb381613ed1565b92915050565b600080600060608486031215614bd257614bd1613e94565b5b6000614be086828701614ba4565b9350506020614bf186828701614ba4565b9250506040614c0286828701614ba4565b915050925092509256fea26469706673582212202828507d0d05e3e237e070dd12bf7969b59fe3f48f0427b22738d22c6b5ab2ec64736f6c634300080c003360806040527372c232d56542ba082592dee7c77b1c6cfa758bcd600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073deaddeaddeaddeaddeaddeaddeaddeaddead0000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55678ac7230489e80000600e55348015620000e057600080fd5b50604051620020313803806200203183398181016040528101906200010691906200024a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000157577381b9fa50d5f5155ee17817c21702c3ae4780ad0962000159565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200027c565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200021282620001e5565b9050919050565b620002248162000205565b81146200023057600080fd5b50565b600081519050620002448162000219565b92915050565b600060208284031215620002635762000262620001e0565b5b6000620002738482850162000233565b91505092915050565b611da5806200028c6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610291578063f0fc6bca146102bc578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063ce7c2ac21461021d578063d0e30db01461025c578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101735780633a98ef391461019c5780634fab0ae8146101c7578063997664d7146101f2576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b6040516101049190611569565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611613565b61032d565b005b34801561014257600080fd5b5061015d60048036038101906101589190611653565b6105ec565b60405161016a9190611569565b60405180910390f35b34801561017f57600080fd5b5061019a60048036038101906101959190611680565b610706565b005b3480156101a857600080fd5b506101b1610770565b6040516101be9190611569565b60405180910390f35b3480156101d357600080fd5b506101dc610776565b6040516101e99190611569565b60405180910390f35b3480156101fe57600080fd5b5061020761077c565b6040516102149190611569565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611653565b610782565b604051610253939291906116c0565b60405180910390f35b6102646107ac565b005b34801561027257600080fd5b5061027b610b7e565b6040516102889190611569565b60405180910390f35b34801561029d57600080fd5b506102a6610b84565b6040516102b39190611569565b60405180910390f35b3480156102c857600080fd5b506102d1610b8a565b005b3480156102df57600080fd5b506102fa60048036038101906102f591906116f7565b610b95565b005b34801561030857600080fd5b50610311610d29565b60405161031e9190611569565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610d2f565b5b60008111801561042c57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a82610fc7565b6104a1565b60008114801561049157506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f82611076565b5b5b61050a816104fc600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461127d90919063ffffffff16565b6112c790919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611325565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106415760009050610701565b600061068e600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611325565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e957600092505050610701565b6106fc818361127d90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080457600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108619190611733565b602060405180830381865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190611763565b90506000600267ffffffffffffffff8111156108c1576108c0611790565b5b6040519080825280602002602001820160405280156108ef5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610929576109286117bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061099a576109996117bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610a3794939291906118f1565b6000604051808303818588803b158015610a5057600080fd5b505af1158015610a64573d6000803e3d6000fd5b50505050506000610b1983600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610aca9190611733565b602060405180830381865afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190611763565b61127d90919063ffffffff16565b9050610b30816009546112c790919063ffffffff16565b600981905550610b73610b62600854610b5484600c5461135790919063ffffffff16565b6113d290919063ffffffff16565b600b546112c790919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610b9333610d2f565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bed57600080fd5b600060048054905090506000811415610c065750610d26565b6000805a905060005b8483108015610c1d57508381105b15610d215783600f5410610c34576000600f819055505b610c7d6004600f5481548110610c4d57610c4c6117bf565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141c565b15610ccc57610ccb6004600f5481548110610c9b57610c9a6117bf565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d2f565b5b610cf1610ce25a8461127d90919063ffffffff16565b846112c790919063ffffffff16565b92505a9150600f6000815480929190610d099061196c565b91905055508080610d199061196c565b915050610c0f565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610d7f57610fc4565b6000610d8a826105ec565b90506000811115610fc257610daa81600a546112c790919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610e0d9291906119b5565b6020604051808303816000875af1158015610e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190611a16565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610eea81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546112c790919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610f7b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611325565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004600160048054905061108a9190611a43565b8154811061109b5761109a6117bf565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611119576111186117bf565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506111b99190611a43565b815481106111ca576111c96117bf565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061124557611244611a77565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b60006112bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611489565b905092915050565b60008082846112d69190611aa6565b90508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611b59565b60405180910390fd5b8091505092915050565b6000611350600c54611342600b548561135790919063ffffffff16565b6113d290919063ffffffff16565b9050919050565b60008083141561136a57600090506113cc565b600082846113789190611b79565b90508284826113879190611c02565b146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90611ca5565b60405180910390fd5b809150505b92915050565b600061141483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114ed565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146c9190611aa6565b1080156114825750600e54611480836105ec565b115b9050919050565b60008383111582906114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c89190611d4d565b60405180910390fd5b50600083856114e09190611a43565b9050809150509392505050565b60008083118290611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b9190611d4d565b60405180910390fd5b50600083856115439190611c02565b9050809150509392505050565b6000819050919050565b61156381611550565b82525050565b600060208201905061157e600083018461155a565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115b482611589565b9050919050565b6115c4816115a9565b81146115cf57600080fd5b50565b6000813590506115e1816115bb565b92915050565b6115f081611550565b81146115fb57600080fd5b50565b60008135905061160d816115e7565b92915050565b6000806040838503121561162a57611629611584565b5b6000611638858286016115d2565b9250506020611649858286016115fe565b9150509250929050565b60006020828403121561166957611668611584565b5b6000611677848285016115d2565b91505092915050565b6000806040838503121561169757611696611584565b5b60006116a5858286016115fe565b92505060206116b6858286016115fe565b9150509250929050565b60006060820190506116d5600083018661155a565b6116e2602083018561155a565b6116ef604083018461155a565b949350505050565b60006020828403121561170d5761170c611584565b5b600061171b848285016115fe565b91505092915050565b61172d816115a9565b82525050565b60006020820190506117486000830184611724565b92915050565b60008151905061175d816115e7565b92915050565b60006020828403121561177957611778611584565b5b60006117878482850161174e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061181d611818611813846117ee565b6117f8565b611550565b9050919050565b61182d81611802565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611868816115a9565b82525050565b600061187a838361185f565b60208301905092915050565b6000602082019050919050565b600061189e82611833565b6118a8818561183e565b93506118b38361184f565b8060005b838110156118e45781516118cb888261186e565b97506118d683611886565b9250506001810190506118b7565b5085935050505092915050565b60006080820190506119066000830187611824565b81810360208301526119188186611893565b90506119276040830185611724565b611934606083018461155a565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061197782611550565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119aa576119a961193d565b5b600182019050919050565b60006040820190506119ca6000830185611724565b6119d7602083018461155a565b9392505050565b60008115159050919050565b6119f3816119de565b81146119fe57600080fd5b50565b600081519050611a10816119ea565b92915050565b600060208284031215611a2c57611a2b611584565b5b6000611a3a84828501611a01565b91505092915050565b6000611a4e82611550565b9150611a5983611550565b925082821015611a6c57611a6b61193d565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000611ab182611550565b9150611abc83611550565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611af157611af061193d565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611b43601b83611afc565b9150611b4e82611b0d565b602082019050919050565b60006020820190508181036000830152611b7281611b36565b9050919050565b6000611b8482611550565b9150611b8f83611550565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611bc857611bc761193d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611c0d82611550565b9150611c1883611550565b925082611c2857611c27611bd3565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c8f602183611afc565b9150611c9a82611c33565b604082019050919050565b60006020820190508181036000830152611cbe81611c82565b9050919050565b600081519050919050565b60005b83811015611cee578082015181840152602081019050611cd3565b83811115611cfd576000848401525b50505050565b6000601f19601f8301169050919050565b6000611d1f82611cc5565b611d298185611afc565b9350611d39818560208601611cd0565b611d4281611d03565b840191505092915050565b60006020820190508181036000830152611d678184611d14565b90509291505056fea2646970667358221220cdc2953f7b652d7aac75479dfe8693f721fdc3013353da5ab0489100dd744c7f64736f6c634300080c0033