Contract con_survival


Contract Code


  
1 import currency
2 __game = Hash(default_value=0, contract='con_survival', name='game')
3 __operator = Variable(contract='con_survival', name='operator')
4 random.seed()
5
6
7 def ____(vk: str):
8 __operator.set(vk)
9 __game['boss_enabled'] = False
10 __game['amount_boss'] = 1500
11 __game['character_number'] = 4
12 __game['last_redeem'] = now
13 __game['play_cost'] = 20
14 __game['redeem_time'] = 1
15 __game['fail_attack'] = 5
16 __game['chance_instakill'] = 3
17 __game['chance_life'] = 18
18 __game['max_life_bar'] = 10
19 __game['amount_steal_tau'] = decimal('0.20')
20 __game['items_life'] = [20, 35, 90]
21 __game['charge_life'] = [1, 2, 5]
22 __game['items_weapon'] = [40, 90, 120]
23 __game['stat_weapon'] = [2, 5, 8]
24 __game['items_shield'] = [100]
25 __game['stat_shield'] = [1]
26 __game['items_skill'] = [40, 90, 120]
27 __game['stat_skill'] = [2, 5, 8]
28 __game['items_times'] = 5
29
30
31 @__export('con_survival')
32 def attack_survivor():
33 caller = ctx.caller
34 play_cost = __game['play_cost']
35 assert currency.balance_of(caller
36 ) >= play_cost, 'Not enough Balance to play!'
37 currency.transfer_from(play_cost, __operator.get(), caller)
38 __game[caller, 'zombie'] += 1
39 GAMEID = __game['gameId']
40 SURVIVOR = __game[GAMEID, 'survivor']
41 __game[GAMEID, 'zombies_attack'] += 1
42 SHIELD_ITEM = __game[SURVIVOR, 'item_shield']
43 WEAPON_ITEM = __game[SURVIVOR, 'item_weapon']
44 SKILL_ZOMBIE = __game[caller, 'item_skill']
45 if SHIELD_ITEM is None:
46 SHIELD_ITEM = 0
47 if WEAPON_ITEM is None:
48 WEAPON_ITEM = 0
49 if SKILL_ZOMBIE is None:
50 SKILL_ZOMBIE = 0
51 __game[GAMEID, 'game_amount'] += 20
52 randomFirstAttack = random.randint(1, 100)
53 if __game[SURVIVOR, 'item_shield_times'] < 1:
54 SHIELD_ITEM = 0
55 else:
56 __game[SURVIVOR, 'item_shield_times'] -= 1
57 ATTACK_SHIELD = __shield()
58 if (now - __game[GAMEID, SURVIVOR, 'have_sherif_shield_time']
59 ).minutes > 90:
60 ATTACK_SHIELD = False
61 __game[GAMEID, SURVIVOR, 'have_sherif_shield'] = 0
62 if randomFirstAttack <= __game['chance_instakill'] - SHIELD_ITEM:
63 if ATTACK_SHIELD is True:
64 __game[GAMEID, SURVIVOR, 'have_sherif_shield'] = 0
65 return __kill_zombie(caller)
66 else:
67 __game[GAMEID, SURVIVOR, 'have_sherif_shield'] = 0
68 return __kill_survivor(caller)
69 else:
70 randomSecondAttack = random.randint(1, 100)
71 if __game[caller, 'item_skill_times'] < 1:
72 SKILL_ZOMBIE = 0
73 else:
74 __game[caller, 'item_skill_times'] -= 1
75 if __game[SURVIVOR, 'item_weapon_times'] < 1:
76 WEAPON_ITEM = 0
77 else:
78 __game[SURVIVOR, 'item_weapon_times'] -= 1
79 if randomFirstAttack <= __game['chance_life'
80 ] + SKILL_ZOMBIE - WEAPON_ITEM:
81 if __game[GAMEID, SURVIVOR, 'survivor_life'] < 1:
82 return __kill_survivor(caller)
83 else:
84 return __attack_zombie(caller)
85 else:
86 return __kill_zombie(caller)
87
88
89 @__export('con_survival')
90 def redeem():
91 caller = ctx.caller
92 GAMEID = __game['gameId']
93 SURVIVOR = __game[GAMEID, 'survivor']
94 assert (now - __game[GAMEID, 'last_redeem']
95 ).minutes >= 60, 'Not Cant redeem'
96 if caller == SURVIVOR:
97 AMOUNT = 50 * (now - __game[GAMEID, 'last_redeem']).hours
98 if AMOUNT > 0:
99 if __game[GAMEID, 'game_amount'] < AMOUNT:
100 AMOUNT = __game[GAMEID, 'game_amount']
101 currency.transfer_from(int(AMOUNT), SURVIVOR, __operator.get())
102 __game[GAMEID, 'last_redeem'] = now
103 __game[GAMEID, 'game_amount'] -= AMOUNT
104 __game[GAMEID, 'game_survivor_gain'] += AMOUNT
105 __game[caller, 'tau_gain'] += AMOUNT
106 return {'gameId': GAMEID}
107
108
109 @__export('con_survival')
110 def change_value(variable: str, value: int):
111 __assert_owner()
112 __game[variable] = value
113
114
115 @__export('con_survival')
116 def change_value_array(variable: str, value: list):
117 __assert_owner()
118 __game[variable] = value
119
120
121 @__export('con_survival')
122 def start(account: str, amount: int):
123 __assert_owner()
124 __game['gameId'] = hashlib.sha3(str(now))
125 GAMEID = __game['gameId']
126 __game[GAMEID, 'survivor'] = account
127 __game[GAMEID, 'last_redeem'] = now
128 __game[GAMEID, 'game_amount'] = amount
129 __game[GAMEID, 'survivor_date'] = now
130 __game[account, 'survivor_time'] += 1
131 EXTRA_BAR = __life_bar(account)
132 __game[GAMEID, account, 'survivor_life'] = 5 + EXTRA_BAR
133 __game[account, 'item_shield'] = 0
134 __game[account, 'item_weapon'] = 0
135 __game['avatar'] += 1
136 __game[GAMEID, 'avatar'] += __game['avatar']
137 if __game['avatar'] > __game['character_number']:
138 __game['avatar'] = 1
139 __game[GAMEID, 'avatar'] = 1
140 __game[GAMEID, account, 'have_sherif_shield'] = 1
141 __game[GAMEID, account, 'have_sherif_shield_time'] = now
142
143
144 def __life_bar(account: str):
145 EXP = __game[account, 'zombies_kills']
146 EXP_LIFE = EXP / 50
147 EXP_LIFE = int(EXP_LIFE)
148 if EXP_LIFE > 5:
149 EXP_LIFE = 5
150 __game[account, 'life_extra_bar'] = EXP_LIFE
151 return EXP_LIFE
152
153
154 def __kill_zombie(account: str):
155 GAMEID = __game['gameId']
156 FAIL_AMOUNT = __game['fail_attack']
157 SURVIVOR = __game[GAMEID, 'survivor']
158 currency.transfer_from(FAIL_AMOUNT, SURVIVOR, __operator.get())
159 __game[SURVIVOR, 'zombies_kills'] += 1
160 __game[GAMEID, 'game_zombies_kills'] += 1
161 __game[SURVIVOR, 'tau_gain'] += FAIL_AMOUNT
162 __game[GAMEID, 'game_amount'] -= FAIL_AMOUNT
163 __game[GAMEID, 'game_survivor_gain'] += FAIL_AMOUNT
164 return {'survivor': SURVIVOR, 'status': 'fail_attack', 'amount': int(
165 FAIL_AMOUNT), 'gameId': GAMEID}
166
167
168 def __attack_zombie(account: str):
169 LAST_GAMEID = __game['gameId']
170 SURVIVOR = __game[LAST_GAMEID, 'survivor']
171 __game[LAST_GAMEID, SURVIVOR, 'survivor_life'] -= 1
172 STEAL_AMOUNT = 50 * (now - __game[LAST_GAMEID, 'last_redeem']
173 ).hours * __game['amount_steal_tau']
174 if __game[LAST_GAMEID, 'game_amount'] <= STEAL_AMOUNT:
175 STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * __game[
176 'amount_steal_tau']
177 if STEAL_AMOUNT == 0:
178 STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * __game[
179 'amount_steal_tau']
180 __game[LAST_GAMEID, 'game_amount'] -= int(STEAL_AMOUNT)
181 if STEAL_AMOUNT > 0:
182 currency.transfer_from(int(STEAL_AMOUNT), account, __operator.get())
183 else:
184 STEAL_AMOUNT = 0
185 __game[LAST_GAMEID, 'game_zombies_gain'] += int(STEAL_AMOUNT)
186 __game[account, 'tau_zombie_gain'] += int(STEAL_AMOUNT)
187 return {'survivor': SURVIVOR, 'status': 'steal_life', 'amount': int(
188 STEAL_AMOUNT), 'gameId': LAST_GAMEID}
189
190
191 def __kill_survivor(account: str):
192 LAST_GAMEID = __game['gameId']
193 SURVIVOR = __game[LAST_GAMEID, 'survivor']
194 STEAL_AMOUNT = 50 * (now - __game[LAST_GAMEID, 'last_redeem']).hours
195 LAST_AMOUNT = __game[LAST_GAMEID, 'game_amount']
196 if LAST_AMOUNT <= STEAL_AMOUNT:
197 STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * decimal('0.50')
198 if STEAL_AMOUNT == 0:
199 STEAL_AMOUNT = __game[LAST_GAMEID, 'game_amount'] * decimal('0.50')
200 __game['gameId'] = hashlib.sha3(str(now))
201 GAMEID = __game['gameId']
202 __game[GAMEID, 'survivor'] = account
203 __game[GAMEID, 'game_amount'] = int(LAST_AMOUNT - STEAL_AMOUNT)
204 __game[GAMEID, 'last_redeem'] = now
205 __game[account, 'survivor_time'] += 1
206 __game[GAMEID, 'survivor_date'] = now
207 __game[GAMEID, 'game_survivor_gain'] += STEAL_AMOUNT
208 __game[account, 'tau_gain'] += STEAL_AMOUNT
209 EXTRA_BAR = __life_bar(account)
210 __game[GAMEID, account, 'survivor_life'] = 5 + EXTRA_BAR
211 __game['avatar'] += 1
212 __game[GAMEID, 'avatar'] = __game['avatar']
213 if __game['avatar'] > __game['character_number']:
214 __game['avatar'] = 1
215 __game[GAMEID, 'avatar'] = 1
216 __game[GAMEID, account, 'have_sherif_shield'] = 1
217 __game[GAMEID, account, 'have_sherif_shield_time'] = now
218 __game[account, 'item_shield'] = 0
219 __game[account, 'item_weapon'] = 0
220 if STEAL_AMOUNT > 0:
221 currency.transfer_from(STEAL_AMOUNT, account, __operator.get())
222 return {'survivor': account, 'status': 'new_survivor', 'avatar': __game
223 ['avatar'], 'amount': int(STEAL_AMOUNT), 'lastId': LAST_GAMEID,
224 'gameId': GAMEID}
225
226
227 def __shield():
228 GAMEID = __game['gameId']
229 SURVIVOR = __game[GAMEID, 'survivor']
230 HAVE_SHIELD = __game[GAMEID, SURVIVOR, 'have_sherif_shield']
231 if HAVE_SHIELD == 1:
232 randomShield = random.randint(1, 100)
233 if randomShield <= 80:
234 return True
235 else:
236 return False
237
238
239 @__export('con_survival')
240 def weapon(item: int):
241 caller = ctx.caller
242 LIST_ITEM = __game['items_weapon']
243 ITEM_STATS = __game['stat_weapon']
244 currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
245 __game[caller, 'item_weapon'] = ITEM_STATS[item]
246 __game[caller, 'item_weapon_times'] = __game['items_times']
247
248
249 @__export('con_survival')
250 def shield_buy(item: int):
251 caller = ctx.caller
252 LIST_ITEM = __game['items_shield']
253 ITEM_STATS = __game['stat_shield']
254 currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
255 __game[caller, 'item_shield'] = ITEM_STATS[item]
256 __game[caller, 'item_shield_times'] = 1
257
258
259 @__export('con_survival')
260 def skill(item: int):
261 caller = ctx.caller
262 LIST_ITEM = __game['items_skill']
263 ITEM_STATS = __game['stat_skill']
264 currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
265 __game[caller, 'item_skill'] = ITEM_STATS[item]
266 __game[caller, 'item_skill_times'] = __game['items_times']
267
268
269 @__export('con_survival')
270 def life(item: int):
271 caller = ctx.caller
272 GAMEID = __game['gameId']
273 LIST_ITEM = __game['items_life']
274 CHARGE_LIFE = __game['charge_life']
275 currency.transfer_from(LIST_ITEM[item], __operator.get(), caller)
276 if __game[GAMEID, caller, 'survivor_life'] > 5 + __game[caller,
277 'life_extra_bar']:
278 __game[GAMEID, caller, 'survivor_life'] = 5 + __game[caller,
279 'life_extra_bar']
280 else:
281 __game[GAMEID, caller, 'survivor_life'] += CHARGE_LIFE[item]
282
283
284 @__export('con_survival')
285 def attack_boss():
286 caller = ctx.caller
287 GAMEID = __game['gameId']
288 SURVIVOR = __game[GAMEID, 'survivor']
289 if caller == SURVIVOR:
290 if __game['boss_enabled'] is True:
291 randomBoss = random.randint(1, 4)
292 if randomBoss == 4:
293 __game[caller, 'boss_kill'] += 1
294 __game[GAMEID, 'game_survivor_gain'] += __game['amount_boss']
295 __game[caller, 'tau_gain'] += AMOUNT
296 currency.transfer_from(__game['amount_boss'], caller,
297 __operator.get())
298 return True
299 else:
300 return False
301 else:
302 return False
303 else:
304 return False
305
306
307 @__export('con_survival')
308 def set_nick_name(nickname: str):
309 caller = ctx.caller
310 assert len(nickname) <= 25, 'Nickname too long (25 chars max).'
311 assert len(nickname) > 0, 'Nickname too short.'
312 names_uid = hashlib.sha3(nickname.lower().replace(' ', ''))
313 assert not __game['nicknames', names_uid
314 ], 'A form of this name already belongs to ' + balances['nicknames',
315 names_uid]
316 __game[caller, 'nickname'] = nickname
317 __game['nicknames', names_uid] = nickname
318
319
320 def __assert_owner():
321 assert ctx.caller == __operator.get(), 'Only operator can call!'
322

