60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600a81526020017f424954434f494e204149000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f424954434f494e414900000000000000000000000000000000000000000000008152508160039080519060200190620000cc92919062000a2a565b508060049080519060200190620000e592919062000a2a565b50505062000108620000fc620004ea60201b60201c565b620004f260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000134816001620005b860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001da919062000b44565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000268919062000b44565b6040518363ffffffff1660e01b81526004016200028792919062000b87565b6020604051808303816000875af1158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd919062000b44565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031560a0516001620005b860201b60201c565b6200032a60a0516001620006a260201b60201c565b600060059050600080600f90506000806a115eec47f6cf7e35000000905069de589d32bd931c40000060078190555069de589d32bd931c4000006009819055506127106005826200037c919062000bed565b62000388919062000c7d565b60088190555084600c8190555083600d81905550600d54600c54620003ae919062000cb5565b600b8190555082600f8190555081601081905550601054600f54620003d4919062000cb5565b600e81905550600e5460138190555073f8d54a91f972b8e2598a9195b493ca29a1ece281600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045a6200044c6200074360201b60201c565b60016200076d60201b60201c565b6200046d3060016200076d60201b60201c565b6200048261dead60016200076d60201b60201c565b620004a4620004966200074360201b60201c565b6001620005b860201b60201c565b620004b7306001620005b860201b60201c565b620004cc61dead6001620005b860201b60201c565b620004de3382620008a760201b60201c565b50505050505062000ed4565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005c8620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005ee6200074360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000647576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063e9062000d73565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200077d620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007a36200074360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f39062000d73565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089b919062000db2565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009119062000e1f565b60405180910390fd5b6200092e6000838362000a2060201b60201c565b806002600082825462000942919062000cb5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000999919062000cb5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a00919062000e52565b60405180910390a362000a1c6000838362000a2560201b60201c565b5050565b505050565b505050565b82805462000a389062000e9e565b90600052602060002090601f01602090048101928262000a5c576000855562000aa8565b82601f1062000a7757805160ff191683800117855562000aa8565b8280016001018555821562000aa8579182015b8281111562000aa757825182559160200191906001019062000a8a565b5b50905062000ab7919062000abb565b5090565b5b8082111562000ad657600081600090555060010162000abc565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b0c8262000adf565b9050919050565b62000b1e8162000aff565b811462000b2a57600080fd5b50565b60008151905062000b3e8162000b13565b92915050565b60006020828403121562000b5d5762000b5c62000ada565b5b600062000b6d8482850162000b2d565b91505092915050565b62000b818162000aff565b82525050565b600060408201905062000b9e600083018562000b76565b62000bad602083018462000b76565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bfa8262000bb4565b915062000c078362000bb4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c435762000c4262000bbe565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c8a8262000bb4565b915062000c978362000bb4565b92508262000caa5762000ca962000c4e565b5b828204905092915050565b600062000cc28262000bb4565b915062000ccf8362000bb4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d075762000d0662000bbe565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d5b60208362000d12565b915062000d688262000d23565b602082019050919050565b6000602082019050818103600083015262000d8e8162000d4c565b9050919050565b60008115159050919050565b62000dac8162000d95565b82525050565b600060208201905062000dc9600083018462000da1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e07601f8362000d12565b915062000e148262000dcf565b602082019050919050565b6000602082019050818103600083015262000e3a8162000df8565b9050919050565b62000e4c8162000bb4565b82525050565b600060208201905062000e69600083018462000e41565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eb757607f821691505b6020821081141562000ece5762000ecd62000e6f565b5b50919050565b60805160a0516140ac62000f2460003960008181610bb101526112200152600081816109d001528181612adb01528181612bbc01528181612be301528181612c7f0152612ca601526140ac6000f3fe6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063c0246668116100a0578063dd62ed3e1161006f578063dd62ed3e14610744578063e2f4560514610781578063f25f4b56146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063c024666814610688578063c8c8ebe4146106b1578063d257b34f146106dc578063d85ba0631461071957610204565b80639a7a23d6116100dc5780639a7a23d6146105ba578063a457c2d7146105e3578063a9059cbb14610620578063bbc0c7421461065d57610204565b80638a8c523c146105245780638da5cb5b1461053b57806395d89b4114610566578063961883991461059157610204565b806339509351116101905780636a486a8e1161015f5780636a486a8e146104515780636ddd17131461047c57806370a08231146104a7578063715018a6146104e45780637571336a146104fb57610204565b8063395093511461038357806349bd5a5e146103c05780634fbee193146103eb57806366ca9b831461042857610204565b806318160ddd116101cc57806318160ddd146102c557806323b872dd146102f057806327c8f8351461032d578063313ce5671461035857610204565b806302dbd8f81461020957806306fdde0314610232578063095ea7b31461025d5780631694505e1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612d90565b61082b565b005b34801561023e57600080fd5b5061024761091e565b6040516102549190612e69565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f9190612ee9565b6109b0565b6040516102919190612f44565b60405180910390f35b3480156102a657600080fd5b506102af6109ce565b6040516102bc9190612fbe565b60405180910390f35b3480156102d157600080fd5b506102da6109f2565b6040516102e79190612fe8565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613003565b6109fc565b6040516103249190612f44565b60405180910390f35b34801561033957600080fd5b50610342610af4565b60405161034f9190613065565b60405180910390f35b34801561036457600080fd5b5061036d610afa565b60405161037a919061309c565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190612ee9565b610b03565b6040516103b79190612f44565b60405180910390f35b3480156103cc57600080fd5b506103d5610baf565b6040516103e29190613065565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906130b7565b610bd3565b60405161041f9190612f44565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190612d90565b610c29565b005b34801561045d57600080fd5b50610466610d13565b6040516104739190612fe8565b60405180910390f35b34801561048857600080fd5b50610491610d19565b60405161049e9190612f44565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c991906130b7565b610d2c565b6040516104db9190612fe8565b60405180910390f35b3480156104f057600080fd5b506104f9610d74565b005b34801561050757600080fd5b50610522600480360381019061051d9190613110565b610dfc565b005b34801561053057600080fd5b50610539610ed3565b005b34801561054757600080fd5b50610550610f87565b60405161055d9190613065565b60405180910390f35b34801561057257600080fd5b5061057b610fb1565b6040516105889190612e69565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190612d90565b611043565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613110565b6111a2565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190612ee9565b6112bb565b6040516106179190612f44565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190612ee9565b6113a6565b6040516106549190612f44565b60405180910390f35b34801561066957600080fd5b506106726113c4565b60405161067f9190612f44565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190613110565b6113d7565b005b3480156106bd57600080fd5b506106c66114fc565b6040516106d39190612fe8565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613150565b611502565b6040516107109190612f44565b60405180910390f35b34801561072557600080fd5b5061072e611657565b60405161073b9190612fe8565b60405180910390f35b34801561075057600080fd5b5061076b6004803603810190610766919061317d565b61165d565b6040516107789190612fe8565b60405180910390f35b34801561078d57600080fd5b506107966116e4565b6040516107a39190612fe8565b60405180910390f35b3480156107b857600080fd5b506107c16116ea565b6040516107ce9190613065565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f991906130b7565b611710565b005b34801561080c57600080fd5b50610815611808565b6040516108229190612fe8565b60405180910390f35b61083361180e565b73ffffffffffffffffffffffffffffffffffffffff16610851610f87565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90613209565b60405180910390fd5b81600f8190555080601081905550601054600f546108c59190613258565b600e81905550600e54601381905550600a600e54111561091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610911906132fa565b60405180910390fd5b5050565b60606003805461092d90613349565b80601f016020809104026020016040519081016040528092919081815260200182805461095990613349565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905090565b60006109c46109bd61180e565b8484611816565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610a098484846119e1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5461180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb906133ed565b60405180910390fd5b610ae885610ae061180e565b858403611816565b60019150509392505050565b61dead81565b60006012905090565b6000610ba5610b1061180e565b848460016000610b1e61180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba09190613258565b611816565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c3161180e565b73ffffffffffffffffffffffffffffffffffffffff16610c4f610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613209565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610cc39190613258565b600b81905550600a600b541115610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d06906132fa565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d7c61180e565b73ffffffffffffffffffffffffffffffffffffffff16610d9a610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790613209565b60405180910390fd5b610dfa60006123fb565b565b610e0461180e565b73ffffffffffffffffffffffffffffffffffffffff16610e22610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613209565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610edb61180e565b73ffffffffffffffffffffffffffffffffffffffff16610ef9610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690613209565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fc090613349565b80601f0160208091040260200160405190810160405280929190818152602001828054610fec90613349565b80156110395780601f1061100e57610100808354040283529160200191611039565b820191906000526020600020905b81548152906001019060200180831161101c57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108461180e565b73ffffffffffffffffffffffffffffffffffffffff16146110a457600080fd5b670de0b6b3a76400006103e860056110ba6109f2565b6110c4919061340d565b6110ce9190613496565b6110d89190613496565b82101561111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190613539565b60405180910390fd5b670de0b6b3a76400006103e860056111306109f2565b61113a919061340d565b6111449190613496565b61114e9190613496565b811015611190576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611187906135cb565b60405180910390fd5b80600981905550816007819055505050565b6111aa61180e565b73ffffffffffffffffffffffffffffffffffffffff166111c8610f87565b73ffffffffffffffffffffffffffffffffffffffff161461121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121590613209565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061365d565b60405180910390fd5b6112b782826124c1565b5050565b600080600160006112ca61180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906136ef565b60405180910390fd5b61139b61139261180e565b85858403611816565b600191505092915050565b60006113ba6113b361180e565b84846119e1565b6001905092915050565b600a60009054906101000a900460ff1681565b6113df61180e565b73ffffffffffffffffffffffffffffffffffffffff166113fd610f87565b73ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613209565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114f09190612f44565b60405180910390a25050565b60075481565b600061150c61180e565b73ffffffffffffffffffffffffffffffffffffffff1661152a610f87565b73ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613209565b60405180910390fd5b620186a0600161158e6109f2565b611598919061340d565b6115a29190613496565b8210156115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90613781565b60405180910390fd5b6103e860056115f16109f2565b6115fb919061340d565b6116059190613496565b821115611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90613813565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171861180e565b73ffffffffffffffffffffffffffffffffffffffff16611736610f87565b73ffffffffffffffffffffffffffffffffffffffff161461178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613209565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f3906138a5565b60405180910390fd5b611805816123fb565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90613937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed906139c9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119d49190612fe8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890613a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890613aed565b60405180910390fd5b6000811415611adb57611ad683836000612562565b6123f6565b611ae3610f87565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b515750611b21610f87565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdd5750600560149054906101000a900460ff16155b15611f7b57600a60009054906101000a900460ff16611cd757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c975750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613b59565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d7a5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ddc57600954611d8b83610d2c565b82611d969190613258565b1115611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90613bc5565b60405180910390fd5b611f7a565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e7f5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ece57600754811115611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec090613c57565b60405180910390fd5b611f79565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f7857600954611f2b83610d2c565b82611f369190613258565b1115611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e90613bc5565b60405180910390fd5b5b5b5b5b6000611f8630610d2c565b905060006008548210159050808015611fab5750600a60019054906101000a900460ff165b8015611fc45750600560149054906101000a900460ff16155b801561201a5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120705750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120c65750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561210a576001600560146101000a81548160ff0219169083151502179055506120ee6127e3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121c05750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ca57600090505b600081156123dd57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561222d57506000600e54115b156122c75761225a606461224c600e54886129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600e546010548261226d919061340d565b6122779190613496565b601260008282546122889190613258565b92505081905550600e54600f54826122a0919061340d565b6122aa9190613496565b601160008282546122bb9190613258565b925050819055506123b9565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561232257506000600b54115b156123b85761234f6064612341600b54886129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600b54600d5482612362919061340d565b61236c9190613496565b6012600082825461237d9190613258565b92505081905550600b54600c5482612395919061340d565b61239f9190613496565b601160008282546123b09190613258565b925050819055505b5b60008111156123ce576123cd873083612562565b5b80856123da9190613c77565b94505b6123e8878787612562565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c990613a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990613aed565b60405180910390fd5b61264d838383612a1c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ca90613d1d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127669190613258565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ca9190612fe8565b60405180910390a36127dd848484612a21565b50505050565b60006127ee30610d2c565b905060006011546012546128029190613258565b90506000808314806128145750600082145b15612821575050506129ee565b6014600854612830919061340d565b831115612849576014600854612846919061340d565b92505b60006002836012548661285c919061340d565b6128669190613496565b6128709190613496565b905060006128878286612a2690919063ffffffff16565b9050600047905061289782612a3c565b60006128ac8247612a2690919063ffffffff16565b905060006128d7876128c9601154856129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600081836128e79190613c77565b9050600060128190555060006011819055506000861180156129095750600081115b15612956576129188682612c79565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161294d93929190613d3d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161299c90613da5565b60006040518083038185875af1925050503d80600081146129d9576040519150601f19603f3d011682016040523d82523d6000602084013e6129de565b606091505b5050809750505050505050505050505b565b600081836129fe919061340d565b905092915050565b60008183612a149190613496565b905092915050565b505050565b505050565b60008183612a349190613c77565b905092915050565b6000600267ffffffffffffffff811115612a5957612a58613dba565b5b604051908082528060200260200182016040528015612a875781602001602082028036833780820191505090505b5090503081600081518110612a9f57612a9e613de9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b689190613e2d565b81600181518110612b7c57612b7b613de9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612be1307f000000000000000000000000000000000000000000000000000000000000000084611816565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c43959493929190613f53565b600060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505050505050565b612ca4307f000000000000000000000000000000000000000000000000000000000000000084611816565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d0b96959493929190613fad565b60606040518083038185885af1158015612d29573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d4e9190614023565b5050505050565b600080fd5b6000819050919050565b612d6d81612d5a565b8114612d7857600080fd5b50565b600081359050612d8a81612d64565b92915050565b60008060408385031215612da757612da6612d55565b5b6000612db585828601612d7b565b9250506020612dc685828601612d7b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e0a578082015181840152602081019050612def565b83811115612e19576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e3b82612dd0565b612e458185612ddb565b9350612e55818560208601612dec565b612e5e81612e1f565b840191505092915050565b60006020820190508181036000830152612e838184612e30565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612eb682612e8b565b9050919050565b612ec681612eab565b8114612ed157600080fd5b50565b600081359050612ee381612ebd565b92915050565b60008060408385031215612f0057612eff612d55565b5b6000612f0e85828601612ed4565b9250506020612f1f85828601612d7b565b9150509250929050565b60008115159050919050565b612f3e81612f29565b82525050565b6000602082019050612f596000830184612f35565b92915050565b6000819050919050565b6000612f84612f7f612f7a84612e8b565b612f5f565b612e8b565b9050919050565b6000612f9682612f69565b9050919050565b6000612fa882612f8b565b9050919050565b612fb881612f9d565b82525050565b6000602082019050612fd36000830184612faf565b92915050565b612fe281612d5a565b82525050565b6000602082019050612ffd6000830184612fd9565b92915050565b60008060006060848603121561301c5761301b612d55565b5b600061302a86828701612ed4565b935050602061303b86828701612ed4565b925050604061304c86828701612d7b565b9150509250925092565b61305f81612eab565b82525050565b600060208201905061307a6000830184613056565b92915050565b600060ff82169050919050565b61309681613080565b82525050565b60006020820190506130b1600083018461308d565b92915050565b6000602082840312156130cd576130cc612d55565b5b60006130db84828501612ed4565b91505092915050565b6130ed81612f29565b81146130f857600080fd5b50565b60008135905061310a816130e4565b92915050565b6000806040838503121561312757613126612d55565b5b600061313585828601612ed4565b9250506020613146858286016130fb565b9150509250929050565b60006020828403121561316657613165612d55565b5b600061317484828501612d7b565b91505092915050565b6000806040838503121561319457613193612d55565b5b60006131a285828601612ed4565b92505060206131b385828601612ed4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131f3602083612ddb565b91506131fe826131bd565b602082019050919050565b60006020820190508181036000830152613222816131e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061326382612d5a565b915061326e83612d5a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132a3576132a2613229565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006132e4601d83612ddb565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336157607f821691505b602082108114156133755761337461331a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133d7602883612ddb565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b600061341882612d5a565b915061342383612d5a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345c5761345b613229565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134a182612d5a565b91506134ac83612d5a565b9250826134bc576134bb613467565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613523602183612ddb565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602483612ddb565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613647603983612ddb565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136d9602583612ddb565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061376b603583612ddb565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006137fd603483612ddb565b9150613808826137a1565b604082019050919050565b6000602082019050818103600083015261382c816137f0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388f602683612ddb565b915061389a82613833565b604082019050919050565b600060208201905081810360008301526138be81613882565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613921602483612ddb565b915061392c826138c5565b604082019050919050565b6000602082019050818103600083015261395081613914565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139b3602283612ddb565b91506139be82613957565b604082019050919050565b600060208201905081810360008301526139e2816139a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a45602583612ddb565b9150613a50826139e9565b604082019050919050565b60006020820190508181036000830152613a7481613a38565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad7602383612ddb565b9150613ae282613a7b565b604082019050919050565b60006020820190508181036000830152613b0681613aca565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b43601683612ddb565b9150613b4e82613b0d565b602082019050919050565b60006020820190508181036000830152613b7281613b36565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613baf601383612ddb565b9150613bba82613b79565b602082019050919050565b60006020820190508181036000830152613bde81613ba2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613c41603683612ddb565b9150613c4c82613be5565b604082019050919050565b60006020820190508181036000830152613c7081613c34565b9050919050565b6000613c8282612d5a565b9150613c8d83612d5a565b925082821015613ca057613c9f613229565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d07602683612ddb565b9150613d1282613cab565b604082019050919050565b60006020820190508181036000830152613d3681613cfa565b9050919050565b6000606082019050613d526000830186612fd9565b613d5f6020830185612fd9565b613d6c6040830184612fd9565b949350505050565b600081905092915050565b50565b6000613d8f600083613d74565b9150613d9a82613d7f565b600082019050919050565b6000613db082613d82565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e2781612ebd565b92915050565b600060208284031215613e4357613e42612d55565b5b6000613e5184828501613e18565b91505092915050565b6000819050919050565b6000613e7f613e7a613e7584613e5a565b612f5f565b612d5a565b9050919050565b613e8f81613e64565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613eca81612eab565b82525050565b6000613edc8383613ec1565b60208301905092915050565b6000602082019050919050565b6000613f0082613e95565b613f0a8185613ea0565b9350613f1583613eb1565b8060005b83811015613f46578151613f2d8882613ed0565b9750613f3883613ee8565b925050600181019050613f19565b5085935050505092915050565b600060a082019050613f686000830188612fd9565b613f756020830187613e86565b8181036040830152613f878186613ef5565b9050613f966060830185613056565b613fa36080830184612fd9565b9695505050505050565b600060c082019050613fc26000830189613056565b613fcf6020830188612fd9565b613fdc6040830187613e86565b613fe96060830186613e86565b613ff66080830185613056565b61400360a0830184612fd9565b979650505050505050565b60008151905061401d81612d64565b92915050565b60008060006060848603121561403c5761403b612d55565b5b600061404a8682870161400e565b935050602061405b8682870161400e565b925050604061406c8682870161400e565b915050925092509256fea26469706673582212207b6f1a79dd1790cb78e8975ecaa11d1ecde88b52a400868363803bedd7d7471764736f6c634300080a0033