Ticket #7172: VBE 3.0 drvier for NewOS 20110126183911 Michael Noisternig

File VBE 3.0 drvier for NewOS 20110126183911 Michael Noisternig, 68.0 KB (added by stargatefan, 10 years ago)
Line 
1Return-Path: mnoist@cosy.sbg.ac.at
2Received: from imta03.emeryville.ca.mail.comcast.net (LHLO
3 imta03.emeryville.ca.mail.comcast.net) (76.96.30.29) by
4 sz0155.ev.mail.comcast.net with LMTP; Wed, 26 Jan 2011 18:39:29 +0000 (UTC)
5Received: from puma.cosy.sbg.ac.at ([141.201.2.23])
6 by imta03.emeryville.ca.mail.comcast.net with comcast
7 id 0JfR1g0110VnJWd03JfSLo; Wed, 26 Jan 2011 18:39:28 +0000
8X-CAA-SPAM: N00000
9X-Authority-Analysis: v=1.1 cv=fns4A9u7xshXttRHU7TmT1Y4izOYDfDbxbHSnRDA668=
10 c=1 sm=1 a=L8p8kma/oHJeSDl31bwjLg==:17 a=qLRyAP_fWEelFXGYhegA:9
11 a=lvLzC-MUdzOW8KkLP1UMQy5kYREA:4 a=QEXdDO2ut3YA:10 a=KqK7VwWh473HTHhoTc8A:9
12 a=tx6xbr6MWd8aDzC8uBoA:7 a=7N9Vi6AGRdUhg5M2jmwr9zQ9vRQA:4
13 a=tZLGLCGkxT45AITn:21 a=P1ZsuZlUJvJM5GCx:21 a=uG85MrV0AAAA:8
14 a=GFOHqcW2DEsNBIHFNC4A:9 a=Px8wjG55psYqVOnKKhMA:7
15 a=UFs00ud1pmhWPnWI3FegQX-_MAsA:4 a=20mf6kwDMSn3A9Uw:21 a=rHMdcEhV-HuvGEOd:21
16 a=gdsxU3GQYnsiKbyxbnkA:9 a=SnA0FYeL-WnZKS_y3eVgi5qoOBMA:4
17 a=wAAcDp_PZ2FfALVsPmwA:9 a=luNVl03RNLshsy4ieoUA:7
18 a=3_z5FEv0YnF1lDz062F1z3bcg0QA:4 a=Uoi7IPtjIpcn9qHGR1oA:9
19 a=pohs-W9kDI_26EvBw00A:7 a=43maYUjVN7Z5LR1iYcjYCsfK2jsA:4
20 a=L8p8kma/oHJeSDl31bwjLg==:117
21Received: from [10.0.0.2] (178-190-25-246.adsl.highway.telekom.at [178.190.25.246])
22 by puma.cosy.sbg.ac.at (Postfix) with ESMTP id 4290022864F;
23 Wed, 26 Jan 2011 19:39:22 +0100 (CET)
24Message-ID: <4D406A4F.60407@cosy.sbg.ac.at>
25Date: Wed, 26 Jan 2011 19:39:11 +0100
26From: Michael Noisternig <mnoist@cosy.sbg.ac.at>
27User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.13) Gecko/20101207 Thunderbird/3.1.7
28MIME-Version: 1.0
29To: Paulo Estrela <paulojbe@gmail.com>, smc.collins@comcast.net
30Subject: Re: VBE 3.0 drvier for NewOS
31References: <AANLkTi=LWJ_UyXR+Lx-xPPf8i6ZuZ5=Z9XP8uy_HO3f3@mail.gmail.com>
32In-Reply-To: <AANLkTi=LWJ_UyXR+Lx-xPPf8i6ZuZ5=Z9XP8uy_HO3f3@mail.gmail.com>
33Content-Type: multipart/mixed;
34 boundary="------------040707070507020007050409"
35
36This is a multi-part message in MIME format.
37--------------040707070507020007050409
38Content-Type: text/plain; charset=UTF-8; format=flowed
39Content-Transfer-Encoding: 7bit
40
41Hi Paulo and Sean,
42
43I'll respond to you jointly as you have both asked for source code of my
44VESA VBE 3.0 driver.
45
46I'm no longer involved in Haiku/OpenBeOS or NewOS development for a long
47time now, for various reasons. I did hack a working and very fast
48server-client GUI back then (just try in Qemu ;)), including VBE 3.0
49support, TTY support, various GNU utilities including bash etc.. Pretty
50nice, but no time. So the VBE driver is also incomplete though the gist
51of it should be working. Which means that if you can switch modes it
52should be rather easy for you to implement other functions supported by
53the VBE 3.0 standard. I added some nifty hacks to support ATI cards and
54also some broken NVidia reference implementation, though the latter
55shouldn't be around anymore.
56
57I'll forward you the source code as is. You should be able to find the
58VBE documentation on the web assuming you don't have it already.
59
60You'll also required x86-architecture-specific selector support in the
61kernel. I'll forward you the sources as well, though they are also in
62the official NewOS kernel.
63
64Good luck,
65
66Michael
67
68Am 26.01.2011 02:03, schrieb Paulo Estrela:
69> Hi Michael,
70>
71> Do you still have the sources for your VBE 3.0 driver for NewOS? I would
72> like to try to port it to Haiku. I have a Geforce 310M that doesn't have
73> a driver for Haiku, and I would like to try to write a vbe 3.0 driver
74> that runs from protected mode not using vmm86. I didn't find any
75> examples of how to do this on Internet.
76>
77> Thank you,
78>
79> Paulo Estrela
80
81--------------040707070507020007050409
82Content-Type: text/plain;
83 name="vesa3.c"
84Content-Transfer-Encoding: base64
85Content-Disposition: attachment;
86 filename="vesa3.c"
87
88LyoNCioqIENvcHlyaWdodCAyMDAyLTIwMDUsIE1pY2hhZWwgTm9pc3Rlcm5pZy4gQWxsIHJp
89Z2h0cyByZXNlcnZlZC4NCioqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
90TmV3T1MgTGljZW5zZS4NCiovDQojaW5jbHVkZSAidmVzYTMuaCINCiNpbmNsdWRlICJndGYu
91aCINCiNpbmNsdWRlICJ2aWRlb19wYXJhbV90YWJsZS5oIg0KDQojaW5jbHVkZSA8a2VybmVs
92L2RlYnVnLmg+DQojaW5jbHVkZSA8a2VybmVsL2ZzL2RldmZzLmg+DQojaW5jbHVkZSA8a2Vy
93bmVsL2FyY2gvaTM4Ni9zZWxlY3Rvci5oPg0KI2luY2x1ZGUgPGtlcm5lbC92bS5oPg0KI2lu
94Y2x1ZGUgPGtlcm5lbC9oZWFwLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8
95c3RkaW8uaD4NCiNpbmNsdWRlIDxuZXdvcy9lcnJvcnMuaD4NCiNpbmNsdWRlIDxuZXdvcy9k
96cml2ZXJzLmg+DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
97LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8gc2V0IGZvciBy
98ZWFkaW5nIHRoZSBCSU9TIGZyb20gYXJyYXkgYmlvc2RhdGEgLSB1c2VmdWwgZm9yIGRlYnVn
99Z2luZw0KLy8jZGVmaW5lIEZBS0VfVkVTQQ0KDQovLyBOT1RFOiBtYW55IFZFU0EgVkJFIDMu
100MCBpbXBsZW1lbnRhdGlvbnMgYXJlIGJyb2tlbg0KLy8gSSB0cnkgdG8gYWRkcmVzcyB0aGVz
101ZSBwcm9ibGVtcyBieSBwYXRjaGluZyB0aGUgY29weSBvZiB0aGUgQklPUyBpbiBSQU0NCg0K
102Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
103LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiNpZmRlZiBGQUtFX1ZFU0ENCi8vI2luY2x1
104ZGUgInNhcHBoaXJlOTIwMC5oIg0KI2luY2x1ZGUgIm52NDE5M2UuaCINCi8vI2luY2x1ZGUg
105InZpdmlkITgxLmgiDQovLyNpbmNsdWRlICJwcm9waGV0My5oIg0KI2VuZGlmDQoNCiNkZWZp
106bmUgU1RSSU5HMihzKSAjcw0KI2RlZmluZSBTVFJJTkcocykgU1RSSU5HMihzKQ0KDQpzdHJ1
107Y3Qgc19yZWdzIHsNCgl1aW50MTYJYXg7DQoJdWludDE2CWJ4Ow0KCXVpbnQxNgljeDsNCgl1
108aW50MTYJZHg7DQoJdWludDE2CXNpOw0KCXVpbnQxNglkaTsNCgl1aW50MTYJZXM7DQp9IF9Q
109QUNLRUQ7DQoNCnN0YXRpYyBkZXZmc19mcmFtZWJ1ZmZlcl9pbmZvIGZiX2luZm87DQoNCnN0
110YXRpYyB2ZXNhM19pbmZvYmxvY2sgaW5mb2Jsb2NrOw0Kc3RhdGljIHZlc2EzX21vZGVfaW5m
111b2Jsb2NrIG1vZGVfaW5mb2Jsb2NrOw0KDQpzdGF0aWMgc2VsZWN0b3JfaWQgc2VsX2luZm9i
112bG9jazsNCg0Kc3RhdGljIHVuc2lnbmVkIGNoYXIgKnZpZGVvX2Jpb3M7DQpzdGF0aWMgdW5z
113aWduZWQgY2hhciAqYmlvc19kYXRhOw0Kc3RhdGljIHVuc2lnbmVkIGNoYXIgKmJpb3Nfc3Rh
114Y2s7DQoNCnN0YXRpYyBzZWxlY3Rvcl9pZCBzZWxfY29kZTsNCnN0YXRpYyBzZWxlY3Rvcl9p
115ZCBzZWxfc3RhY2s7DQoNCnN0YXRpYyBpbnQgcmV0bjsgIC8vIGZvciAxNi1iaXQgZmFyIHJl
116dHVybiBvciAzMi1iaXQgbmVhciByZXR1cm4NCg0KZXh0ZXJuIHZvaWQgdmVzYTNfZHVtbXlf
117cmV0ZigpOw0KZXh0ZXJuIHZvaWQgdmVzYTNfY2FsbF9yZXRmKCk7DQphc20oDQoiLmdsb2Jh
118bCB2ZXNhM19jYWxsX3JldGY7Ig0KInZlc2EzX2NhbGxfcmV0Zjo7Ig0KLy8icHVzaGwgJWRz
119OyINCi8vInBvcGwgJWdzOyINCi8vInB1c2hsICQweDQwOyINCi8vInBvcGwgJWRzOyINCiIJ
120YWRkcjE2OyINCiIJbGNhbGwJKnJldG47Ig0KLy8iCWxjYWxsCSVnczoqcmV0bjsiDQoiCWRh
121dGExNjsiDQoiLmdsb2JhbCB2ZXNhM19kdW1teV9yZXRmOyINCiJ2ZXNhM19kdW1teV9yZXRm
122OjsiDQoiCWxyZXQ7Ig0KKTsNCg0Kc3RhdGljIHN0cnVjdCBzX2ZhcmNhbGwgew0KCXVpbnQz
123MglvZmZzZXQ7DQoJdWludDMyCXNlZzsNCn0gZmFyY2FsbCA9IHsgKHVpbnQzMil2ZXNhM19k
124dW1teV9yZXRmLCBLRVJORUxfQ09ERV9TRUcgfTsNCg0Kc3RhdGljIHZvaWQgdmVzYV9jYWxs
125KCBzdHJ1Y3Qgc19yZWdzICpyZWdzICkNCnsNCglhc20oInB1c2hmOyINCgkJImNsaTsiDQoJ
126CSJwdXNobAklJWVzOyINCgkJInB1c2hhbDsiDQoJCSJtb3ZsCSUlZXNwLCUlZXNpOyINCgkJ
127InB1c2hsCXNlbF9zdGFjazsiDQoJCSJwdXNobAkkKCJTVFJJTkcoVkVTQV9TVEFDS19TSVpF
128KSItNCk7Ig0KCQkiY2FsbAlpMzg2X3N0YWNrX3N3aXRjaDsiDQoJCSJwdXNobAkkIlNUUklO
129RyhLRVJORUxfREFUQV9TRUcpIjsiDQoJCSJwdXNobAklJWVzaTsiDQoJCSJwdXNobAklJWVk
130aTsiDQoJCSJwdXNobAklJWRzOyINCgkJIm1vdncJMTIoJSVlZGkpLCUlZHg7Ig0KCQkibW92
131dwklJWR4LCUlZXM7Ig0KCQkibW92dwkoJSVlZGkpLCUlYXg7Ig0KCQkibW92dwkyKCUlZWRp
132KSwlJWJ4OyINCgkJIm1vdncJNCglJWVkaSksJSVjeDsiDQoJCSJtb3Z3CTYoJSVlZGkpLCUl
133ZHg7Ig0KCQkibW92dwk4KCUlZWRpKSwlJXNpOyINCgkJIm1vdncJMTAoJSVlZGkpLCUlZGk7
134Ig0KCQkibGNhbGwJKmZhcmNhbGw7Ig0KCQkicG9wbAklJWRzOyINCgkJInBvcGwJJSVlYnA7
135Ig0KCQkibW92dwklJWF4LCUlZHM6KCUlZWJwKTsiDQoJCSJtb3ZsCSUlZWJwLCUlZWF4OyIN
136CgkJIm1vdncJJSVieCwyKCUlZWF4KTsiDQoJCSJtb3Z3CSUlY3gsNCglJWVheCk7Ig0KCQki
137bW92dwklJWR4LDYoJSVlYXgpOyINCgkJIm1vdncJJSVzaSw4KCUlZWF4KTsiDQoJCSJtb3Z3
138CSUlZGksMTAoJSVlYXgpOyINCgkJIm1vdncJJSVlcywlJWJ4OyINCgkJIm1vdncJJSVieCwx
139MiglJWVheCk7Ig0KCQkiY2FsbAlpMzg2X3N0YWNrX3N3aXRjaDsiDQoJCSJwb3BhbDsiDQoJ
140CSJwb3BsCSUlZXM7Ig0KCQkicG9wZjsiDQoJCTogOiAiRCIgKHJlZ3MpICk7DQp9DQoNCi8v
141LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
142LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojaWYgMA0Kc3RhdGljIHZvaWQgKmxpbmVhcigg
143dm9pZCAqcHRyICkNCnsNCglyZXR1cm4gKHZvaWQgKikoICoodW5zaWduZWQgc2hvcnQgKilw
144dHIgKyAoKGludCkoKCh1bnNpZ25lZCBzaG9ydCAqKXB0cilbMV0pPDw0KSApOw0KfQ0KI2Vu
145ZGlmDQoNCnN0YXRpYyB2b2lkICptZW1tZW0oIGNvbnN0IHZvaWQgKm1lbSwgc2l6ZV90IGxl
146biwgY29uc3Qgdm9pZCAqc3VibWVtLCBzaXplX3Qgc3VibGVuICkNCnsNCgljb25zdCBjaGFy
147ICptID0gbWVtOw0KCWNvbnN0IGNoYXIgKm1heCA9ICZtW2xlbi1zdWJsZW5dOw0KDQoJZm9y
148ICggOyBtIDwgbWF4OyBtKysgKSB7DQoJCW0gPSBtZW1jaHIoIG0sICooY2hhciAqKXN1Ym1l
149bSwgbWF4LW0gKTsNCgkJaWYgKCBtID09IE5VTEwgKQ0KCQkJYnJlYWs7DQoJCWlmICggbWVt
150Y21wKG0sIHN1Ym1lbSwgc3VibGVuKSA9PSAwICkNCgkJCXJldHVybiAodm9pZCAqKW07DQoJ
151fQ0KDQoJcmV0dXJuIE5VTEw7DQp9DQoNCnN0YXRpYyB2b2lkIHJlc29sdmVfZmFycHRyKCB1
152aW50MzIgKnN0cmluZ19mYXJwdHIgKQ0Kew0KCWlmICggKCpzdHJpbmdfZmFycHRyID4+IDE2
153KSA9PSBzZWxfaW5mb2Jsb2NrICYmICgqc3RyaW5nX2ZhcnB0ciAmPSAweGZmZmYpIDwgc2l6
154ZW9mKHZlc2EzX2luZm9ibG9jaykgKQ0KCQkqc3RyaW5nX2ZhcnB0ciArPSAodWludDMyKSZp
155bmZvYmxvY2s7DQoJZWxzZQ0KCQkqc3RyaW5nX2ZhcnB0ciA9IDA7DQp9DQoNCi8vLS0tLS0t
156LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
157LS0tLS0tLS0tLS0tLS0tLQ0KDQpzdGF0aWMgdWludDE2IHZlc2EzX2dldF9tb2RlX2luZm9i
158bG9jayggdWludDE2IG1vZGUgKQ0Kew0KCXN0cnVjdCBzX3JlZ3MgcmVnczsNCg0KCXJlZ3Mu
159YXggPSAweDRmMDE7DQoJcmVncy5jeCA9IG1vZGU7DQoJcmVncy5lcyA9IGkzODZfc2VsZWN0
160b3JfYWRkKCBTRUxFQ1RPUigmbW9kZV9pbmZvYmxvY2ssc2l6ZW9mKG1vZGVfaW5mb2Jsb2Nr
161KS0xLERBVEFfdyxmYWxzZSkgKTsNCglyZWdzLmRpID0gMDsNCgl2ZXNhX2NhbGwoICZyZWdz
162ICk7DQoJaTM4Nl9zZWxlY3Rvcl9yZW1vdmUoIHJlZ3MuZXMgKTsNCg0KCXJldHVybiByZWdz
163LmF4Ow0KfQ0KDQpzdGF0aWMgdWludDE2IHZlc2EzX3NldF9tb2RlX0NSVENfZ2VuZXJpYygg
164dWludDE2IG1vZGUsIHZlc2EzX0NSVENfaW5mb2Jsb2NrICpjcnRjICkNCnsNCi8qCXZlc2Ez
165X0NSVENfaW5mb2Jsb2NrIENSVENfaW5mb19ibG9jayA9IHsNCgkJNjQwKzE2KzY0KzgwLCA2
166NDArMTYsIDY0MCsxNis2NCwNCgkJNDgwKzMrNCsxMywgNDgwKzMsIDQ4MCszKzQsDQoJCVZF
167U0EzX0NSVENfSFNZTkNfTkVHQVRJVkUsIDIzNzUwMDAwLCA1OTM4LCB7fSB9OyovDQoJc3Ry
168dWN0IHNfcmVncyByZWdzOw0KDQoJcmVncy5heCA9IDB4NGYwMjsNCglyZWdzLmJ4ID0gbW9k
169ZSB8IDB4YzAwMDsgLy98IDB4YzgwMDsNCglyZWdzLmVzID0gMDsNCi8qCXJlZ3MuZXMgPSBp
170Mzg2X3NlbGVjdG9yX2FkZCggU0VMRUNUT1IoJkNSVENfaW5mb19ibG9jayxzaXplb2YoQ1JU
171Q19pbmZvX2Jsb2NrKS0xLERBVEFfdyxmYWxzZSkgKTsNCglyZWdzLmRpID0gMDsqLw0KCXZl
172c2FfY2FsbCggJnJlZ3MgKTsNCg0KCXJldHVybiByZWdzLmF4Ow0KfQ0KDQpzdHJ1Y3Qgc19l
173ZGlkIHsNCgl1aW50MTYJCWRvdF9jbG9jazsJCQkvLyBwaXhlbCBjbG9jayAvIDEwMDAwDQoJ
174dWludDgJCXhyZXNfbG87DQoJdWludDE2CQloYmxhbmsgOiAxMjsJCS8vIGJsYW5rID0gZnJv
175bnQgcG9yY2ggKyBzeW5jIHdpZHRoICsgYmFjayBwb3JjaA0KCXVpbnQ4CQl4cmVzX2hpIDog
176NDsNCgl1aW50OAkJeXJlc19sbzsNCgl1aW50MTYJCXZibGFuayA6IDEyOw0KCXVpbnQ4CQl5
177cmVzX2hpIDogNDsNCgl1aW50OAkJaG92ZXJwbHVzX2xvOwkJLy8gb3ZlcnBsdXMgPSBmcm9u
178dCBwb3JjaA0KCXVpbnQ4CQloc3luY3dpZHRoX2xvOw0KCXVpbnQ4CQl2c3luY3dpZHRoX2xv
179IDogNDsNCgl1aW50OAkJdm92ZXJwbHVzX2xvIDogNDsNCgl1aW50OAkJdnN5bmN3aWR0aF9o
180aSA6IDI7DQoJdWludDgJCXZvdmVycGx1c19oaSA6IDI7DQoJdWludDgJCWhzeW5jd2lkdGhf
181aGkgOiAyOw0KCXVpbnQ4CQlob3ZlcnBsdXNfaGkgOiAyOw0KCXVpbnQ4CQlfcmVzZXJ2ZWRb
182Nl07DQp9IF9QQUNLRUQ7DQoNCnN0YXRpYyBzdHJ1Y3Qgc19lZGlkICphdGlfZWRpZF9kZXN0
183Ow0KDQpzdGF0aWMgdWludDE2IHZlc2EzX3NldF9tb2RlX0NSVENfQVRJKCB1aW50MTYgbW9k
184ZSwgdmVzYTNfQ1JUQ19pbmZvYmxvY2sgKmNydGMgKQ0Kew0KLyoJc3RhdGljIGNvbnN0IHN0
185cnVjdCBzX2VkaWQgZGVmYXVsdF9lZGlkID0gew0KCQkyMzc1LCA2NDAmMHhmZiwgMTYwLCA2
186NDA+PjgsIDQ4MCYweGZmLCAyMCwgNDgwPj44LA0KCQkxNiYweGZmLCA2NCYweGZmLCA0LCAz
187JjB4ZmYsIDQ+PjQsIDM+PjQsIDY0Pj44LCAxNj4+OCwge30NCgl9OyovDQoJc3RydWN0IHNf
188cmVncyByZWdzOw0KCXVuc2lnbmVkIGhvdmVycGx1cyA9IGNydGMtPmhvcml6b250YWxfc3lu
189Y19zdGFydCAtIG1vZGVfaW5mb2Jsb2NrLnhfcmVzb2x1dGlvbjsNCgl1bnNpZ25lZCB2b3Zl
190cnBsdXMgPSBjcnRjLT52ZXJ0aWNhbF9zeW5jX3N0YXJ0IC0gbW9kZV9pbmZvYmxvY2sueV9y
191ZXNvbHV0aW9uOw0KCXVuc2lnbmVkIGhzeW5jd2lkdGggPSBjcnRjLT5ob3Jpem9udGFsX3N5
192bmNfZW5kIC0gY3J0Yy0+aG9yaXpvbnRhbF9zeW5jX3N0YXJ0Ow0KCXVuc2lnbmVkIHZzeW5j
193d2lkdGggPSBjcnRjLT52ZXJ0aWNhbF9zeW5jX2VuZCAtIGNydGMtPnZlcnRpY2FsX3N5bmNf
194c3RhcnQ7DQoNCglkcHJpbnRmKCAidmVzYTM6IEFUSTogd3JpdGluZyBFRElEIGRhdGFcbiIg
195KTsNCg0KCWF0aV9lZGlkX2Rlc3QtPmRvdF9jbG9jayA9IGNydGMtPnBpeGVsX2Nsb2NrIC8g
196MTAwMDA7DQoJYXRpX2VkaWRfZGVzdC0+eHJlc19sbyA9IG1vZGVfaW5mb2Jsb2NrLnhfcmVz
197b2x1dGlvbiAmIDB4ZmY7DQoJYXRpX2VkaWRfZGVzdC0+aGJsYW5rID0gY3J0Yy0+aG9yaXpv
198bnRhbF90b3RhbCAtIG1vZGVfaW5mb2Jsb2NrLnhfcmVzb2x1dGlvbjsNCglhdGlfZWRpZF9k
199ZXN0LT54cmVzX2hpID0gbW9kZV9pbmZvYmxvY2sueF9yZXNvbHV0aW9uID4+IDg7DQoJYXRp
200X2VkaWRfZGVzdC0+eXJlc19sbyA9IG1vZGVfaW5mb2Jsb2NrLnlfcmVzb2x1dGlvbiAmIDB4
201ZmY7DQoJYXRpX2VkaWRfZGVzdC0+dmJsYW5rID0gY3J0Yy0+dmVydGljYWxfdG90YWwgLSBt
202b2RlX2luZm9ibG9jay55X3Jlc29sdXRpb247DQoJYXRpX2VkaWRfZGVzdC0+eXJlc19oaSA9
203IG1vZGVfaW5mb2Jsb2NrLnlfcmVzb2x1dGlvbiA+PiA4Ow0KCWF0aV9lZGlkX2Rlc3QtPmhv
204dmVycGx1c19sbyA9IGhvdmVycGx1cyAmIDB4ZmY7DQoJYXRpX2VkaWRfZGVzdC0+aHN5bmN3
205aWR0aF9sbyA9IGhzeW5jd2lkdGggJiAweGZmOw0KCWF0aV9lZGlkX2Rlc3QtPnZzeW5jd2lk
206dGhfbG8gPSB2c3luY3dpZHRoICYgMHhmOw0KCWF0aV9lZGlkX2Rlc3QtPnZvdmVycGx1c19s
207byA9IHZvdmVycGx1cyAmIDB4ZjsNCglhdGlfZWRpZF9kZXN0LT52c3luY3dpZHRoX2hpID0g
208dnN5bmN3aWR0aCA+PiA0Ow0KCWF0aV9lZGlkX2Rlc3QtPnZvdmVycGx1c19oaSA9IHZvdmVy
209cGx1cyA+PiA0Ow0KCWF0aV9lZGlkX2Rlc3QtPmhzeW5jd2lkdGhfaGkgPSBoc3luY3dpZHRo
210ID4+IDg7DQoJYXRpX2VkaWRfZGVzdC0+aG92ZXJwbHVzX2hpID0gaG92ZXJwbHVzID4+IDg7
211DQoNCi8vCW1lbWNweSggYXRpX2VkaWRfZGVzdCwgJmRlZmF1bHRfZWRpZCwgc2l6ZW9mKHN0
212cnVjdCBzX2VkaWQpICk7DQovLwltZW1jcHkoICZ2aWRlb19iaW9zWzB4OWI4ZV0sICZ2aWRl
213b19iaW9zWzB4OWYyNis5KjB4MTJdLCAweDEyICk7DQoNCglkcHJpbnRmKCAidmVzYTM6IEFU
214STogRURJRDogZG90X2Nsb2NrICV1LCB4cmVzICV1LCB5cmVzICV1LCBoYmxhbmsgJXUsIHZi
215bGFuayAldSwgaHN5bmN3aWR0aCAldSwgdnN5bmN3aWR0aCAldSwgaG92ZXJwbHVzICV1LCB2
216b3ZlcnBsdXMgJXVcbiIsDQoJCWF0aV9lZGlkX2Rlc3QtPmRvdF9jbG9jaywNCgkJYXRpX2Vk
217aWRfZGVzdC0+eHJlc19sbysoYXRpX2VkaWRfZGVzdC0+eHJlc19oaTw8OCksDQoJCWF0aV9l
218ZGlkX2Rlc3QtPnlyZXNfbG8rKGF0aV9lZGlkX2Rlc3QtPnlyZXNfaGk8PDgpLA0KCQlhdGlf
219ZWRpZF9kZXN0LT5oYmxhbmssDQoJCWF0aV9lZGlkX2Rlc3QtPnZibGFuaywNCgkJYXRpX2Vk
220aWRfZGVzdC0+aHN5bmN3aWR0aF9sbysoYXRpX2VkaWRfZGVzdC0+aHN5bmN3aWR0aF9oaTw8
221OCksDQoJCWF0aV9lZGlkX2Rlc3QtPnZzeW5jd2lkdGhfbG8rKGF0aV9lZGlkX2Rlc3QtPnZz
222eW5jd2lkdGhfaGk8PDQpLA0KCQlhdGlfZWRpZF9kZXN0LT5ob3ZlcnBsdXNfbG8rKGF0aV9l
223ZGlkX2Rlc3QtPmhvdmVycGx1c19oaTw8OCksDQoJCWF0aV9lZGlkX2Rlc3QtPnZvdmVycGx1
224c19sbysoYXRpX2VkaWRfZGVzdC0+dm92ZXJwbHVzX2hpPDw0KQ0KCQkpOw0KDQoJcmVncy5h
225eCA9IDB4NGYwMjsNCglyZWdzLmJ4ID0gbW9kZSB8IDB4YzAwMDsNCglyZWdzLmVzID0gMDsN
226Cgl2ZXNhX2NhbGwoICZyZWdzICk7DQoNCglyZXR1cm4gcmVncy5heDsNCn0NCg0Kc3RhdGlj
227IHVpbnQxNiB2ZXNhM19zZXRfbW9kZV9DUlRDX25WaWRpYSggdWludDE2IG1vZGUsIHZlc2Ez
228X0NSVENfaW5mb2Jsb2NrICpjcnRjICkNCnsNCglzdHJ1Y3Qgc19yZWdzIHJlZ3M7DQoNCgly
229ZWdzLmF4ID0gMHg0ZjAyOw0KCXJlZ3MuYnggPSBtb2RlIHwgMHhjMDAwOw0KCXJlZ3MuZGkg
230PSAwOw0KCXJlZ3MuZXMgPSAwOw0KCXZlc2FfY2FsbCggJnJlZ3MgKTsNCg0KCXJldHVybiBy
231ZWdzLmF4Ow0KfQ0KDQpzdGF0aWMgdWludDE2ICgqdmVzYTNfc2V0X21vZGVfQ1JUQykodWlu
232dDE2LCB2ZXNhM19DUlRDX2luZm9ibG9jayAqKSA9IHZlc2EzX3NldF9tb2RlX0NSVENfZ2Vu
233ZXJpYzsNCg0Kc3RhdGljIHVpbnQxNiB2ZXNhM19zZXRfbW9kZSggdW5zaWduZWQgaW50IHhy
234ZXMsIHVuc2lnbmVkIGludCB5cmVzLCB1bnNpZ25lZCBpbnQgYnBwLCB1bnNpZ25lZCBpbnQg
235cmVmcmVzaF9yYXRlICkNCnsNCgl1aW50MTYgZXJyID0gMHhmZmZmOw0KCXVpbnQxNiAqbW9k
236ZSA9ICh1aW50MTYgKilpbmZvYmxvY2sudmlkZW9fbW9kZV9wdHI7DQoNCglpZiAoIG1vZGUg
237KSB7DQoJCWRwcmludGYoICJ2ZXNhMzogc2VhcmNoaW5nIG1vZGUgJXV4JXV4JXUuLi5cbiIs
238IHhyZXMsIHlyZXMsIGJwcCApOw0KCQl3aGlsZSAoICptb2RlICE9IDB4ZmZmZiApIHsNCgkJ
239CWVyciA9IHZlc2EzX2dldF9tb2RlX2luZm9ibG9jayggKm1vZGUgKTsNCgkJCWlmICggZXJy
240ID09IDB4MDA0Zg0KCQkJICAmJiBtb2RlX2luZm9ibG9jay54X3Jlc29sdXRpb24gPT0geHJl
241cw0KCQkJICAmJiBtb2RlX2luZm9ibG9jay55X3Jlc29sdXRpb24gPT0geXJlcw0KCQkJICAm
242JiBtb2RlX2luZm9ibG9jay5iaXRzX3Blcl9waXhlbCA9PSBicHAgKSB7DQoJCQkJc3RydWN0
243IHZlc2EzX0NSVENfaW5mb2Jsb2NrIGNydGM7DQoJCQkJZ3RmX2NvbXB1dGVfQ1JUQ19kYXRh
244KCAmY3J0YywgeHJlcywgeXJlcywgcmVmcmVzaF9yYXRlPDwxMCwgZmFsc2UsIGZhbHNlICk7
245DQoJCQkJaWYgKCBjcnRjLnBpeGVsX2Nsb2NrID4gbW9kZV9pbmZvYmxvY2subWF4X3BpeGVs
246X2Nsb2NrICYmIG1vZGVfaW5mb2Jsb2NrLm1heF9waXhlbF9jbG9jayA+IDAgKSB7DQoJCQkJ
247CWRwcmludGYoICJ2ZXNhMzogcGl4ZWwgY2xvY2sgdG9vIGhpZ2ggKG1heC4gaXMgJXUgSHop
248IVxuIiwgbW9kZV9pbmZvYmxvY2subWF4X3BpeGVsX2Nsb2NrICk7DQoJCQkJCXJldHVybiAt
249MTsNCgkJCQl9DQoJCQkJZHByaW50ZiggInZlc2EzOiBzd2l0Y2hpbmcgdG8gdmlkZW8gbW9k
250ZSAweCV4Li4uXG4iLCAqbW9kZSApOw0KCQkJCWVyciA9IHZlc2EzX3NldF9tb2RlX0NSVEMo
251ICptb2RlLCAmY3J0YyApOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJbW9kZSsrOw0KCQl9DQoJ
252fQ0KDQoJcmV0dXJuIGVycjsNCn0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
253LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovKiBG
254b3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSB2ZXNhICgyLjApIGRyaXZlciBhbmQgZGVtb25z
255dHJhdGlvbiBwdXJwb3Nlcw0KICAgdGhpcyBkcml2ZXIgZ29lcyB0byBWRVNBIFZCRSBtb2Rl
256IDY0MHg0ODB4MzIvMTUgd2hlbiBvcGVuZWQuDQogICBOb3RlIHRoYXQgZm9yIGdvaW5nIGJh
257Y2sgdG8gdGV4dCBtb2RlIHlvdSBoYXZlIHRvIHV0aWxpemUgYSBzdGFuZGFyZCBWR0ENCiAg
258IGRyaXZlciBhcyBWRVNBIFZCRSAzLjAgZG9lcyBOT1Qgc3VwcG9ydCB0ZXh0IG1vZGVzLg0K
259Ki8NCnN0YXRpYyBpbnQgdmVzYTNfb3BlbiggZGV2X2lkZW50IGlkZW50LCBkZXZfY29va2ll
260ICpjb29raWUgKQ0Kew0KCWludCBlcnIgPSB2ZXNhM19zZXRfbW9kZSggNjQwLCA0ODAsIDMy
261LCA2MCApOw0KDQoJZHByaW50ZiggInZlc2EzOiBvcGVuKCk6IHZlc2EzX3NldF9tb2RlKCkg
262cmV0dXJuZWQgMHgleFxuIiwgZXJyICk7DQoNCglpZiAoIGVyciAhPSAweDAwNGYgKSB7DQoJ
263CWVyciA9IHZlc2EzX3NldF9tb2RlKCA2NDAsIDQ4MCwgMTUsIDYwICk7ICAvLyBsZXQncyB0
264cnkgMTUgYml0IG1vZGUgaW5zdGVhZA0KCQlkcHJpbnRmKCAidmVzYTM6IG9wZW4oKTogdmVz
265YTNfc2V0X21vZGUoKSByZXR1cm5lZCAweCV4XG4iLCBlcnIgKTsNCgkJaWYgKCBlcnIgIT0g
266MHgwMDRmICkNCgkJCXJldHVybiBFUlJfR0VORVJBTDsNCgl9DQoNCglkcHJpbnRmKCAidmVz
267YTM6IHBoeXNpY2FsIHZpZGVvIG1lbW9yeSBhdCAweCV4XG4iLCBtb2RlX2luZm9ibG9jay5w
268aHlzX2Jhc2VfcHRyICk7DQoNCglmYl9pbmZvLndpZHRoID0gbW9kZV9pbmZvYmxvY2sueF9y
269ZXNvbHV0aW9uOw0KCWZiX2luZm8uaGVpZ2h0ID0gbW9kZV9pbmZvYmxvY2sueV9yZXNvbHV0
270aW9uOw0KCWZiX2luZm8uYml0X2RlcHRoID0gbW9kZV9pbmZvYmxvY2suYml0c19wZXJfcGl4
271ZWw7DQoJc3dpdGNoICggZmJfaW5mby5iaXRfZGVwdGggKSB7DQoJCWNhc2UgIDg6IGZiX2lu
272Zm8uY29sb3Jfc3BhY2UgPSBDT0xPUl9TUEFDRV84QklUOyBicmVhazsNCgkJY2FzZSAxNTog
273ZmJfaW5mby5jb2xvcl9zcGFjZSA9IENPTE9SX1NQQUNFX1JHQjU1NTsgYnJlYWs7DQoJCWNh
274c2UgMjQ6IGZiX2luZm8uY29sb3Jfc3BhY2UgPSBDT0xPUl9TUEFDRV9SR0I4ODg7IGJyZWFr
275Ow0KCQljYXNlIDMyOiBmYl9pbmZvLmNvbG9yX3NwYWNlID0gQ09MT1JfU1BBQ0VfUkdCODg4
276KzE7IC8vIENPTE9SX1NQQUNFX1JHQjg4ODgNCgl9DQoNCiNpZiAwDQoJew0KCQl1bnNpZ25l
277ZCBpLCB4LCB5LCByZ2IxLCByZ2IyOw0KCQl2b2lkICp2aWRlb19tZW07DQoNCgkJLy9kcmF3
278IGEgY29sb3ItZmFkaW5nIHJlY3RhbmdsZSBvbiBzY3JlZW4NCgkJdm1fbWFwX3BoeXNpY2Fs
279X21lbW9yeSggdm1fZ2V0X2tlcm5lbF9hc3BhY2VfaWQoKSwgImxpbmVhcl92aWRlb19tZW0i
280LCAodm9pZCoqKSZ2aWRlb19tZW0sIFJFR0lPTl9BRERSX0FOWV9BRERSRVNTLA0KCQkJbW9k
281ZV9pbmZvYmxvY2sueF9yZXNvbHV0aW9uICogbW9kZV9pbmZvYmxvY2sueV9yZXNvbHV0aW9u
282ICogKChtb2RlX2luZm9ibG9jay5iaXRzX3Blcl9waXhlbCs3KS84KSwNCgkJCUxPQ0tfUlcg
283fCBMT0NLX0tFUk5FTCwgKGFkZHJfdCltb2RlX2luZm9ibG9jay5waHlzX2Jhc2VfcHRyICk7
284DQoNCiNkZWZpbmUgUElYRUw4ODg4KHgseSxjKSBcDQoqKHVpbnQzMiopJigoY2hhciopdmlk
285ZW9fbWVtKVsoKHkpKjY0MCsoeCkpKjRdID0gKGMpOw0KDQojZGVmaW5lIFBJWEVMODg4KHgs
286eSxjKSBcDQoqKHVpbnQxNiopJigoY2hhciopdmlkZW9fbWVtKVsoKHkpKjY0MCsoeCkpKjNd
287ID0gKGMpJjB4ZmZmZjsgXA0KKih1aW50OCopJigoY2hhciopdmlkZW9fbWVtKVsoKHkpKjY0
288MCsoeCkpKjMrMl0gPSAoYyk+PjE2Ow0KDQojZGVmaW5lIFBJWEVMNTU1KHgseSxjKSBcDQoo
289KHVpbnQxNiopdmlkZW9fbWVtKVsoKHkpKjY0MCsoeCkpXSA9ICgoKGMpPj4zKSYweDFmKSB8
290ICgoKGMpPj42KSYweDNlMCkgfCAoKChjKT4+OSkmMHg3YzAwKTsNCg0KI2RlZmluZSBQSVhF
291TCBQSVhFTDg4ODgNCg0KI2lmIDENCgkgICAgZm9yICggaSA9IDA7IGkgPCAyMDsgaSsrICkg
292ew0KCQkgICAgZm9yICggeCA9IDA7IHggPCA2NDAqNDgwOyB4KysgKSB7DQoJCQkJaWYgKCAo
293eC82NDApJTMwIDwgMTAgKSB7DQoJCQkJCVBJWEVMKCB4LCAwLCAweGZmKig2NDAtKHgraSkp
294LzY0MCArICgoMHhmZiooeCtpKS82NDApIDw8IDgpICk7DQoJCQkJfQ0KCQkJCWVsc2UgaWYg
295KCAoeC82NDApJTMwIDwgMjAgKSB7DQoJCQkJCVBJWEVMKCB4LCAwLCAoKDB4ZmYqKDY0MC0o
296eCtpKSkvNjQwKSA8PCA4KSArICgoMHhmZiooeCtpKS82NDApIDw8IDE2KSApOw0KCQkJCX0N
297CgkJCQllbHNlIHsNCgkJCQkJUElYRUwoIHgsIDAsICgoMHhmZiooNjQwLSh4K2kpKS82NDAp
298IDw8IDE2KSArIDB4ZmYqKHgraSkvNjQwICk7DQoJCQkJfQ0KCSAgICAJfQ0KLyogIAkgICAg
299ICBmb3IgKCB5ID0gMDsgeSA8IDI1NjsgeSsrICkgew0KCSAgICAgICAgICAgIHJnYjEgPSAo
300KDI1NS15KTw8OCkrKHk8PDE2KTsNCgkgICAgICAgICAgICByZ2IyID0gKCh5KihpJjI1NSk+
301PjgpPDwxNikrKCh5KihpJjI1NSk+PjgpPDw4KSsoMjU1LXkpKyh5KihpJjI1NSk+PjgpOw0K
302CSAgICAgICAgICAgIGZvciAoIHggPSAwOyB4IDwgMjU2OyB4KysgKQ0KCSAgICAgICAgICAg
303ICAgKCh1bnNpZ25lZCopdmlkZW9fbWVtKVt5KjY0MCt4XSA9DQoJICAgICAgICAJKCgocmdi
304MSYweGZmKSooMjU1LXgpPj44KSsoKHJnYjImMHhmZikqeCk+PjgpIHwNCgkgICAgICAgIAko
305KCgoKChyZ2IxJjB4ZmYwMCk+PjgpKigyNTUteCk+PjgpKygoKHJnYjImMHhmZjAwKT4+OCkq
306eD4+OCkpKTw8OCkgfA0KCSAgICAgICAgCSgoKCgocmdiMT4+MTYpKigyNTUteCk+PjgpKygo
307cmdiMj4+MTYpKng+PjgpKSk8PDE2KTsNCgkgICAgICAgIH0qLw0KCQkgICAgZm9yICggeCA9
308IDA7IHggPCAxPDwyMDsgeCsrICkgeSsrOyAgLy8gZHVtbXkgbG9vcA0KCQl9DQojZW5kaWYN
309CgkgICAgZm9yICggeSA9IDA7IHkgPCAyMDsgeSsrICkNCgkJICAgIGZvciAoIHggPSAwOyB4
310IDwgMjA7IHgrKyApDQoJICAgIAkJUElYRUwoIHgsIHksIDB4MWYgKTsNCgl9DQojZW5kaWYN
311Cg0KCXJldHVybiBOT19FUlJPUjsNCn0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
312LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpz
313dGF0aWMgaW50IHZlc2EzX2Nsb3NlKCBkZXZfY29va2llIGNvb2tpZSApDQp7DQoJcmV0dXJu
314IE5PX0VSUk9SOw0KfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
315LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN0YXRpYyBpbnQg
316dmVzYTNfZnJlZV9jb29raWUoIGRldl9jb29raWUgY29va2llICkNCnsNCglyZXR1cm4gTk9f
317RVJST1I7DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
318LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3RhdGljIGludCB2ZXNh
319M19zZWVrKCBkZXZfY29va2llIGNvb2tpZSwgb2ZmX3QgcG9zLCBzZWVrX3R5cGUgc3QpDQp7
320DQoJcmV0dXJuIEVSUl9OT1RfQUxMT1dFRDsNCn0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0t
321LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
322LS0tDQpzdGF0aWMgaW50IHZlc2EzX2lvY3RsKCBkZXZfY29va2llIGNvb2tpZSwgaW50IG9w
323LCB2b2lkICpidWYsIHNpemVfdCBsZW4gKQ0Kew0KCWludCBlcnIgPSBFUlJfSU5WQUxJRF9B
324UkdTOw0KDQoJc3dpdGNoICggb3AgKSB7DQoNCgkgIGNhc2UgMHhmYjoNCgkJZXJyID0gdXNl
325cl9tZW1jcHkoIGJ1ZiwgJm1vZGVfaW5mb2Jsb2NrLnBoeXNfYmFzZV9wdHIsIDQgKTsNCgkJ
326YnJlYWs7DQoNCgkgIGNhc2UgSU9DVExfREVWRlNfR0VUX0ZSQU1FQlVGRkVSX0lORk86DQoJ
327CWRwcmludGYoICJ2ZXNhMzogSU9DVExfREVWRlNfR0VUX0ZSQU1FQlVGRkVSX0lORk9cbiIg
328KTsNCg0KCQlpZiAoIGlzX2tlcm5lbF9hZGRyZXNzKGJ1ZikgKQ0KCQkJcmV0dXJuIEVSUl9W
329TV9CQURfVVNFUl9NRU1PUlk7DQoNCgkJaWYgKCBsZW4gPT0gc2l6ZW9mKGZiX2luZm8pICkN
330CgkJCWVyciA9IHVzZXJfbWVtY3B5KCBidWYsICZmYl9pbmZvLCBzaXplb2YoZmJfaW5mbykg
331KTsNCgkJYnJlYWs7DQoNCgkgIGNhc2UgSU9DVExfREVWRlNfTUFQX0ZSQU1FQlVGRkVSOg0K
332CSAgICB7DQoJCQlhc3BhY2VfaWQgYWlkID0gdm1fZ2V0X2N1cnJlbnRfdXNlcl9hc3BhY2Vf
333aWQoKTsNCgkJCXJlZ2lvbl9pZCByaWQ7DQoJCQl2b2lkICpsaW5lYXJfdmlkZW9fbWVtOw0K
334DQoJCQlkcHJpbnRmKCAidmVzYTM6IElPQ1RMX0RFVkZTX01BUF9GUkFNRUJVRkZFUlxuIiAp
335Ow0KDQoJCQlpZiAoIGlzX2tlcm5lbF9hZGRyZXNzKGJ1ZikgKQ0KCQkJCXJldHVybiBFUlJf
336Vk1fQkFEX1VTRVJfTUVNT1JZOw0KDQoJCQlpZiAoIGxlbiAhPSBzaXplb2YobGluZWFyX3Zp
337ZGVvX21lbSkgKQ0KCQkJCWJyZWFrOw0KDQoJCQllcnIgPSByaWQgPSB2bV9tYXBfcGh5c2lj
338YWxfbWVtb3J5KCBhaWQsICJsaW5lYXJfdmlkZW9fbWVtIiwgJmxpbmVhcl92aWRlb19tZW0s
339IFJFR0lPTl9BRERSX0FOWV9BRERSRVNTLA0KCQkJCW1vZGVfaW5mb2Jsb2NrLnhfcmVzb2x1
340dGlvbiAqIG1vZGVfaW5mb2Jsb2NrLnlfcmVzb2x1dGlvbiAqICgobW9kZV9pbmZvYmxvY2su
341Yml0c19wZXJfcGl4ZWwrNykvOCksDQoJCQkJTE9DS19SVywgKGFkZHJfdCltb2RlX2luZm9i
342bG9jay5waHlzX2Jhc2VfcHRyICk7DQoJCQlpZiAoIGVyciA8IDAgKQ0KCQkJCWJyZWFrOw0K
343DQoJCQllcnIgPSB1c2VyX21lbWNweSggYnVmLCAmbGluZWFyX3ZpZGVvX21lbSwgc2l6ZW9m
344KGxpbmVhcl92aWRlb19tZW0pICk7DQoJCQlpZiAoIGVyciA8IDAgKSB7DQoJCQkJdm1fZGVs
345ZXRlX3JlZ2lvbiggYWlkLCByaWQgKTsNCgkJCQlicmVhazsNCgkJCX0NCg0KCQkJZXJyID0g
346cmlkOyAgLy8gcmV0dXJuIHJlZ2lvbiBpZA0KCQl9DQoJfQ0KDQoJZHByaW50ZiggInZlc2Ez
347OiBpb2N0bCByZXR1cm5zIDB4JXhcbiIsIGVyciApOw0KDQoJcmV0dXJuIGVycjsNCn0NCg0K
348Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
349LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdGF0aWMgc3NpemVfdCB2ZXNhM19yZWFkKCBk
350ZXZfY29va2llIGNvb2tpZSwgdm9pZCAqYnVmLCBvZmZfdCBwb3MsIHNzaXplX3QgbGVuICkN
351CnsNCglyZXR1cm4gRVJSX1VOSU1QTEVNRU5URUQ7DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0t
352LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
353LS0tLS0tLQ0Kc3RhdGljIHNzaXplX3QgdmVzYTNfd3JpdGUoIGRldl9jb29raWUgY29va2ll
354LCBjb25zdCB2b2lkICpidWYsIG9mZl90IHBvcywgc3NpemVfdCBsZW4gKQ0Kew0KCXJldHVy
355biBFUlJfVU5JTVBMRU1FTlRFRDsNCn0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
356LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpz
357dGF0aWMgc3RydWN0IGRldl9jYWxscyB2ZXNhM19ob29rcyA9IHsNCgl2ZXNhM19vcGVuLA0K
358CXZlc2EzX2Nsb3NlLA0KCXZlc2EzX2ZyZWVfY29va2llLA0KCXZlc2EzX3NlZWssDQoJdmVz
359YTNfaW9jdGwsDQoJdmVzYTNfcmVhZCwNCgl2ZXNhM193cml0ZSwNCgkvKiBubyBwYWdpbmcg
360aGVyZSAqLw0KCU5VTEwsDQoJTlVMTCwNCglOVUxMDQp9Ow0KDQovLy0tLS0tLS0tLS0tLS0t
361LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
362LS0tLS0tLS0NCmludCBkZXZfYm9vdHN0cmFwKHZvaWQpOw0KDQppbnQgZGV2X2Jvb3RzdHJh
363cCh2b2lkKQ0Kew0KCXN0cnVjdCBzX3JlZ3MgcmVnczsNCglzdHJ1Y3QgdmVzYTNfcG1faW5m
364b2Jsb2NrICpwbV9pbmZvOw0KCXVuc2lnbmVkIGNoYXIgKnB0cjsNCgl1bnNpZ25lZCBjaGFy
365IGNoZWNrc3VtID0gMDsNCgl1bnNpZ25lZCBpbnQgaTsNCgllbnVtIHsgQklPU19BTlksIEJJ
366T1NfTlZJRElBLCBCSU9TX0FUSSB9IGJpb3NfdmVuZG9yID0gQklPU19BTlk7DQoJaW50IHZl
367c2FfZGF0YV9zaXplID0gVkVTQV9EQVRBX1NJWkU7DQoJcmVnaW9uX2lkIGlkOw0KCWFzcGFj
368ZV9pZCBzcCA9IHZtX2dldF9rZXJuZWxfYXNwYWNlX2lkKCk7DQoJdW5zaWduZWQgY2hhciAq
369dmlkZW9fbWVtOw0KCWludCByZXRfdmFsOw0KDQoJZHByaW50ZiggInZlc2EzOiBzZXR0aW5n
370IHVwIFZCRSAzLjAuLi5cbiIgKTsNCg0KCS8vIGNvcHkgdmlkZW8gQklPUyB0byBSQU0NCgl2
371aWRlb19iaW9zID0gKHVuc2lnbmVkIGNoYXIgKilrbWFsbG9jKCBWRVNBX0NPREVfU0laRSAp
372Ow0KCWlmICggdmlkZW9fYmlvcyA9PSBOVUxMICkNCgkJcmV0dXJuIEVSUl9OT19NRU1PUlk7
373DQoNCiNpZmRlZiBGQUtFX1ZFU0ENCgltZW1jcHkoIHZpZGVvX2Jpb3MsIGJpb3NkYXRhLCBz
374aXplb2YoYmlvc2RhdGEpICk7DQojZWxzZQ0KCXJldF92YWwgPSB2bV9tYXBfcGh5c2ljYWxf
375bWVtb3J5KCBzcCwgInZpZGVvX2Jpb3MiLCAodm9pZCoqKSZwdHIsDQoJCVJFR0lPTl9BRERS
376X0FOWV9BRERSRVNTLCBWRVNBX0NPREVfU0laRSwgTE9DS19STyB8IExPQ0tfS0VSTkVMLCAo
377YWRkcl90KTB4YzAwMDAgKTsNCglpZiAoIHJldF92YWwgPCAwICkNCgkJZ290byBub192ZXNh
378MTsNCg0KCW1lbWNweSggdmlkZW9fYmlvcywgcHRyLCBWRVNBX0NPREVfU0laRSApOw0KDQoJ
379dm1fZGVsZXRlX3JlZ2lvbiggc3AsIHJldF92YWwgKTsNCiNlbmRpZg0KDQoJLy8gZmluZCBW
380RVNBIFZCRSBwcm90ZWN0ZWQgbW9kZSBpbmZvIGJsb2NrIHNpZ25hdHVyZQ0KCXB0ciA9IHZp
381ZGVvX2Jpb3M7DQoJd2hpbGUgKCBwdHIgPD0gdmlkZW9fYmlvcytWRVNBX0NPREVfU0laRS1z
382aXplb2Yoc3RydWN0IHZlc2EzX3BtX2luZm9ibG9jaykgJiYgKChzdHJ1Y3QgdmVzYTNfcG1f
383aW5mb2Jsb2NrKilwdHIpLT5zaWduYXR1cmUgIT0gVkVTQV9NQUdJQyApDQoJCXB0cisrOw0K
384DQoJcG1faW5mbyA9IChzdHJ1Y3QgdmVzYTNfcG1faW5mb2Jsb2NrKilwdHI7DQoNCglyZXRf
385dmFsID0gRVJSX0dFTkVSQUw7DQoJaWYgKCBwbV9pbmZvLT5zaWduYXR1cmUgIT0gVkVTQV9N
386QUdJQyApIHsNCgkJZHByaW50ZiggInZlc2EzOiBWQkUgMy4wIG5vdCBhdmFpbGFibGUhXG4i
387ICk7DQoJCWdvdG8gbm9fdmVzYTE7DQoJfQ0KDQoJZHByaW50ZiggInZlc2EzOiBWQkUgMy4w
388IHByb3RlY3RlZCBtb2RlIGluZm8gYmxvY2sgZm91bmQuLi5cbiIgKTsNCg0KCS8vIGNhbGN1
389bGF0ZSBjaGVja3N1bQ0KCWZvciAoIGkgPSAwOyBpIDwgc2l6ZW9mKHN0cnVjdCB2ZXNhM19w
390bV9pbmZvYmxvY2spOyBpKysgKQ0KCQljaGVja3N1bSArPSAqcHRyKys7DQoNCglpZiAoIGNo
391ZWNrc3VtID09IDAgKQ0KCQlkcHJpbnRmKCAidmVzYTM6IGNoZWNrc3VtIG9rLi4uXG4iICk7
392DQoJZWxzZSB7DQoJCS8vIGZpbmQgb3V0IGlmIHdlIGhhdmUgYSBicm9rZW4gQVRJIEJJT1MN
393CgkJc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGF0aV92ZW5kb3IgPSAiQVRJIFRlY2hub2xv
394Z2llcyBJbmMuIjsNCi8qCQlzdGF0aWMgY29uc3QgY2hhciBlZGlkXzY0MHg0ODB4NjBbMThd
395ID0gew0KCQkJMHhkNiwweDA5LDB4ODAsMHhhMCwweDIwLDB4ZTAsMHgyZCwweDEwLDB4MTAs
396MHg2MCwweGEyLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwOCwweDA4LDB4MTgNCgkJfTsqLw0K
397DQoJCXB0ciA9IG1lbW1lbSggdmlkZW9fYmlvcywgVkVTQV9DT0RFX1NJWkUsIGF0aV92ZW5k
398b3IsIHN0cmxlbihhdGlfdmVuZG9yKSApOw0KCQlpZiAoIHB0ciAhPSBOVUxMICkgew0KCQkJ
399ZHByaW50ZiggInZlc2EzOiBBVEk6IGNoZWNrc3VtIHdyb25nLCBidXQgYnJva2VuIEFUSSBC
400SU9TIGRldGVjdGVkLi4uIHRyeWluZyB0byBmaXggaXQuLi5cbiIgKTsNCgkJCWJpb3NfdmVu
401ZG9yID0gQklPU19BVEk7DQoJCQl2ZXNhM19zZXRfbW9kZV9DUlRDID0gdmVzYTNfc2V0X21v
402ZGVfQ1JUQ19BVEk7DQoNCi8qCQkJLy8gZmluZCBFRElEIHNvdXJjZSBkYXRhDQoJCQlwdHIg
403PSBtZW1tZW0oIHZpZGVvX2Jpb3MsIFZFU0FfQ09ERV9TSVpFLCBlZGlkXzY0MHg0ODB4NjAs
404IHNpemVvZihlZGlkXzY0MHg0ODB4NjApICk7DQoJCQlpZiAoIHB0ciA9PSBOVUxMICkgew0K
405CQkJCWRwcmludGYoICJ2ZXNhMzogQVRJOiBjb3VsZCBub3QgZmluZCBFRElEIGRhdGEgaW4g
406QklPUyFcbiIgKTsNCgkJCQlnb3RvIG5vX3Zlc2ExOw0KCQkJfQ0KCQkJZHByaW50ZiggInZl
407c2EzOiBBVEk6IEVESUQgZGF0YSBmb3VuZCBhdCAweCV4XG4iLCBwdHItdmlkZW9fYmlvcyAp
408OyovDQoNCgkJCS8vIGZpbmQgRURJRCBkZXN0aW5hdGlvbiBibG9jaw0KCQkJaSA9ICoodWlu
409dDE2KikmdmlkZW9fYmlvc1sqKHVpbnQxNiopJnZpZGVvX2Jpb3NbKih1aW50MTYqKSZ2aWRl
410b19iaW9zWzB4NDhdKzB4MzRdKzB4Ml07DQoJCQlkcHJpbnRmKCAidmVzYTM6IEFUSTogRURJ
411RCBkZXN0aW5hdGlvbiBhdCAweCV4XG4iLCBpICk7DQoJCQlhdGlfZWRpZF9kZXN0ID0gKHN0
412cnVjdCBzX2VkaWQgKikmdmlkZW9fYmlvc1tpXTsNCg0KCQkJLy8qKHVpbnQxNiopKCZ2aWRl
413b19iaW9zWzZdKSA9IHBtX2luZm8tPnNlbF9jb2RlOw0KCQkJKih1aW50MzIqKSgmdmlkZW9f
414Ymlvc1s0XSkgPSAwOw0KCQl9DQoJCWVsc2Ugew0KCQkJZHByaW50ZiggInZlc2EzOiBjaGVj
415a3N1bSB3cm9uZyFcbiIgKTsNCgkJCWdvdG8gbm9fdmVzYTE7DQoJCX0NCgl9DQoNCgkvLyBW
416QkUgMy4wIHBtIGJsb2NrIGZvdW5kIQ0KDQoJLy8gd2Ugc3RhcnQgd2l0aCB0aGUgaW5pdCBm
417dW5jdGlvbg0KCXJldG4gPSBwbV9pbmZvLT5pbml0X29mZnM7DQoNCgkvLyBub3cgYW5hbHl6
418ZSB0aGUgYmlvcyB0byBmaW5kIG91dCBpZiBpdCBpcyBhIG5WaWRpYSBkZXJpdmVkIGJyb2tl
419biBvbmUNCglpZiAoIHZpZGVvX2Jpb3NbcmV0bl0gPT0gMHhlOSApIHsgIC8vIGptcA0KCQlw
420dHIgPSAodW5zaWduZWQgY2hhciopKHZpZGVvX2Jpb3MrcmV0biszKSArICoodWludDE2Kikm
421KHZpZGVvX2Jpb3NbcmV0bisxXSk7DQoJCS8vIGxvb2sgZm9yICJtb3YgZHMsW2NzOjB4NmVd
422OyBjYWxsID87IG1vdiBheCxbY3M6MHg2Nl0iDQoJCWlmICggKih1aW50MzIqKXB0ciA9PSAw
423eDZlMWU4ZTJlICYmICoodWludDE2KikocHRyKzQpID09IDB4ZTgwMCAmJiAqKHVpbnQzMiop
424KHB0cis4KSA9PSAweDAwNjZhMTJlICkgew0KCQkJLy8gbG9vayBmb3IgIm8zMiByZXRuIiAo
425YnJva2VuIGJpb3MpIG9yICJyZXRmIiAocmVwYWlyZWQgYmlvcykNCgkJCXB0ciArPSAxMjsN
426CgkJCXdoaWxlICggcHRyIDw9IHZpZGVvX2Jpb3MrMHg4MDAwLTIgJiYgKnB0ciAhPSAweGNi
427ICYmICoodWludDE2KilwdHIgIT0gMHhjMzY2ICkNCgkJCQlwdHIrKzsNCgkJCS8vIG9rLCB0
428aGlzIGJpb3MgaXMgcXVpdGUgY2VydGFpbmx5IGJyb2tlbiwgc28gd2UgcGF0Y2ggaXQNCgkJ
429CWlmICggKih1aW50MTYqKXB0ciA9PSAweGMzNjYgKSB7DQoJCQkJZHByaW50ZiggInZlc2Ez
430OiBuVmlkaWE6IGRldGVjdGVkIGJyb2tlbiBuVmlkaWEgQklPUy4uLiB0cnlpbmcgdG8gZml4
431IGl0Li4uXG4iICk7DQoJCQkJYmlvc192ZW5kb3IgPSBCSU9TX05WSURJQTsNCgkJCQl2ZXNh
432M19zZXRfbW9kZV9DUlRDID0gdmVzYTNfc2V0X21vZGVfQ1JUQ19uVmlkaWE7DQoJCQkJdmVz
433YV9kYXRhX3NpemUgKz0gMHg4MDA7ICAvLyBhY2NvdW50IGZvciBjb3B5IG9mIGJpb3Mgdmlk
434ZW8gdGFibGVzDQoJCQkJLy8gd2UgY2FuJ3QgY2FsbCBkaXJlY3RseSBzbyB3ZSB3cml0ZSBh
435IHN0dWIgY29kZQ0KCQkJCS8vIGF0IHRoZSBlbmQgb2YgdGhlIGJpb3MgY29kZQ0KCQkJCXB0
436ciA9IHZpZGVvX2Jpb3MrMHhmMDAwOw0KCQkJCWRwcmludGYoICJ2ZXNhMzogblZpZGlhOiBj
437cmVhdGluZyBzdHViIGNvZGUgYXQgJXguLi5cbiIsIChpbnQpcHRyICk7DQoJCQkJKigodWlu
438dDE2KilwdHIpKysgPSAweGJlNjY7ICAvLyBtb3YgZXNpLHJldG4NCgkJCQkqKChpbnQzMiop
439cHRyKSsrID0gKGludDMyKSZyZXRuOw0KCQkJCSooKHVpbnQzMiopcHRyKSsrID0gMHg2ODM2
440OGI2NzsgIC8vIG1vdiBzaSxbZXNpXQ0KCQkJCSooKHVpbnQxNiopcHRyKSsrID0gMHgwMDAw
441OyAgLy8gcHVzaCAwDQoJCQkJKigodWludDMyKilwdHIpKysgPSAweGNiNjZkNmZmOyAgLy8g
442Y2FsbCBzaTsgbzMyIHJldGYNCgkJCQkvLyB0aGUgb3RoZXIgcGxhY2VzIHdlIG5lZWQgdG8g
443Zml4IGlzIHdoZXJlIHRoZXkgdHJ5IHRvIGxvYWQNCgkJCQkvLyB0aGUgdmlkZW8gcGFyYW1l
444dGVyIHRhYmxlcyBhdCBhZGRyZXNzIDB4NGE4DQoJCQkJZm9yICggcHRyID0gdmlkZW9fYmlv
445cysweDViOyBwdHIgPD0gdmlkZW9fYmlvcysweDgwMDAtMTA7IHB0cisrICkNCgkJCQkJLy8g
446dGhlc2UgYXJlIGVpdGhlciAibGVzID8sW2VzOj8uLi5dIg0KCQkJCQlpZiAoICooKHVpbnQx
447NiopcHRyKSA9PSAweGM0MjYgKSB7DQoJCQkJCQkvLyBzdWIgYngsYng7IG1vdiBlcyxieDsg
448bGVzIGJ4LFtlczoweDRhOF07IGxlcyBieCxbZXM6YngrMHgxMF07IGxlcyBieCxbZXM6Yngr
449MHgxNl0NCgkJCQkJCS8vIC0+IHN1YiBieCxieDsgbW92IGVzLGJ4OyAxMyB4IG5vcDsNCgkJ
450CQkJCWlmICggKih1aW50MzIqKShwdHItNCkgPT0gMHhjMzhlZGIyYg0KCQkJCQkJICAmJiAq
451KHVpbnQzMiopKHB0cisxKSA9PSAweDA0YTgxZWM0DQoJCQkJCQkgICYmICoodWludDMyKiko
452cHRyKzUpID09IDB4MTA1ZmM0MjYNCgkJCQkJCSAgJiYgKih1aW50MzIqKShwdHIrOSkgPT0g
453MHgxNjVmYzQyNiApIHsNCgkJCQkJCQlkcHJpbnRmKCAidmVzYTM6IHBhdGNoaW5nICV4Li4u
454XG4iLCAoaW50KXB0ciApOw0KCQkJCQkJCWZvciAoIGkgPSAwOyBpIDwgMTM7IGkrKyApICpw
455dHIrKyA9IDB4OTA7DQoJCQkJCQl9DQovKgkJCQkJCWVsc2UgaWYgKCAqKHVpbnQzMiopKHB0
456ci00KSA9PSAweDA0YTgzZWM0ICkgew0KCQkJCQkJCS8vIGxlcyBkaSxbMHg0YThdOyBsZXMg
457ZGksW2VzOmRpXQ0KCQkJCQkJCS8vIC0+IHB1c2ggZHM7IHBvcCBlczsgbW92IGRpLDB4NjAw
458OyBub3A7IG5vcA0KCQkJCQkJCWlmICggKihwdHIrMikgPT0gMHgzZCApIHsNCgkJCQkJCQkJ
459ZHByaW50ZiggInZlc2EzOiBwYXRjaGluZyAleC4uLlxuIiwgKGludCkocHRyLTQpICk7DQoJ
460CQkJCQkJCSoodWludDMyKikocHRyLTQpID0gMHgwMGJmMDcxZTsNCgkJCQkJCQkJKih1aW50
461MTYqKXB0ciA9IDB4OTAwNjsNCgkJCQkJCQkJKihwdHIrMikgPSAweDkwOw0KCQkJCQkJCX0N
462CgkJCQkJCQkvLyBsZXMgZGksWzB4NGE4XTsgbGVzIGRpLFtlczpkaSsweDEwXSB8fCBsZXMg
463ZGksW2VzOmRpKzB4NF0NCgkJCQkJCQkvLyAtPiB4b3IgZGksZGk7IG1vdiBlcyxkaTsgNCB4
464IG5vcDsNCgkJCQkJCQllbHNlIGlmICggKih1aW50MTYqKShwdHIrMikgPT0gMHgxMDdkIHx8
465ICoodWludDE2KikocHRyKzIpID09IDB4MDQ3ZCApIHsNCgkJCQkJCQkJZHByaW50ZiggInZl
466c2EzOiBwYXRjaGluZyAleC4uLlxuIiwgKGludCkocHRyLTQpICk7DQoJCQkJCQkJCSoodWlu
467dDMyKikocHRyLTQpID0gMHhjNzhlZmYzMTsNCgkJCQkJCQkJKih1aW50MzIqKXB0ciA9IDB4
468OTA5MDkwOTA7DQoJCQkJCQkJfQ0KCQkJCQkJfSovDQoJCQkJCX0NCi8qCQkJCQkvLyBvciAi
469bGRzIHNpLFsweDRhOF07IGxkcyBzaSxbc2ldIg0KCQkJCQkvLyAtPiBtb3YgZXNpLDB4NjAw
470DQoJCQkJCWVsc2UgaWYgKCAqKHVpbnQzMiopcHRyID09IDB4MDRhODM2YzUgJiYgKih1aW50
471MTYqKShwdHIrNCkgPT0gMHgzNGM1ICkgew0KCQkJCQkJZHByaW50ZiggInZlc2EzOiBwYXRj
472aGluZyAleC4uLlxuIiwgKGludClwdHIgKTsNCgkJCQkJCSoodWludDMyKilwdHIgPSAweDA2
473MDBiZTY2Ow0KCQkJCQkJKih1aW50MTYqKShwdHIrNCkgPSAweDAwMDA7DQoJCQkJCX0qLw0K
474CQkJfQ0KCQl9DQoJfQ0KDQoJLy8gc2V0dXAgc3RydWN0dXJlIChwcm92aWRlIHNlbGVjdG9y
475cywgbWFwIHZpZGVvIG1lbSwgLi4uKQ0KCXJldF92YWwgPSBFUlJfTk9fTUVNT1JZOw0KCWJp
476b3NfZGF0YSA9IChjaGFyICopa21hbGxvYyggdmVzYV9kYXRhX3NpemUgKTsNCglpZiAoIGJp
477b3NfZGF0YSA9PSBOVUxMICkNCgkJZ290byBub192ZXNhMTsNCgliaW9zX3N0YWNrID0gKGNo
478YXIgKilrbWFsbG9jKCBWRVNBX1NUQUNLX1NJWkUgKTsNCglpZiAoIGJpb3Nfc3RhY2sgPT0g
479TlVMTCApDQoJCWdvdG8gbm9fdmVzYTI7DQoJbWVtc2V0KCBiaW9zX2RhdGEsIDAsIFZFU0Ff
480REFUQV9TSVpFICk7DQoNCglwbV9pbmZvLT5zZWxfYmlvc19kYXRhID0gaTM4Nl9zZWxlY3Rv
481cl9hZGQoIFNFTEVDVE9SKGJpb3NfZGF0YSx2ZXNhX2RhdGFfc2l6ZS0xLERBVEFfdyxmYWxz
482ZSkgKTsNCglwbV9pbmZvLT5zZWxfY29kZSA9IGkzODZfc2VsZWN0b3JfYWRkKCBTRUxFQ1RP
483Uih2aWRlb19iaW9zLFZFU0FfQ09ERV9TSVpFLTEsREFUQV93LGZhbHNlKSApOw0KDQoJc2Vs
484X2NvZGUgPSBpMzg2X3NlbGVjdG9yX2FkZCggU0VMRUNUT1IodmlkZW9fYmlvcyxWRVNBX0NP
485REVfU0laRS0xLENPREVfcixmYWxzZSkgKTsNCglzZWxfc3RhY2sgPSBpMzg2X3NlbGVjdG9y
486X2FkZCggU0VMRUNUT1IoYmlvc19zdGFjayxWRVNBX1NUQUNLX1NJWkUtMSxEQVRBX3csZmFs
487c2UpICk7DQoNCglpZiAoIGJpb3NfdmVuZG9yID09IEJJT1NfTlZJRElBICkgew0KCQlmYXJj
488YWxsLm9mZnNldCA9IDB4ZjAwMDsNCgkJZmFyY2FsbC5zZWcgPSBzZWxfY29kZTsNCiNpZiAw
489DQoJCS8vIGNvcHkgdmlkZW8gdGFibGVzIHRvIGxvY2FsIG1lbW9yeQ0KCQlyZXRfdmFsID0g
490dm1fbWFwX3BoeXNpY2FsX21lbW9yeSggc3AsICJ2aWRlb190YWJsZXMiLCAodm9pZCoqKSZw
491dHIsDQoJCQlSRUdJT05fQUREUl9BTllfQUREUkVTUywgMHgxMDAwMDAsIExPQ0tfUlcgfCBM
492T0NLX0tFUk5FTCwgKGFkZHJfdCkweDAgKTsNCgkJaWYgKCByZXRfdmFsIDwgMCApDQoJCQln
493b3RvIG5vX3Zlc2EzOw0KCQlkcHJpbnRmKCJ2ZXNhMzogblZpZGlhOiAoaW50KWxpbmVhcihw
494dHIrMHg0YTgpID0gMHgleFxuIiwgKGludClsaW5lYXIocHRyKzB4NGE4KSApOw0KCQltZW1j
495cHkoIGJpb3NfZGF0YStWRVNBX0RBVEFfU0laRSwgcHRyKyhpbnQpbGluZWFyKHB0cisoaW50
496KWxpbmVhcihwdHIrMHg0YTgpKSwgMjkqNjQgKTsgIC8vIHZpZGVvIHBhcmFtZXRlciB0YWJs
497ZQ0KCQl2bV9kZWxldGVfcmVnaW9uKCBzcCwgcmV0X3ZhbCApOw0KI2Vsc2UNCgkJZHByaW50
498ZiggInZlc2EzOiBuVmlkaWE6IHNldHRpbmcgdXAgZmFrZSB2aWRlbyBwYXJhbWV0ZXIgdGFi
499bGUuLi5cbiIgKTsNCgkJbWVtY3B5KCBiaW9zX2RhdGErVkVTQV9EQVRBX1NJWkUsIHZpZGVv
500X3BhcmFtX3RhYmxlLCAyOSo2NCApOyAgLy8gVkdBIHZpZGVvIHBhcmFtZXRlciB0YWJsZQ0K
501CQlwdHIgPSBiaW9zX2RhdGErVkVTQV9EQVRBX1NJWkUrMjkqNjQ7ICAvLyB2aWRlbyBzYXZl
502IHBvaW50ZXIgdGFibGUNCgkJbWVtc2V0KCBwdHIsIDAsIDB4MWMgKTsgIC8vIG1ha2Ugc3Vy
503ZSBpdCBpcyB6ZXJvZWQgb3V0DQoJCSoodWludDE2ICopcHRyID0gVkVTQV9EQVRBX1NJWkU7
504ICAvLyBmaXJzdCBlbnRyeSBpcyBwb2ludGVyIHRvIHZpZGVvIHBhcmFtZXRlciB0YWJsZQ0K
505CQkqKHVpbnQxNiAqKShwdHIrMikgPSBwbV9pbmZvLT5zZWxfYmlvc19kYXRhOw0KCQkqKHVp
506bnQxNiopKGJpb3NfZGF0YSsweDRhOCkgPSBWRVNBX0RBVEFfU0laRSsyOSo2NDsgIC8vIDB4
507NGE4IGlzIHBvaW50ZXIgdG8gdmlkZW8gc2F2ZSBwb2ludGVyIHRhYmxlDQoJCSoodWludDE2
508KikoYmlvc19kYXRhKzB4NGE4KzIpID0gcG1faW5mby0+c2VsX2Jpb3NfZGF0YTsNCi8qKnB0
509cjEgPSAweDY4Ow0KKih1aW50MTYqKShwdHIxKzEpID0gcG1faW5mby0+c2VsX2NvZGU7DQoq
510KHVpbnQzMiopKHB0cjErMykgPSAweDA3OThiZjA3Ow0KKih1aW50MzIqKXB0cjIgPSAweDA3
511OThiZTY2Ow0KKih1aW50MTYqKShwdHIyKzQpID0gMHgwMDAwOyovDQovKm1lbWNweSggYmlv
512c19kYXRhKzB4NDQ5LCB2aWRlb190YWJsZTEsIHNpemVvZih2aWRlb190YWJsZTEpICk7DQpt
513ZW1jcHkoIGJpb3NfZGF0YSsweDQ4NCwgdmlkZW9fdGFibGUyLCBzaXplb2YodmlkZW9fdGFi
514bGUyKSApOw0KKih1aW50MTYqKShiaW9zX2RhdGErMHg0YTgpID0gMHgyODc4Ow0KKih1aW50
515MTYqKShiaW9zX2RhdGErMHg0YTgrMikgPSBwbV9pbmZvLT5zZWxfY29kZTsqLw0KI2VuZGlm
516DQoJCWRwcmludGYoICJ2ZXNhMzogblZpZGlhOiBwYXRjaGluZyBkb25lLlxuIiApOw0KCX0N
517CgllbHNlIHsNCgkJZmFyY2FsbC5vZmZzZXQgPSAwOw0KCQlmYXJjYWxsLnNlZyA9IGkzODZf
518c2VsZWN0b3JfYWRkKCBTRUxFQ1RPUih2ZXNhM19jYWxsX3JldGYsMHgyMC0xLENPREVfcixm
519YWxzZSkgKTsNCgkJcmV0biB8PSBzZWxfY29kZTw8MTY7DQoJfQ0KDQoJcmV0X3ZhbCA9IGlk
520ID0gdm1fbWFwX3BoeXNpY2FsX21lbW9yeSggc3AsICJ2aWRlb19tZW0iLCAodm9pZCoqKSZ2
521aWRlb19tZW0sDQoJCVJFR0lPTl9BRERSX0FOWV9BRERSRVNTLCAweDIwMDAwLCBMT0NLX1JX
522IHwgTE9DS19LRVJORUwsIChhZGRyX3QpMHhhMDAwMCApOw0KCWlmICggcmV0X3ZhbCA8IDAg
523KQ0KCQlnb3RvIG5vX3Zlc2EzOw0KDQoJcG1faW5mby0+c2VsX2EwMDAwID0gaTM4Nl9zZWxl
524Y3Rvcl9hZGQoIFNFTEVDVE9SKHZpZGVvX21lbSwweDEwMDAwLTEsREFUQV93LGZhbHNlKSAp
525Ow0KCXBtX2luZm8tPnNlbF9iMDAwMCA9IGkzODZfc2VsZWN0b3JfYWRkKCBTRUxFQ1RPUih2
526aWRlb19tZW0rMHgxMDAwMCwweDEwMDAwLTEsREFUQV93LGZhbHNlKSApOw0KCXBtX2luZm8t
527PnNlbF9iODAwMCA9IGkzODZfc2VsZWN0b3JfYWRkKCBTRUxFQ1RPUih2aWRlb19tZW0rMHgx
528ODAwMCwweDgwMDAtMSxEQVRBX3csZmFsc2UpICk7DQovKg0KCXBtX2luZm8tPnNlbF9hMDAw
529MCA9IGkzODZfc2VsZWN0b3JfYWRkKCBTRUxFQ1RPUigweGEwMDAwLDB4MTAwMDAtMSxEQVRB
530X3csZmFsc2UpICk7DQoJcG1faW5mby0+c2VsX2IwMDAwID0gaTM4Nl9zZWxlY3Rvcl9hZGQo
531IFNFTEVDVE9SKDB4YjAwMDAsMHg4MDAwLTEsREFUQV93LGZhbHNlKSApOw0KCXBtX2luZm8t
532PnNlbF9iODAwMCA9IGkzODZfc2VsZWN0b3JfYWRkKCBTRUxFQ1RPUigweGI4MDAwLDB4ODAw
533MC0xLERBVEFfdyxmYWxzZSkgKTsqLw0KDQoJcG1faW5mby0+aW5fcG0gPSAxOw0KDQovKgkv
534LyBwcmludCBzb21lIGRlYnVnIGluZm8NCglkcHJpbnRmKCAidmVzYTM6IHZpZGVvX2Jpb3M6
535IDB4JXhcbiIsIChpbnQpdmlkZW9fYmlvcyApOw0KCWRwcmludGYoICJ2ZXNhMzogaW5pdF9v
536ZmZzOiAweCV4XG4iLCAoaW50KXZpZGVvX2Jpb3MrKGludClwbV9pbmZvLT5pbml0X29mZnMg
537KTsNCglkcHJpbnRmKCAidmVzYTM6IGNhbGxfb2ZmczogMHgleFxuIiwgKGludCl2aWRlb19i
538aW9zKyhpbnQpcG1faW5mby0+Y2FsbF9vZmZzICk7DQoJZHByaW50ZiggInZlc2EzOiB2ZXNh
539X2NhbGw6IDB4JXhcbiIsIChpbnQpdmVzYV9jYWxsICk7DQoJZHByaW50ZiggInZlc2EzOiB2
540ZXNhM19jYWxsX3JldGY6IDB4JXhcbiIsIChpbnQpdmVzYTNfY2FsbF9yZXRmICk7Ki8NCg0K
541LyojaWZkZWYgRElBTU9ORF9WSVBFUl9WNTUwXzFfOTNFDQoJLy8gcGF0Y2gNCglwdHIgPSAo
542Y2hhciAqKSgoaW50KXZpZGVvX2Jpb3MrMHg0ODg1KTsNCgkqcHRyKysgPSAweGViOyAgLy8g
543am1wDQoJKnB0cisrID0gMHgxNzsgIC8vICsweDE3DQoJcHRyID0gKGNoYXIgKikoKGludCl2
544aWRlb19iaW9zKzB4MmY5ZCk7DQoJKnB0cisrID0gMHgxZTsgIC8vIHB1c2ggZHMNCgkqcHRy
545KysgPSAweDA3OyAgLy8gcG9wIGVzDQoJKnB0cisrID0gMHhiZjsgIC8vIG1vdiBkaSwweDYw
546MA0KCSpwdHIrKyA9IDB4MDA7DQoJKnB0cisrID0gMHgwNjsNCgkqcHRyKysgPSAweDkwOyAg
547Ly8gbm9wDQoJKnB0cisrID0gMHg5MDsgIC8vIG5vcA0KCXB0ciA9IChjaGFyICopKChpbnQp
548dmlkZW9fYmlvcysweDMzODgpOw0KCSpwdHIrKyA9IDB4MWY7ICAvLyBwb3AgZHMNCgkqcHRy
549KysgPSAweGViOyAgLy8gam1wDQoJKnB0cisrID0gMHgxNTsgIC8vICsweDE1DQoJcHRyID0g
550KGNoYXIgKikoKGludCl2aWRlb19iaW9zKzB4MzA4NSk7DQoJKnB0cisrID0gMHhlYjsgIC8v
551IGptcA0KCSpwdHIrKyA9IDB4NDE7ICAvLyArMHg0MQ0KCXB0ciA9IHZpZGVvX2Jpb3MrMHg2
552OWFjOw0KCSoodWludDMyKilwdHIgPSAweDA2MDBiZTY2OyAgLy8gbW92IGVzaSwweDYwMA0K
553CSoodWludDE2KikocHRyKzQpID0gMHgwMDAwOw0KDQoJcHRyID0gdmlkZW9fYmlvcysweGYw
554MDA7DQoJKnB0cisrID0gMHg2NjsgIC8vIG1vdiBlc2kscmV0bg0KCSpwdHIrKyA9IDB4YmU7
555DQoJKigoaW50MzIqKXB0cikrKyA9ICZyZXRuOw0KCSpwdHIrKyA9IDB4Njc7ICAvLyBtb3Yg
556c2ksW2VzaV0NCgkqcHRyKysgPSAweDhiOw0KCSpwdHIrKyA9IDB4MzY7DQoJKnB0cisrID0g
557MHg2ODsJLy8gcHVzaCAwDQoJKnB0cisrID0gMHgwMDsNCgkqcHRyKysgPSAweDAwOw0KCSpw
558dHIrKyA9IDB4ZmY7ICAvLyBjYWxsIHNpDQoJKnB0cisrID0gMHhkNjsNCgkqcHRyKysgPSAw
559eDY2OyAgLy8gbzMyDQoJKnB0cisrID0gMHhjYjsgIC8vIHJldGYNCiNlbHNlDQojZW5kaWYq
560Lw0KDQoJZHByaW50ZiggInZlc2EzOiBjYWxsaW5nIGluaXQuLi5cbiIgKTsNCg0KCXJlZ3Mu
561ZXMgPSAwOw0KCXZlc2FfY2FsbCggJnJlZ3MgKTsgIC8vIGluaXQNCglyZXRuID0gKHJldG4g
562JiAweGZmZmYwMDAwKSB8IHBtX2luZm8tPmNhbGxfb2ZmczsNCg0KCWRwcmludGYoICJ2ZXNh
563MzogcmVhZGluZyBjb250cm9sbGVyIGluZm9ybWF0aW9uLi4uXG4iICk7DQoNCglyZWdzLmF4
564ID0gMHg0ZjAwOw0KCXJlZ3MuZXMgPSBzZWxfaW5mb2Jsb2NrID0gaTM4Nl9zZWxlY3Rvcl9h
565ZGQoIFNFTEVDVE9SKCZpbmZvYmxvY2ssc2l6ZW9mKGluZm9ibG9jayktMSxEQVRBX3csZmFs
566c2UpICk7DQoJcmVncy5kaSA9IDA7DQoJaW5mb2Jsb2NrLnNpZ25hdHVyZSA9ICdWJ3woJ0In
567PDw4KXwoJ0UnPDwxNil8KCcyJzw8MjQpOw0KCXZlc2FfY2FsbCggJnJlZ3MgKTsgIC8vIGdl
568dCBWQkUgY29udHJvbGxlciBpbmZvcm1hdGlvbg0KCWkzODZfc2VsZWN0b3JfcmVtb3ZlKCBz
569ZWxfaW5mb2Jsb2NrICk7DQoNCglkcHJpbnRmKCAidmVzYTM6IHNpZ25hdHVyZTogJTRzLCB2
570ZXJzaW9uOiAweCV4XG4iLCAoY2hhciopJmluZm9ibG9jay5zaWduYXR1cmUsIGluZm9ibG9j
571ay52ZXJzaW9uICk7DQoNCglyZXNvbHZlX2ZhcnB0ciggJmluZm9ibG9jay5vZW1fc3RyaW5n
572X3B0ciApOw0KCWlmICggaW5mb2Jsb2NrLm9lbV9zdHJpbmdfcHRyICkNCgkJZHByaW50Zigg
573InZlc2EzOiBPRU0gc3RyaW5nOiAlc1xuIiwgKGNoYXIqKWluZm9ibG9jay5vZW1fc3RyaW5n
574X3B0ciApOw0KDQoJcmVzb2x2ZV9mYXJwdHIoICZpbmZvYmxvY2sub2VtX3ZlbmRvcl9uYW1l
575X3B0ciApOw0KCWlmICggaW5mb2Jsb2NrLm9lbV92ZW5kb3JfbmFtZV9wdHIgKQ0KCQlkcHJp
576bnRmKCAidmVzYTM6IE9FTSB2ZW5kb3IgbmFtZTogJXNcbiIsIChjaGFyKilpbmZvYmxvY2su
577b2VtX3ZlbmRvcl9uYW1lX3B0ciApOw0KDQoJcmVzb2x2ZV9mYXJwdHIoICZpbmZvYmxvY2su
578b2VtX3Byb2R1Y3RfbmFtZV9wdHIgKTsNCglpZiAoIGluZm9ibG9jay5vZW1fcHJvZHVjdF9u
579YW1lX3B0ciApDQoJCWRwcmludGYoICJ2ZXNhMzogT0VNIHByb2R1Y3QgbmFtZTogJXNcbiIs
580IChjaGFyKilpbmZvYmxvY2sub2VtX3Byb2R1Y3RfbmFtZV9wdHIgKTsNCg0KCXJlc29sdmVf
581ZmFycHRyKCAmaW5mb2Jsb2NrLnZpZGVvX21vZGVfcHRyICk7DQojaWYgMCAgLy8gYnJva2Vu
582IEFUSSBiaW9zDQoJew0KCQlzdHJ1Y3Qgc19mYXJjYWxsIGZhcmNhbGxfYmFrID0gZmFyY2Fs
583bDsNCgkJaW50IHJldG5fYmFrID0gcmV0bjsNCg0KCQlmYXJjYWxsLm9mZnNldCA9IDB4ZjAw
584MDsNCgkJZmFyY2FsbC5zZWcgPSBzZWxfY29kZTsNCgkJcmV0biA9IDB4OWJhMDsNCg0KCQl2
585aWRlb19iaW9zWzB4OWJkN10gPSAweDAwOyAvLzB4MjE7DQoNCgkJcHRyID0gdmlkZW9fYmlv
586cysweGYwMDA7DQoJCWRwcmludGYoICJ2ZXNhMzogY3JlYXRpbmcgc3R1YiBjb2RlIGF0ICV4
587Li4uXG4iLCAoaW50KXB0ciApOw0KCQkqKCh1aW50MTYqKXB0cikrKyA9IDB4YmU2NjsgIC8v
588IG1vdiBlc2kscmV0bg0KCQkqKChpbnQzMiopcHRyKSsrID0gKGludDMyKSZyZXRuOw0KCQkq
589KCh1aW50MzIqKXB0cikrKyA9IDB4ZmYzNjhiNjc7ICAvLyBtb3Ygc2ksW2VzaV0NCgkJKigo
590dWludDMyKilwdHIpKysgPSAweGNiNjZkNjsgIC8vIGNhbGwgc2k7IG8zMiByZXRmDQoNCgkJ
591Zm9yICggaSA9IDA7IDsgaSsrICkgew0KCQkJcmVncy5ieCA9IGk8PDg7DQoJCQlyZWdzLmVz
592ID0gcG1faW5mby0+c2VsX2NvZGU7DQoJCQlyZWdzLmRpID0gMHg5YjhlOyAvLzB4MWYzMg0K
593CQkJdmVzYV9jYWxsKCAmcmVncyApOyAgLy8gaW5pdA0KCQl9DQoNCgkJZmFyY2FsbCA9IGZh
594cmNhbGxfYmFrOw0KCQlyZXRuID0gcmV0bl9iYWs7DQoJfQ0KI2VuZGlmDQoNCglkcHJpbnRm
595KCAidmVzYTM6IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCFcbiIgKTsNCg0KCXJldF92YWwg
596PSBkZXZmc19wdWJsaXNoX2luZGV4ZWRfZGV2aWNlKCAiZ3JhcGhpY3MvdmVzYTMvZmIiLCBO
597VUxMLCAmdmVzYTNfaG9va3MgKTsNCglpZiAoIHJldF92YWwgPj0gMCApDQoJCXJldHVybiBO
598T19FUlJPUjsNCi8vcmV0X3ZhbCA9IGRldmZzX3B1Ymxpc2hfaW5kZXhlZF9kZXZpY2UoICJn
599cmFwaGljcy9mYiIsIE5VTEwsICZ2ZXNhM19ob29rcyApOw0KDQoJdm1fZGVsZXRlX3JlZ2lv
600biggc3AsIGlkICk7DQogIG5vX3Zlc2EzOg0KCWtmcmVlKCBiaW9zX3N0YWNrICk7DQogIG5v
601X3Zlc2EyOg0KCWtmcmVlKCBiaW9zX2RhdGEgKTsNCiAgbm9fdmVzYTE6DQoJa2ZyZWUoIHZp
602ZGVvX2Jpb3MgKTsNCglkcHJpbnRmKCAidmVzYTM6IGZhaWxlZC5cbiIgKTsNCg0KCXJldHVy
603biByZXRfdmFsOw0KfQ0K
604--------------040707070507020007050409
605Content-Type: text/plain;
606 name="vesa3.h"
607Content-Transfer-Encoding: base64
608Content-Disposition: attachment;
609 filename="vesa3.h"
610
611LyoNCioqIENvcHlyaWdodCAyMDAyLTIwMDMsIE1pY2hhZWwgTm9pc3Rlcm5pZy4gQWxsIHJp
612Z2h0cyByZXNlcnZlZC4NCioqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
613TmV3T1MgTGljZW5zZS4NCiovDQojaWZuZGVmIF9WRVNBM19IXw0KI2RlZmluZSBfVkVTQTNf
614SF8NCg0KI2luY2x1ZGUgPGtlcm5lbC9rZXJuZWwuaD4NCg0KI2RlZmluZSBWRVNBX01BR0lD
615ICgnUCd8KCdNJzw8OCl8KCdJJzw8MTYpfCgnRCc8PDI0KSkgIC8vICdQTUlEJw0KDQojZGVm
616aW5lIFZFU0FfQ09ERV9TSVpFIDB4MTAwMDANCiNkZWZpbmUgVkVTQV9TVEFDS19TSVpFIDB4
617MjAwMA0KI2RlZmluZSBWRVNBX0RBVEFfU0laRSAweDYwMA0KDQp0eXBlZGVmIHN0cnVjdCB2
618ZXNhM19wbV9pbmZvYmxvY2sgew0KCXVpbnQzMgkJc2lnbmF0dXJlOwkJCQkvLyBQTSBJbmZv
619IEJsb2NrIHNpZ25hdHVyZSAoJ1BNSUQnKQ0KCXVpbnQxNgkJY2FsbF9vZmZzOwkJCQkvLyBv
620ZmZzZXQgb2YgUE0gZW50cnkgcG9pbnQgd2l0aGluIEJJT1MNCgl1aW50MTYJCWluaXRfb2Zm
621czsJCQkJLy8gb2Zmc2V0IG9mIFBNIGluaXRpYWxpemF0aW9uIGVudHJ5IHBvaW50DQoJdWlu
622dDE2CQlzZWxfYmlvc19kYXRhOwkJCS8vIHNlbGVjdG9yIHRvIEJJT1MgZGF0YSBhcmVhIGVt
623dWxhdGlvbiBibG9jaw0KCXVpbnQxNgkJc2VsX2EwMDAwOwkJCQkvLyBzZWxlY3RvciB0byAw
624eGEwMDAwDQoJdWludDE2CQlzZWxfYjAwMDA7CQkJCS8vIHNlbGVjdG9yIHRvIDB4YjAwMDAN
625Cgl1aW50MTYJCXNlbF9iODAwMDsJCQkJLy8gc2VsZWN0b3IgdG8gMHhiODAwMA0KCXVpbnQx
626NgkJc2VsX2NvZGU7CQkJCS8vIHNlbGVjdG9yIHRvIGFjY2VzcyBjb2RlIHNlZ21lbnQgYXMg
627ZGF0YQ0KCXVpbnQ4CQlpbl9wbTsJCQkJCS8vIHRydWUgaWZmIGluIHByb3RlY3RlZCBtb2Rl
628DQoJdWludDgJCWNoZWNrc3VtOwkJCQkvLyBzdW0gb2YgYWxsIGJ5dGVzIGluIHRoaXMgc3Ry
629dWN0IG11c3QgbWF0Y2ggMA0KfSBfUEFDS0VEIHZlc2EzX3BtX2luZm9ibG9jazsNCg0KdHlw
630ZWRlZiBzdHJ1Y3QgdmVzYTNfaW5mb2Jsb2NrIHsNCgl1aW50MzIJCXNpZ25hdHVyZTsJCQkJ
631Ly8gVkJFIEluZm8gQmxvY2sgc2lnbmF0dXJlICgnVkVTQScpDQoJdWludDE2CQl2ZXJzaW9u
632OwkJCQkvLyBWQkUgdmVyc2lvbiAoMHgzMDApDQoJdWludDMyCQlvZW1fc3RyaW5nX3B0cjsJ
633CQkvLyBPRU0gc3RyaW5nDQoJdWludDgJCWNhcGFiaWxpdGllc1s0XTsJCS8vIGNhcGFiaWxp
634dGllcyBvZiBncmFwaGljcyBjb250cm9sbGVyDQoJdWludDMyCQl2aWRlb19tb2RlX3B0cjsJ
635CQkvLyB2aWRlbyBtb2RlIHBvaW50ZXINCgl1aW50MTYJCXRvdGFsX21lbW9yeTsJCQkvLyAj
636IDY0a2IgbWVtb3J5IGJsb2Nrcw0KCXVpbnQxNgkJb2VtX3NvZnR3YXJlX3JldjsJCS8vIFZC
637RSBpbXBsZW1lbnRhdGlvbiBzb2Z0d2FyZSByZXZpc2lvbg0KCXVpbnQzMgkJb2VtX3ZlbmRv
638cl9uYW1lX3B0cjsJLy8gdmVuZG9yIG5hbWUNCgl1aW50MzIJCW9lbV9wcm9kdWN0X25hbWVf
639cHRyOwkvLyBwcm9kdWN0IG5hbWUNCgl1aW50MzIJCW9lbV9wcm9kdWN0X3Jldl9wdHI7CS8v
640IHByb2R1Y3QgcmV2aXNpb24NCgl1aW50OAkJX3Jlc2VydmVkWzIyMl07CQkJLy8gVkJFIGlt
641cGxlbWVudGF0aW9uIHNjcmF0Y2ggYXJlYQ0KCXVpbnQ4CQlvZW1fZGF0YVsyNTZdOwkJCS8v
642IGRhdGEgYXJlYSBmb3IgT0VNIHN0cmluZ3MNCn0gX1BBQ0tFRCB2ZXNhM19pbmZvYmxvY2s7
643DQoNCnR5cGVkZWYgc3RydWN0IHZlc2EzX21vZGVfaW5mb2Jsb2NrIHsNCgkNCgkvLyBtYW5k
644YXRvcnkgaW5mb3JtYXRpb24gZm9yIGFsbCBWQkUgcmV2aXNpb25zDQoJdWludDE2CQltb2Rl
645X2F0dHJpYnV0ZXM7CQkJLy8gbW9kZSBhdHRyaWJ1dGVzDQoJdWludDgJCXdpbl9BX2F0dHJp
646YnV0ZXM7CQkJLy8gd2luZG93IEEgYXR0cmlidXRlcw0KCXVpbnQ4CQl3aW5fQl9hdHRyaWJ1
647dGVzOwkJCS8vIHdpbmRvdyBCIGF0dHJpYnV0ZXMNCgl1aW50MTYJCXdpbl9ncmFudWxhcml0
648eTsJCQkvLyB3aW5kb3cgZ3JhbnVsYXJpdHkNCgl1aW50MTYJCXdpbl9zaXplOwkJCQkJLy8g
649d2luZG93IHNpemUNCgl1aW50MTYJCXdpbl9BX3NlZ21lbnQ7CQkJCS8vIHdpbmRvdyBBIHN0
650YXJ0IHNlZ21lbnQNCgl1aW50MTYJCXdpbl9CX3NlZ21lbnQ7CQkJCS8vIHdpbmRvdyBCIHN0
651YXJ0IHNlZ21lbnQNCgl1aW50MzIJCXdpbl9mdW5jX3B0cjsJCQkJLy8gcmVhbCBtb2RlIHBv
652aW50ZXIgdG8gd2luZG93IGZ1bmN0aW9uDQoJdWludDE2CQlieXRlc19wZXJfc2NhbmxpbmU7
653CQkJLy8gYnl0ZXMgcGVyIHNjYW4gbGluZQ0KCQ0KCS8vIG1hbmRhdG9yeSBpbmZvcm1hdGlv
654biBmb3IgVkJFIDEuMiBhbmQgYWJvdmUNCgl1aW50MTYJCXhfcmVzb2x1dGlvbjsJCQkJLy8g
655aG9yaXpvbnRhbCByZXNvbHV0aW9uIGluIHBpeGVscyAoY2hhcmFjdGVycykNCgl1aW50MTYJ
656CXlfcmVzb2x1dGlvbjsJCQkJLy8gdmVydGljYWwgcmVzb2x1dGlvbiBpbiBwaXhlbHMgKGNo
657YXJhY3RlcnMpDQoJdWludDgJCXhfY2hhcl9zaXplOwkJCQkvLyBjaGFyYWN0ZXIgY2VsbCB3
658aWR0aCBpbiBwaXhlbHMNCgl1aW50OAkJeV9jaGFyX3NpemU7CQkJCS8vIGNoYXJhY3RlciBj
659ZWxsIGhlaWdodCBpbiBwaXhlbHMNCgl1aW50OAkJbnJfcGxhbmVzOwkJCQkJLy8gbnVtYmVy
660IG9mIG1lbW9yeSBwbGFuZXMNCgl1aW50OAkJYml0c19wZXJfcGl4ZWw7CQkJCS8vIGJpdHMg
661cGVyIHBpeGVsDQoJdWludDgJCW5yX2JhbmtzOwkJCQkJLy8gbnVtYmVyIG9mIGJhbmtzDQoJ
662dWludDgJCW1lbW9yeV9tb2RlbDsJCQkJLy8gbWVtb3J5IG1vZGVsIHR5cGUNCgl1aW50OAkJ
663YmFua19zaXplOwkJCQkJLy8gYmFuayBzaXplIGluIEtCDQoJdWludDgJCW5yX2ltYWdlX3Bh
664Z2VzOwkJCQkvLyBudW1iZXIgb2YgaW1hZ2VzDQoJdWludDgJCV9yZXNlcnZlZDE7CQkJCQkv
665LyByZXNlcnZlZCBmb3IgcGFnZSBmdW5jdGlvbg0KCQ0KCS8vIGRpcmVjdCBjb2xvciBmaWVs
666ZHMgKHJlcXVpcmVkIGZvciBkaXJlY3QvNiBhbmQgWVVWLzcgbWVtb3J5IG1vZGVscykNCgl1
667aW50OAkJcmVkX21hc2tfc2l6ZTsJCQkJLy8gc2l6ZSBvZiBkaXJlY3QgY29sb3IgcmVkIG1h
668c2sgaW4gYml0cw0KCXVpbnQ4CQlyZWRfZmllbGRfcG9zOwkJCQkvLyBiaXQgcG9zaXNpb24g
669b2YgTFNCIG9mIHJlZCBtYXNrDQoJdWludDgJCWdyZWVuX21hc2tfc2l6ZTsJCQkvLyBzaXpl
670IG9mIGRpcmVjdCBjb2xvciBncmVlbiBtYXNrIGluIGJpdHMNCgl1aW50OAkJZ3JlZW5fZmll
671bGRfcG9zOwkJCS8vIGJpdCBwb3Npc2lvbiBvZiBMU0Igb2YgZ3JlZW4gbWFzaw0KCXVpbnQ4
672CQlibHVlX21hc2tfc2l6ZTsJCQkJLy8gc2l6ZSBvZiBkaXJlY3QgY29sb3IgYmx1ZSBtYXNr
673IGluIGJpdHMNCgl1aW50OAkJYmx1ZV9maWVsZF9wb3M7CQkJCS8vIGJpdCBwb3Npc2lvbiBv
674ZiBMU0Igb2YgYmx1ZSBtYXNrDQoJdWludDgJCXJzdmRfbWFza19zaXplOwkJCQkvLyBzaXpl
675IG9mIGRpcmVjdCBjb2xvciByZXNlcnZlZCBtYXNrIGluIGJpdHMNCgl1aW50OAkJcnN2ZF9m
676aWVsZF9wb3M7CQkJCS8vIGJpdCBwb3Npc2lvbiBvZiBMU0Igb2YgcmVzZXJ2ZWQgbWFzaw0K
677CXVpbnQ4CQlkaXJlY3RfY29sb3JfbW9kZV9pbmZvOwkJLy8gZGlyZWN0IGNvbG9yIG1vZGUg
678YXR0cmlidXRlcw0KCQ0KCS8vIG1hbmRhdG9yeSBpbmZvcm1hdGlvbiBmb3IgVkJFIDIuMCBh
679bmQgYWJvdmUNCgl1aW50MzIJCXBoeXNfYmFzZV9wdHI7CQkJCS8vIHBoeXNpY2FsIGFkZHJl
680c3MgZm9yIGZsYXQgbWVtb3J5IGZyYW1lIGJ1ZmZlcg0KCXVpbnQzMgkJX3Jlc2VydmVkMjsJ
681CQkJCS8vIDANCgl1aW50MTYJCV9yZXNlcnZlZDM7CQkJCQkvLyAwDQoJDQoJLy8gbWFuZGF0
682b3J5IGluZm9ybWF0aW9uIGZvciBWQkUgMy4wIGFuZCBhYm92ZQ0KCXVpbnQxNgkJbGluZWFy
683X2J5dGVzX3Blcl9zY2FubGluZTsJLy8gbGluZWFyIG1vZGVzOiBieXRlcyBwZXIgc2Nhbmxp
684bmUNCgl1aW50OAkJYmFua2VkX25yX2ltYWdlX3BhZ2VzOwkJLy8gYmFua2VkIG1vZGVzOiBu
685dW1iZXIgb2YgaW1hZ2VzDQoJdWludDgJCWxpbmVhcl9ucl9pbWFnZV9wYWdlczsJCS8vIGxp
686bmVhciBtb2RlczogbnVtYmVyIG9mIGltYWdlcw0KCXVpbnQ4CQlsaW5lYXJfcmVkX21hc2tf
687c2l6ZTsJCS8vIGxpbmVhciBtb2Rlczogc2l6ZSBvZiBkaXJlY3QgY29sb3IgcmVkIG1hc2sN
688Cgl1aW50OAkJbGluZWFyX3JlZF9maWVsZF9wb3M7CQkvLyBsaW5lYXIgbW9kZXM6IGJpdCBw
689b3NpdGlvbiBvZiBMU0Igb2YgcmVkIG1hc2sNCgl1aW50OAkJbGluZWFyX2dyZWVuX21hc2tf
690c2l6ZTsJCS8vIGxpbmVhciBtb2Rlczogc2l6ZSBvZiBkaXJlY3QgY29sb3IgZ3JlZW4gbWFz
691aw0KCXVpbnQ4CQlsaW5lYXJfZ3JlZW5fZmllbGRfcG9zOwkJLy8gbGluZWFyIG1vZGVzOiBi
692aXQgcG9zaXRpb24gb2YgTFNCIG9mIGdyZWVuIG1hc2sNCgl1aW50OAkJbGluZWFyX2JsdWVf
693bWFza19zaXplOwkJLy8gbGluZWFyIG1vZGVzOiBzaXplIG9mIGRpcmVjdCBjb2xvciBibHVl
694IG1hc2sNCgl1aW50OAkJbGluZWFyX2JsdWVfZmllbGRfcG9zOwkJLy8gbGluZWFyIG1vZGVz
695OiBiaXQgcG9zaXRpb24gb2YgTFNCIG9mIGJsdWUgbWFzaw0KCXVpbnQ4CQlsaW5lYXJfcnN2
696ZF9tYXNrX3NpemU7CQkvLyBsaW5lYXIgbW9kZXM6IHNpemUgb2YgZGlyZWN0IGNvbG9yIHJz
697dmQgbWFzaw0KCXVpbnQ4CQlsaW5lYXJfcnN2ZF9maWVsZF9wb3M7CQkvLyBsaW5lYXIgbW9k
698ZXM6IGJpdCBwb3NpdGlvbiBvZiBMU0Igb2YgcnN2ZCBtYXNrDQoJdWludDMyCQltYXhfcGl4
699ZWxfY2xvY2s7CQkJLy8gbWF4aW11bSBwaXhlbCBjbG9jayAoaW4gSHopIGZvciBncmFwaGlj
700cyBtb2RlDQoJDQoJdWludDgJCV9yZXNlcnZlZDRbMTg5KzFdOw0KfSBfUEFDS0VEIHZlc2Ez
701X21vZGVfaW5mb2Jsb2NrOw0KDQplbnVtIHZlc2EzX0NSVENfZmxhZ3Mgew0KCVZFU0EzX0NS
702VENfRE9VQkxFX1NDQU4gPSAxLA0KCVZFU0EzX0NSVENfSU5URVJMQUNFRCA9IDIsDQoJVkVT
703QTNfQ1JUQ19IU1lOQ19ORUdBVElWRSA9IDQsDQoJVkVTQTNfQ1JUQ19WU1lOQ19ORUdBVElW
704RSA9IDgNCn07DQoNCi8qIEZvciBhbiBleHBsYW5hdGlvbiBvZiB3aGF0IHZhbHVlcyB0byBm
705aWxsIGluIHRoaXMgc3RydWN0dXJlDQogKiBJJ3ZlIHBhc3RlZCBzb21lIGNvbW1lbnRzIGZy
706b20gQW5keSBSaXRnZXIncyBndGYuYyBoZXJlOg0KICoNCiAqIC0tLSBndGYuYyAtLS0+DQog
707Kg0KICogVGhlIEdURiBFWENFTChUTSkgU1BSRUFEU0hFRVQsIGEgc2FtcGxlIChhbmQgdGhl
708IGRlZmluaXRpdmUpDQogKiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgR1RGIFRpbWluZyBTdGFu
709ZGFyZCwgaXMgYXZhaWxhYmxlIGF0Og0KICoNCiAqIGZ0cDovL2Z0cC52ZXNhLm9yZy9wdWIv
710R1RGL0dURl9WMVIxLnhscw0KICoNCiAqIFRpbWluZyBkZXNjcmlwdGlvbjoNCiAqDQogKiAg
711ICAgPC0tLS0tLS0tMS0tLS0tLS0tPiA8LS0yLS0+IDwtLTMtLT4gPC0tNC0tPg0KICogICAg
712ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fXw0KICogICAgfC0tLS0tLS0t
713LS0tLS0tLS0tLS18X19fX19fX3wgICAgICAgfF9fX19fX18NCiAqDQogKiAgICAgICAgICAg
714ICAgICAgICAgICAgIFIgICAgICAgU1MgICAgICBTRSAgICAgRkwNCiAqICAgICAgIA0KICog
715MTogdmlzaWJsZSBpbWFnZQ0KICogMjogYmxhbmsgYmVmb3JlIHN5bmMgKGFrYSBmcm9udCBw
716b3JjaCkNCiAqIDM6IHN5bmMgcHVsc2UNCiAqIDQ6IGJsYW5rIGFmdGVyIHN5bmMgKGFrYSBi
717YWNrIHBvcmNoKQ0KICogUjogUmVzb2x1dGlvbg0KICogU1M6IFN5bmMgU3RhcnQNCiAqIFNF
718OiBTeW5jIEVuZA0KICogRkw6IEZyYW1lIExlbmd0aA0KICoNCiAqIDwtLS0tLS0tLS0tLS0t
719DQogKg0KICogU28gdGhlIGgvdiB2YWx1ZXMgYXJlIGNvbXB1dGVkIGFzIGZvbGxvd3M6DQog
720Kg0KICogc3luY19zdGFydCA9IHZpc2libGUgcGl4ZWxzICsgZnJvbnQgcG9yY2gNCiAqIHN5
721bmNfZW5kID0gc3luY19zdGFydCArIHN5bmMgcHVsc2UNCiAqIHRvdGFsID0gc3luY19lbmQg
722KyBiYWNrIHBvcmNoDQogKi8NCnR5cGVkZWYgc3RydWN0IHZlc2EzX0NSVENfaW5mb2Jsb2Nr
723IHsNCgl1aW50MTYJCWhvcml6b250YWxfdG90YWw7CQkJLy8gaG9yaXpvbnRhbCB0b3RhbCBp
724biBwaXhlbHMNCgl1aW50MTYJCWhvcml6b250YWxfc3luY19zdGFydDsJCS8vIGhvcml6b250
725YWwgc3luYyBzdGFydCBpbiBwaXhlbHMNCgl1aW50MTYJCWhvcml6b250YWxfc3luY19lbmQ7
726CQkvLyBob3Jpem9udGFsIHN5bmMgZW5kIGluIHBpeGVscw0KCXVpbnQxNgkJdmVydGljYWxf
727dG90YWw7CQkJCS8vIHZlcnRpY2FsIHRvdGFsIGluIGxpbmVzDQoJdWludDE2CQl2ZXJ0aWNh
728bF9zeW5jX3N0YXJ0OwkJLy8gdmVydGljYWwgc3luYyBzdGFydCBpbiBsaW5lcw0KCXVpbnQx
729NgkJdmVydGljYWxfc3luY19lbmQ7CQkJLy8gdmVydGljYWwgc3luYyBlbmQgaW4gbGluZXMN
730Cgl1aW50OAkJZmxhZ3M7CQkJCQkJLy8gZmxhZ3MgKGRvdWJsZS1zY2FuLCBpbnRlcmxhY2Vk
731LCBoL3Ytc3luYyBwb2xhcml0eSkNCgl1aW50MzIJCXBpeGVsX2Nsb2NrOwkJCQkvLyBwaXhl
732bCBjbG9jayBpbiB1bml0cyBvZiBIeg0KCXVpbnQxNgkJcmVmcmVzaF9yYXRlOwkJCQkvLyBy
733ZWZyZXNoIHJhdGUgaW4gdW5pdHMgb2YgMC4wMSBIeg0KCXVpbnQ4CQlfcmVzZXJ2ZWRbNDBd
734Ow0KfSBfUEFDS0VEIHZlc2EzX0NSVENfaW5mb2Jsb2NrOw0KDQojZW5kaWYNCg==
735--------------040707070507020007050409
736Content-Type: text/plain;
737 name="video_param_table.h"
738Content-Transfer-Encoding: base64
739Content-Disposition: attachment;
740 filename="video_param_table.h"
741
742I2lmbmRlZiBfVklERU9fUEFSQU1fVEFCTEVfSF8NCiNkZWZpbmUgX1ZJREVPX1BBUkFNX1RB
743QkxFX0hfDQoNCmNvbnN0IGNoYXIgdmlkZW9fcGFyYW1fdGFibGVbMjkqNjRdID0gew0KMHgy
744OCwweDE4LDB4MDgsMHgwMCwweDA4LDB4MDksMHgwMywweDAwLDB4MDIsMHg2MywweDJkLDB4
745MjcsMHgyOCwweDkwLDB4MmIsMHhhMCwweGJmLDB4MWYsMHgwMCwweGM3LDB4MDYsMHgwNyww
746eDAwLDB4MDAsMHgwMCwweDAwLDB4OWMsMHg4ZSwweDhmLDB4MTQsMHgxZiwweDk2LDB4Yjks
747MHhhMywweGZmLDB4MDAsMHgwMSwweDAyLDB4MDMsMHgwNCwweDA1LDB4MDYsMHgwNywweDEw
748LDB4MTEsMHgxMiwweDEzLDB4MTQsMHgxNSwweDE2LDB4MTcsMHgwOCwweDAwLDB4MGYsMHgw
749MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgxMCwweDBlLDB4MDAsMHhmZiwNCjB4Mjgs
750MHgxOCwweDA4LDB4MDAsMHgwOCwweDA5LDB4MDMsMHgwMCwweDAyLDB4NjMsMHgyZCwweDI3
751LDB4MjgsMHg5MCwweDJiLDB4YTAsMHhiZiwweDFmLDB4MDAsMHhjNywweDA2LDB4MDcsMHgw
752MCwweDAwLDB4MDAsMHgwMCwweDljLDB4OGUsMHg4ZiwweDE0LDB4MWYsMHg5NiwweGI5LDB4
753YTMsMHhmZiwweDAwLDB4MDEsMHgwMiwweDAzLDB4MDQsMHgwNSwweDA2LDB4MDcsMHgxMCww
754eDExLDB4MTIsMHgxMywweDE0LDB4MTUsMHgxNiwweDE3LDB4MDgsMHgwMCwweDBmLDB4MDAs
755MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MTAsMHgwZSwweDAwLDB4ZmYsDQoweDUwLDB4
756MTgsMHgwOCwweDAwLDB4MTAsMHgwMSwweDAzLDB4MDAsMHgwMiwweDYzLDB4NWYsMHg0Ziww
757eDUwLDB4ODIsMHg1NSwweDgxLDB4YmYsMHgxZiwweDAwLDB4YzcsMHgwNiwweDA3LDB4MDAs
758MHgwMCwweDAwLDB4MDAsMHg5YywweDhlLDB4OGYsMHgyOCwweDFmLDB4OTYsMHhiOSwweGEz
759LDB4ZmYsMHgwMCwweDAxLDB4MDIsMHgwMywweDA0LDB4MDUsMHgwNiwweDA3LDB4MTAsMHgx
760MSwweDEyLDB4MTMsMHgxNCwweDE1LDB4MTYsMHgxNywweDA4LDB4MDAsMHgwZiwweDAwLDB4
761MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDEwLDB4MGUsMHgwMCwweGZmLA0KMHg1MCwweDE4
762LDB4MDgsMHgwMCwweDEwLDB4MDEsMHgwMywweDAwLDB4MDIsMHg2MywweDVmLDB4NGYsMHg1
763MCwweDgyLDB4NTUsMHg4MSwweGJmLDB4MWYsMHgwMCwweGM3LDB4MDYsMHgwNywweDAwLDB4
764MDAsMHgwMCwweDAwLDB4OWMsMHg4ZSwweDhmLDB4MjgsMHgxZiwweDk2LDB4YjksMHhhMyww
765eGZmLDB4MDAsMHgwMSwweDAyLDB4MDMsMHgwNCwweDA1LDB4MDYsMHgwNywweDEwLDB4MTEs
766MHgxMiwweDEzLDB4MTQsMHgxNSwweDE2LDB4MTcsMHgwOCwweDAwLDB4MGYsMHgwMCwweDAw
767LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgxMCwweDBlLDB4MDAsMHhmZiwNCjB4MjgsMHgxOCww
768eDA4LDB4MDAsMHg0MCwweDA5LDB4MDMsMHgwMCwweDAyLDB4NjMsMHgyZCwweDI3LDB4Mjgs
769MHg5MCwweDJiLDB4ODAsMHhiZiwweDFmLDB4MDAsMHhjMSwweDAwLDB4MDAsMHgwMCwweDAw
770LDB4MDAsMHgwMCwweDljLDB4OGUsMHg4ZiwweDE0LDB4MDAsMHg5NiwweGI5LDB4YTIsMHhm
771ZiwweDAwLDB4MTMsMHgxNSwweDE3LDB4MDIsMHgwNCwweDA2LDB4MDcsMHgxMCwweDExLDB4
772MTIsMHgxMywweDE0LDB4MTUsMHgxNiwweDE3LDB4MDEsMHgwMCwweDAzLDB4MDAsMHgwMCww
773eDAwLDB4MDAsMHgwMCwweDAwLDB4MzAsMHgwZiwweDAwLDB4ZmYsDQoweDI4LDB4MTgsMHgw
774OCwweDAwLDB4NDAsMHgwOSwweDAzLDB4MDAsMHgwMiwweDYzLDB4MmQsMHgyNywweDI4LDB4
775OTAsMHgyYiwweDgwLDB4YmYsMHgxZiwweDAwLDB4YzEsMHgwMCwweDAwLDB4MDAsMHgwMCww
776eDAwLDB4MDAsMHg5YywweDhlLDB4OGYsMHgxNCwweDAwLDB4OTYsMHhiOSwweGEyLDB4ZmYs
777MHgwMCwweDEzLDB4MTUsMHgxNywweDAyLDB4MDQsMHgwNiwweDA3LDB4MTAsMHgxMSwweDEy
778LDB4MTMsMHgxNCwweDE1LDB4MTYsMHgxNywweDAxLDB4MDAsMHgwMywweDAwLDB4MDAsMHgw
779MCwweDAwLDB4MDAsMHgwMCwweDMwLDB4MGYsMHgwMCwweGZmLA0KMHg1MCwweDE4LDB4MDgs
780MHgwMCwweDQwLDB4MDEsMHgwMSwweDAwLDB4MDYsMHg2MywweDVmLDB4NGYsMHg1MCwweDgy
781LDB4NTQsMHg4MCwweGJmLDB4MWYsMHgwMCwweGMxLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw
782MCwweDAwLDB4OWMsMHg4ZSwweDhmLDB4MjgsMHgwMCwweDk2LDB4YjksMHhjMiwweGZmLDB4
783MDAsMHgxNywweDE3LDB4MTcsMHgxNywweDE3LDB4MTcsMHgxNywweDE3LDB4MTcsMHgxNyww
784eDE3LDB4MTcsMHgxNywweDE3LDB4MTcsMHgwMSwweDAwLDB4MDEsMHgwMCwweDAwLDB4MDAs
785MHgwMCwweDAwLDB4MDAsMHgwMCwweDBkLDB4MDAsMHhmZiwNCjB4NTAsMHgxOCwweDBlLDB4
786MDAsMHgxMCwweDAwLDB4MDMsMHgwMCwweDAzLDB4YTYsMHg1ZiwweDRmLDB4NTAsMHg4Miww
787eDU1LDB4ODEsMHhiZiwweDFmLDB4MDAsMHg0ZCwweDBiLDB4MGMsMHgwMCwweDAwLDB4MDAs
788MHgwMCwweDgzLDB4ODUsMHg1ZCwweDI4LDB4MGQsMHg2MywweGJhLDB4YTMsMHhmZiwweDAw
789LDB4MDgsMHgwOCwweDA4LDB4MDgsMHgwOCwweDA4LDB4MDgsMHgxMCwweDE4LDB4MTgsMHgx
790OCwweDE4LDB4MTgsMHgxOCwweDE4LDB4MGUsMHgwMCwweDBmLDB4MDgsMHgwMCwweDAwLDB4
791MDAsMHgwMCwweDAwLDB4MTAsMHgwYSwweDAwLDB4ZmYsDQoweDUwLDB4M2IsMHgwOCwweDAw
792LDB4MjYsMHgwMSwweDAzLDB4MDAsMHgwMiwweGUzLDB4NWYsMHg0ZiwweDUwLDB4ODIsMHg1
793NSwweDgxLDB4MGIsMHgzZSwweDAwLDB4NDcsMHgwNiwweDA3LDB4MDAsMHgwMCwweDAwLDB4
794MDAsMHhlYSwweDhjLDB4ZGYsMHgyOCwweDFmLDB4ZTcsMHgwNCwweGEzLDB4ZmYsMHgwMCww
795eDAxLDB4MDIsMHgwMywweDA0LDB4MDUsMHgxNCwweDA3LDB4MzgsMHgzOSwweDNhLDB4M2Is
796MHgzYywweDNkLDB4M2UsMHgzZiwweDBjLDB4MDAsMHgwZiwweDAwLDB4MDAsMHgwMCwweDAw
797LDB4MDAsMHgwMCwweDEwLDB4MGUsMHgwMCwweGZmLA0KMHg4NCwweDE4LDB4MTAsMHgwMCww
798eDIwLDB4MDEsMHgwMywweDAwLDB4MDIsMHg2YiwweDllLDB4ODMsMHg4NCwweDgxLDB4OGEs
799MHg5ZSwweGJmLDB4MWYsMHgwMCwweDRmLDB4MGQsMHgwZSwweDAwLDB4MDAsMHgwMCwweDAw
800LDB4OWMsMHg4ZSwweDhmLDB4NDIsMHgxZiwweDk2LDB4YjksMHhhMywweGZmLDB4MDAsMHgw
801MSwweDAyLDB4MDMsMHgwNCwweDA1LDB4MTQsMHgwNywweDM4LDB4MzksMHgzYSwweDNiLDB4
802M2MsMHgzZCwweDNlLDB4M2YsMHgwYywweDAwLDB4MGYsMHgwMCwweDAwLDB4MDAsMHgwMCww
803eDAwLDB4MDAsMHgxMCwweDBlLDB4MDAsMHhmZiwNCjB4ODQsMHgyYSwweDA5LDB4MDAsMHg0
804MCwweDAxLDB4MDMsMHgwMCwweDAyLDB4NmIsMHg5ZSwweDgzLDB4ODQsMHg4MSwweDhhLDB4
805OWUsMHhiZiwweDFmLDB4MDAsMHg0OCwweDA3LDB4MDgsMHgwMCwweDAwLDB4MDAsMHgwMCww
806eDkyLDB4ODQsMHg4MiwweDQyLDB4MWYsMHg4OSwweGI5LDB4YTMsMHhmZiwweDAwLDB4MDEs
807MHgwMiwweDAzLDB4MDQsMHgwNSwweDE0LDB4MDcsMHgzOCwweDM5LDB4M2EsMHgzYiwweDNj
808LDB4M2QsMHgzZSwweDNmLDB4MGMsMHgwMCwweDBmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw
809MCwweDAwLDB4MTAsMHgwZSwweDAwLDB4ZmYsDQoweDg0LDB4MzEsMHgwOCwweDAwLDB4NDAs
810MHgwMSwweDAzLDB4MDAsMHgwMiwweDZiLDB4OWUsMHg4MywweDg0LDB4ODEsMHg4YSwweDll
811LDB4YmYsMHgxZiwweDAwLDB4NDcsMHgwNiwweDA3LDB4MDAsMHgwMCwweDAwLDB4MDAsMHg5
812YywweDhlLDB4OGYsMHg0MiwweDFmLDB4OTYsMHhiOSwweGEzLDB4ZmYsMHgwMCwweDAxLDB4
813MDIsMHgwMywweDA0LDB4MDUsMHgxNCwweDA3LDB4MzgsMHgzOSwweDNhLDB4M2IsMHgzYyww
814eDNkLDB4M2UsMHgzZiwweDBjLDB4MDAsMHgwZiwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs
815MHgwMCwweDEwLDB4MGUsMHgwMCwweGZmLA0KMHg4NCwweDNiLDB4MDgsMHgwMCwweDQwLDB4
816MDEsMHgwMywweDAwLDB4MDIsMHhlYiwweDllLDB4ODMsMHg4NCwweDgxLDB4OGEsMHg5ZSww
817eDBiLDB4M2UsMHgwMCwweDQ3LDB4MDYsMHgwNywweDAwLDB4MDAsMHgwMCwweDAwLDB4ZWEs
818MHg4YywweGRmLDB4NDIsMHgxZiwweGU3LDB4MDQsMHhhMywweGZmLDB4MDAsMHgwMSwweDAy
819LDB4MDMsMHgwNCwweDA1LDB4MTQsMHgwNywweDM4LDB4MzksMHgzYSwweDNiLDB4M2MsMHgz
820ZCwweDNlLDB4M2YsMHgwYywweDAwLDB4MGYsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4
821MDAsMHgxMCwweDBlLDB4MDAsMHhmZiwNCjB4MjgsMHgxOCwweDA4LDB4MDAsMHgyMCwweDA5
822LDB4MGYsMHgwMCwweDA2LDB4NjMsMHgyZCwweDI3LDB4MjgsMHg5MCwweDJiLDB4ODAsMHhi
823ZiwweDFmLDB4MDAsMHhjMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDljLDB4
824OGUsMHg4ZiwweDE0LDB4MDAsMHg5NiwweGI5LDB4ZTMsMHhmZiwweDAwLDB4MDEsMHgwMiww
825eDAzLDB4MDQsMHgwNSwweDA2LDB4MDcsMHgxMCwweDExLDB4MTIsMHgxMywweDE0LDB4MTUs
826MHgxNiwweDE3LDB4MDEsMHgwMCwweDBmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAw
827LDB4MDAsMHgwNSwweDBmLDB4ZmYsDQoweDUwLDB4MTgsMHgwOCwweDAwLDB4NDAsMHgwMSww
828eDBmLDB4MDAsMHgwNiwweDYzLDB4NWYsMHg0ZiwweDUwLDB4ODIsMHg1NCwweDgwLDB4YmYs
829MHgxZiwweDAwLDB4YzAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg5YywweDhl
830LDB4OGYsMHgyOCwweDAwLDB4OTYsMHhiOSwweGUzLDB4ZmYsMHgwMCwweDAxLDB4MDIsMHgw
831MywweDA0LDB4MDUsMHgwNiwweDA3LDB4MTAsMHgxMSwweDEyLDB4MTMsMHgxNCwweDE1LDB4
832MTYsMHgxNywweDAxLDB4MDAsMHgwZiwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww
833eDAwLDB4MDUsMHgwZiwweGZmLA0KMHg1MCwweDFkLDB4MTAsMHhmZiwweGZmLDB4MDEsMHgw
834ZiwweDAwLDB4MGUsMHhlYiwweDVmLDB4NGYsMHg0ZiwweDgzLDB4NTMsMHg5ZiwweDBiLDB4
835M2UsMHgwMCwweDQwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4ZTksMHgwYiww
836eGRmLDB4YTAsMHgwMCwweGRmLDB4MGMsMHhlMywweGZmLDB4MDAsMHgwMSwweDAyLDB4MDMs
837MHgwNCwweDA1LDB4MDYsMHgwNywweDA4LDB4MDksMHgwYSwweDBiLDB4MGMsMHgwZCwweDBl
838LDB4MGYsMHg0MSwweDAwLDB4MGYsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg0
839MCwweDA1LDB4MGYsMHhmZiwNCjB4NTAsMHgxOCwweDA4LDB4MDAsMHgxMCwweDAxLDB4MDMs
840MHgwMCwweDAzLDB4YTIsMHg1ZiwweDRmLDB4NTAsMHg4MiwweDU1LDB4ODEsMHhiZiwweDFm
841LDB4MDAsMHhjNywweDA2LDB4MDcsMHgwMCwweDAwLDB4MDAsMHgwMCwweDljLDB4OGUsMHg4
842ZiwweDI4LDB4MWYsMHg5NiwweGI5LDB4YTMsMHhmZiwweDAwLDB4MDgsMHgwOCwweDA4LDB4
843MDgsMHgwOCwweDA4LDB4MDgsMHgxMCwweDE4LDB4MTgsMHgxOCwweDE4LDB4MTgsMHgxOCww
844eDE4LDB4MGEsMHgwMCwweDBmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MTAs
845MHgwYSwweDAwLDB4ZmYsDQoweDUwLDB4MTgsMHgwZSwweDAwLDB4ODAsMHgwMSwweDBmLDB4
846MDAsMHgwNiwweGEyLDB4NWYsMHg0ZiwweDUwLDB4ODIsMHg1NCwweDgwLDB4YmYsMHgxZiww
847eDAwLDB4NDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg4MywweDg1LDB4NWQs
848MHgyOCwweDBmLDB4NjMsMHhiYSwweGUzLDB4ZmYsMHgwMCwweDA4LDB4MDAsMHgwMCwweDE4
849LDB4MTgsMHgwMCwweDAwLDB4MDAsMHgwOCwweDAwLDB4MDAsMHgwMCwweDE4LDB4MDAsMHgw
850MCwweDBiLDB4MDAsMHgwNSwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4
851MDUsMHgwNSwweGZmLA0KMHg1MCwweDE4LDB4MGUsMHgwMCwweDgwLDB4MDEsMHgwZiwweDAw
852LDB4MDYsMHhhMywweDVmLDB4NGYsMHg1MCwweDgyLDB4NTQsMHg4MCwweGJmLDB4MWYsMHgw
853MCwweDQwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4ODMsMHg4NSwweDVkLDB4
854MjgsMHgwZiwweDYzLDB4YmEsMHhlMywweGZmLDB4MDAsMHgwMSwweDAyLDB4MDMsMHgwNCww
855eDA1LDB4MTQsMHgwNywweDM4LDB4MzksMHgzYSwweDNiLDB4M2MsMHgzZCwweDNlLDB4M2Ys
856MHgwMSwweDAwLDB4MGYsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDA1
857LDB4MGYsMHhmZiwNCjB4MjgsMHgxOCwweDBlLDB4MDAsMHgwOCwweDA5LDB4MDMsMHgwMCww
858eDAyLDB4YTMsMHgyZCwweDI3LDB4MjgsMHg5MCwweDJiLDB4YTAsMHhiZiwweDFmLDB4MDAs
859MHg0ZCwweDBiLDB4MGMsMHgwMCwweDAwLDB4MDAsMHgwMCwweDgzLDB4ODUsMHg1ZCwweDE0
860LDB4MWYsMHg2MywweGJhLDB4YTMsMHhmZiwweDAwLDB4MDEsMHgwMiwweDAzLDB4MDQsMHgw
861NSwweDE0LDB4MDcsMHgzOCwweDM5LDB4M2EsMHgzYiwweDNjLDB4M2QsMHgzZSwweDNmLDB4
862MDgsMHgwMCwweDBmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MTAsMHgwZSww
863eDAwLDB4ZmYsDQoweDI4LDB4MTgsMHgwZSwweDAwLDB4MDgsMHgwOSwweDAzLDB4MDAsMHgw
864MiwweGEzLDB4MmQsMHgyNywweDI4LDB4OTAsMHgyYiwweGEwLDB4YmYsMHgxZiwweDAwLDB4
865NGQsMHgwYiwweDBjLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg4MywweDg1LDB4NWQsMHgxNCww
866eDFmLDB4NjMsMHhiYSwweGEzLDB4ZmYsMHgwMCwweDAxLDB4MDIsMHgwMywweDA0LDB4MDUs
867MHgxNCwweDA3LDB4MzgsMHgzOSwweDNhLDB4M2IsMHgzYywweDNkLDB4M2UsMHgzZiwweDA4
868LDB4MDAsMHgwZiwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDEwLDB4MGUsMHgw
869MCwweGZmLA0KMHg1MCwweDE4LDB4MGUsMHgwMCwweDEwLDB4MDEsMHgwMywweDAwLDB4MDIs
870MHhhMywweDVmLDB4NGYsMHg1MCwweDgyLDB4NTUsMHg4MSwweGJmLDB4MWYsMHgwMCwweDRk
871LDB4MGIsMHgwYywweDAwLDB4MDAsMHgwMCwweDAwLDB4ODMsMHg4NSwweDVkLDB4MjgsMHgx
872ZiwweDYzLDB4YmEsMHhhMywweGZmLDB4MDAsMHgwMSwweDAyLDB4MDMsMHgwNCwweDA1LDB4
873MTQsMHgwNywweDM4LDB4MzksMHgzYSwweDNiLDB4M2MsMHgzZCwweDNlLDB4M2YsMHgwOCww
874eDAwLDB4MGYsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgxMCwweDBlLDB4MDAs
875MHhmZiwNCjB4NTAsMHgxOCwweDBlLDB4MDAsMHgxMCwweDAxLDB4MDMsMHgwMCwweDAyLDB4
876YTMsMHg1ZiwweDRmLDB4NTAsMHg4MiwweDU1LDB4ODEsMHhiZiwweDFmLDB4MDAsMHg0ZCww
877eDBiLDB4MGMsMHgwMCwweDAwLDB4MDAsMHgwMCwweDgzLDB4ODUsMHg1ZCwweDI4LDB4MWYs
878MHg2MywweGJhLDB4YTMsMHhmZiwweDAwLDB4MDEsMHgwMiwweDAzLDB4MDQsMHgwNSwweDE0
879LDB4MDcsMHgzOCwweDM5LDB4M2EsMHgzYiwweDNjLDB4M2QsMHgzZSwweDNmLDB4MDgsMHgw
880MCwweDBmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MTAsMHgwZSwweDAwLDB4
881ZmYsDQoweDI4LDB4MTgsMHgxMCwweDAwLDB4MDgsMHgwOCwweDAzLDB4MDAsMHgwMiwweDY3
882LDB4MmQsMHgyNywweDI4LDB4OTAsMHgyYiwweGEwLDB4YmYsMHgxZiwweDAwLDB4NGYsMHgw
883ZCwweDBlLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg5YywweDhlLDB4OGYsMHgxNCwweDFmLDB4
884OTYsMHhiOSwweGEzLDB4ZmYsMHgwMCwweDAxLDB4MDIsMHgwMywweDA0LDB4MDUsMHgxNCww
885eDA3LDB4MzgsMHgzOSwweDNhLDB4M2IsMHgzYywweDNkLDB4M2UsMHgzZiwweDBjLDB4MDAs
886MHgwZiwweDA4LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDEwLDB4MGUsMHgwMCwweGZm
887LA0KMHg1MCwweDE4LDB4MTAsMHgwMCwweDEwLDB4MDAsMHgwMywweDAwLDB4MDIsMHg2Nyww
888eDVmLDB4NGYsMHg1MCwweDgyLDB4NTUsMHg4MSwweGJmLDB4MWYsMHgwMCwweDRmLDB4MGQs
889MHgwZSwweDAwLDB4MDAsMHgwMCwweDAwLDB4OWMsMHg4ZSwweDhmLDB4MjgsMHgxZiwweDk2
890LDB4YjksMHhhMywweGZmLDB4MDAsMHgwMSwweDAyLDB4MDMsMHgwNCwweDA1LDB4MTQsMHgw
891NywweDM4LDB4MzksMHgzYSwweDNiLDB4M2MsMHgzZCwweDNlLDB4M2YsMHgwYywweDAwLDB4
892MGYsMHgwOCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgxMCwweDBlLDB4MDAsMHhmZiwN
893CjB4NTAsMHgxOCwweDEwLDB4MDAsMHgxMCwweDAwLDB4MDMsMHgwMCwweDAyLDB4NjYsMHg1
894ZiwweDRmLDB4NTAsMHg4MiwweDU1LDB4ODEsMHhiZiwweDFmLDB4MDAsMHg0ZiwweDBkLDB4
895MGUsMHgwMCwweDAwLDB4MDAsMHgwMCwweDljLDB4OGUsMHg4ZiwweDI4LDB4MGYsMHg5Niww
896eGI5LDB4YTMsMHhmZiwweDAwLDB4MDgsMHgwOCwweDA4LDB4MDgsMHgwOCwweDA4LDB4MDgs
897MHgxMCwweDE4LDB4MTgsMHgxOCwweDE4LDB4MTgsMHgxOCwweDE4LDB4MGUsMHgwMCwweDBm
898LDB4MDgsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MTAsMHgwYSwweDAwLDB4ZmYsDQow
899eDUwLDB4MWQsMHgxMCwweDAwLDB4YTAsMHgwMSwweDBmLDB4MDAsMHgwNiwweGUzLDB4NWYs
900MHg0ZiwweDUwLDB4ODIsMHg1NCwweDgwLDB4MGIsMHgzZSwweDAwLDB4NDAsMHgwMCwweDAw
901LDB4MDAsMHgwMCwweDAwLDB4MDAsMHhlYSwweDhjLDB4ZGYsMHgyOCwweDAwLDB4ZTcsMHgw
902NCwweGMzLDB4ZmYsMHgwMCwweDNmLDB4M2YsMHgzZiwweDNmLDB4M2YsMHgzZiwweDNmLDB4
903M2YsMHgzZiwweDNmLDB4M2YsMHgzZiwweDNmLDB4M2YsMHgzZiwweDAxLDB4MDAsMHgwZiww
904eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDUsMHgwMSwweGZmLA0KMHg1
905MCwweDFkLDB4MTAsMHgwMCwweGEwLDB4MDEsMHgwZiwweDAwLDB4MDYsMHhlMywweDVmLDB4
906NGYsMHg1MCwweDgyLDB4NTQsMHg4MCwweDBiLDB4M2UsMHgwMCwweDQwLDB4MDAsMHgwMCww
907eDAwLDB4MDAsMHgwMCwweDAwLDB4ZWEsMHg4YywweGRmLDB4MjgsMHgwMCwweGU3LDB4MDQs
908MHhlMywweGZmLDB4MDAsMHgwMSwweDAyLDB4MDMsMHgwNCwweDA1LDB4MTQsMHgwNywweDM4
909LDB4MzksMHgzYSwweDNiLDB4M2MsMHgzZCwweDNlLDB4M2YsMHgwMSwweDAwLDB4MGYsMHgw
910MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDA1LDB4MGYsMHhmZiwNCjB4Mjgs
911MHgxOCwweDA4LDB4MDAsMHhmYSwweDAxLDB4MGYsMHgwMCwweDBlLDB4NjMsMHg1ZiwweDRm
912LDB4NTAsMHg4MiwweDU0LDB4ODAsMHhiZiwweDFmLDB4MDAsMHg0MSwweDAwLDB4MDAsMHgw
913MCwweDAwLDB4MDAsMHgwMCwweDljLDB4OGUsMHg4ZiwweDI4LDB4NDAsMHg5NiwweGI5LDB4
914YTMsMHhmZiwweDAwLDB4MDEsMHgwMiwweDAzLDB4MDQsMHgwNSwweDA2LDB4MDcsMHgwOCww
915eDA5LDB4MGEsMHgwYiwweDBjLDB4MGQsMHgwZSwweDBmLDB4NDEsMHgwMCwweDBmLDB4MDAs
916MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4NDAsMHgwNSwweDBmLDB4ZmYNCn07DQoNCi8q
917Y29uc3QgY2hhciB2aWRlb190YWJsZTFbMzBdID0geyAgLy8gMHg0MDoweDQ5DQoweDAzLDB4
918NTAsMHgwMCwweDAwLDB4MTAsMHgwMCwweDAwLDB4MDAsMHgwOCwweDAwLDB4MDAsMHgwMCww
919eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs
920MHgwZSwweDBkLDB4MDAsMHhkNCwweDAzLDB4MjksMHgzMA0KfTsNCg0KY29uc3QgY2hhciB2
921aWRlb190YWJsZTJbN10gPSB7ICAvLyAweDQwOjB4ODQNCjB4MTgsMHgxMCwweDAwLDB4NjAs
922MHgwOSwweDExLDB4MGINCn07DQoNCmNvbnN0IGNoYXIgdmlkZW9fdGFibGUzWzRdID0geyAg
923Ly8gMHg0MDoweGE4OiBwb2ludGVyIHRvIHZpZGVvIHNhdmUgcG9pbnRlciB0YWJsZQ0KMHg3
924OCwweDI4LDB4MDAsMHhjMA0KfTsqLw0KDQojZW5kaWYNCg==
925--------------040707070507020007050409
926Content-Type: text/plain;
927 name="selector.h"
928Content-Transfer-Encoding: base64
929Content-Disposition: attachment;
930 filename="selector.h"
931
932LyoKKiogQ29weXJpZ2h0IDIwMDIsIE1pY2hhZWwgTm9pc3Rlcm5pZy4gQWxsIHJpZ2h0cyBy
933ZXNlcnZlZC4KKiogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBOZXdPUyBM
934aWNlbnNlLgoqLwojaWZuZGVmIF9JMzg2X1NFTEVDVE9SX0hfCiNkZWZpbmUgX0kzODZfU0VM
935RUNUT1JfSF8KCiNpbmNsdWRlIDxhcmNoL2kzODYvdHlwZXMuaD4KCnR5cGVkZWYgdWludDMy
936IHNlbGVjdG9yX2lkOwp0eXBlZGVmIHVpbnQ2NCBzZWxlY3Rvcl90eXBlOwoKLy8gREFUQSBz
937ZWdtZW50cyBhcmUgcmVhZC1vbmx5Ci8vIENPREUgc2VnbWVudHMgYXJlIGV4ZWN1dGUtb25s
938eQovLyBib3RoIGNhbiBiZSBtb2RpZmllZCBieSB1c2luZyB0aGUgc3VmZml4ZWQgZW51bSB2
939ZXJzaW9ucwovLyBsZWdlbmQ6CXcgPSB3cml0YWJsZQovLwkJCWQgPSBleHBhbmQgZG93bgov
940LwkJCXIgPSByZWFkYWJsZQovLwkJCWMgPSBjb25mb3JtaW5nCmVudW0gc2VnbWVudF90eXBl
941IHsKCURBVEEgPSAweDgsIERBVEFfdywgREFUQV9kLCBEQVRBX3dkLCBDT0RFLCBDT0RFX3Is
942IENPREVfYywgQ09ERV9yYwp9OwoKI2RlZmluZSBTRUxFQ1RPUihiYXNlLGxpbWl0LHR5cGUs
943bW9kZTMyKSBcCgkoKCh1aW50NjQpKCgoKCh1aW50MzIpYmFzZSk+PjE2KSYweGZmKSB8ICgo
944KHVpbnQzMiliYXNlKSYweGZmMDAwMDAwKSB8ICgodHlwZSk8PDkpIHwgKChtb2RlMzIpPDwy
945MikgfCAoMTw8MTUpKTw8MzIpIFwKCXwgKCAobGltaXQpID49ICgxPDwyMCkgPyAoKChsaW1p
946dCk+PjEyKSYweGZmZmYpIHwgKCh1aW50NjQpKCgobGltaXQpPj4xMikmMHhmMDAwMCk8PDMy
947KSB8ICgodWludDY0KTE8PCgyMyszMikpIDogKChsaW1pdCkmMHhmZmZmKSB8ICgodWludDY0
948KSgobGltaXQpJjB4ZjAwMDApPDwzMikgKSBcCgl8ICgoKCh1aW50MzIpYmFzZSkmMHhmZmZm
949KTw8MTYpKQoKdm9pZAkJCWkzODZfc2VsZWN0b3JfaW5pdCggdm9pZCAqZ2R0ICk7CnNlbGVj
950dG9yX2lkCQlpMzg2X3NlbGVjdG9yX2FkZCggc2VsZWN0b3JfdHlwZSBzZWxlY3RvciApOwp2
951b2lkCQkJaTM4Nl9zZWxlY3Rvcl9yZW1vdmUoIHNlbGVjdG9yX2lkIGlkICk7CnNlbGVjdG9y
952X3R5cGUJaTM4Nl9zZWxlY3Rvcl9nZXQoIHNlbGVjdG9yX2lkIGlkICk7CgojZW5kaWYKCg==
953--------------040707070507020007050409
954Content-Type: text/plain;
955 name="arch_selector.c"
956Content-Transfer-Encoding: base64
957Content-Disposition: attachment;
958 filename="arch_selector.c"
959
960LyoKKiogQ29weXJpZ2h0IDIwMDIsIE1pY2hhZWwgTm9pc3Rlcm5pZy4gQWxsIHJpZ2h0cyBy
961ZXNlcnZlZC4KKiogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBOZXdPUyBM
962aWNlbnNlLgoqLwojaW5jbHVkZSA8Ym9vdC9hcmNoL2kzODYvc3RhZ2UyLmg+CiNpbmNsdWRl
963IDxrZXJuZWwvYXJjaC9jcHUuaD4KI2luY2x1ZGUgPGtlcm5lbC9zbXAuaD4KI2luY2x1ZGUg
964PGtlcm5lbC9pbnQuaD4KCiNpbmNsdWRlIDxrZXJuZWwvYXJjaC9pMzg2L3NlbGVjdG9yLmg+
965CgojZGVmaW5lIE1BWF9TRUxFQ1RPUlMgKEdEVF9MSU1JVC84KQojZGVmaW5lIEVOVFJJRVMg
966KE1BWF9TRUxFQ1RPUlMvKHNpemVvZih1aW50MzIpKjgpKQoKc3RhdGljIHVpbnQzMiBzZWxl
967Y3Rvcl9iaXRtYXBbRU5UUklFU10KCT0geyAweDAwMDAwMGZmIH07ICAvLyBmaXJzdCA4IHNl
968bGVjdG9ycyByZXNlcnZlZAoKc3RhdGljIHNlbGVjdG9yX3R5cGUgKmdkdF90YWJsZTsKc3Rh
969dGljIHN0cnVjdCBnZHRfaWR0X2Rlc2NyIGRlc2NyID0geyBHRFRfTElNSVQgLSAxLCBOVUxM
970IH07Cgp2b2lkIGkzODZfc2VsZWN0b3JfaW5pdCggdm9pZCAqZ2R0ICkKewoJZ2R0X3RhYmxl
971ID0gKHNlbGVjdG9yX3R5cGUgKilnZHQ7CglkZXNjci5iID0gKHVuc2lnbmVkIGludCAqKWdk
972dF90YWJsZTsKfQoKLy8gY3JlYXRlcyBhIG5ldyBzZWxlY3RvciBpbiB0aGUgZ2R0IG9mIGdp
973dmVuIHR5cGUgKHVzZSBTRUxFQ1RPUiBtYWNybykKLy8gSU46CXNlbGVjdG9yIHR5cGUKLy8g
974UkVUOglzZWxlY3RvciB0aGF0IGNhbiBiZSBkaXJlY3RseSB1c2VkIGZvciBzZWdtZW50IHJl
975Z2lzdGVycwovLwkJMCBvbiBlcnJvcgpzZWxlY3Rvcl9pZCBpMzg2X3NlbGVjdG9yX2FkZCgg
976c2VsZWN0b3JfdHlwZSB0eXBlICkKewoJc3RhdGljIGludCBzcGlubG9jazsKCWludCBzdGF0
977ZTsKCXVpbnQzMiBtYXNrOwoJc2VsZWN0b3JfaWQgaWQgPSAwOwoJdW5zaWduZWQgaTsKCglz
978dGF0ZSA9IGludF9kaXNhYmxlX2ludGVycnVwdHMoKTsKCWFjcXVpcmVfc3BpbmxvY2soICZz
979cGlubG9jayApOwoKCWZvciAoIGkgPSAwOyBpIDwgRU5UUklFUzsgaSsrICkKCQlpZiAoIHNl
980bGVjdG9yX2JpdG1hcFtpXSAhPSAweGZmZmZmZmZmICkgeyAgLy8gZm91bmQgZnJlZSBwbGFj
981ZSBpbiB0aGVyZQoJCQlpZCA9IGkqc2l6ZW9mKHVpbnQzMikqODsKCQkJbWFzayA9IDE7CgkJ
982CXdoaWxlICggc2VsZWN0b3JfYml0bWFwW2ldICYgbWFzayApIHsKCQkJCW1hc2sgPDw9IDE7
983CgkJCQlpZCsrOwoJCQl9CgkJCXNlbGVjdG9yX2JpdG1hcFtpXSB8PSBtYXNrOwoJCQlnZHRf
984dGFibGVbaWRdID0gdHlwZTsKCQkJYnJlYWs7CgkJfQoKCXJlbGVhc2Vfc3BpbmxvY2soICZz
985cGlubG9jayApOwoJaW50X3Jlc3RvcmVfaW50ZXJydXB0cyggc3RhdGUgKTsKCglpZiAoIGlk
986ICkgewoJCWFzbSgibGdkdAklMDsiCgkJCTogOiAibSIgKGRlc2NyKSk7Cgl9CgoJcmV0dXJu
987IGlkKjg7Cn0KCi8vIHJlbW92ZXMgYSBzZWxlY3RvciB3aXRoIGdpdmVuIGlkIGZyb20gdGhl
988IGdkdAp2b2lkIGkzODZfc2VsZWN0b3JfcmVtb3ZlKCBzZWxlY3Rvcl9pZCBpZCApCnsKCWlm
989ICggaWQgPCA4KjggfHwgaWQgPj0gTUFYX1NFTEVDVE9SUyo4ICkKCQlyZXR1cm47CgoJaWQg
990Lz0gODsKCWdkdF90YWJsZVtpZF0gPSAwOwoKCWF0b21pY19hbmQoICZzZWxlY3Rvcl9iaXRt
991YXBbaWQvMzJdLCB+KDE8PChpZCYzMSkpICk7CgoJYXNtKCJsZ2R0CSUwOyIKCQk6IDogIm0i
992IChkZXNjcikpOwp9CgovLyByZXR1cm5zIHRoZSBzZWxlY3RvciB0eXBlIG9mIGEgZ2l2ZW4g
993aWQKc2VsZWN0b3JfdHlwZSBpMzg2X3NlbGVjdG9yX2dldCggc2VsZWN0b3JfaWQgaWQgKQp7
994CglyZXR1cm4gZ2R0X3RhYmxlW2lkLzhdOwp9Cg==
995--------------040707070507020007050409--