<?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>51678</bug_id>
          
          <creation_ts>2010-12-28 08:20:23 -0800</creation_ts>
          <short_desc>Support for OES_standard_derivatives</short_desc>
          <delta_ts>2011-01-24 01:01:25 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://marcinignac.com/projects/cindermedusae/webgl/index.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="Marcin Ignac">vorgitsu</reporter>
          <assigned_to name="Ben Vanik">ben.vanik</assigned_to>
          <cc>ben.vanik</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>327237</commentid>
    <comment_count>0</comment_count>
    <who name="Marcin Ignac">vorgitsu</who>
    <bug_when>2010-12-28 08:20:23 -0800</bug_when>
    <thetext>I was trying to implement hatching shader in WebGL and discovered that OES_standard_derivatives extension is not supported yet and functions like dFdx()  or dFdy() can&apos;t be used. I was surprised because it is supported by OpenGL ES 2.0. From what I see in the source of http://www.khronos.org/registry/webgl/doc/spec/extensions/ it is one of the planned extensions. Any timeline for supporting it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336852</commentid>
    <comment_count>1</comment_count>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-01-19 15:05:59 -0800</bug_when>
    <thetext>Working on a patch for this that&apos;ll enable the extension in both WebKit and Chromium.

Extension spec:
http://www.khronos.org/registry/webgl/doc/spec/extensions/OES_standard_derivatives/

Conformance test:
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/oes-standard-derivatives.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337047</commentid>
    <comment_count>2</comment_count>
      <attachid>79541</attachid>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-01-19 19:12:00 -0800</bug_when>
    <thetext>Created attachment 79541
Implementation of OES_standard_derivatives

Implementation of the OES_standard_derivatives WebGL extension.

Changes are modeled off of the existing OESTextureFloat extension. New files, extension retrieval, etc all match the existing code.

Changed ANGLEWebKitBridge to allow for multiple sets of the ANGLE shader compiler options. This supports the enabling of the standard derivatives flag when the extension is enabled. Refactored the cleanup code to make the destruction of the compilers (if they had been created) cleaner.

Tested with the WebGL conformance test:
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/oes-standard-derivatives.html
Passes on WebKit/OSX, Chromium/OSX, and Chromium/Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337516</commentid>
    <comment_count>3</comment_count>
      <attachid>79541</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-20 12:38:44 -0800</bug_when>
    <thetext>Comment on attachment 79541
Implementation of OES_standard_derivatives

This looks perfect. Thanks for implementing it. The only questionable part is making Extensions3DOpenGL a friend of GraphicsContext3D on the Mac, but I actually think that&apos;s cleaner than providing an accessor method for the ANGLEWebKitBridge, which is a class we have been thinking about throwing out entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337521</commentid>
    <comment_count>4</comment_count>
      <attachid>79541</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-20 12:43:02 -0800</bug_when>
    <thetext>Comment on attachment 79541
Implementation of OES_standard_derivatives

Rejecting attachment 79541 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;ap...&quot; exit_code: 2

Last 500 characters of output:
Bridge.h
patching file Source/WebCore/platform/graphics/Extensions3D.h
patching file Source/WebCore/platform/graphics/GraphicsContext3D.h
patching file Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp
patching file Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h
patching file Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp

