<?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>26310</bug_id>
          
          <creation_ts>2009-06-10 22:40:14 -0700</creation_ts>
          <short_desc>Webkit should generate &quot;compositionstart&quot;, &quot;compositionend&quot;, and &quot;text&quot; events like firefox</short_desc>
          <delta_ts>2009-11-15 18:48:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.danilatos.com/event-test/ExperimentTest.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Danilatos">daniel.danilatos</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>hbono</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125271</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Danilatos">daniel.danilatos</who>
    <bug_when>2009-06-10 22:40:14 -0700</bug_when>
    <thetext>For IME input, firefox generates compositionstart and compositionend events to signify the start and end of a sequence of IME input. Additionally, for each individual change in the dom, it generates a &quot;text&quot; event.

It should be possible to make arbitrary changes to the dom, and move the caret, during compositionstart. The IME input should then take place in the location where the caret has been placed.

This all works on firefox, tested 3.0, 3.5, 3.6

I understand that this will still have some issues relating to recomposition of text, but since recomposition isn&apos;t even implemented yet, at least this will allow solving 99%-100% of current problems that exist regarding IMEs and unexpected DOM modifications.

To illustrate the events, please use http://www.danilatos.com/event-test/ExperimentTest.html

To illustrate the caret movement, please use http://www.danilatos.com/event-test/ime-test.html
Instructions: 
1. Select action &quot;Split at cursor, move cursor into span.&quot;, and tick when &quot;compositionstart&quot;. 
2. Switch to an IME (e.g. Chinese pinyin, or tablet input, or whatever). 
3. Click somewhere in the red editable area, and begin typing. The IME input should successfully get transported into the middle of some green coloured text.

In Firefox 3.0+, this works great, both for &quot;compositionstart&quot; and for &quot;key event&quot;. In Safari/Chrome, the DOM changes first, THEN the green text comes up (only for &quot;key event&quot; since there is no composition start in webkit), then the cursor gets moved, and the IME input state is broken (e.g. the underline for chinese input vanishes, as the cursor has moved after the input began, not before).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159286</commentid>
    <comment_count>1</comment_count>
      <attachid>42203</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-10-30 03:15:47 -0700</bug_when>
    <thetext>Created attachment 42203
a work-in-progress patch

Even though this change works good on my Macbook, I&apos;m not sure it works on Windows or Linux.
(That is, this change is not ready for review.)
So, I just would like to hear opinions.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161513</commentid>
    <comment_count>2</comment_count>
      <attachid>42736</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-08 23:47:33 -0800</bug_when>
    <thetext>Created attachment 42736
A proposed patch (only for Mac)

Sorry for my slow updates.
Even though I tried setting up build environments for WebKit GTK, WebKit QT, and WebKit Win,  I wasn&apos;t able to set up build them.
So, I enclosed some part of my previous change with #if PLATFORM(MAC) and #endif to avoid possible build breaks occurred by the lack of the new files.
Is it possible to review this change and give me your comments?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161535</commentid>
    <comment_count>3</comment_count>
      <attachid>42744</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-09 02:50:48 -0800</bug_when>
    <thetext>Created attachment 42744
A proposed patch (only for Mac)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161538</commentid>
    <comment_count>4</comment_count>
      <attachid>42745</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-09 02:53:33 -0800</bug_when>
    <thetext>Created attachment 42745
A proposed patch 2 (only for Mac)

