<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>5003</bug_id>
          
          <creation_ts>2005-09-16 02:21:52 -0700</creation_ts>
          <short_desc>Add temporary &quot;KDOM/KCanvas&quot; Wrapper solution for SVG</short_desc>
          <delta_ts>2005-09-22 20:29:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>19743</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-16 02:21:52 -0700</bug_when>
    <thetext>Add temporary &quot;KDOM/KCanvas&quot; Wrapper solution for SVG

Add a DOM KDOM node wrapper and a RenderTree KCanvasItem wrapper to WebCore to allow us to render 
SVG in safari prior to the true DOM/RenderTree integration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19744</commentid>
    <comment_count>1</comment_count>
      <attachid>3909</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-16 03:34:07 -0700</bug_when>
    <thetext>Created attachment 3909
New files necessary for &quot;wrapper&quot; solution.  (Incomplete patch)

This patch does not include the (very minimal) necessary changes to WebCore and
WebKit.  I need to make the WebKit changes a bit more elegant first before we
land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19850</commentid>
    <comment_count>2</comment_count>
      <attachid>3933</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-18 04:28:42 -0700</bug_when>
    <thetext>Created attachment 3933
New files for &quot;wrapper&quot; solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19851</commentid>
    <comment_count>3</comment_count>
      <attachid>3933</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-18 04:29:48 -0700</bug_when>
    <thetext>Comment on attachment 3933
New files for &quot;wrapper&quot; solution.

Hyatt is probably the best reviewer for this (as he knows the render tree
best).	Mjs or Darin might also have opinions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20097</commentid>
    <comment_count>4</comment_count>
      <attachid>3933</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-09-20 13:31:33 -0700</bug_when>
    <thetext>Comment on attachment 3933
New files for &quot;wrapper&quot; solution.

Gave comments in person, but will re-summarize here:

(1) NodeTreeWrapper could be folded in to the DocumentImpl subclass.
(2) Check leaks... looks like some objects might be leaking here.
(3) Use QPainter in the paint() method instead of raw CG.
(4) paint() method will paint twice.  Make sure to only paint during the
foreground phase and not during other phases like the outline phase.
(5) Where are scripts handled?
Looks like they aren&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20150</commentid>
    <comment_count>5</comment_count>
      <attachid>3979</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-21 04:21:42 -0700</bug_when>
    <thetext>Created attachment 3979
Final patch (fixed leaks, uses QPainter, paints less, etc.)

With this patch, (many) SVGs now &quot;just work&quot; in Safari.  This fixes the
previously mentioned canvas leak, a overdrawing due to paint()
misunderstanding, and moved off of CG and onto QPainter methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20151</commentid>
    <comment_count>6</comment_count>
      <attachid>3979</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-21 04:22:08 -0700</bug_when>
    <thetext>Comment on attachment 3979
Final patch (fixed leaks, uses QPainter, paints less, etc.)

Addressed hyatt&apos;s issues.  Either hyatt or mjs should be able to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20218</commentid>
    <comment_count>7</comment_count>
      <attachid>4002</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-22 04:39:18 -0700</bug_when>
    <thetext>Created attachment 4002
Consolidate tools and update to match WebCore+SVG -&gt; WebCore product name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20219</commentid>
    <comment_count>8</comment_count>
      <attachid>4002</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-22 04:41:38 -0700</bug_when>
    <thetext>Comment on attachment 4002
Consolidate tools and update to match WebCore+SVG -&gt; WebCore product name.

This patch gets rid of two (previously separate) SVG scripts, rolling them back
into the original script with a new --svg option.  This patch also updates all
of the SVG tools to use WebCore.framework instead of WebCore+SVG.framework, and
explicity check for SVG symbols in WebCore.

Any of a number of folks could review this one.  Darin may have the strongest
opinions as he wrote most of these tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20220</commentid>
    <comment_count>9</comment_count>
      <attachid>4003</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-22 05:37:41 -0700</bug_when>
    <thetext>Created attachment 4003
Consolidate tools and update to match WebCore+SVG -&gt; WebCore product name.

Better tools additions, now includes the ability to automatically re-link
JavaScriptCore and WebCore when running build-webkit w/ or w/o the --svg
option, and they&apos;ve previously been built with the opposite option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20221</commentid>
    <comment_count>10</comment_count>
      <attachid>4003</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-22 05:38:25 -0700</bug_when>
    <thetext>Comment on attachment 4003
Consolidate tools and update to match WebCore+SVG -&gt; WebCore product name.

A better patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20229</commentid>
    <comment_count>11</comment_count>
      <attachid>4002</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-22 11:33:00 -0700</bug_when>
    <thetext>Comment on attachment 4002
Consolidate tools and update to match WebCore+SVG -&gt; WebCore product name.

Looks like the code to pass -target All when building JavaScriptCore is gone. I
believe this will cause problems because the testkjs program won&apos;t get built.

Otherwise, looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20262</commentid>
    <comment_count>12</comment_count>
      <attachid>4013</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-22 14:46:59 -0700</bug_when>
    <thetext>Created attachment 4013
Updated patch which builds testkjs when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20263</commentid>
    <comment_count>13</comment_count>
      <attachid>4013</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-22 14:49:55 -0700</bug_when>
    <thetext>Comment on attachment 4013
Updated patch which builds testkjs when necessary.

Fixes build-webkit to make sure that testkjs is built when needed.  I&apos;m still
(intentionally) ignoring the &quot;All&quot; build target, as this solution make for a
cleaner script which handles both JSC and JSC+SVG.  Once JSC+SVG goes away,
this could move back to an equally clean solution using the &quot;All&quot; target if
desired.

Really anyone could review this, darin reviewed the first iteration of this
patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20268</commentid>
    <comment_count>14</comment_count>
      <attachid>4013</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-09-22 20:07:20 -0700</bug_when>
    <thetext>Comment on attachment 4013
Updated patch which builds testkjs when necessary.

r=me on the tools patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20269</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-22 20:29:37 -0700</bug_when>
    <thetext>Sweet.  It is now possible w/ TOT to run Safari w/ SVG support!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3909</attachid>
            <date>2005-09-16 03:34:07 -0700</date>
            <delta_ts>2005-09-18 04:28:42 -0700</delta_ts>
            <desc>New files necessary for &quot;wrapper&quot; solution.  (Incomplete patch)</desc>
            <filename>svghack.patch</filename>
            <type>text/plain</type>
            <size>23247</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGRvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBk
b21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAKLS0tIGRvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmNw
cAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb21fa2RvbWRvY3VtZW50d3JhcHBlci5j
cHAJMTYgU2VwIDIwMDUgMDk6MjQ6MzUgLTAwMDAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKyAKKyNpbmNsdWRlICJkb21fa2RvbWRvY3VtZW50d3JhcHBlci5oIgorI2luY2x1
ZGUgInhtbF9rZG9tdG9rZW5pemVyLmgiCisKKyNpbmNsdWRlICJLV1FLU1ZHVmlldy5oIgorI2lu
Y2x1ZGUgIktXUUtTVkdQYXJ0LmgiCisKKyNpbmNsdWRlICJrY2FudmFzL0tDYW52YXMuaCIKKyNp
bmNsdWRlICJrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgor
Cit1c2luZyBuYW1lc3BhY2Uga2h0bWw7Cit1c2luZyBuYW1lc3BhY2UgRE9NOworCitLUmVuZGVy
aW5nRGV2aWNlUXVhcnR6ICpLRE9NRG9jdW1lbnRXcmFwcGVySW1wbDo6cmVuZGVyaW5nRGV2aWNl
KCkKK3sKKyAgICBzdGF0aWMgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqX19xdWFydHpSZW5kZXJp
bmdEZXZpY2UgPSBuaWw7CisgICAgaWYgKCFfX3F1YXJ0elJlbmRlcmluZ0RldmljZSkKKyAgICAg
ICAgX19xdWFydHpSZW5kZXJpbmdEZXZpY2UgPSBuZXcgS1JlbmRlcmluZ0RldmljZVF1YXJ0eigp
OworICAgIHJldHVybiBfX3F1YXJ0elJlbmRlcmluZ0RldmljZTsKK30KKworS0RPTURvY3VtZW50
V3JhcHBlckltcGw6OktET01Eb2N1bWVudFdyYXBwZXJJbXBsKERPTUltcGxlbWVudGF0aW9uSW1w
bCAqaSwgS0hUTUxWaWV3ICp2KSA6IERvY3VtZW50SW1wbChpLHYpCit7CisgICAgbV9zdmdQYXJ0
ID0gbmV3IEtTVkc6OktTVkdQYXJ0KCk7CisgICAgbV9jYW52YXMgPSBuZXcgS0NhbnZhcyhLRE9N
RG9jdW1lbnRXcmFwcGVySW1wbDo6cmVuZGVyaW5nRGV2aWNlKCkpOworICAgIHN2Z1ZpZXcoKS0+
Y2FudmFzVmlldygpLT5pbml0KG1fY2FudmFzLCBOVUxMKTsKKyAgICBtX2NhbnZhcy0+YWRkVmll
dyhzdmdWaWV3KCktPmNhbnZhc1ZpZXcoKSk7Cit9CisKK0tET01Eb2N1bWVudFdyYXBwZXJJbXBs
Ojp+S0RPTURvY3VtZW50V3JhcHBlckltcGwoKQoreworICAgIGRlbGV0ZSBtX3N2Z1BhcnQ7Cit9
CisKK1Rva2VuaXplciAqRE9NOjpLRE9NRG9jdW1lbnRXcmFwcGVySW1wbDo6Y3JlYXRlVG9rZW5p
emVyKCkKK3sKKyAgICByZXR1cm4gbmV3S0RPTVRva2VuaXplcihkb2NQdHIoKSwgbV92aWV3KTsK
K30KKworS1NWRzo6S1NWR1ZpZXcgKktET01Eb2N1bWVudFdyYXBwZXJJbXBsOjpzdmdWaWV3KCkK
K3sKKyAgICByZXR1cm4gbV9zdmdQYXJ0ID8gc3RhdGljX2Nhc3Q8S1NWRzo6S1NWR1ZpZXcgKj4o
bV9zdmdQYXJ0LT52aWV3KCkpIDogTlVMTDsKK30KSW5kZXg6IGRvbV9rZG9tZG9jdW1lbnR3cmFw
cGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaAotLS0g
ZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBk
b21fa2RvbWRvY3VtZW50d3JhcHBlci5oCTE2IFNlcCAyMDA1IDA5OjI0OjQyIC0wMDAwCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgX0RPTV9LRE9NRG9jdW1l
bnRXcmFwcGVySW1wbF9oCisjZGVmaW5lIF9ET01fS0RPTURvY3VtZW50V3JhcHBlckltcGxfaAor
CisjaW5jbHVkZSAia2h0bWwveG1sL2RvbV9kb2NpbXBsLmgiCisKK2NsYXNzIEtDYW52YXM7Citj
bGFzcyBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OworCituYW1lc3BhY2UgS1NWRyB7CisgICAgY2xh
c3MgS1NWR1BhcnQ7CisgICAgY2xhc3MgS1NWR1ZpZXc7Cit9CisKK25hbWVzcGFjZSBET00gewor
CitjbGFzcyBLRE9NRG9jdW1lbnRXcmFwcGVySW1wbCA6IHB1YmxpYyBEb2N1bWVudEltcGwKK3sK
K3B1YmxpYzoKKyAgICBLRE9NRG9jdW1lbnRXcmFwcGVySW1wbChET01JbXBsZW1lbnRhdGlvbklt
cGwgKmksIEtIVE1MVmlldyAqdik7CisgICAgdmlydHVhbCB+S0RPTURvY3VtZW50V3JhcHBlcklt
cGwoKTsKKworICAgIHZpcnR1YWwga2h0bWw6OlRva2VuaXplciAqY3JlYXRlVG9rZW5pemVyKCk7
CisgICAgCisgICAgS1NWRzo6S1NWR1ZpZXcgKnN2Z1ZpZXcoKTsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqcmVuZGVyaW5nRGV2aWNlKCk7CisKKyAgICBL
U1ZHOjpLU1ZHUGFydCAqbV9zdmdQYXJ0OworICAgIEtDYW52YXMgKm1fY2FudmFzOworfTsKKwor
fTsgLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogZG9tX2tkb21ub2RldHJlZXdyYXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRvbV9rZG9tbm9kZXRyZWV3cmFwcGVyLmNwcAotLS0g
ZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuY3BwCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysr
IGRvbV9rZG9tbm9kZXRyZWV3cmFwcGVyLmNwcAkxNiBTZXAgMjAwNSAwOToyMzo1MyAtMDAwMApA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiZG9tX2tkb21u
b2RldHJlZXdyYXBwZXIuaCIKKyNpbmNsdWRlICJkb21fZWxlbWVudGltcGwuaCIKKworI2luY2x1
ZGUgInJlbmRlcl9vYmplY3QuaCIKKyNpbmNsdWRlICJyZW5kZXJfa2NhbnZhc3dyYXBwZXIuaCIK
KworI2luY2x1ZGUgImtkb20vY29yZS9Eb2N1bWVudEltcGwuaCIKKyNpbmNsdWRlICJrc3ZnMi9z
dmcvU1ZHRG9jdW1lbnRJbXBsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBraHRtbDsKK3VzaW5nIG5h
bWVzcGFjZSBET007Cit1c2luZyBuYW1lc3BhY2UgS1NWRzsKKworRE9NOjpLRE9NTm9kZVRyZWVX
cmFwcGVySW1wbDo6S0RPTU5vZGVUcmVlV3JhcHBlckltcGwoRE9NOjpEb2N1bWVudFB0ciAqZG9j
LCBLRE9NOjpEb2N1bWVudEltcGwgKndyYXBwZWQpIDoKKyAgICBET006OkVsZW1lbnRJbXBsKFF1
YWxpZmllZE5hbWUoInN2ZyIsICJzdmciLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSwg
ZG9jKSwgbV93cmFwcGVkRG9jKHdyYXBwZWQpCit7CisgICAgaWYgKG1fd3JhcHBlZERvYykKKyAg
ICAgICAgbV93cmFwcGVkRG9jLT5yZWYoKTsKK30KKworS0RPTU5vZGVUcmVlV3JhcHBlckltcGw6
On5LRE9NTm9kZVRyZWVXcmFwcGVySW1wbCgpCit7CisgICAgaWYgKG1fd3JhcHBlZERvYykKKyAg
ICAgICAgbV93cmFwcGVkRG9jLT5kZXJlZigpOworfQorCit2b2lkIEtET01Ob2RlVHJlZVdyYXBw
ZXJJbXBsOjphdHRhY2goKQoreworICAgIEVsZW1lbnRJbXBsOjphdHRhY2goKTsKKyAgICAKKyAg
ICBpZiAocmVuZGVyZXIoKSkgeworICAgICAgICBSZW5kZXJLQ2FudmFzV3JhcHBlciAqY2FudmFz
V3JhcHBlciA9IHN0YXRpY19jYXN0PFJlbmRlcktDYW52YXNXcmFwcGVyKj4ocmVuZGVyZXIoKSk7
CisgICAgICAgIFNWR0RvY3VtZW50SW1wbCAqc3ZnRG9jID0gc3RhdGljX2Nhc3Q8S1NWRzo6U1ZH
RG9jdW1lbnRJbXBsICo+KG1fd3JhcHBlZERvYyk7CisgICAgICAgIGNhbnZhc1dyYXBwZXItPnNl
dENhbnZhcyhzdmdEb2MtPmNhbnZhcygpKTsKKyAgICB9Cit9CisKK1JlbmRlck9iamVjdCAqS0RP
TU5vZGVUcmVlV3JhcHBlckltcGw6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwg
UmVuZGVyU3R5bGUgKnN0eWxlKQoreworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJLQ2Fu
dmFzV3JhcHBlcih0aGlzKTsKK30KSW5kZXg6IGRvbV9rZG9tbm9kZXRyZWV3cmFwcGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpkaWZmIC1OcHUgZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuaAotLS0gZG9tX2tkb21u
b2RldHJlZXdyYXBwZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb21fa2RvbW5v
ZGV0cmVld3JhcHBlci5oCTE2IFNlcCAyMDA1IDA5OjI0OjEyIC0wMDAwCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgX0RPTV9LRE9NTm9kZVRyZWVXcmFwcGVy
SW1wbF9oCisjZGVmaW5lIF9ET01fS0RPTU5vZGVUcmVlV3JhcHBlckltcGxfaAorCisjaW5jbHVk
ZSAiZG9tX2VsZW1lbnRpbXBsLmgiCisKK2NsYXNzIFJlbmRlckFyZW5hOworCituYW1lc3BhY2Ug
a2h0bWwgeworICAgIGNsYXNzIFJlbmRlck9iamVjdDsKKyAgICBjbGFzcyBSZW5kZXJTdHlsZTsK
K30KKworbmFtZXNwYWNlIEtET00geworICAgIGNsYXNzIERvY3VtZW50SW1wbDsKK307CisKK25h
bWVzcGFjZSBET00geworCitjbGFzcyBLRE9NTm9kZVRyZWVXcmFwcGVySW1wbCA6IHB1YmxpYyBF
bGVtZW50SW1wbAoreworcHVibGljOgorICAgIEtET01Ob2RlVHJlZVdyYXBwZXJJbXBsKERvY3Vt
ZW50UHRyICpkb2MsIEtET006OkRvY3VtZW50SW1wbCAqd3JhcHBlZCk7CisgICAgdmlydHVhbCB+
S0RPTU5vZGVUcmVlV3JhcHBlckltcGwoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGtodG1sOjpSZW5k
ZXJPYmplY3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwga2h0bWw6OlJlbmRl
clN0eWxlICpzdHlsZSk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworCitwcml2
YXRlOgorICAgIEtET006OkRvY3VtZW50SW1wbCAqbV93cmFwcGVkRG9jOworfTsKKworfTsgLy8g
bmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogcmVuZGVyX2tjYW52YXN3cmFwcGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CmRpZmYgLU5wdSByZW5kZXJfa2NhbnZhc3dyYXBwZXIuY3BwCi0tLSByZW5kZXJfa2Nh
bnZhc3dyYXBwZXIuY3BwCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIHJlbmRlcl9rY2Fu
dmFzd3JhcHBlci5jcHAJMTYgU2VwIDIwMDUgMDk6MjQ6NTEgLTAwMDAKQEAgLTAsMCArMSw4OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInJlbmRlcl9rY2FudmFzd3JhcHBlci5o
IgorCisjaW5jbHVkZSAia2NhbnZhcy9LQ2FudmFzLmgiCisjaW5jbHVkZSAia2NhbnZhcy9LQ2Fu
dmFzQ29udGFpbmVyLmgiCisjaW5jbHVkZSAia2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJp
bmdEZXZpY2VRdWFydHouaCIKKwordXNpbmcgbmFtZXNwYWNlIGtodG1sOworCitSZW5kZXJLQ2Fu
dmFzV3JhcHBlcjo6UmVuZGVyS0NhbnZhc1dyYXBwZXIoRE9NOjpLRE9NTm9kZVRyZWVXcmFwcGVy
SW1wbCAqbm9kZSkgOiBSZW5kZXJCb3gobm9kZSksIG1fY2FudmFzKDApCit7CisgICAgbV9jb250
ZXh0ID0gbmV3IEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6KCk7Cit9CisKK1JlbmRlcktD
YW52YXNXcmFwcGVyOjp+UmVuZGVyS0NhbnZhc1dyYXBwZXIoKQoreworCit9CisKK3ZvaWQgUmVu
ZGVyS0NhbnZhc1dyYXBwZXI6OmxheW91dCgpCit7CisKK30KKwordm9pZCBSZW5kZXJLQ2FudmFz
V3JhcHBlcjo6cGFpbnQoUGFpbnRJbmZvICZwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFy
ZW50WSkKK3sKKyAgICBpZiAocGFpbnRJbmZvLnAtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8ucC0+Y3Vy
cmVudENvbnRleHQoKTsKKyAgICBpZiAoIWNnQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGlmICghbV9jYW52YXMgfHwgIW1fY2FudmFzLT5yb290Q29udGFpbmVyKCkgfHwgIW1f
Y2FudmFzLT5yZW5kZXJpbmdEZXZpY2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEtS
ZW5kZXJpbmdEZXZpY2UgKnJlbmRlcmluZ0RldmljZSA9IG1fY2FudmFzLT5yZW5kZXJpbmdEZXZp
Y2UoKTsKKyAgICAKKyAgICBtX2NvbnRleHQtPnNldENHQ29udGV4dChjZ0NvbnRleHQpOworICAg
IHJlbmRlcmluZ0RldmljZS0+cHVzaENvbnRleHQobV9jb250ZXh0KTsKKyAgICAKKyAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisgICAgLy9DR0NvbnRleHRDb25jYXRDVE0oY29u
dGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoW2RyYXdWaWV3IHRyYW5zZm9ybUZyb21WaWV3
VG9DYW52YXNdKSk7CisgICAgCisgICAgZmxvYXQgd2hpdGVDb2xvcls0XSA9IHsxLDEsMSwxfTsK
KyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY2dDb250ZXh0LHdoaXRlQ29sb3IpOworICAgIENH
Q29udGV4dEZpbGxSZWN0KGNnQ29udGV4dCxDR1JlY3QocGFpbnRJbmZvLnIpKTsKKyAgICAKKyAg
ICBRUmVjdCBkaXJ0eVJlY3QgPSBwYWludEluZm8ucjsgLy9RUmVjdChbZHJhd1ZpZXcgbWFwVmll
d1JlY3RUb0NhbnZhczpkaXJ0eVZpZXdSZWN0XSk7CisgICAgbV9jYW52YXMtPnJvb3RDb250YWlu
ZXIoKS0+ZHJhdyhkaXJ0eVJlY3QpOworICAgIAorICAgIC8vIHJlc3RvcmUgZHJhd2luZyBzdGF0
ZQorICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKyAgICByZW5kZXJpbmdE
ZXZpY2UtPnBvcENvbnRleHQoKTsKKyAgICBtX2NvbnRleHQtPnNldENHQ29udGV4dChOVUxMKTsK
K30KKworaW50IFJlbmRlcktDYW52YXNXcmFwcGVyOjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIDE1MDsKK30KKworaW50IFJlbmRlcktDYW52YXNXcmFwcGVyOjppbnRyaW5z
aWNIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiAxNTA7Cit9CkluZGV4OiByZW5kZXJfa2Nh
bnZhc3dyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSByZW5kZXJfa2NhbnZhc3dyYXBwZXIu
aAotLS0gcmVuZGVyX2tjYW52YXN3cmFwcGVyLmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor
KysgcmVuZGVyX2tjYW52YXN3cmFwcGVyLmgJMTYgU2VwIDIwMDUgMDk6MjQ6NTggLTAwMDAKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSRU5ERVJfS0NBTlZB
U1dSQVBQRVJfSAorI2RlZmluZSBSRU5ERVJfS0NBTlZBU1dSQVBQRVJfSAorCisjaW5jbHVkZSAi
a2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9ib3guaCIKKyNpbmNsdWRlICJraHRtbC9taXNjL2xvYWRl
ci5oIgorI2luY2x1ZGUgImtodG1sL3JlbmRlcmluZy9yZW5kZXJfbGF5ZXIuaCIKKyNpbmNsdWRl
ICJkb21fa2RvbW5vZGV0cmVld3JhcHBlci5oIgorCitjbGFzcyBLQ2FudmFzOworY2xhc3MgS1Jl
bmRlcmluZ0RldmljZUNvbnRleHRRdWFydHo7CitjbGFzcyBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6
OworCituYW1lc3BhY2Uga2h0bWwgeworCitjbGFzcyBSZW5kZXJLQ2FudmFzV3JhcHBlciA6IHB1
YmxpYyBSZW5kZXJCb3gKK3sKK3B1YmxpYzoKKyAgICBSZW5kZXJLQ2FudmFzV3JhcHBlcihET006
OktET01Ob2RlVHJlZVdyYXBwZXJJbXBsICpub2RlKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJLQ2Fu
dmFzV3JhcHBlcigpOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyICpyZW5kZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gIlJlbmRlcktDYW52YXNXcmFwcGVyIjsgfQorCisgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8gJmksIGludCBfdHgs
IGludCBfdHkpOworICAgIAorICAgIHZvaWQgc2V0Q2FudmFzKEtDYW52YXMgKmNhbnZhcykgeyBt
X2NhbnZhcyA9IGNhbnZhczsgfQorICAgIAorICAgIGludCBSZW5kZXJLQ2FudmFzV3JhcHBlcjo6
aW50cmluc2ljV2lkdGgoKSBjb25zdDsKKyAgICBpbnQgUmVuZGVyS0NhbnZhc1dyYXBwZXI6Omlu
dHJpbnNpY0hlaWdodCgpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBLQ2FudmFzICptX2Nh
bnZhczsKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eiAqbV9jb250ZXh0OworfTsK
KworfTsgLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogeG1sX2tkb210b2tlbml6ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KZGlmZiAtTnB1IHhtbF9rZG9tdG9rZW5pemVyLmNwcAotLS0geG1sX2tkb210
b2tlbml6ZXIuY3BwCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIHhtbF9rZG9tdG9rZW5p
emVyLmNwcAkxNiBTZXAgMjAwNSAwOToyMjo1OSAtMDAwMApAQCAtMCwwICsxLDE1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgPHFzdHJpbmcuaD4KKworI2luY2x1ZGUgImxvYWRl
cl9jbGllbnQuaCIKKyNpbmNsdWRlICJraHRtbHZpZXcuaCIKKworI2luY2x1ZGUgImRvbV9rZG9t
ZG9jdW1lbnR3cmFwcGVyLmgiCisjaW5jbHVkZSAiZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuaCIK
KyNpbmNsdWRlICJkb21fbm9kZWltcGwuaCIKKworI2luY2x1ZGUgInhtbF90b2tlbml6ZXIuaCIK
KyNpbmNsdWRlICJ4bWxfa2RvbXRva2VuaXplci5oIgorCisjaW5jbHVkZSAia2RvbS9jb3JlL0RP
TUNvbmZpZ3VyYXRpb25JbXBsLmgiCisjaW5jbHVkZSAia2RvbS9iYWNrZW5kcy9saWJ4bWwvTGli
WE1MUGFyc2VyLmgiCisjaW5jbHVkZSAia2RvbS9jb3JlL0RvY3VtZW50SW1wbC5oIgorCisjaW5j
bHVkZSAia3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5oIgorI2luY2x1ZGUgImtzdmcyL21pc2Mv
S1NWR0RvY3VtZW50QnVpbGRlci5oIgorCisKK25hbWVzcGFjZSBET00geworICAgIGNsYXNzIEtE
T01Eb2N1bWVudFdyYXBwZXJJbXBsOworfTsKKworbmFtZXNwYWNlIGtodG1sIHsKKworY2xhc3Mg
VG9rZW5pemVyU3RyaW5nOworY2xhc3MgS0RPTVRva2VuaXplciA6IHB1YmxpYyBUb2tlbml6ZXIs
IHB1YmxpYyBDYWNoZWRPYmplY3RDbGllbnQKK3sKK3B1YmxpYzoKKyAgICBLRE9NVG9rZW5pemVy
KERPTTo6RG9jdW1lbnRQdHIgKiwgS0hUTUxWaWV3ICogPSAwKTsKKyAgICB+S0RPTVRva2VuaXpl
cigpOworCisgICAgLy8gZnJvbSBUb2tlbml6ZXIKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGUoY29u
c3QgVG9rZW5pemVyU3RyaW5nICZzdHIsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2go
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T25Ib2xkKGJvb2wgb25Ib2xkKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0OworCitwcml2YXRlOgorICAgIERPTTo6
S0RPTURvY3VtZW50V3JhcHBlckltcGwgKmRvY3VtZW50V3JhcHBlcigpOworCisgICAgRE9NOjpE
b2N1bWVudFB0ciAqbV9kb2M7CisgICAgS0hUTUxWaWV3ICptX3ZpZXc7CisKKyAgICBRU3RyaW5n
IG1feG1sQ29kZTsKK307CisKK307IC8vIG5hbWVzcGFjZQorCisKK3VzaW5nIG5hbWVzcGFjZSBr
aHRtbDsKK3VzaW5nIG5hbWVzcGFjZSBLU1ZHOwordXNpbmcgbmFtZXNwYWNlIERPTTsKKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworS0RPTVRva2VuaXplcjo6S0RPTVRv
a2VuaXplcihET006OkRvY3VtZW50UHRyICpfZG9jLCBLSFRNTFZpZXcgKl92aWV3KQorICAgIDog
bV9kb2MoX2RvYyksIG1fdmlldyhfdmlldykKK3sKKyAgICBpZiAobV9kb2MpCisgICAgICAgIG1f
ZG9jLT5yZWYoKTsKKyAgICAKKyAgICAvL0ZJWE1FOiBLRE9NVG9rZW5pemVyIHNob3VsZCB1c2Ug
dGhpcyBpbiBhIGZhc2hpb24gc2ltaWxpYXIgdG8gaG93CisgICAgLy9IVE1MVG9rZW5pemVyIHVz
ZXMgbG9hZFN0b3BwZWQsIGluIHRoZSBmdXR1cmUuCisgICAgbG9hZFN0b3BwZWQgPSBmYWxzZTsK
K30KKworS0RPTVRva2VuaXplcjo6fktET01Ub2tlbml6ZXIoKQoreworICAgIGlmIChtX2RvYykK
KyAgICAgICAgbV9kb2MtPmRlcmVmKCk7Cit9CisKK0tET01Eb2N1bWVudFdyYXBwZXJJbXBsICpL
RE9NVG9rZW5pemVyOjpkb2N1bWVudFdyYXBwZXIoKQoreworICAgIHJldHVybiBtX2RvYyA/IHN0
YXRpY19jYXN0PEtET01Eb2N1bWVudFdyYXBwZXJJbXBsICo+KG1fZG9jLT5kb2N1bWVudCgpKSA6
IE5VTEw7Cit9CisKK3ZvaWQgS0RPTVRva2VuaXplcjo6d3JpdGUoY29uc3QgVG9rZW5pemVyU3Ry
aW5nICZzLCBib29sIC8qYXBwZW5kRGF0YSovICkKK3sKKyAgICBtX3htbENvZGUgKz0gcy50b1N0
cmluZygpOworfQorCit2b2lkIEtET01Ub2tlbml6ZXI6OnNldE9uSG9sZChib29sIG9uSG9sZCkK
K3sKKyAgICAvLyBXaWxsIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgd2hlbiB3ZSBkbyBpbmNy
ZW1lbnRhbCBYTUwgcGFyc2luZz8KK30KKwordm9pZCBLRE9NVG9rZW5pemVyOjpmaW5pc2goKQor
eworICAgIEtTVkc6OkRvY3VtZW50QnVpbGRlciAqYnVpbGRlciA9IG5ldyBLU1ZHOjpEb2N1bWVu
dEJ1aWxkZXIoZG9jdW1lbnRXcmFwcGVyKCktPnN2Z1ZpZXcoKSk7CisgICAgS0RPTTo6TGliWE1M
UGFyc2VyICpwYXJzZXIgPSBuZXcgS0RPTTo6TGliWE1MUGFyc2VyKEtVUkwoKSk7CisgICAgcGFy
c2VyLT5zZXREb2N1bWVudEJ1aWxkZXIoYnVpbGRlcik7CisgICAgCisgICAgcGFyc2VyLT5kb21D
b25maWcoKS0+c2V0UGFyYW1ldGVyKEtET006OkVOVElUSUVTLmhhbmRsZSgpLCBmYWxzZSk7Cisg
ICAgcGFyc2VyLT5kb21Db25maWcoKS0+c2V0UGFyYW1ldGVyKEtET006OkVMRU1FTlRfQ09OVEVO
VF9XSElURVNQQUNFLmhhbmRsZSgpLCBmYWxzZSk7CisgICAgCisgICAgLy8gRmVlZCB0aGUgcGFy
c2VyIHRoZSB3aG9sZSBkb2N1bWVudCAoaGFjaykKKyAgICBwYXJzZXItPmRvT25lU2hvdFBhcnNl
KG1feG1sQ29kZS51dGY4KCksIG1feG1sQ29kZS5sZW5ndGgoKSk7CisgICAgCisgICAgU1ZHRG9j
dW1lbnRJbXBsICpzdmdEb2MgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudEltcGwgKj4ocGFyc2Vy
LT5kb2N1bWVudCgpKTsKKyAgICBOb2RlSW1wbCAqd3JhcHBlZERvYyA9IG5ldyBLRE9NTm9kZVRy
ZWVXcmFwcGVySW1wbChtX2RvYywgc3ZnRG9jKTsKKyAgICBkZWxldGUgcGFyc2VyOyAvLyBidWls
ZGVyIGlzIG93bmVkIChkZWxldGVkKSBieSBwYXJzZXIKKyAgICAKKyAgICBpZiAoZG9jdW1lbnRX
cmFwcGVyKCktPmFkZENoaWxkKHdyYXBwZWREb2MpKSB7CisgICAgICAgIEtDYW52YXNWaWV3ICpw
cmltYXJ5VmlldyA9IGRvY3VtZW50V3JhcHBlcigpLT5zdmdWaWV3KCktPmNhbnZhc1ZpZXcoKTsK
KyAgICAgICAgc3ZnRG9jLT5zZXRDYW52YXNWaWV3KHByaW1hcnlWaWV3KTsKKyAgICAgICAgaWYg
KG1fdmlldyAmJiAhd3JhcHBlZERvYy0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAgIHdyYXBwZWRE
b2MtPmF0dGFjaCgpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGRlbGV0ZSB3cmFwcGVkRG9j
OworCisgICAgZW1pdCBmaW5pc2hlZFBhcnNpbmcoKTsKK30KKworCitib29sIEtET01Ub2tlbml6
ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworbmFtZXNwYWNlIGtodG1sIHsKKworVG9rZW5pemVyICpuZXdLRE9NVG9rZW5pemVyKERPTTo6
RG9jdW1lbnRQdHIgKmQsIEtIVE1MVmlldyAqdikKK3sKKyAgICByZXR1cm4gbmV3IEtET01Ub2tl
bml6ZXIoZCwgdik7Cit9CisKK307CkluZGV4OiB4bWxfa2RvbXRva2VuaXplci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KZGlmZiAtTnB1IHhtbF9rZG9tdG9rZW5pemVyLmgKLS0tIHhtbF9rZG9tdG9rZW5pemVyLmgJ
MSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgeG1sX2tkb210b2tlbml6ZXIuaAkxNiBTZXAg
MjAwNSAwOToyMjo0OSAtMDAwMApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIF9YTUxfS0RPTVRva2VuaXplcl9oXworI2RlZmluZSBfWE1MX0tET01Ub2tlbml6
ZXJfaF8KKworY2xhc3MgS0hUTUxWaWV3OworCituYW1lc3BhY2UgRE9NIHsKKyAgICBjbGFzcyBE
b2N1bWVudFB0cjsKK30KKworbmFtZXNwYWNlIGtodG1sIHsKKyAgICBjbGFzcyBUb2tlbml6ZXI7
CisgICAgCisgICAgVG9rZW5pemVyICpuZXdLRE9NVG9rZW5pemVyKERPTTo6RG9jdW1lbnRQdHIg
KiwgS0hUTUxWaWV3ICogPSAwKTsKK307IC8vIG5hbWVzcGFjZQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3933</attachid>
            <date>2005-09-18 04:28:42 -0700</date>
            <delta_ts>2005-09-21 04:21:42 -0700</delta_ts>
            <desc>New files for &quot;wrapper&quot; solution.</desc>
            <filename>safari+svg.patch</filename>
            <type>text/plain</type>
            <size>23943</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGRvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBk
b21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAKLS0tIGRvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmNw
cAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb21fa2RvbWRvY3VtZW50d3JhcHBlci5j
cHAJMTYgU2VwIDIwMDUgMDk6MjQ6MzUgLTAwMDAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKyAKKyNpbmNsdWRlICJkb21fa2RvbWRvY3VtZW50d3JhcHBlci5oIgorI2luY2x1
ZGUgInhtbF9rZG9tdG9rZW5pemVyLmgiCisKKyNpbmNsdWRlICJLV1FLU1ZHVmlldy5oIgorI2lu
Y2x1ZGUgIktXUUtTVkdQYXJ0LmgiCisKKyNpbmNsdWRlICJrY2FudmFzL0tDYW52YXMuaCIKKyNp
bmNsdWRlICJrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgor
Cit1c2luZyBuYW1lc3BhY2Uga2h0bWw7Cit1c2luZyBuYW1lc3BhY2UgRE9NOworCitLUmVuZGVy
aW5nRGV2aWNlUXVhcnR6ICpLRE9NRG9jdW1lbnRXcmFwcGVySW1wbDo6cmVuZGVyaW5nRGV2aWNl
KCkKK3sKKyAgICBzdGF0aWMgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqX19xdWFydHpSZW5kZXJp
bmdEZXZpY2UgPSBuaWw7CisgICAgaWYgKCFfX3F1YXJ0elJlbmRlcmluZ0RldmljZSkKKyAgICAg
ICAgX19xdWFydHpSZW5kZXJpbmdEZXZpY2UgPSBuZXcgS1JlbmRlcmluZ0RldmljZVF1YXJ0eigp
OworICAgIHJldHVybiBfX3F1YXJ0elJlbmRlcmluZ0RldmljZTsKK30KKworS0RPTURvY3VtZW50
V3JhcHBlckltcGw6OktET01Eb2N1bWVudFdyYXBwZXJJbXBsKERPTUltcGxlbWVudGF0aW9uSW1w
bCAqaSwgS0hUTUxWaWV3ICp2KSA6IERvY3VtZW50SW1wbChpLHYpCit7CisgICAgbV9zdmdQYXJ0
ID0gbmV3IEtTVkc6OktTVkdQYXJ0KCk7CisgICAgbV9jYW52YXMgPSBuZXcgS0NhbnZhcyhLRE9N
RG9jdW1lbnRXcmFwcGVySW1wbDo6cmVuZGVyaW5nRGV2aWNlKCkpOworICAgIHN2Z1ZpZXcoKS0+
Y2FudmFzVmlldygpLT5pbml0KG1fY2FudmFzLCBOVUxMKTsKKyAgICBtX2NhbnZhcy0+YWRkVmll
dyhzdmdWaWV3KCktPmNhbnZhc1ZpZXcoKSk7Cit9CisKK0tET01Eb2N1bWVudFdyYXBwZXJJbXBs
Ojp+S0RPTURvY3VtZW50V3JhcHBlckltcGwoKQoreworICAgIGRlbGV0ZSBtX3N2Z1BhcnQ7Cit9
CisKK1Rva2VuaXplciAqRE9NOjpLRE9NRG9jdW1lbnRXcmFwcGVySW1wbDo6Y3JlYXRlVG9rZW5p
emVyKCkKK3sKKyAgICByZXR1cm4gbmV3S0RPTVRva2VuaXplcihkb2NQdHIoKSwgbV92aWV3KTsK
K30KKworS1NWRzo6S1NWR1ZpZXcgKktET01Eb2N1bWVudFdyYXBwZXJJbXBsOjpzdmdWaWV3KCkK
K3sKKyAgICByZXR1cm4gbV9zdmdQYXJ0ID8gc3RhdGljX2Nhc3Q8S1NWRzo6S1NWR1ZpZXcgKj4o
bV9zdmdQYXJ0LT52aWV3KCkpIDogTlVMTDsKK30KSW5kZXg6IGRvbV9rZG9tZG9jdW1lbnR3cmFw
cGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaAotLS0g
ZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBk
b21fa2RvbWRvY3VtZW50d3JhcHBlci5oCTE2IFNlcCAyMDA1IDA5OjI0OjQyIC0wMDAwCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgX0RPTV9LRE9NRG9jdW1l
bnRXcmFwcGVySW1wbF9oCisjZGVmaW5lIF9ET01fS0RPTURvY3VtZW50V3JhcHBlckltcGxfaAor
CisjaW5jbHVkZSAia2h0bWwveG1sL2RvbV9kb2NpbXBsLmgiCisKK2NsYXNzIEtDYW52YXM7Citj
bGFzcyBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OworCituYW1lc3BhY2UgS1NWRyB7CisgICAgY2xh
c3MgS1NWR1BhcnQ7CisgICAgY2xhc3MgS1NWR1ZpZXc7Cit9CisKK25hbWVzcGFjZSBET00gewor
CitjbGFzcyBLRE9NRG9jdW1lbnRXcmFwcGVySW1wbCA6IHB1YmxpYyBEb2N1bWVudEltcGwKK3sK
K3B1YmxpYzoKKyAgICBLRE9NRG9jdW1lbnRXcmFwcGVySW1wbChET01JbXBsZW1lbnRhdGlvbklt
cGwgKmksIEtIVE1MVmlldyAqdik7CisgICAgdmlydHVhbCB+S0RPTURvY3VtZW50V3JhcHBlcklt
cGwoKTsKKworICAgIHZpcnR1YWwga2h0bWw6OlRva2VuaXplciAqY3JlYXRlVG9rZW5pemVyKCk7
CisgICAgCisgICAgS1NWRzo6S1NWR1ZpZXcgKnN2Z1ZpZXcoKTsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqcmVuZGVyaW5nRGV2aWNlKCk7CisKKyAgICBL
U1ZHOjpLU1ZHUGFydCAqbV9zdmdQYXJ0OworICAgIEtDYW52YXMgKm1fY2FudmFzOworfTsKKwor
fTsgLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogZG9tX2tkb21ub2RldHJlZXdyYXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRvbV9rZG9tbm9kZXRyZWV3cmFwcGVyLmNwcAotLS0g
ZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuY3BwCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysr
IGRvbV9rZG9tbm9kZXRyZWV3cmFwcGVyLmNwcAkxNiBTZXAgMjAwNSAwOToyMzo1MyAtMDAwMApA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiZG9tX2tkb21u
b2RldHJlZXdyYXBwZXIuaCIKKyNpbmNsdWRlICJkb21fZWxlbWVudGltcGwuaCIKKworI2luY2x1
ZGUgInJlbmRlcl9vYmplY3QuaCIKKyNpbmNsdWRlICJyZW5kZXJfa2NhbnZhc3dyYXBwZXIuaCIK
KworI2luY2x1ZGUgImtkb20vY29yZS9Eb2N1bWVudEltcGwuaCIKKyNpbmNsdWRlICJrc3ZnMi9z
dmcvU1ZHRG9jdW1lbnRJbXBsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBraHRtbDsKK3VzaW5nIG5h
bWVzcGFjZSBET007Cit1c2luZyBuYW1lc3BhY2UgS1NWRzsKKworRE9NOjpLRE9NTm9kZVRyZWVX
cmFwcGVySW1wbDo6S0RPTU5vZGVUcmVlV3JhcHBlckltcGwoRE9NOjpEb2N1bWVudFB0ciAqZG9j
LCBLRE9NOjpEb2N1bWVudEltcGwgKndyYXBwZWQpIDoKKyAgICBET006OkVsZW1lbnRJbXBsKFF1
YWxpZmllZE5hbWUoInN2ZyIsICJzdmciLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSwg
ZG9jKSwgbV93cmFwcGVkRG9jKHdyYXBwZWQpCit7CisgICAgaWYgKG1fd3JhcHBlZERvYykKKyAg
ICAgICAgbV93cmFwcGVkRG9jLT5yZWYoKTsKK30KKworS0RPTU5vZGVUcmVlV3JhcHBlckltcGw6
On5LRE9NTm9kZVRyZWVXcmFwcGVySW1wbCgpCit7CisgICAgaWYgKG1fd3JhcHBlZERvYykKKyAg
ICAgICAgbV93cmFwcGVkRG9jLT5kZXJlZigpOworfQorCit2b2lkIEtET01Ob2RlVHJlZVdyYXBw
ZXJJbXBsOjphdHRhY2goKQoreworICAgIEVsZW1lbnRJbXBsOjphdHRhY2goKTsKKyAgICAKKyAg
ICBpZiAocmVuZGVyZXIoKSkgeworICAgICAgICBSZW5kZXJLQ2FudmFzV3JhcHBlciAqY2FudmFz
V3JhcHBlciA9IHN0YXRpY19jYXN0PFJlbmRlcktDYW52YXNXcmFwcGVyKj4ocmVuZGVyZXIoKSk7
CisgICAgICAgIFNWR0RvY3VtZW50SW1wbCAqc3ZnRG9jID0gc3RhdGljX2Nhc3Q8S1NWRzo6U1ZH
RG9jdW1lbnRJbXBsICo+KG1fd3JhcHBlZERvYyk7CisgICAgICAgIGNhbnZhc1dyYXBwZXItPnNl
dENhbnZhcyhzdmdEb2MtPmNhbnZhcygpKTsKKyAgICB9Cit9CisKK1JlbmRlck9iamVjdCAqS0RP
TU5vZGVUcmVlV3JhcHBlckltcGw6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwg
UmVuZGVyU3R5bGUgKnN0eWxlKQoreworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJLQ2Fu
dmFzV3JhcHBlcih0aGlzKTsKK30KSW5kZXg6IGRvbV9rZG9tbm9kZXRyZWV3cmFwcGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpkaWZmIC1OcHUgZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuaAotLS0gZG9tX2tkb21u
b2RldHJlZXdyYXBwZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb21fa2RvbW5v
ZGV0cmVld3JhcHBlci5oCTE2IFNlcCAyMDA1IDA5OjI0OjEyIC0wMDAwCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgX0RPTV9LRE9NTm9kZVRyZWVXcmFwcGVy
SW1wbF9oCisjZGVmaW5lIF9ET01fS0RPTU5vZGVUcmVlV3JhcHBlckltcGxfaAorCisjaW5jbHVk
ZSAiZG9tX2VsZW1lbnRpbXBsLmgiCisKK2NsYXNzIFJlbmRlckFyZW5hOworCituYW1lc3BhY2Ug
a2h0bWwgeworICAgIGNsYXNzIFJlbmRlck9iamVjdDsKKyAgICBjbGFzcyBSZW5kZXJTdHlsZTsK
K30KKworbmFtZXNwYWNlIEtET00geworICAgIGNsYXNzIERvY3VtZW50SW1wbDsKK307CisKK25h
bWVzcGFjZSBET00geworCitjbGFzcyBLRE9NTm9kZVRyZWVXcmFwcGVySW1wbCA6IHB1YmxpYyBF
bGVtZW50SW1wbAoreworcHVibGljOgorICAgIEtET01Ob2RlVHJlZVdyYXBwZXJJbXBsKERvY3Vt
ZW50UHRyICpkb2MsIEtET006OkRvY3VtZW50SW1wbCAqd3JhcHBlZCk7CisgICAgdmlydHVhbCB+
S0RPTU5vZGVUcmVlV3JhcHBlckltcGwoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGtodG1sOjpSZW5k
ZXJPYmplY3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwga2h0bWw6OlJlbmRl
clN0eWxlICpzdHlsZSk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworCitwcml2
YXRlOgorICAgIEtET006OkRvY3VtZW50SW1wbCAqbV93cmFwcGVkRG9jOworfTsKKworfTsgLy8g
bmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogcmVuZGVyX2tjYW52YXN3cmFwcGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CmRpZmYgLU5wdSByZW5kZXJfa2NhbnZhc3dyYXBwZXIuY3BwCi0tLSByZW5kZXJfa2Nh
bnZhc3dyYXBwZXIuY3BwCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIHJlbmRlcl9rY2Fu
dmFzd3JhcHBlci5jcHAJMTggU2VwIDIwMDUgMTE6MjY6MzUgLTAwMDAKQEAgLTAsMCArMSw5NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgInJlbmRlcl9rY2FudmFzd3JhcHBlci5o
IgorCisjaW5jbHVkZSAia2NhbnZhcy9LQ2FudmFzLmgiCisjaW5jbHVkZSAia2NhbnZhcy9LQ2Fu
dmFzQ29udGFpbmVyLmgiCisjaW5jbHVkZSAia2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJp
bmdEZXZpY2VRdWFydHouaCIKKwordXNpbmcgbmFtZXNwYWNlIGtodG1sOworCitSZW5kZXJLQ2Fu
dmFzV3JhcHBlcjo6UmVuZGVyS0NhbnZhc1dyYXBwZXIoRE9NOjpLRE9NTm9kZVRyZWVXcmFwcGVy
SW1wbCAqbm9kZSkgOiBSZW5kZXJCb3gobm9kZSksIG1fY2FudmFzKDApCit7CisgICAgbV9jb250
ZXh0ID0gbmV3IEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6KCk7Cit9CisKK1JlbmRlcktD
YW52YXNXcmFwcGVyOjp+UmVuZGVyS0NhbnZhc1dyYXBwZXIoKQoreworCit9CisKK3ZvaWQgUmVu
ZGVyS0NhbnZhc1dyYXBwZXI6OmxheW91dCgpCit7ICAgIAorICAgIFFTaXplIGNhbnZhc1NpemUg
PSBtX2NhbnZhcy0+Y2FudmFzU2l6ZSgpOworCisgICAgc2V0V2lkdGgoY2FudmFzU2l6ZS53aWR0
aCgpKTsKKyAgICBzZXRIZWlnaHQoY2FudmFzU2l6ZS5oZWlnaHQoKSk7CisgICAgCisgICAgc2V0
TmVlZHNMYXlvdXQoZmFsc2UpOworfQorCit2b2lkIFJlbmRlcktDYW52YXNXcmFwcGVyOjpwYWlu
dChQYWludEluZm8gJnBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKQoreworICAg
IGlmIChwYWludEluZm8ucC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5wLT5jdXJyZW50Q29udGV4dCgp
OworICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFt
X2NhbnZhcyB8fCAhbV9jYW52YXMtPnJvb3RDb250YWluZXIoKSB8fCAhbV9jYW52YXMtPnJlbmRl
cmluZ0RldmljZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgS1JlbmRlcmluZ0Rldmlj
ZSAqcmVuZGVyaW5nRGV2aWNlID0gbV9jYW52YXMtPnJlbmRlcmluZ0RldmljZSgpOworICAgIAor
ICAgIG1fY29udGV4dC0+c2V0Q0dDb250ZXh0KGNnQ29udGV4dCk7CisgICAgcmVuZGVyaW5nRGV2
aWNlLT5wdXNoQ29udGV4dChtX2NvbnRleHQpOworICAgIAorICAgIENHQ29udGV4dFNhdmVHU3Rh
dGUoY2dDb250ZXh0KTsKKyAgICAvL0NHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBDR0FmZmlu
ZVRyYW5zZm9ybUludmVydChbZHJhd1ZpZXcgdHJhbnNmb3JtRnJvbVZpZXdUb0NhbnZhc10pKTsK
KyAgICAKKyAgICBmbG9hdCB3aGl0ZUNvbG9yWzRdID0gezEsMSwxLDF9OworICAgIENHQ29udGV4
dFNldEZpbGxDb2xvcihjZ0NvbnRleHQsd2hpdGVDb2xvcik7CisgICAgQ0dDb250ZXh0RmlsbFJl
Y3QoY2dDb250ZXh0LENHUmVjdChwYWludEluZm8ucikpOworICAgIAorICAgIFFSZWN0IGRpcnR5
UmVjdCA9IHBhaW50SW5mby5yOyAvL1FSZWN0KFtkcmF3VmlldyBtYXBWaWV3UmVjdFRvQ2FudmFz
OmRpcnR5Vmlld1JlY3RdKTsKKyAgICBtX2NhbnZhcy0+cm9vdENvbnRhaW5lcigpLT5kcmF3KGRp
cnR5UmVjdCk7CisgICAgCisgICAgLy8gcmVzdG9yZSBkcmF3aW5nIHN0YXRlCisgICAgQ0dDb250
ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworICAgIHJlbmRlcmluZ0RldmljZS0+cG9wQ29u
dGV4dCgpOworICAgIG1fY29udGV4dC0+c2V0Q0dDb250ZXh0KE5VTEwpOworfQorCitpbnQgUmVu
ZGVyS0NhbnZhc1dyYXBwZXI6OmludHJpbnNpY1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
MTUwOworfQorCitpbnQgUmVuZGVyS0NhbnZhc1dyYXBwZXI6OmludHJpbnNpY0hlaWdodCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIDE1MDsKK30KSW5kZXg6IHJlbmRlcl9rY2FudmFzd3JhcHBlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KZGlmZiAtTnB1IHJlbmRlcl9rY2FudmFzd3JhcHBlci5oCi0tLSByZW5kZXJf
a2NhbnZhc3dyYXBwZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyByZW5kZXJfa2Nh
bnZhc3dyYXBwZXIuaAkxNiBTZXAgMjAwNSAwOToyNDo1OCAtMDAwMApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJFTkRFUl9LQ0FOVkFTV1JBUFBFUl9ICisj
ZGVmaW5lIFJFTkRFUl9LQ0FOVkFTV1JBUFBFUl9ICisKKyNpbmNsdWRlICJraHRtbC9yZW5kZXJp
bmcvcmVuZGVyX2JveC5oIgorI2luY2x1ZGUgImtodG1sL21pc2MvbG9hZGVyLmgiCisjaW5jbHVk
ZSAia2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9sYXllci5oIgorI2luY2x1ZGUgImRvbV9rZG9tbm9k
ZXRyZWV3cmFwcGVyLmgiCisKK2NsYXNzIEtDYW52YXM7CitjbGFzcyBLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dFF1YXJ0ejsKK2NsYXNzIEtSZW5kZXJpbmdEZXZpY2VRdWFydHo7CisKK25hbWVzcGFj
ZSBraHRtbCB7CisKK2NsYXNzIFJlbmRlcktDYW52YXNXcmFwcGVyIDogcHVibGljIFJlbmRlckJv
eAoreworcHVibGljOgorICAgIFJlbmRlcktDYW52YXNXcmFwcGVyKERPTTo6S0RPTU5vZGVUcmVl
V3JhcHBlckltcGwgKm5vZGUpOworICAgIHZpcnR1YWwgflJlbmRlcktDYW52YXNXcmFwcGVyKCk7
CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAi
UmVuZGVyS0NhbnZhc1dyYXBwZXIiOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyAmaSwgaW50IF90eCwgaW50IF90eSk7Cisg
ICAgCisgICAgdm9pZCBzZXRDYW52YXMoS0NhbnZhcyAqY2FudmFzKSB7IG1fY2FudmFzID0gY2Fu
dmFzOyB9CisgICAgCisgICAgaW50IFJlbmRlcktDYW52YXNXcmFwcGVyOjppbnRyaW5zaWNXaWR0
aCgpIGNvbnN0OworICAgIGludCBSZW5kZXJLQ2FudmFzV3JhcHBlcjo6aW50cmluc2ljSGVpZ2h0
KCkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIEtDYW52YXMgKm1fY2FudmFzOworICAgIEtS
ZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6ICptX2NvbnRleHQ7Cit9OworCit9OyAvLyBuYW1l
c3BhY2UKKworI2VuZGlmCkluZGV4OiB4bWxfa2RvbXRva2VuaXplci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpk
aWZmIC1OcHUgeG1sX2tkb210b2tlbml6ZXIuY3BwCi0tLSB4bWxfa2RvbXRva2VuaXplci5jcHAJ
MSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgeG1sX2tkb210b2tlbml6ZXIuY3BwCTE2IFNl
cCAyMDA1IDA5OjIyOjU5IC0wMDAwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSA8cXN0cmluZy5oPgorCisjaW5jbHVkZSAibG9hZGVyX2NsaWVudC5oIgor
I2luY2x1ZGUgImtodG1sdmlldy5oIgorCisjaW5jbHVkZSAiZG9tX2tkb21kb2N1bWVudHdyYXBw
ZXIuaCIKKyNpbmNsdWRlICJkb21fa2RvbW5vZGV0cmVld3JhcHBlci5oIgorI2luY2x1ZGUgImRv
bV9ub2RlaW1wbC5oIgorCisjaW5jbHVkZSAieG1sX3Rva2VuaXplci5oIgorI2luY2x1ZGUgInht
bF9rZG9tdG9rZW5pemVyLmgiCisKKyNpbmNsdWRlICJrZG9tL2NvcmUvRE9NQ29uZmlndXJhdGlv
bkltcGwuaCIKKyNpbmNsdWRlICJrZG9tL2JhY2tlbmRzL2xpYnhtbC9MaWJYTUxQYXJzZXIuaCIK
KyNpbmNsdWRlICJrZG9tL2NvcmUvRG9jdW1lbnRJbXBsLmgiCisKKyNpbmNsdWRlICJrc3ZnMi9z
dmcvU1ZHRG9jdW1lbnRJbXBsLmgiCisjaW5jbHVkZSAia3N2ZzIvbWlzYy9LU1ZHRG9jdW1lbnRC
dWlsZGVyLmgiCisKKworbmFtZXNwYWNlIERPTSB7CisgICAgY2xhc3MgS0RPTURvY3VtZW50V3Jh
cHBlckltcGw7Cit9OworCituYW1lc3BhY2Uga2h0bWwgeworCitjbGFzcyBUb2tlbml6ZXJTdHJp
bmc7CitjbGFzcyBLRE9NVG9rZW5pemVyIDogcHVibGljIFRva2VuaXplciwgcHVibGljIENhY2hl
ZE9iamVjdENsaWVudAoreworcHVibGljOgorICAgIEtET01Ub2tlbml6ZXIoRE9NOjpEb2N1bWVu
dFB0ciAqLCBLSFRNTFZpZXcgKiA9IDApOworICAgIH5LRE9NVG9rZW5pemVyKCk7CisKKyAgICAv
LyBmcm9tIFRva2VuaXplcgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZShjb25zdCBUb2tlbml6ZXJT
dHJpbmcgJnN0ciwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRPbkhvbGQoYm9vbCBvbkhvbGQpOworICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRp
bmdGb3JTY3JpcHRzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRE9NOjpLRE9NRG9jdW1lbnRX
cmFwcGVySW1wbCAqZG9jdW1lbnRXcmFwcGVyKCk7CisKKyAgICBET006OkRvY3VtZW50UHRyICpt
X2RvYzsKKyAgICBLSFRNTFZpZXcgKm1fdmlldzsKKworICAgIFFTdHJpbmcgbV94bWxDb2RlOwor
fTsKKworfTsgLy8gbmFtZXNwYWNlCisKKwordXNpbmcgbmFtZXNwYWNlIGtodG1sOwordXNpbmcg
bmFtZXNwYWNlIEtTVkc7Cit1c2luZyBuYW1lc3BhY2UgRE9NOworCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitLRE9NVG9rZW5pemVyOjpLRE9NVG9rZW5pemVyKERPTTo6
RG9jdW1lbnRQdHIgKl9kb2MsIEtIVE1MVmlldyAqX3ZpZXcpCisgICAgOiBtX2RvYyhfZG9jKSwg
bV92aWV3KF92aWV3KQoreworICAgIGlmIChtX2RvYykKKyAgICAgICAgbV9kb2MtPnJlZigpOwor
ICAgIAorICAgIC8vRklYTUU6IEtET01Ub2tlbml6ZXIgc2hvdWxkIHVzZSB0aGlzIGluIGEgZmFz
aGlvbiBzaW1pbGlhciB0byBob3cKKyAgICAvL0hUTUxUb2tlbml6ZXIgdXNlcyBsb2FkU3RvcHBl
ZCwgaW4gdGhlIGZ1dHVyZS4KKyAgICBsb2FkU3RvcHBlZCA9IGZhbHNlOworfQorCitLRE9NVG9r
ZW5pemVyOjp+S0RPTVRva2VuaXplcigpCit7CisgICAgaWYgKG1fZG9jKQorICAgICAgICBtX2Rv
Yy0+ZGVyZWYoKTsKK30KKworS0RPTURvY3VtZW50V3JhcHBlckltcGwgKktET01Ub2tlbml6ZXI6
OmRvY3VtZW50V3JhcHBlcigpCit7CisgICAgcmV0dXJuIG1fZG9jID8gc3RhdGljX2Nhc3Q8S0RP
TURvY3VtZW50V3JhcHBlckltcGwgKj4obV9kb2MtPmRvY3VtZW50KCkpIDogTlVMTDsKK30KKwor
dm9pZCBLRE9NVG9rZW5pemVyOjp3cml0ZShjb25zdCBUb2tlbml6ZXJTdHJpbmcgJnMsIGJvb2wg
LyphcHBlbmREYXRhKi8gKQoreworICAgIG1feG1sQ29kZSArPSBzLnRvU3RyaW5nKCk7Cit9CisK
K3ZvaWQgS0RPTVRva2VuaXplcjo6c2V0T25Ib2xkKGJvb2wgb25Ib2xkKQoreworICAgIC8vIFdp
bGwgd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyB3aGVuIHdlIGRvIGluY3JlbWVudGFsIFhNTCBw
YXJzaW5nPworfQorCit2b2lkIEtET01Ub2tlbml6ZXI6OmZpbmlzaCgpCit7CisgICAgS1NWRzo6
RG9jdW1lbnRCdWlsZGVyICpidWlsZGVyID0gbmV3IEtTVkc6OkRvY3VtZW50QnVpbGRlcihkb2N1
bWVudFdyYXBwZXIoKS0+c3ZnVmlldygpKTsKKyAgICBLRE9NOjpMaWJYTUxQYXJzZXIgKnBhcnNl
ciA9IG5ldyBLRE9NOjpMaWJYTUxQYXJzZXIoS1VSTCgpKTsKKyAgICBwYXJzZXItPnNldERvY3Vt
ZW50QnVpbGRlcihidWlsZGVyKTsKKyAgICAKKyAgICBwYXJzZXItPmRvbUNvbmZpZygpLT5zZXRQ
YXJhbWV0ZXIoS0RPTTo6RU5USVRJRVMuaGFuZGxlKCksIGZhbHNlKTsKKyAgICBwYXJzZXItPmRv
bUNvbmZpZygpLT5zZXRQYXJhbWV0ZXIoS0RPTTo6RUxFTUVOVF9DT05URU5UX1dISVRFU1BBQ0Uu
aGFuZGxlKCksIGZhbHNlKTsKKyAgICAKKyAgICAvLyBGZWVkIHRoZSBwYXJzZXIgdGhlIHdob2xl
IGRvY3VtZW50IChoYWNrKQorICAgIHBhcnNlci0+ZG9PbmVTaG90UGFyc2UobV94bWxDb2RlLnV0
ZjgoKSwgbV94bWxDb2RlLmxlbmd0aCgpKTsKKyAgICAKKyAgICBTVkdEb2N1bWVudEltcGwgKnN2
Z0RvYyA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50SW1wbCAqPihwYXJzZXItPmRvY3VtZW50KCkp
OworICAgIE5vZGVJbXBsICp3cmFwcGVkRG9jID0gbmV3IEtET01Ob2RlVHJlZVdyYXBwZXJJbXBs
KG1fZG9jLCBzdmdEb2MpOworICAgIGRlbGV0ZSBwYXJzZXI7IC8vIGJ1aWxkZXIgaXMgb3duZWQg
KGRlbGV0ZWQpIGJ5IHBhcnNlcgorICAgIAorICAgIGlmIChkb2N1bWVudFdyYXBwZXIoKS0+YWRk
Q2hpbGQod3JhcHBlZERvYykpIHsKKyAgICAgICAgS0NhbnZhc1ZpZXcgKnByaW1hcnlWaWV3ID0g
ZG9jdW1lbnRXcmFwcGVyKCktPnN2Z1ZpZXcoKS0+Y2FudmFzVmlldygpOworICAgICAgICBzdmdE
b2MtPnNldENhbnZhc1ZpZXcocHJpbWFyeVZpZXcpOworICAgICAgICBpZiAobV92aWV3ICYmICF3
cmFwcGVkRG9jLT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgd3JhcHBlZERvYy0+YXR0YWNoKCk7
CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZGVsZXRlIHdyYXBwZWREb2M7CisKKyAgICBlbWl0
IGZpbmlzaGVkUGFyc2luZygpOworfQorCisKK2Jvb2wgS0RPTVRva2VuaXplcjo6aXNXYWl0aW5n
Rm9yU2NyaXB0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCituYW1lc3BhY2Ug
a2h0bWwgeworCitUb2tlbml6ZXIgKm5ld0tET01Ub2tlbml6ZXIoRE9NOjpEb2N1bWVudFB0ciAq
ZCwgS0hUTUxWaWV3ICp2KQoreworICAgIHJldHVybiBuZXcgS0RPTVRva2VuaXplcihkLCB2KTsK
K30KKworfTsKSW5kZXg6IHhtbF9rZG9tdG9rZW5pemVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUg
eG1sX2tkb210b2tlbml6ZXIuaAotLS0geG1sX2tkb210b2tlbml6ZXIuaAkxIEphbiAxOTcwIDAw
OjAwOjAwIC0wMDAwCisrKyB4bWxfa2RvbXRva2VuaXplci5oCTE2IFNlcCAyMDA1IDA5OjIyOjQ5
IC0wMDAwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgX1hN
TF9LRE9NVG9rZW5pemVyX2hfCisjZGVmaW5lIF9YTUxfS0RPTVRva2VuaXplcl9oXworCitjbGFz
cyBLSFRNTFZpZXc7CisKK25hbWVzcGFjZSBET00geworICAgIGNsYXNzIERvY3VtZW50UHRyOwor
fQorCituYW1lc3BhY2Uga2h0bWwgeworICAgIGNsYXNzIFRva2VuaXplcjsKKyAgICAKKyAgICBU
b2tlbml6ZXIgKm5ld0tET01Ub2tlbml6ZXIoRE9NOjpEb2N1bWVudFB0ciAqLCBLSFRNTFZpZXcg
KiA9IDApOworfTsgLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogRHJhd0RvY3VtZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L1dlYkNvcmUrU1ZHL0Ry
YXdEb2N1bWVudC5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUg
RHJhd0RvY3VtZW50Lm1tCi0tLSBEcmF3RG9jdW1lbnQubW0JOCBTZXAgMjAwNSAwODowMzowNyAt
MDAwMAkxLjUKKysrIERyYXdEb2N1bWVudC5tbQkxOCBTZXAgMjAwNSAxMTozMTowOCAtMDAwMApA
QCAtMjU3LDcgKzI1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLU1ZHOwogLSAoRHJhd1ZpZXcgKilw
cmltYXJ5VmlldwogewogICAgIGlmIChfcHJpdmF0ZS0+cHJpbWFyeVZpZXcpCi0gICAgICAgIHJl
dHVybiBfcHJpdmF0ZS0+cHJpbWFyeVZpZXctPnZpZXcoKTsKKyAgICAgICAgcmV0dXJuIChEcmF3
VmlldyAqKV9wcml2YXRlLT5wcmltYXJ5Vmlldy0+dmlldygpOwogICAgIHJldHVybiBuaWw7CiB9
CiAK
</data>
<flag name="review"
          id="582"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3979</attachid>
            <date>2005-09-21 04:21:42 -0700</date>
            <delta_ts>2005-09-22 15:08:26 -0700</delta_ts>
            <desc>Final patch (fixed leaks, uses QPainter, paints less, etc.)</desc>
            <filename>svg-in-safari.patch</filename>
            <type>text/plain</type>
            <size>45344</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUrU1ZHL2RvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiBXZWJDb3JlK1NWRy9kb21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAKZGlmZiAt
