60806040526002600a556000600c5569021e19e0c9bab2400000600d556a084595161401484a000000600e55692a5a058fc295ed000000600f55600160105573138d404461685e4ed7a32b398b88d22b2b9157cf601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073138d404461685e4ed7a32b398b88d22b2b9157cf601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060058152602001600081526020016000815250601360008201518160000155602082015181600101556040820151816002015550506040518060600160405280600581526020016000815260200160008152506016600082015181600001556020820151816001015560408201518160020155505060056019556005601a553480156200017f57600080fd5b506040518060400160405280600d81526020017f42616279204d696e6f20496e75000000000000000000000000000000000000008152506040518060400160405280600581526020017f424d494e4f000000000000000000000000000000000000000000000000000000815250816003908051906020019062000204929190620008c5565b5080600490805190602001906200021d929190620008c5565b50505062000240620002346200068460201b60201c565b6200068c60201b60201c565b6200027f33620002556200075260201b60201c565b600a62000263919062000b0f565b6298968062000273919062000b60565b6200075b60201b60201c565b6001601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000364919062000c2b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f2919062000c2b565b6040518363ffffffff1660e01b81526004016200041192919062000c6e565b6020604051808303816000875af115801562000431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000457919062000c2b565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e34565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c59062000d22565b60405180910390fd5b620007e260008383620008c060201b60201c565b8060026000828254620007f6919062000d44565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200084d919062000d44565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008b4919062000db2565b60405180910390a35050565b505050565b828054620008d39062000dfe565b90600052602060002090601f016020900481019282620008f7576000855562000943565b82601f106200091257805160ff191683800117855562000943565b8280016001018555821562000943579182015b828111156200094257825182559160200191906001019062000925565b5b50905062000952919062000956565b5090565b5b808211156200097157600081600090555060010162000957565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a0357808604811115620009db57620009da62000975565b5b6001851615620009eb5780820291505b8081029050620009fb85620009a4565b9450620009bb565b94509492505050565b60008262000a1e576001905062000af1565b8162000a2e576000905062000af1565b816001811462000a47576002811462000a525762000a88565b600191505062000af1565b60ff84111562000a675762000a6662000975565b5b8360020a91508482111562000a815762000a8062000975565b5b5062000af1565b5060208310610133831016604e8410600b841016171562000ac25782820a90508381111562000abc5762000abb62000975565b5b62000af1565b62000ad18484846001620009b1565b9250905081840481111562000aeb5762000aea62000975565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b1c8262000af8565b915062000b298362000b02565b925062000b587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a0c565b905092915050565b600062000b6d8262000af8565b915062000b7a8362000af8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bb65762000bb562000975565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bf38262000bc6565b9050919050565b62000c058162000be6565b811462000c1157600080fd5b50565b60008151905062000c258162000bfa565b92915050565b60006020828403121562000c445762000c4362000bc1565b5b600062000c548482850162000c14565b91505092915050565b62000c688162000be6565b82525050565b600060408201905062000c85600083018562000c5d565b62000c94602083018462000c5d565b9392505050565b600082825260208201905092915050565b7f45524332303a20496e69746961746520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600062000d0a60238362000c9b565b915062000d178262000cac565b604082019050919050565b6000602082019050818103600083015262000d3d8162000cfb565b9050919050565b600062000d518262000af8565b915062000d5e8362000af8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d965762000d9562000975565b5b828201905092915050565b62000dac8162000af8565b82525050565b600060208201905062000dc9600083018462000da1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e1757607f821691505b6020821081141562000e2e5762000e2d62000dcf565b5b50919050565b6147738062000e446000396000f3fe60806040526004361061028c5760003560e01c80638c374ac11161015a578063b4337b4e116100c1578063e01af92c1161007a578063e01af92c146109f5578063e24b85e714610a1e578063e545fd6d14610a49578063f2fde38b14610a72578063f66895a314610a9b578063f887ea4014610ac857610293565b8063b4337b4e146108d5578063bcff895a146108fe578063c18bc19514610929578063d34628cc14610952578063dbe66ca01461097b578063dd62ed3e146109b857610293565b80639e252f00116101135780639e252f00146107b3578063a457c2d7146107dc578063a8aa1b3114610819578063a9059cbb14610844578063aa4bde2814610881578063aacebbe3146108ac57610293565b80638c374ac1146106b75780638cd4426d146106e05780638da5cb5b146107095780638ea5220f1461073457806395d89b411461075f5780639d0014b11461078a57610293565b806339509351116101fe578063715018a6116101b7578063715018a6146105b5578063728f8eea146105cc57806373bd699a146105f9578063743584981461062457806375f0a874146106615780638c0b5e221461068c57610293565b8063395093511461049157806340b28c2f146104ce57806350c9a88f146104f757806356b4286d146105225780636ddd17131461054d57806370a082311461057857610293565b80632253163d116102505780632253163d1461037f57806323b872dd146103aa57806326b5d32f146103e7578063274a533c14610410578063293b7ef41461043b578063313ce5671461046657610293565b80630445b6671461029857806306fdde03146102c3578063095ea7b3146102ee57806318160ddd1461032b5780631816467f1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610af3565b6040516102ba9190613233565b60405180910390f35b3480156102cf57600080fd5b506102d8610af9565b6040516102e591906132e7565b60405180910390f35b3480156102fa57600080fd5b50610315600480360381019061031091906133a7565b610b8b565b6040516103229190613402565b60405180910390f35b34801561033757600080fd5b50610340610ba9565b60405161034d9190613233565b60405180910390f35b34801561036257600080fd5b5061037d6004803603810190610378919061341d565b610bb3565b005b34801561038b57600080fd5b50610394610c73565b6040516103a19190613233565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061344a565b610c79565b6040516103de9190613402565b60405180910390f35b3480156103f357600080fd5b5061040e6004803603810190610409919061349d565b610d7a565b005b34801561041c57600080fd5b50610425610f07565b6040516104329190613233565b60405180910390f35b34801561044757600080fd5b50610450610f0d565b60405161045d9190613233565b60405180910390f35b34801561047257600080fd5b5061047b610f13565b604051610488919061350c565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906133a7565b610f1c565b6040516104c59190613402565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613565565b610fc8565b005b34801561050357600080fd5b5061050c6110ca565b6040516105199190613233565b60405180910390f35b34801561052e57600080fd5b506105376110d0565b6040516105449190613233565b60405180910390f35b34801561055957600080fd5b506105626110d6565b60405161056f9190613402565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a919061341d565b6110e9565b6040516105ac9190613233565b60405180910390f35b3480156105c157600080fd5b506105ca611131565b005b3480156105d857600080fd5b506105e16111b9565b6040516105f0939291906135a5565b60405180910390f35b34801561060557600080fd5b5061060e6111d1565b60405161061b9190613402565b60405180910390f35b34801561063057600080fd5b5061064b6004803603810190610646919061341d565b6111e4565b6040516106589190613402565b60405180910390f35b34801561066d57600080fd5b506106766111f6565b60405161068391906135eb565b60405180910390f35b34801561069857600080fd5b506106a161121c565b6040516106ae9190613233565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d9919061349d565b611222565b005b3480156106ec57600080fd5b50610707600480360381019061070291906133a7565b6112de565b005b34801561071557600080fd5b5061071e6113e4565b60405161072b91906135eb565b60405180910390f35b34801561074057600080fd5b5061074961140e565b60405161075691906135eb565b60405180910390f35b34801561076b57600080fd5b50610774611434565b60405161078191906132e7565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190613606565b6114c6565b005b3480156107bf57600080fd5b506107da60048036038101906107d59190613606565b61154c565b005b3480156107e857600080fd5b5061080360048036038101906107fe91906133a7565b6115fb565b6040516108109190613402565b60405180910390f35b34801561082557600080fd5b5061082e6116ef565b60405161083b91906135eb565b60405180910390f35b34801561085057600080fd5b5061086b600480360381019061086691906133a7565b611715565b6040516108789190613402565b60405180910390f35b34801561088d57600080fd5b50610896611733565b6040516108a39190613233565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce919061341d565b611739565b005b3480156108e157600080fd5b506108fc60048036038101906108f7919061349d565b6117f9565b005b34801561090a57600080fd5b506109136118b5565b6040516109209190613233565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190613606565b6118bb565b005b34801561095e57600080fd5b506109796004803603810190610974919061377b565b611954565b005b34801561098757600080fd5b506109a2600480360381019061099d919061341d565b611a65565b6040516109af9190613402565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da91906137c4565b611a85565b6040516109ec9190613233565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190613830565b611b0c565b005b348015610a2a57600080fd5b50610a33611ba5565b604051610a4091906138bc565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b91906138d7565b611bcb565b005b348015610a7e57600080fd5b50610a996004803603810190610a94919061341d565b611ca2565b005b348015610aa757600080fd5b50610ab0611d9a565b604051610abf939291906135a5565b60405180910390f35b348015610ad457600080fd5b50610add611db2565b604051610aea9190613938565b60405180910390f35b600d5481565b606060038054610b0890613982565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3490613982565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b5050505050905090565b6000610b9f610b98611dd8565b8484611de0565b6001905092915050565b6000600254905090565b610bbb611dd8565b73ffffffffffffffffffffffffffffffffffffffff16610bd96113e4565b73ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690613a00565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000610c86848484611fab565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cd1611dd8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4890613a92565b60405180910390fd5b610d6e85610d5d611dd8565b8584610d699190613ae1565b611de0565b60019150509392505050565b610d82611dd8565b73ffffffffffffffffffffffffffffffffffffffff16610da06113e4565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90613a00565b60405180910390fd5b6000479050610e04846126ef565b60008147610e129190613ae1565b90506000831115610e8a57610e898385610e2c9190613b15565b8483610e389190613b6b565b610e429190613bf4565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661293290919063ffffffff16565b5b6000841115610f0057610eff8385610ea29190613b15565b8583610eae9190613b6b565b610eb89190613bf4565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661293290919063ffffffff16565b5b5050505050565b600b5481565b60195481565b60006012905090565b6000610fbe610f29611dd8565b848460016000610f37611dd8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fb99190613b15565b611de0565b6001905092915050565b610fd0611dd8565b73ffffffffffffffffffffffffffffffffffffffff16610fee6113e4565b73ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90613a00565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b600a5481565b600860159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611139611dd8565b73ffffffffffffffffffffffffffffffffffffffff166111576113e4565b73ffffffffffffffffffffffffffffffffffffffff16146111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a490613a00565b60405180910390fd5b6111b76000612a26565b565b60138060000154908060010154908060020154905083565b600860169054906101000a900460ff1681565b60006111ef82612aec565b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b61122a611dd8565b73ffffffffffffffffffffffffffffffffffffffff166112486113e4565b73ffffffffffffffffffffffffffffffffffffffff161461129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129590613a00565b60405180910390fd5b8260136001018190555081601360020181905550806013600001819055508082846112c99190613b15565b6112d39190613b15565b601981905550505050565b6112e6611dd8565b73ffffffffffffffffffffffffffffffffffffffff166113046113e4565b73ffffffffffffffffffffffffffffffffffffffff161461135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135190613a00565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61137e6113e4565b836040518363ffffffff1660e01b815260040161139c929190613c25565b6020604051808303816000875af11580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190613c63565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461144390613982565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90613982565b80156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505050905090565b6114ce611dd8565b73ffffffffffffffffffffffffffffffffffffffff166114ec6113e4565b73ffffffffffffffffffffffffffffffffffffffff1614611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990613a00565b60405180910390fd5b80600d8190555050565b611554611dd8565b73ffffffffffffffffffffffffffffffffffffffff166115726113e4565b73ffffffffffffffffffffffffffffffffffffffff16146115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90613a00565b60405180910390fd5b6115f8816115d46113e4565b73ffffffffffffffffffffffffffffffffffffffff1661293290919063ffffffff16565b50565b6000806001600061160a611dd8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90613d02565b60405180910390fd5b6116e46116d2611dd8565b8585846116df9190613ae1565b611de0565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611729611722611dd8565b8484611fab565b6001905092915050565b600f5481565b611741611dd8565b73ffffffffffffffffffffffffffffffffffffffff1661175f6113e4565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90613a00565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611801611dd8565b73ffffffffffffffffffffffffffffffffffffffff1661181f6113e4565b73ffffffffffffffffffffffffffffffffffffffff1614611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c90613a00565b60405180910390fd5b8260166001018190555081601660020181905550806016600001819055508082846118a09190613b15565b6118aa9190613b15565b601a81905550505050565b60095481565b6118c3611dd8565b73ffffffffffffffffffffffffffffffffffffffff166118e16113e4565b73ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613a00565b60405180910390fd5b670de0b6b3a76400008161194b9190613b6b565b600f8190555050565b61195c611dd8565b73ffffffffffffffffffffffffffffffffffffffff1661197a6113e4565b73ffffffffffffffffffffffffffffffffffffffff16146119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c790613a00565b60405180910390fd5b60005b8151811015611a61576001601c60008484815181106119f5576119f4613d22565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a5990613d51565b9150506119d3565b5050565b601b6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b14611dd8565b73ffffffffffffffffffffffffffffffffffffffff16611b326113e4565b73ffffffffffffffffffffffffffffffffffffffff1614611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f90613a00565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bd3611dd8565b73ffffffffffffffffffffffffffffffffffffffff16611bf16113e4565b73ffffffffffffffffffffffffffffffffffffffff1614611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e90613a00565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611caa611dd8565b73ffffffffffffffffffffffffffffffffffffffff16611cc86113e4565b73ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613a00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590613e0c565b60405180910390fd5b611d9781612a26565b50565b60168060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790613e9e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb790613f30565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f9e9190613233565b60405180910390a3505050565b60008111611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe590613fc2565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120925750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c89061402e565b60405180910390fd5b6120da83612aec565b1580156120ed57506120eb82612aec565b155b1561213b576120fa612c33565b1561213a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121319061409a565b60405180910390fd5b5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905061219981612c4d565b601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561223d5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122565750600860149054906101000a900460ff16155b156124c35743600c54600b5461226c9190613b15565b11156123cf57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612320576001601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146123ce576001601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600e54821115612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b90614106565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124c257600f5482612476856110e9565b6124809190613b15565b11156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614198565b60405180910390fd5b5b5b6000600860149054906101000a900460ff16806125295750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061257d5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561258b5760009050612620565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612602576064601a54846125f19190613b6b565b6125fb9190613bf4565b905061261f565b6064601954846126129190613b6b565b61261c9190613bf4565b90505b5b600860159054906101000a900460ff1680156126495750600860149054906101000a900460ff16155b80156126a35750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156126af5750600081115b156126bd576126bc612c92565b5b6126d3858583866126ce9190613ae1565b612e96565b60008111156126e8576126e7853083612e96565b5b5050505050565b6000600267ffffffffffffffff81111561270c5761270b613638565b5b60405190808252806020026020018201604052801561273a5781602001602082028036833780820191505090505b509050308160008151811061275257612751613d22565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281d91906141cd565b8160018151811061283157612830613d22565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061289830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611de0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128fc9594939291906142f3565b600060405180830381600087803b15801561291657600080fd5b505af115801561292a573d6000803e3d6000fd5b505050505050565b80471015612975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296c90614399565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161299b906143ea565b60006040518083038185875af1925050503d80600081146129d8576040519150601f19603f3d011682016040523d82523d6000602084013e6129dd565b606091505b5050905080612a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1890614471565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000633b9aca00600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8491906144a6565b612b8e9190613bf4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401612be991906135eb565b602060405180830381865afa158015612c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2a91906144a6565b10159050919050565b6000600a54600954612c459190613b15565b431115905090565b600860169054906101000a900460ff16158015612c675750805b15612c8f576001600860166101000a81548160ff021916908315150217905550436009819055505b50565b600860149054906101000a900460ff16612e94576001600860146101000a81548160ff0219169083151502179055506000612ccc306110e9565b9050600d548110612e775760006002601a54612ce89190613b6b565b905060008160166001015484612cfe9190613b6b565b612d089190613bf4565b905060008184612d189190613ae1565b90506000479050612d28826126ef565b60008147612d369190613ae1565b9050600060166001015486612d4b9190613ae1565b82612d569190613bf4565b9050600060166001015482612d6b9190613b6b565b90506000811115612d8157612d808682613115565b5b6000601660000154600284612d969190613b6b565b612da09190613b6b565b90506000811115612df757612df681601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661293290919063ffffffff16565b5b6000601660020154600285612e0c9190613b6b565b612e169190613b6b565b90506000811115612e6d57612e6c81601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661293290919063ffffffff16565b5b5050505050505050505b506000600860146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efd90614545565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6d906145d7565b60405180910390fd5b612f81838383613215565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffe90614669565b60405180910390fd5b81816130139190613ae1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130a39190613b15565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131079190613233565b60405180910390a350505050565b61314230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611de0565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131cb96959493929190614689565b60606040518083038185885af11580156131e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061320e91906146ea565b5050505050565b505050565b6000819050919050565b61322d8161321a565b82525050565b60006020820190506132486000830184613224565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561328857808201518184015260208101905061326d565b83811115613297576000848401525b50505050565b6000601f19601f8301169050919050565b60006132b98261324e565b6132c38185613259565b93506132d381856020860161326a565b6132dc8161329d565b840191505092915050565b6000602082019050818103600083015261330181846132ae565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133488261331d565b9050919050565b6133588161333d565b811461336357600080fd5b50565b6000813590506133758161334f565b92915050565b6133848161321a565b811461338f57600080fd5b50565b6000813590506133a18161337b565b92915050565b600080604083850312156133be576133bd613313565b5b60006133cc85828601613366565b92505060206133dd85828601613392565b9150509250929050565b60008115159050919050565b6133fc816133e7565b82525050565b600060208201905061341760008301846133f3565b92915050565b60006020828403121561343357613432613313565b5b600061344184828501613366565b91505092915050565b60008060006060848603121561346357613462613313565b5b600061347186828701613366565b935050602061348286828701613366565b925050604061349386828701613392565b9150509250925092565b6000806000606084860312156134b6576134b5613313565b5b60006134c486828701613392565b93505060206134d586828701613392565b92505060406134e686828701613392565b9150509250925092565b600060ff82169050919050565b613506816134f0565b82525050565b600060208201905061352160008301846134fd565b92915050565b60006135328261333d565b9050919050565b61354281613527565b811461354d57600080fd5b50565b60008135905061355f81613539565b92915050565b6000806040838503121561357c5761357b613313565b5b600061358a85828601613550565b925050602061359b85828601613366565b9150509250929050565b60006060820190506135ba6000830186613224565b6135c76020830185613224565b6135d46040830184613224565b949350505050565b6135e58161333d565b82525050565b600060208201905061360060008301846135dc565b92915050565b60006020828403121561361c5761361b613313565b5b600061362a84828501613392565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136708261329d565b810181811067ffffffffffffffff8211171561368f5761368e613638565b5b80604052505050565b60006136a2613309565b90506136ae8282613667565b919050565b600067ffffffffffffffff8211156136ce576136cd613638565b5b602082029050602081019050919050565b600080fd5b60006136f76136f2846136b3565b613698565b9050808382526020820190506020840283018581111561371a576137196136df565b5b835b81811015613743578061372f8882613366565b84526020840193505060208101905061371c565b5050509392505050565b600082601f83011261376257613761613633565b5b81356137728482602086016136e4565b91505092915050565b60006020828403121561379157613790613313565b5b600082013567ffffffffffffffff8111156137af576137ae613318565b5b6137bb8482850161374d565b91505092915050565b600080604083850312156137db576137da613313565b5b60006137e985828601613366565b92505060206137fa85828601613366565b9150509250929050565b61380d816133e7565b811461381857600080fd5b50565b60008135905061382a81613804565b92915050565b60006020828403121561384657613845613313565b5b60006138548482850161381b565b91505092915050565b6000819050919050565b600061388261387d6138788461331d565b61385d565b61331d565b9050919050565b600061389482613867565b9050919050565b60006138a682613889565b9050919050565b6138b68161389b565b82525050565b60006020820190506138d160008301846138ad565b92915050565b600080604083850312156138ee576138ed613313565b5b60006138fc85828601613366565b925050602061390d8582860161381b565b9150509250929050565b600061392282613889565b9050919050565b61393281613917565b82525050565b600060208201905061394d6000830184613929565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061399a57607f821691505b602082108114156139ae576139ad613953565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139ea602083613259565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a7c602883613259565b9150613a8782613a20565b604082019050919050565b60006020820190508181036000830152613aab81613a6f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613aec8261321a565b9150613af78361321a565b925082821015613b0a57613b09613ab2565b5b828203905092915050565b6000613b208261321a565b9150613b2b8361321a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b6057613b5f613ab2565b5b828201905092915050565b6000613b768261321a565b9150613b818361321a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bba57613bb9613ab2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bff8261321a565b9150613c0a8361321a565b925082613c1a57613c19613bc5565b5b828204905092915050565b6000604082019050613c3a60008301856135dc565b613c476020830184613224565b9392505050565b600081519050613c5d81613804565b92915050565b600060208284031215613c7957613c78613313565b5b6000613c8784828501613c4e565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613cec602583613259565b9150613cf782613c90565b604082019050919050565b60006020820190508181036000830152613d1b81613cdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613d5c8261321a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d8f57613d8e613ab2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613df6602683613259565b9150613e0182613d9a565b604082019050919050565b60006020820190508181036000830152613e2581613de9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e88602483613259565b9150613e9382613e2c565b604082019050919050565b60006020820190508181036000830152613eb781613e7b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f1a602283613259565b9150613f2582613ebe565b604082019050919050565b60006020820190508181036000830152613f4981613f0d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613fac602983613259565b9150613fb782613f50565b604082019050919050565b60006020820190508181036000830152613fdb81613f9f565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000614018601983613259565b915061402382613fe2565b602082019050919050565b600060208201905081810360008301526140478161400b565b9050919050565b7f6e2f610000000000000000000000000000000000000000000000000000000000600082015250565b6000614084600383613259565b915061408f8261404e565b602082019050919050565b600060208201905081810360008301526140b381614077565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b60006140f0601d83613259565b91506140fb826140ba565b602082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614182602183613259565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b6000815190506141c78161334f565b92915050565b6000602082840312156141e3576141e2613313565b5b60006141f1848285016141b8565b91505092915050565b6000819050919050565b600061421f61421a614215846141fa565b61385d565b61321a565b9050919050565b61422f81614204565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61426a8161333d565b82525050565b600061427c8383614261565b60208301905092915050565b6000602082019050919050565b60006142a082614235565b6142aa8185614240565b93506142b583614251565b8060005b838110156142e65781516142cd8882614270565b97506142d883614288565b9250506001810190506142b9565b5085935050505092915050565b600060a0820190506143086000830188613224565b6143156020830187614226565b81810360408301526143278186614295565b905061433660608301856135dc565b6143436080830184613224565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614383601d83613259565b915061438e8261434d565b602082019050919050565b600060208201905081810360008301526143b281614376565b9050919050565b600081905092915050565b50565b60006143d46000836143b9565b91506143df826143c4565b600082019050919050565b60006143f5826143c7565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061445b603a83613259565b9150614466826143ff565b604082019050919050565b6000602082019050818103600083015261448a8161444e565b9050919050565b6000815190506144a08161337b565b92915050565b6000602082840312156144bc576144bb613313565b5b60006144ca84828501614491565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061452f602583613259565b915061453a826144d3565b604082019050919050565b6000602082019050818103600083015261455e81614522565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145c1602383613259565b91506145cc82614565565b604082019050919050565b600060208201905081810360008301526145f0816145b4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614653602683613259565b915061465e826145f7565b604082019050919050565b6000602082019050818103600083015261468281614646565b9050919050565b600060c08201905061469e60008301896135dc565b6146ab6020830188613224565b6146b86040830187614226565b6146c56060830186614226565b6146d260808301856135dc565b6146df60a0830184613224565b979650505050505050565b60008060006060848603121561470357614702613313565b5b600061471186828701614491565b935050602061472286828701614491565b925050604061473386828701614491565b915050925092509256fea26469706673582212201a25b61183269844817033aae6836b786f6eaa586c23638fce3f1d826e4a1d7c64736f6c634300080c0033