Sorry. I attached a wrong patch. (The previous one may send a compositionstart event even when m_compositionNode == 0 &amp;&amp; text.isEmpty(), when setComposition() doesn&apos;t create a composition node.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161783</commentid>
    <comment_count>5</comment_count>
      <attachid>42745</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-09 14:10:42 -0800</bug_when>
    <thetext>Comment on attachment 42745
A proposed patch 2 (only for Mac)

What is the reason for having the code be Mac only? I can&apos;t see any mac specific code in it...

Your test case should describe how to run the test manually

--Oliver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161997</commentid>
    <comment_count>6</comment_count>
      <attachid>42854</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-10 02:11:41 -0800</bug_when>
    <thetext>Created attachment 42854
A proposed patch 3 (for WebKit and Chromium)

Thank you for your comments.

&gt; What is the reason for having the code be Mac only? I can&apos;t see any mac specific code in it...

This is just because I haven&apos;t had any idea how I can add files to GTK (or QT) projects.
I have added them and checked this change can be compiled on WebKit GTK and WebKit Win. (I&apos;m not confident this is correct, though. Please feel free to blame me if I&apos;m wrong.)

&gt; Your test case should describe how to run the test manually

Thank you for noticing this.
I added a brief comment how to use my layout test manually

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162013</commentid>
    <comment_count>7</comment_count>
      <attachid>42854</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-10 04:16:19 -0800</bug_when>
    <thetext>Comment on attachment 42854
A proposed patch 3 (for WebKit and Chromium)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162119</commentid>
    <comment_count>8</comment_count>
      <attachid>42854</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 11:04:43 -0800</bug_when>
    <thetext>Comment on attachment 42854
A proposed patch 3 (for WebKit and Chromium)

Bono-san doesn&apos;t seem to be a committer yet, so adding to the cq.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162124</commentid>
    <comment_count>9</comment_count>
      <attachid>42854</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-10 11:12:27 -0800</bug_when>
    <thetext>Comment on attachment 42854
A proposed patch 3 (for WebKit and Chromium)

Rejecting patch 42854 from commit-queue.

Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
Last 500 characters of output:
e/rendering/RenderRubyRun.cpp -o /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/RenderRubyRun.o
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/JSCompositionEvent.o /Users/eseidel/Projects/CommitQueue/WebCore/../WebKitBuild/Release/DerivedSources/WebCore/JSCompositionEvent.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162552</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-11 10:41:49 -0800</bug_when>
    <thetext>Bono-san will need to investigate the build failure and post a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162802</commentid>
    <comment_count>11</comment_count>
      <attachid>43031</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-11 23:00:43 -0800</bug_when>
    <thetext>Created attachment 43031
proposed patch 4 (for WebKit and Chromium)

Hi Eric,

Thank you so much for your review, and sorry for this build failure caused by my change.
I noticed the xcode project file in my previous change always refers to &quot;WebKitBuild/Release/DerivedSources/WebCore/JSCompositionEvent.cpp&quot; and it causes a build break when we build the debug version without building the release version. (This is a bonehead mistake of mine in adding JSCompositionEvent.{cpp,h} to this project.)
To fix this problem, I have changed the project file, and confirmed I can compile the debug version without building the release one.
(Except this change, this patch is same as the previous one.)
Would it be possible to review the update one?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163142</commentid>
    <comment_count>12</comment_count>
      <attachid>42854</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-12 18:22:15 -0800</bug_when>
    <thetext>Comment on attachment 42854
A proposed patch 3 (for WebKit and Chromium)

Clean up patch from pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163459</commentid>
    <comment_count>13</comment_count>
      <attachid>43031</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-13 12:59:51 -0800</bug_when>
    <thetext>Comment on attachment 43031
proposed patch 4 (for WebKit and Chromium)

The patch 43031 is identical to the one Oliver r+&apos;ed, except the fixed path to JSCompositionEvent files in pbxproj.

One more thing:
&gt; Index: WebCore/WebCore.vcproj/WebCore.vcproj
&gt;  				&lt;File
&gt; +					RelativePath=&quot;..\inspector\front-end\DOMStorageDataGrid.js&quot;
&gt; +					&gt;
&gt; +				&lt;/File&gt;
&gt; +				&lt;File

I think this is not an intended change. This file does not exist and seems not relevant to the patch.
Since the rest of the change is already reviewed, I will try to fix up vcproj and land this manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163466</commentid>
    <comment_count>14</comment_count>
      <attachid>43031</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-13 13:16:54 -0800</bug_when>
    <thetext>Comment on attachment 43031
proposed patch 4 (for WebKit and Chromium)

Removing r? since it doesn&apos;t need another review, just landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163487</commentid>
    <comment_count>15</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-13 13:52:26 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/50968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163832</commentid>
    <comment_count>16</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-15 18:48:28 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Landed: http://trac.webkit.org/changeset/50968

Thank you so much for fixing my mistake in the vcproj file and land this change.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42203</attachid>
            <date>2009-10-30 03:15:47 -0700</date>
            <delta_ts>2009-11-08 23:47:33 -0800</delta_ts>
            <desc>a work-in-progress patch</desc>
            <filename>issue26310-patch2.txt</filename>
            <type>text/plain</type>
            <size>30203</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDMyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMDktMTAtMzAgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNvbXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21w
b3NpdGlvbiBldmVudHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRo
ZSBjb21wb3NpdGlvbiBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFj
Y29yZGluZyB0bworICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzMTAKKyAgICAgICAgCisgICAgICAg
IFRlc3Q6IGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
Q3VzdG9tLmNwcDogCisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20vQ29t
cG9zaXRpb25FdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25F
dmVudDo6Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2
ZW50Ojp+Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2
ZW50Ojppbml0Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlv
bkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQpOgorICAgICAgICAqIGRvbS9Db21wb3NpdGlvbkV2
ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmRhdGEpOgorICAgICAgICAq
IGRvbS9Db21wb3NpdGlvbkV2ZW50LmlkbDogQWRkZWQgdGhlIGRlZmluaXRpb24gb2YgY29tcG9z
aXRpb24gZXZlbnRzLgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6IEltcGxlbWVudGVkIEV2ZW50
Ojppc0NvbXBvc2l0aW9uRXZlbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojppc0NvbXBv
c2l0aW9uRXZlbnQpOgorICAgICAgICAqIGRvbS9FdmVudC5oOiBBZGRlZCBhIHZpcnR1YWwgZnVu
Y3Rpb24gRXZlbnQ6OmlzQ29tcG9zaXRpb25FdmVudCgpLgorICAgICAgICAqIGRvbS9FdmVudE5h
bWVzLmg6IEFkZGVkIHRoZSBuYW1lcyBvZiBjb21wb3NpdGlvbiBldmVudHMgdG8gZXZlbnROYW1l
cygpLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDogU2VudCBjb21wb3NpdGlvbiBldmVu
dHMgdG8gdGhlIGZvY3VzZWQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29uZmly
bUNvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24p
OgorCiAyMDA5LTEwLTMwICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gNTAzMTUpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgQ2xpZW50
UmVjdExpc3QgXAogICAgIENsaXBib2FyZCBcCiAgICAgQ29tbWVudCBcCisgICAgQ29tcG9zaXRp
b25FdmVudCBcCiAgICAgQ29uc29sZSBcCiAgICAgQ29vcmRpbmF0ZXMgXAogICAgIENvdW50ZXIg
XApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1MDMxNSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsNyBAQCBJRExfQklORElOR1MgKz0gXAogCVdl
YkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmlkbCBcCiAJV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlk
bCBcCiAJV2ViQ29yZS9kb20vQ29tbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL0NvbXBvc2l0aW9u
RXZlbnQuaWRsIFwKIAlXZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmlkbCBcCiAJV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsIFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwg
XApAQCAtNjc4LDYgKzY3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20v
Q2xpcGJvYXJkRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vQ29tbWVudC5jcHAgXAogCVdlYkNvcmUv
ZG9tL0NvbW1lbnQuaCBcCisJV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAgXAorCVdl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgXAogCVdlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBcCiAJV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDUwMzE1KQorKysgV2ViQ29y
ZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMzM4LDYgKzMzOCw3IEBAIElETF9CSU5E
SU5HUyArPSBcCiAgICAgZG9tL0NsaXBib2FyZC5pZGwgXAogICAgIGRvbS9DREFUQVNlY3Rpb24u
aWRsIFwKICAgICBkb20vQ29tbWVudC5pZGwgXAorICAgIGRvbS9Db21wb3NpdGlvbkV2ZW50Lmlk
bCBcCiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsIFwKICAgICBkb20vRG9jdW1lbnQuaWRs
IFwKICAgICBkb20vRG9jdW1lbnRUeXBlLmlkbCBcCkBAIC04NTksNiArODYwLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgZG9tL0NsaXBib2FyZC5jcHAgXAogICAgIGRvbS9DbGlwYm9hcmRFdmVudC5j
cHAgXAogICAgIGRvbS9Db21tZW50LmNwcCBcCisgICAgZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3Bw
IFwKICAgICBkb20vQ29udGFpbmVyTm9kZS5jcHAgXAogICAgIGRvbS9DU1NNYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbi5jcHAgXAogICAgIGRvbS9Eb2N1bWVudC5jcHAgXApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNl
cy5ia2wJKHJldmlzaW9uIDUwMzE1KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdv
cmtpbmcgY29weSkKQEAgLTI3NCw2ICsyNzQsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDbGllbnRS
ZWN0TGlzdC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NsaXBib2FyZC5j
cHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbW1lbnQuY3BwCisgICAgICAg
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb21wb3NpdGlvbkV2ZW50LmNwcAogICAgICAgICBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29uc29sZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0Nvb3JkaW5hdGVzLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQ291bnRlci5jcHAKQEAgLTQ1NCw2ICs0NTUsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMg
dGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGRvbS9DbGlwYm9hcmQuY3BwCiAgICAgICAg
IGRvbS9DbGlwYm9hcmRFdmVudC5jcHAKICAgICAgICAgZG9tL0NvbW1lbnQuY3BwCisgICAgICAg
IGRvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAogICAgICAgICBkb20vQ29udGFpbmVyTm9kZS5jcHAK
ICAgICAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAogICAgICAgICBkb20vRG9jdW1lbnQu
Y3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDUw
MzE1KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTI4MSw2ICsxMjgxLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNDb21wb3NpdGlvbkV2ZW50LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ29tcG9zaXRpb25FdmVudC5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ29uc29sZS5jcHAiCiAJCQkJPgog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtMjgyNjcsNiArMjgzMjMsMTQgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXENvbXBvc2l0aW9u
RXZlbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cQ29tcG9zaXRpb25FdmVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQ29udGFpbmVyTm9kZS5jcHAiCiAJCQkJPgogCQkJ
PC9GaWxlPgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDUwMzE1KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMDcsNiArMTIwNywxMCBAQAogCQk3NjkzQkFEMzEw
NkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXIuY3BwICovOyB9OwogCQk3NjkzQkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2lu
SGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi87IH07CiAJCTc2OTNC
QUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgy
MyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3OUFDOTIxODEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3Np
dGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5QUM5MjE2MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwICov
OyB9OworCQk3OUFDOTIxOTEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUFDOTIxNzEw
OTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CisJCTc5RjJGNUEx
MTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAv
KiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsgfTsKKwkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NC
IC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50
LmggKi87IH07CiAJCTdBMUU4OEY1MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFFODhGMzEw
MUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3BwICovOyB9OwogCQk3QTFFODhGNjEwMUND
Mzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEY0MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdB
MjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI0NTg3OTEwMjFFQUY0MDAw
QTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwICovOyB9OwpAQCAtNjQ5OSw2ICs2NTAzLDEx
IEBACiAJCTc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luSGFsdGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdp
bkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBRDExMDZDMkRDQTAwN0IwODIz
IC8qIFBsdWdpbkhhbHRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQbHVnaW5IYWx0ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlB
QzkyMTYxMDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwOyBwYXRo
ID0gLi4vV2ViS2l0QnVpbGQvUmVsZWFzZS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tcG9z
aXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNzlBQzkyMTcx
MDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBKU0NvbXBvc2l0aW9uRXZlbnQuaDsgcGF0aCA9IC4uL1dlYktpdEJ1
aWxkL1JlbGVhc2UvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbXBvc2l0aW9uRXZlbnQuaDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0Ig
LyogQ29tcG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb21wb3NpdGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcG9zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3OUYyRjVBMDEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25F
dmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29tcG9zaXRpb25FdmVudC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBT
Y3JpcHRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jp
cHRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMUU4OEY0MTAxQ0Mz
ODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI0NTg3
OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRE9NQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMzNjksNiArMTMzNzgsOCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJQkM5NDYzNDUxMDdBOTM0QjAwODU3MTkzIC8qIEpTQmVmb3JlTG9hZEV2ZW50LmNwcCAq
LywKIAkJCQlCQzk0NjM0NzEwN0E5MzY2MDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCAq
LywKKwkJCQk3OUFDOTIxNjEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNw
cCAqLywKKwkJCQk3OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50
LmggKi8sCiAJCQkJMkVDRjdBREExMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAg
Ki8sCiAJCQkJMkVDRjdBREIxMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovLAog
CQkJCTE0RTgzNzgzMDlGODVEMUMwMEI4NUFFNCAvKiBKU0V2ZW50LmNwcCAqLywKQEAgLTE1NDU4
LDYgKzE1NDY5LDkgQEAKIAkJCQk2NTUwQjY5NzA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5j
cHAgKi8sCiAJCQkJNjU1MEI2OTgwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCAqLywKIAkJ
CQk4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwgKi8sCisJCQkJNzlGMkY1
OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovLAorCQkJCTc5RjJG
NTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi8sCisJCQkJNzlGMkY1
QTAxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaWRsICovLAogCQkJCUE4MTg3
MjE0MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIx
MTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oICovLAogCQkJCUE4QzRBN0Y4MDlE
NTYzMjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBA
IC0xNTgwNSw2ICsxNTgxOSw3IEBACiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENv
bW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAvKiBD
b21wb3NpdGVBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0OTIw
MDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlG
MkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMEIzNkE1MENEM0M2N0MwMEFDN0VCNSAvKiBDb25zb2xlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTY5NzIsNiArMTY5ODcsNyBAQAogCQkJCTUxRUM5MjZBMENFOTBERDQw
MEY5MDMwOCAvKiBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEzNDE3QzkwQ0VDRkYyNTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5QUM5MjE5MTA5OTQ1
QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RTgyRjkwMENBQUZBOUQwMDIyMzdBRSAvKiBKU0RhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzc3RDE2QTBGRjE5RjU2MDA3MDg4N0IgLyogSlNEYXRhR3JpZENvbHVtbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM3N0QxNkMwRkYxOUY1NjAwNzA4ODdCIC8qIEpTRGF0YUdyaWRDb2x1bW5M
aXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE4NDMwLDYgKzE4NDQ2LDcgQEAKIAkJCQkzN0MyMzgy
MjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTUwRTZFMURBNzAwQkY2MDg4IC8qIENvbXBvc2l0ZUFu
aW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUREQzA5OUU2NDkyMDA1NkU1ODEg
LyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzlGMkY1QTEx
MDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMwQjM2QTQwQ0QzQzY3QzAwQUM3RUI1IC8qIENvbnNvbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFGMDYxOEYwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4MTg3MjFGMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjAyMDcsNiArMjAyMjQsNyBAQAogCQkJCUJDOTdFMjNC
MTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzk3RTQyQzEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OUFDOTIxODEwOTk0NUM4
MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MDMxNSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkpTQmVmb3JlTG9hZEV2
ZW50LmgiCiAjaW5jbHVkZSAiSlNDbGlwYm9hcmQuaCIKKyNpbmNsdWRlICJKU0NvbXBvc2l0aW9u
RXZlbnQuaCIKICNpbmNsdWRlICJKU0Vycm9yRXZlbnQuaCIKICNpbmNsdWRlICJKU0tleWJvYXJk
RXZlbnQuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudC5oIgpAQCAtNDgsNiArNDksNyBAQAog
I2luY2x1ZGUgIkpTV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiQmVmb3JlTG9hZEV2ZW50LmgiCisjaW5jbHVkZSAiQ29t
cG9zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJLZXli
b2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCkBAIC0xMDcsNiArMTA5LDgg
QEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAgICAgICBlbHNl
IGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVB
VEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU1ZHWm9vbUV2ZW50LCBl
dmVudCk7CiAjZW5kaWYKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQtPmlzQ29tcG9zaXRpb25FdmVu
dCgpKQorICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fT0JKRUNUX1dSQVBQRVIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBDb21wb3NpdGlvbkV2ZW50LCBldmVudCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgVUlFdmVudCwgZXZlbnQpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlzTXV0
YXRpb25FdmVudCgpKQpJbmRleDogV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNvbXBvc2l0aW9uRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkKK3sK
K30KKworQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEpCisgICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCisgICAgLCBtX2Rh
dGEoZGF0YSkKK3sKK30KKworQ29tcG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKQor
eworfQorCit2b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFz
c1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBp
ZiAoZGlzcGF0Y2hlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0VUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworCisgICAgbV9kYXRhID0gZGF0YTsK
K30KKworYm9vbCBDb21wb3NpdGlvbkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdAor
eworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
Q29tcG9zaXRpb25FdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAq
LworCisjaWZuZGVmIENvbXBvc2l0aW9uRXZlbnRfaAorI2RlZmluZSBDb21wb3NpdGlvbkV2ZW50
X2gKKworI2luY2x1ZGUgIlVJRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgQ29tcG9zaXRpb25FdmVudCA6IHB1YmxpYyBVSUV2ZW50IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRpb25FdmVudCk7
CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCB2aWV3LCBkYXRhKSk7CisgICAgICAg
IH0KKyAgICAgICAgdmlydHVhbCB+Q29tcG9zaXRpb25FdmVudCgpOworICAgIAorICAgICAgICB2
b2lkIGluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25z
dCBTdHJpbmcmIGRhdGEpOworICAgIAorICAgICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0aW9uRXZlbnQo
KSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIENvbXBvc2l0aW9uRXZlbnQoKTsKKyAg
ICAgICAgQ29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQ
dHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpOworCisgICAgICAgIFN0
cmluZyBtX2RhdGE7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gQ29tcG9zaXRpb25FdmVudF9oCkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBldmVudHMgeworCisgICAgLy8g
SW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMzoKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5l
cmF0ZUNvbnN0cnVjdG9yCisgICAgXSBDb21wb3NpdGlvbkV2ZW50IDogVUlFdmVudCB7CisKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkYXRhOworCisgICAgICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVdpbmRvdyB2aWV3QXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgZGF0YUFyZyk7CisK
KyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiA1MDMxNSkKKysrIFdlYkNvcmUvZG9tL0V2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMTEgQEAgYm9vbCBFdmVudDo6aXNU
ZXh0RXZlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFdmVudDo6aXND
b21wb3NpdGlvbkV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wg
RXZlbnQ6OmlzRHJhZ0V2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBX
ZWJDb3JlL2RvbS9FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJl
dmlzaW9uIDUwMzE1KQorKysgV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAzLDYgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29s
IGlzTXV0YXRpb25FdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0RyYWdFdmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3Vz
ZSBldmVudHMKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCShyZXZpc2lvbiA1MDMxNSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8o
Y2hlY2tpbmcpIFwKICAgICBtYWNybyhjbGljaykgXAogICAgIG1hY3JvKGNsb3NlKSBcCisgICAg
bWFjcm8oY29tcG9zaXRpb25lbmQpIFwKKyAgICBtYWNybyhjb21wb3NpdGlvbnN0YXJ0KSBcCisg
ICAgbWFjcm8oY29tcG9zaXRpb251cGRhdGUpIFwKICAgICBtYWNybyhjb25uZWN0KSBcCiAgICAg
bWFjcm8oY29udGV4dG1lbnUpIFwKICAgICBtYWNybyhjb3B5KSBcCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAkocmV2aXNpb24gNTAzMTUpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNp
bmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgi
CisjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkNyZWF0ZUxpbmtDb21t
YW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKQEAgLTEzNzUsNiArMTM3NiwxNSBAQCB2
b2lkIEVkaXRvcjo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0CiAgICAgaWYgKHRleHQuaXNF
bXB0eSgpKQogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24obV9mcmFtZS0+
ZG9jdW1lbnQoKSwgZmFsc2UpOwogCisgICAgLy8gRGlzcGF0Y2ggYSBjb21wb3NpdGlvbmVuZCBl
dmVudCB0byB0aGUgZm9jdXNlZCBub2RlLgorICAgIC8vIFdlIHNlbmQgdGhpcyBldmVudCBiZWZv
cmUgYSBUZXh0RXZlbnQgYXMgd3JpdHRlbiBpbiBTZWN0aW9uIDYuMi4yIGFuZCA2LjIuMyBvZiB0
aGUgRE9NIEV2ZW50IHNwZWNpZmljYXRpb24uCisgICAgTm9kZSogdGFyZ2V0ID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgIFJl
ZlB0cjxDb21wb3NpdGlvbkV2ZW50PiBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRl
eHQpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KGV2ZW50LCBlYyk7CisgICAgfQorCiAgICAgbV9jb21wb3NpdGlvbk5vZGUgPSAw
OwogICAgIG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzLmNsZWFyKCk7CiAKQEAgLTEzOTYs
NyArMTQwNiwzNSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nCiAg
ICAgICAgIHNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIE5vZGUqIHRhcmdldCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPmZvY3VzZWROb2RlKCk7CisgICAgaWYgKHRhcmdldCkgeworICAgICAgICAvLyBE
aXNwYXRjaCBhbiBhcHByb3ByaWF0ZSBjb21wb3NpdGlvbiBldmVudCB0byB0aGUgZm9jdXNlZCBu
b2RlLgorICAgICAgICAvLyBXZSBjaGVjayB0aGUgY29tcG9zaXRpb24gc3RhdHVzIGFuZCBjaG9v
c2UgYW4gYXBwcm9wcmlhdGUgY29tcG9zaXRpb24gZXZlbnQgc2luY2UgdGhpcyBmdW5jdGlvbgor
ICAgICAgICAvLyBpcyB1c2VkIGZvciB0aHJlZSBwdXJwb3NlczoKKyAgICAgICAgLy8gMS4gU3Rh
cnRpbmcgYSBuZXcgY29tcG9zaXRpb24uCisgICAgICAgIC8vICAgIFRoaXMgZnVuY3Rpb24gY3Jl
YXRlcyBhIG5ldyBjb21wb3NpdGlvbiBub2RlIGFuZCBzdGFydHMgYSBjb21wb3NpdGlvbiB3aGVu
IHRoZXJlIGlzIG5vdCBhbgorICAgICAgICAvLyAgICBjb21wb3NpdGlvbiBub2RlLCBpLmUuIG1f
Y29tcG9zaXRpb25Ob2RlID09IDAuCisgICAgICAgIC8vICAgIEluIHRoaXMgY2FzZSwgd2UgbmVl
ZCB0byBzZW5kIGEgY29tcG9zaXRpb25zdGFydCBldmVudC4KKyAgICAgICAgLy8gMi4gVXBkYXRp
bmcgdGhlIGV4aXN0aW5nIGNvbXBvc2l0aW9uIG5vZGUuCisgICAgICAgIC8vICAgIFRoaXMgZnVu
Y3Rpb24gdXBkYXRlcyB0aGUgY29tcG9zaXRpb24gbm9kZSB3aGVuIHRoZXJlIGlzIGEgY29tcG9p
dGlvbiBub2RlIGFuZCB0aGUgZ2l2ZW4gdGV4dAorICAgICAgICAvLyAgICBpcyBub3QgZW1wdHks
IGkuZS4gbV9jb21wb3NpdGlvbk5vZGUgIT0gMCAmJiAhdGV4dC5pc0VtcHR5KCkuCisgICAgICAg
IC8vICAgIEluIHRoaXMgY2FzZSwgd2UgbmVlZCB0byBzZW5kIGEgY29tcG9zdGlvbnVwZGF0ZSBl
dmVudC4KKyAgICAgICAgLy8gMy4gQ2FuY2VsaW5nIHRoZSBvbmdvaW5nIGNvbXBvc2l0aW9uLgor
ICAgICAgICAvLyAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGNvbXBvc2l0aW9uIG5kb2Ug
d2hlbiB0aGVyZSBpcyBhIGNvbXBvc2l0aW9uIG5vZGUgYnV0IHRoZSBnaXZlbiB0ZXh0CisgICAg
ICAgIC8vICAgIGlzIGVtcHR5LCBpLmUuIG1fY29tcG9zaXRpb25Ob2RlICE9IDAgJiYgdGVzdC5p
c0VtcHR5KCkuCisgICAgICAgIC8vICAgIEluIHRoaXMgY2FzZSwgd2UgbmVlZCB0byBzZW5kIGEg
Y29tcG9zaXRpb25lbmQgZXZlbnQuCisgICAgICAgIFJlZlB0cjxDb21wb3NpdGlvbkV2ZW50PiBl
dmVudDsKKyAgICAgICAgaWYgKCFtX2NvbXBvc2l0aW9uTm9kZSkKKyAgICAgICAgICAgIGV2ZW50
ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0
RXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgZWxzZSBpZiAoIXRl
eHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRv
dygpLCB0ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIG1fZnJhbWUt
PmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOworICAgIH0KKwogICAgIC8vIElm
IHRleHQgaXMgZW1wdHksIHRoZW4gZGVsZXRlIHRoZSBvbGQgY29tcG9zaXRpb24gaGVyZS4gIElm
IHRleHQgaXMgbm9uLWVtcHR5LCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQKICAgICAvLyB3aWxs
IGRlbGV0ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIHdpdGggYW4gb3B0aW1pemVkIHJlcGxhY2Ugb3Bl
cmF0aW9uLgogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwMzIz
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMDktMTAtMzAgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGNv
bXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgorICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21wb3NpdGlvbiBldmVu
dHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRoZSBjb21wb3NpdGlv
biBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFjY29yZGluZyB0bwor
ICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzMTAKKworICAgICAgICAqIGZhc3QvZXZlbnRzL2ltZS1j
b21wb3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbDogQWRkZWQuCisKIDIwMDkt
MTAtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lt
ZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRp
b24tZXZlbnRzLTAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAK
K1RoaXMgdGVzdHMgdGhhdCBjYWxsaW5nIGlucHV0LW1ldGhvZCBmdW5jdGlvbnMgc2VuZHMgQ29t
cG9zaXRpb24gRXZlbnRzIGFuZCBUZXh0IEV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAz
LgorCisKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb25zdGFydCAtICIxIgorU1VDQ0VTUzog
SU5QVVQgLSBjb21wb3NpdGlvbnVwZGF0ZSAtICIyIgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3Np
dGlvbnVwZGF0ZSAtICIzIgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbmVuZCAtICI0Igor
U1VDQ0VTUzogSU5QVVQgLSB0ZXh0SW5wdXQgLSAiNCIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9z
aXRpb25zdGFydCAtICI1IgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbnVwZGF0ZSAtICI2
IgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbnVwZGF0ZSAtICI3IgorU1VDQ0VTUzogSU5Q
VVQgLSBjb21wb3NpdGlvbmVuZCAtICIiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9p
bWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBjYWxsaW5nIGlu
cHV0LW1ldGhvZCBmdW5jdGlvbnMgc2VuZHMgQ29tcG9zaXRpb24gRXZlbnRzIGFuZCBUZXh0IEV2
ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLjwvcD4KKzxpbnB1dCBpZD0idGVzdCIgdHlw
ZT0idGV4dCIvPgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2
YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyhzdHIpIHsKKyAg
IHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICBsaS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkp
OworfQorCitmdW5jdGlvbiBsb2dFdmVudChlKSB7CisgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0
OworICAgIHZhciB0eXBlID0gZS50eXBlOworICAgIGlmIChlLnR5cGUgPT0gJ2NvbXBvc2l0aW9u
c3RhcnQnIHx8IGUudHlwZSA9PSAnY29tcG9zaXRpb251cGRhdGUnIHx8IGUudHlwZSA9PSAnY29t
cG9zaXRpb25lbmQnIHx8IGUudHlwZSA9PSAndGV4dElucHV0JykKKyAgICAgICAgbG9nKCdTVUND
RVNTOiAnICsgdGFyZ2V0LnRhZ05hbWUgKyAnIC0gJyArIGUudHlwZSArICcgLSAiJyArIGUuZGF0
YSArICciJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ0ZBSUxFRDogJyArIHRhcmdldC50YWdO
YW1lICsgJyAtICcgKyBlLnR5cGUgKyAnIC0gIicgKyBlLmRhdGEgKyAnIicpOworfQorCit2YXIg
dGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Cit0ZXN0LmZvY3VzKCk7CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSA8
aW5wdXQ+IG5vZGUuCisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0
IiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICB0ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0
aW9udXBkYXRlIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICB0ZXN0LmFkZEV2ZW50TGlzdGVuZXIo
ImNvbXBvc2l0aW9uZW5kIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICB0ZXN0LmFkZEV2ZW50TGlz
dGVuZXIoInRleHRJbnB1dCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisKKyAgICAvLyBDYXNlIDE6IENv
bXBvc2UgYSB0ZXh0IGFuZCBjb21taXQgaXQuCisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRN
YXJrZWRUZXh0KCcxJywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRU
ZXh0KCcyJywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCcz
JywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCc0Jyk7CisKKyAg
ICAvLyBDYXNlIDI6IENvbXBvc2UgYSB0ZXh0IGJ1dCBjYW5jZWwgaXQuCisgICAgdGV4dElucHV0
Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCc1JywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJv
bGxlci5zZXRNYXJrZWRUZXh0KCc2JywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5z
ZXRNYXJrZWRUZXh0KCc3JywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJr
ZWRUZXh0KCcnLCAwLCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42736</attachid>
            <date>2009-11-08 23:47:33 -0800</date>
            <delta_ts>2009-11-09 02:53:33 -0800</delta_ts>
            <desc>A proposed patch (only for Mac)</desc>
            <filename>issue26310-patch5.txt</filename>
            <type>text/plain</type>
            <size>27958</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDYzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMTEtMDggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNvbXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21w
b3NpdGlvbiBldmVudHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRo
ZSBjb21wb3NpdGlvbiBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFj
Y29yZGluZyB0bworICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzEwCisKKyAgICAgICAgVGVzdDogZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZTogQWRkZWQgQ29tcG9zaXRpb25FdmVudCBzbyB3ZSBjYW4gY29tcGls
ZSBpdHMgSURMLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgQ29tcG9zaXRpb25FdmVudC57Y3BwLGgsaWRsfSBhbmQgSlNDb21wb3NpdGlvbkV2ZW50
LntjcHAsaH0uCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKTogQ2FsbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSB0byBjcmVhdGUg
dGhlIENvbXBvc2l0aW9uRXZlbnQgd3JhcHBlci4KKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25F
dmVudC5jcHA6IEltcGxlbWVudHMgdGhlIENvbXBvc2l0aW9uRXZlbnQgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmlzQ29tcG9zaXRpb25FdmVudCk6CisgICAg
ICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuaDogRGVjbGFyZXMgdGhlIENvbXBvc2l0aW9uRXZl
bnQgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6ZGF0YSk6CisgICAgICAgICogZG9t
L0NvbXBvc2l0aW9uRXZlbnQuaWRsOiBBZGRlZCB0aGUgSURMIG9mIERPTSBDb21wb3NpdGlvbkV2
ZW50LgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6
aXNDb21wb3NpdGlvbkV2ZW50KTogQWRkZWQgYSBtZXRob2QgdG8gaWRlbnRpZnkgYW4gZXZlbnQg
aXMgYSBET00gQ29tcG9zaXRpb25FdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgY29tcG9zaXRpb257c3RhcnQsdXBkYXRlLGVuZH0g
dG8gZXZlbnROYW1lcy4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OmNvbmZpcm1Db21wb3NpdGlvbik6IFNlbmRzIGEgQ29tcG9zaXRpb25F
bmQgZXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKTogU2Vu
ZHMgYSBDb21wb3NpdGlvbntTdGFydCxVcGRhdGUsRW5kfSBldmVudC4KKwogMjAwOS0xMS0wOCAg
RHJldyBXaWxzb24gIDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNTA2MzAp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYg
Kzk2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgQ2xpZW50UmVjdExpc3QgXAogICAgIENsaXBi
b2FyZCBcCiAgICAgQ29tbWVudCBcCisgICAgQ29tcG9zaXRpb25FdmVudCBcCiAgICAgQ29uc29s
ZSBcCiAgICAgQ29vcmRpbmF0ZXMgXAogICAgIENvdW50ZXIgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUwNjMwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEy
MTUsNiArMTIxNSwxMCBAQAogCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFs
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9OwogCQk3Njkz
QkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyog
UGx1Z2luSGFsdGVyLmggKi87IH07CiAJCTc2OTNCQUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OUFDOTIx
ODEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QUM5MjE2MTA5OTQ1QzgwMDIxMjY2
RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OworCQk3OUFDOTIxOTEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3Np
dGlvbkV2ZW50LmggKi87IH07CisJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3Np
dGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsg
fTsKKwkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkz
OUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMUU4OEY1MTAxQ0Mz
ODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFFODhGMzEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJy
YXkuY3BwICovOyB9OwogCQk3QTFFODhGNjEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEY0
MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJ
bnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwICovOyB9OwpAQCAtNjUxNSw2ICs2NTE5LDExIEBACiAJCTc2OTNCQUNGMTA2QzJEQ0EwMDdC
MDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGx1Z2luSGFsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5
M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzY5M0JBRDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXJDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZFIC8qIEpT
Q29tcG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwOyBwYXRoID0gLi4vV2ViS2l0QnVpbGQvUmVsZWFzZS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tcG9zaXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJNzlBQzkyMTcxMDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9z
aXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0NvbXBvc2l0
aW9uRXZlbnQuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL1JlbGVhc2UvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0NvbXBvc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQk3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
cG9zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUYyRjVBMDEw
OTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ29tcG9zaXRpb25FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBMUU4OEY0MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVj
dG9yRE9NQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzODUs
NiArMTMzOTQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5NDYzNDUxMDdBOTM0QjAwODU3
MTkzIC8qIEpTQmVmb3JlTG9hZEV2ZW50LmNwcCAqLywKIAkJCQlCQzk0NjM0NzEwN0E5MzY2MDA4
NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCAqLywKKwkJCQk3OUFDOTIxNjEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLywKKwkJCQk3OUFDOTIxNzEwOTk0NUM4
MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8sCiAJCQkJMkVDRjdBREExMDE2MkIz
ODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi8sCiAJCQkJMkVDRjdBREIxMDE2MkIzODAw
NDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovLAogCQkJCTE0RTgzNzgzMDlGODVEMUMwMEI4NUFF
NCAvKiBKU0V2ZW50LmNwcCAqLywKQEAgLTE1NDgyLDYgKzE1NDkzLDkgQEAKIAkJCQk2NTUwQjY5
NzA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5jcHAgKi8sCiAJCQkJNjU1MEI2OTgwOTlERjAy
NzAwOTBENzgxIC8qIENvbW1lbnQuaCAqLywKIAkJCQk4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEg
LyogQ29tbWVudC5pZGwgKi8sCisJCQkJNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuY3BwICovLAorCQkJCTc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21w
b3NpdGlvbkV2ZW50LmggKi8sCisJCQkJNzlGMkY1QTAxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuaWRsICovLAogCQkJCUE4MTg3MjE0MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250
YWluZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFp
bmVyTm9kZS5oICovLAogCQkJCUE4QzRBN0Y4MDlENTYzMjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBAIC0xNTgyOSw2ICsxNTg0Myw3IEBACiAJCQkJ
NjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAvKiBDb21wb3NpdGVBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENv
bXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Qzk3QUYzMDhFQTkwODgwMEFD
RDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMEIzNkE1MENEM0M2N0MwMEFD
N0VCNSAvKiBDb25zb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBB
MDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTY5OTYsNiArMTcw
MTEsNyBAQAogCQkJCTUxRUM5MjZBMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNDE3QzkwQ0VDRkYy
NTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTc5QUM5MjE5MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTgyRjkwMENBQUZBOUQwMDIyMzdBRSAvKiBK
U0RhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3RDE2QTBGRjE5RjU2MDA3MDg4N0Ig
LyogSlNEYXRhR3JpZENvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3N0QxNkMwRkYxOUY1
NjAwNzA4ODdCIC8qIEpTRGF0YUdyaWRDb2x1bW5MaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE4
NDU4LDYgKzE4NDc0LDcgQEAKIAkJCQkzN0MyMzgyMjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTUw
RTZFMURBNzAwQkY2MDg4IC8qIENvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzMwOUREQzA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0
aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwQjM2QTQwQ0QzQzY3QzAwQUM3RUI1
IC8qIENvbnNvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMDYxOEYwRjVGMDY5ODAwQTA3
RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg3MjFGMDk3
N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTkx
MjYsNiArMTkxNDMsNyBAQAogCQkJCUJDQTgzRTRGMEQ3Q0UxRTkwMDM0MjFBOCAvKiBKU0NsaXBi
b2FyZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4M0U1MjBEN0NFMjA1MDAzNDIxQTggLyog
SlNDbGlwYm9hcmRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGOUI2RTAwQkEwRkI3
MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OUFDOTIxODEw
OTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDOTg1NDNEMENEM0Q5OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzBERkM4NzAwREI2ODQxQTAwM0VBRTdDIC8qIEpTQ29uc29sZUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGlu
YXRlcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTA2MzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMSBAQAogI2luY2x1ZGUgIlNW
R1pvb21FdmVudC5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiSlND
b21wb3NpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNyw2
ICsxMTIsMTAgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAg
ICAgICBlbHNlIGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKICAgICAgICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU1ZHWm9v
bUV2ZW50LCBldmVudCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGVsc2Ug
aWYgKGV2ZW50LT5pc0NvbXBvc2l0aW9uRXZlbnQoKSkKKyAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ29tcG9zaXRpb25F
dmVudCwgZXZlbnQpOworI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgVUlFdmVudCwg
ZXZlbnQpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQpJbmRleDog
V2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Db21w
b3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21w
b3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkKK3sKK30KKworQ29tcG9zaXRpb25FdmVu
dDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCisgICAgOiBVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCisgICAgLCBtX2RhdGEoZGF0YSkKK3sKK30KKworQ29t
cG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKQoreworfQorCit2b2lkIENvbXBvc2l0
aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHZpZXcsIDApOworCisgICAgbV9kYXRhID0gZGF0YTsKK30KKworYm9vbCBDb21wb3NpdGlv
bkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIENvbXBvc2l0
aW9uRXZlbnRfaAorI2RlZmluZSBDb21wb3NpdGlvbkV2ZW50X2gKKworI2luY2x1ZGUgIlVJRXZl
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQ29tcG9zaXRpb25FdmVu
dCA6IHB1YmxpYyBVSUV2ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRpb25FdmVudCk7CisgICAgICAgIH0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRp
b25FdmVudCh0eXBlLCB2aWV3LCBkYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB+
Q29tcG9zaXRpb25FdmVudCgpOworICAgIAorICAgICAgICB2b2lkIGluaXRDb21wb3NpdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAg
IAorICAgICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdDsKKworICAgIHByaXZh
dGU6CisgICAgICAgIENvbXBvc2l0aW9uRXZlbnQoKTsKKyAgICAgICAgQ29tcG9zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworCisgICAgICAgIFN0cmluZyBtX2RhdGE7CisgICAgfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29tcG9zaXRpb25FdmVudF9o
CkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKK21vZHVsZSBldmVudHMgeworCisgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2
ZWwgMzoKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAg
XSBDb21wb3NpdGlvbkV2ZW50IDogVUlFdmVudCB7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBkYXRhOworCisgICAgICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQo
aW4gRE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVdpbmRvdyB2aWV3QXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBET01TdHJpbmcgZGF0YUFyZyk7CisKKyAgICB9OworCit9CkluZGV4OiBX
ZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3Bw
CShyZXZpc2lvbiA1MDYzMCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNiArOTYsMTEgQEAgYm9vbCBFdmVudDo6aXNUZXh0RXZlbnQoKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFdmVudDo6aXNDb21wb3NpdGlvbkV2ZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzRHJhZ0V2ZW50KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDUwNjMwKQorKysgV2Vi
Q29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzTXV0YXRpb25FdmVudCgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Ry
YWdFdmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMKICAgICAgICAgdmly
dHVhbCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29s
IGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA1MDYzMCkK
KysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY2hlY2tpbmcpIFwKICAgICBtYWNy
byhjbGljaykgXAogICAgIG1hY3JvKGNsb3NlKSBcCisgICAgbWFjcm8oY29tcG9zaXRpb25lbmQp
IFwKKyAgICBtYWNybyhjb21wb3NpdGlvbnN0YXJ0KSBcCisgICAgbWFjcm8oY29tcG9zaXRpb251
cGRhdGUpIFwKICAgICBtYWNybyhjb25uZWN0KSBcCiAgICAgbWFjcm8oY29udGV4dG1lbnUpIFwK
ICAgICBtYWNybyhjb3B5KSBcCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNTA2MzApCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
OSBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBcHBseVN0eWxlQ29t
bWFuZC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCisjaWYgUExBVEZPUk0oTUFDKQor
I2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkNyZWF0ZUxp
bmtDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKQEAgLTEzNzAsNiArMTM3Mywx
OCBAQCB2b2lkIEVkaXRvcjo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIERpc3BhdGNoIGEg
Y29tcG9zaXRpb25lbmQgZXZlbnQgdG8gdGhlIGZvY3VzZWQgbm9kZS4KKyAgICAvLyBXZSBzaG91
bGQgc2VuZCB0aGlzIGV2ZW50IGJlZm9yZSBzZW5kaW5nIGEgVGV4dEV2ZW50IGFzIHdyaXR0ZW4g
aW4gU2VjdGlvbiA2LjIuMiBhbmQgNi4yLjMgb2YKKyAgICAvLyB0aGUgRE9NIEV2ZW50IHNwZWNp
ZmljYXRpb24uCisgICAgTm9kZSogdGFyZ2V0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNl
ZE5vZGUoKTsKKyAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgIFJlZlB0cjxDb21wb3NpdGlvbkV2
ZW50PiBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9z
aXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBl
Yyk7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBJZiB0ZXh0IGlzIGVtcHR5LCB0aGVuIGRlbGV0
ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0IGlzIG5vbi1lbXB0eSwgSW5zZXJ0
VGV4dENvbW1hbmQ6OmlucHV0CiAgICAgLy8gd2lsbCBkZWxldGUgdGhlIG9sZCBjb21wb3NpdGlv
biB3aXRoIGFuIG9wdGltaXplZCByZXBsYWNlIG9wZXJhdGlvbi4KICAgICBpZiAodGV4dC5pc0Vt
cHR5KCkpCkBAIC0xMzk2LDcgKzE0MTEsMzcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZwogICAgICAgICBzZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5n
ZShmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgTm9kZSogdGFyZ2V0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KTsKKyAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgIC8vIERpc3BhdGNoIGFuIGFwcHJvcHJpYXRl
IGNvbXBvc2l0aW9uIGV2ZW50IHRvIHRoZSBmb2N1c2VkIG5vZGUuCisgICAgICAgIC8vIFdlIGNo
ZWNrIHRoZSBjb21wb3NpdGlvbiBzdGF0dXMgYW5kIGNob29zZSBhbiBhcHByb3ByaWF0ZSBjb21w
b3NpdGlvbiBldmVudCBzaW5jZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIGlzIHVzZWQgZm9y
IHRocmVlIHB1cnBvc2VzOgorICAgICAgICAvLyAxLiBTdGFydGluZyBhIG5ldyBjb21wb3NpdGlv
bi4KKyAgICAgICAgLy8gICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGNvbXBvc2l0aW9u
IG5vZGUgYW5kIHN0YXJ0cyBhIGNvbXBvc2l0aW9uIHdoZW4gdGhlcmUgaXMgbm90IGFuCisgICAg
ICAgIC8vICAgIGNvbXBvc2l0aW9uIG5vZGUsIGkuZS4gbV9jb21wb3NpdGlvbk5vZGUgPT0gMC4K
KyAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3NpdGlv
bnN0YXJ0IGV2ZW50LgorICAgICAgICAvLyAyLiBVcGRhdGluZyB0aGUgZXhpc3RpbmcgY29tcG9z
aXRpb24gbm9kZS4KKyAgICAgICAgLy8gICAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjb21w
b3NpdGlvbiBub2RlIHdoZW4gdGhlcmUgaXMgYSBjb21wb2l0aW9uIG5vZGUgYW5kIHRoZSBnaXZl
biB0ZXh0CisgICAgICAgIC8vICAgIGlzIG5vdCBlbXB0eSwgaS5lLiBtX2NvbXBvc2l0aW9uTm9k
ZSAhPSAwICYmICF0ZXh0LmlzRW1wdHkoKS4KKyAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCB3
ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3N0aW9udXBkYXRlIGV2ZW50LgorICAgICAgICAvLyAzLiBD
YW5jZWxpbmcgdGhlIG9uZ29pbmcgY29tcG9zaXRpb24uCisgICAgICAgIC8vICAgIFRoaXMgZnVu
Y3Rpb24gZGVsZXRlcyB0aGUgY29tcG9zaXRpb24gbmRvZSB3aGVuIHRoZXJlIGlzIGEgY29tcG9z
aXRpb24gbm9kZSBidXQgdGhlIGdpdmVuIHRleHQKKyAgICAgICAgLy8gICAgaXMgZW1wdHksIGku
ZS4gbV9jb21wb3NpdGlvbk5vZGUgIT0gMCAmJiB0ZXN0LmlzRW1wdHkoKS4KKyAgICAgICAgLy8g
ICAgSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3NpdGlvbmVuZCBldmVudC4K
KyAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50OworICAgICAgICBpZiAoIW1f
Y29tcG9zaXRpb25Ob2RlKQorICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uc3RhcnRFdmVudCwgbV9mcmFtZS0+ZG9tV2lu
ZG93KCksIHRleHQpOworICAgICAgICBlbHNlIGlmICghdGV4dC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9z
aXRpb251cGRhdGVFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQpOwor
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KGV2ZW50LCBlYyk7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBJZiB0ZXh0IGlzIGVtcHR5
LCB0aGVuIGRlbGV0ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0IGlzIG5vbi1l
bXB0eSwgSW5zZXJ0VGV4dENvbW1hbmQ6OmlucHV0CiAgICAgLy8gd2lsbCBkZWxldGUgdGhlIG9s
ZCBjb21wb3NpdGlvbiB3aXRoIGFuIG9wdGltaXplZCByZXBsYWNlIG9wZXJhdGlvbi4KICAgICBp
ZiAodGV4dC5pc0VtcHR5KCkpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDYzOCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTExLTA4
ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBjb21wb3NpdGlvbiBldmVu
dHMgaW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMy4KKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBh
IG5ldyBJREwgd2hpY2ggZGVmaW5lcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzLCBhZGRzIGEgY2xh
c3Mgd2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyB0aGUgY29tcG9zaXRpb24gZXZlbnRzLCBhbmQg
c2VuZHMgdGhlIGNvbXBvc2l0aW9uIGV2ZW50cyBhY2NvcmRpbmcgdG8KKyAgICAgICAgdGhlIHNw
ZWNpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNjMxMAorCisgICAgICAgICogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50
cy0wMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pbWUtY29t
cG9zaXRpb24tZXZlbnRzLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
U2tpcHBlZDogU2tpcCB0aGlzIHRlc3QgYmVjYXVzZSBUZXh0SW5wdXRDb250cm9sbGVyIGlzIG5v
dCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOiBkaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogZGl0dG8uCisKIDIwMDktMTEtMDggIEpvaG5u
eSBEaW5nICA8am9obm55ZGluZy53ZWJraXRAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1j
b21wb3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24t
ZXZlbnRzLTAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1Ro
aXMgdGVzdHMgdGhhdCBjYWxsaW5nIGlucHV0LW1ldGhvZCBmdW5jdGlvbnMgc2VuZHMgQ29tcG9z
aXRpb24gRXZlbnRzIGFuZCBUZXh0IEV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgor
CisKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb25zdGFydCAtICIxIgorU1VDQ0VTUzogSU5Q
VVQgLSBjb21wb3NpdGlvbnVwZGF0ZSAtICIyIgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlv
bnVwZGF0ZSAtICIzIgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbmVuZCAtICI0IgorU1VD
Q0VTUzogSU5QVVQgLSB0ZXh0SW5wdXQgLSAiNCIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRp
b25zdGFydCAtICI1IgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbnVwZGF0ZSAtICI2Igor
U1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbnVwZGF0ZSAtICI3IgorU1VDQ0VTUzogSU5QVVQg
LSBjb21wb3NpdGlvbmVuZCAtICIiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUt
Y29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPjwv
dGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBjYWxsaW5nIGlucHV0
LW1ldGhvZCBmdW5jdGlvbnMgc2VuZHMgQ29tcG9zaXRpb24gRXZlbnRzIGFuZCBUZXh0IEV2ZW50
cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLjwvcD4KKzxpbnB1dCBpZD0idGVzdCIgdHlwZT0i
dGV4dCIvPgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyhzdHIpIHsKKyAgIHZh
ciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICBsaS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOwor
fQorCitmdW5jdGlvbiBsb2dFdmVudChlKSB7CisgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0Owor
ICAgIHZhciB0eXBlID0gZS50eXBlOworICAgIGlmIChlLnR5cGUgPT0gJ2NvbXBvc2l0aW9uc3Rh
cnQnIHx8IGUudHlwZSA9PSAnY29tcG9zaXRpb251cGRhdGUnIHx8IGUudHlwZSA9PSAnY29tcG9z
aXRpb25lbmQnIHx8IGUudHlwZSA9PSAndGV4dElucHV0JykKKyAgICAgICAgbG9nKCdTVUNDRVNT
OiAnICsgdGFyZ2V0LnRhZ05hbWUgKyAnIC0gJyArIGUudHlwZSArICcgLSAiJyArIGUuZGF0YSAr
ICciJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ0ZBSUxFRDogJyArIHRhcmdldC50YWdOYW1l
ICsgJyAtICcgKyBlLnR5cGUgKyAnIC0gIicgKyBlLmRhdGEgKyAnIicpOworfQorCit2YXIgdGVz
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Cit0ZXN0LmZvY3VzKCk7CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSA8aW5w
dXQ+IG5vZGUuCisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0Iiwg
bG9nRXZlbnQsIGZhbHNlKTsKKyAgICB0ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9u
dXBkYXRlIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICB0ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImNv
bXBvc2l0aW9uZW5kIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICB0ZXN0LmFkZEV2ZW50TGlzdGVu
ZXIoInRleHRJbnB1dCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisKKyAgICAvLyBDYXNlIDE6IENvbXBv
c2UgYSB0ZXh0IGFuZCBjb21taXQgaXQuCisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJr
ZWRUZXh0KCcxJywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0
KCcyJywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCczJywg
MCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCc0Jyk7CisKKyAgICAv
LyBDYXNlIDI6IENvbXBvc2UgYSB0ZXh0IGJ1dCBjYW5jZWwgaXQuCisgICAgdGV4dElucHV0Q29u
dHJvbGxlci5zZXRNYXJrZWRUZXh0KCc1JywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxl
ci5zZXRNYXJrZWRUZXh0KCc2JywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRN
YXJrZWRUZXh0KCc3JywgMCwgMSk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRU
ZXh0KCcnLCAwLCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDUwNjMwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU1NjgsNiArNTU2OCw3IEBAIGZh
c3QvbG9hZGVyL29wYXF1ZS1iYXNlLXVybC5odG1sIAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5n
dGgtaW1lLWNvbXBsZXRlZC5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJl
ZWRpdC5odG1sCiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5o
dG1sCitmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCiAKICMgTm8g
VXNlciBTY3JpcHRzCiB1c2Vyc2NyaXB0cwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShy
ZXZpc2lvbiA1MDYzMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTEyOCw2ICsxMjgsNyBAQCBpbnNwZWN0b3IvdW5jYXVnaHQtZG9tOC1leGNl
cHRpb24uaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAog
ZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCiBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCitmYXN0L2V2ZW50cy9pbWUt
Y29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCiAKICMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJv
bGxlci5vdmVycmlkZVByZWZlcmVuY2UoKQogZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUt
b24tYmFjay1jYWNoZWQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlz
aW9uIDUwNjMwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTYzMSw2ICs2MzEsNyBAQCBodHRwL3Rlc3RzL2xvYWRpbmcvcHJlbG9hZC1pbWct
dGVzdC5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtY29tcGxldGVkLmh0bWwK
IGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKIGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL3RoYWktY3Vyc29yLXBvc2l0aW9uLmh0bWwKK2Zhc3QvZXZlbnRzL2ltZS1j
b21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKIAogIyBGYWlsaW5nIG1lZGlhIHRlc3RzIG9uIHdp
bmRvd3MgPGh0dHA6Ly93ZWJraXQub3JnL2IvMjkwNDc+CiBtZWRpYS9hdWRpby1kZWxldGUtd2hp
bGUtc3RlcC1idXR0b24tY2xpY2tlZC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>42744</attachid>
            <date>2009-11-09 02:50:48 -0800</date>
            <delta_ts>2009-11-09 02:53:33 -0800</delta_ts>
            <desc>A proposed patch (only for Mac)</desc>
            <filename>issue26310-patch6.txt</filename>
            <type>text/plain</type>
            <size>28256</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDYzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMTEtMDggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNvbXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21w
b3NpdGlvbiBldmVudHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRo
ZSBjb21wb3NpdGlvbiBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFj
Y29yZGluZyB0bworICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzEwCisKKyAgICAgICAgVGVzdDogZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZTogQWRkZWQgQ29tcG9zaXRpb25FdmVudCBzbyB3ZSBjYW4gY29tcGls
ZSBpdHMgSURMLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgQ29tcG9zaXRpb25FdmVudC57Y3BwLGgsaWRsfSBhbmQgSlNDb21wb3NpdGlvbkV2ZW50
LntjcHAsaH0uCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKTogQ2FsbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSB0byBjcmVhdGUg
dGhlIENvbXBvc2l0aW9uRXZlbnQgd3JhcHBlci4KKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25F
dmVudC5jcHA6IEltcGxlbWVudHMgdGhlIENvbXBvc2l0aW9uRXZlbnQgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmlzQ29tcG9zaXRpb25FdmVudCk6CisgICAg
ICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuaDogRGVjbGFyZXMgdGhlIENvbXBvc2l0aW9uRXZl
bnQgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6ZGF0YSk6CisgICAgICAgICogZG9t
L0NvbXBvc2l0aW9uRXZlbnQuaWRsOiBBZGRlZCB0aGUgSURMIG9mIERPTSBDb21wb3NpdGlvbkV2
ZW50LgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6
aXNDb21wb3NpdGlvbkV2ZW50KTogQWRkZWQgYSBtZXRob2QgdG8gaWRlbnRpZnkgYW4gZXZlbnQg
aXMgYSBET00gQ29tcG9zaXRpb25FdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgY29tcG9zaXRpb257c3RhcnQsdXBkYXRlLGVuZH0g
dG8gZXZlbnROYW1lcy4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OmNvbmZpcm1Db21wb3NpdGlvbik6IFNlbmRzIGEgQ29tcG9zaXRpb25F
bmQgZXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKTogU2Vu
ZHMgYSBDb21wb3NpdGlvbntTdGFydCxVcGRhdGUsRW5kfSBldmVudC4KKwogMjAwOS0xMS0wOCAg
RHJldyBXaWxzb24gIDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNTA2MzAp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYg
Kzk2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgQ2xpZW50UmVjdExpc3QgXAogICAgIENsaXBi
b2FyZCBcCiAgICAgQ29tbWVudCBcCisgICAgQ29tcG9zaXRpb25FdmVudCBcCiAgICAgQ29uc29s
ZSBcCiAgICAgQ29vcmRpbmF0ZXMgXAogICAgIENvdW50ZXIgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUwNjMwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEy
MTUsNiArMTIxNSwxMCBAQAogCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFs
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9OwogCQk3Njkz
QkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyog
UGx1Z2luSGFsdGVyLmggKi87IH07CiAJCTc2OTNCQUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OUFDOTIx
ODEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QUM5MjE2MTA5OTQ1QzgwMDIxMjY2
RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OworCQk3OUFDOTIxOTEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3Np
dGlvbkV2ZW50LmggKi87IH07CisJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3Np
dGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsg
fTsKKwkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkz
OUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMUU4OEY1MTAxQ0Mz
ODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFFODhGMzEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJy
YXkuY3BwICovOyB9OwogCQk3QTFFODhGNjEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEY0
MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJ
bnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwICovOyB9OwpAQCAtNjUxNSw2ICs2NTE5LDExIEBACiAJCTc2OTNCQUNGMTA2QzJEQ0EwMDdC
MDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGx1Z2luSGFsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5
M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzY5M0JBRDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXJDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZFIC8qIEpT
Q29tcG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwOyBwYXRoID0gLi4vV2ViS2l0QnVpbGQvUmVsZWFzZS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tcG9zaXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJNzlBQzkyMTcxMDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9z
aXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0NvbXBvc2l0
aW9uRXZlbnQuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL1JlbGVhc2UvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0NvbXBvc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQk3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
cG9zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUYyRjVBMDEw
OTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ29tcG9zaXRpb25FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBMUU4OEY0MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVj
dG9yRE9NQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzODUs
NiArMTMzOTQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5NDYzNDUxMDdBOTM0QjAwODU3
MTkzIC8qIEpTQmVmb3JlTG9hZEV2ZW50LmNwcCAqLywKIAkJCQlCQzk0NjM0NzEwN0E5MzY2MDA4
NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCAqLywKKwkJCQk3OUFDOTIxNjEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLywKKwkJCQk3OUFDOTIxNzEwOTk0NUM4
MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8sCiAJCQkJMkVDRjdBREExMDE2MkIz
ODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi8sCiAJCQkJMkVDRjdBREIxMDE2MkIzODAw
NDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovLAogCQkJCTE0RTgzNzgzMDlGODVEMUMwMEI4NUFF
NCAvKiBKU0V2ZW50LmNwcCAqLywKQEAgLTE1NDgyLDYgKzE1NDkzLDkgQEAKIAkJCQk2NTUwQjY5
NzA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5jcHAgKi8sCiAJCQkJNjU1MEI2OTgwOTlERjAy
NzAwOTBENzgxIC8qIENvbW1lbnQuaCAqLywKIAkJCQk4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEg
LyogQ29tbWVudC5pZGwgKi8sCisJCQkJNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuY3BwICovLAorCQkJCTc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21w
b3NpdGlvbkV2ZW50LmggKi8sCisJCQkJNzlGMkY1QTAxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuaWRsICovLAogCQkJCUE4MTg3MjE0MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250
YWluZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFp
bmVyTm9kZS5oICovLAogCQkJCUE4QzRBN0Y4MDlENTYzMjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBAIC0xNTgyOSw2ICsxNTg0Myw3IEBACiAJCQkJ
NjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAvKiBDb21wb3NpdGVBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENv
bXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Qzk3QUYzMDhFQTkwODgwMEFD
RDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMEIzNkE1MENEM0M2N0MwMEFD
N0VCNSAvKiBDb25zb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBB
MDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTY5OTYsNiArMTcw
MTEsNyBAQAogCQkJCTUxRUM5MjZBMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNDE3QzkwQ0VDRkYy
NTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTc5QUM5MjE5MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTgyRjkwMENBQUZBOUQwMDIyMzdBRSAvKiBK
U0RhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3RDE2QTBGRjE5RjU2MDA3MDg4N0Ig
LyogSlNEYXRhR3JpZENvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3N0QxNkMwRkYxOUY1
NjAwNzA4ODdCIC8qIEpTRGF0YUdyaWRDb2x1bW5MaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE4
NDU4LDYgKzE4NDc0LDcgQEAKIAkJCQkzN0MyMzgyMjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTUw
RTZFMURBNzAwQkY2MDg4IC8qIENvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzMwOUREQzA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0
aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwQjM2QTQwQ0QzQzY3QzAwQUM3RUI1
IC8qIENvbnNvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMDYxOEYwRjVGMDY5ODAwQTA3
RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg3MjFGMDk3
N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTkx
MjYsNiArMTkxNDMsNyBAQAogCQkJCUJDQTgzRTRGMEQ3Q0UxRTkwMDM0MjFBOCAvKiBKU0NsaXBi
b2FyZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4M0U1MjBEN0NFMjA1MDAzNDIxQTggLyog
SlNDbGlwYm9hcmRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGOUI2RTAwQkEwRkI3
MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OUFDOTIxODEw
OTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDOTg1NDNEMENEM0Q5OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzBERkM4NzAwREI2ODQxQTAwM0VBRTdDIC8qIEpTQ29uc29sZUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGlu
YXRlcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTA2MzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMSBAQAogI2luY2x1ZGUgIlNW
R1pvb21FdmVudC5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiSlND
b21wb3NpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNyw2
ICsxMTIsMTAgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAg
ICAgICBlbHNlIGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKICAgICAgICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU1ZHWm9v
bUV2ZW50LCBldmVudCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGVsc2Ug
aWYgKGV2ZW50LT5pc0NvbXBvc2l0aW9uRXZlbnQoKSkKKyAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ29tcG9zaXRpb25F
dmVudCwgZXZlbnQpOworI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgVUlFdmVudCwg
ZXZlbnQpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQpJbmRleDog
V2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Db21w
b3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21w
b3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkKK3sKK30KKworQ29tcG9zaXRpb25FdmVu
dDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCisgICAgOiBVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCisgICAgLCBtX2RhdGEoZGF0YSkKK3sKK30KKworQ29t
cG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKQoreworfQorCit2b2lkIENvbXBvc2l0
aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHZpZXcsIDApOworCisgICAgbV9kYXRhID0gZGF0YTsKK30KKworYm9vbCBDb21wb3NpdGlv
bkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIENvbXBvc2l0
aW9uRXZlbnRfaAorI2RlZmluZSBDb21wb3NpdGlvbkV2ZW50X2gKKworI2luY2x1ZGUgIlVJRXZl
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQ29tcG9zaXRpb25FdmVu
dCA6IHB1YmxpYyBVSUV2ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRpb25FdmVudCk7CisgICAgICAgIH0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRp
b25FdmVudCh0eXBlLCB2aWV3LCBkYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB+
Q29tcG9zaXRpb25FdmVudCgpOworICAgIAorICAgICAgICB2b2lkIGluaXRDb21wb3NpdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAg
IAorICAgICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdDsKKworICAgIHByaXZh
dGU6CisgICAgICAgIENvbXBvc2l0aW9uRXZlbnQoKTsKKyAgICAgICAgQ29tcG9zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworCisgICAgICAgIFN0cmluZyBtX2RhdGE7CisgICAgfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29tcG9zaXRpb25FdmVudF9o
CkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKK21vZHVsZSBldmVudHMgeworCisgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2
ZWwgMzoKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAg
XSBDb21wb3NpdGlvbkV2ZW50IDogVUlFdmVudCB7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBkYXRhOworCisgICAgICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQo
aW4gRE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVdpbmRvdyB2aWV3QXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBET01TdHJpbmcgZGF0YUFyZyk7CisKKyAgICB9OworCit9CkluZGV4OiBX
ZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3Bw
CShyZXZpc2lvbiA1MDYzMCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNiArOTYsMTEgQEAgYm9vbCBFdmVudDo6aXNUZXh0RXZlbnQoKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFdmVudDo6aXNDb21wb3NpdGlvbkV2ZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzRHJhZ0V2ZW50KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDUwNjMwKQorKysgV2Vi
Q29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzTXV0YXRpb25FdmVudCgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Ry
YWdFdmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMKICAgICAgICAgdmly
dHVhbCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29s
IGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA1MDYzMCkK
KysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY2hlY2tpbmcpIFwKICAgICBtYWNy
byhjbGljaykgXAogICAgIG1hY3JvKGNsb3NlKSBcCisgICAgbWFjcm8oY29tcG9zaXRpb25lbmQp
IFwKKyAgICBtYWNybyhjb21wb3NpdGlvbnN0YXJ0KSBcCisgICAgbWFjcm8oY29tcG9zaXRpb251
cGRhdGUpIFwKICAgICBtYWNybyhjb25uZWN0KSBcCiAgICAgbWFjcm8oY29udGV4dG1lbnUpIFwK
ICAgICBtYWNybyhjb3B5KSBcCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNTA2MzApCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
OSBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBcHBseVN0eWxlQ29t
bWFuZC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCisjaWYgUExBVEZPUk0oTUFDKQor
I2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkNyZWF0ZUxp
bmtDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKQEAgLTEzNzAsNiArMTM3Mywx
OCBAQCB2b2lkIEVkaXRvcjo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIERpc3BhdGNoIGEg
Y29tcG9zaXRpb25lbmQgZXZlbnQgdG8gdGhlIGZvY3VzZWQgbm9kZS4KKyAgICAvLyBXZSBzaG91
bGQgc2VuZCB0aGlzIGV2ZW50IGJlZm9yZSBzZW5kaW5nIGEgVGV4dEV2ZW50IGFzIHdyaXR0ZW4g
aW4gU2VjdGlvbiA2LjIuMiBhbmQgNi4yLjMgb2YKKyAgICAvLyB0aGUgRE9NIEV2ZW50IHNwZWNp
ZmljYXRpb24uCisgICAgTm9kZSogdGFyZ2V0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNl
ZE5vZGUoKTsKKyAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgIFJlZlB0cjxDb21wb3NpdGlvbkV2
ZW50PiBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9z
aXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBl
Yyk7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBJZiB0ZXh0IGlzIGVtcHR5LCB0aGVuIGRlbGV0
ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0IGlzIG5vbi1lbXB0eSwgSW5zZXJ0
VGV4dENvbW1hbmQ6OmlucHV0CiAgICAgLy8gd2lsbCBkZWxldGUgdGhlIG9sZCBjb21wb3NpdGlv
biB3aXRoIGFuIG9wdGltaXplZCByZXBsYWNlIG9wZXJhdGlvbi4KICAgICBpZiAodGV4dC5pc0Vt
cHR5KCkpCkBAIC0xMzk2LDcgKzE0MTEsNDMgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZwogICAgICAgICBzZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5n
ZShmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgTm9kZSogdGFyZ2V0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KTsKKyAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgIC8vIERpc3BhdGNoIGFuIGFwcHJvcHJpYXRl
IGNvbXBvc2l0aW9uIGV2ZW50IHRvIHRoZSBmb2N1c2VkIG5vZGUuCisgICAgICAgIC8vIFdlIGNo
ZWNrIHRoZSBjb21wb3NpdGlvbiBzdGF0dXMgYW5kIGNob29zZSBhbiBhcHByb3ByaWF0ZSBjb21w
b3NpdGlvbiBldmVudCBzaW5jZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIGlzIHVzZWQgZm9y
IHRocmVlIHB1cnBvc2VzOgorICAgICAgICAvLyAxLiBTdGFydGluZyBhIG5ldyBjb21wb3NpdGlv
bi4KKyAgICAgICAgLy8gICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGNvbXBvc2l0aW9u
IG5vZGUgYW5kIHN0YXJ0cyBhIGNvbXBvc2l0aW9uIHdoZW4gdGhlcmUgaXMgbm90IGFuCisgICAg
ICAgIC8vICAgIGNvbXBvc2l0aW9uIG5vZGUsIGkuZS4gbV9jb21wb3NpdGlvbk5vZGUgPT0gMC4K
KyAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3NpdGlv
bnN0YXJ0IGV2ZW50LgorICAgICAgICAvLyAyLiBVcGRhdGluZyB0aGUgZXhpc3RpbmcgY29tcG9z
aXRpb24gbm9kZS4KKyAgICAgICAgLy8gICAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjb21w
b3NpdGlvbiBub2RlIHdoZW4gdGhlcmUgaXMgYSBjb21wb2l0aW9uIG5vZGUgYW5kIHRoZSBnaXZl
biB0ZXh0CisgICAgICAgIC8vICAgIGlzIG5vdCBlbXB0eSwgaS5lLiBtX2NvbXBvc2l0aW9uTm9k
ZSAhPSAwICYmICF0ZXh0LmlzRW1wdHkoKS4KKyAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCB3
ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3N0aW9udXBkYXRlIGV2ZW50LgorICAgICAgICAvLyAzLiBD
YW5jZWxpbmcgdGhlIG9uZ29pbmcgY29tcG9zaXRpb24uCisgICAgICAgIC8vICAgIFRoaXMgZnVu
Y3Rpb24gZGVsZXRlcyB0aGUgY29tcG9zaXRpb24gbmRvZSB3aGVuIHRoZXJlIGlzIGEgY29tcG9z
aXRpb24gbm9kZSBidXQgdGhlIGdpdmVuIHRleHQKKyAgICAgICAgLy8gICAgaXMgZW1wdHksIGku
ZS4gbV9jb21wb3NpdGlvbk5vZGUgIT0gMCAmJiB0ZXN0LmlzRW1wdHkoKS4KKyAgICAgICAgLy8g
ICAgSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3NpdGlvbmVuZCBldmVudC4K
KyAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50OworICAgICAgICBpZiAoIW1f
Y29tcG9zaXRpb25Ob2RlKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgc2VuZCBhIGNvbXBv
c2l0aW9uc3RhcnQgZXZlbnQgb25seSB3aGVuIHRoZSBnaXZlbiB0ZXh0IGlzIG5vdCBlbXB0eSBi
ZWNhdXNlIHRoaXMKKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRvZXNuJ3QgY3JlYXRlIGEgY29t
cG9zaXRpb24gbm9kZSB3aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LgorICAgICAgICAgICAgaWYgKCF0
ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25zdGFydEV2ZW50LCBtX2ZyYW1lLT5kb21X
aW5kb3coKSwgdGV4dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIXRleHQu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBtX2ZyYW1lLT5kb21XaW5k
b3coKSwgdGV4dCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGV2ZW50ID0gQ29t
cG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBt
X2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgIGlmIChldmVudC5nZXQoKSkKKyAgICAgICAgICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gSWYg
dGV4dCBpcyBlbXB0eSwgdGhlbiBkZWxldGUgdGhlIG9sZCBjb21wb3NpdGlvbiBoZXJlLiAgSWYg
dGV4dCBpcyBub24tZW1wdHksIEluc2VydFRleHRDb21tYW5kOjppbnB1dAogICAgIC8vIHdpbGwg
ZGVsZXRlIHRoZSBvbGQgY29tcG9zaXRpb24gd2l0aCBhbiBvcHRpbWl6ZWQgcmVwbGFjZSBvcGVy
YXRpb24uCiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2Mzgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAwOS0xMS0wOCAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgY29t
cG9zaXRpb24gZXZlbnRzIGludHJvZHVjZWQgaW4gRE9NIExldmVsIDMuCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFkZHMgYSBuZXcgSURMIHdoaWNoIGRlZmluZXMgdGhlIGNvbXBvc2l0aW9uIGV2ZW50
cywgYWRkcyBhIGNsYXNzIHdoaWNoCisgICAgICAgIGltcGxlbWVudHMgdGhlIGNvbXBvc2l0aW9u
IGV2ZW50cywgYW5kIHNlbmRzIHRoZSBjb21wb3NpdGlvbiBldmVudHMgYWNjb3JkaW5nIHRvCisg
ICAgICAgIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYzMTAKKworICAgICAgICAqIGZhc3QvZXZlbnRzL2ltZS1jb21w
b3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
dmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1NraXBwZWQ6IFNraXAgdGhpcyB0ZXN0IGJlY2F1c2UgVGV4dElucHV0Q29u
dHJvbGxlciBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDA5
LTExLTA4ICBKb2hubnkgRGluZyAgPGpvaG5ueWRpbmcud2Via2l0QGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1l
LWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBpbnB1dC1tZXRob2QgZnVuY3Rpb25z
IHNlbmRzIENvbXBvc2l0aW9uIEV2ZW50cyBhbmQgVGV4dCBFdmVudHMgaW50cm9kdWNlZCBpbiBE
T00gTGV2ZWwgMy4KKworCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9uc3RhcnQgLSAiMSIK
K1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb251cGRhdGUgLSAiMiIKK1NVQ0NFU1M6IElOUFVU
IC0gY29tcG9zaXRpb251cGRhdGUgLSAiMyIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb25l
bmQgLSAiNCIKK1NVQ0NFU1M6IElOUFVUIC0gdGV4dElucHV0IC0gIjQiCitTVUNDRVNTOiBJTlBV
VCAtIGNvbXBvc2l0aW9uc3RhcnQgLSAiNSIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb251
cGRhdGUgLSAiNiIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb251cGRhdGUgLSAiNyIKK1NV
Q0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb25lbmQgLSAiIgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2
ZW50cy0wMDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQg
Y2FsbGluZyBpbnB1dC1tZXRob2QgZnVuY3Rpb25zIHNlbmRzIENvbXBvc2l0aW9uIEV2ZW50cyBh
bmQgVGV4dCBFdmVudHMgaW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMy48L3A+Cis8aW5wdXQgaWQ9
InRlc3QiIHR5cGU9InRleHQiLz4KKzx1bCBpZD0iY29uc29sZSI+PC91bD4KKzxzY3JpcHQgbGFu
Z3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2co
c3RyKSB7CisgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOworICAgbGku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICB2YXIgY29uc29s
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICBjb25zb2xlLmFwcGVu
ZENoaWxkKGxpKTsKK30KKworZnVuY3Rpb24gbG9nRXZlbnQoZSkgeworICAgIHZhciB0YXJnZXQg
PSBlLnRhcmdldDsKKyAgICB2YXIgdHlwZSA9IGUudHlwZTsKKyAgICBpZiAoZS50eXBlID09ICdj
b21wb3NpdGlvbnN0YXJ0JyB8fCBlLnR5cGUgPT0gJ2NvbXBvc2l0aW9udXBkYXRlJyB8fCBlLnR5
cGUgPT0gJ2NvbXBvc2l0aW9uZW5kJyB8fCBlLnR5cGUgPT0gJ3RleHRJbnB1dCcpCisgICAgICAg
IGxvZygnU1VDQ0VTUzogJyArIHRhcmdldC50YWdOYW1lICsgJyAtICcgKyBlLnR5cGUgKyAnIC0g
IicgKyBlLmRhdGEgKyAnIicpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdGQUlMRUQ6ICcgKyB0
YXJnZXQudGFnTmFtZSArICcgLSAnICsgZS50eXBlICsgJyAtICInICsgZS5kYXRhICsgJyInKTsK
K30KKwordmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwordGVzdC5m
b2N1cygpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVy
cyB0byB0aGUgPGlucHV0PiBub2RlLgorICAgIHRlc3QuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9z
aXRpb25zdGFydCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVy
KCJjb21wb3NpdGlvbnVwZGF0ZSIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVu
dExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5h
ZGRFdmVudExpc3RlbmVyKCJ0ZXh0SW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworCisgICAgLy8g
Q2FzZSAxOiBDb21wb3NlIGEgdGV4dCBhbmQgY29tbWl0IGl0LgorICAgIHRleHRJbnB1dENvbnRy
b2xsZXIuc2V0TWFya2VkVGV4dCgnMScsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIu
c2V0TWFya2VkVGV4dCgnMicsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFy
a2VkVGV4dCgnMycsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgn
NCcpOworCisgICAgLy8gQ2FzZSAyOiBDb21wb3NlIGEgdGV4dCBidXQgY2FuY2VsIGl0LgorICAg
IHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnNScsIDAsIDEpOworICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnNicsIDAsIDEpOworICAgIHRleHRJbnB1dENv
bnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnNycsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2V0TWFya2VkVGV4dCgnJywgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA1MDYzMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NTY4LDYg
KzU1NjgsNyBAQCBmYXN0L2xvYWRlci9vcGFxdWUtYmFzZS11cmwuaHRtbCAKIGZhc3QvZm9ybXMv
aW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhs
ZW5ndGgtaW1lLXByZWVkaXQuaHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJz
b3ItcG9zaXRpb24uaHRtbAorZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEu
aHRtbAogCiAjIE5vIFVzZXIgU2NyaXB0cwogdXNlcnNjcmlwdHMKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZAkocmV2aXNpb24gNTA2MzApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAgaW5zcGVjdG9yL3VuY2F1
Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1w
cmVlZGl0Lmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRt
bAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogCiAjIE1pc3NpbmcgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCkKIGZhc3QvZXZlbnRzL3BhZ2Vz
aG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCShyZXZpc2lvbiA1MDYzMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lw
cGVkCSh3b3JraW5nIGNvcHkpCkBAIC02MzEsNiArNjMxLDcgQEAgaHR0cC90ZXN0cy9sb2FkaW5n
L3ByZWxvYWQtaW1nLXRlc3QuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNv
bXBsZXRlZC5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1s
CiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCitmYXN0
L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCiAKICMgRmFpbGluZyBtZWRp
YSB0ZXN0cyBvbiB3aW5kb3dzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzI5MDQ3PgogbWVkaWEvYXVk
aW8tZGVsZXRlLXdoaWxlLXN0ZXAtYnV0dG9uLWNsaWNrZWQuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42745</attachid>
            <date>2009-11-09 02:53:33 -0800</date>
            <delta_ts>2009-11-10 02:11:41 -0800</delta_ts>
            <desc>A proposed patch 2 (only for Mac)</desc>
            <filename>issue26310-patch6.txt</filename>
            <type>text/plain</type>
            <size>28256</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDYzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMTEtMDggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNvbXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21w
b3NpdGlvbiBldmVudHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRo
ZSBjb21wb3NpdGlvbiBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFj
Y29yZGluZyB0bworICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzEwCisKKyAgICAgICAgVGVzdDogZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZTogQWRkZWQgQ29tcG9zaXRpb25FdmVudCBzbyB3ZSBjYW4gY29tcGls
ZSBpdHMgSURMLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgQ29tcG9zaXRpb25FdmVudC57Y3BwLGgsaWRsfSBhbmQgSlNDb21wb3NpdGlvbkV2ZW50
LntjcHAsaH0uCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKTogQ2FsbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSB0byBjcmVhdGUg
dGhlIENvbXBvc2l0aW9uRXZlbnQgd3JhcHBlci4KKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25F
dmVudC5jcHA6IEltcGxlbWVudHMgdGhlIENvbXBvc2l0aW9uRXZlbnQgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmlzQ29tcG9zaXRpb25FdmVudCk6CisgICAg
ICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuaDogRGVjbGFyZXMgdGhlIENvbXBvc2l0aW9uRXZl
bnQgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6ZGF0YSk6CisgICAgICAgICogZG9t
L0NvbXBvc2l0aW9uRXZlbnQuaWRsOiBBZGRlZCB0aGUgSURMIG9mIERPTSBDb21wb3NpdGlvbkV2
ZW50LgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6
aXNDb21wb3NpdGlvbkV2ZW50KTogQWRkZWQgYSBtZXRob2QgdG8gaWRlbnRpZnkgYW4gZXZlbnQg
aXMgYSBET00gQ29tcG9zaXRpb25FdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgY29tcG9zaXRpb257c3RhcnQsdXBkYXRlLGVuZH0g
dG8gZXZlbnROYW1lcy4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OmNvbmZpcm1Db21wb3NpdGlvbik6IFNlbmRzIGEgQ29tcG9zaXRpb25F
bmQgZXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKTogU2Vu
ZHMgYSBDb21wb3NpdGlvbntTdGFydCxVcGRhdGUsRW5kfSBldmVudC4KKwogMjAwOS0xMS0wOCAg
RHJldyBXaWxzb24gIDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNTA2MzAp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYg
Kzk2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgQ2xpZW50UmVjdExpc3QgXAogICAgIENsaXBi
b2FyZCBcCiAgICAgQ29tbWVudCBcCisgICAgQ29tcG9zaXRpb25FdmVudCBcCiAgICAgQ29uc29s
ZSBcCiAgICAgQ29vcmRpbmF0ZXMgXAogICAgIENvdW50ZXIgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUwNjMwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEy
MTUsNiArMTIxNSwxMCBAQAogCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFs
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9OwogCQk3Njkz
QkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyog
UGx1Z2luSGFsdGVyLmggKi87IH07CiAJCTc2OTNCQUQ1MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OUFDOTIx
ODEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QUM5MjE2MTA5OTQ1QzgwMDIxMjY2
RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OworCQk3OUFDOTIxOTEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3Np
dGlvbkV2ZW50LmggKi87IH07CisJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3Np
dGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsg
fTsKKwkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkz
OUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMUU4OEY1MTAxQ0Mz
ODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFFODhGMzEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJy
YXkuY3BwICovOyB9OwogCQk3QTFFODhGNjEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEY0
MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJ
bnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwICovOyB9OwpAQCAtNjUxNSw2ICs2NTE5LDExIEBACiAJCTc2OTNCQUNGMTA2QzJEQ0EwMDdC
MDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGx1Z2luSGFsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5
M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzY5M0JBRDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXJDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZFIC8qIEpT
Q29tcG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwOyBwYXRoID0gLi4vV2ViS2l0QnVpbGQvUmVsZWFzZS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tcG9zaXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJNzlBQzkyMTcxMDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9z
aXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0NvbXBvc2l0
aW9uRXZlbnQuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL1JlbGVhc2UvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0NvbXBvc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQk3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
cG9zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUYyRjVBMDEw
OTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ29tcG9zaXRpb25FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBMUU4OEY0MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVj
dG9yRE9NQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzODUs
NiArMTMzOTQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5NDYzNDUxMDdBOTM0QjAwODU3
MTkzIC8qIEpTQmVmb3JlTG9hZEV2ZW50LmNwcCAqLywKIAkJCQlCQzk0NjM0NzEwN0E5MzY2MDA4
NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCAqLywKKwkJCQk3OUFDOTIxNjEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLywKKwkJCQk3OUFDOTIxNzEwOTk0NUM4
MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8sCiAJCQkJMkVDRjdBREExMDE2MkIz
ODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi8sCiAJCQkJMkVDRjdBREIxMDE2MkIzODAw
NDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovLAogCQkJCTE0RTgzNzgzMDlGODVEMUMwMEI4NUFF
NCAvKiBKU0V2ZW50LmNwcCAqLywKQEAgLTE1NDgyLDYgKzE1NDkzLDkgQEAKIAkJCQk2NTUwQjY5
NzA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5jcHAgKi8sCiAJCQkJNjU1MEI2OTgwOTlERjAy
NzAwOTBENzgxIC8qIENvbW1lbnQuaCAqLywKIAkJCQk4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEg
LyogQ29tbWVudC5pZGwgKi8sCisJCQkJNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuY3BwICovLAorCQkJCTc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21w
b3NpdGlvbkV2ZW50LmggKi8sCisJCQkJNzlGMkY1QTAxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuaWRsICovLAogCQkJCUE4MTg3MjE0MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250
YWluZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFp
bmVyTm9kZS5oICovLAogCQkJCUE4QzRBN0Y4MDlENTYzMjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBAIC0xNTgyOSw2ICsxNTg0Myw3IEBACiAJCQkJ
NjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAvKiBDb21wb3NpdGVBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENv
bXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Qzk3QUYzMDhFQTkwODgwMEFD
RDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMEIzNkE1MENEM0M2N0MwMEFD
N0VCNSAvKiBDb25zb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBB
MDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTY5OTYsNiArMTcw
MTEsNyBAQAogCQkJCTUxRUM5MjZBMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNDE3QzkwQ0VDRkYy
NTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTc5QUM5MjE5MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTgyRjkwMENBQUZBOUQwMDIyMzdBRSAvKiBK
U0RhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3RDE2QTBGRjE5RjU2MDA3MDg4N0Ig
LyogSlNEYXRhR3JpZENvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3N0QxNkMwRkYxOUY1
NjAwNzA4ODdCIC8qIEpTRGF0YUdyaWRDb2x1bW5MaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE4
NDU4LDYgKzE4NDc0LDcgQEAKIAkJCQkzN0MyMzgyMjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTUw
RTZFMURBNzAwQkY2MDg4IC8qIENvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzMwOUREQzA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0
aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwQjM2QTQwQ0QzQzY3QzAwQUM3RUI1
IC8qIENvbnNvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMDYxOEYwRjVGMDY5ODAwQTA3
RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg3MjFGMDk3
N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTkx
MjYsNiArMTkxNDMsNyBAQAogCQkJCUJDQTgzRTRGMEQ3Q0UxRTkwMDM0MjFBOCAvKiBKU0NsaXBi
b2FyZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4M0U1MjBEN0NFMjA1MDAzNDIxQTggLyog
SlNDbGlwYm9hcmRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGOUI2RTAwQkEwRkI3
MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OUFDOTIxODEw
OTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDOTg1NDNEMENEM0Q5OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzBERkM4NzAwREI2ODQxQTAwM0VBRTdDIC8qIEpTQ29uc29sZUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGlu
YXRlcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTA2MzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMSBAQAogI2luY2x1ZGUgIlNW
R1pvb21FdmVudC5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiSlND
b21wb3NpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNyw2
ICsxMTIsMTAgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAg
ICAgICBlbHNlIGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKICAgICAgICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU1ZHWm9v
bUV2ZW50LCBldmVudCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGVsc2Ug
aWYgKGV2ZW50LT5pc0NvbXBvc2l0aW9uRXZlbnQoKSkKKyAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQ29tcG9zaXRpb25F
dmVudCwgZXZlbnQpOworI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgVUlFdmVudCwg
ZXZlbnQpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQpJbmRleDog
V2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Db21w
b3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21w
b3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkKK3sKK30KKworQ29tcG9zaXRpb25FdmVu
dDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCisgICAgOiBVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCisgICAgLCBtX2RhdGEoZGF0YSkKK3sKK30KKworQ29t
cG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKQoreworfQorCit2b2lkIENvbXBvc2l0
aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHZpZXcsIDApOworCisgICAgbV9kYXRhID0gZGF0YTsKK30KKworYm9vbCBDb21wb3NpdGlv
bkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIENvbXBvc2l0
aW9uRXZlbnRfaAorI2RlZmluZSBDb21wb3NpdGlvbkV2ZW50X2gKKworI2luY2x1ZGUgIlVJRXZl
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQ29tcG9zaXRpb25FdmVu
dCA6IHB1YmxpYyBVSUV2ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRpb25FdmVudCk7CisgICAgICAgIH0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRp
b25FdmVudCh0eXBlLCB2aWV3LCBkYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB+
Q29tcG9zaXRpb25FdmVudCgpOworICAgIAorICAgICAgICB2b2lkIGluaXRDb21wb3NpdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAg
IAorICAgICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdDsKKworICAgIHByaXZh
dGU6CisgICAgICAgIENvbXBvc2l0aW9uRXZlbnQoKTsKKyAgICAgICAgQ29tcG9zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworCisgICAgICAgIFN0cmluZyBtX2RhdGE7CisgICAgfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29tcG9zaXRpb25FdmVudF9o
CkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKK21vZHVsZSBldmVudHMgeworCisgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2
ZWwgMzoKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAg
XSBDb21wb3NpdGlvbkV2ZW50IDogVUlFdmVudCB7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBkYXRhOworCisgICAgICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQo
aW4gRE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVdpbmRvdyB2aWV3QXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBET01TdHJpbmcgZGF0YUFyZyk7CisKKyAgICB9OworCit9CkluZGV4OiBX
ZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3Bw
CShyZXZpc2lvbiA1MDYzMCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNiArOTYsMTEgQEAgYm9vbCBFdmVudDo6aXNUZXh0RXZlbnQoKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFdmVudDo6aXNDb21wb3NpdGlvbkV2ZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzRHJhZ0V2ZW50KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDUwNjMwKQorKysgV2Vi
Q29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzTXV0YXRpb25FdmVudCgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Ry
YWdFdmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMKICAgICAgICAgdmly
dHVhbCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29s
IGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA1MDYzMCkK
KysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY2hlY2tpbmcpIFwKICAgICBtYWNy
byhjbGljaykgXAogICAgIG1hY3JvKGNsb3NlKSBcCisgICAgbWFjcm8oY29tcG9zaXRpb25lbmQp
IFwKKyAgICBtYWNybyhjb21wb3NpdGlvbnN0YXJ0KSBcCisgICAgbWFjcm8oY29tcG9zaXRpb251
cGRhdGUpIFwKICAgICBtYWNybyhjb25uZWN0KSBcCiAgICAgbWFjcm8oY29udGV4dG1lbnUpIFwK
ICAgICBtYWNybyhjb3B5KSBcCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNTA2MzApCisr
KyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
OSBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBcHBseVN0eWxlQ29t
bWFuZC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCisjaWYgUExBVEZPUk0oTUFDKQor
I2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkNyZWF0ZUxp
bmtDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKQEAgLTEzNzAsNiArMTM3Mywx
OCBAQCB2b2lkIEVkaXRvcjo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIERpc3BhdGNoIGEg
Y29tcG9zaXRpb25lbmQgZXZlbnQgdG8gdGhlIGZvY3VzZWQgbm9kZS4KKyAgICAvLyBXZSBzaG91
bGQgc2VuZCB0aGlzIGV2ZW50IGJlZm9yZSBzZW5kaW5nIGEgVGV4dEV2ZW50IGFzIHdyaXR0ZW4g
aW4gU2VjdGlvbiA2LjIuMiBhbmQgNi4yLjMgb2YKKyAgICAvLyB0aGUgRE9NIEV2ZW50IHNwZWNp
ZmljYXRpb24uCisgICAgTm9kZSogdGFyZ2V0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNl
ZE5vZGUoKTsKKyAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgIFJlZlB0cjxDb21wb3NpdGlvbkV2
ZW50PiBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9z
aXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBl
Yyk7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBJZiB0ZXh0IGlzIGVtcHR5LCB0aGVuIGRlbGV0
ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0IGlzIG5vbi1lbXB0eSwgSW5zZXJ0
VGV4dENvbW1hbmQ6OmlucHV0CiAgICAgLy8gd2lsbCBkZWxldGUgdGhlIG9sZCBjb21wb3NpdGlv
biB3aXRoIGFuIG9wdGltaXplZCByZXBsYWNlIG9wZXJhdGlvbi4KICAgICBpZiAodGV4dC5pc0Vt
cHR5KCkpCkBAIC0xMzk2LDcgKzE0MTEsNDMgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZwogICAgICAgICBzZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5n
ZShmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgTm9kZSogdGFyZ2V0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KTsKKyAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgIC8vIERpc3BhdGNoIGFuIGFwcHJvcHJpYXRl
IGNvbXBvc2l0aW9uIGV2ZW50IHRvIHRoZSBmb2N1c2VkIG5vZGUuCisgICAgICAgIC8vIFdlIGNo
ZWNrIHRoZSBjb21wb3NpdGlvbiBzdGF0dXMgYW5kIGNob29zZSBhbiBhcHByb3ByaWF0ZSBjb21w
b3NpdGlvbiBldmVudCBzaW5jZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIGlzIHVzZWQgZm9y
IHRocmVlIHB1cnBvc2VzOgorICAgICAgICAvLyAxLiBTdGFydGluZyBhIG5ldyBjb21wb3NpdGlv
bi4KKyAgICAgICAgLy8gICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGNvbXBvc2l0aW9u
IG5vZGUgYW5kIHN0YXJ0cyBhIGNvbXBvc2l0aW9uIHdoZW4gdGhlcmUgaXMgbm90IGFuCisgICAg
ICAgIC8vICAgIGNvbXBvc2l0aW9uIG5vZGUsIGkuZS4gbV9jb21wb3NpdGlvbk5vZGUgPT0gMC4K
KyAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3NpdGlv
bnN0YXJ0IGV2ZW50LgorICAgICAgICAvLyAyLiBVcGRhdGluZyB0aGUgZXhpc3RpbmcgY29tcG9z
aXRpb24gbm9kZS4KKyAgICAgICAgLy8gICAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjb21w
b3NpdGlvbiBub2RlIHdoZW4gdGhlcmUgaXMgYSBjb21wb2l0aW9uIG5vZGUgYW5kIHRoZSBnaXZl
biB0ZXh0CisgICAgICAgIC8vICAgIGlzIG5vdCBlbXB0eSwgaS5lLiBtX2NvbXBvc2l0aW9uTm9k
ZSAhPSAwICYmICF0ZXh0LmlzRW1wdHkoKS4KKyAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCB3
ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3N0aW9udXBkYXRlIGV2ZW50LgorICAgICAgICAvLyAzLiBD
YW5jZWxpbmcgdGhlIG9uZ29pbmcgY29tcG9zaXRpb24uCisgICAgICAgIC8vICAgIFRoaXMgZnVu
Y3Rpb24gZGVsZXRlcyB0aGUgY29tcG9zaXRpb24gbmRvZSB3aGVuIHRoZXJlIGlzIGEgY29tcG9z
aXRpb24gbm9kZSBidXQgdGhlIGdpdmVuIHRleHQKKyAgICAgICAgLy8gICAgaXMgZW1wdHksIGku
ZS4gbV9jb21wb3NpdGlvbk5vZGUgIT0gMCAmJiB0ZXN0LmlzRW1wdHkoKS4KKyAgICAgICAgLy8g
ICAgSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHNlbmQgYSBjb21wb3NpdGlvbmVuZCBldmVudC4K
KyAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50OworICAgICAgICBpZiAoIW1f
Y29tcG9zaXRpb25Ob2RlKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgc2VuZCBhIGNvbXBv
c2l0aW9uc3RhcnQgZXZlbnQgb25seSB3aGVuIHRoZSBnaXZlbiB0ZXh0IGlzIG5vdCBlbXB0eSBi
ZWNhdXNlIHRoaXMKKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRvZXNuJ3QgY3JlYXRlIGEgY29t
cG9zaXRpb24gbm9kZSB3aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LgorICAgICAgICAgICAgaWYgKCF0
ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25zdGFydEV2ZW50LCBtX2ZyYW1lLT5kb21X
aW5kb3coKSwgdGV4dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIXRleHQu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBtX2ZyYW1lLT5kb21XaW5k
b3coKSwgdGV4dCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGV2ZW50ID0gQ29t
cG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBt
X2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgIGlmIChldmVudC5nZXQoKSkKKyAgICAgICAgICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gSWYg
dGV4dCBpcyBlbXB0eSwgdGhlbiBkZWxldGUgdGhlIG9sZCBjb21wb3NpdGlvbiBoZXJlLiAgSWYg
dGV4dCBpcyBub24tZW1wdHksIEluc2VydFRleHRDb21tYW5kOjppbnB1dAogICAgIC8vIHdpbGwg
ZGVsZXRlIHRoZSBvbGQgY29tcG9zaXRpb24gd2l0aCBhbiBvcHRpbWl6ZWQgcmVwbGFjZSBvcGVy
YXRpb24uCiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2Mzgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAwOS0xMS0wOCAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgY29t
cG9zaXRpb24gZXZlbnRzIGludHJvZHVjZWQgaW4gRE9NIExldmVsIDMuCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFkZHMgYSBuZXcgSURMIHdoaWNoIGRlZmluZXMgdGhlIGNvbXBvc2l0aW9uIGV2ZW50
cywgYWRkcyBhIGNsYXNzIHdoaWNoCisgICAgICAgIGltcGxlbWVudHMgdGhlIGNvbXBvc2l0aW9u
IGV2ZW50cywgYW5kIHNlbmRzIHRoZSBjb21wb3NpdGlvbiBldmVudHMgYWNjb3JkaW5nIHRvCisg
ICAgICAgIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYzMTAKKworICAgICAgICAqIGZhc3QvZXZlbnRzL2ltZS1jb21w
b3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
dmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1NraXBwZWQ6IFNraXAgdGhpcyB0ZXN0IGJlY2F1c2UgVGV4dElucHV0Q29u
dHJvbGxlciBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDA5
LTExLTA4ICBKb2hubnkgRGluZyAgPGpvaG5ueWRpbmcud2Via2l0QGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1l
LWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBpbnB1dC1tZXRob2QgZnVuY3Rpb25z
IHNlbmRzIENvbXBvc2l0aW9uIEV2ZW50cyBhbmQgVGV4dCBFdmVudHMgaW50cm9kdWNlZCBpbiBE
T00gTGV2ZWwgMy4KKworCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9uc3RhcnQgLSAiMSIK
K1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb251cGRhdGUgLSAiMiIKK1NVQ0NFU1M6IElOUFVU
IC0gY29tcG9zaXRpb251cGRhdGUgLSAiMyIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb25l
bmQgLSAiNCIKK1NVQ0NFU1M6IElOUFVUIC0gdGV4dElucHV0IC0gIjQiCitTVUNDRVNTOiBJTlBV
VCAtIGNvbXBvc2l0aW9uc3RhcnQgLSAiNSIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb251
cGRhdGUgLSAiNiIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb251cGRhdGUgLSAiNyIKK1NV
Q0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb25lbmQgLSAiIgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2
ZW50cy0wMDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQg
Y2FsbGluZyBpbnB1dC1tZXRob2QgZnVuY3Rpb25zIHNlbmRzIENvbXBvc2l0aW9uIEV2ZW50cyBh
bmQgVGV4dCBFdmVudHMgaW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMy48L3A+Cis8aW5wdXQgaWQ9
InRlc3QiIHR5cGU9InRleHQiLz4KKzx1bCBpZD0iY29uc29sZSI+PC91bD4KKzxzY3JpcHQgbGFu
Z3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2co
c3RyKSB7CisgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOworICAgbGku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICB2YXIgY29uc29s
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICBjb25zb2xlLmFwcGVu
ZENoaWxkKGxpKTsKK30KKworZnVuY3Rpb24gbG9nRXZlbnQoZSkgeworICAgIHZhciB0YXJnZXQg
PSBlLnRhcmdldDsKKyAgICB2YXIgdHlwZSA9IGUudHlwZTsKKyAgICBpZiAoZS50eXBlID09ICdj
b21wb3NpdGlvbnN0YXJ0JyB8fCBlLnR5cGUgPT0gJ2NvbXBvc2l0aW9udXBkYXRlJyB8fCBlLnR5
cGUgPT0gJ2NvbXBvc2l0aW9uZW5kJyB8fCBlLnR5cGUgPT0gJ3RleHRJbnB1dCcpCisgICAgICAg
IGxvZygnU1VDQ0VTUzogJyArIHRhcmdldC50YWdOYW1lICsgJyAtICcgKyBlLnR5cGUgKyAnIC0g
IicgKyBlLmRhdGEgKyAnIicpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdGQUlMRUQ6ICcgKyB0
YXJnZXQudGFnTmFtZSArICcgLSAnICsgZS50eXBlICsgJyAtICInICsgZS5kYXRhICsgJyInKTsK
K30KKwordmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwordGVzdC5m
b2N1cygpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVy
cyB0byB0aGUgPGlucHV0PiBub2RlLgorICAgIHRlc3QuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9z
aXRpb25zdGFydCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVy
KCJjb21wb3NpdGlvbnVwZGF0ZSIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVu
dExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5h
ZGRFdmVudExpc3RlbmVyKCJ0ZXh0SW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworCisgICAgLy8g
Q2FzZSAxOiBDb21wb3NlIGEgdGV4dCBhbmQgY29tbWl0IGl0LgorICAgIHRleHRJbnB1dENvbnRy
b2xsZXIuc2V0TWFya2VkVGV4dCgnMScsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIu
c2V0TWFya2VkVGV4dCgnMicsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFy
a2VkVGV4dCgnMycsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgn
NCcpOworCisgICAgLy8gQ2FzZSAyOiBDb21wb3NlIGEgdGV4dCBidXQgY2FuY2VsIGl0LgorICAg
IHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnNScsIDAsIDEpOworICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnNicsIDAsIDEpOworICAgIHRleHRJbnB1dENv
bnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnNycsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2V0TWFya2VkVGV4dCgnJywgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA1MDYzMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NTY4LDYg
KzU1NjgsNyBAQCBmYXN0L2xvYWRlci9vcGFxdWUtYmFzZS11cmwuaHRtbCAKIGZhc3QvZm9ybXMv
aW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhs
ZW5ndGgtaW1lLXByZWVkaXQuaHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJz
b3ItcG9zaXRpb24uaHRtbAorZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEu
aHRtbAogCiAjIE5vIFVzZXIgU2NyaXB0cwogdXNlcnNjcmlwdHMKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZAkocmV2aXNpb24gNTA2MzApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAgaW5zcGVjdG9yL3VuY2F1
Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1w
cmVlZGl0Lmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRt
bAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogCiAjIE1pc3NpbmcgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCkKIGZhc3QvZXZlbnRzL3BhZ2Vz
aG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCShyZXZpc2lvbiA1MDYzMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lw
cGVkCSh3b3JraW5nIGNvcHkpCkBAIC02MzEsNiArNjMxLDcgQEAgaHR0cC90ZXN0cy9sb2FkaW5n
L3ByZWxvYWQtaW1nLXRlc3QuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNv
bXBsZXRlZC5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1s
CiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCitmYXN0
L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCiAKICMgRmFpbGluZyBtZWRp
YSB0ZXN0cyBvbiB3aW5kb3dzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzI5MDQ3PgogbWVkaWEvYXVk
aW8tZGVsZXRlLXdoaWxlLXN0ZXAtYnV0dG9uLWNsaWNrZWQuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42854</attachid>
            <date>2009-11-10 02:11:41 -0800</date>
            <delta_ts>2009-11-12 18:22:15 -0800</delta_ts>
            <desc>A proposed patch 3 (for WebKit and Chromium)</desc>
            <filename>issue26310-patch8.txt</filename>
            <type>text/plain</type>
            <size>35933</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDcyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMTEtMTAgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNvbXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21w
b3NpdGlvbiBldmVudHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRo
ZSBjb21wb3NpdGlvbiBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFj
Y29yZGluZyB0bworICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzEwCisKKyAgICAgICAgVGVzdDogZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZTogQWRkZWQgQ29tcG9zaXRpb25FdmVudCBzbyB3ZSBjYW4gY29tcGls
ZSBpdHMgSURMLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBDb21wb3NpdGlvbkV2
ZW50LntjcHAsaCxpZGx9LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogZGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS5wcm86IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZGVkIENvbXBvc2l0aW9uRXZlbnQue2NwcCxoLGlkbH0gYW5kIEpTQ29tcG9zaXRpb25F
dmVudC57Y3BwLGh9LgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDogQWRkZWQgSlNDb21w
b3NpdGlvbkV2ZW50LntjcHAsaH0uCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKTogQ2FsbCBpc0NvbXBvc2l0aW9uRXZlbnQo
KSB0byBjcmVhdGUgdGhlIENvbXBvc2l0aW9uRXZlbnQgd3JhcHBlci4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oOiBBZGRlZCBKU0NvbXBvc2l0aW9uRXZlbnQuaC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcDogQWRkZWQg
SlNDb21wb3NpdGlvbkV2ZW50LmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwOiBDYWxsIGlzQ29tcG9zaXRpb25FdmVudCgpIHRvIGlkZW50aWZ5IGFuIGV2ZW50IGFz
IGEgQ29tcG9zaXRpb25FdmVudC4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Y29u
dmVydEV2ZW50VG9WOE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJbmRleC5jcHA6
IEFkZGVkICJWOENvbXBvc2l0aW9uRXZlbnQuaCIuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhJ
bmRleC5oOiBBZGRlZCBWOEluZGV4OjpDT01QT1NJVElPTkVWRU5ULgorICAgICAgICAqIGRvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcDogSW1wbGVtZW50cyB0aGUgQ29tcG9zaXRpb25FdmVudCBjbGFz
cy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6aW5pdENvbXBvc2l0aW9uRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6aXNDb21wb3NpdGlvbkV2
ZW50KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOiBEZWNsYXJlcyB0aGUgQ29t
cG9zaXRpb25FdmVudCBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpkYXRhKToKKyAg
ICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5pZGw6IEFkZGVkIHRoZSBJREwgb2YgRE9NIENv
bXBvc2l0aW9uRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQpOiBBZGRlZCBhIG1ldGhvZCB0byBpZGVudGlm
eSBhbiBldmVudCBpcyBhIENvbXBvc2l0aW9uRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50Lmg6
CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDogQWRkZWQgY29tcG9zaXRpb257c3RhcnQsdXBk
YXRlLGVuZH0gdG8gZXZlbnROYW1lcy4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvbmZpcm1Db21wb3NpdGlvbik6IFNlbnQgYSBDb21w
b3NpdGlvbkVuZCBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRp
b24pOiBTZW50IGEgQ29tcG9zaXRpb257U3RhcnQsVXBkYXRlLEVuZH0gZXZlbnQuCisKIDIwMDkt
MTEtMTAgIEpvYW5tYXJpZSBEaWdncyAgPGpvYW5tYXJpZS5kaWdnc0BnbWFpbC5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgUmV2aWV3ZWQgYnkgSmFuIEFsb256by4KSW5kZXg6IFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHJldmlzaW9uIDUwNjk5KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIENsaWVu
dFJlY3RMaXN0IFwKICAgICBDbGlwYm9hcmQgXAogICAgIENvbW1lbnQgXAorICAgIENvbXBvc2l0
aW9uRXZlbnQgXAogICAgIENvbnNvbGUgXAogICAgIENvb3JkaW5hdGVzIFwKICAgICBDb3VudGVy
IFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNTA2OTkpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKIAlX
ZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5pZGwgXAogCVdlYkNvcmUvZG9tL0NsaXBib2FyZC5p
ZGwgXAogCVdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsIFwKKwlXZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmlkbCBcCiAJV2ViQ29yZS9kb20vRE9NQ29yZUV4Y2VwdGlvbi5pZGwgXAogCVdlYkNv
cmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbCBcCiAJV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
IFwKQEAgLTY3OCw2ICs2NzksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9t
L0NsaXBib2FyZEV2ZW50LmggXAogCVdlYkNvcmUvZG9tL0NvbW1lbnQuY3BwIFwKIAlXZWJDb3Jl
L2RvbS9Db21tZW50LmggXAorCVdlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIFwKKwlX
ZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggXAogCVdlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwIFwKIAlXZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggXAogCVdlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDUwNjk5KQorKysgV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICAgICAg
ICAgICAgICdkb20vQ2xpZW50UmVjdExpc3QuaWRsJywKICAgICAgICAgICAgICdkb20vQ2xpcGJv
YXJkLmlkbCcsCiAgICAgICAgICAgICAnZG9tL0NvbW1lbnQuaWRsJywKKyAgICAgICAgICAgICdk
b20vQ29tcG9zaXRpb25FdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9ET01Db3JlRXhjZXB0
aW9uLmlkbCcsCiAgICAgICAgICAgICAnZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbCcsCiAgICAg
ICAgICAgICAnZG9tL0RvY3VtZW50LmlkbCcsCkBAIC0xMDAyLDYgKzEwMDMsOCBAQAogICAgICAg
ICAgICAgJ2RvbS9DbGlwYm9hcmRFdmVudC5oJywKICAgICAgICAgICAgICdkb20vQ29tbWVudC5j
cHAnLAogICAgICAgICAgICAgJ2RvbS9Db21tZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9Db21w
b3NpdGlvbkV2ZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL0NvbXBvc2l0aW9uRXZlbnQuaCcs
CiAgICAgICAgICAgICAnZG9tL0NvbnRhaW5lck5vZGUuY3BwJywKICAgICAgICAgICAgICdkb20v
Q29udGFpbmVyTm9kZS5oJywKICAgICAgICAgICAgICdkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuaCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDUwNjk5KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMzM1LDYgKzMzNSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgZG9t
L0NsaXBib2FyZC5pZGwgXAogICAgIGRvbS9DREFUQVNlY3Rpb24uaWRsIFwKICAgICBkb20vQ29t
bWVudC5pZGwgXAorICAgIGRvbS9Db21wb3NpdGlvbkV2ZW50LmlkbCBcCiAgICAgZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaWRsIFwKICAgICBkb20vRG9jdW1lbnQuaWRsIFwKICAgICBkb20vRG9jdW1l
bnRUeXBlLmlkbCBcCkBAIC04NTYsNiArODU3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0Ns
aXBib2FyZC5jcHAgXAogICAgIGRvbS9DbGlwYm9hcmRFdmVudC5jcHAgXAogICAgIGRvbS9Db21t
ZW50LmNwcCBcCisgICAgZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vQ29udGFp
bmVyTm9kZS5jcHAgXAogICAgIGRvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAg
XAogICAgIGRvbS9Eb2N1bWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDUw
Njk5KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTI3
NCw2ICsyNzQsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDbGllbnRSZWN0TGlzdC5jcHAKICAgICAg
ICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NsaXBib2FyZC5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0NvbW1lbnQuY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNDb21wb3NpdGlvbkV2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQ29uc29sZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Nvb3Jk
aW5hdGVzLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ291bnRlci5jcHAK
QEAgLTQ1NCw2ICs0NTUsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMg
bmVlCiAgICAgICAgIGRvbS9DbGlwYm9hcmQuY3BwCiAgICAgICAgIGRvbS9DbGlwYm9hcmRFdmVu
dC5jcHAKICAgICAgICAgZG9tL0NvbW1lbnQuY3BwCisgICAgICAgIGRvbS9Db21wb3NpdGlvbkV2
ZW50LmNwcAogICAgICAgICBkb20vQ29udGFpbmVyTm9kZS5jcHAKICAgICAgICAgZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcAogICAgICAgICBkb20vRG9jdW1lbnQuY3BwCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDUwNjk5KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI4MSw2ICsx
MjgxLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNDb21wb3NpdGlvbkV2ZW50LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNDb21wb3NpdGlvbkV2ZW50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ29uc29sZS5jcHAiDQogCQkJCT4NCiAJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMjgyOTksNiArMjgzMDcsMTQgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXENvbXBvc2l0aW9u
RXZlbnQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXENvbXBvc2l0aW9uRXZlbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDb250YWluZXJOb2RlLmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCkBAIC00MjM0MCw2ICs0MjM1NiwxMCBAQAogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxET01TdG9yYWdlRGF0YUdyaWQuanMiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJ
CQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxET01T
dG9yYWdlSXRlbXNWaWV3LmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUwNjk5KQorKysg
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEyMTUsNiArMTIxNSwxMCBAQAogCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1
Z2luSGFsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9Owog
CQk3NjkzQkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4
MjMgLyogUGx1Z2luSGFsdGVyLmggKi87IH07CiAJCTc2OTNCQUQ1MTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc2OTNCQUQxMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXJDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
OUFDOTIxODEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QUM5MjE2MTA5OTQ1Qzgw
MDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OworCQk3OUFDOTIxOTEwOTk0
NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyogSlND
b21wb3NpdGlvbkV2ZW50LmggKi87IH07CisJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBD
b21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNw
cCAqLzsgfTsKKwkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlG
MTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMUU4OEY1
MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFFODhGMzEwMUNDMzg0MDAwQzRERjUgLyogU2Ny
aXB0QXJyYXkuY3BwICovOyB9OwogCQk3QTFFODhGNjEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
MUU4OEY0MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBB
QSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9N
QWdlbnQuY3BwICovOyB9OwpAQCAtNjUxNSw2ICs2NTE5LDExIEBACiAJCTc2OTNCQUNGMTA2QzJE
Q0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGx1Z2luSGFsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzY5M0JBRDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZF
IC8qIEpTQ29tcG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwOyBwYXRoID0gLi4vV2ViS2l0QnVpbGQvUmVs
ZWFzZS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tcG9zaXRpb25FdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNzlBQzkyMTcxMDk5NDVDODAwMjEyNjZFIC8qIEpT
Q29tcG9zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0Nv
bXBvc2l0aW9uRXZlbnQuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL1JlbGVhc2UvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0NvbXBvc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQk3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlGMkY1OUYxMDkxOTM5QTAwMEQ4
N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29tcG9zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUYy
RjVBMDEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQ29tcG9zaXRpb25FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcnJheS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMUU4OEY0MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEgLyog
SW5zcGVjdG9yRE9NQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yRE9NQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTMzODUsNiArMTMzOTQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5NDYzNDUxMDdBOTM0
QjAwODU3MTkzIC8qIEpTQmVmb3JlTG9hZEV2ZW50LmNwcCAqLywKIAkJCQlCQzk0NjM0NzEwN0E5
MzY2MDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCAqLywKKwkJCQk3OUFDOTIxNjEwOTk0
NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLywKKwkJCQk3OUFDOTIxNzEw
OTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8sCiAJCQkJMkVDRjdBREEx
MDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi8sCiAJCQkJMkVDRjdBREIxMDE2
MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5oICovLAogCQkJCTE0RTgzNzgzMDlGODVEMUMw
MEI4NUFFNCAvKiBKU0V2ZW50LmNwcCAqLywKQEAgLTE1NDgyLDYgKzE1NDkzLDkgQEAKIAkJCQk2
NTUwQjY5NzA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5jcHAgKi8sCiAJCQkJNjU1MEI2OTgw
OTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCAqLywKIAkJCQk4NTA4OUNDNzBBOThDMjI2MDBB
Mjc1QUEgLyogQ29tbWVudC5pZGwgKi8sCisJCQkJNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuY3BwICovLAorCQkJCTc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAv
KiBDb21wb3NpdGlvbkV2ZW50LmggKi8sCisJCQkJNzlGMkY1QTAxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaWRsICovLAogCQkJCUE4MTg3MjE0MDk3N0QzQzAwMDU4MjZEOSAv
KiBDb250YWluZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyog
Q29udGFpbmVyTm9kZS5oICovLAogCQkJCUE4QzRBN0Y4MDlENTYzMjcwMDAzQUM4RCAvKiBDU1NN
YXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBAIC0xNTgyOSw2ICsxNTg0Myw3IEBA
CiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAvKiBDb21wb3NpdGVBbmltYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVF
ZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NC
IC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Qzk3QUYzMDhFQTkw
ODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMEIzNkE1MENEM0M2
N0MwMEFDN0VCNSAvKiBDb25zb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE4RTBGNUYw
Njk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTY5OTYs
NiArMTcwMTEsNyBAQAogCQkJCTUxRUM5MjZBMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNDE3Qzkw
Q0VDRkYyNTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTc5QUM5MjE5MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBv
c2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTgyRjkwMENBQUZBOUQwMDIyMzdB
RSAvKiBKU0RhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3RDE2QTBGRjE5RjU2MDA3
MDg4N0IgLyogSlNEYXRhR3JpZENvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3N0QxNkMw
RkYxOUY1NjAwNzA4ODdCIC8qIEpTRGF0YUdyaWRDb2x1bW5MaXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTE4NDU4LDYgKzE4NDc0LDcgQEAKIAkJCQkzN0MyMzgyMjEwOThDODQyMDBFRjlGNzIgLyog
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2
RkUxMTUwRTZFMURBNzAwQkY2MDg4IC8qIENvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzMwOUREQzA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENv
bXBvc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwQjM2QTQwQ0QzQzY3QzAw
QUM3RUI1IC8qIENvbnNvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMDYxOEYwRjVGMDY5
ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg3
MjFGMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTkxMjYsNiArMTkxNDMsNyBAQAogCQkJCUJDQTgzRTRGMEQ3Q0UxRTkwMDM0MjFBOCAvKiBK
U0NsaXBib2FyZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4M0U1MjBEN0NFMjA1MDAzNDIx
QTggLyogSlNDbGlwYm9hcmRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGOUI2RTAw
QkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OUFD
OTIxODEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDOTg1NDNEMENEM0Q5OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzBERkM4NzAwREI2ODQxQTAwM0VBRTdDIC8qIEpTQ29uc29sZUN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlND
b29yZGluYXRlcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTA2OTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCwxMSBAQAogI2luY2x1
ZGUgIkpTRXZlbnQuaCIKIAogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkNvbXBv
c2l0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkpTQmVmb3JlTG9h
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiSlNDbGlwYm9hcmQuaCIKKyNpbmNsdWRlICJKU0NvbXBvc2l0
aW9uRXZlbnQuaCIKICNpbmNsdWRlICJKU0Vycm9yRXZlbnQuaCIKICNpbmNsdWRlICJKU0tleWJv
YXJkRXZlbnQuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudC5oIgpAQCAtMTA3LDYgKzEwOSw4
IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAgICAgICAgZWxz
ZSBpZiAoZXZlbnQtPmlzU1ZHWm9vbUV2ZW50KCkpCiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JF
QVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFNWR1pvb21FdmVudCwg
ZXZlbnQpOwogI2VuZGlmCisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT5pc0NvbXBvc2l0aW9uRXZl
bnQoKSkKKyAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4
ZWMsIGdsb2JhbE9iamVjdCwgQ29tcG9zaXRpb25FdmVudCwgZXZlbnQpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihleGVjLCBn
bG9iYWxPYmplY3QsIFVJRXZlbnQsIGV2ZW50KTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LT5pc011
dGF0aW9uRXZlbnQoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRl
LmgJKHJldmlzaW9uIDUwNjk5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5j
bHVkZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiQ2xpZW50
UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJk
LmgiCisjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIK
ICNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5jbHVkZSAiQ1NTQ2hhcnNldFJ1bGUuaCIKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAkocmV2
aXNpb24gNTA2OTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5P
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiYmluZGlu
Z3MvVjhDbGllbnRSZWN0TGlzdC5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhDbGlwYm9hcmQu
Y3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4Q29tbWVudC5jcHAiCisjaW5jbHVkZSAiYmluZGlu
Z3MvVjhDb21wb3NpdGlvbkV2ZW50LmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOENvbnNvbGUu
Y3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4Q291bnRlci5jcHAiCiAjaW5jbHVkZSAiYmluZGlu
Z3MvVjhDU1NDaGFyc2V0UnVsZS5jcHAiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCShyZXZpc2lvbiA1MDY5OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyNCw2ICsxMjI0LDggQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgogICAgICAgICBlbHNlIGlmIChldmVudC0+aXNT
Vkdab29tRXZlbnQoKSkKICAgICAgICAgICAgIHR5cGUgPSBWOENsYXNzSW5kZXg6OlNWR1pPT01F
VkVOVDsKICNlbmRpZgorICAgICAgICBlbHNlIGlmIChldmVudC0+aXNDb21wb3NpdGlvbkV2ZW50
KCkpCisgICAgICAgICAgICB0eXBlID0gVjhDbGFzc0luZGV4OjpDT01QT1NJVElPTkVWRU5UOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0eXBlID0gVjhDbGFzc0luZGV4OjpVSUVWRU5UOwog
ICAgIH0gZWxzZSBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEluZGV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4SW5kZXguY3BwCShyZXZpc2lvbiA1MDY5OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bmRleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJWOENs
aWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiVjhDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJWOENv
bW1lbnQuaCIKKyNpbmNsdWRlICJWOENvbXBvc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJWOENv
bnNvbGUuaCIKICNpbmNsdWRlICJWOENvdW50ZXIuaCIKICNpbmNsdWRlICJWOENTU1N0eWxlRGVj
bGFyYXRpb24uaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCShyZXZpc2lvbiA1MDY5OSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiAr
MzMyLDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYo
Q0xJRU5UUkVDVExJU1QsIENsaWVudFJlY3RMaXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIFYoQ0xJUEJPQVJELCBDbGlwYm9hcmQpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQ09OU09MRSwgQ29uc29sZSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoQ09N
UE9TSVRJT05FVkVOVCwgQ29tcG9zaXRpb25FdmVudCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIFYoQ09VTlRFUiwgQ291bnRlcikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQ1NTQ0hBUlNFVFJVTEUsIENTU0NoYXJz
ZXRSdWxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQ1NTRk9O
VEZBQ0VSVUxFLCBDU1NGb250RmFjZVJ1bGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApJbmRleDogV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbXBvc2l0
aW9uRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkKK3sKK30KKworQ29t
cG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCisgICAg
OiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCisgICAgLCBtX2RhdGEoZGF0YSkK
K3sKK30KKworQ29tcG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKQoreworfQorCit2
b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxB
YnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICBpZiAoZGlzcGF0
Y2hlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworCisgICAgbV9kYXRhID0gZGF0YTsKK30KKworYm9v
bCBDb21wb3NpdGlvbkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdAoreworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Rv
bS9Db21wb3NpdGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIENv
bXBvc2l0aW9uRXZlbnRfaAorI2RlZmluZSBDb21wb3NpdGlvbkV2ZW50X2gKKworI2luY2x1ZGUg
IlVJRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQ29tcG9zaXRp
b25FdmVudCA6IHB1YmxpYyBVSUV2ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tcG9zaXRpb25FdmVudCk7CisgICAgICAgIH0KKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29t
cG9zaXRpb25FdmVudCh0eXBlLCB2aWV3LCBkYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgdmly
dHVhbCB+Q29tcG9zaXRpb25FdmVudCgpOworICAgIAorICAgICAgICB2b2lkIGluaXRDb21wb3Np
dGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEp
OworICAgIAorICAgICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdDsKKworICAg
IHByaXZhdGU6CisgICAgICAgIENvbXBvc2l0aW9uRXZlbnQoKTsKKyAgICAgICAgQ29tcG9zaXRp
b25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3
PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpOworCisgICAgICAgIFN0cmluZyBtX2RhdGE7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29tcG9zaXRpb25F
dmVudF9oCkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKK21vZHVsZSBldmVudHMgeworCisgICAgLy8gSW50cm9kdWNlZCBpbiBE
T00gTGV2ZWwgMzoKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
CisgICAgXSBDb21wb3NpdGlvbkV2ZW50IDogVUlFdmVudCB7CisKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBkYXRhOworCisgICAgICAgIHZvaWQgaW5pdENvbXBvc2l0aW9u
RXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIERPTVdpbmRvdyB2aWV3QXJnLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgZGF0YUFyZyk7CisKKyAgICB9OworCit9Cklu
ZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZl
bnQuY3BwCShyZXZpc2lvbiA1MDY5OSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNiArOTYsMTEgQEAgYm9vbCBFdmVudDo6aXNUZXh0RXZlbnQoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFdmVudDo6aXNDb21wb3NpdGlvbkV2ZW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnQ6OmlzRHJhZ0V2
ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDUwNjk5KQor
KysgV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzTXV0YXRpb25FdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEV2ZW50KCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0RyYWdFdmVudCgpIGNvbnN0OyAvLyBhIHN1YnNldCBvZiBtb3VzZSBldmVudHMKICAgICAg
ICAgdmlydHVhbCBib29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVh
bCBib29sIGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA1
MDY5OSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NiArNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY2hlY2tpbmcpIFwKICAg
ICBtYWNybyhjbGljaykgXAogICAgIG1hY3JvKGNsb3NlKSBcCisgICAgbWFjcm8oY29tcG9zaXRp
b25lbmQpIFwKKyAgICBtYWNybyhjb21wb3NpdGlvbnN0YXJ0KSBcCisgICAgbWFjcm8oY29tcG9z
aXRpb251cGRhdGUpIFwKICAgICBtYWNybyhjb25uZWN0KSBcCiAgICAgbWFjcm8oY29udGV4dG1l
bnUpIFwKICAgICBtYWNybyhjb3B5KSBcCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNTA2
OTkpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBcHBseVN0
eWxlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCisjaW5jbHVkZSAiQ29t
cG9zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkNyZWF0ZUxpbmtDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uaCIKQEAgLTEzNzAsNiArMTM3MSwxNiBAQCB2b2lkIEVkaXRvcjo6Y29u
ZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisg
ICAgLy8gRGlzcGF0Y2ggYSBjb21wb3NpdGlvbmVuZCBldmVudCB0byB0aGUgZm9jdXNlZCBub2Rl
LgorICAgIC8vIFdlIHNob3VsZCBzZW5kIHRoaXMgZXZlbnQgYmVmb3JlIHNlbmRpbmcgYSBUZXh0
RXZlbnQgYXMgd3JpdHRlbiBpbiBTZWN0aW9uIDYuMi4yIGFuZCA2LjIuMyBvZgorICAgIC8vIHRo
ZSBET00gRXZlbnQgc3BlY2lmaWNhdGlvbi4KKyAgICBOb2RlKiB0YXJnZXQgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOworICAgIGlmICh0YXJnZXQpIHsKKyAgICAgICAgUmVm
UHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4
dCk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQsIGVjKTsKKyAgICB9CisKICAgICAvLyBJZiB0ZXh0IGlzIGVtcHR5LCB0
aGVuIGRlbGV0ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIGhlcmUuICBJZiB0ZXh0IGlzIG5vbi1lbXB0
eSwgSW5zZXJ0VGV4dENvbW1hbmQ6OmlucHV0CiAgICAgLy8gd2lsbCBkZWxldGUgdGhlIG9sZCBj
b21wb3NpdGlvbiB3aXRoIGFuIG9wdGltaXplZCByZXBsYWNlIG9wZXJhdGlvbi4KICAgICBpZiAo
dGV4dC5pc0VtcHR5KCkpCkBAIC0xMzk2LDcgKzE0MDcsMzggQEAgdm9pZCBFZGl0b3I6OnNldENv
bXBvc2l0aW9uKGNvbnN0IFN0cmluZwogICAgICAgICBzZXRJZ25vcmVDb21wb3NpdGlvblNlbGVj
dGlvbkNoYW5nZShmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyAgICBO
b2RlKiB0YXJnZXQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOworICAgIGlm
ICh0YXJnZXQpIHsKKyAgICAgICAgLy8gRGlzcGF0Y2ggYW4gYXBwcm9wcmlhdGUgY29tcG9zaXRp
b24gZXZlbnQgdG8gdGhlIGZvY3VzZWQgbm9kZS4KKyAgICAgICAgLy8gV2UgY2hlY2sgdGhlIGNv
bXBvc2l0aW9uIHN0YXR1cyBhbmQgY2hvb3NlIGFuIGFwcHJvcHJpYXRlIGNvbXBvc2l0aW9uIGV2
ZW50IHNpbmNlIHRoaXMKKyAgICAgICAgLy8gZnVuY3Rpb24gaXMgdXNlZCBmb3IgdGhyZWUgcHVy
cG9zZXM6CisgICAgICAgIC8vIDEuIFN0YXJ0aW5nIGEgbmV3IGNvbXBvc2l0aW9uLgorICAgICAg
ICAvLyAgICBTZW5kIGEgY29tcG9zaXRpb25zdGFydCBldmVudCB3aGVuIHRoaXMgZnVuY3Rpb24g
Y3JlYXRlcyBhIG5ldyBjb21wb3NpdGlvbiBub2RlLCBpLmUuCisgICAgICAgIC8vICAgIG1fY29t
cG9zaXRpb25Ob2RlID09IDAgJiYgIXRleHQuaXNFbXB0eSgpLgorICAgICAgICAvLyAyLiBVcGRh
dGluZyB0aGUgZXhpc3RpbmcgY29tcG9zaXRpb24gbm9kZS4KKyAgICAgICAgLy8gICAgU2VuZCBh
IGNvbXBvc2l0aW9udXBkYXRlIGV2ZW50IHdoZW4gdGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBl
eGlzdGluZyBjb21wb3NpdGlvbgorICAgICAgICAvLyAgICBub2RlLCBpLmUuIG1fY29tcG9zaXRp
b25Ob2RlICE9IDAgJiYgIXRleHQuaXNFbXB0eSgpLgorICAgICAgICAvLyAzLiBDYW5jZWxpbmcg
dGhlIG9uZ29pbmcgY29tcG9zaXRpb24uCisgICAgICAgIC8vICAgIFNlbmQgYSBjb21wb3NpdGlv
bmVuZCBldmVudCB3aGVuIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGV4aXN0aW5nIGNvbXBvc2l0aW9u
IG5vZGUsIGkuZS4KKyAgICAgICAgLy8gICAgbV9jb21wb3NpdGlvbk5vZGUgIT0gMCAmJiB0ZXN0
LmlzRW1wdHkoKS4KKyAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50OworICAg
ICAgICBpZiAoIW1fY29tcG9zaXRpb25Ob2RlKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQg
c2VuZCBhIGNvbXBvc2l0aW9uc3RhcnQgZXZlbnQgb25seSB3aGVuIHRoZSBnaXZlbiB0ZXh0IGlz
IG5vdCBlbXB0eSBiZWNhdXNlIHRoaXMKKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRvZXNuJ3Qg
Y3JlYXRlIGEgY29tcG9zaXRpb24gbm9kZSB3aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LgorICAgICAg
ICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBldmVudCA9IENvbXBv
c2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25zdGFydEV2ZW50LCBt
X2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoIXRleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBtX2Zy
YW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
IGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlv
bmVuZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgIH0KKyAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIGlmIChldmVudC5nZXQoKSkKKyAgICAg
ICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOworICAgIH0KKwogICAgIC8v
IElmIHRleHQgaXMgZW1wdHksIHRoZW4gZGVsZXRlIHRoZSBvbGQgY29tcG9zaXRpb24gaGVyZS4g
IElmIHRleHQgaXMgbm9uLWVtcHR5LCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQKICAgICAvLyB3
aWxsIGRlbGV0ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIHdpdGggYW4gb3B0aW1pemVkIHJlcGxhY2Ug
b3BlcmF0aW9uLgogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUw
NzI3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMDktMTEtMTAgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IGNvbXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgorICAgICAgICBU
aGlzIGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21wb3NpdGlvbiBl
dmVudHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRoZSBjb21wb3Np
dGlvbiBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFjY29yZGluZyB0
bworICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzEwCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pbWUt
Y29tcG9zaXRpb24tZXZlbnRzLTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOiBTa2lwIHRoaXMgdGVzdCBiZWNhdXNlIFRleHRJbnB1
dENvbnRyb2xsZXIgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Nr
aXBwZWQ6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBkaXR0by4KKwog
MjAwOS0xMS0xMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21w
b3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgaW5wdXQtbWV0aG9kIGZ1bmN0aW9ucyBzZW5k
cyBDb21wb3NpdGlvbiBFdmVudHMgYW5kIFRleHQgRXZlbnRzIGludHJvZHVjZWQgaW4gRE9NIExl
dmVsIDMuCisKK1RvIHRlc3QgbWFudWFsbHksIGVuYWJsZSBhbiBJTUUsIGlucHV0IENKSyBjaGFy
YWN0ZXJzLCBhbmQgc2VlIHRoaXMgcGFnZSBkb2Vzbid0IHNob3cgJ0ZBSUxFRCcgbGluZXMuCisK
KworU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbnN0YXJ0IC0gIjEiCitTVUNDRVNTOiBJTlBV
VCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjIiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9u
dXBkYXRlIC0gIjMiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9uZW5kIC0gIjQiCitTVUND
RVNTOiBJTlBVVCAtIHRleHRJbnB1dCAtICI0IgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlv
bnN0YXJ0IC0gIjUiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjYiCitT
VUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjciCitTVUNDRVNTOiBJTlBVVCAt
IGNvbXBvc2l0aW9uZW5kIC0gIiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1j
b21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90
aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgaW5wdXQt
bWV0aG9kIGZ1bmN0aW9ucyBzZW5kcyBDb21wb3NpdGlvbiBFdmVudHMgYW5kIFRleHQgRXZlbnRz
IGludHJvZHVjZWQgaW4gRE9NIExldmVsIDMuPC9wPgorPHA+VG8gdGVzdCBtYW51YWxseSwgZW5h
YmxlIGFuIElNRSwgaW5wdXQgQ0pLIGNoYXJhY3RlcnMsIGFuZCBzZWUgdGhpcyBwYWdlIGRvZXNu
J3Qgc2hvdyAnRkFJTEVEJyBsaW5lcy48L3A+Cis8aW5wdXQgaWQ9InRlc3QiIHR5cGU9InRleHQi
Lz4KKzx1bCBpZD0iY29uc29sZSI+PC91bD4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2coc3RyKSB7CisgICB2YXIgbGkg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOworICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKwor
ZnVuY3Rpb24gbG9nRXZlbnQoZSkgeworICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKKyAgICB2
YXIgdHlwZSA9IGUudHlwZTsKKyAgICBpZiAoZS50eXBlID09ICdjb21wb3NpdGlvbnN0YXJ0JyB8
fCBlLnR5cGUgPT0gJ2NvbXBvc2l0aW9udXBkYXRlJyB8fCBlLnR5cGUgPT0gJ2NvbXBvc2l0aW9u
ZW5kJyB8fCBlLnR5cGUgPT0gJ3RleHRJbnB1dCcpCisgICAgICAgIGxvZygnU1VDQ0VTUzogJyAr
IHRhcmdldC50YWdOYW1lICsgJyAtICcgKyBlLnR5cGUgKyAnIC0gIicgKyBlLmRhdGEgKyAnIicp
OworICAgIGVsc2UKKyAgICAgICAgbG9nKCdGQUlMRUQ6ICcgKyB0YXJnZXQudGFnTmFtZSArICcg
LSAnICsgZS50eXBlICsgJyAtICInICsgZS5kYXRhICsgJyInKTsKK30KKwordmFyIHRlc3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwordGVzdC5mb2N1cygpOworCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCisgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVycyB0byB0aGUgPGlucHV0PiBu
b2RlLgorICAgIHRlc3QuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsIGxvZ0V2
ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnVwZGF0
ZSIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3Np
dGlvbmVuZCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJ0
ZXh0SW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworCisgICAgLy8gQ2FzZSAxOiBDb21wb3NlIGEg
dGV4dCBhbmQgY29tbWl0IGl0LgorICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4
dCgnMScsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnMics
IDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnMycsIDAsIDEp
OworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgnNCcpOworCisgICAgLy8gQ2Fz
ZSAyOiBDb21wb3NlIGEgdGV4dCBidXQgY2FuY2VsIGl0LgorICAgIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2V0TWFya2VkVGV4dCgnNScsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0
TWFya2VkVGV4dCgnNicsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2Vk
VGV4dCgnNycsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgn
JywgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA1MDY5OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NTY2LDYgKzU1NjYsNyBAQCBmYXN0L2xv
YWRlci9vcGFxdWUtYmFzZS11cmwuaHRtbCAKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWlt
ZS1jb21wbGV0ZWQuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQu
aHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAor
ZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogCiAjIE5vIFVzZXIg
U2NyaXB0cwogdXNlcnNjcmlwdHMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNp
b24gNTA2OTkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjgsNiArMTI4LDcgQEAgaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9u
Lmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKIGZhc3Qv
Zm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorZmFzdC9ldmVudHMvaW1lLWNvbXBv
c2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogCiAjIE1pc3NpbmcgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCkKIGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJh
Y2stY2FjaGVkLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA1
MDY5OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC02MzEsNiArNjMxLDcgQEAgaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtaW1nLXRlc3Qu
aHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCiBmYXN0
L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCiBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCitmYXN0L2V2ZW50cy9pbWUtY29tcG9z
aXRpb24tZXZlbnRzLTAwMS5odG1sCiAKICMgRmFpbGluZyBtZWRpYSB0ZXN0cyBvbiB3aW5kb3dz
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzI5MDQ3PgogbWVkaWEvYXVkaW8tZGVsZXRlLXdoaWxlLXN0
ZXAtYnV0dG9uLWNsaWNrZWQuaHRtbAo=
</data>
<flag name="commit-queue"
          id="24496"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43031</attachid>
            <date>2009-11-11 23:00:43 -0800</date>
            <delta_ts>2009-11-13 13:16:54 -0800</delta_ts>
            <desc>proposed patch 4 (for WebKit and Chromium)</desc>
            <filename>issue26310-patch9.txt</filename>
            <type>text/plain</type>
            <size>35876</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDg2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMTEtMTEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGNvbXBvc2l0aW9uIGV2ZW50cyBpbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzLgor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3IElETCB3aGljaCBkZWZpbmVzIHRoZSBjb21w
b3NpdGlvbiBldmVudHMsIGFkZHMgYSBjbGFzcyB3aGljaAorICAgICAgICBpbXBsZW1lbnRzIHRo
ZSBjb21wb3NpdGlvbiBldmVudHMsIGFuZCBzZW5kcyB0aGUgY29tcG9zaXRpb24gZXZlbnRzIGFj
Y29yZGluZyB0bworICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzEwCisKKyAgICAgICAgVGVzdDogZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZTogQWRkZWQgQ29tcG9zaXRpb25FdmVudCBzbyB3ZSBjYW4gY29tcGls
ZSAiQ29tcG9zaXRpb25FdmVudC5pZGwiLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRl
ZCAiQ29tcG9zaXRpb25FdmVudC57Y3BwLGgsaWRsfSIuCisgICAgICAgICogV2ViQ29yZS5neXBp
OiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogZGl0dG8KKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCAiQ29tcG9zaXRpb25FdmVudC57Y3BwLGgsaWRsfSIg
YW5kICJKU0NvbXBvc2l0aW9uRXZlbnQue2NwcCxofSIuCisgICAgICAgICogV2ViQ29yZVNvdXJj
ZXMuYmtsOiBBZGRlZCAiSlNDb21wb3NpdGlvbkV2ZW50LntjcHAsaH0iLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IENh
bGwgaXNDb21wb3NpdGlvbkV2ZW50KCkgdG8gY3JlYXRlIHRoZSBDb21wb3NpdGlvbkV2ZW50IHdy
YXBwZXIuCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaDogQWRkZWQg
IkpTQ29tcG9zaXRpb25FdmVudC5oIi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9EZXJpdmVkU291
cmNlc0FsbEluT25lLmNwcDogQWRkZWQgIkpTQ29tcG9zaXRpb25FdmVudC5jcHAiLgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6IENhbGwgaXNDb21wb3NpdGlvbkV2ZW50
KCkgdG8gaWRlbnRpZnkgYW4gZXZlbnQgYXMgYSBDb21wb3NpdGlvbkV2ZW50LgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUb1Y4T2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEluZGV4LmNwcDogQWRkZWQgIlY4Q29tcG9zaXRpb25FdmVudC5oIi4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6IEFkZGVkIFY4SW5kZXg6OkNPTVBPU0lU
SU9ORVZFTlQuCisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwOiBJbXBsZW1lbnRz
IHRoZSBDb21wb3NpdGlvbkV2ZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRp
b25FdmVudDo6Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlv
bkV2ZW50Ojp+Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlv
bkV2ZW50Ojppbml0Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3Np
dGlvbkV2ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQpOgorICAgICAgICAqIGRvbS9Db21wb3NpdGlv
bkV2ZW50Lmg6IERlY2xhcmVzIHRoZSBDb21wb3NpdGlvbkV2ZW50IGNsYXNzLgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0aW9uRXZlbnQ6OmRhdGEpOgorICAgICAgICAqIGRvbS9Db21wb3NpdGlvbkV2ZW50Lmlk
bDogQWRkZWQgdGhlIElETCBvZiBET00gQ29tcG9zaXRpb25FdmVudC4KKyAgICAgICAgKiBkb20v
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OmlzQ29tcG9zaXRpb25FdmVudCk6
IEFkZGVkIGEgbWV0aG9kIHRvIGlkZW50aWZ5IGFuIGV2ZW50IGlzIGEgQ29tcG9zaXRpb25FdmVu
dC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBB
ZGRlZCBjb21wb3NpdGlvbntzdGFydCx1cGRhdGUsZW5kfSB0byBldmVudE5hbWVzLgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29uZmly
bUNvbXBvc2l0aW9uKTogU2VudCBhIENvbXBvc2l0aW9uRW5kIGV2ZW50LgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6IFNlbnQgYSBDb21wb3NpdGlvbntTdGFydCxV
cGRhdGUsRW5kfSBldmVudC4KKwogMjAwOS0xMS0xMSAgWXVzdWtlIFNhdG8gIDx5dXN1a2VzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQkocmV2aXNpb24gNTA4NjEpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAg
Q2xpZW50UmVjdExpc3QgXAogICAgIENsaXBib2FyZCBcCiAgICAgQ29tbWVudCBcCisgICAgQ29t
cG9zaXRpb25FdmVudCBcCiAgICAgQ29uc29sZSBcCiAgICAgQ29vcmRpbmF0ZXMgXAogICAgIENv
dW50ZXIgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1MDg2MSkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsNyBAQCBJRExfQklORElOR1MgKz0g
XAogCVdlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmlkbCBcCiAJV2ViQ29yZS9kb20vQ2xpcGJv
YXJkLmlkbCBcCiAJV2ViQ29yZS9kb20vQ29tbWVudC5pZGwgXAorCVdlYkNvcmUvZG9tL0NvbXBv
c2l0aW9uRXZlbnQuaWRsIFwKIAlXZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmlkbCBcCiAJ
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsIFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5pZGwgXApAQCAtNjc4LDYgKzY3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vQ29tbWVudC5jcHAgXAogCVdl
YkNvcmUvZG9tL0NvbW1lbnQuaCBcCisJV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAg
XAorCVdlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAgXAogCVdlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBcCiAJV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTA4NjEpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAog
ICAgICAgICAgICAgJ2RvbS9DbGllbnRSZWN0TGlzdC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9D
bGlwYm9hcmQuaWRsJywKICAgICAgICAgICAgICdkb20vQ29tbWVudC5pZGwnLAorICAgICAgICAg
ICAgJ2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL0RPTUNvcmVF
eGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsJywK
ICAgICAgICAgICAgICdkb20vRG9jdW1lbnQuaWRsJywKQEAgLTEwMDIsNiArMTAwMyw4IEBACiAg
ICAgICAgICAgICAnZG9tL0NsaXBib2FyZEV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9Db21t
ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0NvbW1lbnQuaCcsCisgICAgICAgICAgICAnZG9t
L0NvbXBvc2l0aW9uRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdkb20vQ29tcG9zaXRpb25FdmVu
dC5oJywKICAgICAgICAgICAgICdkb20vQ29udGFpbmVyTm9kZS5jcHAnLAogICAgICAgICAgICAg
J2RvbS9Db250YWluZXJOb2RlLmgnLAogICAgICAgICAgICAgJ2RvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5oJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTA4NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJv
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNiArMzMxLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAg
ICBkb20vQ2xpcGJvYXJkLmlkbCBcCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5pZGwgXAogICAgIGRv
bS9Db21tZW50LmlkbCBcCisgICAgZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsIFwKICAgICBkb20v
RG9jdW1lbnRGcmFnbWVudC5pZGwgXAogICAgIGRvbS9Eb2N1bWVudC5pZGwgXAogICAgIGRvbS9E
b2N1bWVudFR5cGUuaWRsIFwKQEAgLTg1Miw2ICs4NTMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBk
b20vQ2xpcGJvYXJkLmNwcCBcCiAgICAgZG9tL0NsaXBib2FyZEV2ZW50LmNwcCBcCiAgICAgZG9t
L0NvbW1lbnQuY3BwIFwKKyAgICBkb20vQ29tcG9zaXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9D
b250YWluZXJOb2RlLmNwcCBcCiAgICAgZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
LmNwcCBcCiAgICAgZG9tL0RvY3VtZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmVTb3Vy
Y2VzLmJrbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNp
b24gNTA4NjEpCisrKyBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpA
QCAtMjc0LDYgKzI3NCw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBu
ZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NsaWVudFJlY3RMaXN0LmNwcAog
ICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2xpcGJvYXJkLmNwcAogICAgICAgICBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29tbWVudC5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NvbXBvc2l0aW9uRXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNDb25zb2xlLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
Q29vcmRpbmF0ZXMuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb3VudGVy
LmNwcApAQCAtNDU0LDYgKzQ1NSw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBm
aWxlcyBuZWUKICAgICAgICAgZG9tL0NsaXBib2FyZC5jcHAKICAgICAgICAgZG9tL0NsaXBib2Fy
ZEV2ZW50LmNwcAogICAgICAgICBkb20vQ29tbWVudC5jcHAKKyAgICAgICAgZG9tL0NvbXBvc2l0
aW9uRXZlbnQuY3BwCiAgICAgICAgIGRvbS9Db250YWluZXJOb2RlLmNwcAogICAgICAgICBkb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwCiAgICAgICAgIGRvbS9Eb2N1bWVudC5jcHAKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNTA4NjEpCisrKyBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgx
LDYgKzEyODEsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0NvbXBvc2l0aW9uRXZlbnQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0NvbXBvc2l0aW9uRXZlbnQuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDb25zb2xlLmNwcCINCiAJCQkJPg0K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yODMwNyw2ICsyODMxNSwxNCBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQ29tcG9z
aXRpb25FdmVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxkb21cQ29tcG9zaXRpb25FdmVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXENvbnRhaW5lck5vZGUuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQyMjIyLDYgKzQyMjM4LDEwIEBACiAJCQkJCT4N
CiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXERPTVN0b3JhZ2VEYXRhR3JpZC5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxl
Pg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XERPTVN0b3JhZ2VJdGVtc1ZpZXcuanMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTA4NjEp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTIxNSw2ICsxMjE1LDEwIEBACiAJCTc2OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi87
IH07CiAJCTc2OTNCQUQ0MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQwMTA2QzJEQ0Ew
MDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLzsgfTsKIAkJNzY5M0JBRDUxMDZDMkRDQTAwN0Iw
ODIzIC8qIFBsdWdpbkhhbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBRDExMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTc5QUM5MjE4MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBQzkyMTYxMDk5
NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25FdmVudC5jcHAgKi87IH07CisJCTc5QUM5MjE5
MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QUM5MjE3MTA5OTQ1QzgwMDIxMjY2RSAv
KiBKU0NvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKKwkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NC
IC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZl
bnQuY3BwICovOyB9OworCQk3OUYyRjVBMjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlG
MkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJN0Ex
RTg4RjUxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAv
KiBTY3JpcHRBcnJheS5jcHAgKi87IH07CiAJCTdBMUU4OEY2MTAxQ0MzODQwMDBDNERGNSAvKiBT
Y3JpcHRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0ExRTg4RjQxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EyNDU4N0IxMDIxRUFGNDAw
MEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0
b3JET01BZ2VudC5jcHAgKi87IH07CkBAIC02NTE3LDYgKzY1MjEsMTEgQEAKIAkJNzY5M0JBQ0Yx
MDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQbHVnaW5IYWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NjkzQkFEMTEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlckNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUFDOTIxNjEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEpTQ29tcG9zaXRpb25FdmVudC5jcHA7IHBhdGggPSBKU0NvbXBvc2l0aW9u
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUFDOTIxNzEwOTk0NUM4
MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTQ29tcG9zaXRpb25FdmVudC5oOyBwYXRoID0gSlNDb21wb3NpdGlvbkV2ZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5RjJGNTlFMTA5MTkzOUEwMDBEODdD
QiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbXBvc2l0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3OUYyRjU5RjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTc5RjJGNUEwMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlv
bkV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0ExRTg4RjMxMDFDQzM4NDAwMEM0REY1IC8q
IFNjcmlwdEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0ExRTg4RjQxMDFD
QzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMjQ1
ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01BZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM5MCw2ICsxMzM5OSw4IEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQlCQzk0NjM0NTEwN0E5MzRCMDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuY3Bw
ICovLAogCQkJCUJDOTQ2MzQ3MTA3QTkzNjYwMDg1NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5o
ICovLAorCQkJCTc5QUM5MjE2MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQu
Y3BwICovLAorCQkJCTc5QUM5MjE3MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZl
bnQuaCAqLywKIAkJCQkyRUNGN0FEQTEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNw
cCAqLywKIAkJCQkyRUNGN0FEQjEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmggKi8s
CiAJCQkJMTRFODM3ODMwOUY4NUQxQzAwQjg1QUU0IC8qIEpTRXZlbnQuY3BwICovLApAQCAtMTU0
ODgsNiArMTU0OTksOSBAQAogCQkJCTY1NTBCNjk3MDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50
LmNwcCAqLywKIAkJCQk2NTUwQjY5ODA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oICovLAog
CQkJCTg1MDg5Q0M3MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50LmlkbCAqLywKKwkJCQk3OUYy
RjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgKi8sCisJCQkJNzlG
MkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCAqLywKKwkJCQk3OUYy
RjVBMDEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5pZGwgKi8sCiAJCQkJQTgx
ODcyMTQwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuY3BwICovLAogCQkJCUE4MTg3
MjExMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggKi8sCiAJCQkJQThDNEE3Rjgw
OUQ1NjMyNzAwMDNBQzhEIC8qIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmNwcCAqLywK
QEAgLTE1ODM1LDYgKzE1ODQ5LDcgQEAKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyog
Q29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTYwRTZFMURBNzAwQkY2MDg4IC8q
IENvbXBvc2l0ZUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlEREQwOTlFNjQ5
MjAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
OUYyRjVBMjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwQjM2QTUwQ0QzQzY3QzAwQUM3RUI1IC8qIENvbnNvbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxRjA2MThFMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNzAwMiw2ICsxNzAxNyw3IEBACiAJCQkJNTFFQzkyNkEwQ0U5MERE
NDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTM0MTdDOTBDRUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5MzdDMEI3M0MwMEEwMDNFRDg5MCAvKiBK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlBQzkyMTkxMDk5
NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFODJGOTAwQ0FBRkE5RDAwMjIzN0FFIC8qIEpTRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNzdEMTZBMEZGMTlGNTYwMDcwODg3QiAvKiBKU0RhdGFHcmlkQ29sdW1uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzc3RDE2QzBGRjE5RjU2MDA3MDg4N0IgLyogSlNEYXRhR3JpZENvbHVt
bkxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTg0NjYsNiArMTg0ODIsNyBAQAogCQkJCTM3QzIz
ODIyMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNTBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRl
QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RERDMDk5RTY0OTIwMDU2RTU4
MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OUYyRjVB
MTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzBCMzZBNDBDRDNDNjdDMDBBQzdFQjUgLyogQ29uc29sZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MUYwNjE4RjBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMUYwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTEzNCw2ICsxOTE1MSw3IEBACiAJCQkJQkNBODNF
NEYwRDdDRTFFOTAwMzQyMUE4IC8qIEpTQ2xpcGJvYXJkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQTgzRTUyMEQ3Q0UyMDUwMDM0MjFBOCAvKiBKU0NsaXBib2FyZEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5M0Y5QjZFMDBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTc5QUM5MjE4MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0
aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5ODU0M0QwQ0QzRDk4QjAwMDY5QkMx
IC8qIEpTQ29uc29sZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMERGQzg3MDBEQjY4NDFBMDAz
RUFFN0MgLyogSlNDb25zb2xlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNkZENDhE
MEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MDg2MSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDkgKzMwLDExIEBACiAjaW5jbHVkZSAiSlNFdmVudC5oIgogCiAjaW5jbHVkZSAiQ2xpcGJv
YXJkLmgiCisjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiSlNCZWZvcmVMb2FkRXZlbnQuaCIKICNpbmNsdWRlICJKU0NsaXBib2FyZC5o
IgorI2luY2x1ZGUgIkpTQ29tcG9zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkpTRXJyb3JFdmVu
dC5oIgogI2luY2x1ZGUgIkpTS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZUV2
ZW50LmgiCkBAIC0xMDcsNiArMTA5LDggQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYQogICAgICAgICBlbHNlIGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKICAg
ICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgU1ZHWm9vbUV2ZW50LCBldmVudCk7CiAjZW5kaWYKKyAgICAgICAgZWxzZSBpZiAo
ZXZlbnQtPmlzQ29tcG9zaXRpb25FdmVudCgpKQorICAgICAgICAgICAgd3JhcHBlciA9IENSRUFU
RV9ET01fT0JKRUNUX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBDb21wb3NpdGlvbkV2ZW50
LCBldmVudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9N
X09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgVUlFdmVudCwgZXZlbnQpOwogICAg
IH0gZWxzZSBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAkocmV2aXNpb24gNTA4NjEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYx
LDcgQEAKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3Qu
aCIKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKKyNpbmNsdWRlICJDb21wb3NpdGlvbkV2ZW50Lmgi
CiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJD
U1NDaGFyc2V0UnVsZS5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNl
c0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRT
b3VyY2VzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA1MDg2MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYy
LDcgQEAKICNpbmNsdWRlICJiaW5kaW5ncy9WOENsaWVudFJlY3RMaXN0LmNwcCIKICNpbmNsdWRl
ICJiaW5kaW5ncy9WOENsaXBib2FyZC5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhDb21tZW50
LmNwcCIKKyNpbmNsdWRlICJiaW5kaW5ncy9WOENvbXBvc2l0aW9uRXZlbnQuY3BwIgogI2luY2x1
ZGUgImJpbmRpbmdzL1Y4Q29uc29sZS5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhDb3VudGVy
LmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOENTU0NoYXJzZXRSdWxlLmNwcCIKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDUwODYxKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjI0LDYg
KzEyMjQsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252CiAgICAg
ICAgIGVsc2UgaWYgKGV2ZW50LT5pc1NWR1pvb21FdmVudCgpKQogICAgICAgICAgICAgdHlwZSA9
IFY4Q2xhc3NJbmRleDo6U1ZHWk9PTUVWRU5UOwogI2VuZGlmCisgICAgICAgIGVsc2UgaWYgKGV2
ZW50LT5pc0NvbXBvc2l0aW9uRXZlbnQoKSkKKyAgICAgICAgICAgIHR5cGUgPSBWOENsYXNzSW5k
ZXg6OkNPTVBPU0lUSU9ORVZFTlQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHR5cGUgPSBW
OENsYXNzSW5kZXg6OlVJRVZFTlQ7CiAgICAgfSBlbHNlIGlmIChldmVudC0+aXNNdXRhdGlvbkV2
ZW50KCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAJKHJldmlzaW9uIDUwODYxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIlY4Q2xpZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJWOENsaXBi
b2FyZC5oIgogI2luY2x1ZGUgIlY4Q29tbWVudC5oIgorI2luY2x1ZGUgIlY4Q29tcG9zaXRpb25F
dmVudC5oIgogI2luY2x1ZGUgIlY4Q29uc29sZS5oIgogI2luY2x1ZGUgIlY4Q291bnRlci5oIgog
I2luY2x1ZGUgIlY4Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4
LmgJKHJldmlzaW9uIDUwODYxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsCiAgICAgVihDTElFTlRSRUNUTElTVCwgQ2xpZW50UmVjdExpc3QpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihDTElQQk9BUkQsIENsaXBi
b2FyZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
VihDT05TT0xFLCBDb25zb2xlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgVihDT01QT1NJVElPTkVWRU5ULCBDb21wb3NpdGlvbkV2ZW50KSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihDT1VOVEVSLCBDb3VudGVyKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihD
U1NDSEFSU0VUUlVMRSwgQ1NTQ2hhcnNldFJ1bGUpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgVihDU1NGT05URkFDRVJVTEUsIENTU0ZvbnRGYWNlUnVsZSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgorCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0
aW9uRXZlbnQoKQoreworfQorCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNv
bnN0IFN0cmluZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgdmlldywg
MCkKKyAgICAsIG1fZGF0YShkYXRhKQoreworfQorCitDb21wb3NpdGlvbkV2ZW50Ojp+Q29tcG9z
aXRpb25FdmVudCgpCit7Cit9CisKK3ZvaWQgQ29tcG9zaXRpb25FdmVudDo6aW5pdENvbXBvc2l0
aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhKQoreworICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlu
aXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7CisKKyAgICBt
X2RhdGEgPSBkYXRhOworfQorCitib29sIENvbXBvc2l0aW9uRXZlbnQ6OmlzQ29tcG9zaXRpb25F
dmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2RvbS9Db21wb3NpdGlvbkV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKgorICovCisKKyNpZm5kZWYgQ29tcG9zaXRpb25FdmVudF9oCisjZGVmaW5lIENvbXBvc2l0
aW9uRXZlbnRfaAorCisjaW5jbHVkZSAiVUlFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyAgICBjbGFzcyBDb21wb3NpdGlvbkV2ZW50IDogcHVibGljIFVJRXZlbnQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRl
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb21wb3NpdGlv
bkV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21wb3NpdGlv
bkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPEFic3Ry
YWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQorICAgICAgICB7CisgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDb21wb3NpdGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsK
KyAgICAgICAgfQorICAgICAgICB2aXJ0dWFsIH5Db21wb3NpdGlvbkV2ZW50KCk7CisgICAgCisg
ICAgICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmll
dz4sIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgCisgICAgICAgIFN0cmluZyBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIGlzQ29tcG9zaXRp
b25FdmVudCgpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ29tcG9zaXRpb25FdmVu
dCgpOworICAgICAgICBDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
UGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisKKyAg
ICAgICAgU3RyaW5nIG1fZGF0YTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBDb21wb3NpdGlvbkV2ZW50X2gKSW5kZXg6IFdlYkNvcmUvZG9tL0NvbXBvc2l0
aW9uRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQu
aWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGV2ZW50cyB7CisK
KyAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzOgorICAgIGludGVyZmFjZSBbCisgICAg
ICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIENvbXBvc2l0aW9uRXZlbnQgOiBVSUV2ZW50
IHsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRhdGE7CisKKyAgICAg
ICAgdm9pZCBpbml0Q29tcG9zaXRpb25FdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFy
ZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NV2luZG93IHZpZXdB
cmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBkYXRh
QXJnKTsKKworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDUwODYxKQorKysgV2ViQ29y
ZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwxMSBAQCBib29sIEV2
ZW50Ojppc1RleHRFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEV2
ZW50Ojppc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KwogYm9vbCBFdmVudDo6aXNEcmFnRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZl
bnQuaAkocmV2aXNpb24gNTA4NjEpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNNdXRhdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0tleWJvYXJkRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dEV2ZW50
KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0aW9uRXZlbnQoKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBib29sIGlzRHJhZ0V2ZW50KCkgY29uc3Q7IC8vIGEgc3Vic2V0
IG9mIG1vdXNlIGV2ZW50cwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDbGlwYm9hcmRFdmVudCgp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKSW5k
ZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgJKHJldmlzaW9uIDUwODYxKQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBtYWNybyhjaGVja2luZykgXAogICAgIG1hY3JvKGNsaWNrKSBcCiAgICAgbWFjcm8oY2xvc2Up
IFwKKyAgICBtYWNybyhjb21wb3NpdGlvbmVuZCkgXAorICAgIG1hY3JvKGNvbXBvc2l0aW9uc3Rh
cnQpIFwKKyAgICBtYWNybyhjb21wb3NpdGlvbnVwZGF0ZSkgXAogICAgIG1hY3JvKGNvbm5lY3Qp
IFwKICAgICBtYWNybyhjb250ZXh0bWVudSkgXAogICAgIG1hY3JvKGNvcHkpIFwKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCShyZXZpc2lvbiA1MDg2MSkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgogI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVy
TmFtZXMuaCIKKyNpbmNsdWRlICJDb21wb3NpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiQ3JlYXRl
TGlua0NvbW1hbmQuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIgpAQCAtMTM3MCw2ICsxMzcx
LDE2IEBAIHZvaWQgRWRpdG9yOjpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKKyAgICAvLyBEaXNwYXRjaCBhIGNvbXBvc2l0aW9uZW5kIGV2
ZW50IHRvIHRoZSBmb2N1c2VkIG5vZGUuCisgICAgLy8gV2Ugc2hvdWxkIHNlbmQgdGhpcyBldmVu
dCBiZWZvcmUgc2VuZGluZyBhIFRleHRFdmVudCBhcyB3cml0dGVuIGluIFNlY3Rpb24gNi4yLjIg
YW5kIDYuMi4zIG9mCisgICAgLy8gdGhlIERPTSBFdmVudCBzcGVjaWZpY2F0aW9uLgorICAgIE5v
ZGUqIHRhcmdldCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CisgICAgaWYg
KHRhcmdldCkgeworICAgICAgICBSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gZXZlbnQgPSBDb21w
b3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIG1f
ZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOworICAgIH0KKwogICAg
IC8vIElmIHRleHQgaXMgZW1wdHksIHRoZW4gZGVsZXRlIHRoZSBvbGQgY29tcG9zaXRpb24gaGVy
ZS4gIElmIHRleHQgaXMgbm9uLWVtcHR5LCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQKICAgICAv
LyB3aWxsIGRlbGV0ZSB0aGUgb2xkIGNvbXBvc2l0aW9uIHdpdGggYW4gb3B0aW1pemVkIHJlcGxh
Y2Ugb3BlcmF0aW9uLgogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKQEAgLTEzOTYsNyArMTQwNywz
OCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nCiAgICAgICAgIHNl
dElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKKworICAgIE5vZGUqIHRhcmdldCA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PmZvY3VzZWROb2RlKCk7CisgICAgaWYgKHRhcmdldCkgeworICAgICAgICAvLyBEaXNwYXRjaCBh
biBhcHByb3ByaWF0ZSBjb21wb3NpdGlvbiBldmVudCB0byB0aGUgZm9jdXNlZCBub2RlLgorICAg
ICAgICAvLyBXZSBjaGVjayB0aGUgY29tcG9zaXRpb24gc3RhdHVzIGFuZCBjaG9vc2UgYW4gYXBw
cm9wcmlhdGUgY29tcG9zaXRpb24gZXZlbnQgc2luY2UgdGhpcworICAgICAgICAvLyBmdW5jdGlv
biBpcyB1c2VkIGZvciB0aHJlZSBwdXJwb3NlczoKKyAgICAgICAgLy8gMS4gU3RhcnRpbmcgYSBu
ZXcgY29tcG9zaXRpb24uCisgICAgICAgIC8vICAgIFNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2
ZW50IHdoZW4gdGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGNvbXBvc2l0aW9uIG5vZGUsIGku
ZS4KKyAgICAgICAgLy8gICAgbV9jb21wb3NpdGlvbk5vZGUgPT0gMCAmJiAhdGV4dC5pc0VtcHR5
KCkuCisgICAgICAgIC8vIDIuIFVwZGF0aW5nIHRoZSBleGlzdGluZyBjb21wb3NpdGlvbiBub2Rl
LgorICAgICAgICAvLyAgICBTZW5kIGEgY29tcG9zaXRpb251cGRhdGUgZXZlbnQgd2hlbiB0aGlz
IGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIGV4aXN0aW5nIGNvbXBvc2l0aW9uCisgICAgICAgIC8vICAg
IG5vZGUsIGkuZS4gbV9jb21wb3NpdGlvbk5vZGUgIT0gMCAmJiAhdGV4dC5pc0VtcHR5KCkuCisg
ICAgICAgIC8vIDMuIENhbmNlbGluZyB0aGUgb25nb2luZyBjb21wb3NpdGlvbi4KKyAgICAgICAg
Ly8gICAgU2VuZCBhIGNvbXBvc2l0aW9uZW5kIGV2ZW50IHdoZW4gZnVuY3Rpb24gZGVsZXRlcyB0
aGUgZXhpc3RpbmcgY29tcG9zaXRpb24gbm9kZSwgaS5lLgorICAgICAgICAvLyAgICBtX2NvbXBv
c2l0aW9uTm9kZSAhPSAwICYmIHRlc3QuaXNFbXB0eSgpLgorICAgICAgICBSZWZQdHI8Q29tcG9z
aXRpb25FdmVudD4gZXZlbnQ7CisgICAgICAgIGlmICghbV9jb21wb3NpdGlvbk5vZGUpIHsKKyAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBzZW5kIGEgY29tcG9zaXRpb25zdGFydCBldmVudCBvbmx5
IHdoZW4gdGhlIGdpdmVuIHRleHQgaXMgbm90IGVtcHR5IGJlY2F1c2UgdGhpcworICAgICAgICAg
ICAgLy8gZnVuY3Rpb24gZG9lc24ndCBjcmVhdGUgYSBjb21wb3NpdGlvbiBub2RlIHdoZW4gdGhl
IHRleHQgaXMgZW1wdHkuCisgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
b21wb3NpdGlvbnN0YXJ0RXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0
ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAg
aWYgKGV2ZW50LmdldCgpKQorICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50
LCBlYyk7CisgICAgfQorCiAgICAgLy8gSWYgdGV4dCBpcyBlbXB0eSwgdGhlbiBkZWxldGUgdGhl
IG9sZCBjb21wb3NpdGlvbiBoZXJlLiAgSWYgdGV4dCBpcyBub24tZW1wdHksIEluc2VydFRleHRD
b21tYW5kOjppbnB1dAogICAgIC8vIHdpbGwgZGVsZXRlIHRoZSBvbGQgY29tcG9zaXRpb24gd2l0
aCBhbiBvcHRpbWl6ZWQgcmVwbGFjZSBvcGVyYXRpb24uCiAgICAgaWYgKHRleHQuaXNFbXB0eSgp
KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTA4NjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0xMS0xMSAgSGlyb25vcmkgQm9ubyAg
PGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgY29tcG9zaXRpb24gZXZlbnRzIGludHJvZHVjZWQgaW4g
RE9NIExldmVsIDMuCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBuZXcgSURMIHdoaWNoIGRl
ZmluZXMgdGhlIGNvbXBvc2l0aW9uIGV2ZW50cywgYWRkcyBhIGNsYXNzIHdoaWNoCisgICAgICAg
IGltcGxlbWVudHMgdGhlIGNvbXBvc2l0aW9uIGV2ZW50cywgYW5kIHNlbmRzIHRoZSBjb21wb3Np
dGlvbiBldmVudHMgYWNjb3JkaW5nIHRvCisgICAgICAgIHRoZSBzcGVjaWZpY2F0aW9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzMTAKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0w
MDEuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IFNraXAgdGhp
cyB0ZXN0IGJlY2F1c2UgVGV4dElucHV0Q29udHJvbGxlciBpcyBub3QgaW1wbGVtZW50ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
d2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDA5LTExLTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHV0IHRlc3RzIGludG8gc2tpcGxpc3QgYWRkZWQg
aW4gcjUwODMwIGFuZCByNTA4MzkgYmVjYXVzZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21w
b3NpdGlvbi1ldmVudHMtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgaW5wdXQtbWV0aG9kIGZ1bmN0aW9ucyBzZW5k
cyBDb21wb3NpdGlvbiBFdmVudHMgYW5kIFRleHQgRXZlbnRzIGludHJvZHVjZWQgaW4gRE9NIExl
dmVsIDMuCisKK1RvIHRlc3QgbWFudWFsbHksIGVuYWJsZSBhbiBJTUUsIGlucHV0IENKSyBjaGFy
YWN0ZXJzLCBhbmQgc2VlIHRoaXMgcGFnZSBkb2Vzbid0IHNob3cgJ0ZBSUxFRCcgbGluZXMuCisK
KworU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbnN0YXJ0IC0gIjEiCitTVUNDRVNTOiBJTlBV
VCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjIiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9u
dXBkYXRlIC0gIjMiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9uZW5kIC0gIjQiCitTVUND
RVNTOiBJTlBVVCAtIHRleHRJbnB1dCAtICI0IgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlv
bnN0YXJ0IC0gIjUiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjYiCitT
VUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjciCitTVUNDRVNTOiBJTlBVVCAt
IGNvbXBvc2l0aW9uZW5kIC0gIiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1j
b21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90
aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgaW5wdXQt
bWV0aG9kIGZ1bmN0aW9ucyBzZW5kcyBDb21wb3NpdGlvbiBFdmVudHMgYW5kIFRleHQgRXZlbnRz
IGludHJvZHVjZWQgaW4gRE9NIExldmVsIDMuPC9wPgorPHA+VG8gdGVzdCBtYW51YWxseSwgZW5h
YmxlIGFuIElNRSwgaW5wdXQgQ0pLIGNoYXJhY3RlcnMsIGFuZCBzZWUgdGhpcyBwYWdlIGRvZXNu
J3Qgc2hvdyAnRkFJTEVEJyBsaW5lcy48L3A+Cis8aW5wdXQgaWQ9InRlc3QiIHR5cGU9InRleHQi
Lz4KKzx1bCBpZD0iY29uc29sZSI+PC91bD4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2coc3RyKSB7CisgICB2YXIgbGkg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOworICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKwor
ZnVuY3Rpb24gbG9nRXZlbnQoZSkgeworICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKKyAgICB2
YXIgdHlwZSA9IGUudHlwZTsKKyAgICBpZiAoZS50eXBlID09ICdjb21wb3NpdGlvbnN0YXJ0JyB8
fCBlLnR5cGUgPT0gJ2NvbXBvc2l0aW9udXBkYXRlJyB8fCBlLnR5cGUgPT0gJ2NvbXBvc2l0aW9u
ZW5kJyB8fCBlLnR5cGUgPT0gJ3RleHRJbnB1dCcpCisgICAgICAgIGxvZygnU1VDQ0VTUzogJyAr
IHRhcmdldC50YWdOYW1lICsgJyAtICcgKyBlLnR5cGUgKyAnIC0gIicgKyBlLmRhdGEgKyAnIicp
OworICAgIGVsc2UKKyAgICAgICAgbG9nKCdGQUlMRUQ6ICcgKyB0YXJnZXQudGFnTmFtZSArICcg
LSAnICsgZS50eXBlICsgJyAtICInICsgZS5kYXRhICsgJyInKTsKK30KKwordmFyIHRlc3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwordGVzdC5mb2N1cygpOworCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCisgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVycyB0byB0aGUgPGlucHV0PiBu
b2RlLgorICAgIHRlc3QuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsIGxvZ0V2
ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnVwZGF0
ZSIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3Np
dGlvbmVuZCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCJ0
ZXh0SW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworCisgICAgLy8gQ2FzZSAxOiBDb21wb3NlIGEg
dGV4dCBhbmQgY29tbWl0IGl0LgorICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4
dCgnMScsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnMics
IDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnMycsIDAsIDEp
OworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgnNCcpOworCisgICAgLy8gQ2Fz
ZSAyOiBDb21wb3NlIGEgdGV4dCBidXQgY2FuY2VsIGl0LgorICAgIHRleHRJbnB1dENvbnRyb2xs
ZXIuc2V0TWFya2VkVGV4dCgnNScsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0
TWFya2VkVGV4dCgnNicsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2Vk
VGV4dCgnNycsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgn
JywgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA1MDg2MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NTY0LDYgKzU1NjQsNyBAQCBmYXN0L2xv
YWRlci9vcGFxdWUtYmFzZS11cmwuaHRtbCAKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWlt
ZS1jb21wbGV0ZWQuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQu
aHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAor
ZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogCiAjIE5vIFVzZXIg
U2NyaXB0cwogdXNlcnNjcmlwdHMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNp
b24gNTA4NjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9u
Lmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKIGZhc3Qv
Zm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQuaHRtbAogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAorZmFzdC9ldmVudHMvaW1lLWNvbXBv
c2l0aW9uLWV2ZW50cy0wMDEuaHRtbAogCiAjIE1pc3NpbmcgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCkKIGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJh
Y2stY2FjaGVkLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA1
MDg2MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC02MzEsNiArNjMxLDcgQEAgaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtaW1nLXRlc3Qu
aHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZC5odG1sCiBmYXN0
L2Zvcm1zL2lucHV0LW1heGxlbmd0aC1pbWUtcHJlZWRpdC5odG1sCiBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCitmYXN0L2V2ZW50cy9pbWUtY29tcG9z
aXRpb24tZXZlbnRzLTAwMS5odG1sCiAKICMgRmFpbGluZyBtZWRpYSB0ZXN0cyBvbiB3aW5kb3dz
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzI5MDQ3PgogbWVkaWEvYXVkaW8tZGVsZXRlLXdoaWxlLXN0
ZXAtYnV0dG9uLWNsaWNrZWQuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>