TiBXZWJDb3JlK1NWRy9kb21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAKLS0tIFdlYkNvcmUrU1ZH
L2RvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmNwcAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisr
KyBXZWJDb3JlK1NWRy9kb21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAJMjEgU2VwIDIwMDUgMTE6
MjI6NDUgLTAwMDAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKKyNpbmNs
dWRlICJkb21fa2RvbWRvY3VtZW50d3JhcHBlci5oIgorI2luY2x1ZGUgInhtbF9rZG9tdG9rZW5p
emVyLmgiCisKKyNpbmNsdWRlICJLV1FLU1ZHVmlldy5oIgorI2luY2x1ZGUgIktXUUtTVkdQYXJ0
LmgiCisKKyNpbmNsdWRlICJrY2FudmFzL0tDYW52YXMuaCIKKyNpbmNsdWRlICJrY2FudmFzL2Rl
dmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgorCit1c2luZyBuYW1lc3BhY2Ug
a2h0bWw7Cit1c2luZyBuYW1lc3BhY2UgRE9NOworCitLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICpL
RE9NRG9jdW1lbnRXcmFwcGVySW1wbDo6cmVuZGVyaW5nRGV2aWNlKCkKK3sKKyAgICBzdGF0aWMg
S1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqX19xdWFydHpSZW5kZXJpbmdEZXZpY2UgPSBuaWw7Cisg
ICAgaWYgKCFfX3F1YXJ0elJlbmRlcmluZ0RldmljZSkKKyAgICAgICAgX19xdWFydHpSZW5kZXJp
bmdEZXZpY2UgPSBuZXcgS1JlbmRlcmluZ0RldmljZVF1YXJ0eigpOworICAgIHJldHVybiBfX3F1
YXJ0elJlbmRlcmluZ0RldmljZTsKK30KKworS0RPTURvY3VtZW50V3JhcHBlckltcGw6OktET01E
b2N1bWVudFdyYXBwZXJJbXBsKERPTUltcGxlbWVudGF0aW9uSW1wbCAqaSwgS0hUTUxWaWV3ICp2
KSA6IERvY3VtZW50SW1wbChpLHYpCit7CisgICAgbV9zdmdQYXJ0ID0gbmV3IEtTVkc6OktTVkdQ
YXJ0KCk7CisgICAgbV9jYW52YXMgPSBuZXcgS0NhbnZhcyhLRE9NRG9jdW1lbnRXcmFwcGVySW1w
bDo6cmVuZGVyaW5nRGV2aWNlKCkpOworICAgIHN2Z1ZpZXcoKS0+Y2FudmFzVmlldygpLT5pbml0
KG1fY2FudmFzLCBOVUxMKTsKKyAgICBtX2NhbnZhcy0+YWRkVmlldyhzdmdWaWV3KCktPmNhbnZh
c1ZpZXcoKSk7Cit9CisKK0tET01Eb2N1bWVudFdyYXBwZXJJbXBsOjp+S0RPTURvY3VtZW50V3Jh
cHBlckltcGwoKQoreworICAgIGRlbGV0ZSBtX3N2Z1BhcnQ7CisgICAgZGVsZXRlIG1fY2FudmFz
OworfQorCitUb2tlbml6ZXIgKkRPTTo6S0RPTURvY3VtZW50V3JhcHBlckltcGw6OmNyZWF0ZVRv
a2VuaXplcigpCit7CisgICAgcmV0dXJuIG5ld0tET01Ub2tlbml6ZXIoZG9jUHRyKCksIG1fdmll
dyk7Cit9CisKK0tTVkc6OktTVkdWaWV3ICpLRE9NRG9jdW1lbnRXcmFwcGVySW1wbDo6c3ZnVmll
dygpCit7CisgICAgcmV0dXJuIG1fc3ZnUGFydCA/IHN0YXRpY19jYXN0PEtTVkc6OktTVkdWaWV3
ICo+KG1fc3ZnUGFydC0+dmlldygpKSA6IE5VTEw7Cit9CkluZGV4OiBXZWJDb3JlK1NWRy9kb21f
a2RvbWRvY3VtZW50d3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFdlYkNvcmUrU1ZHL2Rv
bV9rZG9tZG9jdW1lbnR3cmFwcGVyLmgKZGlmZiAtTiBXZWJDb3JlK1NWRy9kb21fa2RvbWRvY3Vt
ZW50d3JhcHBlci5oCi0tLSBXZWJDb3JlK1NWRy9kb21fa2RvbWRvY3VtZW50d3JhcHBlci5oCTEg
SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFdlYkNvcmUrU1ZHL2RvbV9rZG9tZG9jdW1lbnR3
cmFwcGVyLmgJMjEgU2VwIDIwMDUgMTE6MjI6NDUgLTAwMDAKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBfRE9NX0tET01Eb2N1bWVudFdyYXBwZXJJbXBsX2gK
KyNkZWZpbmUgX0RPTV9LRE9NRG9jdW1lbnRXcmFwcGVySW1wbF9oCisKKyNpbmNsdWRlICJraHRt
bC94bWwvZG9tX2RvY2ltcGwuaCIKKworY2xhc3MgS0NhbnZhczsKK2NsYXNzIEtSZW5kZXJpbmdE
ZXZpY2VRdWFydHo7CisKK25hbWVzcGFjZSBLU1ZHIHsKKyAgICBjbGFzcyBLU1ZHUGFydDsKKyAg
ICBjbGFzcyBLU1ZHVmlldzsKK30KKworbmFtZXNwYWNlIERPTSB7CisKK2NsYXNzIEtET01Eb2N1
bWVudFdyYXBwZXJJbXBsIDogcHVibGljIERvY3VtZW50SW1wbAoreworcHVibGljOgorICAgIEtE
T01Eb2N1bWVudFdyYXBwZXJJbXBsKERPTUltcGxlbWVudGF0aW9uSW1wbCAqaSwgS0hUTUxWaWV3
ICp2KTsKKyAgICB2aXJ0dWFsIH5LRE9NRG9jdW1lbnRXcmFwcGVySW1wbCgpOworCisgICAgdmly
dHVhbCBraHRtbDo6VG9rZW5pemVyICpjcmVhdGVUb2tlbml6ZXIoKTsKKyAgICAKKyAgICBLU1ZH
OjpLU1ZHVmlldyAqc3ZnVmlldygpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBLUmVuZGVyaW5n
RGV2aWNlUXVhcnR6ICpyZW5kZXJpbmdEZXZpY2UoKTsKKworICAgIEtTVkc6OktTVkdQYXJ0ICpt
X3N2Z1BhcnQ7CisgICAgS0NhbnZhcyAqbV9jYW52YXM7Cit9OworCit9OyAvLyBuYW1lc3BhY2UK
KworI2VuZGlmCkluZGV4OiBXZWJDb3JlK1NWRy9kb21fa2RvbW5vZGV0cmVld3JhcHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogV2ViQ29yZStTVkcvZG9tX2tkb21ub2RldHJlZXdyYXBwZXIu
Y3BwCmRpZmYgLU4gV2ViQ29yZStTVkcvZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuY3BwCi0tLSBX
ZWJDb3JlK1NWRy9kb21fa2RvbW5vZGV0cmVld3JhcHBlci5jcHAJMSBKYW4gMTk3MCAwMDowMDow
MCAtMDAwMAorKysgV2ViQ29yZStTVkcvZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuY3BwCTIxIFNl
cCAyMDA1IDExOjIyOjQ2IC0wMDAwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJkb21fa2RvbW5vZGV0cmVld3JhcHBlci5oIgorI2luY2x1ZGUgImRvbV9l
bGVtZW50aW1wbC5oIgorCisjaW5jbHVkZSAicmVuZGVyX29iamVjdC5oIgorI2luY2x1ZGUgInJl
bmRlcl9rY2FudmFzd3JhcHBlci5oIgorCisjaW5jbHVkZSAia2RvbS9jb3JlL0RvY3VtZW50SW1w
bC5oIgorI2luY2x1ZGUgImtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGtodG1sOwordXNpbmcgbmFtZXNwYWNlIERPTTsKK3VzaW5nIG5hbWVzcGFjZSBLU1ZH
OworCitET006OktET01Ob2RlVHJlZVdyYXBwZXJJbXBsOjpLRE9NTm9kZVRyZWVXcmFwcGVySW1w
bChET006OkRvY3VtZW50UHRyICpkb2MsIEtET006OkRvY3VtZW50SW1wbCAqd3JhcHBlZCkgOgor
ICAgIERPTTo6RWxlbWVudEltcGwoUXVhbGlmaWVkTmFtZSgic3ZnIiwgInN2ZyIsICJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIpLCBkb2MpLCBtX3dyYXBwZWREb2Mod3JhcHBlZCkKK3sKKyAg
ICBpZiAobV93cmFwcGVkRG9jKQorICAgICAgICBtX3dyYXBwZWREb2MtPnJlZigpOworfQorCitL
RE9NTm9kZVRyZWVXcmFwcGVySW1wbDo6fktET01Ob2RlVHJlZVdyYXBwZXJJbXBsKCkKK3sKKyAg
ICBpZiAobV93cmFwcGVkRG9jKQorICAgICAgICBtX3dyYXBwZWREb2MtPmRlcmVmKCk7Cit9CisK
K3ZvaWQgS0RPTU5vZGVUcmVlV3JhcHBlckltcGw6OmF0dGFjaCgpCit7CisgICAgRWxlbWVudElt
cGw6OmF0dGFjaCgpOworICAgIAorICAgIGlmIChyZW5kZXJlcigpKSB7CisgICAgICAgIFJlbmRl
cktDYW52YXNXcmFwcGVyICpjYW52YXNXcmFwcGVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyS0NhbnZh
c1dyYXBwZXIqPihyZW5kZXJlcigpKTsKKyAgICAgICAgU1ZHRG9jdW1lbnRJbXBsICpzdmdEb2Mg
PSBzdGF0aWNfY2FzdDxLU1ZHOjpTVkdEb2N1bWVudEltcGwgKj4obV93cmFwcGVkRG9jKTsKKyAg
ICAgICAgY2FudmFzV3JhcHBlci0+c2V0Q2FudmFzKHN2Z0RvYy0+Y2FudmFzKCkpOworICAgIH0K
K30KKworUmVuZGVyT2JqZWN0ICpLRE9NTm9kZVRyZWVXcmFwcGVySW1wbDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBSZW5kZXJTdHlsZSAqc3R5bGUpCit7CisgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlcktDYW52YXNXcmFwcGVyKHRoaXMpOworfQpJbmRleDogV2ViQ29y
ZStTVkcvZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBXZWJD
b3JlK1NWRy9kb21fa2RvbW5vZGV0cmVld3JhcHBlci5oCmRpZmYgLU4gV2ViQ29yZStTVkcvZG9t
X2tkb21ub2RldHJlZXdyYXBwZXIuaAotLS0gV2ViQ29yZStTVkcvZG9tX2tkb21ub2RldHJlZXdy
YXBwZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBXZWJDb3JlK1NWRy9kb21fa2Rv
bW5vZGV0cmVld3JhcHBlci5oCTIxIFNlcCAyMDA1IDExOjIyOjQ2IC0wMDAwCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgX0RPTV9LRE9NTm9kZVRyZWVXcmFw
cGVySW1wbF9oCisjZGVmaW5lIF9ET01fS0RPTU5vZGVUcmVlV3JhcHBlckltcGxfaAorCisjaW5j
bHVkZSAiZG9tX2VsZW1lbnRpbXBsLmgiCisKK2NsYXNzIFJlbmRlckFyZW5hOworCituYW1lc3Bh
Y2Uga2h0bWwgeworICAgIGNsYXNzIFJlbmRlck9iamVjdDsKKyAgICBjbGFzcyBSZW5kZXJTdHls
ZTsKK30KKworbmFtZXNwYWNlIEtET00geworICAgIGNsYXNzIERvY3VtZW50SW1wbDsKK307CisK
K25hbWVzcGFjZSBET00geworCitjbGFzcyBLRE9NTm9kZVRyZWVXcmFwcGVySW1wbCA6IHB1Ymxp
YyBFbGVtZW50SW1wbAoreworcHVibGljOgorICAgIEtET01Ob2RlVHJlZVdyYXBwZXJJbXBsKERv
Y3VtZW50UHRyICpkb2MsIEtET006OkRvY3VtZW50SW1wbCAqd3JhcHBlZCk7CisgICAgdmlydHVh
bCB+S0RPTU5vZGVUcmVlV3JhcHBlckltcGwoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGtodG1sOjpS
ZW5kZXJPYmplY3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwga2h0bWw6OlJl
bmRlclN0eWxlICpzdHlsZSk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworCitw
cml2YXRlOgorICAgIEtET006OkRvY3VtZW50SW1wbCAqbV93cmFwcGVkRG9jOworfTsKKworfTsg
Ly8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZStTVkcvcmVuZGVyX2tjYW52YXN3
cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBXZWJDb3JlK1NWRy9yZW5kZXJfa2NhbnZh
c3dyYXBwZXIuY3BwCmRpZmYgLU4gV2ViQ29yZStTVkcvcmVuZGVyX2tjYW52YXN3cmFwcGVyLmNw
cAotLS0gV2ViQ29yZStTVkcvcmVuZGVyX2tjYW52YXN3cmFwcGVyLmNwcAkxIEphbiAxOTcwIDAw
OjAwOjAwIC0wMDAwCisrKyBXZWJDb3JlK1NWRy9yZW5kZXJfa2NhbnZhc3dyYXBwZXIuY3BwCTIx
IFNlcCAyMDA1IDExOjIyOjQ2IC0wMDAwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJyZW5kZXJfa2NhbnZhc3dyYXBwZXIuaCIKKworI2luY2x1ZGUgImtj
YW52YXMvS0NhbnZhcy5oIgorI2luY2x1ZGUgImtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5oIgor
I2luY2x1ZGUgImtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGtodG1sOworCitSZW5kZXJLQ2FudmFzV3JhcHBlcjo6UmVuZGVyS0NhbnZhc1dyYXBw
ZXIoRE9NOjpLRE9NTm9kZVRyZWVXcmFwcGVySW1wbCAqbm9kZSkgOiBSZW5kZXJSZXBsYWNlZChu
b2RlKSwgbV9jYW52YXMoMCkKK3sKK30KKworUmVuZGVyS0NhbnZhc1dyYXBwZXI6On5SZW5kZXJL
Q2FudmFzV3JhcHBlcigpCit7Cit9CisKK3ZvaWQgUmVuZGVyS0NhbnZhc1dyYXBwZXI6OmxheW91
dCgpCit7CisgICAgUVNpemUgY2FudmFzU2l6ZSA9IG1fY2FudmFzLT5jYW52YXNTaXplKCk7Cisg
ICAgCisgICAgLy8gdGhpcyBzaG91bGQgZ28gc29tZXdoZXJlIGluIGtzdmcyCisgICAgaWYgKChj
YW52YXNTaXplID09IFFTaXplKC0xLC0xKSkgJiYgbV9jYW52YXMtPnJvb3RDb250YWluZXIoKSkg
eworICAgICAgICBRUmVjdCBjYW52YXNCb3VuZHMgPSBtX2NhbnZhcy0+cm9vdENvbnRhaW5lcigp
LT5iYm94KCk7CisgICAgICAgIGNhbnZhc1NpemUgPSBRU2l6ZShhYnMoY2FudmFzQm91bmRzLngo
KSkgKyBjYW52YXNCb3VuZHMud2lkdGgoKSwgYWJzKGNhbnZhc0JvdW5kcy55KCkpICsgY2FudmFz
Qm91bmRzLmhlaWdodCgpKTsKKyAgICAgICAgbV9jYW52YXMtPnNldENhbnZhc1NpemUoY2FudmFz
U2l6ZSk7CisgICAgfQorCisgICAgc2V0V2lkdGgoY2FudmFzU2l6ZS53aWR0aCgpKTsKKyAgICBz
ZXRIZWlnaHQoY2FudmFzU2l6ZS5oZWlnaHQoKSk7CisgICAgCisgICAgc2V0TmVlZHNMYXlvdXQo
ZmFsc2UpOworfQorCit2b2lkIFJlbmRlcktDYW52YXNXcmFwcGVyOjpwYWludChQYWludEluZm8g
JnBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKQoreworICAgIGlmIChwYWludElu
Zm8ucC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHBhaW50
SW5mby5waGFzZSA9PSBQYWludEFjdGlvbkJsb2NrQmFja2dyb3VuZCkgeworICAgICAgICBwYWlu
dFJvb3RCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhcmVudFgsIHBhcmVudFkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmICghUmVuZGVyUmVwbGFjZWQ6OnNob3VsZFBhaW50KHBh
aW50SW5mbywgcGFyZW50WCwgcGFyZW50WSkgfHwgKHBhaW50SW5mby5waGFzZSAhPSBQYWludEFj
dGlvbkZvcmVncm91bmQpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFtX2NhbnZh
cyB8fCAhbV9jYW52YXMtPnJvb3RDb250YWluZXIoKSB8fCAhbV9jYW52YXMtPnJlbmRlcmluZ0Rl
dmljZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgS1JlbmRlcmluZ0RldmljZSAqcmVu
ZGVyaW5nRGV2aWNlID0gbV9jYW52YXMtPnJlbmRlcmluZ0RldmljZSgpOworICAgIHJlbmRlcmlu
Z0RldmljZS0+cHVzaENvbnRleHQocGFpbnRJbmZvLnAtPnJlbmRlcmluZ0RldmljZUNvbnRleHQo
KSk7CisgICAgcGFpbnRJbmZvLnAtPnNhdmUoKTsKKworICAgIFFSZWN0IGRpcnR5UmVjdCA9IHBh
aW50SW5mby5yOyAvL1FSZWN0KFtkcmF3VmlldyBtYXBWaWV3UmVjdFRvQ2FudmFzOmRpcnR5Vmll
d1JlY3RdKTsKKyAgICBtX2NhbnZhcy0+cm9vdENvbnRhaW5lcigpLT5kcmF3KGRpcnR5UmVjdCk7
CisgICAgCisgICAgLy8gcmVzdG9yZSBkcmF3aW5nIHN0YXRlCisgICAgcGFpbnRJbmZvLnAtPnJl
c3RvcmUoKTsKKyAgICByZW5kZXJpbmdEZXZpY2UtPnBvcENvbnRleHQoKTsKK30KKworaW50IFJl
bmRlcktDYW52YXNXcmFwcGVyOjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IDE1MDsKK30KKworaW50IFJlbmRlcktDYW52YXNXcmFwcGVyOjppbnRyaW5zaWNIZWlnaHQoKSBj
b25zdAoreworICAgIHJldHVybiAxNTA7Cit9CkluZGV4OiBXZWJDb3JlK1NWRy9yZW5kZXJfa2Nh
bnZhc3dyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBXZWJDb3JlK1NWRy9yZW5kZXJfa2Nh
bnZhc3dyYXBwZXIuaApkaWZmIC1OIFdlYkNvcmUrU1ZHL3JlbmRlcl9rY2FudmFzd3JhcHBlci5o
Ci0tLSBXZWJDb3JlK1NWRy9yZW5kZXJfa2NhbnZhc3dyYXBwZXIuaAkxIEphbiAxOTcwIDAwOjAw
OjAwIC0wMDAwCisrKyBXZWJDb3JlK1NWRy9yZW5kZXJfa2NhbnZhc3dyYXBwZXIuaAkyMSBTZXAg
MjAwNSAxMToyMjo0NiAtMDAwMApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIFJFTkRFUl9LQ0FOVkFTV1JBUFBFUl9ICisjZGVmaW5lIFJFTkRFUl9LQ0FOVkFT
V1JBUFBFUl9ICisKKyNpbmNsdWRlICJraHRtbC9taXNjL2xvYWRlci5oIgorI2luY2x1ZGUgImto
dG1sL3JlbmRlcmluZy9yZW5kZXJfcmVwbGFjZWQuaCIKKyNpbmNsdWRlICJkb21fa2RvbW5vZGV0
cmVld3JhcHBlci5oIgorCitjbGFzcyBLQ2FudmFzOworCituYW1lc3BhY2Uga2h0bWwgeworCitj
bGFzcyBSZW5kZXJLQ2FudmFzV3JhcHBlciA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZAoreworcHVi
bGljOgorICAgIFJlbmRlcktDYW52YXNXcmFwcGVyKERPTTo6S0RPTU5vZGVUcmVlV3JhcHBlcklt
cGwgKm5vZGUpOworICAgIHZpcnR1YWwgflJlbmRlcktDYW52YXNXcmFwcGVyKCk7CisKKyAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIgKnJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyS0Nh
bnZhc1dyYXBwZXIiOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyAmaSwgaW50IF90eCwgaW50IF90eSk7CisgICAgCisgICAg
dm9pZCBzZXRDYW52YXMoS0NhbnZhcyAqY2FudmFzKSB7IG1fY2FudmFzID0gY2FudmFzOyB9Cisg
ICAgCisgICAgaW50IFJlbmRlcktDYW52YXNXcmFwcGVyOjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0
OworICAgIGludCBSZW5kZXJLQ2FudmFzV3JhcHBlcjo6aW50cmluc2ljSGVpZ2h0KCkgY29uc3Q7
CisgICAgCitwcml2YXRlOgorICAgIEtDYW52YXMgKm1fY2FudmFzOworfTsKKworfTsgLy8gbmFt
ZXNwYWNlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZStTVkcveG1sX2tkb210b2tlbml6ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IFdlYkNvcmUrU1ZHL3htbF9rZG9tdG9rZW5pemVyLmNwcApk
aWZmIC1OIFdlYkNvcmUrU1ZHL3htbF9rZG9tdG9rZW5pemVyLmNwcAotLS0gV2ViQ29yZStTVkcv
eG1sX2tkb210b2tlbml6ZXIuY3BwCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFdlYkNv
cmUrU1ZHL3htbF9rZG9tdG9rZW5pemVyLmNwcAkyMSBTZXAgMjAwNSAxMToyMjo0NiAtMDAwMApA
QCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgPHFzdHJpbmcu
aD4KKworI2luY2x1ZGUgImxvYWRlcl9jbGllbnQuaCIKKyNpbmNsdWRlICJraHRtbHZpZXcuaCIK
KworI2luY2x1ZGUgImRvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmgiCisjaW5jbHVkZSAiZG9tX2tk
b21ub2RldHJlZXdyYXBwZXIuaCIKKyNpbmNsdWRlICJkb21fbm9kZWltcGwuaCIKKworI2luY2x1
ZGUgInhtbF90b2tlbml6ZXIuaCIKKyNpbmNsdWRlICJ4bWxfa2RvbXRva2VuaXplci5oIgorCisj
aW5jbHVkZSAia2RvbS9jb3JlL0RPTUNvbmZpZ3VyYXRpb25JbXBsLmgiCisjaW5jbHVkZSAia2Rv
bS9iYWNrZW5kcy9saWJ4bWwvTGliWE1MUGFyc2VyLmgiCisjaW5jbHVkZSAia2RvbS9jb3JlL0Rv
Y3VtZW50SW1wbC5oIgorCisjaW5jbHVkZSAia3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5oIgor
I2luY2x1ZGUgImtzdmcyL21pc2MvS1NWR0RvY3VtZW50QnVpbGRlci5oIgorCisKK25hbWVzcGFj
ZSBET00geworICAgIGNsYXNzIEtET01Eb2N1bWVudFdyYXBwZXJJbXBsOworfTsKKworbmFtZXNw
YWNlIGtodG1sIHsKKworY2xhc3MgVG9rZW5pemVyU3RyaW5nOworY2xhc3MgS0RPTVRva2VuaXpl
ciA6IHB1YmxpYyBUb2tlbml6ZXIsIHB1YmxpYyBDYWNoZWRPYmplY3RDbGllbnQKK3sKK3B1Ymxp
YzoKKyAgICBLRE9NVG9rZW5pemVyKERPTTo6RG9jdW1lbnRQdHIgKiwgS0hUTUxWaWV3ICogPSAw
KTsKKyAgICB+S0RPTVRva2VuaXplcigpOworCisgICAgLy8gZnJvbSBUb2tlbml6ZXIKKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGUoY29uc3QgVG9rZW5pemVyU3RyaW5nICZzdHIsIGJvb2wpOworICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T25Ib2xkKGJvb2wg
b25Ib2xkKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIERPTTo6S0RPTURvY3VtZW50V3JhcHBlckltcGwgKmRvY3VtZW50V3Jh
cHBlcigpOworCisgICAgRE9NOjpEb2N1bWVudFB0ciAqbV9kb2M7CisgICAgS0hUTUxWaWV3ICpt
X3ZpZXc7CisKKyAgICBRU3RyaW5nIG1feG1sQ29kZTsKK307CisKK307IC8vIG5hbWVzcGFjZQor
CisKK3VzaW5nIG5hbWVzcGFjZSBraHRtbDsKK3VzaW5nIG5hbWVzcGFjZSBLU1ZHOwordXNpbmcg
bmFtZXNwYWNlIERPTTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
S0RPTVRva2VuaXplcjo6S0RPTVRva2VuaXplcihET006OkRvY3VtZW50UHRyICpfZG9jLCBLSFRN
TFZpZXcgKl92aWV3KQorICAgIDogbV9kb2MoX2RvYyksIG1fdmlldyhfdmlldykKK3sKKyAgICBp
ZiAobV9kb2MpCisgICAgICAgIG1fZG9jLT5yZWYoKTsKKyAgICAKKyAgICAvL0ZJWE1FOiBLRE9N
VG9rZW5pemVyIHNob3VsZCB1c2UgdGhpcyBpbiBhIGZhc2hpb24gc2ltaWxpYXIgdG8gaG93Cisg
ICAgLy9IVE1MVG9rZW5pemVyIHVzZXMgbG9hZFN0b3BwZWQsIGluIHRoZSBmdXR1cmUuCisgICAg
bG9hZFN0b3BwZWQgPSBmYWxzZTsKK30KKworS0RPTVRva2VuaXplcjo6fktET01Ub2tlbml6ZXIo
KQoreworICAgIGlmIChtX2RvYykKKyAgICAgICAgbV9kb2MtPmRlcmVmKCk7Cit9CisKK0tET01E
b2N1bWVudFdyYXBwZXJJbXBsICpLRE9NVG9rZW5pemVyOjpkb2N1bWVudFdyYXBwZXIoKQorewor
ICAgIHJldHVybiBtX2RvYyA/IHN0YXRpY19jYXN0PEtET01Eb2N1bWVudFdyYXBwZXJJbXBsICo+
KG1fZG9jLT5kb2N1bWVudCgpKSA6IE5VTEw7Cit9CisKK3ZvaWQgS0RPTVRva2VuaXplcjo6d3Jp
dGUoY29uc3QgVG9rZW5pemVyU3RyaW5nICZzLCBib29sIC8qYXBwZW5kRGF0YSovICkKK3sKKyAg
ICBtX3htbENvZGUgKz0gcy50b1N0cmluZygpOworfQorCit2b2lkIEtET01Ub2tlbml6ZXI6OnNl
dE9uSG9sZChib29sIG9uSG9sZCkKK3sKKyAgICAvLyBXaWxsIHdlIG5lZWQgdG8gaW1wbGVtZW50
IHRoaXMgd2hlbiB3ZSBkbyBpbmNyZW1lbnRhbCBYTUwgcGFyc2luZz8KK30KKwordm9pZCBLRE9N
VG9rZW5pemVyOjpmaW5pc2goKQoreworICAgIEtTVkc6OkRvY3VtZW50QnVpbGRlciAqYnVpbGRl
ciA9IG5ldyBLU1ZHOjpEb2N1bWVudEJ1aWxkZXIoZG9jdW1lbnRXcmFwcGVyKCktPnN2Z1ZpZXco
KSk7CisgICAgS0RPTTo6TGliWE1MUGFyc2VyICpwYXJzZXIgPSBuZXcgS0RPTTo6TGliWE1MUGFy
c2VyKEtVUkwoKSk7CisgICAgcGFyc2VyLT5zZXREb2N1bWVudEJ1aWxkZXIoYnVpbGRlcik7Cisg
ICAgCisgICAgcGFyc2VyLT5kb21Db25maWcoKS0+c2V0UGFyYW1ldGVyKEtET006OkVOVElUSUVT
LmhhbmRsZSgpLCBmYWxzZSk7CisgICAgcGFyc2VyLT5kb21Db25maWcoKS0+c2V0UGFyYW1ldGVy
KEtET006OkVMRU1FTlRfQ09OVEVOVF9XSElURVNQQUNFLmhhbmRsZSgpLCBmYWxzZSk7CisgICAg
CisgICAgLy8gRmVlZCB0aGUgcGFyc2VyIHRoZSB3aG9sZSBkb2N1bWVudCAoaGFjaykKKyAgICBw
YXJzZXItPmRvT25lU2hvdFBhcnNlKG1feG1sQ29kZS51dGY4KCksIG1feG1sQ29kZS5sZW5ndGgo
KSk7CisgICAgCisgICAgU1ZHRG9jdW1lbnRJbXBsICpzdmdEb2MgPSBzdGF0aWNfY2FzdDxTVkdE
b2N1bWVudEltcGwgKj4ocGFyc2VyLT5kb2N1bWVudCgpKTsKKyAgICBOb2RlSW1wbCAqd3JhcHBl
ZERvYyA9IG5ldyBLRE9NTm9kZVRyZWVXcmFwcGVySW1wbChtX2RvYywgc3ZnRG9jKTsKKyAgICBk
ZWxldGUgcGFyc2VyOyAvLyBidWlsZGVyIGlzIG93bmVkIChkZWxldGVkKSBieSBwYXJzZXIKKyAg
ICAKKyAgICBpZiAoZG9jdW1lbnRXcmFwcGVyKCktPmFkZENoaWxkKHdyYXBwZWREb2MpKSB7Cisg
ICAgICAgIEtDYW52YXNWaWV3ICpwcmltYXJ5VmlldyA9IGRvY3VtZW50V3JhcHBlcigpLT5zdmdW
aWV3KCktPmNhbnZhc1ZpZXcoKTsKKyAgICAgICAgc3ZnRG9jLT5zZXRDYW52YXNWaWV3KHByaW1h
cnlWaWV3KTsKKyAgICAgICAgaWYgKG1fdmlldyAmJiAhd3JhcHBlZERvYy0+YXR0YWNoZWQoKSkK
KyAgICAgICAgICAgIHdyYXBwZWREb2MtPmF0dGFjaCgpOworICAgIH0KKyAgICBlbHNlCisgICAg
ICAgIGRlbGV0ZSB3cmFwcGVkRG9jOworCisgICAgZW1pdCBmaW5pc2hlZFBhcnNpbmcoKTsKK30K
KworCitib29sIEtET01Ub2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdAorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKworbmFtZXNwYWNlIGtodG1sIHsKKworVG9rZW5pemVyICpu
ZXdLRE9NVG9rZW5pemVyKERPTTo6RG9jdW1lbnRQdHIgKmQsIEtIVE1MVmlldyAqdikKK3sKKyAg
ICByZXR1cm4gbmV3IEtET01Ub2tlbml6ZXIoZCwgdik7Cit9CisKK307CkluZGV4OiBXZWJDb3Jl
K1NWRy94bWxfa2RvbXRva2VuaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFdlYkNvcmUrU1ZH
L3htbF9rZG9tdG9rZW5pemVyLmgKZGlmZiAtTiBXZWJDb3JlK1NWRy94bWxfa2RvbXRva2VuaXpl
ci5oCi0tLSBXZWJDb3JlK1NWRy94bWxfa2RvbXRva2VuaXplci5oCTEgSmFuIDE5NzAgMDA6MDA6
MDAgLTAwMDAKKysrIFdlYkNvcmUrU1ZHL3htbF9rZG9tdG9rZW5pemVyLmgJMjEgU2VwIDIwMDUg
MTE6MjI6NDYgLTAwMDAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBfWE1MX0tET01Ub2tlbml6ZXJfaF8KKyNkZWZpbmUgX1hNTF9LRE9NVG9rZW5pemVyX2hf
CisKK2NsYXNzIEtIVE1MVmlldzsKKworbmFtZXNwYWNlIERPTSB7CisgICAgY2xhc3MgRG9jdW1l
bnRQdHI7Cit9CisKK25hbWVzcGFjZSBraHRtbCB7CisgICAgY2xhc3MgVG9rZW5pemVyOworICAg
IAorICAgIFRva2VuaXplciAqbmV3S0RPTVRva2VuaXplcihET006OkRvY3VtZW50UHRyICosIEtI
VE1MVmlldyAqID0gMCk7Cit9OyAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjI1CmRpZmYgLXAgLXUgLXIxLjI1IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTIxIFNlcCAyMDA1
IDAwOjI0OjEyIC0wMDAwCTEuMjUKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkyMSBTZXAgMjAwNSAxMToyMzoxMiAtMDAwMApAQCAtMjI4OSw3ICsyMjg5LDE1IEBACiAJCUE4
QzBGRkZGMDg5NzAxRkMwMEJBNTExNCAvKiBRdWFydHpTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCNzcwODk3MDFGODAwQkE1MTE0
IC8qIFF1YXJ0elN1cHBvcnQubW0gKi87IH07CiAJCUE4REM2M0U5MDhFMEREMEEwMDQ1MDdGNyAv
KiBFY21hSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4REM2M0U4MDhFMEREMEEwMDQ1MDdGNyAvKiBFY21hSW50ZXJmYWNlLmNwcCAq
LzsgfTsKIAkJQThEQzYzRUMwOEUwREQyQTAwNDUwN0Y3IC8qIEVjbWFJbnRlcmZhY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThEQzYzRUIwOEUw
REQyQTAwNDUwN0Y3IC8qIEVjbWFJbnRlcmZhY2UuY3BwICovOyB9OwotCQlBOEVBNDI5NTA4RTBC
QTQxMDA0QkMzOTYgLyogQ0RGSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE0Mjk0MDhFMEJBNDEwMDRCQzM5NiAvKiBDREZJbnRl
cmZhY2UuY3BwICovOyB9OworCQlBOEVBNDI5NTA4RTBCQTQxMDA0QkMzOTYgLyogU1ZHQ0RGSW50
ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4RUE0Mjk0MDhFMEJBNDEwMDRCQzM5NiAvKiBTVkdDREZJbnRlcmZhY2UuY3BwICovOyB9Owor
CQlBOEVBNDM0NTA4RTE0RUFDMDA0QkMzOTYgLyogeG1sX2tkb210b2tlbml6ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE0MzNEMDhFMTRFQUIw
MDRCQzM5NiAvKiB4bWxfa2RvbXRva2VuaXplci5oICovOyB9OworCQlBOEVBNDM0NjA4RTE0RUFD
MDA0QkMzOTYgLyogeG1sX2tkb210b2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFQTQzM0UwOEUxNEVBQzAwNEJDMzk2IC8qIHhtbF9r
ZG9tdG9rZW5pemVyLmNwcCAqLzsgfTsKKwkJQThFQTQzNDcwOEUxNEVBQzAwNEJDMzk2IC8qIHJl
bmRlcl9rY2FudmFzd3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThFQTQzM0YwOEUxNEVBQzAwNEJDMzk2IC8qIHJlbmRlcl9rY2FudmFzd3Jh
cHBlci5oICovOyB9OworCQlBOEVBNDM0ODA4RTE0RUFDMDA0QkMzOTYgLyogcmVuZGVyX2tjYW52
YXN3cmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4RUE0MzQwMDhFMTRFQUMwMDRCQzM5NiAvKiByZW5kZXJfa2NhbnZhc3dyYXBwZXIuY3Bw
ICovOyB9OworCQlBOEVBNDM0OTA4RTE0RUFDMDA0QkMzOTYgLyogZG9tX2tkb21ub2RldHJlZXdy
YXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
RUE0MzQxMDhFMTRFQUMwMDRCQzM5NiAvKiBkb21fa2RvbW5vZGV0cmVld3JhcHBlci5oICovOyB9
OworCQlBOEVBNDM0QTA4RTE0RUFDMDA0QkMzOTYgLyogZG9tX2tkb21ub2RldHJlZXdyYXBwZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFQTQz
NDIwOEUxNEVBQzAwNEJDMzk2IC8qIGRvbV9rZG9tbm9kZXRyZWV3cmFwcGVyLmNwcCAqLzsgfTsK
KwkJQThFQTQzNEIwOEUxNEVBQzAwNEJDMzk2IC8qIGRvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEVBNDM0MzA4
RTE0RUFDMDA0QkMzOTYgLyogZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaCAqLzsgfTsKKwkJQThF
QTQzNEMwOEUxNEVBQzAwNEJDMzk2IC8qIGRvbV9rZG9tZG9jdW1lbnR3cmFwcGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE0MzQ0MDhFMTRF
QUMwMDRCQzM5NiAvKiBkb21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAgKi87IH07CiAJCUE4RkQ4
Qjg2MDg3Q0I0NEMwMERDMzcwNyAvKiBLV1FXTWF0cml4Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBOEMwODc5RUM2NDAwNkE5MTcyIC8qIEtX
UVdNYXRyaXgubW0gKi87IH07CiAJCUE4RkQ4Qjg3MDg3Q0I0NTcwMERDMzcwNyAvKiBLV1FXTWF0
cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODVE
N0E4RDA4NzlFQzY0MDA2QTkxNzIgLyogS1dRV01hdHJpeC5oICovOyB9OwogCQlCQzE3OTg5MjA4
OEQ5NzVGMDA2MDY4QTUgLyogcmVuZGVyX3RoZW1lX21hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTc5ODhGMDg4RDk3NUYwMDYwNjhBNSAvKiBy
ZW5kZXJfdGhlbWVfbWFjLm1tICovOyB9OwpAQCAtMzAyMCw3ICszMDI4LDcgQEAKIAkJQTgxRDVB
N0YwOEFERjcwNDAwMTM2QUMxIC8qIHRva2VuaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSB0b2tlbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgx
RDVBODEwOEFERjcwNDAwMTM2QUMxIC8qIHV0aWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gdXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
MUQ1QTgyMDhBREY3MDQwMDEzNkFDMSAvKiB1dGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IHV0aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTgyMTJEMDcw
ODc5NEEyMzAwNjc3MzU5IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9ICJXZWJDb3JlK1NWRy5mcmFtZXdvcmsiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlBODIxMkQwNzA4Nzk0QTIzMDA2NzczNTkgLyog
V2ViQ29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBX
ZWJDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
QTgyRkMyNzMwOEM5MjkyRTAwRUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MkZDMjc0MDhDOTI5MkUwMEVGRUUyMyAv
KiBET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4MkZDMkYwMDhDOUFBRTQwMEVGRUUyMyAvKiBMaW5rU3R5bGVJbXBsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtTdHlsZUltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4MjIsNyArMzgzMCwxNSBAQAogCQlBOEMwRkI4RTA4
OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gS0NhbnZhc1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThE
QzYzRTgwOEUwREQwQTAwNDUwN0Y3IC8qIEVjbWFJbnRlcmZhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRWNtYUludGVyZmFjZS5jcHA7IHBhdGggPSAiLi4vLi4v
Li4vLi4vYnVpbGQvV2ViQ29yZS5idWlsZC9EZXZlbG9wbWVudC9XZWJDb3JlK1NWRy5idWlsZC9E
ZXJpdmVkU291cmNlcy9rZG9tL2VjbWEvRWNtYUludGVyZmFjZS5jcHAiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOERDNjNFQjA4RTBERDJBMDA0NTA3RjcgLyogRWNtYUludGVyZmFj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFY21hSW50ZXJmYWNl
LmNwcDsgcGF0aCA9ICIuLi8uLi8uLi8uLi9idWlsZC9XZWJDb3JlLmJ1aWxkL0RldmVsb3BtZW50
L1dlYkNvcmUrU1ZHLmJ1aWxkL0Rlcml2ZWRTb3VyY2VzL2tzdmcyL2VjbWEvRWNtYUludGVyZmFj
ZS5jcHAiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEVBNDI5NDA4RTBCQTQxMDA0
QkMzOTYgLyogQ0RGSW50ZXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENERkludGVyZmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4
RUE0Mjk0MDhFMEJBNDEwMDRCQzM5NiAvKiBTVkdDREZJbnRlcmZhY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQ0RGSW50ZXJmYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThFQTQzM0QwOEUxNEVBQjAwNEJDMzk2IC8qIHhtbF9rZG9t
dG9rZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHhtbF9rZG9tdG9r
ZW5pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RUE0MzNFMDhFMTRFQUMw
MDRCQzM5NiAvKiB4bWxfa2RvbXRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSB4bWxfa2RvbXRva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE4RUE0MzNGMDhFMTRFQUMwMDRCQzM5NiAvKiByZW5kZXJfa2NhbnZhc3dyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVuZGVyX2tjYW52YXN3cmFw
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RUE0MzQwMDhFMTRFQUMwMDRC
QzM5NiAvKiByZW5kZXJfa2NhbnZhc3dyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gcmVuZGVyX2tjYW52YXN3cmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQThFQTQzNDEwOEUxNEVBQzAwNEJDMzk2IC8qIGRvbV9rZG9tbm9kZXRy
ZWV3cmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGRvbV9rZG9tbm9k
ZXRyZWV3cmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RUE0MzQyMDhF
MTRFQUMwMDRCQzM5NiAvKiBkb21fa2RvbW5vZGV0cmVld3JhcHBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBkb21fa2RvbW5vZGV0cmVld3JhcHBlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4RUE0MzQzMDhFMTRFQUMwMDRCQzM5NiAvKiBk
b21fa2RvbWRvY3VtZW50d3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBkb21fa2RvbWRvY3VtZW50d3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBOEVBNDM0NDA4RTE0RUFDMDA0QkMzOTYgLyogZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZG9tX2tkb21kb2N1bWVudHdy
YXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzA2RjI0OTA2RDE4QTdF
MDA0QTZGQTMgLyogeHNsX3N0eWxlc2hlZXRpbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSB4c2xfc3R5bGVzaGVldGltcGwuY3BwOyBwYXRoID0geHNsL3hzbF9z
dHlsZXNoZWV0aW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDZGMjRB
MDZEMThBN0UwMDRBNkZBMyAvKiB4c2xfc3R5bGVzaGVldGltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IHhzbF9zdHlsZXNoZWV0aW1wbC5oOyBwYXRoID0geHNsL3hzbF9z
dHlsZXNoZWV0aW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzA2RjI0QjA2
RDE4QTdFMDA0QTZGQTMgLyogeHNsdF9wcm9jZXNzb3JpbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB4c2x0X3Byb2Nlc3NvcmltcGwuY3BwOyBwYXRoID0geHNs
L3hzbHRfcHJvY2Vzc29yaW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MzMxLDcgKzQzNDcsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8sCi0JCQkJ
QTgyMTJEMDcwODc5NEEyMzAwNjc3MzU5IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLywKKwkJ
CQlBODIxMkQwNzA4Nzk0QTIzMDA2NzczNTkgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8sCiAJCQkp
OwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOwpAQCAt
NTMwMCw2ICs1MzE2LDE0IEBACiAJCQkJQThDMEY2RTYwODk3MDFGMTAwQkE1MTE0IC8qIERyYXdW
aWV3UHJpdmF0ZS5oICovLAogCQkJCUE4QzBGNkU3MDg5NzAxRjEwMEJBNTExNCAvKiBOU1NWR0lt
YWdlUmVwLmggKi8sCiAJCQkJQThDMEY2RTgwODk3MDFGMTAwQkE1MTE0IC8qIE5TU1ZHSW1hZ2VS
ZXAubSAqLywKKwkJCQlBOEVBNDMzRDA4RTE0RUFCMDA0QkMzOTYgLyogeG1sX2tkb210b2tlbml6
ZXIuaCAqLywKKwkJCQlBOEVBNDMzRTA4RTE0RUFDMDA0QkMzOTYgLyogeG1sX2tkb210b2tlbml6
ZXIuY3BwICovLAorCQkJCUE4RUE0MzNGMDhFMTRFQUMwMDRCQzM5NiAvKiByZW5kZXJfa2NhbnZh
c3dyYXBwZXIuaCAqLywKKwkJCQlBOEVBNDM0MDA4RTE0RUFDMDA0QkMzOTYgLyogcmVuZGVyX2tj
YW52YXN3cmFwcGVyLmNwcCAqLywKKwkJCQlBOEVBNDM0MTA4RTE0RUFDMDA0QkMzOTYgLyogZG9t
X2tkb21ub2RldHJlZXdyYXBwZXIuaCAqLywKKwkJCQlBOEVBNDM0MjA4RTE0RUFDMDA0QkMzOTYg
LyogZG9tX2tkb21ub2RldHJlZXdyYXBwZXIuY3BwICovLAorCQkJCUE4RUE0MzQzMDhFMTRFQUMw
MDRCQzM5NiAvKiBkb21fa2RvbWRvY3VtZW50d3JhcHBlci5oICovLAorCQkJCUE4RUE0MzQ0MDhF
MTRFQUMwMDRCQzM5NiAvKiBkb21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAgKi8sCiAJCQkpOwog
CQkJbmFtZSA9ICJXZWJDb3JlK1NWRyI7CiAJCQlwYXRoID0gIi4uL1NWR1N1cHBvcnQvV2ViQ29y
ZStTVkciOwpAQCAtNTM5Myw3ICs1NDE3LDcgQEAKIAkJQThDMEY3RkMwODk3MDFGMzAwQkE1MTE0
IC8qIHN2ZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
QThFQTQyOTQwOEUwQkE0MTAwNEJDMzk2IC8qIENERkludGVyZmFjZS5jcHAgKi8sCisJCQkJQThF
QTQyOTQwOEUwQkE0MTAwNEJDMzk2IC8qIFNWR0NERkludGVyZmFjZS5jcHAgKi8sCiAJCQkJQThD
MEY3RkUwODk3MDFGMzAwQkE1MTE0IC8qIENERkludGVyZmFjZS5oICovLAogCQkJCUE4QzBGN0ZG
MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdBRWxlbWVudEltcGwuY3BwICovLAogCQkJCUE4QzBGODAw
MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdBRWxlbWVudEltcGwuaCAqLywKQEAgLTgxNDIsNiArODE2
NiwxMCBAQAogCQkJCUE4MTIyRjZCMDhENTY0QjUwMDg0NEZBMyAvKiBTVkdWaWV3RWxlbWVudFdy
YXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTIyRjZEMDhENTY0QjUwMDg0NEZBMyAvKiBT
Vkdab29tQW5kUGFuV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMjJGNkYwOEQ1NjRC
NTAwODQ0RkEzIC8qIFNWR1pvb21FdmVudFdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4
RUE0MzQ1MDhFMTRFQUMwMDRCQzM5NiAvKiB4bWxfa2RvbXRva2VuaXplci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQThFQTQzNDcwOEUxNEVBQzAwNEJDMzk2IC8qIHJlbmRlcl9rY2FudmFzd3JhcHBl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThFQTQzNDkwOEUxNEVBQzAwNEJDMzk2IC8qIGRvbV9r
ZG9tbm9kZXRyZWV3cmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEVBNDM0QjA4RTE0RUFD
MDA0QkMzOTYgLyogZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
ODM1MSw3ICs4Mzc5LDcgQEAKIAkJCW5hbWUgPSAiV2ViQ29yZStTVkciOwogCQkJcHJvZHVjdElu
c3RhbGxQYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9W
ZXJzaW9ucy9BL0ZyYW1ld29ya3M7CiAJCQlwcm9kdWN0TmFtZSA9IFdlYktpdDsKLQkJCXByb2R1
Y3RSZWZlcmVuY2UgPSBBODIxMkQwNzA4Nzk0QTIzMDA2NzczNTkgLyogV2ViQ29yZStTVkcuZnJh
bWV3b3JrICovOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEE4MjEyRDA3MDg3OTRBMjMwMDY3NzM1
OSAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5w
cm9kdWN0LXR5cGUuZnJhbWV3b3JrIjsKIAkJfTsKIC8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2Vj
dGlvbiAqLwpAQCAtOTI2MiwxMiArOTI5MCwxMiBAQAogCQkJKTsKIAkJCW5hbWUgPSAiS0RPTSBF
Y21hU2NyaXB0LmNwcC9oIjsKIAkJCW91dHB1dFBhdGhzID0gKAotCQkJCSRERVJJVkVEX0ZJTEVf
RElSL2tkb20vZWNtYS9FY21hSW50ZXJmYWNlLmNwcCwKKwkJCQlrZG9tL2VjbWEvRWNtYUludGVy
ZmFjZS5jcHAsCiAJCQkJJERFUklWRURfRklMRV9ESVIva2RvbS9lY21hL0VjbWFJbnRlcmZhY2Uu
aCwKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
CXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJFQ01BX09VVFBVVF9ESVI9
XCIke0RFUklWRURfRklMRV9ESVJ9L2tkb20vZWNtYVwiXG5ta2RpciAtcCBcIiR7RUNNQV9PVVRQ
VVRfRElSfVwiXG5cbi91c3IvYmluL3BlcmwgLUlrZG9tL2JpbmRpbmdzIGtkb20vYmluZGluZ3Mv
a2RvbWlkbC5wbCBcXFxuXHQtLWdlbmVyYXRvciBlY21hSW50ZXJmYWNlIFxcXG5cdC0tb3V0cHV0
ZGlyIFwiJHtFQ01BX09VVFBVVF9ESVJ9XCIgXFxcblx0LS1pbmNsdWRlZGlyIGtkb20vYmluZGlu
Z3MvaWRsIFxcXG5cdC0taW5wdXQga2RvbS9iaW5kaW5ncy9pZGwvY29yZS9Ob2RlLmlkbCBcXFxu
XHQtLWRvY3VtZW50YXRpb24gZW1wdHkgO1xuXG5sbiAtcyBcIiRFQ01BX09VVFBVVF9ESVIvRWNt
YUludGVyZmFjZS5jcHBcIiBrZG9tL2VjbWEvRWNtYUludGVyZmFjZS5jcHAiOworCQkJc2hlbGxT
Y3JpcHQgPSAiRUNNQV9PVVRQVVRfRElSPVwiJHtERVJJVkVEX0ZJTEVfRElSfS9rZG9tL2VjbWFc
IlxubWtkaXIgLXAgXCIke0VDTUFfT1VUUFVUX0RJUn1cIlxuXG4vdXNyL2Jpbi9wZXJsIC1Ja2Rv
bS9iaW5kaW5ncyBrZG9tL2JpbmRpbmdzL2tkb21pZGwucGwgXFxcblx0LS1nZW5lcmF0b3IgZWNt
YUludGVyZmFjZSBcXFxuXHQtLW91dHB1dGRpciBcIiR7RUNNQV9PVVRQVVRfRElSfVwiIFxcXG5c
dC0taW5jbHVkZWRpciBrZG9tL2JpbmRpbmdzL2lkbCBcXFxuXHQtLWlucHV0IGtkb20vYmluZGlu
Z3MvaWRsL2NvcmUvTm9kZS5pZGwgXFxcblx0LS1kb2N1bWVudGF0aW9uIGVtcHR5IDtcblxuIyBI
YWNrIHVudGlsIDxyZGFyOi8vcHJvYmxlbS80MjUxNzg0PiBcIkRlcml2ZWRTb3VyY2VzIChidWls
ZCBpbnRlcm1lZGlhdGVzKSByZWxhdGl2ZSBmaWxlcGF0aHMgc2hvdWxkIGJlIHBvc3NpYmxlXCIg
aXMgZml4ZWQuXG5sbiAtc2YgXCIkRUNNQV9PVVRQVVRfRElSL0VjbWFJbnRlcmZhY2UuY3BwXCIg
a2RvbS9lY21hL0VjbWFJbnRlcmZhY2UuY3BwIjsKIAkJfTsKIAkJQThCQzBCMDEwOEQxOTU0NTAw
Mzc5OTE4IC8qIEtTVkcgRWNtYVNjcmlwdC5jcHAvaCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKQEAgLTkyNzksMTIgKzkzMDcsMTIgQEAKIAkJCSk7CiAJCQluYW1l
ID0gIktTVkcgRWNtYVNjcmlwdC5jcHAvaCI7CiAJCQlvdXRwdXRQYXRocyA9ICgKLQkJCQkkREVS
SVZFRF9GSUxFX0RJUi9rc3ZnMi9lY21hL0VjbWFJbnRlcmZhY2UuY3BwLAorCQkJCWtzdmcyL2Vj
bWEvRWNtYUludGVyZmFjZS5jcHAsCiAJCQkJJERFUklWRURfRklMRV9ESVIva3N2ZzIvZWNtYS9F
Y21hSW50ZXJmYWNlLmgsCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAiRUNN
QV9PVVRQVVRfRElSPVwiJHtERVJJVkVEX0ZJTEVfRElSfS9rc3ZnMi9lY21hXCJcbm1rZGlyIC1w
IFwiJHtFQ01BX09VVFBVVF9ESVJ9XCJcblxuL3Vzci9iaW4vcGVybCAtSWtkb20vYmluZGluZ3Mg
a2RvbS9iaW5kaW5ncy9rZG9taWRsLnBsIFxcXG5cdC0tZ2VuZXJhdG9yIGVjbWFJbnRlcmZhY2Ug
XFxcblx0LS1vdXRwdXRkaXIgXCIke0VDTUFfT1VUUFVUX0RJUn1cIiBcXFxuXHQtLWluY2x1ZGVk
aXIga2RvbS9iaW5kaW5ncy9pZGwgXFxcblx0LS1pbmNsdWRlZGlyIGtzdmcyL2JpbmRpbmdzL2lk
bCBcXFxuXHQtLWlucHV0IGtzdmcyL2JpbmRpbmdzL2lkbC9zdmcvU1ZHRWxlbWVudC5pZGwgXFxc
blx0LS1kb2N1bWVudGF0aW9uIGVtcHR5IFxcXG5cdC0tb250b3AgO1xuXG5sbiAtcyBcIiRFQ01B
X09VVFBVVF9ESVIvRWNtYUludGVyZmFjZS5jcHBcIiBrc3ZnMi9lY21hL0VjbWFJbnRlcmZhY2Uu
Y3BwIjsKKwkJCXNoZWxsU2NyaXB0ID0gIkVDTUFfT1VUUFVUX0RJUj1cIiR7REVSSVZFRF9GSUxF
X0RJUn0va3N2ZzIvZWNtYVwiXG5ta2RpciAtcCBcIiR7RUNNQV9PVVRQVVRfRElSfVwiXG5cbi91
c3IvYmluL3BlcmwgLUlrZG9tL2JpbmRpbmdzIGtkb20vYmluZGluZ3Mva2RvbWlkbC5wbCBcXFxu
XHQtLWdlbmVyYXRvciBlY21hSW50ZXJmYWNlIFxcXG5cdC0tb3V0cHV0ZGlyIFwiJHtFQ01BX09V
VFBVVF9ESVJ9XCIgXFxcblx0LS1pbmNsdWRlZGlyIGtkb20vYmluZGluZ3MvaWRsIFxcXG5cdC0t
aW5jbHVkZWRpciBrc3ZnMi9iaW5kaW5ncy9pZGwgXFxcblx0LS1pbnB1dCBrc3ZnMi9iaW5kaW5n
cy9pZGwvc3ZnL1NWR0VsZW1lbnQuaWRsIFxcXG5cdC0tZG9jdW1lbnRhdGlvbiBlbXB0eSBcXFxu
XHQtLW9udG9wIDtcblxuIyBIYWNrIHVudGlsIDxyZGFyOi8vcHJvYmxlbS80MjUxNzg0PiBcIkRl
cml2ZWRTb3VyY2VzIChidWlsZCBpbnRlcm1lZGlhdGVzKSByZWxhdGl2ZSBmaWxlcGF0aHMgc2hv
dWxkIGJlIHBvc3NpYmxlXCIgaXMgZml4ZWQuXG5sbiAtc2YgXCIkRUNNQV9PVVRQVVRfRElSL0Vj
bWFJbnRlcmZhY2UuY3BwXCIga3N2ZzIvZWNtYS9FY21hSW50ZXJmYWNlLmNwcCI7CiAJCX07CiAv
KiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIApAQCAtMTAzMzgsOSAr
MTAzNjYsMTMgQEAKIAkJCQlBODEyMkY2QzA4RDU2NEI1MDA4NDRGQTMgLyogU1ZHWm9vbUFuZFBh
bldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMjJGNkUwOEQ1NjRCNTAwODQ0RkEz
IC8qIFNWR1pvb21FdmVudFdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MDBBNDgw
OERENzM0MzAwQ0M1QTg2IC8qIENERkludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlB
OEVBNDI5NTA4RTBCQTQxMDA0QkMzOTYgLyogQ0RGSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE4RUE0Mjk1MDhFMEJBNDEwMDRCQzM5NiAvKiBTVkdDREZJbnRlcmZhY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThEQzYzRTkwOEUwREQwQTAwNDUwN0Y3IC8qIEVjbWFJbnRlcmZh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEQzYzRUMwOEUwREQyQTAwNDUwN0Y3IC8qIEVj
bWFJbnRlcmZhY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThFQTQzNDYwOEUxNEVBQzAwNEJD
Mzk2IC8qIHhtbF9rZG9tdG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4RUE0MzQ4
MDhFMTRFQUMwMDRCQzM5NiAvKiByZW5kZXJfa2NhbnZhc3dyYXBwZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQThFQTQzNEEwOEUxNEVBQzAwNEJDMzk2IC8qIGRvbV9rZG9tbm9kZXRyZWV3cmFw
cGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4RUE0MzRDMDhFMTRFQUMwMDRCQzM5NiAvKiBk
b21fa2RvbWRvY3VtZW50d3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEwNjI2LDcgKzEw
NjU4LDcgQEAKIAkJCQkJIi1XbCwtZXhwb3J0ZWRfc3ltYm9sc19saXN0LCQoREVSSVZFRF9GSUxF
U19ESVIpL1dlYkNvcmUrU1ZHLmV4cCIsCiAJCQkJKTsKIAkJCQlQUkVCSU5ESU5HID0gTk87Ci0J
CQkJUFJPRFVDVF9OQU1FID0gIldlYkNvcmUrU1ZHIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBXZWJD
b3JlOwogCQkJCVNFQ1RPUkRFUl9GTEFHUyA9ICIiOwogCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAog
CQkJCQkiLVdhbGwiLApAQCAtMTA2ODcsNyArMTA3MTksNyBAQAogCQkJCQkiLVdsLC1leHBvcnRl
ZF9zeW1ib2xzX2xpc3QsJChERVJJVkVEX0ZJTEVTX0RJUikvV2ViQ29yZStTVkcuZXhwIiwKIAkJ
CQkpOwogCQkJCVBSRUJJTkRJTkcgPSBOTzsKLQkJCQlQUk9EVUNUX05BTUUgPSAiV2ViQ29yZStT
VkciOworCQkJCVBST0RVQ1RfTkFNRSA9IFdlYkNvcmU7CiAJCQkJU0VDVE9SREVSX0ZMQUdTID0g
IiI7CiAJCQkJV0FSTklOR19DRkxBR1MgPSAoCiAJCQkJCSItV2FsbCIsCkBAIC0xMDc0OCw3ICsx
MDc4MCw3IEBACiAJCQkJCSItV2wsLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCwkKERFUklWRURfRklM
RVNfRElSKS9XZWJDb3JlK1NWRy5leHAiLAogCQkJCSk7CiAJCQkJUFJFQklORElORyA9IE5POwot
CQkJCVBST0RVQ1RfTkFNRSA9ICJXZWJDb3JlK1NWRyI7CisJCQkJUFJPRFVDVF9OQU1FID0gV2Vi
Q29yZTsKIAkJCQlTRUNUT1JERVJfRkxBR1MgPSAiIjsKIAkJCQlTVFlMRV9MREZMQUdTID0gIiI7
CiAJCQkJV0FSTklOR19DRkxBR1MgPSAoCkBAIC0xMDgwOCw3ICsxMDg0MCw3IEBACiAJCQkJCSIt
bHhtbDItV2ViQ29yZSIsCiAJCQkJCSItV2wsLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCwkKERFUklW
RURfRklMRVNfRElSKS9XZWJDb3JlK1NWRy5leHAiLAogCQkJCSk7Ci0JCQkJUFJPRFVDVF9OQU1F
ID0gIldlYkNvcmUrU1ZHIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBXZWJDb3JlOwogCQkJCVNFQ1RP
UkRFUl9GTEFHUyA9ICgKIAkJCQkJIi1zZWN0b3JkZXIiLAogCQkJCQlfX1RFWFQsCkluZGV4OiBr
aHRtbC9raHRtbF9wYXJ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9raHRtbC9raHRtbF9wYXJ0LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNDAKZGlmZiAt
cCAtdSAtcjEuMzQwIGtodG1sL2todG1sX3BhcnQuY3BwCi0tLSBraHRtbC9raHRtbF9wYXJ0LmNw
cAkxNiBTZXAgMjAwNSAyMjo0MjowMCAtMDAwMAkxLjM0MAorKysga2h0bWwva2h0bWxfcGFydC5j
cHAJMjEgU2VwIDIwMDUgMTE6MjM6MTcgLTAwMDAKQEAgLTE2MTAsNiArMTYxMCwxMCBAQCB2b2lk
IEtIVE1MUGFydDo6YmVnaW4oIGNvbnN0IEtVUkwgJnVybCwgCiAgIGlmIChhcmdzLnNlcnZpY2VU
eXBlID09ICJ0ZXh0L3htbCIgfHwgYXJncy5zZXJ2aWNlVHlwZSA9PSAiYXBwbGljYXRpb24veG1s
IiB8fCBhcmdzLnNlcnZpY2VUeXBlID09ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIHx8CiAgICAg
ICBhcmdzLnNlcnZpY2VUeXBlID09ICJ0ZXh0L3hzbCIgfHwgYXJncy5zZXJ2aWNlVHlwZSA9PSAi
YXBwbGljYXRpb24vcnNzK3htbCIgfHwgYXJncy5zZXJ2aWNlVHlwZSA9PSAiYXBwbGljYXRpb24v
YXRvbSt4bWwiKQogICAgIGQtPm1fZG9jID0gRE9NSW1wbGVtZW50YXRpb25JbXBsOjppbnN0YW5j
ZSgpLT5jcmVhdGVEb2N1bWVudCggZC0+bV92aWV3ICk7CisjaWYgU1ZHX1NVUFBPUlQKKyAgZWxz
ZSBpZiAoYXJncy5zZXJ2aWNlVHlwZSA9PSAiaW1hZ2Uvc3ZnK3htbCIpCisgICAgZC0+bV9kb2Mg
PSBET01JbXBsZW1lbnRhdGlvbkltcGw6Omluc3RhbmNlKCktPmNyZWF0ZUtET01Eb2N1bWVudChk
LT5tX3ZpZXcpOworI2VuZGlmCiAgIGVsc2UKICAgICBkLT5tX2RvYyA9IERPTUltcGxlbWVudGF0
aW9uSW1wbDo6aW5zdGFuY2UoKS0+Y3JlYXRlSFRNTERvY3VtZW50KCBkLT5tX3ZpZXcgKTsKIApJ
bmRleDoga2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9raHRtbC94bWwvZG9tX2RvY2ltcGwuY3BwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjI1NQpkaWZmIC1wIC11IC1yMS4yNTUga2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcAot
LS0ga2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcAkxNiBTZXAgMjAwNSAyMjo0MjoxOSAtMDAwMAkx
LjI1NQorKysga2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcAkyMSBTZXAgMjAwNSAxMToyMzoyMCAt
MDAwMApAQCAtOTIsNiArOTIsMTAgQEAgdXNpbmcgWEJMOjpYQkxCaW5kaW5nTWFuYWdlcjsKICNp
bmNsdWRlICJLV1FMb2dnaW5nLmgiCiAjZW5kaWYKIAorI2lmIFNWR19TVVBQT1JUCisjaW5jbHVk
ZSAiZG9tX2tkb21kb2N1bWVudHdyYXBwZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
RE9NOwogdXNpbmcgbmFtZXNwYWNlIERPTTo6RXZlbnROYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CkBAIC0yNTYsNiArMjYwLDEzIEBAIEhUTUxEb2N1bWVudEltcGwgKkRPTUltcGxl
bWVudGF0aW9uSW1wbDoKICAgICByZXR1cm4gbmV3IEhUTUxEb2N1bWVudEltcGwodGhpcywgdik7
CiB9CiAKKyNpZiBTVkdfU1VQUE9SVAorRG9jdW1lbnRJbXBsICpET01JbXBsZW1lbnRhdGlvbklt
cGw6OmNyZWF0ZUtET01Eb2N1bWVudCggS0hUTUxWaWV3ICp2ICkKK3sKKyAgICByZXR1cm4gbmV3
IEtET01Eb2N1bWVudFdyYXBwZXJJbXBsKHRoaXMsIHYpOworfQorI2VuZGlmCisKIERPTUltcGxl
bWVudGF0aW9uSW1wbCAqRE9NSW1wbGVtZW50YXRpb25JbXBsOjppbnN0YW5jZSgpCiB7CiAgICAg
aWYgKCFtX2luc3RhbmNlKSB7CkluZGV4OiBraHRtbC94bWwvZG9tX2RvY2ltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC94bWwvZG9tX2RvY2ltcGwuaCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMjYKZGlmZiAtcCAtdSAtcjEuMTI2IGtodG1sL3htbC9k
b21fZG9jaW1wbC5oCi0tLSBraHRtbC94bWwvZG9tX2RvY2ltcGwuaAkxNiBTZXAgMjAwNSAyMjo0
MjoxOSAtMDAwMAkxLjEyNgorKysga2h0bWwveG1sL2RvbV9kb2NpbXBsLmgJMjEgU2VwIDIwMDUg
MTE6MjM6MjEgLTAwMDAKQEAgLTE1MSw2ICsxNTEsOSBAQCBwdWJsaWM6CiAgICAgLy8gT3RoZXIg
bWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQogICAgIERvY3VtZW50SW1wbCAqY3JlYXRlRG9jdW1l
bnQoIEtIVE1MVmlldyAqdiA9IDAgKTsKICAgICBIVE1MRG9jdW1lbnRJbXBsICpjcmVhdGVIVE1M
RG9jdW1lbnQoIEtIVE1MVmlldyAqdiA9IDAgKTsKKyNpZiBTVkdfU1VQUE9SVAorICAgIERvY3Vt
ZW50SW1wbCAqY3JlYXRlS0RPTURvY3VtZW50KCBLSFRNTFZpZXcgKnYgPSAwICk7CisjZW5kaWYK
IAogICAgIC8vIFJldHVybnMgdGhlIHN0YXRpYyBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIC0gb25s
eSBvbmUgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBzaG91bGQKICAgICAvLyBldmVyIGJlIHByZXNl
bnQsIGFuZCBpcyB1c2VkIGFzIGEgZmFjdG9yeSBtZXRob2QgZm9yIGNyZWF0aW5nIERvY3VtZW50
SW1wbCBvYmplY3RzCkluZGV4OiBrd3EvS1dRUGFpbnRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FQYWludGVyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuODEKZGlmZiAtcCAtdSAtcjEuODEga3dxL0tXUVBhaW50ZXIuaAotLS0ga3dxL0tXUVBhaW50
ZXIuaAkxNiBTZXAgMjAwNSAyMzowOTo1OSAtMDAwMAkxLjgxCisrKyBrd3EvS1dRUGFpbnRlci5o
CTIxIFNlcCAyMDA1IDExOjIzOjIyIC0wMDAwCkBAIC00Miw2ICs0MiwxMCBAQCBjbGFzcyBRV2lk
Z2V0OwogY2xhc3MgUVBhaW50ZXJQcml2YXRlOwogY2xhc3MgUVN0cmluZzsKIAorI2lmIFNWR19T
VVBQT1JUCitjbGFzcyBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dDsKKyNlbmRpZgorCiBjbGFzcyBR
UGFpbnRlciA6IHB1YmxpYyBRdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBlbnVtIHsgUlRMLCBM
VFIgfSBUZXh0RGlyZWN0aW9uOwpAQCAtMTM2LDYgKzE0MCwxMCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgQ0dDb250ZXh0UmVmIGN1cnJlbnRDb250ZXh0KCk7CiAgICAgCisjaWYgU1ZHX1NVUFBPUlQK
KyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCAqcmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpOwor
I2VuZGlmCisgICAgCiAgICAgc3RhdGljIGludCBjb21wb3NpdGVPcGVyYXRvckZyb21TdHJpbmcg
KGNvbnN0IFFTdHJpbmcgJmFTdHJpbmcpOwogICAgIHN0YXRpYyBpbnQgZ2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENHQ29udGV4dFJlZiBjb250ZXh0KTsKICAgICBzdGF0aWMgdm9pZCBzZXRDb21wb3Np
dGVPcGVyYXRpb24gKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBRU3RyaW5nICZvcGVyYXRp
b24pOwpJbmRleDoga3dxL0tXUVBhaW50ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva3dxL0tXUVBhaW50ZXIubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTM5
CmRpZmYgLXAgLXUgLXIxLjEzOSBrd3EvS1dRUGFpbnRlci5tbQotLS0ga3dxL0tXUVBhaW50ZXIu
bW0JMTYgU2VwIDIwMDUgMjM6MDk6NTkgLTAwMDAJMS4xMzkKKysrIGt3cS9LV1FQYWludGVyLm1t
CTIxIFNlcCAyMDA1IDExOjIzOjIyIC0wMDAwCkBAIC00MSw2ICs0MSwxMCBAQAogI2ltcG9ydCAi
V2ViQ29yZVRleHRSZW5kZXJlci5oIgogI2ltcG9ydCAiV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rv
cnkuaCIKIAorI2lmIFNWR19TVVBQT1JUCisjaW1wb3J0ICJrY2FudmFzL2RldmljZS9xdWFydHov
S1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oIgorI2VuZGlmCisKIC8vIE5TQ29sb3IsIE5TQmV6aWVy
UGF0aCwgTlNHcmFwaGljc0NvbnRleHQgYW5kIFdlYkNvcmVUZXh0UmVuZGVyZXIKIC8vIGNhbGxz
IGluIHRoaXMgZmlsZSBhcmUgYWxsIGV4Y2VwdGlvbi1zYWZlLCBzbyB3ZSBkb24ndCBibG9jawog
Ly8gZXhjZXB0aW9ucyBmb3IgdGhvc2UuCkBAIC01NSw5ICs1OSw4IEBAIHN0cnVjdCBRUFN0YXRl
IHsKIH07CiAKIHN0cnVjdCBRUGFpbnRlclByaXZhdGUgewotICAgIFFQYWludGVyUHJpdmF0ZSgp
IDogdGV4dFJlbmRlcmVyKDApLCBmb2N1c1JpbmdQYXRoKDApLCBmb2N1c1JpbmdXaWR0aCgwKSwg
Zm9jdXNSaW5nT2Zmc2V0KDApLAotICAgICAgICAgICAgICAgICAgICAgICAgaGFzRm9jdXNSaW5n
Q29sb3IoZmFsc2UpIHsgfQotICAgIH5RUGFpbnRlclByaXZhdGUoKSB7IEtXUVJlbGVhc2UodGV4
dFJlbmRlcmVyKTsgS1dRUmVsZWFzZShmb2N1c1JpbmdQYXRoKTsgfQorICAgIFFQYWludGVyUHJp
dmF0ZSgpOworICAgIH5RUGFpbnRlclByaXZhdGUoKTsKICAgICBRUFN0YXRlIHN0YXRlOwogICAg
IFFQdHJTdGFjazxRUFN0YXRlPiBzdGFjazsKICAgICBpZCA8V2ViQ29yZVRleHRSZW5kZXJlcj4g
dGV4dFJlbmRlcmVyOwpAQCAtNjcsOCArNzAsMjkgQEAgc3RydWN0IFFQYWludGVyUHJpdmF0ZSB7
CiAgICAgaW50IGZvY3VzUmluZ09mZnNldDsKICAgICBib29sIGhhc0ZvY3VzUmluZ0NvbG9yOwog
ICAgIFFDb2xvciBmb2N1c1JpbmdDb2xvcjsKKyNpZiBTVkdfU1VQUE9SVAorICAgIEtSZW5kZXJp
bmdEZXZpY2VDb250ZXh0UXVhcnR6ICpyZW5kZXJpbmdEZXZpY2VDb250ZXh0OworI2VuZGlmCiB9
OwogCitRUGFpbnRlclByaXZhdGU6OlFQYWludGVyUHJpdmF0ZSgpIDogdGV4dFJlbmRlcmVyKDAp
LCBmb2N1c1JpbmdQYXRoKDApLCBmb2N1c1JpbmdXaWR0aCgwKSwgZm9jdXNSaW5nT2Zmc2V0KDAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzRm9jdXNSaW5nQ29sb3IoZmFsc2UpCisjaWYg
U1ZHX1NVUFBPUlQKKyAgICAgICAgICAgICAgICAgICAgICAgICwgcmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCgwKQorI2VuZGlmCit7CisKK30KKworUVBhaW50ZXJQcml2YXRlOjp+UVBhaW50ZXJQcml2
YXRlKCkKK3sKKyAgICBLV1FSZWxlYXNlKHRleHRSZW5kZXJlcik7CisgICAgS1dRUmVsZWFzZShm
b2N1c1JpbmdQYXRoKTsKKyNpZiBTVkdfU1VQUE9SVAorICAgIGRlbGV0ZSByZW5kZXJpbmdEZXZp
Y2VDb250ZXh0OworI2VuZGlmCit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBfZmlsbFJlY3RYWChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3LCBmbG9hdCBoLCBjb25zdCBRQ29sb3ImIGNvbCk7CiBR
UGFpbnRlcjo6UVBhaW50ZXIoKSA6IGRhdGEobmV3IFFQYWludGVyUHJpdmF0ZSksIF9pc0ZvclBy
aW50aW5nKGZhbHNlKSwgX3VzZXNJbmFjdGl2ZVRleHRCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpLCBf
dXBkYXRpbmdDb250cm9sVGludHMoZmFsc2UpCiB7CkBAIC04NTYsNiArODgwLDE3IEBAIENHQ29u
dGV4dFJlZiBRUGFpbnRlcjo6Y3VycmVudENvbnRleHQoKQogICAgIHJldHVybiAoQ0dDb250ZXh0
UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07CiB9
CiAKKyNpZiBTVkdfU1VQUE9SVAorS1JlbmRlcmluZ0RldmljZUNvbnRleHQgKlFQYWludGVyOjpy
ZW5kZXJpbmdEZXZpY2VDb250ZXh0KCkKK3sKKyAgICBpZiAoIWRhdGEtPnJlbmRlcmluZ0Rldmlj
ZUNvbnRleHQpIHsKKyAgICAgICAgZGF0YS0+cmVuZGVyaW5nRGV2aWNlQ29udGV4dCA9IG5ldyBL
UmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eigpOworICAgIH0KKyAgICBkYXRhLT5yZW5kZXJp
bmdEZXZpY2VDb250ZXh0LT5zZXRDR0NvbnRleHQoY3VycmVudENvbnRleHQoKSk7CisgICAgcmV0
dXJuIGRhdGEtPnJlbmRlcmluZ0RldmljZUNvbnRleHQ7Cit9CisjZW5kaWYKKwogdm9pZCBRUGFp
bnRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewogICAgIGlmIChk
YXRhLT5zdGF0ZS5wYWludGluZ0Rpc2FibGVkKQo=
</data>
<flag name="review"
          id="600"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4002</attachid>
            <date>2005-09-22 04:39:18 -0700</date>
            <delta_ts>2005-09-22 11:33:00 -0700</delta_ts>
            <desc>Consolidate tools and update to match WebCore+SVG -&gt; WebCore product name.</desc>
            <filename>tools-update-svg.patch</filename>
            <type>text/plain</type>
            <size>22151</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGNoZWNrb3V0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29s
