60806040526001600055611b39600a556618838370f34000600c556005600d556005600e556000600f55600160105560016011553480156200004057600080fd5b506040518060400160405280600981526020017f75676c79666c69657300000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f55460000000000000000000000000000000000000000000000000000000000008152508160019080519060200190620000c5929190620001d5565b508060029080519060200190620000de929190620001d5565b50505062000101620000f56200010760201b60201c565b6200010f60201b60201c565b620002ea565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001e390620002b4565b90600052602060002090601f01602090048101928262000207576000855562000253565b82601f106200022257805160ff191683800117855562000253565b8280016001018555821562000253579182015b828111156200025257825182559160200191906001019062000235565b5b50905062000262919062000266565b5090565b5b808211156200028157600081600090555060010162000267565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002cd57607f821691505b60208210811415620002e457620002e362000285565b5b50919050565b614c0b80620002fa6000396000f3fe6080604052600436106102675760003560e01c80636f8b44b011610144578063b88d4fde116100b6578063e268e4d31161007a578063e268e4d314610914578063e985e9c51461093d578063f2fde38b1461097a578063f737c47a146109a3578063f9020e33146109ce578063f968adbe146109f957610267565b8063b88d4fde1461082f578063c4e41b2214610858578063c6f6f21614610883578063c87b56dd146108ac578063d5abeb01146108e957610267565b80638da5cb5b116101085780638da5cb5b1461073157806391b7f5ed1461075c57806395d89b4114610785578063a035b1fe146107b0578063a22cb465146107db578063a70273571461080457610267565b80636f8b44b01461064c57806370a0823114610675578063715018a6146106b25780637dc949b2146106c95780637de77ecc146106f457610267565b80633ccfd60b116101dd5780634f6ccce7116101a15780634f6ccce71461054d578063502b33af1461058a57806355f804b3146105a15780636352211e146105ca5780636414044f146106075780636d7c4a4b1461062357610267565b80633ccfd60b1461048e57806340f070a8146104a557806342842e0e146104ce578063453c2310146104f75780634c0f38c21461052257610267565b80631491c2e51161022f5780631491c2e51461035657806318160ddd14610393578063204f490c146103be57806323b872dd146103fd57806326987b60146104265780632f745c591461045157610267565b806301ffc9a71461026c57806306fdde03146102a9578063081812fc146102d4578063095ea7b3146103115780630fbe4fe21461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613405565b610a24565b6040516102a0919061344d565b60405180910390f35b3480156102b557600080fd5b506102be610b6e565b6040516102cb9190613501565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190613559565b610c00565b60405161030891906135c7565b60405180910390f35b34801561031d57600080fd5b506103386004803603810190610333919061360e565b610c85565b005b610354600480360381019061034f9190613559565b610d9e565b005b34801561036257600080fd5b5061037d6004803603810190610378919061364e565b611018565b60405161038a919061368a565b60405180910390f35b34801561039f57600080fd5b506103a8611030565b6040516103b5919061368a565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e09190613559565b611046565b6040516103f4939291906136a5565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906136dc565b61108a565b005b34801561043257600080fd5b5061043b6110fe565b604051610448919061368a565b60405180910390f35b34801561045d57600080fd5b506104786004803603810190610473919061360e565b611104565b604051610485919061368a565b60405180910390f35b34801561049a57600080fd5b506104a36112f6565b005b3480156104b157600080fd5b506104cc60048036038101906104c79190613559565b6113bb565b005b3480156104da57600080fd5b506104f560048036038101906104f091906136dc565b611441565b005b34801561050357600080fd5b5061050c6114c5565b604051610519919061368a565b60405180910390f35b34801561052e57600080fd5b506105376114cb565b604051610544919061368a565b60405180910390f35b34801561055957600080fd5b50610574600480360381019061056f9190613559565b6114d5565b604051610581919061368a565b60405180910390f35b34801561059657600080fd5b5061059f611528565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190613794565b6115d0565b005b3480156105d657600080fd5b506105f160048036038101906105ec9190613559565b611662565b6040516105fe91906135c7565b60405180910390f35b610621600480360381019061061c9190613559565b611678565b005b34801561062f57600080fd5b5061064a60048036038101906106459190613559565b6118f2565b005b34801561065857600080fd5b50610673600480360381019061066e9190613559565b611978565b005b34801561068157600080fd5b5061069c6004803603810190610697919061364e565b6119fe565b6040516106a9919061368a565b60405180910390f35b3480156106be57600080fd5b506106c7611ae7565b005b3480156106d557600080fd5b506106de611b6f565b6040516106eb919061368a565b60405180910390f35b34801561070057600080fd5b5061071b6004803603810190610716919061364e565b611b75565b604051610728919061368a565b60405180910390f35b34801561073d57600080fd5b50610746611b8d565b60405161075391906135c7565b60405180910390f35b34801561076857600080fd5b50610783600480360381019061077e9190613559565b611bb7565b005b34801561079157600080fd5b5061079a611c3d565b6040516107a79190613501565b60405180910390f35b3480156107bc57600080fd5b506107c5611ccf565b6040516107d2919061368a565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd919061380d565b611cd5565b005b34801561081057600080fd5b50610819611e56565b604051610826919061368a565b60405180910390f35b34801561083b57600080fd5b506108566004803603810190610851919061397d565b611e5c565b005b34801561086457600080fd5b5061086d611f1c565b60405161087a919061368a565b60405180910390f35b34801561088f57600080fd5b506108aa60048036038101906108a59190613559565b611f32565b005b3480156108b857600080fd5b506108d360048036038101906108ce9190613559565b611fb8565b6040516108e09190613501565b60405180910390f35b3480156108f557600080fd5b506108fe612060565b60405161090b919061368a565b60405180910390f35b34801561092057600080fd5b5061093b60048036038101906109369190613559565b612066565b005b34801561094957600080fd5b50610964600480360381019061095f9190613a00565b6120ec565b604051610971919061344d565b60405180910390f35b34801561098657600080fd5b506109a1600480360381019061099c919061364e565b612180565b005b3480156109af57600080fd5b506109b8612278565b6040516109c5919061368a565b60405180910390f35b3480156109da57600080fd5b506109e361227e565b6040516109f0919061344d565b60405180910390f35b348015610a0557600080fd5b50610a0e612291565b604051610a1b919061368a565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610aef57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b5757507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b675750610b6682612297565b5b9050919050565b606060018054610b7d90613a6f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba990613a6f565b8015610bf65780601f10610bcb57610100808354040283529160200191610bf6565b820191906000526020600020905b815481529060010190602001808311610bd957829003601f168201915b5050505050905090565b6000610c0b82612301565b610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613b13565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c9082611662565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890613ba5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d2061231a565b73ffffffffffffffffffffffffffffffffffffffff161480610d4f5750610d4e81610d4961231a565b6120ec565b5b610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590613c37565b60405180910390fd5b610d99838383612322565b505050565b600b60009054906101000a900460ff16610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613ca3565b60405180910390fd5b34600f5482610dfc9190613cf2565b14610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390613d98565b60405180910390fd5b601054811115610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890613e04565b60405180910390fd5b600a546000541115610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613e70565b60405180910390fd5b600a54600182600054610edb9190613e90565b610ee59190613ee6565b1115610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d90613f66565b60405180910390fd5b60115481601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f749190613e90565b1115610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90613fd2565b60405180910390fd5b610fbf33826123d4565b80601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461100e9190613e90565b9250508190555050565b60136020528060005260406000206000915090505481565b600060016000546110419190613ee6565b905090565b60086020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154905083565b6008600082815260200190815260200160002060000160009054906101000a900460ff16156110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e59061403e565b60405180910390fd5b6110f98383836123f2565b505050565b60005481565b600061110f836119fe565b8210611150576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611147906140d0565b60405180910390fd5b600061115a611030565b905060008060005b838110156112b4576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461125457806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112a6578684141561129d5781955050505050506112f0565b83806001019450505b508080600101915050611162565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790614162565b60405180910390fd5b92915050565b6112fe61231a565b73ffffffffffffffffffffffffffffffffffffffff1661131c611b8d565b73ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611369906141ce565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113b8573d6000803e3d6000fd5b50565b6113c361231a565b73ffffffffffffffffffffffffffffffffffffffff166113e1611b8d565b73ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e906141ce565b60405180910390fd5b8060108190555050565b6008600082815260200190815260200160002060000160009054906101000a900460ff16156114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c9061403e565b60405180910390fd5b6114c083838360405180602001604052806000815250611e5c565b505050565b600e5481565b6000600a54905090565b60006114df611030565b8210611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151790614260565b60405180910390fd5b819050919050565b61153061231a565b73ffffffffffffffffffffffffffffffffffffffff1661154e611b8d565b73ffffffffffffffffffffffffffffffffffffffff16146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b906141ce565b60405180910390fd5b600b60009054906101000a900460ff1615600b60006101000a81548160ff021916908315150217905550565b6115d861231a565b73ffffffffffffffffffffffffffffffffffffffff166115f6611b8d565b73ffffffffffffffffffffffffffffffffffffffff161461164c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611643906141ce565b60405180910390fd5b81816003919061165d9291906132bc565b505050565b600061166d82612932565b600001519050919050565b600b60009054906101000a900460ff166116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90613ca3565b60405180910390fd5b34600c54826116d69190613cf2565b14611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90613d98565b60405180910390fd5b600d5481111561175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613e04565b60405180910390fd5b600a5460005411156117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990613e70565b60405180910390fd5b600a546001826000546117b59190613e90565b6117bf9190613ee6565b1115611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f790613f66565b60405180910390fd5b600e5481601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461184e9190613e90565b111561188f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188690613fd2565b60405180910390fd5b61189933826123d4565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118e89190613e90565b9250508190555050565b6118fa61231a565b73ffffffffffffffffffffffffffffffffffffffff16611918611b8d565b73ffffffffffffffffffffffffffffffffffffffff161461196e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611965906141ce565b60405180910390fd5b8060118190555050565b61198061231a565b73ffffffffffffffffffffffffffffffffffffffff1661199e611b8d565b73ffffffffffffffffffffffffffffffffffffffff16146119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb906141ce565b60405180910390fd5b80600a8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a66906142f2565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611aef61231a565b73ffffffffffffffffffffffffffffffffffffffff16611b0d611b8d565b73ffffffffffffffffffffffffffffffffffffffff1614611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a906141ce565b60405180910390fd5b611b6d6000612acc565b565b60105481565b60126020528060005260406000206000915090505481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bbf61231a565b73ffffffffffffffffffffffffffffffffffffffff16611bdd611b8d565b73ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a906141ce565b60405180910390fd5b80600c8190555050565b606060028054611c4c90613a6f565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7890613a6f565b8015611cc55780601f10611c9a57610100808354040283529160200191611cc5565b820191906000526020600020905b815481529060010190602001808311611ca857829003601f168201915b5050505050905090565b600c5481565b611cdd61231a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d429061435e565b60405180910390fd5b8060076000611d5861231a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e0561231a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e4a919061344d565b60405180910390a35050565b60115481565b6008600083815260200190815260200160002060000160009054906101000a900460ff1615611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb79061403e565b60405180910390fd5b611ecb8484846123f2565b611ed784848484612b92565b611f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0d906143f0565b60405180910390fd5b50505050565b60006001600054611f2d9190613ee6565b905090565b611f3a61231a565b73ffffffffffffffffffffffffffffffffffffffff16611f58611b8d565b73ffffffffffffffffffffffffffffffffffffffff1614611fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa5906141ce565b60405180910390fd5b80600d8190555050565b6060611fc382612301565b612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff990614482565b60405180910390fd5b600061200c612d1a565b905060008151141561202d5760405180602001604052806000815250612058565b8061203784612dac565b60405160200161204892919061452a565b6040516020818303038152906040525b915050919050565b600a5481565b61206e61231a565b73ffffffffffffffffffffffffffffffffffffffff1661208c611b8d565b73ffffffffffffffffffffffffffffffffffffffff16146120e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d9906141ce565b60405180910390fd5b80600e8190555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61218861231a565b73ffffffffffffffffffffffffffffffffffffffff166121a6611b8d565b73ffffffffffffffffffffffffffffffffffffffff16146121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f3906141ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561226c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612263906145cb565b60405180910390fd5b61227581612acc565b50565b600f5481565b600b60009054906101000a900460ff1681565b600d5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008054821080156123135750600082115b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6123ee828260405180602001604052806000815250612f0d565b5050565b60006123fd82612932565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661242461231a565b73ffffffffffffffffffffffffffffffffffffffff161480612480575061244961231a565b73ffffffffffffffffffffffffffffffffffffffff1661246884610c00565b73ffffffffffffffffffffffffffffffffffffffff16145b8061249c575061249b826000015161249661231a565b6120ec565b5b9050806124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d59061465d565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612547906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156125c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b790614781565b60405180910390fd5b6125cd8585856001612f1f565b6125dd6000848460000151612322565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156128c25761282181612301565b156128c15782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461292b8585856001612f25565b5050505050565b61293a613342565b61294382612301565b612982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297990614813565b60405180910390fd5b60008290505b60008110612a8b576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612a7c578092505050612ac7565b50808060019003915050612988565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abe906148a5565b60405180910390fd5b919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612bb38473ffffffffffffffffffffffffffffffffffffffff16612f2b565b15612d0d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612bdc61231a565b8786866040518563ffffffff1660e01b8152600401612bfe949392919061491a565b6020604051808303816000875af1925050508015612c3a57506040513d601f19601f82011682018060405250810190612c37919061497b565b60015b612cbd573d8060008114612c6a576040519150601f19603f3d011682016040523d82523d6000602084013e612c6f565b606091505b50600081511415612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac906143f0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612d12565b600190505b949350505050565b606060038054612d2990613a6f565b80601f0160208091040260200160405190810160405280929190818152602001828054612d5590613a6f565b8015612da25780601f10612d7757610100808354040283529160200191612da2565b820191906000526020600020905b815481529060010190602001808311612d8557829003601f168201915b5050505050905090565b60606000821415612df4576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f08565b600082905060005b60008214612e26578080612e0f906149a8565b915050600a82612e1f9190614a20565b9150612dfc565b60008167ffffffffffffffff811115612e4257612e41613852565b5b6040519080825280601f01601f191660200182016040528015612e745781602001600182028036833780820191505090505b5090505b60008514612f0157600182612e8d9190613ee6565b9150600a85612e9c9190614a51565b6030612ea89190613e90565b60f81b818381518110612ebe57612ebd614a82565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612efa9190614a20565b9450612e78565b8093505050505b919050565b612f1a8383836001612f3e565b505050565b50505050565b50505050565b600080823b905060008111915050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab90614b23565b60405180910390fd5b6000841415612ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fef90614bb5565b60405180910390fd5b6130056000868387612f1f565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561329f57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4831561328a5761324a6000888488612b92565b613289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613280906143f0565b60405180910390fd5b5b818060010192505080806001019150506131d3565b5080600081905550506132b56000868387612f25565b5050505050565b8280546132c890613a6f565b90600052602060002090601f0160209004810192826132ea5760008555613331565b82601f1061330357803560ff1916838001178555613331565b82800160010185558215613331579182015b82811115613330578235825591602001919060010190613315565b5b50905061333e919061337c565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561339557600081600090555060010161337d565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133e2816133ad565b81146133ed57600080fd5b50565b6000813590506133ff816133d9565b92915050565b60006020828403121561341b5761341a6133a3565b5b6000613429848285016133f0565b91505092915050565b60008115159050919050565b61344781613432565b82525050565b6000602082019050613462600083018461343e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134a2578082015181840152602081019050613487565b838111156134b1576000848401525b50505050565b6000601f19601f8301169050919050565b60006134d382613468565b6134dd8185613473565b93506134ed818560208601613484565b6134f6816134b7565b840191505092915050565b6000602082019050818103600083015261351b81846134c8565b905092915050565b6000819050919050565b61353681613523565b811461354157600080fd5b50565b6000813590506135538161352d565b92915050565b60006020828403121561356f5761356e6133a3565b5b600061357d84828501613544565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135b182613586565b9050919050565b6135c1816135a6565b82525050565b60006020820190506135dc60008301846135b8565b92915050565b6135eb816135a6565b81146135f657600080fd5b50565b600081359050613608816135e2565b92915050565b60008060408385031215613625576136246133a3565b5b6000613633858286016135f9565b925050602061364485828601613544565b9150509250929050565b600060208284031215613664576136636133a3565b5b6000613672848285016135f9565b91505092915050565b61368481613523565b82525050565b600060208201905061369f600083018461367b565b92915050565b60006060820190506136ba600083018661343e565b6136c7602083018561343e565b6136d4604083018461367b565b949350505050565b6000806000606084860312156136f5576136f46133a3565b5b6000613703868287016135f9565b9350506020613714868287016135f9565b925050604061372586828701613544565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126137545761375361372f565b5b8235905067ffffffffffffffff81111561377157613770613734565b5b60208301915083600182028301111561378d5761378c613739565b5b9250929050565b600080602083850312156137ab576137aa6133a3565b5b600083013567ffffffffffffffff8111156137c9576137c86133a8565b5b6137d58582860161373e565b92509250509250929050565b6137ea81613432565b81146137f557600080fd5b50565b600081359050613807816137e1565b92915050565b60008060408385031215613824576138236133a3565b5b6000613832858286016135f9565b9250506020613843858286016137f8565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61388a826134b7565b810181811067ffffffffffffffff821117156138a9576138a8613852565b5b80604052505050565b60006138bc613399565b90506138c88282613881565b919050565b600067ffffffffffffffff8211156138e8576138e7613852565b5b6138f1826134b7565b9050602081019050919050565b82818337600083830152505050565b600061392061391b846138cd565b6138b2565b90508281526020810184848401111561393c5761393b61384d565b5b6139478482856138fe565b509392505050565b600082601f8301126139645761396361372f565b5b813561397484826020860161390d565b91505092915050565b60008060008060808587031215613997576139966133a3565b5b60006139a5878288016135f9565b94505060206139b6878288016135f9565b93505060406139c787828801613544565b925050606085013567ffffffffffffffff8111156139e8576139e76133a8565b5b6139f48782880161394f565b91505092959194509250565b60008060408385031215613a1757613a166133a3565b5b6000613a25858286016135f9565b9250506020613a36858286016135f9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a8757607f821691505b60208210811415613a9b57613a9a613a40565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000613afd602d83613473565b9150613b0882613aa1565b604082019050919050565b60006020820190508181036000830152613b2c81613af0565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b8f602283613473565b9150613b9a82613b33565b604082019050919050565b60006020820190508181036000830152613bbe81613b82565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000613c21603983613473565b9150613c2c82613bc5565b604082019050919050565b60006020820190508181036000830152613c5081613c14565b9050919050565b7f53414c455f4e4f545f4143544956452100000000000000000000000000000000600082015250565b6000613c8d601083613473565b9150613c9882613c57565b602082019050919050565b60006020820190508181036000830152613cbc81613c80565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cfd82613523565b9150613d0883613523565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d4157613d40613cc3565b5b828202905092915050565b7f4e4f545f454e4f5547485f4d4f4e455921000000000000000000000000000000600082015250565b6000613d82601183613473565b9150613d8d82613d4c565b602082019050919050565b60006020820190508181036000830152613db181613d75565b9050919050565b7f455843454544535f4d41585f5045525f54582100000000000000000000000000600082015250565b6000613dee601383613473565b9150613df982613db8565b602082019050919050565b60006020820190508181036000830152613e1d81613de1565b9050919050565b7f4e4f545f454e4f5547485f544f4b454e53210000000000000000000000000000600082015250565b6000613e5a601283613473565b9150613e6582613e24565b602082019050919050565b60006020820190508181036000830152613e8981613e4d565b9050919050565b6000613e9b82613523565b9150613ea683613523565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613edb57613eda613cc3565b5b828201905092915050565b6000613ef182613523565b9150613efc83613523565b925082821015613f0f57613f0e613cc3565b5b828203905092915050565b7f4e4f545f454e4f5547485f544f4b454e53000000000000000000000000000000600082015250565b6000613f50601183613473565b9150613f5b82613f1a565b602082019050919050565b60006020820190508181036000830152613f7f81613f43565b9050919050565b7f455843454544535f4d41585f5045525f57414c4c455421000000000000000000600082015250565b6000613fbc601783613473565b9150613fc782613f86565b602082019050919050565b60006020820190508181036000830152613feb81613faf565b9050919050565b7f544f4b454e5f5354414b45442100000000000000000000000000000000000000600082015250565b6000614028600d83613473565b915061403382613ff2565b602082019050919050565b600060208201905081810360008301526140578161401b565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ba602283613473565b91506140c58261405e565b604082019050919050565b600060208201905081810360008301526140e9816140ad565b9050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b600061414c602e83613473565b9150614157826140f0565b604082019050919050565b6000602082019050818103600083015261417b8161413f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141b8602083613473565b91506141c382614182565b602082019050919050565b600060208201905081810360008301526141e7816141ab565b9050919050565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b600061424a602383613473565b9150614255826141ee565b604082019050919050565b600060208201905081810360008301526142798161423d565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b60006142dc602b83613473565b91506142e782614280565b604082019050919050565b6000602082019050818103600083015261430b816142cf565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b6000614348601a83613473565b915061435382614312565b602082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b60006143da603383613473565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061446c602f83613473565b915061447782614410565b604082019050919050565b6000602082019050818103600083015261449b8161445f565b9050919050565b600081905092915050565b60006144b882613468565b6144c281856144a2565b93506144d2818560208601613484565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006145146005836144a2565b915061451f826144de565b600582019050919050565b600061453682856144ad565b915061454282846144ad565b915061454d82614507565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145b5602683613473565b91506145c082614559565b604082019050919050565b600060208201905081810360008301526145e4816145a8565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000614647603283613473565b9150614652826145eb565b604082019050919050565b600060208201905081810360008301526146768161463a565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b60006146d9602683613473565b91506146e48261467d565b604082019050919050565b60006020820190508181036000830152614708816146cc565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061476b602583613473565b91506147768261470f565b604082019050919050565b6000602082019050818103600083015261479a8161475e565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b60006147fd602a83613473565b9150614808826147a1565b604082019050919050565b6000602082019050818103600083015261482c816147f0565b9050919050565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b600061488f602f83613473565b915061489a82614833565b604082019050919050565b600060208201905081810360008301526148be81614882565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006148ec826148c5565b6148f681856148d0565b9350614906818560208601613484565b61490f816134b7565b840191505092915050565b600060808201905061492f60008301876135b8565b61493c60208301866135b8565b614949604083018561367b565b818103606083015261495b81846148e1565b905095945050505050565b600081519050614975816133d9565b92915050565b600060208284031215614991576149906133a3565b5b600061499f84828501614966565b91505092915050565b60006149b382613523565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156149e6576149e5613cc3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a2b82613523565b9150614a3683613523565b925082614a4657614a456149f1565b5b828204905092915050565b6000614a5c82613523565b9150614a6783613523565b925082614a7757614a766149f1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b0d602183613473565b9150614b1882614ab1565b604082019050919050565b60006020820190508181036000830152614b3c81614b00565b9050919050565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b6000614b9f602883613473565b9150614baa82614b43565b604082019050919050565b60006020820190508181036000830152614bce81614b92565b905091905056fea26469706673582212205cb96a509a8200c1cb6a896a8cd5c5f016d385b65ec46726480e0d65414e1c0064736f6c634300080c0033