Failed to run &quot;[u&apos;/Projects/CommitQueue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Kenneth Russell&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7505215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337525</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-20 12:46:21 -0800</bug_when>
    <thetext>Darn it. I&apos;ll try to land this by hand later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337584</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-01-20 13:57:15 -0800</bug_when>
    <thetext>RE the friending, I thought the same thing but saw a similar pattern used in Extensions3DChromium with GraphicsContext3DInternal - when modifying Extensions3DOpenGL to take the a weak pointer for the same purposes I figured I&apos;d reuse that.
Now that everyone is friending things maybe there&apos;s some refactoring that can be done to make things cleaner, but I figured I&apos;d avoid changing too much :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337625</commentid>
    <comment_count>7</comment_count>
      <attachid>79541</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-20 14:52:17 -0800</bug_when>
    <thetext>Comment on attachment 79541
Implementation of OES_standard_derivatives

View in context: https://bugs.webkit.org/attachment.cgi?id=79541&amp;action=review

If you haven&apos;t landed it already, there are two style violations.

&gt; Source/WebCore/html/canvas/OESStandardDerivatives.cpp:34
&gt; +OESStandardDerivatives::OESStandardDerivatives() : WebGLExtension()

This is against webkit style

&gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp:44
&gt; +      m_context(context)

This is against webkit style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337768</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-20 17:54:13 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 79541 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79541&amp;action=review
&gt; 
&gt; If you haven&apos;t landed it already, there are two style violations.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/OESStandardDerivatives.cpp:34
&gt; &gt; +OESStandardDerivatives::OESStandardDerivatives() : WebGLExtension()
&gt; 
&gt; This is against webkit style

I don&apos;t see a firm rule about one-line constructor declarations in the WebKit style guide. Since the style checker didn&apos;t flag this I think it&apos;s OK.

&gt; &gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp:44
&gt; &gt; +      m_context(context)
&gt; 
&gt; This is against webkit style.

You&apos;re right, generally the commas go first. I&apos;ll fix this in the process of generating a new patch to try to land via the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337772</commentid>
    <comment_count>9</comment_count>
      <attachid>79674</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-20 18:08:47 -0800</bug_when>
    <thetext>Created attachment 79674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337773</commentid>
    <comment_count>10</comment_count>
      <attachid>79674</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-20 18:09:23 -0800</bug_when>
    <thetext>Comment on attachment 79674
Patch

Merged with top of tree. Attempting to re-land via commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337785</commentid>
    <comment_count>11</comment_count>
      <attachid>79674</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-20 18:36:01 -0800</bug_when>
    <thetext>Comment on attachment 79674
Patch

Clearing flags on attachment: 79674

Committed r76324: &lt;http://trac.webkit.org/changeset/76324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337786</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-20 18:36:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338833</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-23 21:53:26 -0800</bug_when>
    <thetext>This broke Mac builds because it added an idl file to the project Resources. How did it get through the commit queue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338871</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-24 00:07:49 -0800</bug_when>
    <thetext>Not sure.  Does the check-for-resources script catch things on the first build or only a re-build?

The commit-queue nodes all run on Snow Leopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338888</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-24 01:01:25 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; This broke Mac builds because it added an idl file to the project Resources.

Sorry about the build breakage; how was it reproduced? Has it been cleaned up at this point, or does something more need to be done?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79541</attachid>
            <date>2011-01-19 19:12:00 -0800</date>
            <delta_ts>2011-01-20 18:08:44 -0800</delta_ts>
            <desc>Implementation of OES_standard_derivatives</desc>
            <filename>OES_standard_derivatives.diff</filename>
            <type>text/plain</type>
            <size>35860</size>
            <attacher name="Ben Vanik">ben.vanik</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MTkyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDEtMTkgIEJlbiBWYW5p
ayAgPGJlbi52YW5pa0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgdGhlIE9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyBXZWJHTCBleHRlbnNpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MTY3OAorCisgICAgICAgIENoYW5nZXMgYXJlIG1vZGVsZWQgb2Zm
IG9mIHRoZSBleGlzdGluZyBPRVNUZXh0dXJlRmxvYXQgZXh0ZW5zaW9uLiBOZXcgZmlsZXMsCisg
ICAgICAgIGV4dGVuc2lvbiByZXRyaWV2YWwsIGV0YyBhbGwgbWF0Y2ggdGhlIGV4aXN0aW5nIGNv
ZGUuCisKKyAgICAgICAgQ2hhbmdlZCBBTkdMRVdlYktpdEJyaWRnZSB0byBhbGxvdyBmb3IgbXVs
dGlwbGUgc2V0cyBvZiB0aGUgQU5HTEUgc2hhZGVyIGNvbXBpbGVyCisgICAgICAgIG9wdGlvbnMu
IFRoaXMgc3VwcG9ydHMgdGhlIGVuYWJsaW5nIG9mIHRoZSBzdGFuZGFyZCBkZXJpdmF0aXZlcyBm
bGFnIHdoZW4gdGhlCisgICAgICAgIGV4dGVuc2lvbiBpcyBlbmFibGVkLiBSZWZhY3RvcmVkIHRo
ZSBjbGVhbnVwIGNvZGUgdG8gbWFrZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlCisgICAgICAgIGNv
bXBpbGVycyAoaWYgdGhleSBoYWQgYmVlbiBjcmVhdGVkKSBjbGVhbmVyLgorCisgICAgICAgIFRl
c3RlZCB3aXRoIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0OgorICAgICAgICBodHRwczovL2N2
cy5raHJvbm9zLm9yZy9zdm4vcmVwb3MvcmVnaXN0cnkvdHJ1bmsvcHVibGljL3dlYmdsL3Nkay90
ZXN0cy9jb25mb3JtYW5jZS9vZXMtc3RhbmRhcmQtZGVyaXZhdGl2ZXMuaHRtbAorICAgICAgICBQ
YXNzZXMgb24gV2ViS2l0L09TWCwgQ2hyb21pdW0vT1NYLCBhbmQgQ2hyb21pdW0vV2luZG93cy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6T0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJpdmF0aXZlcyk6
CisgICAgICAgIChXZWJDb3JlOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzOjp+T0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzOjpn
ZXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6OmNyZWF0
ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOiBFbmFibGUgYW5kIHJldHVybiB0
aGUgbmV3IGV4dGVuc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0UGFyYW1ldGVyKTogU3VwcG9ydCBleHRlbnNpb24gZW51bSB3aGVuIGVuYWJsZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVu
c2lvbnMpOiAKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGludCk6
IFZhbGlkYXRlIGV4dGVuc2lvbiBlbnVtIHdoZW4gZW5hYmxlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TnVtYmVyT2ZFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uTnVtYmVyKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBTkdMRVdlYktpdEJyaWRnZTo6fkFOR0xFV2ViS2l0QnJpZGdlKTogQ2xlYW5lZCB1cCBjb21w
aWxlciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlkZ2U6OmNsZWFu
dXBDb21waWxlcnMpOiBEZXN0cnVjdCBjb21waWxlcnMuCisgICAgICAgIChXZWJDb3JlOjpBTkdM
RVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKTogQ2xlYW51cCBleGlzdGluZyBjb21waWxlcnMg
d2hlbiBjaGFuZ2luZworICAgICAgICBBTkdMRSBzZXR0aW5ncy4KKyAgICAgICAgKFdlYkNvcmU6
OkFOR0xFV2ViS2l0QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvdXJjZSk6IENsZWFuZWQgdXAgY29t
cGlsZXIgY2xlYW51cCBvbiBlcnJvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5oOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlkZ2U6Omdl
dFJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6
IEFkZGVkIGVudW1lcmF0aW9uIGZvciB0aGUgZXh0ZW5zaW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IGx1bWJpbmcgZm9yIEdyYXBoaWNzQ29udGV4
dDNELgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjpFeHRlbnNpb25z
M0RPcGVuR0wpOiBQbHVtYmVkIHRocm91Z2ggYSBwb2ludGVyIHRvIHRoZQorICAgICAgICBHcmFw
aGljc0NvbnRleHQzRCB0byBoYW5kbGUgcmVzZXR0aW5nIHRoZSBzaGFkZXIgY29tcGlsZXJzLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjpzdXBwb3J0cyk6IERlc2t0b3Ag
R0wgYWx3YXlzIHN1cHBvcnRzIHRoaXMgZXh0ZW5zaW9uLAorICAgICAgICBzbyBhbHdheXMgcmV0
dXJuIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0w6OmVuc3VyZUVu
YWJsZWQpOiBSZXNldCBzaGFkZXIgY29tcGlsZXJzIGFzIHJlcXVpcmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaDogUGx1bWJpbmcgZm9y
IEdyYXBoaWNzQ29udGV4dDNELgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6IFBsdW1iaW5nIGZvciBHcmFwaGljc0NvbnRleHQzRCB0
bworICAgICAgICBFeHRlbnNpb25zM0RPcGVuR0wuCisKIDIwMTEtMDEtMTMgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbmll
bCBCYXRlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3NjE4MikKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkx
LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5p
ZGwKICAgICBodG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL0ludDhB
cnJheS5pZGwKKyAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAogICAg
IGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MTZB
cnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNzYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNiArMzExLDcgQEAgRE9N
X0NMQVNTRVMgPSBcCiAgICAgTm90YXRpb24gXAogICAgIE5vdGlmaWNhdGlvbiBcCiAgICAgTm90
aWZpY2F0aW9uQ2VudGVyIFwKKyAgICBPRVNTdGFuZGFyZERlcml2YXRpdmVzIFwKICAgICBPRVNU
ZXh0dXJlRmxvYXQgXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAgIFBhZ2VUcmFuc2l0aW9uRXZl
bnQgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc2MTgyKQorKysgU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4MCw2ICs0ODAsOCBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNO
b3RpZmljYXRpb25DZW50ZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05vdGlmaWNh
dGlvbi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb24uaCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTT0VTVGV4dHVyZUZsb2F0LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU09FU1RleHR1cmVGbG9hdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTT3ZlcmZsb3dFdmVudC5jcHAgXApAQCAtMTU4MCw2ICsxNTgyLDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVHlw
ZWRBcnJheUJhc2UuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3NjE4MikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIx
NCw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9JbnQ4QXJyYXkuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNTdGFuZGFy
ZERlcml2YXRpdmVzLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsJywKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwnLApAQCAtMTkxNyw2ICsxOTE4
LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuY3BwJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
SW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNT
dGFuZGFyZERlcml2YXRpdmVzLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJl
RmxvYXQuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCcs
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVHlwZWRBcnJheUJhc2UuaCcsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnByaQkocmV2aXNpb24gNzYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQko
d29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAg
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaWRsIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsIFwKKyAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCBc
CiAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbCBcCiAgICAgaHRtbC9jYW52YXMv
V2ViR0xBY3RpdmVJbmZvLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaWRsIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA3NjE4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zODEwLDYgKzM4MTAsNyBAQCBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfM0RfQ0FOVkFTPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJidWZmZXIuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaCBcCisgICAgICAgIGh0bWwv
Y2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIFwKQEAgLTM4MzQsNiAr
MzgzNSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV8zRF9DQU5WQVM9MSkgewogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAgXAogICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuY3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5j
cHAgXAogICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIFwKICAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
VW5pZm9ybUxvY2F0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NjE4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjc2MCw2ICsyNzYwLDExIEBACiAJCThGNjc1NjFCMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVu
dFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
RjY3NTYxOTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovOyB9OwogCQk4RjY3NTYx
QzEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3NTYxQTEyODhCMTdCMDA0N0FDQTMgLyogRXZl
bnRRdWV1ZS5jcHAgKi87IH07CiAJCThGQUM3NzREMTE5ODcyQ0IwMDE1QUU5NCAvKiBKU01haW5U
aHJlYWRFeGVjU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5jcHAgKi87IH07CisJCTkwMDE3NzQwMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERl
cml2YXRpdmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkwMDE3NzNEMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNw
cCAqLzsgfTsKKwkJOTAwMTc3NDExMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZh
dGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkw
MDE3NzNFMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07
CisJCTkwMDE3NzQyMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlk
bCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3
M0YxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsICovOyB9Owor
CQk5MDAxNzg4MDEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3ODdF
MTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwICovOyB9Owor
CQk5MDAxNzg4MTEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzg3RjEy
RTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CiAJCTkz
MDJCMEJEMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5jcHAgKi87IH07CiAJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdl
R3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUg
LyogVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MTQyLDYgKzkxNDcsMTEgQEAKIAkJOEY2
NzU2MUExMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThGOTM0RDg0MTE4OUYxRUUwMDUw
OEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTAwMTc3M0QxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5jcHA7IHBhdGggPSBjYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwMDE3NzNFMTJFMDM0NzgwMDY0
ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaDsgcGF0aCA9IGNhbnZhcy9PRVNTdGFu
ZGFyZERlcml2YXRpdmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwMDE3NzNG
MTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDsgcGF0aCA9IGNhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTAwMTc4N0UxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU1N0YW5kYXJkRGVyaXZh
dGl2ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MDAxNzg3RjEyRTAzNzA3
MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzAyQjBCQzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VHcm91cC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQ
YWdlR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUdyb3VwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAv
KiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMyNzksNiArMTMyODksOSBAQAogCQkJCTQ5QzdC
OUFDMTA0MkQzMkUwMDA5RDQ0NyAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQk0OUM3QjlBRDEwNDJE
MzJFMDAwOUQ0NDcgLyogSW50OEFycmF5LmlkbCAqLywKIAkJCQk2RTk2QkIxQTExOTg2RUUxMDA3
RDk0Q0QgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovLAorCQkJCTkwMDE3NzNEMTJFMDM0
NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLywKKwkJCQk5MDAxNzcz
RTEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovLAorCQkJCTkw
MDE3NzNGMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCAqLywK
IAkJCQk2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLywK
IAkJCQk2RUJGMEU0NjEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmggKi8sCiAJ
CQkJNkVCRjBFNDcxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8sCkBA
IC0xNjE3Niw2ICsxNjE4OSw4IEBACiAJCQkJNDlDN0I5ODMxMDQyRDJEMzAwMDlENDQ3IC8qIEpT
SW50OEFycmF5LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFF
cnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJv
ci5oICovLAorCQkJCTkwMDE3ODdFMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuY3BwICovLAorCQkJCTkwMDE3ODdGMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0
YW5kYXJkRGVyaXZhdGl2ZXMuaCAqLywKIAkJCQk2RUJGMEU3NDEyQTk4Njg4MDBEQjE3MDkgLyog
SlNPRVNUZXh0dXJlRmxvYXQuY3BwICovLAogCQkJCTZFQkYwRTc1MTJBOTg2ODgwMERCMTcwOSAv
KiBKU09FU1RleHR1cmVGbG9hdC5oICovLAogCQkJCUJDRUY0NUYzMEU2ODdCNUMwMDFDMTI4NyAv
KiBKU1RleHRNZXRyaWNzLmNwcCAqLywKQEAgLTIyMzc0LDYgKzIyMzg5LDggQEAKIAkJCQk3QTU2
NDBDMDEyREY5RTVFMDBGNDUzNkQgLyogSW5zcGVjdG9yU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTAwMTc3NDExMkUw
MzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTkwMDE3ODgxMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjI0OTYsNiArMjI1MTMsNyBAQAogCQkJCTg1MTM2Q0E4MEFF
RDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTAwMTc3NDIxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0
YW5kYXJkRGVyaXZhdGl2ZXMuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MDY0LDYgKzI1MDgy
LDggQEAKIAkJCQk3QTU2NDBCRjEyREY5RTVFMDBGNDUzNkQgLyogSW5zcGVjdG9yU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTM2NUVF
MTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTAwMTc3NDAxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTAwMTc4ODAxMkUwMzcwNzAwNjQ4NDYyIC8qIEpT
T0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDc2MTgyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1
ZGUgIkpTSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSW1hZ2VEYXRhLmgiCisjaW5j
bHVkZSAiSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiSlNPRVNUZXh0dXJl
RmxvYXQuaCIKICNpbmNsdWRlICJKU1dlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNGbG9hdDMy
QXJyYXkuaCIKQEAgLTUwLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKICNp
bmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIk9FU1RleHR1
cmVGbG9hdC5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiRmxvYXQzMkFy
cmF5LmgiCkBAIC0xNzMsNiArMTc1LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUq
IGV4ZWMsIEpTRAogICAgIHN3aXRjaCAoZXh0ZW5zaW9uLT5nZXROYW1lKCkpIHsKICAgICBjYXNl
IFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRMb3NlQ29udGV4dE5hbWU6CiAgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViS2l0TG9zZUNvbnRleHQqPihl
eHRlbnNpb24pKTsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpPRVNTdGFuZGFyZERlcml2YXRp
dmVzTmFtZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNf
Y2FzdDxPRVNTdGFuZGFyZERlcml2YXRpdmVzKj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJH
TEV4dGVuc2lvbjo6T0VTVGV4dHVyZUZsb2F0TmFtZToKICAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNpb24p
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDc2MTgyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
NyBAQAogI2luY2x1ZGUgIlY4SW50MTZBcnJheS5oIgogI2luY2x1ZGUgIlY4SW50MzJBcnJheS5o
IgogI2luY2x1ZGUgIlY4SW50OEFycmF5LmgiCisjaW5jbHVkZSAiVjhPRVNTdGFuZGFyZERlcml2
YXRpdmVzLmgiCiAjaW5jbHVkZSAiVjhPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCiAjaW5jbHVkZSAiVjhVaW50MTZBcnJheS5oIgpAQCAtMTYwLDYgKzE2MSw5IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdCgKICAgICBjYXNlIFdlYkdMRXh0
ZW5zaW9uOjpXZWJLaXRMb3NlQ29udGV4dE5hbWU6CiAgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9
IHRvVjgoc3RhdGljX2Nhc3Q8V2ViS2l0TG9zZUNvbnRleHQqPihleHRlbnNpb24pKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VTU3RhbmRhcmREZXJpdmF0aXZl
c05hbWU6CisgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8T0VTU3Rh
bmRhcmREZXJpdmF0aXZlcyo+KGV4dGVuc2lvbikpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IFdlYkdMRXh0ZW5zaW9uOjpPRVNUZXh0dXJlRmxvYXROYW1lOgogICAgICAgICBleHRlbnNpb25P
YmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PE9FU1RleHR1cmVGbG9hdCo+KGV4dGVuc2lvbikpOwog
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5k
YXJkRGVyaXZhdGl2ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoM0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK09FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6Ok9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMoKSA6IFdlYkdMRXh0ZW5zaW9uKCkKK3sKK30KKworT0VTU3RhbmRhcmREZXJp
dmF0aXZlczo6fk9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMoKQoreworfQorCitXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBPRVNTdGFuZGFyZERlcml2YXRpdmVzOjpnZXROYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT0VTU3RhbmRhcmREZXJpdmF0aXZlc05hbWU7Cit9CisKK1Bhc3NSZWZQ
dHI8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4gT0VTU3RhbmRhcmREZXJpdmF0aXZlczo6Y3JlYXRl
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoM0RfQ0FOVkFT
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgT0VTU3RhbmRhcmREZXJpdmF0aXZlc19oCisjZGVmaW5lIE9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXNfaAorCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyA6IHB1YmxpYyBX
ZWJHTEV4dGVuc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8T0VTU3RhbmRh
cmREZXJpdmF0aXZlcz4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5PRVNTdGFuZGFyZERlcml2
YXRpdmVzKCk7CisgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBPRVNTdGFuZGFyZERlcml2YXRpdmVzKCk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBPRVNTdGFuZGFyZERlcml2YXRpdmVzX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZh
dGl2ZXMuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
U3RhbmRhcmREZXJpdmF0aXZlcy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD0zRF9DQU5WQVMs
IE9taXRDb25zdHJ1Y3RvciwgRG9udENoZWNrRW51bXNdIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMg
eworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVf
SElOVF9PRVMgPSAweDhCOEI7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAkocmV2aXNpb24gNzYxODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2
ICszNiw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEV4dGVuc2lvbk5hbWUgewogICAgICAgICBXZWJL
aXRMb3NlQ29udGV4dE5hbWUsCiAgICAgICAgIE9FU1RleHR1cmVGbG9hdE5hbWUsCisgICAgICAg
IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXNOYW1lLAogICAgIH07CiAKICAgICB2aXJ0dWFsIH5XZWJH
TEV4dGVuc2lvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA3NjE4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJPRVNTdGFu
ZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTE3NTcsNiArMTc1
OCwxNCBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnCiAgICAgaWYg
KGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobmFtZSwgIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpCisgICAgICAgICYmIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzIikpIHsKKyAgICAgICAgaWYgKCFtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9P
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJp
dmF0aXZlcyA9IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6OmNyZWF0ZSgpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMuZ2V0KCk7CisgICAgfQogICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXQiKQogICAgICAg
ICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJl
X2Zsb2F0IikpIHsKICAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkgewpAQCAtMTc2NCw3
ICsxNzczLDggQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZwogICAg
ICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXQgPSBPRVNUZXh0dXJlRmxvYXQ6OmNyZWF0ZSgpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdC5nZXQoKTsKLSAgICB9
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfbG9zZV9jb250ZXh0Iikp
IHsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfbG9zZV9j
b250ZXh0IikpIHsKICAgICAgICAgaWYgKCFtX3dlYmtpdExvc2VDb250ZXh0KQogICAgICAgICAg
ICAgbV93ZWJraXRMb3NlQ29udGV4dCA9IFdlYktpdExvc2VDb250ZXh0OjpjcmVhdGUodGhpcyk7
CiAgICAgICAgIHJldHVybiBtX3dlYmtpdExvc2VDb250ZXh0LmdldCgpOwpAQCAtMjAwNiw2ICsy
MDE2LDExIEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbygiV2ViR0wgMS4wICgiICsgbV9jb250ZXh0LT5nZXRTdHJp
bmcoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlNJT04pICsgIikiKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpWSUVXUE9SVDoKICAgICAgICAgcmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpGUkFHTUVOVF9TSEFERVJfREVS
SVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCisgICAgICAgIGlm
IChtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpCisgICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWdu
ZWRMb25nUGFyYW1ldGVyKEV4dGVuc2lvbnMzRDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVf
SElOVF9PRVMpOworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOwpAQCAtMjE3Myw2ICsyMTg4LDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZQogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKICAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOworICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsK
ICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfbG9zZV9jb250ZXh0Iik7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTI0MTcsNyArMjQzNCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6aGludChHQzNEZW51CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkdFTkVSQVRFX01JUE1B
UF9ISU5UKSB7CisgICAgYm9vbCBpc1ZhbGlkID0gZmFsc2U7CisgICAgc3dpdGNoICh0YXJnZXQp
IHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpHRU5FUkFURV9NSVBNQVBfSElOVDoKKyAg
ICAgICAgaXNWYWxpZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzogLy8gT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzCisgICAgICAgIGlmIChtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpCisgICAg
ICAgICAgICBpc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICgh
aXNWYWxpZCkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDUz
NiwxMSArNDU2MywxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZVN0YXRl
CiAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE51bWJlck9mRXh0ZW5zaW9ucygpCiB7
Ci0gICAgcmV0dXJuIChtX3dlYmtpdExvc2VDb250ZXh0ID8gMSA6IDApICsgKG1fb2VzVGV4dHVy
ZUZsb2F0ID8gMSA6IDApOworICAgIHJldHVybiAobV9vZXNTdGFuZGFyZERlcml2YXRpdmVzID8g
MSA6IDApICsgKG1fd2Via2l0TG9zZUNvbnRleHQgPyAxIDogMCkgKyAobV9vZXNUZXh0dXJlRmxv
YXQgPyAxIDogMCk7CiB9CiAKIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbk51bWJlcihpbnQgaSkKIHsKKyAgICBpZiAobV9vZXNTdGFuZGFyZERlcml2
YXRpdmVzKSB7CisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIHJldHVybiBtX29lc1N0YW5k
YXJkRGVyaXZhdGl2ZXMuZ2V0KCk7CisgICAgICAgIC0taTsKKyAgICB9CiAgICAgaWYgKG1fd2Vi
a2l0TG9zZUNvbnRleHQpIHsKICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgcmV0dXJuIG1f
d2Via2l0TG9zZUNvbnRleHQuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gNzYxODIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3Mg
SW1hZ2VCdWZmZXI7CiBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRTaXplOworY2xhc3MgT0VT
U3RhbmRhcmREZXJpdmF0aXZlczsKIGNsYXNzIE9FU1RleHR1cmVGbG9hdDsKIAogY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewpAQCAt
NDUyLDYgKzQ1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVj
dHMuCiAgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7CisgICAg
UmVmUHRyPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+IG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlczsK
ICAgICBSZWZQdHI8V2ViS2l0TG9zZUNvbnRleHQ+IG1fd2Via2l0TG9zZUNvbnRleHQ7CiAKICAg
ICAvLyBIZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNw
cAkocmV2aXNpb24gNzYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9B
TkdMRVdlYktpdEJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0MywyNyBAQCBB
TkdMRVdlYktpdEJyaWRnZTo6QU5HTEVXZWJLaXRCcmlkZ2UoKSA6CiAKIEFOR0xFV2ViS2l0QnJp
ZGdlOjp+QU5HTEVXZWJLaXRCcmlkZ2UoKQogeworICAgIGNsZWFudXBDb21waWxlcnMoKTsKK30K
Kwordm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6Y2xlYW51cENvbXBpbGVycygpCit7CiAgICAgaWYg
KG1fZnJhZ21lbnRDb21waWxlcikKICAgICAgICAgU2hEZXN0cnVjdChtX2ZyYWdtZW50Q29tcGls
ZXIpOwogICAgIG1fZnJhZ21lbnRDb21waWxlciA9IDA7CiAgICAgaWYgKG1fdmVydGV4Q29tcGls
ZXIpCiAgICAgICAgIFNoRGVzdHJ1Y3QobV92ZXJ0ZXhDb21waWxlcik7CiAgICAgbV92ZXJ0ZXhD
b21waWxlciA9IDA7CisKKyAgICBidWlsdENvbXBpbGVycyA9IGZhbHNlOworfQorICAgIAordm9p
ZCBBTkdMRVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKFNoQnVpbHRJblJlc291cmNlcyByZXNv
dXJjZXMpCit7CisgICAgLy8gUmVzb3VyY2VzIGFyZSAocG9zc2libHkpIGNoYW5naW5nIC0gY2xl
YW51cCBjb21waWxlcnMgaWYgd2UgaGFkIHRoZW0gYWxyZWFkeQorICAgIGNsZWFudXBDb21waWxl
cnMoKTsKKyAgICAKKyAgICBtX3Jlc291cmNlcyA9IHJlc291cmNlczsKIH0KIAogYm9vbCBBTkdM
RVdlYktpdEJyaWRnZTo6dmFsaWRhdGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291
cmNlLCBBTkdMRVNoYWRlclR5cGUgc2hhZGVyVHlwZSwgU3RyaW5nJiB0cmFuc2xhdGVkU2hhZGVy
U291cmNlLCBTdHJpbmcmIHNoYWRlclZhbGlkYXRpb25Mb2cpCkBAIC01NywxMiArNzIsNyBAQCBi
b29sIEFOR0xFV2ViS2l0QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvCiAgICAgICAgIG1fZnJhZ21l
bnRDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoU0hfRlJBR01FTlRfU0hBREVSLCBTSF9X
RUJHTF9TUEVDLCAmbV9yZXNvdXJjZXMpOwogICAgICAgICBtX3ZlcnRleENvbXBpbGVyID0gU2hD
b25zdHJ1Y3RDb21waWxlcihTSF9WRVJURVhfU0hBREVSLCBTSF9XRUJHTF9TUEVDLCAmbV9yZXNv
dXJjZXMpOwogICAgICAgICBpZiAoIW1fZnJhZ21lbnRDb21waWxlciB8fCAhbV92ZXJ0ZXhDb21w
aWxlcikgewotICAgICAgICAgICAgaWYgKG1fZnJhZ21lbnRDb21waWxlcikKLSAgICAgICAgICAg
ICAgICBTaERlc3RydWN0KG1fZnJhZ21lbnRDb21waWxlcik7Ci0gICAgICAgICAgICBtX2ZyYWdt
ZW50Q29tcGlsZXIgPSAwOwotICAgICAgICAgICAgaWYgKG1fdmVydGV4Q29tcGlsZXIpCi0gICAg
ICAgICAgICAgICAgU2hEZXN0cnVjdChtX3ZlcnRleENvbXBpbGVyKTsKLSAgICAgICAgICAgIG1f
dmVydGV4Q29tcGlsZXIgPSAwOworICAgICAgICAgICAgY2xlYW51cENvbXBpbGVycygpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAkocmV2aXNp
b24gNzYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgcHVibGljOgogICAg
IEFOR0xFV2ViS2l0QnJpZGdlKCk7CiAgICAgfkFOR0xFV2ViS2l0QnJpZGdlKCk7CiAgICAgCi0g
ICAgdm9pZCBzZXRSZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlcykgeyBtX3Jl
c291cmNlcyA9IHJlc291cmNlczsgfQorICAgIFNoQnVpbHRJblJlc291cmNlcyBnZXRSZXNvdXJj
ZXMoKSB7IHJldHVybiBtX3Jlc291cmNlczsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VzKFNoQnVp
bHRJblJlc291cmNlcyk7CiAgICAgCiAgICAgYm9vbCB2YWxpZGF0ZVNoYWRlclNvdXJjZShjb25z
dCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hhZGVyVHlwZSBzaGFkZXJUeXBlLCBTdHJpbmcm
IHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsIFN0cmluZyYgc2hhZGVyVmFsaWRhdGlvbkxvZyk7CiAK
IHByaXZhdGU6CiAKKyAgICB2b2lkIGNsZWFudXBDb21waWxlcnMoKTsKKwogICAgIGJvb2wgYnVp
bHRDb21waWxlcnM7CiAgICAgCiAgICAgU2hIYW5kbGUgbV9mcmFnbWVudENvbXBpbGVyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJ
KHJldmlzaW9uIDc2MTgyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5zaW9uczNELmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAg
IC8vICAgR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIC8gR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsCiAgICAgLy8gICBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IC8gR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUKICAgICAvLyAgIEdMX09FU190ZXh0dXJlX2Zsb2F0CisgICAg
Ly8gICBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKIAogICAgIC8vIFRha2VzIGZ1bGwgbmFt
ZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxlLAogICAgIC8vICJHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODgiLgpAQCAtODIsNyArODMsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBuYW1lcwogICAgICAgICBSRU5ERVJCVUZGRVJf
U0FNUExFUyA9IDB4OENBQiwKICAgICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNB
TVBMRSA9IDB4OEQ1NiwKLSAgICAgICAgTUFYX1NBTVBMRVMgPSAweDhENTcKKyAgICAgICAgTUFY
X1NBTVBMRVMgPSAweDhENTcsCisKKyAgICAgICAgLy8gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRp
dmVzIG5hbWVzCisgICAgICAgIEZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTID0g
MHg4QjhCLAogICAgIH07CiAKICAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CShyZXZpc2lvbiA3NjE4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw2ICs4ODMsNyBAQCBwdWJs
aWM6CiAgICAgfSBTaGFkZXJTb3VyY2VFbnRyeTsKICAgICBIYXNoTWFwPFBsYXRmb3JtM0RPYmpl
Y3QsIFNoYWRlclNvdXJjZUVudHJ5PiBtX3NoYWRlclNvdXJjZU1hcDsKIAorICAgIGZyaWVuZCBj
bGFzcyBFeHRlbnNpb25zM0RPcGVuR0w7CiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UgbV9jb21waWxl
cjsKIAogICAgIE93blB0cjxFeHRlbnNpb25zM0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCShyZXZpc2lvbiA3NjE4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTUgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQU5HTEUvU2hhZGVyTGFuZy5oIgogI2lu
Y2x1ZGUgPE9wZW5HTC9nbC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXh0
ZW5zaW9uczNET3BlbkdMOjpFeHRlbnNpb25zM0RPcGVuR0woKQotICAgIDogbV9pbml0aWFsaXpl
ZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCitFeHRlbnNpb25zM0RPcGVuR0w6OkV4dGVuc2lv
bnMzRE9wZW5HTChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6IG1faW5pdGlhbGl6
ZWRBdmFpbGFibGVFeHRlbnNpb25zKGZhbHNlKSwKKyAgICAgIG1fY29udGV4dChjb250ZXh0KQog
ewogfQogCkBAIC04MiwxMiArODQsMjggQEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBv
cnRzKGNvbnN0IAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpCiAgICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0Iik7CiAKKyAgICAv
LyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgZGVyaXZhdGl2ZSBmdW5j
dGlvbnMKKyAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKG5hbWUpOwogfQogCiB2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTDo6ZW5zdXJlRW5hYmxl
ZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChuYW1l
ID09ICJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSB7CisgICAgICAgIC8vIEVuYWJsZSBz
dXBwb3J0IGluIEFOR0xFIChpZiBub3QgZW5hYmxlZCBhbHJlYWR5KQorICAgICAgICBBTkdMRVdl
YktpdEJyaWRnZSYgY29tcGlsZXIgPSBtX2NvbnRleHQtPm1fY29tcGlsZXI7CisgICAgICAgIFNo
QnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlcyA9IGNvbXBpbGVyLmdldFJlc291cmNlcygp
OworICAgICAgICBpZiAoIUFOR0xFUmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykg
eworICAgICAgICAgICAgQU5HTEVSZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0g
MTsKKyAgICAgICAgICAgIGNvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7Cisg
ICAgICAgIH0KKyAgICB9CisjZWxzZQogICAgIEFTU0VSVF9VTlVTRUQobmFtZSwgc3VwcG9ydHMo
bmFtZSkpOworI2VuZGlmCiB9CiAKIGludCBFeHRlbnNpb25zM0RPcGVuR0w6OmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAkocmV2aXNpb24g
NzYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxMyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0
ZWQgYnkgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb25zLgogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKLSAgICBFeHRlbnNpb25zM0RPcGVuR0woKTsKKyAgICBFeHRl
bnNpb25zM0RPcGVuR0woR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogICAgIGJvb2wgbV9pbml0aWFs
aXplZEF2YWlsYWJsZUV4dGVuc2lvbnM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxl
RXh0ZW5zaW9uczsKKyAgICAKKyAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0Nv
bnRleHQzRAorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5j
cHAJKHJldmlzaW9uIDc2MTgyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2
Nyw3ICsxNDY3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJybwog
RXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAg
aWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBF
eHRlbnNpb25zM0RPcGVuR0wpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcg
RXh0ZW5zaW9uczNET3BlbkdMKHRoaXMpKTsKICAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgp
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79674</attachid>
            <date>2011-01-20 18:08:47 -0800</date>
            <delta_ts>2011-01-20 18:36:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51678-20110120180846.patch</filename>
            <type>text/plain</type>
            <size>35798</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MzE4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDEtMjAgIEJlbiBWYW5p
ayAgPGJlbi52YW5pa0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgdGhlIE9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyBXZWJHTCBleHRlbnNpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MTY3OAorCisgICAgICAgIENoYW5nZXMgYXJlIG1vZGVsZWQgb2Zm
IG9mIHRoZSBleGlzdGluZyBPRVNUZXh0dXJlRmxvYXQgZXh0ZW5zaW9uLiBOZXcgZmlsZXMsCisg
ICAgICAgIGV4dGVuc2lvbiByZXRyaWV2YWwsIGV0YyBhbGwgbWF0Y2ggdGhlIGV4aXN0aW5nIGNv
ZGUuCisKKyAgICAgICAgQ2hhbmdlZCBBTkdMRVdlYktpdEJyaWRnZSB0byBhbGxvdyBmb3IgbXVs
dGlwbGUgc2V0cyBvZiB0aGUgQU5HTEUgc2hhZGVyIGNvbXBpbGVyCisgICAgICAgIG9wdGlvbnMu
IFRoaXMgc3VwcG9ydHMgdGhlIGVuYWJsaW5nIG9mIHRoZSBzdGFuZGFyZCBkZXJpdmF0aXZlcyBm
bGFnIHdoZW4gdGhlCisgICAgICAgIGV4dGVuc2lvbiBpcyBlbmFibGVkLiBSZWZhY3RvcmVkIHRo
ZSBjbGVhbnVwIGNvZGUgdG8gbWFrZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlCisgICAgICAgIGNv
bXBpbGVycyAoaWYgdGhleSBoYWQgYmVlbiBjcmVhdGVkKSBjbGVhbmVyLgorCisgICAgICAgIFRl
c3RlZCB3aXRoIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0OgorICAgICAgICBodHRwczovL2N2
cy5raHJvbm9zLm9yZy9zdm4vcmVwb3MvcmVnaXN0cnkvdHJ1bmsvcHVibGljL3dlYmdsL3Nkay90
ZXN0cy9jb25mb3JtYW5jZS9vZXMtc3RhbmRhcmQtZGVyaXZhdGl2ZXMuaHRtbAorICAgICAgICBQ
YXNzZXMgb24gV2ViS2l0L09TWCwgQ2hyb21pdW0vT1NYLCBhbmQgQ2hyb21pdW0vV2luZG93cy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6T0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJpdmF0aXZlcyk6
CisgICAgICAgIChXZWJDb3JlOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzOjp+T0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzOjpn
ZXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6OmNyZWF0
ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOiBFbmFibGUgYW5kIHJldHVybiB0
aGUgbmV3IGV4dGVuc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0UGFyYW1ldGVyKTogU3VwcG9ydCBleHRlbnNpb24gZW51bSB3aGVuIGVuYWJsZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVu
c2lvbnMpOiAKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGludCk6
IFZhbGlkYXRlIGV4dGVuc2lvbiBlbnVtIHdoZW4gZW5hYmxlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TnVtYmVyT2ZFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uTnVtYmVyKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBTkdMRVdlYktpdEJyaWRnZTo6fkFOR0xFV2ViS2l0QnJpZGdlKTogQ2xlYW5lZCB1cCBjb21w
aWxlciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlkZ2U6OmNsZWFu
dXBDb21waWxlcnMpOiBEZXN0cnVjdCBjb21waWxlcnMuCisgICAgICAgIChXZWJDb3JlOjpBTkdM
RVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKTogQ2xlYW51cCBleGlzdGluZyBjb21waWxlcnMg
d2hlbiBjaGFuZ2luZworICAgICAgICBBTkdMRSBzZXR0aW5ncy4KKyAgICAgICAgKFdlYkNvcmU6
OkFOR0xFV2ViS2l0QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvdXJjZSk6IENsZWFuZWQgdXAgY29t
cGlsZXIgY2xlYW51cCBvbiBlcnJvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5oOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlkZ2U6Omdl
dFJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6
IEFkZGVkIGVudW1lcmF0aW9uIGZvciB0aGUgZXh0ZW5zaW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IGx1bWJpbmcgZm9yIEdyYXBoaWNzQ29udGV4
dDNELgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjpFeHRlbnNpb25z
M0RPcGVuR0wpOiBQbHVtYmVkIHRocm91Z2ggYSBwb2ludGVyIHRvIHRoZQorICAgICAgICBHcmFw
aGljc0NvbnRleHQzRCB0byBoYW5kbGUgcmVzZXR0aW5nIHRoZSBzaGFkZXIgY29tcGlsZXJzLgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjpzdXBwb3J0cyk6IERlc2t0b3Ag
R0wgYWx3YXlzIHN1cHBvcnRzIHRoaXMgZXh0ZW5zaW9uLAorICAgICAgICBzbyBhbHdheXMgcmV0
dXJuIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0w6OmVuc3VyZUVu
YWJsZWQpOiBSZXNldCBzaGFkZXIgY29tcGlsZXJzIGFzIHJlcXVpcmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaDogUGx1bWJpbmcgZm9y
IEdyYXBoaWNzQ29udGV4dDNELgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6IFBsdW1iaW5nIGZvciBHcmFwaGljc0NvbnRleHQzRCB0
bworICAgICAgICBFeHRlbnNpb25zM0RPcGVuR0wuCisKIDIwMTEtMDEtMjAgIEJldGggRGFraW4g
IDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3NjMxOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNiArMjkyLDcgQEAg
U0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKICAg
ICBodG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL0ludDhBcnJheS5p
ZGwKKyAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAogICAgIGh0bWwv
Y2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5p
ZGwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNzYzMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDcgQEAgRE9NX0NMQVNT
RVMgPSBcCiAgICAgTm90YXRpb24gXAogICAgIE5vdGlmaWNhdGlvbiBcCiAgICAgTm90aWZpY2F0
aW9uQ2VudGVyIFwKKyAgICBPRVNTdGFuZGFyZERlcml2YXRpdmVzIFwKICAgICBPRVNUZXh0dXJl
RmxvYXQgXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXApJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc2MzE4KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw2ICs0ODIsOCBAQCB3ZWJj
b3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmlj
YXRpb25DZW50ZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05vdGlmaWNhdGlvbi5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb3RpZmljYXRpb24uaCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTT0VTVGV4dHVyZUZsb2F0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU09FU1RleHR1cmVGbG9hdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3Zl
cmZsb3dFdmVudC5jcHAgXApAQCAtMTU4Miw2ICsxNTg0LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVHlwZWRBcnJh
eUJhc2UuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3NjMxOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiw3IEBA
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9J
bnQ4QXJyYXkuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2
YXRpdmVzLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0Lmlk
bCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwnLApAQCAtMTkyMCw2ICsxOTIxLDggQEAK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9JbnQ4QXJyYXkuY3BwJywKICAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvSW50ZWdy
YWxUeXBlZEFycmF5QmFzZS5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNTdGFuZGFy
ZERlcml2YXRpdmVzLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvT0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQu
Y3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvVHlwZWRBcnJheUJhc2UuaCcsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aQkocmV2aXNpb24gNzYzMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzUGF0dGVybi5pZGwgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaWRsIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aWRsIFwKKyAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCBcCiAgICAg
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xB
Y3RpdmVJbmZvLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaWRsIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCShyZXZpc2lvbiA3NjMxOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zODEwLDYgKzM4MTAsNyBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfM0RfQ0FOVkFTPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaCBcCisgICAgICAgIGh0bWwvY2FudmFz
L09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL09FU1RleHR1
cmVGbG9hdC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggXAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIFwKQEAgLTM4MzQsNiArMzgzNSw3
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV8zRF9DQU5WQVM9MSkgewogICAgICAgICBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIu
Y3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgXAog
ICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xUZXh0dXJlLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9y
bUxvY2F0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NjMxOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc2
MCw2ICsyNzYwLDExIEBACiAJCThGNjc1NjFCMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3NTYx
OTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovOyB9OwogCQk4RjY3NTYxQzEyODhC
MTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3NTYxQTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1
ZS5jcHAgKi87IH07CiAJCThGQUM3NzREMTE5ODcyQ0IwMDE1QUU5NCAvKiBKU01haW5UaHJlYWRF
eGVjU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAg
Ki87IH07CisJCTkwMDE3NzQwMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRp
dmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkw
MDE3NzNEMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLzsg
fTsKKwkJOTAwMTc3NDExMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNF
MTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CisJCTkw
MDE3NzQyMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0YxMkUw
MzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsICovOyB9OworCQk5MDAx
Nzg4MDEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3ODdFMTJFMDM3
MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwICovOyB9OworCQk5MDAx
Nzg4MTEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzg3RjEyRTAzNzA3
MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CiAJCTkzMDJCMEJE
MEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VH
cm91cC5jcHAgKi87IH07CiAJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDJCMEJF
MEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGlt
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVC
MjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MTQ3LDYgKzkxNTIsMTEgQEAKIAkJOEY2NzU2MUEx
Mjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAv
KiBKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTAwMTc3M0QxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcy5jcHA7IHBhdGggPSBjYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwMDE3NzNFMTJFMDM0NzgwMDY0ODQ2MiAv
KiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaDsgcGF0aCA9IGNhbnZhcy9PRVNTdGFuZGFyZERl
cml2YXRpdmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwMDE3NzNGMTJFMDM0
NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNTdGFu
ZGFyZERlcml2YXRpdmVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTAwMTc4
N0UxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MDAxNzg3RjEyRTAzNzA3MDA2NDg0
NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzAyQjBCQzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VHcm91cC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3Jv
dXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUdyb3VwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMyOTAsNiArMTMzMDAsOSBAQAogCQkJCTQ5QzdCOUFDMTA0
MkQzMkUwMDA5RDQ0NyAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQk0OUM3QjlBRDEwNDJEMzJFMDAw
OUQ0NDcgLyogSW50OEFycmF5LmlkbCAqLywKIAkJCQk2RTk2QkIxQTExOTg2RUUxMDA3RDk0Q0Qg
LyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oICovLAorCQkJCTkwMDE3NzNEMTJFMDM0NzgwMDY0
ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLywKKwkJCQk5MDAxNzczRTEyRTAz
NDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovLAorCQkJCTkwMDE3NzNG
MTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCAqLywKIAkJCQk2
RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLywKIAkJCQk2
RUJGMEU0NjEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmggKi8sCiAJCQkJNkVC
RjBFNDcxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8sCkBAIC0xNjE5
Miw2ICsxNjIwNSw4IEBACiAJCQkJNDlDN0I5ODMxMDQyRDJEMzAwMDlENDQ3IC8qIEpTSW50OEFy
cmF5LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5j
cHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oICov
LAorCQkJCTkwMDE3ODdFMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuY3BwICovLAorCQkJCTkwMDE3ODdGMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaCAqLywKIAkJCQk2RUJGMEU3NDEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNU
ZXh0dXJlRmxvYXQuY3BwICovLAogCQkJCTZFQkYwRTc1MTJBOTg2ODgwMERCMTcwOSAvKiBKU09F
U1RleHR1cmVGbG9hdC5oICovLAogCQkJCUJDRUY0NUYzMEU2ODdCNUMwMDFDMTI4NyAvKiBKU1Rl
eHRNZXRyaWNzLmNwcCAqLywKQEAgLTIyMzk0LDYgKzIyNDA5LDggQEAKIAkJCQlBNjE0OEE2MjEy
RTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTYxNDhBNjcxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNjE0OEE3OTEyRTQxRTNCMDA0NEE3ODQgLyogSlNI
VE1MS2V5Z2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTAwMTc3NDExMkUwMzQ3ODAw
NjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkw
MDE3ODgxMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjI1MTYsNiArMjI1MzMsNyBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkw
MEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFC
MUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
LAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCisJCQkJOTAwMTc3NDIxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MDg2LDYgKzI1MTA0LDggQEAK
IAkJCQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE2MTQ4QTY4MTJFNDFEOTQwMDQ0QTc4NCAvKiBET01IVE1M
S2V5Z2VuRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE2MTQ4QTc4MTJFNDFFM0IwMDQ0
QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkwMDE3
NzQwMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTkwMDE3ODgwMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CShyZXZpc2lvbiA3NjMxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxJbWFn
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkpTT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIkpTT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5j
bHVkZSAiSlNXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5LmgiCkBAIC01
MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNVaW50OEFycmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJL
aXRDU1NNYXRyaXguaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIk9F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCIKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKICNp
bmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgpAQCAtMTcz
LDYgKzE3NSw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0QKICAg
ICBzd2l0Y2ggKGV4dGVuc2lvbi0+Z2V0TmFtZSgpKSB7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lv
bjo6V2ViS2l0TG9zZUNvbnRleHROYW1lOgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYktpdExvc2VDb250ZXh0Kj4oZXh0ZW5zaW9uKSk7Cisg
ICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VTU3RhbmRhcmREZXJpdmF0aXZlc05hbWU6CisgICAg
ICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8T0VTU3RhbmRh
cmREZXJpdmF0aXZlcyo+KGV4dGVuc2lvbikpOwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9F
U1RleHR1cmVGbG9hdE5hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RhdGljX2Nhc3Q8T0VTVGV4dHVyZUZsb2F0Kj4oZXh0ZW5zaW9uKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA3NjMxOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJWOEludDE2QXJyYXkuaCIKICNpbmNsdWRlICJWOEludDMyQXJyYXkuaCIKICNpbmNsdWRlICJW
OEludDhBcnJheS5oIgorI2luY2x1ZGUgIlY4T0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2lu
Y2x1ZGUgIlY4T0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1
ZGUgIlY4VWludDE2QXJyYXkuaCIKQEAgLTE2MCw2ICsxNjEsOSBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoCiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0
TG9zZUNvbnRleHROYW1lOgogICAgICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19j
YXN0PFdlYktpdExvc2VDb250ZXh0Kj4oZXh0ZW5zaW9uKSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXNOYW1lOgorICAgICAg
ICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PE9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMqPihleHRlbnNpb24pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lv
bjo6T0VTVGV4dHVyZUZsb2F0TmFtZToKICAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChz
dGF0aWNfY2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNpb24pKTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFy
ZERlcml2YXRpdmVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKDNEX0NBTlZBUykK
KworI2luY2x1ZGUgIk9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitPRVNTdGFuZGFyZERlcml2YXRpdmVzOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKCkg
OiBXZWJHTEV4dGVuc2lvbigpCit7Cit9CisKK09FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6On5PRVNT
dGFuZGFyZERlcml2YXRpdmVzKCkKK3sKK30KKworV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5h
bWUgT0VTU3RhbmRhcmREZXJpdmF0aXZlczo6Z2V0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXNOYW1lOworfQorCitQYXNzUmVmUHRyPE9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXM+IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6OmNyZWF0ZSgpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBPRVNTdGFuZGFyZERlcml2YXRpdmVzKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERl
cml2YXRpdmVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXNfaAorI2RlZmluZSBPRVNTdGFuZGFyZERlcml2YXRpdmVz
X2gKKworI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+
IGNyZWF0ZSgpOworCisgICAgdmlydHVhbCB+T0VTU3RhbmRhcmREZXJpdmF0aXZlcygpOworICAg
IHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
T0VTU3RhbmRhcmREZXJpdmF0aXZlcygpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gT0VTU3RhbmRhcmREZXJpdmF0aXZlc19oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZh
dGl2ZXMuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0
bWwgeworICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9M0RfQ0FOVkFTLCBPbWl0Q29uc3RydWN0
b3IsIERvbnRDaGVja0VudW1zXSBPRVNTdGFuZGFyZERlcml2YXRpdmVzIHsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IEZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4
QjhCOworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4
dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDc2MzE4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBwdWJs
aWM6CiAgICAgZW51bSBFeHRlbnNpb25OYW1lIHsKICAgICAgICAgV2ViS2l0TG9zZUNvbnRleHRO
YW1lLAogICAgICAgICBPRVNUZXh0dXJlRmxvYXROYW1lLAorICAgICAgICBPRVNTdGFuZGFyZERl
cml2YXRpdmVzTmFtZSwKICAgICB9OwogCiAgICAgdmlydHVhbCB+V2ViR0xFeHRlbnNpb24oKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAkocmV2aXNpb24gNzYzMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5oIgogI2luY2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5o
IgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC0xNzU3LDYgKzE3NTgsMTQgQEAgV2ViR0xF
eHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZwogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKSB7Cisg
ICAgICAgIGlmICghbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzKSB7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIik7CisgICAgICAgICAgICBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgPSBPRVNT
dGFuZGFyZERlcml2YXRpdmVzOjpjcmVhdGUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdldCgpOworICAgIH0KICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0IikKICAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKSB7CiAg
ICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxvYXQpIHsKQEAgLTE3NjQsNyArMTc3Myw4IEBAIFdl
YkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmcKICAgICAgICAgICAgIG1fb2Vz
VGV4dHVyZUZsb2F0ID0gT0VTVGV4dHVyZUZsb2F0OjpjcmVhdGUoKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7Ci0gICAgfSBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCS0lUX2xvc2VfY29udGV4dCIpKSB7CisgICAgfQorICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCS0lUX2xvc2VfY29udGV4dCIpKSB7CiAg
ICAgICAgIGlmICghbV93ZWJraXRMb3NlQ29udGV4dCkKICAgICAgICAgICAgIG1fd2Via2l0TG9z
ZUNvbnRleHQgPSBXZWJLaXRMb3NlQ29udGV4dDo6Y3JlYXRlKHRoaXMpOwogICAgICAgICByZXR1
cm4gbV93ZWJraXRMb3NlQ29udGV4dC5nZXQoKTsKQEAgLTIwMDYsNiArMjAxNiwxMSBAQCBXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oIldlYkdMIDEuMCAoIiArIG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29u
dGV4dDNEOjpWRVJTSU9OKSArICIpIik7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VklF
V1BPUlQ6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9P
RVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAgICAgICBpZiAobV9vZXNTdGFuZGFy
ZERlcml2YXRpdmVzKQorICAgICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRl
cihFeHRlbnNpb25zM0Q6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKQEAgLTIxNzMs
NiArMjE4OCw4IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2UKICAg
ICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSkKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCgiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7CiAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCS0lUX2xvc2VfY29udGV4dCIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0y
NDE3LDcgKzI0MzQsMTcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmhpbnQoR0MzRGVu
dQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAo
dGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpHRU5FUkFURV9NSVBNQVBfSElOVCkgeworICAg
IGJvb2wgaXNWYWxpZCA9IGZhbHNlOworICAgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CisgICAgICAgIGlzVmFsaWQg
PSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RlJBR01FTlRf
U0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6IC8vIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwor
ICAgICAgICBpZiAobV9vZXNTdGFuZGFyZERlcml2YXRpdmVzKQorICAgICAgICAgICAgaXNWYWxp
ZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoIWlzVmFsaWQpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ1MzYsMTEgKzQ1NjMsMTYg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0ZQogCiBpbnQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXROdW1iZXJPZkV4dGVuc2lvbnMoKQogewotICAgIHJldHVybiAo
bV93ZWJraXRMb3NlQ29udGV4dCA/IDEgOiAwKSArIChtX29lc1RleHR1cmVGbG9hdCA/IDEgOiAw
KTsKKyAgICByZXR1cm4gKG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcyA/IDEgOiAwKSArIChtX3dl
YmtpdExvc2VDb250ZXh0ID8gMSA6IDApICsgKG1fb2VzVGV4dHVyZUZsb2F0ID8gMSA6IDApOwog
fQogCiBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb25O
dW1iZXIoaW50IGkpCiB7CisgICAgaWYgKG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcykgeworICAg
ICAgICBpZiAoIWkpCisgICAgICAgICAgICByZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVz
LmdldCgpOworICAgICAgICAtLWk7CisgICAgfQogICAgIGlmIChtX3dlYmtpdExvc2VDb250ZXh0
KSB7CiAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgIHJldHVybiBtX3dlYmtpdExvc2VDb250
ZXh0LmdldCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDc2MzE4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDcgQEAgY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwog
Y2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE9FU1N0YW5kYXJkRGVyaXZh
dGl2ZXM7CiBjbGFzcyBPRVNUZXh0dXJlRmxvYXQ7CiAKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKQEAgLTQ1Miw2ICs0NTMsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBFbmFibGVkIGV4dGVuc2lvbiBvYmplY3RzLgogICAgIFJlZlB0
cjxPRVNUZXh0dXJlRmxvYXQ+IG1fb2VzVGV4dHVyZUZsb2F0OworICAgIFJlZlB0cjxPRVNTdGFu
ZGFyZERlcml2YXRpdmVzPiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXM7CiAgICAgUmVmUHRyPFdl
YktpdExvc2VDb250ZXh0PiBtX3dlYmtpdExvc2VDb250ZXh0OwogCiAgICAgLy8gSGVscGVycyBm
b3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAJKHJldmlzaW9uIDc2
MzE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMjcgQEAgQU5HTEVXZWJLaXRCcmlk
Z2U6OkFOR0xFV2ViS2l0QnJpZGdlKCkgOgogCiBBTkdMRVdlYktpdEJyaWRnZTo6fkFOR0xFV2Vi
S2l0QnJpZGdlKCkKIHsKKyAgICBjbGVhbnVwQ29tcGlsZXJzKCk7Cit9CisKK3ZvaWQgQU5HTEVX
ZWJLaXRCcmlkZ2U6OmNsZWFudXBDb21waWxlcnMoKQorewogICAgIGlmIChtX2ZyYWdtZW50Q29t
cGlsZXIpCiAgICAgICAgIFNoRGVzdHJ1Y3QobV9mcmFnbWVudENvbXBpbGVyKTsKICAgICBtX2Zy
YWdtZW50Q29tcGlsZXIgPSAwOwogICAgIGlmIChtX3ZlcnRleENvbXBpbGVyKQogICAgICAgICBT
aERlc3RydWN0KG1fdmVydGV4Q29tcGlsZXIpOwogICAgIG1fdmVydGV4Q29tcGlsZXIgPSAwOwor
CisgICAgYnVpbHRDb21waWxlcnMgPSBmYWxzZTsKK30KKyAgICAKK3ZvaWQgQU5HTEVXZWJLaXRC
cmlkZ2U6OnNldFJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzKQoreworICAg
IC8vIFJlc291cmNlcyBhcmUgKHBvc3NpYmx5KSBjaGFuZ2luZyAtIGNsZWFudXAgY29tcGlsZXJz
IGlmIHdlIGhhZCB0aGVtIGFscmVhZHkKKyAgICBjbGVhbnVwQ29tcGlsZXJzKCk7CisgICAgCisg
ICAgbV9yZXNvdXJjZXMgPSByZXNvdXJjZXM7CiB9CiAKIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6
OnZhbGlkYXRlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFk
ZXJUeXBlIHNoYWRlclR5cGUsIFN0cmluZyYgdHJhbnNsYXRlZFNoYWRlclNvdXJjZSwgU3RyaW5n
JiBzaGFkZXJWYWxpZGF0aW9uTG9nKQpAQCAtNTcsMTIgKzcyLDcgQEAgYm9vbCBBTkdMRVdlYktp
dEJyaWRnZTo6dmFsaWRhdGVTaGFkZXJTbwogICAgICAgICBtX2ZyYWdtZW50Q29tcGlsZXIgPSBT
aENvbnN0cnVjdENvbXBpbGVyKFNIX0ZSQUdNRU5UX1NIQURFUiwgU0hfV0VCR0xfU1BFQywgJm1f
cmVzb3VyY2VzKTsKICAgICAgICAgbV92ZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGls
ZXIoU0hfVkVSVEVYX1NIQURFUiwgU0hfV0VCR0xfU1BFQywgJm1fcmVzb3VyY2VzKTsKICAgICAg
ICAgaWYgKCFtX2ZyYWdtZW50Q29tcGlsZXIgfHwgIW1fdmVydGV4Q29tcGlsZXIpIHsKLSAgICAg
ICAgICAgIGlmIChtX2ZyYWdtZW50Q29tcGlsZXIpCi0gICAgICAgICAgICAgICAgU2hEZXN0cnVj
dChtX2ZyYWdtZW50Q29tcGlsZXIpOwotICAgICAgICAgICAgbV9mcmFnbWVudENvbXBpbGVyID0g
MDsKLSAgICAgICAgICAgIGlmIChtX3ZlcnRleENvbXBpbGVyKQotICAgICAgICAgICAgICAgIFNo
RGVzdHJ1Y3QobV92ZXJ0ZXhDb21waWxlcik7Ci0gICAgICAgICAgICBtX3ZlcnRleENvbXBpbGVy
ID0gMDsKKyAgICAgICAgICAgIGNsZWFudXBDb21waWxlcnMoKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHJldmlzaW9uIDc2MzE4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDE1IEBAIHB1YmxpYzoKICAgICBBTkdMRVdlYktpdEJy
aWRnZSgpOwogICAgIH5BTkdMRVdlYktpdEJyaWRnZSgpOwogICAgIAotICAgIHZvaWQgc2V0UmVz
b3VyY2VzKFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXMpIHsgbV9yZXNvdXJjZXMgPSByZXNv
dXJjZXM7IH0KKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgZ2V0UmVzb3VyY2VzKCkgeyByZXR1cm4g
bV9yZXNvdXJjZXM7IH0KKyAgICB2b2lkIHNldFJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMp
OwogICAgIAogICAgIGJvb2wgdmFsaWRhdGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVy
U291cmNlLCBBTkdMRVNoYWRlclR5cGUgc2hhZGVyVHlwZSwgU3RyaW5nJiB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlLCBTdHJpbmcmIHNoYWRlclZhbGlkYXRpb25Mb2cpOwogCiBwcml2YXRlOgogCisg
ICAgdm9pZCBjbGVhbnVwQ29tcGlsZXJzKCk7CisKICAgICBib29sIGJ1aWx0Q29tcGlsZXJzOwog
ICAgIAogICAgIFNoSGFuZGxlIG1fZnJhZ21lbnRDb21waWxlcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCShyZXZpc2lvbiA3NjMx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICAvLyAgIEdMX0VYVF9w
YWNrZWRfZGVwdGhfc3RlbmNpbCAvIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbAogICAgIC8v
ICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAvIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlCiAgICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAorICAgIC8vICAgR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzCiAKICAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9u
OyBmb3IgZXhhbXBsZSwKICAgICAvLyAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ii4K
QEAgLTgyLDcgKzgzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUgbmFtZXMKICAgICAgICAgUkVOREVSQlVGRkVSX1NBTVBMRVMgPSAweDhD
QUIsCiAgICAgICAgIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEUgPSAweDhENTYs
Ci0gICAgICAgIE1BWF9TQU1QTEVTID0gMHg4RDU3CisgICAgICAgIE1BWF9TQU1QTEVTID0gMHg4
RDU3LAorCisgICAgICAgIC8vIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBuYW1lcworICAg
ICAgICBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyA9IDB4OEI4QiwKICAgICB9
OwogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNzYz
MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsNiArODgzLDcgQEAgcHVibGljOgogICAgIH0gU2hh
ZGVyU291cmNlRW50cnk7CiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3Vy
Y2VFbnRyeT4gbV9zaGFkZXJTb3VyY2VNYXA7CiAKKyAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9u
czNET3BlbkdMOwogICAgIEFOR0xFV2ViS2l0QnJpZGdlIG1fY29tcGlsZXI7CiAKICAgICBPd25Q
dHI8RXh0ZW5zaW9uczNET3BlbkdMPiBtX2V4dGVuc2lvbnM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMLmNwcAkocmV2aXNpb24gNzYzMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTMgKzMzLDE1IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZP
Uk0oTUFDKQorI2luY2x1ZGUgIkFOR0xFL1NoYWRlckxhbmcuaCIKICNpbmNsdWRlIDxPcGVuR0wv
Z2wuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4dGVuc2lvbnMzRE9wZW5H
TDo6RXh0ZW5zaW9uczNET3BlbkdMKCkKK0V4dGVuc2lvbnMzRE9wZW5HTDo6RXh0ZW5zaW9uczNE
T3BlbkdMKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDogbV9pbml0aWFsaXplZEF2
YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKIHsKIH0K
IApAQCAtODIsMTIgKzg0LDI4IEBAIGJvb2wgRXh0ZW5zaW9uczNET3BlbkdMOjpzdXBwb3J0cyhj
b25zdCAKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0g
IkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpOwogCisgICAgLy8gRGVz
a3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgdGhlIHN0YW5kYXJkIGRlcml2YXRpdmUgZnVuY3Rpb25z
CisgICAgaWYgKG5hbWUgPT0gIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpCisgICAgICAg
IHJldHVybiB0cnVlOworCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cyhuYW1lKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OmVuc3VyZUVuYWJsZWQoY29u
c3QgU3RyaW5nJiBuYW1lKQogeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAobmFtZSA9PSAi
R0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikgeworICAgICAgICAvLyBFbmFibGUgc3VwcG9y
dCBpbiBBTkdMRSAoaWYgbm90IGVuYWJsZWQgYWxyZWFkeSkKKyAgICAgICAgQU5HTEVXZWJLaXRC
cmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2NvbXBpbGVyOworICAgICAgICBTaEJ1aWx0
SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXMgPSBjb21waWxlci5nZXRSZXNvdXJjZXMoKTsKKyAg
ICAgICAgaWYgKCFBTkdMRVJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpIHsKKyAg
ICAgICAgICAgIEFOR0xFUmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDE7Cisg
ICAgICAgICAgICBjb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMpOworICAgICAg
ICB9CisgICAgfQorI2Vsc2UKICAgICBBU1NFUlRfVU5VU0VEKG5hbWUsIHN1cHBvcnRzKG5hbWUp
KTsKKyNlbmRpZgogfQogCiBpbnQgRXh0ZW5zaW9uczNET3BlbkdMOjpnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmgJKHJldmlzaW9uIDc2MzE4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMTMgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5
IEdyYXBoaWNzQ29udGV4dDNEIGltcGxlbWVudGF0aW9ucy4KICAgICBmcmllbmQgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0Q7Ci0gICAgRXh0ZW5zaW9uczNET3BlbkdMKCk7CisgICAgRXh0ZW5zaW9u
czNET3BlbkdMKEdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICBib29sIG1faW5pdGlhbGl6ZWRB
dmFpbGFibGVFeHRlbnNpb25zOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnM7CisgICAgCisgICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0
M0QKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShy
ZXZpc2lvbiA3NjMxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NjcsNyAr
MTQ2Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm8KIEV4dGVu
c2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICgh
bV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5z
aW9uczNET3BlbkdMKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVu
c2lvbnMzRE9wZW5HTCh0aGlzKSk7CiAgICAgcmV0dXJuIG1fZXh0ZW5zaW9ucy5nZXQoKTsKIH0K
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>