cy9jaGVja291dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIxLjIgY2hl
Y2tvdXQKLS0tIGNoZWNrb3V0CTcgSnVuIDIwMDUgMjI6MDI6MjQgLTAwMDAJMS4yCisrKyBjaGVj
a291dAkyMiBTZXAgMjAwNSAxMTo0MToxMiAtMDAwMApAQCAtMjksNiArMjksMTAgQEAKICMgRmly
c3QgdGltZSBjaGVjay1vdXQgc2NyaXB0IGZvciBXZWIgS2l0IE9wZW4gU291cmNlIFByb2plY3Qu
CiAKIHVzZSBzdHJpY3Q7Cit1c2UgR2V0b3B0OjpMb25nOworCitteSAkaW5jbHVkZVNWRyA9IDA7
CitHZXRPcHRpb25zKCdzdmcnID0+IFwkaW5jbHVkZVNWRyk7CiAKICMgQ2hlY2sgdGhhdCB3ZSdy
ZSBpbiB0aGUgcmlnaHQgZGlyZWN0b3J5LgogaWYgKCEgLWQgIldlYktpdFRvb2xzIikgewpAQCAt
NDgsMTMgKzUyLDMwIEBAIGNsb3NlIFJPT1Q7CiAKICMgQ2hlY2sgb3V0IGFsbCB0aGUgc291cmNl
cy4KIHByaW50ICJDVlMgcm9vdCBpcyAkcm9vdFxuIjsKLXByaW50ICJDaGVja2luZyBvdXQgV2Vi
S2l0VG9vbHMgKGFnYWluKSwgSmF2YVNjcmlwdENvcmUsIFdlYkNvcmUsIFdlYktpdExpYnJhcmll
cywgYW5kIFdlYktpdFxuIjsKLW9wZW4gQ1ZTLCAiY3ZzIC1kICckcm9vdCcgY28gLVAgV2ViS2l0
VG9vbHMgSmF2YVNjcmlwdENvcmUgV2ViQ29yZSBXZWJLaXRMaWJyYXJpZXMgV2ViS2l0IHwiIG9y
IGRpZTsKK3ByaW50ICJDaGVja2luZyBvdXQgV2ViS2l0VG9vbHMgKGFnYWluKSwgSmF2YVNjcmlw
dENvcmUsIFdlYkNvcmUsIFdlYktpdExpYnJhcmllcyI7CitpZiAoJGluY2x1ZGVTVkcpIHsKKyAg
ICBwcmludCAiLCBXZWJLaXQgYW5kIFNWR1N1cHBvcnRcbiI7Cit9IGVsc2UgeworICAgIHByaW50
ICIgYW5kIFdlYktpdFxuIjsKK30KK215ICRkaXJlY3RvcmllcyA9ICJXZWJLaXRUb29scyBKYXZh
U2NyaXB0Q29yZSBXZWJDb3JlIFdlYktpdExpYnJhcmllcyBXZWJLaXQiOworJGRpcmVjdG9yaWVz
IC49ICIgU1ZHU3VwcG9ydCIgaWYgJGluY2x1ZGVTVkc7CitvcGVuIENWUywgImN2cyAtZCAnJHJv
b3QnIGNvIC1QICRkaXJlY3RvcmllcyB8IiBvciBkaWU7CiB3aGlsZSAoPENWUz4pIHsKICAgICBw
cmludDsKIH0KIGNsb3NlIENWUzsKIAoraWYgKCRpbmNsdWRlU1ZHKSB7CisgICAgIyBNYWtlIHRo
ZSBuZWNlc3Nhcnkgc3ltbGlua3MKKyAgICBwcmludCAiXG5DcmVhdGluZyBzeW1saW5rcyAoa2Rv
bSwga2NhbnZhcywga3N2ZzIsIFdlYkNvcmUrU1ZHLCBzdmctdGVzdHMpIGZyb20gV2ViQ29yZSBp
bnRvIFNWR1N1cHBvcnRcbiI7CisgICAgc3ltbGluaygiLi4vU1ZHU3VwcG9ydC9rZG9tIiwgIldl
YkNvcmUva2RvbSIpOworICAgIHN5bWxpbmsoIi4uL1NWR1N1cHBvcnQva2NhbnZhcyIsICJXZWJD
b3JlL2tjYW52YXMiKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tzdmcyIiwgIldlYkNv
cmUva3N2ZzIiKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L1dlYkNvcmUrU1ZHIiwgIldl
YkNvcmUvV2ViQ29yZStTVkciKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L2xheW91dC10
ZXN0cyIsICJXZWJDb3JlL3N2Zy10ZXN0cyIpOworfQorCiAjIFJlYWR5IHRvIGJ1aWxkLgogcHJp
bnQgIlxuIjsKIHByaW50ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CkluZGV4OiBjaGVja291dC1zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogY2hlY2tvdXQtc3ZnCmRpZmYgLU4gY2hlY2tvdXQtc3ZnCi0tLSBjaGVja291
dC1zdmcJNyBBdWcgMjAwNSAxOTozMTowMyAtMDAwMAkxLjMKKysrIGNoZWNrb3V0LXN2ZwkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDczICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAt
dwotCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBGaXJzdCB0aW1lIGNo
ZWNrLW91dCBzY3JpcHQgZm9yIFdlYiBLaXQgT3BlbiBTb3VyY2UgUHJvamVjdC4KLQotdXNlIHN0
cmljdDsKLQotIyBDaGVjayB0aGF0IHdlJ3JlIGluIHRoZSByaWdodCBkaXJlY3RvcnkuCi1pZiAo
ISAtZCAiV2ViS2l0VG9vbHMiKSB7Ci0gICAgaWYgKC1kICIuLi9XZWJLaXRUb29scyIpIHsKLSAg
ICAgICAgY2hkaXIgIi4uIiBvciBkaWU7Ci0gICAgfQotICAgIGlmICghIC1kICJXZWJLaXRUb29s
cyIpIHsKLSAgICAgICAgZGllICJObyBXZWJLaXRUb29scyBkaXJlY3RvcnkgZm91bmQuIFBsZWFz
ZSBydW4gdGhpcyBzY3JpcHQgZnJvbSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgV2ViS2l0VG9v
bHMuXG4iOwotICAgIH0KLX0KLQotIyBSZWFkIHRoZSBDVlMgcm9vdCBvdXQgb2YgdGhlIHByb2pl
Y3QgdGhhdCdzIGFscmVhZHkgY2hlY2tlZCBvdXQuCi1vcGVuIFJPT1QsICJXZWJLaXRUb29scy9D
VlMvUm9vdCIgb3IgZGllOwotbXkgJHJvb3QgPSA8Uk9PVD47Ci1jaG9tcCAkcm9vdDsKLWNsb3Nl
IFJPT1Q7Ci0KLSMgQ2hlY2sgb3V0IGFsbCB0aGUgc291cmNlcy4KLXByaW50ICJDVlMgcm9vdCBp
cyAkcm9vdFxuIjsKLXByaW50ICJDaGVja2luZyBvdXQgV2ViQ29yZSAoYWdhaW4pIGFuZCBTVkdT
dXBwb3J0XG4iOwotb3BlbiBDVlMsICJjdnMgLWQgJyRyb290JyBjbyAtUCBXZWJDb3JlIFNWR1N1
cHBvcnQgfCIgb3IgZGllOwotd2hpbGUgKDxDVlM+KSB7Ci0gICAgcHJpbnQ7Ci19Ci1jbG9zZSBD
VlM7Ci0KLSMgTWFrZSB0aGUgbmVjZXNzYXJ5IHN5bWxpbmtzCi1wcmludCAiXG5DcmVhdGluZyBz
eW1saW5rcyAoa2RvbSwga2NhbnZhcywga3N2ZzIsIFdlYkNvcmUrU1ZHLCBzdmctdGVzdHMpIGZy
b20gV2ViQ29yZSBpbnRvIFNWR1N1cHBvcnRcbiI7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tk
b20iLCAiV2ViQ29yZS9rZG9tIik7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tjYW52YXMiLCAi
V2ViQ29yZS9rY2FudmFzIik7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tzdmcyIiwgIldlYkNv
cmUva3N2ZzIiKTsKLXN5bWxpbmsoIi4uL1NWR1N1cHBvcnQvV2ViQ29yZStTVkciLCAiV2ViQ29y
ZS9XZWJDb3JlK1NWRyIpOwotc3ltbGluaygiLi4vU1ZHU3VwcG9ydC9sYXlvdXQtdGVzdHMiLCAi
V2ViQ29yZS9zdmctdGVzdHMiKTsKLQotIyBSZWFkeSB0byBidWlsZC4KLXByaW50ICJcbiI7Ci1w
cmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09XG4iOwotcHJpbnQgIiBXZWJDb3JlK1NWRyBzb3VyY2VzIGFyZSBub3cgY2hl
Y2tlZCBvdXQgYW5kIHJlYWR5IHRvIGJ1aWxkLlxuIjsKLXByaW50ICIgWW91IGNhbiBidWlsZCBi
eSBwcm9qZWN0cyBpbiBYY29kZSBieSBzZWxlY3RpbmcgdGhlIFxuIjsKLXByaW50ICIgSmF2YVNj
cmlwdENvcmUrU1ZHIGFuZCBXZWJDb3JlK1NWRyB0YXJnZXRzLlxuIjsKLXByaW50ICIgU2VlIGh0
dHA6Ly93ZWJraXQub3BlbmRhcndpbi5vcmcvcHJvamVjdHMvc3ZnIGZvciBtb3JlIGluZm8uXG4i
OwotcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PVxuIjsKSW5kZXg6IERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdFRvb2xz
L0RyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2osdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKLS0tIERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJMjkgSnVsIDIwMDUgMjI6MDU6MTggLTAwMDAJMS4yCisrKyBEcmF3VGVzdC9EcmF3
VGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTIyIFNlcCAyMDA1IDExOjQxOjEyIC0wMDAw
CkBAIC0yMyw3ICsyMyw3IEBACiAJCUE4QzAwNkYzMDg5ODY1RTkwMEJBNTExNCAvKiBEcmF3VGVz
dERvY3VtZW50Lm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThDMDA2RUQwODk4NjVFOTAwQkE1MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQubmliICov
OyB9OwogCQlBOEMwMDZGNDA4OTg2NUU5MDBCQTUxMTQgLyogSW5zcGVjdG9yLm5pYiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMDA2RUYwODk4NjVF
OTAwQkE1MTE0IC8qIEluc3BlY3Rvci5uaWIgKi87IH07CiAJCUE4QzAwNkY1MDg5ODY1RTkwMEJB
NTExNCAvKiBUZXN0Vmlld2VyLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMDA2RjEwODk4NjVFOTAwQkE1MTE0IC8qIFRlc3RWaWV3ZXIubmli
ICovOyB9OwotCQlBOEMwMDZGQTA4OTg2NjUyMDBCQTUxMTQgLyogV2ViQ29yZStTVkcuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MDA2RjkwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLzsgfTsKKwkJ
QThDMDA2RkEwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMDA2RjkwODk4NjY1MjAw
QkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkU3R5bGUgc2VjdGlvbiAqLwpAQCAtODUsNyAr
ODUsNyBAQAogCQlBOEMwMDZFRTA4OTg2NUU5MDBCQTUxMTQgLyogRW5nbGlzaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1l
ID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovRHJhd1Rlc3REb2N1bWVudC5uaWI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzAwNkYwMDg5ODY1RTkwMEJBNTExNCAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5uaWI7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbnNwZWN0
b3IubmliOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEMwMDZGMjA4OTg2NUU5MDBC
QTUxMTQgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHBy
b2ovVGVzdFZpZXdlci5uaWI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QzAwNkY5
MDg5ODY2NTIwMEJBNTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0
aCA9ICJXZWJDb3JlK1NWRy5mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQlBOEMwMDZGOTA4OTg2NjUyMDBCQTUxMTQgLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgcGF0aCA9IFdlYkNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC05NCw3ICs5NCw3
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJ
OEQxMTA3MkYwNDg2Q0VCODAwRTQ3MDkwIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLAotCQkJCUE4QzAwNkZBMDg5ODY2NTIwMEJBNTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBOEMwMDZGQTA4OTg2NjUyMDBCQTUxMTQgLyogV2Vi
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExNyw3ICsxMTcsNyBAQAogCQkx
MDU4QzdBMEZFQTU0RjAxMTFDQTJDQkIgLyogTGlua2VkIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE4QzAwNkY5MDg5ODY2NTIwMEJB
NTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8sCisJCQkJQThDMDA2RjkwODk4NjY1MjAw
QkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrICovLAogCQkJCTEwNThDN0ExRkVBNTRGMDExMUNB
MkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJMaW5rZWQgRnJh
bWV3b3JrcyI7CkBAIC0zNDgsNyArMzQ4LDYgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0J
CQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICJcIiQoU1JDUk9PVCkvLi4vLi4vLi4vYnVpbGQv
RGV2ZWxvcG1lbnRcIiI7CiAJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CiAJCQkJR0NDX0VO
QUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gWUVTOwogCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdf
U1lNQk9MUyA9IFlFUzsKQEAgLTM3MSw3ICszNzAsNiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7Ci0JCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICJcIiQoU1JDUk9PVCkvLi4vLi4vLi4v
YnVpbGQvRGV2ZWxvcG1lbnRcIiI7CiAJCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0g
Tk87CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87CiAJCQkJR0NDX1BS
RUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKQEAgLTM5MSw3ICszODksNiBAQAogCQlBOEMw
MDY3NzA4OTg2MjRFMDBCQTUxMTQgLyogRGVmYXVsdCAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlGUkFNRVdPUktfU0VBUkNI
X1BBVEhTID0gIlwiJChTUkNST09UKS8uLi8uLi8uLi9idWlsZC9EZXZlbG9wbWVudFwiIjsKIAkJ
CQlHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfUFJFQ09NUElM
RV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19QUkVGSVhfSEVBREVSID0gRHJhd1Rlc3Rf
UHJlZml4LnBjaDsKSW5kZXg6IER1bXBLQ2FudmFzVHJlZS9EdW1wS0NhbnZhc1RyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0
VG9vbHMvRHVtcEtDYW52YXNUcmVlL0R1bXBLQ2FudmFzVHJlZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBEdW1wS0Nh
bnZhc1RyZWUvRHVtcEtDYW52YXNUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKLS0tIER1
bXBLQ2FudmFzVHJlZS9EdW1wS0NhbnZhc1RyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkx
OCBBdWcgMjAwNSAwNTo1OTowNyAtMDAwMAkxLjIKKysrIER1bXBLQ2FudmFzVHJlZS9EdW1wS0Nh
bnZhc1RyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkyMiBTZXAgMjAwNSAxMTo0MToxMiAt
MDAwMApAQCAtOSw3ICs5LDcgQEAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJ
CThERDc2RjlBMDQ4NkFBNzYwMEQ5NkI1RSAvKiBEdW1wS0NhbnZhc1RyZWUubSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkI3Nzk2RkU4NDE1NURDMDJB
QUMwNyAvKiBEdW1wS0NhbnZhc1RyZWUubSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgp
OyB9OyB9OwogCQk4REQ3NkY5QzA0ODZBQTc2MDBEOTZCNUUgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZC
Nzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07Ci0JCUE4
MTBFNEJDMDhBNDQ2MjgwMDMzM0Q5OCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEwRTRCQjA4QTQ0NjI4
MDAzMzNEOTggLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICovOyB9OworCQlBODEwRTRCQzA4QTQ0
NjI4MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2Vi
Q29yZS5mcmFtZXdvcmsgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCkBAIC01Miw3ICs1Miw3IEBACiAJCTA4
RkI3Nzk2RkU4NDE1NURDMDJBQUMwNyAvKiBEdW1wS0NhbnZhc1RyZWUubSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gRHVtcEtDYW52YXNUcmVlLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4RkI3NzlFRkU4NDE1NURDMDJBQUMwNyAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8qIER1bXBL
Q2FudmFzVHJlZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gRHVtcEtDYW52YXNUcmVlOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owot
CQlBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IHBhdGggPSAiV2ViQ29yZStTVkcuZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJQTgxMEU0QkIwOEE0NDYyODAwMzMzRDk4IC8qIFdlYkNvcmUu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBXZWJDb3JlLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
NjEsNyArNjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAogCQkJCThERDc2RjlDMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAotCQkJCUE4MTBFNEJDMDhBNDQ2MjgwMDMzM0Q5OCAvKiBXZWJD
b3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBODEwRTRCQzA4QTQ0NjI4
MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg5LDcg
Kzg5LDcgQEAKIAkJMDhGQjc3OURGRTg0MTU1REMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29y
a3MgYW5kIExpYnJhcmllcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJQTgxMEU0QkIwOEE0NDYyODAwMzMzRDk4IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29y
ayAqLywKKwkJCQlBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki8sCiAJCQkJMDhGQjc3OUVGRTg0MTU1REMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVz
IjsKSW5kZXg6IFNjcmlwdHMvYnVpbGQtZHJhd3Rlc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtZHJhd3Rlc3QsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIFNjcmlwdHMvYnVpbGQtZHJhd3Rlc3QKLS0tIFNj
cmlwdHMvYnVpbGQtZHJhd3Rlc3QJNSBBdWcgMjAwNSAwMToyNDozMSAtMDAwMAkxLjIKKysrIFNj
cmlwdHMvYnVpbGQtZHJhd3Rlc3QJMjIgU2VwIDIwMDUgMTE6NDE6MTIgLTAwMDAKQEAgLTM5LDgg
KzM5LDkgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogY2hkaXJXZWJLaXQoKTsKIG15IEBvcHRpb25z
ID0gWGNvZGVPcHRpb25zKCk7CiAKLSMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBmcmFtZXdv
cmtzIGFyZSBidWlsdC4KLWNoZWNrU1ZHRnJhbWV3b3JrcygpOworIyBDaGVjayB0byBzZWUgdGhh
dCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0ICh3LyBTVkcgc3VwcG9ydCkuCitjaGVja0Zy
YW1ld29ya3MoKTsKK2NoZWNrV2ViQ29yZVNWR1N1cHBvcnQoKTsKIAogIyBCdWlsZAogY2hkaXIg
IldlYktpdFRvb2xzL0RyYXdUZXN0IiBvciBkaWU7CkluZGV4OiBTY3JpcHRzL2J1aWxkLWR1bXBr
Y2FudmFzdHJlZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWlsZC1kdW1wa2NhbnZhc3RyZWUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZm
IC1wIC11IC1yMS4xIFNjcmlwdHMvYnVpbGQtZHVtcGtjYW52YXN0cmVlCi0tLSBTY3JpcHRzL2J1
aWxkLWR1bXBrY2FudmFzdHJlZQk2IEF1ZyAyMDA1IDE4OjM2OjIyIC0wMDAwCTEuMQorKysgU2Ny
aXB0cy9idWlsZC1kdW1wa2NhbnZhc3RyZWUJMjIgU2VwIDIwMDUgMTE6NDE6MTIgLTAwMDAKQEAg
LTM5LDggKzM5LDkgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogY2hkaXJXZWJLaXQoKTsKIG15IEBv
cHRpb25zID0gWGNvZGVPcHRpb25zKCk7CiAKLSMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBm
cmFtZXdvcmtzIGFyZSBidWlsdC4KLWNoZWNrU1ZHRnJhbWV3b3JrcygpOworIyBDaGVjayB0byBz
ZWUgdGhhdCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0ICh3LyBTVkcgc3VwcG9ydCkuCitj
aGVja0ZyYW1ld29ya3MoKTsKK2NoZWNrV2ViQ29yZVNWR1N1cHBvcnQoKTsKIAogIyBCdWlsZAog
Y2hkaXIgIldlYktpdFRvb2xzL0R1bXBLQ2FudmFzVHJlZSIgb3IgZGllOwpJbmRleDogU2NyaXB0
cy9idWlsZC13ZWJjb3JlLXN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBTY3JpcHRzL2J1aWxkLXdl
YmNvcmUtc3ZnCmRpZmYgLU4gU2NyaXB0cy9idWlsZC13ZWJjb3JlLXN2ZwotLS0gU2NyaXB0cy9i
dWlsZC13ZWJjb3JlLXN2Zwk1IEF1ZyAyMDA1IDAxOjI0OjMxIC0wMDAwCTEuMgorKysgU2NyaXB0
cy9idWlsZC13ZWJjb3JlLXN2ZwkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDY1ICsw
LDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0jICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIyBTaW1wbGlmaWVkIGJ1aWxkIHNjcmlwdCBmb3IgV2ViQ29yZStTVkcKLQotdXNl
IHN0cmljdDsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIHdlYmtp
dGRpcnM7Ci0KLWNoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcoKTsKLXNldENvbmZpZ3VyYXRpb24o
KTsKLWNoZGlyV2ViS2l0KCk7Ci1teSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLW15IEBv
cHRpb25zID0gWGNvZGVPcHRpb25zKCk7Ci0KLSMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2plY3Qg
ZGlyZWN0b3JpZXMgYXJlIHRoZXJlLgotbXkgQHByb2plY3RzID0gKCJKYXZhU2NyaXB0Q29yZSIs
ICJXZWJDb3JlIik7Ci1teSBAb3RoZXJEaXJzID0gKCJTVkdTdXBwb3J0Iik7Ci1mb3IgbXkgJGRp
ciAoQHByb2plY3RzLCBAb3RoZXJEaXJzKSB7Ci0gICAgaWYgKCEgLWQgJGRpcikgewotICAgICAg
ICBkaWUgIk5vICRkaXIgZGlyZWN0b3J5IGZvdW5kLiBDYW4ndCBidWlsZCwgcnVuIFdlYktpdFRv
b2xzL2NoZWNrb3V0LXN2ZyBmaXJzdC5cbiI7Ci0gICAgfQotfQotCi0jIEJ1aWxkLCBhbmQgYWJv
cnQgaWYgdGhlIGJ1aWxkIGZhaWxzLgotZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewotICAgIGNo
ZGlyICRkaXIgb3IgZGllOwotICAgIG15ICRyZXN1bHQgPSBzeXN0ZW0gInhjb2RlYnVpbGQiLCAi
LXByb2plY3QiLCAiJGRpci54Y29kZXByb2oiLCBAb3B0aW9ucywgIi10YXJnZXQiLCAiJGRpcitT
VkciOwotICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OwotICAgIGNoZGlyICIuLiIgb3IgZGll
OwotfQotCi0jIFdyaXRlIG91dCBjb25ncmF0dWxhdGlvbnMgbWVzc2FnZS4KLXByaW50ICJcbiI7
Ci1wcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT1cbiI7Ci1wcmludCAiIFdlYkNvcmUrU1ZHIGlzIG5vdyBidWlsdC5cbiI7Ci1w
cmludCAiIEl0IGlzICpOT1QqIHBvc3NpYmxlIHRvIHJ1biBTYWZhcmkgd2l0aCBTVkcgc3VwcG9y
dC5cbiI7Ci1wcmludCAiIFRvIHZpZXcgU1ZHcyB1c2UgYnVpbGQtZHJhd3Rlc3QgYW5kIHJ1bi1k
cmF3dGVzdFxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PVxuIjsKSW5kZXg6IFNjcmlwdHMvYnVpbGQtd2Via2l0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNApkaWZmIC1wIC11IC1yMS4xNCBTY3JpcHRz
L2J1aWxkLXdlYmtpdAotLS0gU2NyaXB0cy9idWlsZC13ZWJraXQJNSBBdWcgMjAwNSAwMToyNDoz
MSAtMDAwMAkxLjE0CisrKyBTY3JpcHRzL2J1aWxkLXdlYmtpdAkyMiBTZXAgMjAwNSAxMTo0MTox
MiAtMDAwMApAQCAtMzAsOSArMzAsMTMgQEAKIAogdXNlIHN0cmljdDsKIHVzZSBGaW5kQmluOwor
dXNlIEdldG9wdDo6TG9uZzsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJz
OwogCitteSAkc3ZnU3VwcG9ydCA9IDA7CitHZXRPcHRpb25zKCdzdmcnID0+IFwkc3ZnU3VwcG9y
dCk7CisKIGNoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcoKTsKIHNldENvbmZpZ3VyYXRpb24oKTsK
IGNoZGlyV2ViS2l0KCk7CkBAIC00MiwxMiArNDYsMTggQEAgbXkgQG9wdGlvbnMgPSBYY29kZU9w
dGlvbnMoKTsKICMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2plY3QgZGlyZWN0b3JpZXMgYXJlIHRo
ZXJlLgogbXkgQHByb2plY3RzID0gKCJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIiwgIldlYktp
dCIpOwogbXkgQG90aGVyRGlycyA9ICgiV2ViS2l0TGlicmFyaWVzIik7CitteSAkY2hlY2tvdXRT
Y3JpcHQgPSAiV2ViS2l0VG9vbHMvY2hlY2tvdXQiOworaWYgKCRzdmdTdXBwb3J0KSB7CisgICAg
JGNoZWNrb3V0U2NyaXB0IC49ICIgLS1zdmciOworICAgIHB1c2goQG90aGVyRGlycywgIlNWR1N1
cHBvcnQiKTsKK30KIGZvciBteSAkZGlyIChAcHJvamVjdHMsIEBvdGhlckRpcnMpIHsKICAgICBp
ZiAoISAtZCAkZGlyKSB7Ci0gICAgICAgIGRpZSAiTm8gJGRpciBkaXJlY3RvcnkgZm91bmQuIENh
bid0IGJ1aWxkXG4iOworICAgICAgICBkaWUgIkVycm9yOiBObyAkZGlyIGRpcmVjdG9yeSBmb3Vu
ZC4gUGxlYXNlIHJ1biBcIiRjaGVja291dFNjcmlwdFwiIGZpcnN0LlxuIjsKICAgICB9CiB9CiAK
KwogIyBDb3B5IGxpYnJhcnkgYW5kIGhlYWRlciBmcm9tIFdlYktpdExpYnJhcmllcyB0byBhIGZp
bmRhYmxlIHBsYWNlIGluIHRoZSBwcm9kdWN0IGRpcmVjdG9yeS4KIG15ICRzcmNMaWIgPSAiV2Vi
S2l0TGlicmFyaWVzL2xpYldlYktpdFN5c3RlbUludGVyZmFjZS5hIjsKIG15ICRsaWIgPSAiJHBy
b2R1Y3REaXIvbGliV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmEiOwpAQCAtNjgsOCArNzgsOCBAQCBp
ZiAoIS1lICRoZWFkZXIgfHwgLU0gJGhlYWRlciA+IC1NICRzcmNICiBmb3IgbXkgJGRpciAoQHBy
b2plY3RzKSB7CiAgICAgY2hkaXIgJGRpciBvciBkaWU7CiAgICAgbXkgJHJlc3VsdDsKLSAgICBp
ZiAoJGRpciBlcSAiSmF2YVNjcmlwdENvcmUiKSB7Ci0gICAgICAgICRyZXN1bHQgPSBzeXN0ZW0g
Inhjb2RlYnVpbGQiLCAiLXByb2plY3QiLCAiSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qIiwgQG9w
dGlvbnMsICItdGFyZ2V0IiwgIkFsbCI7CisgICAgaWYgKCRzdmdTdXBwb3J0ICYmICgkZGlyIGVx
ICJKYXZhU2NyaXB0Q29yZSIgfHwgJGRpciBlcSAiV2ViQ29yZSIpKSB7CisgICAgICAgICRyZXN1
bHQgPSBzeXN0ZW0gInhjb2RlYnVpbGQiLCAiLXByb2plY3QiLCAiJGRpci54Y29kZXByb2oiLCBA
b3B0aW9ucywgIi10YXJnZXQiLCAiJGRpcitTVkciOwogICAgIH0gZWxzZSB7CiAgICAgICAgICRy
ZXN1bHQgPSBzeXN0ZW0gInhjb2RlYnVpbGQiLCAiLXByb2plY3QiLCAiJGRpci54Y29kZXByb2oi
LCBAb3B0aW9uczsKICAgICB9CkBAIC04MCw2ICs5MCwxMiBAQCBmb3IgbXkgJGRpciAoQHByb2pl
Y3RzKSB7CiAjIFdyaXRlIG91dCBjb25ncmF0dWxhdGlvbnMgbWVzc2FnZS4KIHByaW50ICJcbiI7
CiBwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT1cbiI7Ci1wcmludCAiIFdlYiBLaXQgaXMgbm93IGJ1aWx0LiBUbyBydW4gU2Fm
YXJpIHdpdGggdGhpcyBuZXdseS1idWlsdFxuIjsKLXByaW50ICIgY29kZSwgdXNlIHRoZSBydW4t
c2FmYXJpIHNjcmlwdC5cbiI7CitwcmludCAiIFdlYktpdCBpcyBub3cgYnVpbHQuIFRvIHJ1biBT
YWZhcmkgd2l0aCB0aGlzIG5ld2x5LWJ1aWx0XG4iOworcHJpbnQgIiBjb2RlLCB1c2UgdGhlIFwi
cnVuLXNhZmFyaVwiIHNjcmlwdC5cbiI7CitpZiAoJHN2Z1N1cHBvcnQpIHsKKyAgICBwcmludCAi
XG4gTk9URTogV2ViS2l0IGhhcyBiZWVuIGJ1aWx0IHdpdGggU1ZHIHN1cHBvcnQgZW5hYmxlZC5c
biI7CisgICAgcHJpbnQgIiBTYWZhcmkgd2lsbCBoYXZlIGJhc2ljIFNWRyB2aWV3aW5nIGNhcGF0
aWJpbGllcy5cbiI7CisgICAgcHJpbnQgIiBBZGRpdGlvbmFsIFNWRyB0ZXN0aW5nIGlzIHBvc3Np
YmxlIHVzaW5nIERyYXdUZXN0OlxuIjsKKyAgICBwcmludCAiIHJ1biBcImJ1aWxkLWRyYXd0ZXN0
XCIgZm9sbG93ZWQgYnkgXCJydW4tZHJhd3Rlc3RcIlxuIjsKK30KIHByaW50ICI9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIjsKSW5k
ZXg6IFNjcmlwdHMvcnVuLWRyYXd0ZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi1kcmF3dGVzdCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
CmRpZmYgLXAgLXUgLXIxLjEgU2NyaXB0cy9ydW4tZHJhd3Rlc3QKLS0tIFNjcmlwdHMvcnVuLWRy
YXd0ZXN0CTMxIEp1bCAyMDA1IDIwOjAyOjMzIC0wMDAwCTEuMQorKysgU2NyaXB0cy9ydW4tZHJh
d3Rlc3QJMjIgU2VwIDIwMDUgMTE6NDE6MTIgLTAwMDAKQEAgLTM2LDExICszNiwxMiBAQCB1c2Ug
d2Via2l0ZGlyczsKIHNldENvbmZpZ3VyYXRpb24oKTsKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVj
dERpcigpOwogCi0jIENoZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBhcmUgYnVp
bHQuCi1jaGVja1NWR0ZyYW1ld29ya3MoKTsKKyMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBm
cmFtZXdvcmtzIGFyZSBidWlsdCAody8gU1ZHIHN1cHBvcnQpLgorY2hlY2tGcmFtZXdvcmtzKCk7
CitjaGVja1dlYkNvcmVTVkdTdXBwb3J0KCk7CiAKICMgU2V0IHVwIERZTERfRlJBTUVXT1JLX1BB
VEggdG8gcG9pbnQgdG8gdGhlIHByb2R1Y3QgZGlyZWN0b3J5LgotcHJpbnQgIlN0YXJ0IERyYXdU
ZXN0IHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2ViQ29y
ZStTVkcgaW4gJHByb2R1Y3REaXIuXG4iOworcHJpbnQgIlN0YXJ0IERyYXdUZXN0IHdpdGggRFlM
RF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2ViS2l0IGluICRwcm9kdWN0
RGlyLlxuIjsKICRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0gPSAkcHJvZHVjdERpcjsKIG15ICRk
cmF3dGVzdFBhdGggPSAiJHByb2R1Y3REaXIvRHJhd1Rlc3QuYXBwL0NvbnRlbnRzL01hY09TL0Ry
YXdUZXN0IjsKIGV4ZWMgJGRyYXd0ZXN0UGF0aCBvciBkaWU7CkluZGV4OiBTY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdFRvb2xzL1Nj
cmlwdHMvcnVuLXdlYmtpdC10ZXN0cyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNgpkaWZmIC1w
IC11IC1yMS4yNiBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKLS0tIFNjcmlwdHMvcnVuLXdlYmtp
dC10ZXN0cwkyMCBTZXAgMjAwNSAwMToyMzoxMiAtMDAwMAkxLjI2CisrKyBTY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMJMjIgU2VwIDIwMDUgMTE6NDE6MTMgLTAwMDAKQEAgLTkxLDExICs5MSw4IEBA
IG15ICRpbWFnZURpZmZUb29sID0gIiRwcm9kdWN0RGlyL0ltYWdlRGkKIGRpZSAiY2FuJ3QgZmlu
ZCBleGVjdXRhYmxlICRkdW1wVG9vbE5hbWUgKGxvb2tlZCBpbiAkcHJvZHVjdERpcilcbiIgaWYg
IS14ICR0b29sOwogZGllICJjYW4ndCBmaW5kIGV4ZWN1dGFibGUgJGltYWdlRGlmZlRvb2wgKGxv
b2tlZCBpbiAkcHJvZHVjdERpcilcbiIgaWYgJHBpeGVsVGVzdHMgJiYgIS14ICRpbWFnZURpZmZU
b29sOwogCi1pZiAoJHRlc3RTVkdzKSB7Ci0gICAgY2hlY2tTVkdGcmFtZXdvcmtzKCk7Ci19IGVs
c2UgewotICAgIGNoZWNrRnJhbWV3b3JrcygpOwotfQorY2hlY2tGcmFtZXdvcmtzKCk7CitjaGVj
a1dlYkNvcmVTVkdTdXBwb3J0KCkgaWYgJHRlc3RTVkdzOwogCiBteSAkbGF5b3V0VGVzdHNOYW1l
ID0gImxheW91dC10ZXN0cyI7CiBpZiAoJHRlc3RTVkdzKSB7CkluZGV4OiBTY3JpcHRzL3dlYmtp
dGRpcnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNgpkaWZmIC1wIC11IC1y
MS4xNiBTY3JpcHRzL3dlYmtpdGRpcnMucG0KLS0tIFNjcmlwdHMvd2Via2l0ZGlycy5wbQkxOCBB
dWcgMjAwNSAxNzo0NTo1MiAtMDAwMAkxLjE2CisrKyBTY3JpcHRzL3dlYmtpdGRpcnMucG0JMjIg
U2VwIDIwMDUgMTE6NDE6MTMgLTAwMDAKQEAgLTE4OSwxMyArMTg5LDE0IEBAIHN1YiBjaGVja0Zy
YW1ld29ya3MKICAgICB9CiB9CiAKLXN1YiBjaGVja1NWR0ZyYW1ld29ya3MKK3N1YiBjaGVja1dl
YkNvcmVTVkdTdXBwb3J0CiB7CiAgICAgZGV0ZXJtaW5lQ29uZmlndXJhdGlvblByb2R1Y3REaXIo
KTsKLSAgICBmb3IgbXkgJGZyYW1ld29yayAoIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUrU1ZH
IikgewotICAgICAgICBteSAkcGF0aCA9ICIkY29uZmlndXJhdGlvblByb2R1Y3REaXIvJGZyYW1l
d29yay5mcmFtZXdvcmsvVmVyc2lvbnMvQS8kZnJhbWV3b3JrIjsKLSAgICAgICAgZGllICJDYW4n
dCBmaW5kIGJ1aWx0IGZyYW1ld29yayBhdCBcIiRwYXRoXCIuXG4iIHVubGVzcyAteCAkcGF0aDsK
LSAgICB9CisgICAgbXkgJGZyYW1ld29yayA9ICJXZWJDb3JlIjsKKyAgICBteSAkcGF0aCA9ICIk
Y29uZmlndXJhdGlvblByb2R1Y3REaXIvJGZyYW1ld29yay5mcmFtZXdvcmsvVmVyc2lvbnMvQS8k
ZnJhbWV3b3JrIjsKKyAgICBteSAkZnJhbWV3b3JrU3ltYm9scyA9IGBubSAkcGF0aGA7CisgICAg
bXkgJGhhc1NWR1N1cHBvcnQgPSAoJGZyYW1ld29ya1N5bWJvbHMgPX4gL1NWRy8pOworICAgIGRp
ZSAiJGZyYW1ld29yayBhdCBcIiRwYXRoXCIgZG9lcyBub3QgaW5jbHVkZSBTVkcgU3VwcG9ydCwg
cGxlYXNlIHJ1biBidWlsZC13ZWJraXQgLS1zdmdcbiIgdW5sZXNzICRoYXNTVkdTdXBwb3J0Owog
fQogCiBzdWIgY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZwo=
</data>
<flag name="review"
          id="609"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4003</attachid>
            <date>2005-09-22 05:37:41 -0700</date>
            <delta_ts>2005-09-22 14:47:20 -0700</delta_ts>
            <desc>Consolidate tools and update to match WebCore+SVG -&gt; WebCore product name.</desc>
            <filename>tools-update-svg.patch</filename>
            <type>text/plain</type>
            <size>23701</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGNoZWNrb3V0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29s