Byte Code

e30000000000000000000000000500000040000000736a010000640064016c005a00650164006402640364048d035a0265036402640564068d025a0465056a0683000100650764079c016408640984045a08650964028301640a640b840083015a0a650964028301640c640d840083015a0b6509640283016507650c640e9c02640f6410840483015a0d6509640283016507650e640e9c0264116412840483015a0f6509640283016507650c64139c0264146415840483015a10650764169c016417641884045a11650764169c016419641a84045a12650764169c01641b641c84045a13650764169c01641d641e84045a14641f642084005a15650964028301650c64219c0164226423840483015a16650964028301650c64219c0164246425840483015a17650964028301650c64219c0164266427840483015a18650964028301650c64219c0164286429840483015a19650964028301642a642b840083015a1a6509640283016507642c9c01642d642e840483015a1b642f643084005a1c640153002931e9000000004eda0c636f6e5f737572766976616cda0467616d652903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086f70657261746f722902720500000072060000002901da02766b63010000000000000001000000030000004300000073da00000074006a017c00830101006401740264023c006403740264043c006405740264063c007403740264073c006408740264093c00640a7402640b3c00640c7402640d3c00640e7402640f3c006410740264113c006412740264133c00740464148301740264153c006408641664176703740264183c00640a6419640c67037402641a3c00641b6417641c67037402641d3c006419640c641e67037402641f3c0064206701740264213c00640a6701740264223c00641b6417641c6703740264233c006419640c641e6703740264243c00640c740264253c006400530029264e46da0c626f73735f656e61626c656469dc050000da0b616d6f756e745f626f7373e904000000da106368617261637465725f6e756d626572da0b6c6173745f72656465656de914000000da09706c61795f636f7374e901000000da0b72656465656d5f74696d65e905000000da0b6661696c5f61747461636be903000000da106368616e63655f696e7374616b696c6ce912000000da0b6368616e63655f6c696665e90a000000da0c6d61785f6c6966655f6261727a04302e3230da10616d6f756e745f737465616c5f746175e923000000e95a000000da0a6974656d735f6c696665e902000000da0b6368617267655f6c696665e928000000e978000000da0c6974656d735f776561706f6ee908000000da0b737461745f776561706f6ee964000000da0c6974656d735f736869656c64da0b737461745f736869656c64da0b6974656d735f736b696c6cda0a737461745f736b696c6cda0b6974656d735f74696d65732905da0a5f5f6f70657261746f72da03736574da065f5f67616d65da036e6f77da07646563696d616c29017208000000a9007230000000da00da045f5f5f5f07000000732a00000000010a0108010801080108010801080108010801080108010c010e010e010e010e010a010a010e010e0172320000006300000000000000000a0000000500000043000000732c02000074006a017d007402640119007d0174036a047c0083017c016b057324740564028301820174036a067c0174076a0883007c008303010074027c0064036602050019006404370003003c007402640519007d0274027c026406660219007d0374027c0264076602050019006404370003003c0074027c036408660219007d0474027c036409660219007d0574027c00640a660219007d067c0464006b0872a2640b7d047c0564006b0872ae640b7d057c0664006b0872ba640b7d0674027c02640c660205001900640d370003003c0074096a0a6404640e83027d0774027c03640f6602190064046b0072f0640b7d046e1474027c03640f6602050019006404380003003c00740b83007d08740c74027c027c0364106603190018006a0d64116b049001723664127d08640b74027c027c03641366033c007c077402641419007c0418006b01900172807c0864156b0890017268640b74027c027c03641366033c00740e7c0083015300640b74027c027c03641366033c00740f7c00830153006ea874096a0a6404640e83027d0974027c0064166602190064046b00900172a4640b7d066e1474027c0064166602050019006404380003003c0074027c0364176602190064046b00900172d0640b7d056e1474027c0364176602050019006404380003003c007c077402641819007c0617007c0518006b019002722074027c027c0364196603190064046b0090027216740f7c008301530074107c00830153006e08740e7c008301530064005300291a4e720f0000007a1b4e6f7420656e6f7567682042616c616e636520746f20706c617921da067a6f6d6269657210000000da0667616d654964da087375727669766f72da0e7a6f6d626965735f61747461636bda0b6974656d5f736869656c64da0b6974656d5f776561706f6eda0a6974656d5f736b696c6c7201000000da0b67616d655f616d6f756e74720e0000007225000000da116974656d5f736869656c645f74696d6573da17686176655f7368657269665f736869656c645f74696d65721c00000046da12686176655f7368657269665f736869656c64721500000054da106974656d5f736b696c6c5f74696d6573da116974656d5f776561706f6e5f74696d65737217000000da0d7375727669766f725f6c6966652911da03637478da0663616c6c6572722d000000da0863757272656e6379da0a62616c616e63655f6f66da0e417373657274696f6e4572726f72da0d7472616e736665725f66726f6d722b000000da03676574da0672616e646f6dda0772616e64696e74da085f5f736869656c64722e000000da076d696e75746573da0d5f5f6b696c6c5f7a6f6d626965da0f5f5f6b696c6c5f7375727669766f72da0f5f5f61747461636b5f7a6f6d626965290a7242000000720f000000da0647414d454944da085355525649564f52da0b534849454c445f4954454dda0b574541504f4e5f4954454dda0c534b494c4c5f5a4f4d424945da1172616e646f6d466972737441747461636bda0d41545441434b5f534849454c44da1272616e646f6d5365636f6e6441747461636b723000000072300000007231000000da0f61747461636b5f7375727669766f721f000000735e00000000020601080108010e011201140108010c0114010c010c010c0108010401080104010801040114010c0110010602140106011201080104010e0112010a010e0108020e010a020c0112010602140112010602140102011401140108020a02725700000063000000000000000004000000050000004300000073e400000074006a017d007402640119007d0174027c016402660219007d02740374027c0164036602190018006a0464046b05733874056405830182017c007c026b0272e06406740374027c0164036602190018006a0614007d037c0364076b0472e074027c016408660219007c036b00727a74027c016408660219007d0374076a0874097c0383017c02740a6a0b830083030100740374027c01640366023c0074027c0164086602050019007c03380003003c0074027c0164096602050019007c03370003003c0074027c00640a6602050019007c03370003003c0064017c016901530064005300290b4e72340000007235000000720d000000e93c0000007a0f4e6f742043616e742072656465656de9320000007201000000723a000000da1267616d655f7375727669766f725f6761696eda087461755f6761696e290c72410000007242000000722d000000722e000000724b0000007245000000da05686f75727372430000007246000000da03696e74722b000000724700000029047242000000724f0000007250000000da06414d4f554e54723000000072300000007231000000da0672656465656d5900000073200000000002060108010c0110010e0108011601080110010c0116010c01140114011401725f0000002902da087661726961626c65da0576616c756563020000000000000002000000030000004300000073120000007400830001007c0174017c003c006400530029014e2902da0e5f5f6173736572745f6f776e6572722d000000290272600000007261000000723000000072300000007231000000da0c6368616e67655f76616c75656d000000730400000000020601726300000063020000000000000002000000030000004300000073120000007400830001007c0174017c003c006400530029014e29027262000000722d000000290272600000007261000000723000000072300000007231000000da126368616e67655f76616c75655f61727261797300000073040000000002060172640000002902da076163636f756e74da06616d6f756e74630200000000000000040000000500000043000000730201000074008300010074016a027403740483018301740564013c007405640119007d027c0074057c02640266023c00740474057c02640366023c007c0174057c02640466023c00740474057c02640566023c0074057c0064066602050019006407370003003c0074067c0083017d0364087c03170074057c027c00640966033c00640a74057c00640b66023c00640a74057c00640c66023c007405640d050019006407370003003c0074057c02640d6602050019007405640d1900370003003c007405640d19007405640e19006b0472e264077405640d3c00640774057c02640d66023c00640774057c027c00640f66033c00740474057c027c00641066033c006400530029114e72340000007235000000720d000000723a000000da0d7375727669766f725f64617465da0d7375727669766f725f74696d65721000000072120000007240000000720100000072370000007238000000da06617661746172720c000000723d000000723c00000029077262000000da07686173686c6962da0473686133da03737472722e000000722d000000da0a5f5f6c6966655f626172290472650000007266000000724f000000da0945585452415f424152723000000072300000007231000000da05737461727479000000732600000000020601120108010c010c010c010c011401080112010c010c0110011801100108010c010e01726f00000029017265000000630100000000000000030000000400000043000000733800000074007c006401660219007d017c0164021b007d0274017c0283017d027c0264036b04722864037d027c0274007c00640466023c007c02530029054eda0d7a6f6d626965735f6b696c6c7372590000007212000000da0e6c6966655f65787472615f6261722902722d000000725d00000029037265000000da03455850da084558505f4c494645723000000072300000007231000000726d00000090000000730e00000000010c0108010801080104010c01726d00000063010000000000000004000000050000004300000073a40000007400640119007d017400640219007d0274007c016403660219007d0374016a027c027c0374036a0483008303010074007c0364046602050019006405370003003c0074007c0164066602050019006405370003003c0074007c0364076602050019007c02370003003c0074007c0164086602050019007c02380003003c0074007c0164096602050019007c02370003003c007c03640274057c0283017c01640a9c045300290b4e72340000007213000000723500000072700000007210000000da1267616d655f7a6f6d626965735f6b696c6c73725b000000723a000000725a00000029047235000000da06737461747573726600000072340000002906722d00000072430000007246000000722b0000007247000000725d00000029047265000000724f000000da0b4641494c5f414d4f554e547250000000723000000072300000007231000000724c0000009a00000073160000000001080108010c011201140114011401140114010601724c00000063010000000000000004000000050000004300000073060100007400640119007d0174007c016402660219007d0274007c017c0264036603050019006404380003003c006405740174007c0164066602190018006a02140074006407190014007d0374007c016408660219007c036b01726c74007c0164086602190074006407190014007d037c0364096b02728874007c0164086602190074006407190014007d0374007c01640866020500190074037c038301380003003c007c0364096b0472c074046a0574037c0383017c0074066a078300830301006e0464097d0374007c01640a66020500190074037c038301370003003c0074007c00640b66020500190074037c038301370003003c007c02640c74037c0383017c01640d9c045300290e4e72340000007235000000724000000072100000007259000000720d000000721a000000723a0000007201000000da1167616d655f7a6f6d626965735f6761696eda0f7461755f7a6f6d6269655f6761696eda0a737465616c5f6c696665290472350000007275000000726600000072340000002908722d000000722e000000725c000000725d00000072430000007246000000722b000000724700000029047265000000da0b4c4153545f47414d4549447250000000da0c535445414c5f414d4f554e54723000000072300000007231000000724e000000a80000007324000000000108010c0116021e0110010c01080108010c0108011801080118020401180118010601724e00000063010000000000000007000000070000004300000073c60100007400640119007d0174007c016402660219007d026403740174007c0164046602190018006a0214007d0374007c016405660219007d047c047c036b01725274007c0164056602190074036406830114007d037c0364076b02726e74007c0164056602190074036406830114007d0374046a057406740183018301740064013c007400640119007d057c0074007c05640266023c0074077c047c031800830174007c05640566023c00740174007c05640466023c0074007c0064086602050019006409370003003c00740174007c05640a66023c0074007c05640b6602050019007c03370003003c0074007c00640c6602050019007c03370003003c0074087c0083017d06640d7c06170074007c057c00640e66033c007400640f050019006409370003003c007400640f190074007c05640f66023c007400640f19007400641019006b049001725c64097400640f3c00640974007c05640f66023c00640974007c057c00641166033c00740174007c057c00641266033c00640774007c00641366023c00640774007c00641466023c007c0364076b04900172ac74096a0a7c037c00740b6a0c8300830301007c0064157400640f190074077c0383017c017c0564169c06530029174e723400000072350000007259000000720d000000723a0000007a04302e35307201000000726800000072100000007267000000725a000000725b000000721200000072400000007269000000720c000000723d000000723c00000072370000007238000000da0c6e65775f7375727669766f7229067235000000727500000072690000007266000000da066c61737449647234000000290d722d000000722e000000725c000000722f000000726a000000726b000000726c000000725d000000726d00000072430000007246000000722b000000724700000029077265000000727a0000007250000000727b000000da0b4c4153545f414d4f554e54724f000000726e000000723000000072300000007231000000724d000000bf0000007342000000000108010c0116010c010801140108011401120108010c0114010c0114010c01140114010801120110011001120108010c010e010e010c010c010a01120106010c01724d000000630000000000000000040000000400000043000000734c0000007400640119007d0074007c006402660219007d0174007c007c016403660319007d027c0264046b02724474016a026404640583027d037c0364066b017248640753006e04640853006400530029094e72340000007235000000723d00000072100000007225000000e95000000054462903722d000000724800000072490000002904724f0000007250000000da0b484156455f534849454c44da0c72616e646f6d536869656c64723000000072300000007231000000724a000000e30000007310000000000108010c010e0108010c0108010602724a0000002901da046974656d630100000000000000040000000400000043000000735000000074006a017d017402640119007d027402640219007d0374036a047c027c00190074056a0683007c01830301007c037c00190074027c01640366023c0074026404190074027c01640566023c006400530029064e722200000072240000007238000000722a000000723f000000290772410000007242000000722d00000072430000007246000000722b0000007247000000290472820000007242000000da094c4953545f4954454dda0a4954454d5f5354415453723000000072300000007231000000da06776561706f6eef000000730c0000000002060108010801160110017285000000630100000000000000040000000400000043000000734c00000074006a017d017402640119007d027402640219007d0374036a047c027c00190074056a0683007c01830301007c037c00190074027c01640366023c00640474027c01640566023c006400530029064e7226000000722700000072370000007210000000723b000000290772410000007242000000722d00000072430000007246000000722b000000724700000029047282000000724200000072830000007284000000723000000072300000007231000000da0a736869656c645f627579f9000000730c0000000002060108010801160110017286000000630100000000000000040000000400000043000000735000000074006a017d017402640119007d027402640219007d0374036a047c027c00190074056a0683007c01830301007c037c00190074027c01640366023c0074026404190074027c01640566023c006400530029064e722800000072290000007239000000722a000000723e000000290772410000007242000000722d00000072430000007246000000722b000000724700000029047282000000724200000072830000007284000000723000000072300000007231000000da05736b696c6c03010000730c0000000002060108010801160110017287000000630100000000000000050000000500000043000000738c00000074006a017d017402640119007d027402640219007d037402640319007d0474036a047c037c00190074056a0683007c018303010074027c027c01640466031900640574027c0164066602190017006b04726e640574027c01640666021900170074027c027c01640466033c006e1a74027c027c0164046603050019007c047c001900370003003c006400530029074e7234000000721d000000721f000000724000000072120000007271000000290772410000007242000000722d00000072430000007246000000722b0000007247000000290572820000007242000000724f0000007283000000da0b4348415247455f4c494645723000000072300000007231000000da046c6966650d010000731400000000020601080108010801160112010c0106011602728900000063000000000000000004000000050000004300000073b000000074006a017d007402640119007d0174027c016402660219007d027c007c026b0272a874026403190064046b0872a274036a046405640683027d037c0364066b02729c74027c0064076602050019006405370003003c0074027c016408660205001900740264091900370003003c0074027c00640a6602050019007405370003003c0074066a077402640919007c0074086a0983008303010064045300640b530071ac640b53006e04640b530064005300290c4e723400000072350000007209000000547210000000720b000000da09626f73735f6b696c6c725a000000720a000000725b00000046290a72410000007242000000722d00000072480000007249000000725e00000072430000007246000000722b000000724700000029047242000000724f0000007250000000da0a72616e646f6d426f7373723000000072300000007231000000da0b61747461636b5f626f73731c01000073200000000002060108010c0108010c010c0108011401180114010c010a01040206020602728c0000002901da086e69636b6e616d65630100000000000000030000000500000043000000738200000074006a017d0174027c00830164016b01731a740364028301820174027c00830164036b04732e740364048301820174046a057c006a0683006a0764056406830283017d02740864077c02660219000c00736674036408740964077c02660219001700830182017c0074087c01640966023c007c00740864077c0266023c0064005300290a4ee9190000007a214e69636b6e616d6520746f6f206c6f6e6720283235206368617273206d6178292e72010000007a134e69636b6e616d6520746f6f2073686f72742efa01207231000000da096e69636b6e616d65737a274120666f726d206f662074686973206e616d6520616c72656164792062656c6f6e677320746f20728d000000290a72410000007242000000da036c656e7245000000726a000000726b000000da056c6f776572da077265706c616365722d000000da0862616c616e6365732903728d0000007242000000da096e616d65735f756964723000000072300000007231000000da0d7365745f6e69636b5f6e616d6533010000731200000000020601140114011601100106010c010c017296000000630000000000000000000000000200000043000000731a00000074006a0174026a0383006b02731674046401830182016400530029024e7a174f6e6c79206f70657261746f722063616e2063616c6c21290572410000007242000000722b000000724700000072450000007230000000723000000072300000007231000000726200000040010000730200000000017262000000291d7243000000da0448617368722d000000da085661726961626c65722b0000007248000000da0473656564726c0000007232000000da085f5f6578706f72747257000000725f000000725d0000007263000000da046c6973747264000000726f000000726d000000724c000000724e000000724d000000724a0000007285000000728600000072870000007289000000728c000000729600000072620000007230000000723000000072300000007231000000da083c6d6f64756c653e01000000733a00000008010e010c0108030e18103a10140601120506011205060112160e0a0e0e0e170e24080c0601100906011009060110090601100e10170601100c