cy9jaGVja291dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIxLjIgY2hl
Y2tvdXQKLS0tIGNoZWNrb3V0CTcgSnVuIDIwMDUgMjI6MDI6MjQgLTAwMDAJMS4yCisrKyBjaGVj
a291dAkyMiBTZXAgMjAwNSAxMjozODo0NCAtMDAwMApAQCAtMjksNiArMjksMTAgQEAKICMgRmly
c3QgdGltZSBjaGVjay1vdXQgc2NyaXB0IGZvciBXZWIgS2l0IE9wZW4gU291cmNlIFByb2plY3Qu
CiAKIHVzZSBzdHJpY3Q7Cit1c2UgR2V0b3B0OjpMb25nOworCitteSAkaW5jbHVkZVNWRyA9IDA7
CitHZXRPcHRpb25zKCdzdmcnID0+IFwkaW5jbHVkZVNWRyk7CiAKICMgQ2hlY2sgdGhhdCB3ZSdy
ZSBpbiB0aGUgcmlnaHQgZGlyZWN0b3J5LgogaWYgKCEgLWQgIldlYktpdFRvb2xzIikgewpAQCAt
NDgsMTMgKzUyLDMwIEBAIGNsb3NlIFJPT1Q7CiAKICMgQ2hlY2sgb3V0IGFsbCB0aGUgc291cmNl
cy4KIHByaW50ICJDVlMgcm9vdCBpcyAkcm9vdFxuIjsKLXByaW50ICJDaGVja2luZyBvdXQgV2Vi
S2l0VG9vbHMgKGFnYWluKSwgSmF2YVNjcmlwdENvcmUsIFdlYkNvcmUsIFdlYktpdExpYnJhcmll
cywgYW5kIFdlYktpdFxuIjsKLW9wZW4gQ1ZTLCAiY3ZzIC1kICckcm9vdCcgY28gLVAgV2ViS2l0
VG9vbHMgSmF2YVNjcmlwdENvcmUgV2ViQ29yZSBXZWJLaXRMaWJyYXJpZXMgV2ViS2l0IHwiIG9y
IGRpZTsKK3ByaW50ICJDaGVja2luZyBvdXQgV2ViS2l0VG9vbHMgKGFnYWluKSwgSmF2YVNjcmlw
dENvcmUsIFdlYkNvcmUsIFdlYktpdExpYnJhcmllcyI7CitpZiAoJGluY2x1ZGVTVkcpIHsKKyAg
ICBwcmludCAiLCBXZWJLaXQgYW5kIFNWR1N1cHBvcnRcbiI7Cit9IGVsc2UgeworICAgIHByaW50
ICIgYW5kIFdlYktpdFxuIjsKK30KK215ICRkaXJlY3RvcmllcyA9ICJXZWJLaXRUb29scyBKYXZh
U2NyaXB0Q29yZSBXZWJDb3JlIFdlYktpdExpYnJhcmllcyBXZWJLaXQiOworJGRpcmVjdG9yaWVz
IC49ICIgU1ZHU3VwcG9ydCIgaWYgJGluY2x1ZGVTVkc7CitvcGVuIENWUywgImN2cyAtZCAnJHJv
b3QnIGNvIC1QICRkaXJlY3RvcmllcyB8IiBvciBkaWU7CiB3aGlsZSAoPENWUz4pIHsKICAgICBw
cmludDsKIH0KIGNsb3NlIENWUzsKIAoraWYgKCRpbmNsdWRlU1ZHKSB7CisgICAgIyBNYWtlIHRo
ZSBuZWNlc3Nhcnkgc3ltbGlua3MKKyAgICBwcmludCAiXG5DcmVhdGluZyBzeW1saW5rcyAoa2Rv
bSwga2NhbnZhcywga3N2ZzIsIFdlYkNvcmUrU1ZHLCBzdmctdGVzdHMpIGZyb20gV2ViQ29yZSBp
bnRvIFNWR1N1cHBvcnRcbiI7CisgICAgc3ltbGluaygiLi4vU1ZHU3VwcG9ydC9rZG9tIiwgIldl
YkNvcmUva2RvbSIpOworICAgIHN5bWxpbmsoIi4uL1NWR1N1cHBvcnQva2NhbnZhcyIsICJXZWJD
b3JlL2tjYW52YXMiKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tzdmcyIiwgIldlYkNv
cmUva3N2ZzIiKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L1dlYkNvcmUrU1ZHIiwgIldl
YkNvcmUvV2ViQ29yZStTVkciKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L2xheW91dC10
ZXN0cyIsICJXZWJDb3JlL3N2Zy10ZXN0cyIpOworfQorCiAjIFJlYWR5IHRvIGJ1aWxkLgogcHJp
bnQgIlxuIjsKIHByaW50ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CkluZGV4OiBjaGVja291dC1zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogY2hlY2tvdXQtc3ZnCmRpZmYgLU4gY2hlY2tvdXQtc3ZnCi0tLSBjaGVja291
dC1zdmcJNyBBdWcgMjAwNSAxOTozMTowMyAtMDAwMAkxLjMKKysrIGNoZWNrb3V0LXN2ZwkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDczICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAt
dwotCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBGaXJzdCB0aW1lIGNo
ZWNrLW91dCBzY3JpcHQgZm9yIFdlYiBLaXQgT3BlbiBTb3VyY2UgUHJvamVjdC4KLQotdXNlIHN0
cmljdDsKLQotIyBDaGVjayB0aGF0IHdlJ3JlIGluIHRoZSByaWdodCBkaXJlY3RvcnkuCi1pZiAo
ISAtZCAiV2ViS2l0VG9vbHMiKSB7Ci0gICAgaWYgKC1kICIuLi9XZWJLaXRUb29scyIpIHsKLSAg
ICAgICAgY2hkaXIgIi4uIiBvciBkaWU7Ci0gICAgfQotICAgIGlmICghIC1kICJXZWJLaXRUb29s
cyIpIHsKLSAgICAgICAgZGllICJObyBXZWJLaXRUb29scyBkaXJlY3RvcnkgZm91bmQuIFBsZWFz
ZSBydW4gdGhpcyBzY3JpcHQgZnJvbSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgV2ViS2l0VG9v
bHMuXG4iOwotICAgIH0KLX0KLQotIyBSZWFkIHRoZSBDVlMgcm9vdCBvdXQgb2YgdGhlIHByb2pl
Y3QgdGhhdCdzIGFscmVhZHkgY2hlY2tlZCBvdXQuCi1vcGVuIFJPT1QsICJXZWJLaXRUb29scy9D
VlMvUm9vdCIgb3IgZGllOwotbXkgJHJvb3QgPSA8Uk9PVD47Ci1jaG9tcCAkcm9vdDsKLWNsb3Nl
IFJPT1Q7Ci0KLSMgQ2hlY2sgb3V0IGFsbCB0aGUgc291cmNlcy4KLXByaW50ICJDVlMgcm9vdCBp
cyAkcm9vdFxuIjsKLXByaW50ICJDaGVja2luZyBvdXQgV2ViQ29yZSAoYWdhaW4pIGFuZCBTVkdT
dXBwb3J0XG4iOwotb3BlbiBDVlMsICJjdnMgLWQgJyRyb290JyBjbyAtUCBXZWJDb3JlIFNWR1N1
cHBvcnQgfCIgb3IgZGllOwotd2hpbGUgKDxDVlM+KSB7Ci0gICAgcHJpbnQ7Ci19Ci1jbG9zZSBD
VlM7Ci0KLSMgTWFrZSB0aGUgbmVjZXNzYXJ5IHN5bWxpbmtzCi1wcmludCAiXG5DcmVhdGluZyBz
eW1saW5rcyAoa2RvbSwga2NhbnZhcywga3N2ZzIsIFdlYkNvcmUrU1ZHLCBzdmctdGVzdHMpIGZy
b20gV2ViQ29yZSBpbnRvIFNWR1N1cHBvcnRcbiI7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tk
b20iLCAiV2ViQ29yZS9rZG9tIik7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tjYW52YXMiLCAi
V2ViQ29yZS9rY2FudmFzIik7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tzdmcyIiwgIldlYkNv
cmUva3N2ZzIiKTsKLXN5bWxpbmsoIi4uL1NWR1N1cHBvcnQvV2ViQ29yZStTVkciLCAiV2ViQ29y
ZS9XZWJDb3JlK1NWRyIpOwotc3ltbGluaygiLi4vU1ZHU3VwcG9ydC9sYXlvdXQtdGVzdHMiLCAi
V2ViQ29yZS9zdmctdGVzdHMiKTsKLQotIyBSZWFkeSB0byBidWlsZC4KLXByaW50ICJcbiI7Ci1w
cmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09XG4iOwotcHJpbnQgIiBXZWJDb3JlK1NWRyBzb3VyY2VzIGFyZSBub3cgY2hl
Y2tlZCBvdXQgYW5kIHJlYWR5IHRvIGJ1aWxkLlxuIjsKLXByaW50ICIgWW91IGNhbiBidWlsZCBi
eSBwcm9qZWN0cyBpbiBYY29kZSBieSBzZWxlY3RpbmcgdGhlIFxuIjsKLXByaW50ICIgSmF2YVNj
cmlwdENvcmUrU1ZHIGFuZCBXZWJDb3JlK1NWRyB0YXJnZXRzLlxuIjsKLXByaW50ICIgU2VlIGh0
dHA6Ly93ZWJraXQub3BlbmRhcndpbi5vcmcvcHJvamVjdHMvc3ZnIGZvciBtb3JlIGluZm8uXG4i
OwotcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PVxuIjsKSW5kZXg6IERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdFRvb2xz
L0RyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2osdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKLS0tIERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJMjkgSnVsIDIwMDUgMjI6MDU6MTggLTAwMDAJMS4yCisrKyBEcmF3VGVzdC9EcmF3
VGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTIyIFNlcCAyMDA1IDEyOjM4OjQ1IC0wMDAw
CkBAIC0yMyw3ICsyMyw3IEBACiAJCUE4QzAwNkYzMDg5ODY1RTkwMEJBNTExNCAvKiBEcmF3VGVz
dERvY3VtZW50Lm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThDMDA2RUQwODk4NjVFOTAwQkE1MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQubmliICov
OyB9OwogCQlBOEMwMDZGNDA4OTg2NUU5MDBCQTUxMTQgLyogSW5zcGVjdG9yLm5pYiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMDA2RUYwODk4NjVF
OTAwQkE1MTE0IC8qIEluc3BlY3Rvci5uaWIgKi87IH07CiAJCUE4QzAwNkY1MDg5ODY1RTkwMEJB
NTExNCAvKiBUZXN0Vmlld2VyLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMDA2RjEwODk4NjVFOTAwQkE1MTE0IC8qIFRlc3RWaWV3ZXIubmli
ICovOyB9OwotCQlBOEMwMDZGQTA4OTg2NjUyMDBCQTUxMTQgLyogV2ViQ29yZStTVkcuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MDA2RjkwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLzsgfTsKKwkJ
QThDMDA2RkEwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMDA2RjkwODk4NjY1MjAw
QkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkU3R5bGUgc2VjdGlvbiAqLwpAQCAtODUsNyAr
ODUsNyBAQAogCQlBOEMwMDZFRTA4OTg2NUU5MDBCQTUxMTQgLyogRW5nbGlzaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1l
ID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovRHJhd1Rlc3REb2N1bWVudC5uaWI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzAwNkYwMDg5ODY1RTkwMEJBNTExNCAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5uaWI7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbnNwZWN0
b3IubmliOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEMwMDZGMjA4OTg2NUU5MDBC
QTUxMTQgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHBy
b2ovVGVzdFZpZXdlci5uaWI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QzAwNkY5
MDg5ODY2NTIwMEJBNTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0
aCA9ICJXZWJDb3JlK1NWRy5mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQlBOEMwMDZGOTA4OTg2NjUyMDBCQTUxMTQgLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgcGF0aCA9IFdlYkNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC05NCw3ICs5NCw3
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJ
OEQxMTA3MkYwNDg2Q0VCODAwRTQ3MDkwIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLAotCQkJCUE4QzAwNkZBMDg5ODY2NTIwMEJBNTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBOEMwMDZGQTA4OTg2NjUyMDBCQTUxMTQgLyogV2Vi
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExNyw3ICsxMTcsNyBAQAogCQkx
MDU4QzdBMEZFQTU0RjAxMTFDQTJDQkIgLyogTGlua2VkIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE4QzAwNkY5MDg5ODY2NTIwMEJB
NTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8sCisJCQkJQThDMDA2RjkwODk4NjY1MjAw
QkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrICovLAogCQkJCTEwNThDN0ExRkVBNTRGMDExMUNB
MkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJMaW5rZWQgRnJh
bWV3b3JrcyI7CkBAIC0zNDgsNyArMzQ4LDYgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0J
CQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICJcIiQoU1JDUk9PVCkvLi4vLi4vLi4vYnVpbGQv
RGV2ZWxvcG1lbnRcIiI7CiAJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CiAJCQkJR0NDX0VO
QUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gWUVTOwogCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdf
U1lNQk9MUyA9IFlFUzsKQEAgLTM3MSw3ICszNzAsNiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7Ci0JCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICJcIiQoU1JDUk9PVCkvLi4vLi4vLi4v
YnVpbGQvRGV2ZWxvcG1lbnRcIiI7CiAJCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0g
Tk87CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87CiAJCQkJR0NDX1BS
RUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKQEAgLTM5MSw3ICszODksNiBAQAogCQlBOEMw
MDY3NzA4OTg2MjRFMDBCQTUxMTQgLyogRGVmYXVsdCAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlGUkFNRVdPUktfU0VBUkNI
X1BBVEhTID0gIlwiJChTUkNST09UKS8uLi8uLi8uLi9idWlsZC9EZXZlbG9wbWVudFwiIjsKIAkJ
CQlHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfUFJFQ09NUElM
RV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19QUkVGSVhfSEVBREVSID0gRHJhd1Rlc3Rf
UHJlZml4LnBjaDsKSW5kZXg6IER1bXBLQ2FudmFzVHJlZS9EdW1wS0NhbnZhc1RyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0
VG9vbHMvRHVtcEtDYW52YXNUcmVlL0R1bXBLQ2FudmFzVHJlZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBEdW1wS0Nh
bnZhc1RyZWUvRHVtcEtDYW52YXNUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKLS0tIER1
bXBLQ2FudmFzVHJlZS9EdW1wS0NhbnZhc1RyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkx
OCBBdWcgMjAwNSAwNTo1OTowNyAtMDAwMAkxLjIKKysrIER1bXBLQ2FudmFzVHJlZS9EdW1wS0Nh
bnZhc1RyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkyMiBTZXAgMjAwNSAxMjozODo0NSAt
MDAwMApAQCAtOSw3ICs5LDcgQEAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJ
CThERDc2RjlBMDQ4NkFBNzYwMEQ5NkI1RSAvKiBEdW1wS0NhbnZhc1RyZWUubSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkI3Nzk2RkU4NDE1NURDMDJB
QUMwNyAvKiBEdW1wS0NhbnZhc1RyZWUubSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgp
OyB9OyB9OwogCQk4REQ3NkY5QzA0ODZBQTc2MDBEOTZCNUUgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZC
Nzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07Ci0JCUE4
MTBFNEJDMDhBNDQ2MjgwMDMzM0Q5OCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEwRTRCQjA4QTQ0NjI4
MDAzMzNEOTggLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICovOyB9OworCQlBODEwRTRCQzA4QTQ0
NjI4MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2Vi
Q29yZS5mcmFtZXdvcmsgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCkBAIC01Miw3ICs1Miw3IEBACiAJCTA4
RkI3Nzk2RkU4NDE1NURDMDJBQUMwNyAvKiBEdW1wS0NhbnZhc1RyZWUubSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gRHVtcEtDYW52YXNUcmVlLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4RkI3NzlFRkU4NDE1NURDMDJBQUMwNyAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8qIER1bXBL
Q2FudmFzVHJlZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gRHVtcEtDYW52YXNUcmVlOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owot
CQlBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IHBhdGggPSAiV2ViQ29yZStTVkcuZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJQTgxMEU0QkIwOEE0NDYyODAwMzMzRDk4IC8qIFdlYkNvcmUu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBXZWJDb3JlLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
NjEsNyArNjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAogCQkJCThERDc2RjlDMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAotCQkJCUE4MTBFNEJDMDhBNDQ2MjgwMDMzM0Q5OCAvKiBXZWJD
b3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBODEwRTRCQzA4QTQ0NjI4
MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg5LDcg
Kzg5LDcgQEAKIAkJMDhGQjc3OURGRTg0MTU1REMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29y
a3MgYW5kIExpYnJhcmllcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJQTgxMEU0QkIwOEE0NDYyODAwMzMzRDk4IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29y
ayAqLywKKwkJCQlBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki8sCiAJCQkJMDhGQjc3OUVGRTg0MTU1REMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVz
IjsKSW5kZXg6IFNjcmlwdHMvYnVpbGQtZHJhd3Rlc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtZHJhd3Rlc3QsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIFNjcmlwdHMvYnVpbGQtZHJhd3Rlc3QKLS0tIFNj
cmlwdHMvYnVpbGQtZHJhd3Rlc3QJNSBBdWcgMjAwNSAwMToyNDozMSAtMDAwMAkxLjIKKysrIFNj
cmlwdHMvYnVpbGQtZHJhd3Rlc3QJMjIgU2VwIDIwMDUgMTI6Mzg6NDUgLTAwMDAKQEAgLTM5LDgg
KzM5LDkgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogY2hkaXJXZWJLaXQoKTsKIG15IEBvcHRpb25z
ID0gWGNvZGVPcHRpb25zKCk7CiAKLSMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBmcmFtZXdv
cmtzIGFyZSBidWlsdC4KLWNoZWNrU1ZHRnJhbWV3b3JrcygpOworIyBDaGVjayB0byBzZWUgdGhh
dCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0ICh3LyBTVkcgc3VwcG9ydCkuCitjaGVja0Zy
YW1ld29ya3MoKTsKK2NoZWNrV2ViQ29yZVNWR1N1cHBvcnQoKTsKIAogIyBCdWlsZAogY2hkaXIg
IldlYktpdFRvb2xzL0RyYXdUZXN0IiBvciBkaWU7CkluZGV4OiBTY3JpcHRzL2J1aWxkLWR1bXBr
Y2FudmFzdHJlZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWlsZC1kdW1wa2NhbnZhc3RyZWUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZm
IC1wIC11IC1yMS4xIFNjcmlwdHMvYnVpbGQtZHVtcGtjYW52YXN0cmVlCi0tLSBTY3JpcHRzL2J1
aWxkLWR1bXBrY2FudmFzdHJlZQk2IEF1ZyAyMDA1IDE4OjM2OjIyIC0wMDAwCTEuMQorKysgU2Ny
aXB0cy9idWlsZC1kdW1wa2NhbnZhc3RyZWUJMjIgU2VwIDIwMDUgMTI6Mzg6NDUgLTAwMDAKQEAg
LTM5LDggKzM5LDkgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogY2hkaXJXZWJLaXQoKTsKIG15IEBv
cHRpb25zID0gWGNvZGVPcHRpb25zKCk7CiAKLSMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBm
cmFtZXdvcmtzIGFyZSBidWlsdC4KLWNoZWNrU1ZHRnJhbWV3b3JrcygpOworIyBDaGVjayB0byBz
ZWUgdGhhdCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0ICh3LyBTVkcgc3VwcG9ydCkuCitj
aGVja0ZyYW1ld29ya3MoKTsKK2NoZWNrV2ViQ29yZVNWR1N1cHBvcnQoKTsKIAogIyBCdWlsZAog
Y2hkaXIgIldlYktpdFRvb2xzL0R1bXBLQ2FudmFzVHJlZSIgb3IgZGllOwpJbmRleDogU2NyaXB0
cy9idWlsZC13ZWJjb3JlLXN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBTY3JpcHRzL2J1aWxkLXdl
YmNvcmUtc3ZnCmRpZmYgLU4gU2NyaXB0cy9idWlsZC13ZWJjb3JlLXN2ZwotLS0gU2NyaXB0cy9i
dWlsZC13ZWJjb3JlLXN2Zwk1IEF1ZyAyMDA1IDAxOjI0OjMxIC0wMDAwCTEuMgorKysgU2NyaXB0
cy9idWlsZC13ZWJjb3JlLXN2ZwkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDY1ICsw
LDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0jICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIyBTaW1wbGlmaWVkIGJ1aWxkIHNjcmlwdCBmb3IgV2ViQ29yZStTVkcKLQotdXNl
IHN0cmljdDsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIHdlYmtp
dGRpcnM7Ci0KLWNoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcoKTsKLXNldENvbmZpZ3VyYXRpb24o
KTsKLWNoZGlyV2ViS2l0KCk7Ci1teSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLW15IEBv
cHRpb25zID0gWGNvZGVPcHRpb25zKCk7Ci0KLSMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2plY3Qg
ZGlyZWN0b3JpZXMgYXJlIHRoZXJlLgotbXkgQHByb2plY3RzID0gKCJKYXZhU2NyaXB0Q29yZSIs
ICJXZWJDb3JlIik7Ci1teSBAb3RoZXJEaXJzID0gKCJTVkdTdXBwb3J0Iik7Ci1mb3IgbXkgJGRp
ciAoQHByb2plY3RzLCBAb3RoZXJEaXJzKSB7Ci0gICAgaWYgKCEgLWQgJGRpcikgewotICAgICAg
ICBkaWUgIk5vICRkaXIgZGlyZWN0b3J5IGZvdW5kLiBDYW4ndCBidWlsZCwgcnVuIFdlYktpdFRv
b2xzL2NoZWNrb3V0LXN2ZyBmaXJzdC5cbiI7Ci0gICAgfQotfQotCi0jIEJ1aWxkLCBhbmQgYWJv
cnQgaWYgdGhlIGJ1aWxkIGZhaWxzLgotZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewotICAgIGNo
ZGlyICRkaXIgb3IgZGllOwotICAgIG15ICRyZXN1bHQgPSBzeXN0ZW0gInhjb2RlYnVpbGQiLCAi
LXByb2plY3QiLCAiJGRpci54Y29kZXByb2oiLCBAb3B0aW9ucywgIi10YXJnZXQiLCAiJGRpcitT
VkciOwotICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OwotICAgIGNoZGlyICIuLiIgb3IgZGll
OwotfQotCi0jIFdyaXRlIG91dCBjb25ncmF0dWxhdGlvbnMgbWVzc2FnZS4KLXByaW50ICJcbiI7
Ci1wcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT1cbiI7Ci1wcmludCAiIFdlYkNvcmUrU1ZHIGlzIG5vdyBidWlsdC5cbiI7Ci1w
cmludCAiIEl0IGlzICpOT1QqIHBvc3NpYmxlIHRvIHJ1biBTYWZhcmkgd2l0aCBTVkcgc3VwcG9y
dC5cbiI7Ci1wcmludCAiIFRvIHZpZXcgU1ZHcyB1c2UgYnVpbGQtZHJhd3Rlc3QgYW5kIHJ1bi1k
cmF3dGVzdFxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PVxuIjsKSW5kZXg6IFNjcmlwdHMvYnVpbGQtd2Via2l0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNApkaWZmIC1wIC11IC1yMS4xNCBTY3JpcHRz
L2J1aWxkLXdlYmtpdAotLS0gU2NyaXB0cy9idWlsZC13ZWJraXQJNSBBdWcgMjAwNSAwMToyNDoz
MSAtMDAwMAkxLjE0CisrKyBTY3JpcHRzL2J1aWxkLXdlYmtpdAkyMiBTZXAgMjAwNSAxMjozODo0
NSAtMDAwMApAQCAtMzAsOSArMzAsMTMgQEAKIAogdXNlIHN0cmljdDsKIHVzZSBGaW5kQmluOwor
dXNlIEdldG9wdDo6TG9uZzsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJz
OwogCitteSAkc3ZnU3VwcG9ydCA9IDA7CitHZXRPcHRpb25zKCdzdmcnID0+IFwkc3ZnU3VwcG9y
dCk7CisKIGNoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcoKTsKIHNldENvbmZpZ3VyYXRpb24oKTsK
IGNoZGlyV2ViS2l0KCk7CkBAIC00MiwxMiArNDYsMTggQEAgbXkgQG9wdGlvbnMgPSBYY29kZU9w
dGlvbnMoKTsKICMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2plY3QgZGlyZWN0b3JpZXMgYXJlIHRo
ZXJlLgogbXkgQHByb2plY3RzID0gKCJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIiwgIldlYktp
dCIpOwogbXkgQG90aGVyRGlycyA9ICgiV2ViS2l0TGlicmFyaWVzIik7CitteSAkY2hlY2tvdXRT
Y3JpcHQgPSAiV2ViS2l0VG9vbHMvY2hlY2tvdXQiOworaWYgKCRzdmdTdXBwb3J0KSB7CisgICAg
JGNoZWNrb3V0U2NyaXB0IC49ICIgLS1zdmciOworICAgIHB1c2goQG90aGVyRGlycywgIlNWR1N1
cHBvcnQiKTsKK30KIGZvciBteSAkZGlyIChAcHJvamVjdHMsIEBvdGhlckRpcnMpIHsKICAgICBp
ZiAoISAtZCAkZGlyKSB7Ci0gICAgICAgIGRpZSAiTm8gJGRpciBkaXJlY3RvcnkgZm91bmQuIENh
bid0IGJ1aWxkXG4iOworICAgICAgICBkaWUgIkVycm9yOiBObyAkZGlyIGRpcmVjdG9yeSBmb3Vu
ZC4gUGxlYXNlIHJ1biBcIiRjaGVja291dFNjcmlwdFwiIGZpcnN0LlxuIjsKICAgICB9CiB9CiAK
KwogIyBDb3B5IGxpYnJhcnkgYW5kIGhlYWRlciBmcm9tIFdlYktpdExpYnJhcmllcyB0byBhIGZp
bmRhYmxlIHBsYWNlIGluIHRoZSBwcm9kdWN0IGRpcmVjdG9yeS4KIG15ICRzcmNMaWIgPSAiV2Vi
S2l0TGlicmFyaWVzL2xpYldlYktpdFN5c3RlbUludGVyZmFjZS5hIjsKIG15ICRsaWIgPSAiJHBy
b2R1Y3REaXIvbGliV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmEiOwpAQCAtNjQsMTIgKzc0LDE2IEBA
IGlmICghLWUgJGhlYWRlciB8fCAtTSAkaGVhZGVyID4gLU0gJHNyY0gKICAgICBzeXN0ZW0gImRp
dHRvIiwgJHNyY0hlYWRlciwgJGhlYWRlcjsKIH0KIAorIyBGb3JjZSByZS1saW5rIG9mIGV4aXN0
aW5nIGxpYnJhcmllcyBpZiBkaWZmZXJlbnQgdGhhbiBleHBlY3RlZAorcmVtb3ZlTGlicmFyeURl
cGVuZGluZ09uUlRUSSgiSmF2YVNjcmlwdENvcmUiLCAkc3ZnU3VwcG9ydCk7CityZW1vdmVMaWJy
YXJ5RGVwZW5kaW5nT25SVFRJKCJXZWJDb3JlIiwgJHN2Z1N1cHBvcnQpOworCiAjIEJ1aWxkLCBh
bmQgYWJvcnQgaWYgdGhlIGJ1aWxkIGZhaWxzLgogZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewog
ICAgIGNoZGlyICRkaXIgb3IgZGllOwogICAgIG15ICRyZXN1bHQ7Ci0gICAgaWYgKCRkaXIgZXEg
IkphdmFTY3JpcHRDb3JlIikgewotICAgICAgICAkcmVzdWx0ID0gc3lzdGVtICJ4Y29kZWJ1aWxk
IiwgIi1wcm9qZWN0IiwgIkphdmFTY3JpcHRDb3JlLnhjb2RlcHJvaiIsIEBvcHRpb25zLCAiLXRh
cmdldCIsICJBbGwiOworICAgIGlmICgkc3ZnU3VwcG9ydCAmJiAoJGRpciBlcSAiSmF2YVNjcmlw
dENvcmUiIHx8ICRkaXIgZXEgIldlYkNvcmUiKSkgeworICAgICAgICAkcmVzdWx0ID0gc3lzdGVt
ICJ4Y29kZWJ1aWxkIiwgIi1wcm9qZWN0IiwgIiRkaXIueGNvZGVwcm9qIiwgQG9wdGlvbnMsICIt
dGFyZ2V0IiwgIiRkaXIrU1ZHIjsKICAgICB9IGVsc2UgewogICAgICAgICAkcmVzdWx0ID0gc3lz
dGVtICJ4Y29kZWJ1aWxkIiwgIi1wcm9qZWN0IiwgIiRkaXIueGNvZGVwcm9qIiwgQG9wdGlvbnM7
CiAgICAgfQpAQCAtODAsNiArOTQsMTIgQEAgZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewogIyBX
cml0ZSBvdXQgY29uZ3JhdHVsYXRpb25zIG1lc3NhZ2UuCiBwcmludCAiXG4iOwogcHJpbnQgIj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
XG4iOwotcHJpbnQgIiBXZWIgS2l0IGlzIG5vdyBidWlsdC4gVG8gcnVuIFNhZmFyaSB3aXRoIHRo
aXMgbmV3bHktYnVpbHRcbiI7Ci1wcmludCAiIGNvZGUsIHVzZSB0aGUgcnVuLXNhZmFyaSBzY3Jp
cHQuXG4iOworcHJpbnQgIiBXZWJLaXQgaXMgbm93IGJ1aWx0LiBUbyBydW4gU2FmYXJpIHdpdGgg
dGhpcyBuZXdseS1idWlsdFxuIjsKK3ByaW50ICIgY29kZSwgdXNlIHRoZSBcInJ1bi1zYWZhcmlc
IiBzY3JpcHQuXG4iOworaWYgKCRzdmdTdXBwb3J0KSB7CisgICAgcHJpbnQgIlxuIE5PVEU6IFdl
YktpdCBoYXMgYmVlbiBidWlsdCB3aXRoIFNWRyBzdXBwb3J0IGVuYWJsZWQuXG4iOworICAgIHBy
aW50ICIgU2FmYXJpIHdpbGwgaGF2ZSBiYXNpYyBTVkcgdmlld2luZyBjYXBhdGliaWxpZXMuXG4i
OworICAgIHByaW50ICIgQWRkaXRpb25hbCBTVkcgdGVzdGluZyBpcyBwb3NzaWJsZSB1c2luZyBE
cmF3VGVzdDpcbiI7CisgICAgcHJpbnQgIiBydW4gXCJidWlsZC1kcmF3dGVzdFwiIGZvbGxvd2Vk
IGJ5IFwicnVuLWRyYXd0ZXN0XCJcbiI7Cit9CiBwcmludCAiPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CkluZGV4OiBTY3JpcHRz
L3J1bi1kcmF3dGVzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9vbHMv
U2NyaXB0cy9ydW4tZHJhd3Rlc3QsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1wIC11
IC1yMS4xIFNjcmlwdHMvcnVuLWRyYXd0ZXN0Ci0tLSBTY3JpcHRzL3J1bi1kcmF3dGVzdAkzMSBK
dWwgMjAwNSAyMDowMjozMyAtMDAwMAkxLjEKKysrIFNjcmlwdHMvcnVuLWRyYXd0ZXN0CTIyIFNl
cCAyMDA1IDEyOjM4OjQ1IC0wMDAwCkBAIC0zNiwxMSArMzYsMTIgQEAgdXNlIHdlYmtpdGRpcnM7
CiBzZXRDb25maWd1cmF0aW9uKCk7CiBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKIAot
IyBDaGVjayB0byBzZWUgdGhhdCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0LgotY2hlY2tT
VkdGcmFtZXdvcmtzKCk7CisjIENoZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBh
cmUgYnVpbHQgKHcvIFNWRyBzdXBwb3J0KS4KK2NoZWNrRnJhbWV3b3JrcygpOworY2hlY2tXZWJD
b3JlU1ZHU3VwcG9ydCgpOwogCiAjIFNldCB1cCBEWUxEX0ZSQU1FV09SS19QQVRIIHRvIHBvaW50
IHRvIHRoZSBwcm9kdWN0IGRpcmVjdG9yeS4KLXByaW50ICJTdGFydCBEcmF3VGVzdCB3aXRoIERZ
TERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IFdlYkNvcmUrU1ZHIGluICRw
cm9kdWN0RGlyLlxuIjsKK3ByaW50ICJTdGFydCBEcmF3VGVzdCB3aXRoIERZTERfRlJBTUVXT1JL
X1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IFdlYktpdCBpbiAkcHJvZHVjdERpci5cbiI7CiAk
RU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJHByb2R1Y3REaXI7CiBteSAkZHJhd3Rlc3RQYXRo
ID0gIiRwcm9kdWN0RGlyL0RyYXdUZXN0LmFwcC9Db250ZW50cy9NYWNPUy9EcmF3VGVzdCI7CiBl
eGVjICRkcmF3dGVzdFBhdGggb3IgZGllOwpJbmRleDogU2NyaXB0cy9ydW4td2Via2l0LXRlc3Rz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjYKZGlmZiAtcCAtdSAtcjEuMjYg
U2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCi0tLSBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJMjAg
U2VwIDIwMDUgMDE6MjM6MTIgLTAwMDAJMS4yNgorKysgU2NyaXB0cy9ydW4td2Via2l0LXRlc3Rz
CTIyIFNlcCAyMDA1IDEyOjM4OjQ1IC0wMDAwCkBAIC05MSwxMSArOTEsOCBAQCBteSAkaW1hZ2VE
aWZmVG9vbCA9ICIkcHJvZHVjdERpci9JbWFnZURpCiBkaWUgImNhbid0IGZpbmQgZXhlY3V0YWJs
ZSAkZHVtcFRvb2xOYW1lIChsb29rZWQgaW4gJHByb2R1Y3REaXIpXG4iIGlmICEteCAkdG9vbDsK
IGRpZSAiY2FuJ3QgZmluZCBleGVjdXRhYmxlICRpbWFnZURpZmZUb29sIChsb29rZWQgaW4gJHBy
b2R1Y3REaXIpXG4iIGlmICRwaXhlbFRlc3RzICYmICEteCAkaW1hZ2VEaWZmVG9vbDsKIAotaWYg
KCR0ZXN0U1ZHcykgewotICAgIGNoZWNrU1ZHRnJhbWV3b3JrcygpOwotfSBlbHNlIHsKLSAgICBj
aGVja0ZyYW1ld29ya3MoKTsKLX0KK2NoZWNrRnJhbWV3b3JrcygpOworY2hlY2tXZWJDb3JlU1ZH
U3VwcG9ydCgpIGlmICR0ZXN0U1ZHczsKIAogbXkgJGxheW91dFRlc3RzTmFtZSA9ICJsYXlvdXQt
dGVzdHMiOwogaWYgKCR0ZXN0U1ZHcykgewpJbmRleDogU2NyaXB0cy93ZWJraXRkaXJzLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdGRp
cnMucG0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKZGlmZiAtcCAtdSAtcjEuMTYgU2NyaXB0
cy93ZWJraXRkaXJzLnBtCi0tLSBTY3JpcHRzL3dlYmtpdGRpcnMucG0JMTggQXVnIDIwMDUgMTc6
NDU6NTIgLTAwMDAJMS4xNgorKysgU2NyaXB0cy93ZWJraXRkaXJzLnBtCTIyIFNlcCAyMDA1IDEy
OjM4OjQ1IC0wMDAwCkBAIC05NSw2ICs5NSw3IEBAIHN1YiBkZXRlcm1pbmVDb25maWd1cmF0aW9u
CiAKIHN1YiBkZXRlcm1pbmVDb25maWd1cmF0aW9uUHJvZHVjdERpcgogeworICAgIHJldHVybiBp
ZiBkZWZpbmVkICRjb25maWd1cmF0aW9uUHJvZHVjdERpcjsKICAgICBkZXRlcm1pbmVCYXNlUHJv
ZHVjdERpcigpOwogICAgIGRldGVybWluZUNvbmZpZ3VyYXRpb24oKTsKICAgICAkY29uZmlndXJh
dGlvblByb2R1Y3REaXIgPSAiJGJhc2VQcm9kdWN0RGlyLyRjb25maWd1cmF0aW9uIjsKQEAgLTE3
OSwyMyArMTgwLDQ4IEBAIHN1YiBzYWZhcmlQYXRoCiAgICAgcmV0dXJuICRzYWZhcmlQYXRoOwog
fQogCitzdWIgYnVpbHREeWxpYlBhdGhGb3JOYW1lCit7CisgICAgbXkgJGZyYW1ld29yayA9IHNo
aWZ0OworICAgIGRldGVybWluZUNvbmZpZ3VyYXRpb25Qcm9kdWN0RGlyKCk7CisgICAgcmV0dXJu
ICIkY29uZmlndXJhdGlvblByb2R1Y3REaXIvJGZyYW1ld29yay5mcmFtZXdvcmsvVmVyc2lvbnMv
QS8kZnJhbWV3b3JrIjsKK30KKwogIyBDaGVjayB0byBzZWUgdGhhdCBhbGwgdGhlIGZyYW1ld29y
a3MgYXJlIGJ1aWx0Lgogc3ViIGNoZWNrRnJhbWV3b3JrcwogewotICAgIGRldGVybWluZUNvbmZp
Z3VyYXRpb25Qcm9kdWN0RGlyKCk7CiAgICAgZm9yIG15ICRmcmFtZXdvcmsgKCJKYXZhU2NyaXB0
Q29yZSIsICJXZWJDb3JlIiwgIldlYktpdCIpIHsKLSAgICAgICAgbXkgJHBhdGggPSAiJGNvbmZp
Z3VyYXRpb25Qcm9kdWN0RGlyLyRmcmFtZXdvcmsuZnJhbWV3b3JrL1ZlcnNpb25zL0EvJGZyYW1l
d29yayI7CisgICAgICAgIG15ICRwYXRoID0gYnVpbHREeWxpYlBhdGhGb3JOYW1lKCRmcmFtZXdv
cmspOwogICAgICAgICBkaWUgIkNhbid0IGZpbmQgYnVpbHQgZnJhbWV3b3JrIGF0IFwiJHBhdGhc
Ii5cbiIgdW5sZXNzIC14ICRwYXRoOwogICAgIH0KIH0KIAotc3ViIGNoZWNrU1ZHRnJhbWV3b3Jr
cworc3ViIGlzUlRUSUVuYWJsZWQKIHsKLSAgICBkZXRlcm1pbmVDb25maWd1cmF0aW9uUHJvZHVj
dERpcigpOwotICAgIGZvciBteSAkZnJhbWV3b3JrICgiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29y
ZStTVkciKSB7Ci0gICAgICAgIG15ICRwYXRoID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci8k
ZnJhbWV3b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BLyRmcmFtZXdvcmsiOwotICAgICAgICBkaWUg
IkNhbid0IGZpbmQgYnVpbHQgZnJhbWV3b3JrIGF0IFwiJHBhdGhcIi5cbiIgdW5sZXNzIC14ICRw
YXRoOwotICAgIH0KKyAgICBteSAkcGF0aCA9IHNoaWZ0OworICAgIG15ICRmcmFtZXdvcmtTeW1i
b2xzID0gYG5tICRwYXRoYDsKKyAgICBteSAkaXNSVFRJRW5hYmxlZCA9ICgkZnJhbWV3b3JrU3lt
Ym9scyA9fiAvX19aVEkvKTsKKyAgICByZXR1cm4gJGlzUlRUSUVuYWJsZWQ7Cit9CisKK3N1YiBy
ZW1vdmVMaWJyYXJ5RGVwZW5kaW5nT25SVFRJCit7CisgICAgbXkgJGZyYW1ld29ya05hbWUgPSBz
aGlmdDsKKyAgICBteSAkc2hvdWxkSGF2ZVJUVEkgPSBzaGlmdDsKKyAgICAKKyAgICBteSAkcGF0
aCA9IGJ1aWx0RHlsaWJQYXRoRm9yTmFtZSgkZnJhbWV3b3JrTmFtZSk7CisgICAgcmV0dXJuIHVu
bGVzcyAteCAkcGF0aDsKKyAgICAKKyAgICBteSAkaGFzUlRUSSA9IGlzUlRUSUVuYWJsZWQoJHBh
dGgpOworICAgIHN5c3RlbSAicm0gLWYgJHBhdGgiIGlmICgkc2hvdWxkSGF2ZVJUVEkgeG9yICRo
YXNSVFRJKTsKK30KKworc3ViIGNoZWNrV2ViQ29yZVNWR1N1cHBvcnQKK3sKKyAgICBteSAkZnJh
bWV3b3JrID0gIldlYkNvcmUiOworICAgIG15ICRwYXRoID0gYnVpbHREeWxpYlBhdGhGb3JOYW1l
KCRmcmFtZXdvcmspOworICAgIG15ICRoYXNTVkdTdXBwb3J0ID0gaXNSVFRJRW5hYmxlZCgkcGF0
aCk7CisgICAgZGllICIkZnJhbWV3b3JrIGF0IFwiJHBhdGhcIiBkb2VzIG5vdCBpbmNsdWRlIFNW
RyBTdXBwb3J0LCBwbGVhc2UgcnVuIGJ1aWxkLXdlYmtpdCAtLXN2Z1xuIiB1bmxlc3MgJGhhc1NW
R1N1cHBvcnQ7CiB9CiAKIHN1YiBjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmlnCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4013</attachid>
            <date>2005-09-22 14:46:59 -0700</date>
            <delta_ts>2005-09-22 20:07:20 -0700</delta_ts>
            <desc>Updated patch which builds testkjs when necessary.</desc>
            <filename>tools-update-svg.patch</filename>
            <type>text/plain</type>
            <size>23895</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGNoZWNrb3V0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29s
cy9jaGVja291dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIxLjIgY2hl
Y2tvdXQKLS0tIGNoZWNrb3V0CTcgSnVuIDIwMDUgMjI6MDI6MjQgLTAwMDAJMS4yCisrKyBjaGVj
a291dAkyMiBTZXAgMjAwNSAyMTo0ODo1MyAtMDAwMApAQCAtMjksNiArMjksMTAgQEAKICMgRmly
c3QgdGltZSBjaGVjay1vdXQgc2NyaXB0IGZvciBXZWIgS2l0IE9wZW4gU291cmNlIFByb2plY3Qu
CiAKIHVzZSBzdHJpY3Q7Cit1c2UgR2V0b3B0OjpMb25nOworCitteSAkaW5jbHVkZVNWRyA9IDA7
CitHZXRPcHRpb25zKCdzdmcnID0+IFwkaW5jbHVkZVNWRyk7CiAKICMgQ2hlY2sgdGhhdCB3ZSdy
ZSBpbiB0aGUgcmlnaHQgZGlyZWN0b3J5LgogaWYgKCEgLWQgIldlYktpdFRvb2xzIikgewpAQCAt
NDgsMTMgKzUyLDMwIEBAIGNsb3NlIFJPT1Q7CiAKICMgQ2hlY2sgb3V0IGFsbCB0aGUgc291cmNl
cy4KIHByaW50ICJDVlMgcm9vdCBpcyAkcm9vdFxuIjsKLXByaW50ICJDaGVja2luZyBvdXQgV2Vi
S2l0VG9vbHMgKGFnYWluKSwgSmF2YVNjcmlwdENvcmUsIFdlYkNvcmUsIFdlYktpdExpYnJhcmll
cywgYW5kIFdlYktpdFxuIjsKLW9wZW4gQ1ZTLCAiY3ZzIC1kICckcm9vdCcgY28gLVAgV2ViS2l0
VG9vbHMgSmF2YVNjcmlwdENvcmUgV2ViQ29yZSBXZWJLaXRMaWJyYXJpZXMgV2ViS2l0IHwiIG9y
IGRpZTsKK3ByaW50ICJDaGVja2luZyBvdXQgV2ViS2l0VG9vbHMgKGFnYWluKSwgSmF2YVNjcmlw
dENvcmUsIFdlYkNvcmUsIFdlYktpdExpYnJhcmllcyI7CitpZiAoJGluY2x1ZGVTVkcpIHsKKyAg
ICBwcmludCAiLCBXZWJLaXQgYW5kIFNWR1N1cHBvcnRcbiI7Cit9IGVsc2UgeworICAgIHByaW50
ICIgYW5kIFdlYktpdFxuIjsKK30KK215ICRkaXJlY3RvcmllcyA9ICJXZWJLaXRUb29scyBKYXZh
U2NyaXB0Q29yZSBXZWJDb3JlIFdlYktpdExpYnJhcmllcyBXZWJLaXQiOworJGRpcmVjdG9yaWVz
IC49ICIgU1ZHU3VwcG9ydCIgaWYgJGluY2x1ZGVTVkc7CitvcGVuIENWUywgImN2cyAtZCAnJHJv
b3QnIGNvIC1QICRkaXJlY3RvcmllcyB8IiBvciBkaWU7CiB3aGlsZSAoPENWUz4pIHsKICAgICBw
cmludDsKIH0KIGNsb3NlIENWUzsKIAoraWYgKCRpbmNsdWRlU1ZHKSB7CisgICAgIyBNYWtlIHRo
ZSBuZWNlc3Nhcnkgc3ltbGlua3MKKyAgICBwcmludCAiXG5DcmVhdGluZyBzeW1saW5rcyAoa2Rv
bSwga2NhbnZhcywga3N2ZzIsIFdlYkNvcmUrU1ZHLCBzdmctdGVzdHMpIGZyb20gV2ViQ29yZSBp
bnRvIFNWR1N1cHBvcnRcbiI7CisgICAgc3ltbGluaygiLi4vU1ZHU3VwcG9ydC9rZG9tIiwgIldl
YkNvcmUva2RvbSIpOworICAgIHN5bWxpbmsoIi4uL1NWR1N1cHBvcnQva2NhbnZhcyIsICJXZWJD
b3JlL2tjYW52YXMiKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tzdmcyIiwgIldlYkNv
cmUva3N2ZzIiKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L1dlYkNvcmUrU1ZHIiwgIldl
YkNvcmUvV2ViQ29yZStTVkciKTsKKyAgICBzeW1saW5rKCIuLi9TVkdTdXBwb3J0L2xheW91dC10
ZXN0cyIsICJXZWJDb3JlL3N2Zy10ZXN0cyIpOworfQorCiAjIFJlYWR5IHRvIGJ1aWxkLgogcHJp
bnQgIlxuIjsKIHByaW50ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CkluZGV4OiBjaGVja291dC1zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogY2hlY2tvdXQtc3ZnCmRpZmYgLU4gY2hlY2tvdXQtc3ZnCi0tLSBjaGVja291
dC1zdmcJNyBBdWcgMjAwNSAxOTozMTowMyAtMDAwMAkxLjMKKysrIGNoZWNrb3V0LXN2ZwkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDczICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAt
dwotCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBGaXJzdCB0aW1lIGNo
ZWNrLW91dCBzY3JpcHQgZm9yIFdlYiBLaXQgT3BlbiBTb3VyY2UgUHJvamVjdC4KLQotdXNlIHN0
cmljdDsKLQotIyBDaGVjayB0aGF0IHdlJ3JlIGluIHRoZSByaWdodCBkaXJlY3RvcnkuCi1pZiAo
ISAtZCAiV2ViS2l0VG9vbHMiKSB7Ci0gICAgaWYgKC1kICIuLi9XZWJLaXRUb29scyIpIHsKLSAg
ICAgICAgY2hkaXIgIi4uIiBvciBkaWU7Ci0gICAgfQotICAgIGlmICghIC1kICJXZWJLaXRUb29s
cyIpIHsKLSAgICAgICAgZGllICJObyBXZWJLaXRUb29scyBkaXJlY3RvcnkgZm91bmQuIFBsZWFz
ZSBydW4gdGhpcyBzY3JpcHQgZnJvbSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgV2ViS2l0VG9v
bHMuXG4iOwotICAgIH0KLX0KLQotIyBSZWFkIHRoZSBDVlMgcm9vdCBvdXQgb2YgdGhlIHByb2pl
Y3QgdGhhdCdzIGFscmVhZHkgY2hlY2tlZCBvdXQuCi1vcGVuIFJPT1QsICJXZWJLaXRUb29scy9D
VlMvUm9vdCIgb3IgZGllOwotbXkgJHJvb3QgPSA8Uk9PVD47Ci1jaG9tcCAkcm9vdDsKLWNsb3Nl
IFJPT1Q7Ci0KLSMgQ2hlY2sgb3V0IGFsbCB0aGUgc291cmNlcy4KLXByaW50ICJDVlMgcm9vdCBp
cyAkcm9vdFxuIjsKLXByaW50ICJDaGVja2luZyBvdXQgV2ViQ29yZSAoYWdhaW4pIGFuZCBTVkdT
dXBwb3J0XG4iOwotb3BlbiBDVlMsICJjdnMgLWQgJyRyb290JyBjbyAtUCBXZWJDb3JlIFNWR1N1
cHBvcnQgfCIgb3IgZGllOwotd2hpbGUgKDxDVlM+KSB7Ci0gICAgcHJpbnQ7Ci19Ci1jbG9zZSBD
VlM7Ci0KLSMgTWFrZSB0aGUgbmVjZXNzYXJ5IHN5bWxpbmtzCi1wcmludCAiXG5DcmVhdGluZyBz
eW1saW5rcyAoa2RvbSwga2NhbnZhcywga3N2ZzIsIFdlYkNvcmUrU1ZHLCBzdmctdGVzdHMpIGZy
b20gV2ViQ29yZSBpbnRvIFNWR1N1cHBvcnRcbiI7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tk
b20iLCAiV2ViQ29yZS9rZG9tIik7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tjYW52YXMiLCAi
V2ViQ29yZS9rY2FudmFzIik7Ci1zeW1saW5rKCIuLi9TVkdTdXBwb3J0L2tzdmcyIiwgIldlYkNv
cmUva3N2ZzIiKTsKLXN5bWxpbmsoIi4uL1NWR1N1cHBvcnQvV2ViQ29yZStTVkciLCAiV2ViQ29y
ZS9XZWJDb3JlK1NWRyIpOwotc3ltbGluaygiLi4vU1ZHU3VwcG9ydC9sYXlvdXQtdGVzdHMiLCAi
V2ViQ29yZS9zdmctdGVzdHMiKTsKLQotIyBSZWFkeSB0byBidWlsZC4KLXByaW50ICJcbiI7Ci1w
cmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09XG4iOwotcHJpbnQgIiBXZWJDb3JlK1NWRyBzb3VyY2VzIGFyZSBub3cgY2hl
Y2tlZCBvdXQgYW5kIHJlYWR5IHRvIGJ1aWxkLlxuIjsKLXByaW50ICIgWW91IGNhbiBidWlsZCBi
eSBwcm9qZWN0cyBpbiBYY29kZSBieSBzZWxlY3RpbmcgdGhlIFxuIjsKLXByaW50ICIgSmF2YVNj
cmlwdENvcmUrU1ZHIGFuZCBXZWJDb3JlK1NWRyB0YXJnZXRzLlxuIjsKLXByaW50ICIgU2VlIGh0
dHA6Ly93ZWJraXQub3BlbmRhcndpbi5vcmcvcHJvamVjdHMvc3ZnIGZvciBtb3JlIGluZm8uXG4i
OwotcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PVxuIjsKSW5kZXg6IERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdFRvb2xz
L0RyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2osdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKLS0tIERyYXdUZXN0L0RyYXdUZXN0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJMjkgSnVsIDIwMDUgMjI6MDU6MTggLTAwMDAJMS4yCisrKyBEcmF3VGVzdC9EcmF3
VGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTIyIFNlcCAyMDA1IDIxOjQ5OjA0IC0wMDAw
CkBAIC0yMyw3ICsyMyw3IEBACiAJCUE4QzAwNkYzMDg5ODY1RTkwMEJBNTExNCAvKiBEcmF3VGVz
dERvY3VtZW50Lm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThDMDA2RUQwODk4NjVFOTAwQkE1MTE0IC8qIERyYXdUZXN0RG9jdW1lbnQubmliICov
OyB9OwogCQlBOEMwMDZGNDA4OTg2NUU5MDBCQTUxMTQgLyogSW5zcGVjdG9yLm5pYiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMDA2RUYwODk4NjVF
OTAwQkE1MTE0IC8qIEluc3BlY3Rvci5uaWIgKi87IH07CiAJCUE4QzAwNkY1MDg5ODY1RTkwMEJB
NTExNCAvKiBUZXN0Vmlld2VyLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMDA2RjEwODk4NjVFOTAwQkE1MTE0IC8qIFRlc3RWaWV3ZXIubmli
ICovOyB9OwotCQlBOEMwMDZGQTA4OTg2NjUyMDBCQTUxMTQgLyogV2ViQ29yZStTVkcuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MDA2RjkwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLzsgfTsKKwkJ
QThDMDA2RkEwODk4NjY1MjAwQkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMDA2RjkwODk4NjY1MjAw
QkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkU3R5bGUgc2VjdGlvbiAqLwpAQCAtODUsNyAr
ODUsNyBAQAogCQlBOEMwMDZFRTA4OTg2NUU5MDBCQTUxMTQgLyogRW5nbGlzaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1l
ID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovRHJhd1Rlc3REb2N1bWVudC5uaWI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzAwNkYwMDg5ODY1RTkwMEJBNTExNCAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5uaWI7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbnNwZWN0
b3IubmliOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEMwMDZGMjA4OTg2NUU5MDBC
QTUxMTQgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHBy
b2ovVGVzdFZpZXdlci5uaWI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QzAwNkY5
MDg5ODY2NTIwMEJBNTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0
aCA9ICJXZWJDb3JlK1NWRy5mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQlBOEMwMDZGOTA4OTg2NjUyMDBCQTUxMTQgLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgcGF0aCA9IFdlYkNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC05NCw3ICs5NCw3
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJ
OEQxMTA3MkYwNDg2Q0VCODAwRTQ3MDkwIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLAotCQkJCUE4QzAwNkZBMDg5ODY2NTIwMEJBNTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBOEMwMDZGQTA4OTg2NjUyMDBCQTUxMTQgLyogV2Vi
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExNyw3ICsxMTcsNyBAQAogCQkx
MDU4QzdBMEZFQTU0RjAxMTFDQTJDQkIgLyogTGlua2VkIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE4QzAwNkY5MDg5ODY2NTIwMEJB
NTExNCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8sCisJCQkJQThDMDA2RjkwODk4NjY1MjAw
QkE1MTE0IC8qIFdlYkNvcmUuZnJhbWV3b3JrICovLAogCQkJCTEwNThDN0ExRkVBNTRGMDExMUNB
MkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJMaW5rZWQgRnJh
bWV3b3JrcyI7CkBAIC0zNDgsNyArMzQ4LDYgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0J
CQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICJcIiQoU1JDUk9PVCkvLi4vLi4vLi4vYnVpbGQv
RGV2ZWxvcG1lbnRcIiI7CiAJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CiAJCQkJR0NDX0VO
QUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gWUVTOwogCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdf
U1lNQk9MUyA9IFlFUzsKQEAgLTM3MSw3ICszNzAsNiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7Ci0JCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICJcIiQoU1JDUk9PVCkvLi4vLi4vLi4v
YnVpbGQvRGV2ZWxvcG1lbnRcIiI7CiAJCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0g
Tk87CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87CiAJCQkJR0NDX1BS
RUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKQEAgLTM5MSw3ICszODksNiBAQAogCQlBOEMw
MDY3NzA4OTg2MjRFMDBCQTUxMTQgLyogRGVmYXVsdCAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlGUkFNRVdPUktfU0VBUkNI
X1BBVEhTID0gIlwiJChTUkNST09UKS8uLi8uLi8uLi9idWlsZC9EZXZlbG9wbWVudFwiIjsKIAkJ
CQlHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfUFJFQ09NUElM
RV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19QUkVGSVhfSEVBREVSID0gRHJhd1Rlc3Rf
UHJlZml4LnBjaDsKSW5kZXg6IER1bXBLQ2FudmFzVHJlZS9EdW1wS0NhbnZhc1RyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0
VG9vbHMvRHVtcEtDYW52YXNUcmVlL0R1bXBLQ2FudmFzVHJlZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBEdW1wS0Nh
bnZhc1RyZWUvRHVtcEtDYW52YXNUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKLS0tIER1
bXBLQ2FudmFzVHJlZS9EdW1wS0NhbnZhc1RyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkx
OCBBdWcgMjAwNSAwNTo1OTowNyAtMDAwMAkxLjIKKysrIER1bXBLQ2FudmFzVHJlZS9EdW1wS0Nh
bnZhc1RyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkyMiBTZXAgMjAwNSAyMTo0OTowNCAt
MDAwMApAQCAtOSw3ICs5LDcgQEAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJ
CThERDc2RjlBMDQ4NkFBNzYwMEQ5NkI1RSAvKiBEdW1wS0NhbnZhc1RyZWUubSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkI3Nzk2RkU4NDE1NURDMDJB
QUMwNyAvKiBEdW1wS0NhbnZhc1RyZWUubSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgp
OyB9OyB9OwogCQk4REQ3NkY5QzA0ODZBQTc2MDBEOTZCNUUgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZC
Nzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07Ci0JCUE4
MTBFNEJDMDhBNDQ2MjgwMDMzM0Q5OCAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEwRTRCQjA4QTQ0NjI4
MDAzMzNEOTggLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICovOyB9OworCQlBODEwRTRCQzA4QTQ0
NjI4MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2Vi
Q29yZS5mcmFtZXdvcmsgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCkBAIC01Miw3ICs1Miw3IEBACiAJCTA4
RkI3Nzk2RkU4NDE1NURDMDJBQUMwNyAvKiBEdW1wS0NhbnZhc1RyZWUubSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gRHVtcEtDYW52YXNUcmVlLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4RkI3NzlFRkU4NDE1NURDMDJBQUMwNyAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8qIER1bXBL
Q2FudmFzVHJlZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gRHVtcEtDYW52YXNUcmVlOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owot
CQlBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IHBhdGggPSAiV2ViQ29yZStTVkcuZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJQTgxMEU0QkIwOEE0NDYyODAwMzMzRDk4IC8qIFdlYkNvcmUu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBXZWJDb3JlLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
NjEsNyArNjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAogCQkJCThERDc2RjlDMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAotCQkJCUE4MTBFNEJDMDhBNDQ2MjgwMDMzM0Q5OCAvKiBXZWJD
b3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBODEwRTRCQzA4QTQ0NjI4
MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg5LDcg
Kzg5LDcgQEAKIAkJMDhGQjc3OURGRTg0MTU1REMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29y
a3MgYW5kIExpYnJhcmllcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJQTgxMEU0QkIwOEE0NDYyODAwMzMzRDk4IC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29y
ayAqLywKKwkJCQlBODEwRTRCQjA4QTQ0NjI4MDAzMzNEOTggLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki8sCiAJCQkJMDhGQjc3OUVGRTg0MTU1REMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVz
IjsKSW5kZXg6IFNjcmlwdHMvYnVpbGQtZHJhd3Rlc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtZHJhd3Rlc3QsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIFNjcmlwdHMvYnVpbGQtZHJhd3Rlc3QKLS0tIFNj
cmlwdHMvYnVpbGQtZHJhd3Rlc3QJNSBBdWcgMjAwNSAwMToyNDozMSAtMDAwMAkxLjIKKysrIFNj
cmlwdHMvYnVpbGQtZHJhd3Rlc3QJMjIgU2VwIDIwMDUgMjE6NDk6MDQgLTAwMDAKQEAgLTM5LDgg
KzM5LDkgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogY2hkaXJXZWJLaXQoKTsKIG15IEBvcHRpb25z
ID0gWGNvZGVPcHRpb25zKCk7CiAKLSMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBmcmFtZXdv
cmtzIGFyZSBidWlsdC4KLWNoZWNrU1ZHRnJhbWV3b3JrcygpOworIyBDaGVjayB0byBzZWUgdGhh
dCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0ICh3LyBTVkcgc3VwcG9ydCkuCitjaGVja0Zy
YW1ld29ya3MoKTsKK2NoZWNrV2ViQ29yZVNWR1N1cHBvcnQoKTsKIAogIyBCdWlsZAogY2hkaXIg
IldlYktpdFRvb2xzL0RyYXdUZXN0IiBvciBkaWU7CkluZGV4OiBTY3JpcHRzL2J1aWxkLWR1bXBr
Y2FudmFzdHJlZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWlsZC1kdW1wa2NhbnZhc3RyZWUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZm
IC1wIC11IC1yMS4xIFNjcmlwdHMvYnVpbGQtZHVtcGtjYW52YXN0cmVlCi0tLSBTY3JpcHRzL2J1
aWxkLWR1bXBrY2FudmFzdHJlZQk2IEF1ZyAyMDA1IDE4OjM2OjIyIC0wMDAwCTEuMQorKysgU2Ny
aXB0cy9idWlsZC1kdW1wa2NhbnZhc3RyZWUJMjIgU2VwIDIwMDUgMjE6NDk6MDUgLTAwMDAKQEAg
LTM5LDggKzM5LDkgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogY2hkaXJXZWJLaXQoKTsKIG15IEBv
cHRpb25zID0gWGNvZGVPcHRpb25zKCk7CiAKLSMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBm
cmFtZXdvcmtzIGFyZSBidWlsdC4KLWNoZWNrU1ZHRnJhbWV3b3JrcygpOworIyBDaGVjayB0byBz
ZWUgdGhhdCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0ICh3LyBTVkcgc3VwcG9ydCkuCitj
aGVja0ZyYW1ld29ya3MoKTsKK2NoZWNrV2ViQ29yZVNWR1N1cHBvcnQoKTsKIAogIyBCdWlsZAog
Y2hkaXIgIldlYktpdFRvb2xzL0R1bXBLQ2FudmFzVHJlZSIgb3IgZGllOwpJbmRleDogU2NyaXB0
cy9idWlsZC13ZWJjb3JlLXN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBTY3JpcHRzL2J1aWxkLXdl
YmNvcmUtc3ZnCmRpZmYgLU4gU2NyaXB0cy9idWlsZC13ZWJjb3JlLXN2ZwotLS0gU2NyaXB0cy9i
dWlsZC13ZWJjb3JlLXN2Zwk1IEF1ZyAyMDA1IDAxOjI0OjMxIC0wMDAwCTEuMgorKysgU2NyaXB0
cy9idWlsZC13ZWJjb3JlLXN2ZwkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDY1ICsw
LDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0jICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIyBTaW1wbGlmaWVkIGJ1aWxkIHNjcmlwdCBmb3IgV2ViQ29yZStTVkcKLQotdXNl
IHN0cmljdDsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIHdlYmtp
dGRpcnM7Ci0KLWNoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcoKTsKLXNldENvbmZpZ3VyYXRpb24o
KTsKLWNoZGlyV2ViS2l0KCk7Ci1teSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLW15IEBv
cHRpb25zID0gWGNvZGVPcHRpb25zKCk7Ci0KLSMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2plY3Qg
ZGlyZWN0b3JpZXMgYXJlIHRoZXJlLgotbXkgQHByb2plY3RzID0gKCJKYXZhU2NyaXB0Q29yZSIs
ICJXZWJDb3JlIik7Ci1teSBAb3RoZXJEaXJzID0gKCJTVkdTdXBwb3J0Iik7Ci1mb3IgbXkgJGRp
ciAoQHByb2plY3RzLCBAb3RoZXJEaXJzKSB7Ci0gICAgaWYgKCEgLWQgJGRpcikgewotICAgICAg
ICBkaWUgIk5vICRkaXIgZGlyZWN0b3J5IGZvdW5kLiBDYW4ndCBidWlsZCwgcnVuIFdlYktpdFRv
b2xzL2NoZWNrb3V0LXN2ZyBmaXJzdC5cbiI7Ci0gICAgfQotfQotCi0jIEJ1aWxkLCBhbmQgYWJv
cnQgaWYgdGhlIGJ1aWxkIGZhaWxzLgotZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewotICAgIGNo
ZGlyICRkaXIgb3IgZGllOwotICAgIG15ICRyZXN1bHQgPSBzeXN0ZW0gInhjb2RlYnVpbGQiLCAi
LXByb2plY3QiLCAiJGRpci54Y29kZXByb2oiLCBAb3B0aW9ucywgIi10YXJnZXQiLCAiJGRpcitT
VkciOwotICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OwotICAgIGNoZGlyICIuLiIgb3IgZGll
OwotfQotCi0jIFdyaXRlIG91dCBjb25ncmF0dWxhdGlvbnMgbWVzc2FnZS4KLXByaW50ICJcbiI7
Ci1wcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT1cbiI7Ci1wcmludCAiIFdlYkNvcmUrU1ZHIGlzIG5vdyBidWlsdC5cbiI7Ci1w
cmludCAiIEl0IGlzICpOT1QqIHBvc3NpYmxlIHRvIHJ1biBTYWZhcmkgd2l0aCBTVkcgc3VwcG9y
dC5cbiI7Ci1wcmludCAiIFRvIHZpZXcgU1ZHcyB1c2UgYnVpbGQtZHJhd3Rlc3QgYW5kIHJ1bi1k
cmF3dGVzdFxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PVxuIjsKSW5kZXg6IFNjcmlwdHMvYnVpbGQtd2Via2l0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNApkaWZmIC1wIC11IC1yMS4xNCBTY3JpcHRz
L2J1aWxkLXdlYmtpdAotLS0gU2NyaXB0cy9idWlsZC13ZWJraXQJNSBBdWcgMjAwNSAwMToyNDoz
MSAtMDAwMAkxLjE0CisrKyBTY3JpcHRzL2J1aWxkLXdlYmtpdAkyMiBTZXAgMjAwNSAyMTo0OTow
NSAtMDAwMApAQCAtMzAsOSArMzAsMTMgQEAKIAogdXNlIHN0cmljdDsKIHVzZSBGaW5kQmluOwor
dXNlIEdldG9wdDo6TG9uZzsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJz
OwogCitteSAkc3ZnU3VwcG9ydCA9IDA7CitHZXRPcHRpb25zKCdzdmcnID0+IFwkc3ZnU3VwcG9y
dCk7CisKIGNoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcoKTsKIHNldENvbmZpZ3VyYXRpb24oKTsK
IGNoZGlyV2ViS2l0KCk7CkBAIC00MiwxMiArNDYsMTggQEAgbXkgQG9wdGlvbnMgPSBYY29kZU9w
dGlvbnMoKTsKICMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2plY3QgZGlyZWN0b3JpZXMgYXJlIHRo
ZXJlLgogbXkgQHByb2plY3RzID0gKCJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIiwgIldlYktp
dCIpOwogbXkgQG90aGVyRGlycyA9ICgiV2ViS2l0TGlicmFyaWVzIik7CitteSAkY2hlY2tvdXRT
Y3JpcHQgPSAiV2ViS2l0VG9vbHMvY2hlY2tvdXQiOworaWYgKCRzdmdTdXBwb3J0KSB7CisgICAg
JGNoZWNrb3V0U2NyaXB0IC49ICIgLS1zdmciOworICAgIHB1c2goQG90aGVyRGlycywgIlNWR1N1
cHBvcnQiKTsKK30KIGZvciBteSAkZGlyIChAcHJvamVjdHMsIEBvdGhlckRpcnMpIHsKICAgICBp
ZiAoISAtZCAkZGlyKSB7Ci0gICAgICAgIGRpZSAiTm8gJGRpciBkaXJlY3RvcnkgZm91bmQuIENh
bid0IGJ1aWxkXG4iOworICAgICAgICBkaWUgIkVycm9yOiBObyAkZGlyIGRpcmVjdG9yeSBmb3Vu
ZC4gUGxlYXNlIHJ1biBcIiRjaGVja291dFNjcmlwdFwiIGZpcnN0LlxuIjsKICAgICB9CiB9CiAK
KwogIyBDb3B5IGxpYnJhcnkgYW5kIGhlYWRlciBmcm9tIFdlYktpdExpYnJhcmllcyB0byBhIGZp
bmRhYmxlIHBsYWNlIGluIHRoZSBwcm9kdWN0IGRpcmVjdG9yeS4KIG15ICRzcmNMaWIgPSAiV2Vi
S2l0TGlicmFyaWVzL2xpYldlYktpdFN5c3RlbUludGVyZmFjZS5hIjsKIG15ICRsaWIgPSAiJHBy
b2R1Y3REaXIvbGliV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmEiOwpAQCAtNjQsMjIgKzc0LDM2IEBA
IGlmICghLWUgJGhlYWRlciB8fCAtTSAkaGVhZGVyID4gLU0gJHNyY0gKICAgICBzeXN0ZW0gImRp
dHRvIiwgJHNyY0hlYWRlciwgJGhlYWRlcjsKIH0KIAorIyBGb3JjZSByZS1saW5rIG9mIGV4aXN0
aW5nIGxpYnJhcmllcyBpZiBkaWZmZXJlbnQgdGhhbiBleHBlY3RlZAorcmVtb3ZlTGlicmFyeURl
cGVuZGluZ09uUlRUSSgiSmF2YVNjcmlwdENvcmUiLCAkc3ZnU3VwcG9ydCk7CityZW1vdmVMaWJy
YXJ5RGVwZW5kaW5nT25SVFRJKCJXZWJDb3JlIiwgJHN2Z1N1cHBvcnQpOworCiAjIEJ1aWxkLCBh
bmQgYWJvcnQgaWYgdGhlIGJ1aWxkIGZhaWxzLgogZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewog
ICAgIGNoZGlyICRkaXIgb3IgZGllOwogICAgIG15ICRyZXN1bHQ7Ci0gICAgaWYgKCRkaXIgZXEg
IkphdmFTY3JpcHRDb3JlIikgewotICAgICAgICAkcmVzdWx0ID0gc3lzdGVtICJ4Y29kZWJ1aWxk
IiwgIi1wcm9qZWN0IiwgIkphdmFTY3JpcHRDb3JlLnhjb2RlcHJvaiIsIEBvcHRpb25zLCAiLXRh
cmdldCIsICJBbGwiOworICAgIGlmICgkc3ZnU3VwcG9ydCAmJiAoJGRpciBlcSAiSmF2YVNjcmlw
dENvcmUiIHx8ICRkaXIgZXEgIldlYkNvcmUiKSkgeworICAgICAgICAkcmVzdWx0ID0gc3lzdGVt
ICJ4Y29kZWJ1aWxkIiwgIi1wcm9qZWN0IiwgIiRkaXIueGNvZGVwcm9qIiwgQG9wdGlvbnMsICIt
dGFyZ2V0IiwgIiRkaXIrU1ZHIjsKICAgICB9IGVsc2UgewogICAgICAgICAkcmVzdWx0ID0gc3lz
dGVtICJ4Y29kZWJ1aWxkIiwgIi1wcm9qZWN0IiwgIiRkaXIueGNvZGVwcm9qIiwgQG9wdGlvbnM7
CiAgICAgfQogICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGlmICgkZGlyIGVxICJK
YXZhU2NyaXB0Q29yZSIpIHsKKyAgICAgICAgJHJlc3VsdCA9IHN5c3RlbSAieGNvZGVidWlsZCIs
ICItcHJvamVjdCIsICIkZGlyLnhjb2RlcHJvaiIsIEBvcHRpb25zLCAiLXRhcmdldCIsICJ0ZXN0
a2pzIjsKKyAgICAgICAgZXhpdCAkcmVzdWx0IGlmICRyZXN1bHQ7CisgICAgfQogICAgIGNoZGly
ICIuLiIgb3IgZGllOwogfQogCiAjIFdyaXRlIG91dCBjb25ncmF0dWxhdGlvbnMgbWVzc2FnZS4K
IHByaW50ICJcbiI7CiBwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1cbiI7Ci1wcmludCAiIFdlYiBLaXQgaXMgbm93IGJ1aWx0
LiBUbyBydW4gU2FmYXJpIHdpdGggdGhpcyBuZXdseS1idWlsdFxuIjsKLXByaW50ICIgY29kZSwg
dXNlIHRoZSBydW4tc2FmYXJpIHNjcmlwdC5cbiI7CitwcmludCAiIFdlYktpdCBpcyBub3cgYnVp
bHQuIFRvIHJ1biBTYWZhcmkgd2l0aCB0aGlzIG5ld2x5LWJ1aWx0XG4iOworcHJpbnQgIiBjb2Rl
LCB1c2UgdGhlIFwicnVuLXNhZmFyaVwiIHNjcmlwdC5cbiI7CitpZiAoJHN2Z1N1cHBvcnQpIHsK
KyAgICBwcmludCAiXG4gTk9URTogV2ViS2l0IGhhcyBiZWVuIGJ1aWx0IHdpdGggU1ZHIHN1cHBv
cnQgZW5hYmxlZC5cbiI7CisgICAgcHJpbnQgIiBTYWZhcmkgd2lsbCBoYXZlIGJhc2ljIFNWRyB2
aWV3aW5nIGNhcGF0aWJpbGllcy5cbiI7CisgICAgcHJpbnQgIiBBZGRpdGlvbmFsIFNWRyB0ZXN0
aW5nIGlzIHBvc3NpYmxlIHVzaW5nIERyYXdUZXN0OlxuIjsKKyAgICBwcmludCAiIHJ1biBcImJ1
aWxkLWRyYXd0ZXN0XCIgZm9sbG93ZWQgYnkgXCJydW4tZHJhd3Rlc3RcIlxuIjsKK30KIHByaW50
ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PVxuIjsKSW5kZXg6IFNjcmlwdHMvcnVuLWRyYXd0ZXN0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi1kcmF3dGVzdCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xCmRpZmYgLXAgLXUgLXIxLjEgU2NyaXB0cy9ydW4tZHJhd3Rlc3QKLS0tIFNj
cmlwdHMvcnVuLWRyYXd0ZXN0CTMxIEp1bCAyMDA1IDIwOjAyOjMzIC0wMDAwCTEuMQorKysgU2Ny
aXB0cy9ydW4tZHJhd3Rlc3QJMjIgU2VwIDIwMDUgMjE6NDk6MDUgLTAwMDAKQEAgLTM2LDExICsz
NiwxMiBAQCB1c2Ugd2Via2l0ZGlyczsKIHNldENvbmZpZ3VyYXRpb24oKTsKIG15ICRwcm9kdWN0
RGlyID0gcHJvZHVjdERpcigpOwogCi0jIENoZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3
b3JrcyBhcmUgYnVpbHQuCi1jaGVja1NWR0ZyYW1ld29ya3MoKTsKKyMgQ2hlY2sgdG8gc2VlIHRo
YXQgYWxsIHRoZSBmcmFtZXdvcmtzIGFyZSBidWlsdCAody8gU1ZHIHN1cHBvcnQpLgorY2hlY2tG
cmFtZXdvcmtzKCk7CitjaGVja1dlYkNvcmVTVkdTdXBwb3J0KCk7CiAKICMgU2V0IHVwIERZTERf
RlJBTUVXT1JLX1BBVEggdG8gcG9pbnQgdG8gdGhlIHByb2R1Y3QgZGlyZWN0b3J5LgotcHJpbnQg
IlN0YXJ0IERyYXdUZXN0IHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8g
YnVpbHQgV2ViQ29yZStTVkcgaW4gJHByb2R1Y3REaXIuXG4iOworcHJpbnQgIlN0YXJ0IERyYXdU
ZXN0IHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2ViS2l0
IGluICRwcm9kdWN0RGlyLlxuIjsKICRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0gPSAkcHJvZHVj
dERpcjsKIG15ICRkcmF3dGVzdFBhdGggPSAiJHByb2R1Y3REaXIvRHJhd1Rlc3QuYXBwL0NvbnRl
bnRzL01hY09TL0RyYXdUZXN0IjsKIGV4ZWMgJGRyYXd0ZXN0UGF0aCBvciBkaWU7CkluZGV4OiBT
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cyx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4yNgpkaWZmIC1wIC11IC1yMS4yNiBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKLS0tIFNjcmlw
dHMvcnVuLXdlYmtpdC10ZXN0cwkyMCBTZXAgMjAwNSAwMToyMzoxMiAtMDAwMAkxLjI2CisrKyBT
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJMjIgU2VwIDIwMDUgMjE6NDk6MTMgLTAwMDAKQEAgLTkx
LDExICs5MSw4IEBAIG15ICRpbWFnZURpZmZUb29sID0gIiRwcm9kdWN0RGlyL0ltYWdlRGkKIGRp
ZSAiY2FuJ3QgZmluZCBleGVjdXRhYmxlICRkdW1wVG9vbE5hbWUgKGxvb2tlZCBpbiAkcHJvZHVj
dERpcilcbiIgaWYgIS14ICR0b29sOwogZGllICJjYW4ndCBmaW5kIGV4ZWN1dGFibGUgJGltYWdl
RGlmZlRvb2wgKGxvb2tlZCBpbiAkcHJvZHVjdERpcilcbiIgaWYgJHBpeGVsVGVzdHMgJiYgIS14
ICRpbWFnZURpZmZUb29sOwogCi1pZiAoJHRlc3RTVkdzKSB7Ci0gICAgY2hlY2tTVkdGcmFtZXdv
cmtzKCk7Ci19IGVsc2UgewotICAgIGNoZWNrRnJhbWV3b3JrcygpOwotfQorY2hlY2tGcmFtZXdv
cmtzKCk7CitjaGVja1dlYkNvcmVTVkdTdXBwb3J0KCkgaWYgJHRlc3RTVkdzOwogCiBteSAkbGF5
b3V0VGVzdHNOYW1lID0gImxheW91dC10ZXN0cyI7CiBpZiAoJHRlc3RTVkdzKSB7CkluZGV4OiBT
Y3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNgpk
aWZmIC1wIC11IC1yMS4xNiBTY3JpcHRzL3dlYmtpdGRpcnMucG0KLS0tIFNjcmlwdHMvd2Via2l0
ZGlycy5wbQkxOCBBdWcgMjAwNSAxNzo0NTo1MiAtMDAwMAkxLjE2CisrKyBTY3JpcHRzL3dlYmtp
dGRpcnMucG0JMjIgU2VwIDIwMDUgMjE6NDk6MTUgLTAwMDAKQEAgLTk1LDYgKzk1LDcgQEAgc3Vi
IGRldGVybWluZUNvbmZpZ3VyYXRpb24KIAogc3ViIGRldGVybWluZUNvbmZpZ3VyYXRpb25Qcm9k
dWN0RGlyCiB7CisgICAgcmV0dXJuIGlmIGRlZmluZWQgJGNvbmZpZ3VyYXRpb25Qcm9kdWN0RGly
OwogICAgIGRldGVybWluZUJhc2VQcm9kdWN0RGlyKCk7CiAgICAgZGV0ZXJtaW5lQ29uZmlndXJh
dGlvbigpOwogICAgICRjb25maWd1cmF0aW9uUHJvZHVjdERpciA9ICIkYmFzZVByb2R1Y3REaXIv
JGNvbmZpZ3VyYXRpb24iOwpAQCAtMTc5LDIzICsxODAsNDggQEAgc3ViIHNhZmFyaVBhdGgKICAg
ICByZXR1cm4gJHNhZmFyaVBhdGg7CiB9CiAKK3N1YiBidWlsdER5bGliUGF0aEZvck5hbWUKK3sK
KyAgICBteSAkZnJhbWV3b3JrID0gc2hpZnQ7CisgICAgZGV0ZXJtaW5lQ29uZmlndXJhdGlvblBy
b2R1Y3REaXIoKTsKKyAgICByZXR1cm4gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci8kZnJhbWV3
b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BLyRmcmFtZXdvcmsiOworfQorCiAjIENoZWNrIHRvIHNl
ZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBhcmUgYnVpbHQuCiBzdWIgY2hlY2tGcmFtZXdvcmtz
CiB7Ci0gICAgZGV0ZXJtaW5lQ29uZmlndXJhdGlvblByb2R1Y3REaXIoKTsKICAgICBmb3IgbXkg
JGZyYW1ld29yayAoIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiLCAiV2ViS2l0IikgewotICAg
ICAgICBteSAkcGF0aCA9ICIkY29uZmlndXJhdGlvblByb2R1Y3REaXIvJGZyYW1ld29yay5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS8kZnJhbWV3b3JrIjsKKyAgICAgICAgbXkgJHBhdGggPSBidWlsdER5
bGliUGF0aEZvck5hbWUoJGZyYW1ld29yayk7CiAgICAgICAgIGRpZSAiQ2FuJ3QgZmluZCBidWls
dCBmcmFtZXdvcmsgYXQgXCIkcGF0aFwiLlxuIiB1bmxlc3MgLXggJHBhdGg7CiAgICAgfQogfQog
Ci1zdWIgY2hlY2tTVkdGcmFtZXdvcmtzCitzdWIgaXNSVFRJRW5hYmxlZAogewotICAgIGRldGVy
bWluZUNvbmZpZ3VyYXRpb25Qcm9kdWN0RGlyKCk7Ci0gICAgZm9yIG15ICRmcmFtZXdvcmsgKCJK
YXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlK1NWRyIpIHsKLSAgICAgICAgbXkgJHBhdGggPSAiJGNv
bmZpZ3VyYXRpb25Qcm9kdWN0RGlyLyRmcmFtZXdvcmsuZnJhbWV3b3JrL1ZlcnNpb25zL0EvJGZy
YW1ld29yayI7Ci0gICAgICAgIGRpZSAiQ2FuJ3QgZmluZCBidWlsdCBmcmFtZXdvcmsgYXQgXCIk
cGF0aFwiLlxuIiB1bmxlc3MgLXggJHBhdGg7Ci0gICAgfQorICAgIG15ICRwYXRoID0gc2hpZnQ7
CisgICAgbXkgJGZyYW1ld29ya1N5bWJvbHMgPSBgbm0gJHBhdGhgOworICAgIG15ICRpc1JUVElF
bmFibGVkID0gKCRmcmFtZXdvcmtTeW1ib2xzID1+IC9fX1pUSS8pOworICAgIHJldHVybiAkaXNS
VFRJRW5hYmxlZDsKK30KKworc3ViIHJlbW92ZUxpYnJhcnlEZXBlbmRpbmdPblJUVEkKK3sKKyAg
ICBteSAkZnJhbWV3b3JrTmFtZSA9IHNoaWZ0OworICAgIG15ICRzaG91bGRIYXZlUlRUSSA9IHNo
aWZ0OworICAgIAorICAgIG15ICRwYXRoID0gYnVpbHREeWxpYlBhdGhGb3JOYW1lKCRmcmFtZXdv
cmtOYW1lKTsKKyAgICByZXR1cm4gdW5sZXNzIC14ICRwYXRoOworICAgIAorICAgIG15ICRoYXNS
VFRJID0gaXNSVFRJRW5hYmxlZCgkcGF0aCk7CisgICAgc3lzdGVtICJybSAtZiAkcGF0aCIgaWYg
KCRzaG91bGRIYXZlUlRUSSB4b3IgJGhhc1JUVEkpOworfQorCitzdWIgY2hlY2tXZWJDb3JlU1ZH
U3VwcG9ydAoreworICAgIG15ICRmcmFtZXdvcmsgPSAiV2ViQ29yZSI7CisgICAgbXkgJHBhdGgg
PSBidWlsdER5bGliUGF0aEZvck5hbWUoJGZyYW1ld29yayk7CisgICAgbXkgJGhhc1NWR1N1cHBv
cnQgPSBpc1JUVElFbmFibGVkKCRwYXRoKTsKKyAgICBkaWUgIiRmcmFtZXdvcmsgYXQgXCIkcGF0
aFwiIGRvZXMgbm90IGluY2x1ZGUgU1ZHIFN1cHBvcnQsIHBsZWFzZSBydW4gYnVpbGQtd2Via2l0
IC0tc3ZnXG4iIHVubGVzcyAkaGFzU1ZHU3VwcG9ydDsKIH0KIAogc3ViIGNoZWNrUmVxdWlyZWRT
eXN0ZW1Db25maWcK
</data>
<flag name="review"
          id="614"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>