<?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>53940</bug_id>
          
          <creation_ts>2011-02-07 14:11:11 -0800</creation_ts>
          <short_desc>Implement the OES_vertex_array_object WebGL extension</short_desc>
          <delta_ts>2011-02-18 10:43:20 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="Ben Vanik">ben.vanik</reporter>
          <assigned_to name="Ben Vanik">ben.vanik</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>kbr</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>346782</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-02-07 14:11:11 -0800</bug_when>
    <thetext>Initial extension spec work/conformance test/etc coming in patches via Khronos bug 428: http://www.khronos.org/bugzilla/show_bug.cgi?id=428

Once settled I will upload a patch containing an implementation of the extension for WebKit/OSX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347014</commentid>
    <comment_count>1</comment_count>
      <attachid>81566</attachid>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-02-07 19:05:50 -0800</bug_when>
    <thetext>Created attachment 81566
Implementation of OES_vertex_array_object for WebKit/OSX

From the ChangeLog:

        Initial implementation of the OES_vertex_array_object extension adding the OESVertexArrayObject
        extension container and WebGLVertexArrayObjectOES VAO object. The extension is plumbed through
        the Extensions3D interface and implemented in the Extensions3DOpenGL (WebKit/OSX) version when
        it is available.
        Two big changes touching code outside of the extension:
        * Moved the typedefs at the top of GraphicsContext3D.h to GraphicsTypes3D.h (modeled after
          GraphicsTypes.h). They are not namespaced as they weren&apos;t before.
        * To make the code cleaner/clearer all vertex attribute state has been moved to the
          WebGLVertexArrayObjectOES type (class VertexAttribState) except for values which are still
          on the WebGLRenderingContext. A default VAO is now used to store the existing attribute
          states for when no other VAO is used. Code in WebGLRenderingContext dealing with buffers and
          vertex attributes now defers to or stores values in the bound array object.
        
        Tested against the WebGL conformance suite and the new
        oes-vertex-array-object test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347019</commentid>
    <comment_count>2</comment_count>
      <attachid>81568</attachid>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-02-07 19:14:16 -0800</bug_when>
    <thetext>Created attachment 81568
Implementation of OES_vertex_array_object for WebKit/OSX (reupload)

Broke the first patch file, trying again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347023</commentid>
    <comment_count>3</comment_count>
      <attachid>81569</attachid>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-02-07 19:38:19 -0800</bug_when>
    <thetext>Created attachment 81569
Implementation of OES_vertex_array_object for WebKit/OSX (reupload)

One last try of this upload before I ask for help...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347680</commentid>
    <comment_count>4</comment_count>
      <attachid>81569</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-08 14:24:27 -0800</bug_when>
    <thetext>Comment on attachment 81569
Implementation of OES_vertex_array_object for WebKit/OSX (reupload)

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

Great work. The patch looks almost perfect. r- for a few relatively minor issues. It&apos;s generally difficult to land a patch via the commit queue that modifies project.pbxproj because there&apos;s a lot of churn in that file. Ping me when you&apos;re ready to upload a new patch and we can try to get it landed quickly.

&gt; Source/WebCore/html/canvas/OESVertexArrayObject.cpp:14
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY

There are slight differences among the copyright notices in the new files. Could you please normalize them all to what&apos;s in Source/WebKit/LICENSE?

&gt; Source/WebCore/html/canvas/OESVertexArrayObject.cpp:65
&gt; +    return o;

Prefer &quot;return o.release();&quot;.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:1381
&gt; +        if (loc &gt;= 0 &amp;&amp; loc &lt; (int)m_maxVertexAttribs) {

Use static_cast&lt;int&gt;(...).

&gt; Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.h:41
&gt; +    static PassRefPtr&lt;WebGLVertexArrayObjectOES&gt; create(WebGLRenderingContext*, bool);

Recently there&apos;s been a lot of discussion on webkit-dev about preferring descriptive enums instead of bools. Please define an enum (perhaps something like &quot;NormalVAO&quot;, &quot;DefaultVAO&quot;?) and pass it instead of the bool. You could give it a default value so most of the call sites don&apos;t have to supply it.

&gt; Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.h:44
&gt; +    class VertexAttribState {

Make this a struct instead of a class, since everything&apos;s public. Everything else (in particular the constructor) can remain.

&gt; Source/WebCore/platform/graphics/Extensions3D.h:116
&gt; +    virtual Platform3DObject createVertexArrayOES() = 0;
&gt; +    virtual void deleteVertexArrayOES(Platform3DObject) = 0;
&gt; +    virtual GC3Dboolean isVertexArrayOES(Platform3DObject) = 0;
&gt; +    virtual void bindVertexArrayOES(Platform3DObject) = 0;

You&apos;ll need to stub these out in Source/WebCore/platform/graphics/qt/Extensions3DQt.{cpp,h}. I&apos;m not sure why the Qt EWS bot compiled this patch successfully -- maybe they&apos;re not currently compiling WebGL.

&gt; Source/WebCore/platform/graphics/GraphicsTypes3D.h:26
&gt; +#ifndef GraphicsTypes3D_h

This header needs to be added to a couple more of the build systems, in particular Source/WebCore/WebCore.pro and Source/WebCore/WebCore.gypi. Even though compilation didn&apos;t fail, the dependencies might not be correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353136</commentid>
    <comment_count>5</comment_count>
      <attachid>82854</attachid>
    <who name="Ben Vanik">ben.vanik</who>
    <bug_when>2011-02-17 13:11:12 -0800</bug_when>
    <thetext>Created attachment 82854
Revised implementation of OES_vertex_array_object

Changes from Ken&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353287</commentid>
    <comment_count>6</comment_count>
      <attachid>82854</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-17 17:58:35 -0800</bug_when>
    <thetext>Comment on attachment 82854
Revised implementation of OES_vertex_array_object

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

Looks great. I&apos;ll help you land this by hand tomorrow morning so we can watch the bots. One tiny naming convention issue; not necessary to upload a new patch for it, but if you have time to that would be great.

&gt; Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.h:41
&gt; +        kVaoTypeDefault,
&gt; +        kVaoTypeUser,

WebKit style doesn&apos;t use the &quot;k&quot; for these, paradoxically -- so they should just be VaoTypeDefault and VaoTypeUser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353665</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-18 10:43:20 -0800</bug_when>
    <thetext>Committed r79011: &lt;http://trac.webkit.org/changeset/79011&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81566</attachid>
            <date>2011-02-07 19:05:50 -0800</date>
            <delta_ts>2011-02-07 19:14:16 -0800</delta_ts>
            <desc>Implementation of OES_vertex_array_object for WebKit/OSX</desc>
            <filename>OES_vertex_array_object.patch</filename>
            <type>text/plain</type>
            <size>85536</size>
            <attacher name="Ben Vanik">ben.vanik</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3ODY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA3IEBACisyMDExLTAyLTA3ICBCZW4gVmFu
aWsgIDxiZW52YW5pa0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ1ZyA1Mzk0MDogSW1wbGVtZW50IHRoZSBPRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUzOTQwCisKKyAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgZXh0ZW5zaW9uIGFkZGluZyB0aGUgT0VT
VmVydGV4QXJyYXlPYmplY3QKKyAgICAgICAgZXh0ZW5zaW9uIGNvbnRhaW5lciBhbmQgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUyBWQU8gb2JqZWN0LiBUaGUgZXh0ZW5zaW9uIGlzIHBsdW1iZWQg
dGhyb3VnaAorICAgICAgICB0aGUgRXh0ZW5zaW9uczNEIGludGVyZmFjZSBhbmQgaW1wbGVtZW50
ZWQgaW4gdGhlIEV4dGVuc2lvbnMzRE9wZW5HTCAoV2ViS2l0L09TWCkgdmVyc2lvbiB3aGVuCisg
ICAgICAgIGl0IGlzIGF2YWlsYWJsZS4KKyAgICAgICAgVHdvIGJpZyBjaGFuZ2VzIHRvdWNoaW5n
IGNvZGUgb3V0c2lkZSBvZiB0aGUgZXh0ZW5zaW9uOgorICAgICAgICAqIE1vdmVkIHRoZSB0eXBl
ZGVmcyBhdCB0aGUgdG9wIG9mIEdyYXBoaWNzQ29udGV4dDNELmggdG8gR3JhcGhpY3NUeXBlczNE
LmggKG1vZGVsZWQgYWZ0ZXIKKyAgICAgICAgICBHcmFwaGljc1R5cGVzLmgpLiBUaGV5IGFyZSBu
b3QgbmFtZXNwYWNlZCBhcyB0aGV5IHdlcmVuJ3QgYmVmb3JlLgorICAgICAgICAqIFRvIG1ha2Ug
dGhlIGNvZGUgY2xlYW5lci9jbGVhcmVyIGFsbCB2ZXJ0ZXggYXR0cmlidXRlIHN0YXRlIGhhcyBi
ZWVuIG1vdmVkIHRvIHRoZQorICAgICAgICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgdHlw
ZSAoY2xhc3MgVmVydGV4QXR0cmliU3RhdGUpIGV4Y2VwdCBmb3IgdmFsdWVzIHdoaWNoIGFyZSBz
dGlsbAorICAgICAgICAgIG9uIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQuIEEgZGVmYXVsdCBW
QU8gaXMgbm93IHVzZWQgdG8gc3RvcmUgdGhlIGV4aXN0aW5nIGF0dHJpYnV0ZQorICAgICAgICAg
IHN0YXRlcyBmb3Igd2hlbiBubyBvdGhlciBWQU8gaXMgdXNlZC4gQ29kZSBpbiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgZGVhbGluZyB3aXRoIGJ1ZmZlcnMgYW5kCisgICAgICAgICAgdmVydGV4IGF0
dHJpYnV0ZXMgbm93IGRlZmVycyB0byBvciBzdG9yZXMgdmFsdWVzIGluIHRoZSBib3VuZCBhcnJh
eSBvYmplY3QuCisgICAgICAgIAorICAgICAgICBUZXN0ZWQgYWdhaW5zdCB0aGUgV2ViR0wgY29u
Zm9ybWFuY2Ugc3VpdGUgYW5kIHRoZSBuZXcKKyAgICAgICAgb2VzLXZlcnRleC1hcnJheS1vYmpl
Y3QgdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6fk9FU1ZlcnRleEFy
cmF5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXRO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZVZlcnRleEFycmF5
T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVWZXJ0
ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6aXNW
ZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6
YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVFbGVtZW50QXJyYXlTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJ
bmRleEFycmF5UHJlY2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlUmVuZGVyaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCdWZm
ZXJEYXRhUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYmZJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmVydGV4QXR0cmliZnZJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6aW5pdFZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzaW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRy
aWIwU2ltdWxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldE51bWJlck9mRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbk51bWJlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldE1heFZlcnRleEF0dHJpYnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6VmVydGV4QXR0cmliVmFsdWU6OlZlcnRleEF0dHJp
YlZhbHVlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6fldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmli
U3RhdGU6OlZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVM6OmlzRGVmYXVsdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjpoYXNFdmVyQmVlbkJvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OnNldEhhc0V2ZXJCZWVuQm91bmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Z2V0RWxlbWVudEFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OnNl
dEVsZW1lbnRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTOjpnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzM0QuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnMzRE9wZW5HTDo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3Bl
bkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
M0RPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnMzRE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zM0RPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oOgorCiAyMDExLTAyLTA3ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByNzc4NDguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMjkzLDYgKzI5Myw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2Fu
dmFzL0ludDhBcnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVz
LmlkbAogICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwKKyAgICBodG1sL2NhbnZh
cy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5p
ZGwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50
OEFycmF5LmlkbApAQCAtMzA2LDYgKzMwNyw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAg
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmlkbAogICAgIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVy
ZS5pZGwKICAgICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwKKyAgICBodG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbAogICAgIGh0bWwvY2FudmFzL1dl
YktpdExvc2VDb250ZXh0LmlkbAogCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5p
ZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNzc4MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTQsNiArMzE0LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm90aWZpY2F0aW9uQ2VudGVyIFwK
ICAgICBPRVNTdGFuZGFyZERlcml2YXRpdmVzIFwKICAgICBPRVNUZXh0dXJlRmxvYXQgXAorCU9F
U1ZlcnRleEFycmF5T2JqZWN0IFwKKwlXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIFwKICAgICBP
dmVyZmxvd0V2ZW50IFwKICAgICBQYWdlVHJhbnNpdGlvbkV2ZW50IFwKICAgICBQZXJmb3JtYW5j
ZSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDg0LDYgKzQ4NCw4IEBA
IHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1Rl
eHR1cmVGbG9hdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPRVNUZXh0dXJlRmxv
YXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1ZlcnRleEFycmF5T2JqZWN0LmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1ZlcnRleEFycmF5T2JqZWN0LmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKQEAgLTU5MCw2ICs1OTIsOCBAQCB3ZWJjb3Jl
X2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFRleHR1
cmUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIFwKQEAgLTE1ODUs
MTMgKzE1ODksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0ludDhBcnJheS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhB
cnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRp
dmVzLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQxNkFycmF5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2
QXJyYXkuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuY3BwIFwK
QEAgLTQ4MTIsNyArNDgxMCwxOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVGV4dHVyZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFVuaWZvcm1Mb2NhdGlvbi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VW5pZm9ybUxvY2F0aW9uLmgKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFVuaWZv
cm1Mb2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFu
ZGFyZERlcml2YXRpdmVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxv
YXQuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5LmggXAorCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmNwcCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaAogZW5kaWYgICMgRU5EIEVOQUJMRV9XRUJH
TAogCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3BwOiBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTIxOCw2ICsyMTgsNyBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhB
cnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsJywK
KyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvVWludDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50
OEFycmF5LmlkbCcsCkBAIC0yMzIsNiArMjMzLDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTFNoYWRlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVGV4dHVy
ZS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmlk
bCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5p
ZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmlkbCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsJywKQEAgLTE5MjksNiArMTkz
MSw4IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCcsCisgICAgICAgICAgICAnaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwJywKKyAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9U
eXBlZEFycmF5QmFzZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MTZBcnJheS5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmgnLApAQCAtMTk2Miw2
ICsxOTY2LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oJywKKyAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCcsCisgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYktpdExvc2VDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0NT
U1ByZWxvYWRTY2FubmVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2aXNpb24gNzc4Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYg
KzE5NSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmlkbCBcCiAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5pZGwgXAogICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwgXAorICAgIGh0bWwv
Y2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xB
Y3RpdmVJbmZvLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaWRsIFwKICAgICBo
dG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCBcCkBAIC0yMDYsNiArMjA3LDcg
QEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbCBcCiAg
ICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xV
bmlmb3JtTG9jYXRpb24uaWRsIFwKKyAgICBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaWRsIFwKICAg
ICBodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCBcCiAgICAgaHRtbC9jYW52YXMvVWludDMyQXJy
YXkuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zODMxLDYgKzM4MzEsOCBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTFNoYWRlci5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmggXAorICAgICAgICBo
dG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oIFwKKyAgICAgICAgaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXkuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXApAQCAtMzg1Niw2ICszODU4LDggQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2Vi
R0xTaGFkZXIuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIFwKKyAgICAg
ICAgaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIFwKKyAgICAgICAgaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXkuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0
dXJlLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmNwcCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA3NzgzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY0OSw2ICsxNjQ5LDE1IEBACiAJCTc2RkMyQjBC
MTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZGQzJCMDgxMjM3MERBMDAwNkE5OTFBIC8qIERP
TVRva2VuTGlzdC5jcHAgKi87IH07CiAJCTc2RkMyQjBDMTIzNzBEQTAwMDZBOTkxQSAvKiBET01U
b2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc2RkMyQjA5MTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuaCAqLzsgfTsKIAkJNzZG
RjE3RTMxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdOb25lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RkYxN0UyMTEyMzU2NzMwMDFENjFC
NSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgKi87IH07CisJCTc3QTE3QTcxMTJGMjgxODIwMDRFMDJG
NiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0E2RTEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4
QXJyYXlPYmplY3QuY3BwICovOyB9OworCQk3N0ExN0E3MjEyRjI4MTgyMDA0RTAyRjYgLyogT0VT
VmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc3QTE3QTZGMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVj
dC5oICovOyB9OworCQk3N0ExN0E3NzEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3N0ExN0E3NDEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5jcHAgKi87IH07CisJCTc3QTE3QTc4MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3N0ExN0E3NTEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5oICovOyB9OworCQk3N0ExN0E3QjEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NUeXBlczNE
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0E3
QTEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NUeXBlczNELmggKi87IH07CisJCTc3QTE3QUE2
MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QUEyMTJGMjhCMkEwMDRF
MDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCAqLzsgfTsKKwkJNzdBMTdBQTcxMkYy
OEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QUEzMTJGMjhCMkEwMDRFMDJGNiAv
KiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CisJCTc3RUY2MkYzMTJGOURCNzQwMEM3
N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdFRjYyRjExMkY5REI3NDAwQzc3QkQyIC8q
IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgKi87IH07CisJCTc3RUY2MkY0MTJGOURC
NzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RUY2MkYyMTJGOURCNzQwMEM3N0JE
MiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCAqLzsgfTsKIAkJNzlBQzkyMTgxMDk5
NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUFDOTIxNjEwOTk0NUM4MDAyMTI2NkUgLyog
SlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJNzlBQzkyMTkxMDk5NDVDODAwMjEyNjZF
IC8qIEpTQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzlBQzkyMTcxMDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25F
dmVudC5oICovOyB9OwogCQk3OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25F
dmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgKi87IH07CkBA
IC04MTAzLDYgKzgxMTIsMTcgQEAKIAkJNzZGQzJCMDkxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRv
a2VuTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Ub2tlbkxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZGQzJCMEExMjM3MERBMDAwNkE5OTFB
IC8qIERPTVRva2VuTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NVG9rZW5MaXN0
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZGRjE3RTIxMTIzNTY3MzAwMUQ2
MUI1IC8qIFBsdWdpblZpZXdOb25lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsdWdpblZpZXdOb25lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzdBMTdBNkUxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1ZlcnRleEFycmF5T2JqZWN0LmNw
cDsgcGF0aCA9IGNhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTc3QTE3QTZGMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oOyBwYXRoID0gY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QTcwMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0
ZXhBcnJheU9iamVjdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gT0VTVmVydGV4QXJyYXlP
YmplY3QuaWRsOyBwYXRoID0gY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdBMTdBNzQxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3
QTE3QTc1MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aDsgcGF0aCA9IGNhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QTc2MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdBMTdBN0ExMkYyODkwQjAwNEUw
MkY2IC8qIEdyYXBoaWNzVHlwZXMzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHcmFwaGljc1R5cGVzM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdBMTdB
QTIxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QUEzMTJGMjhCMkEwMDRFMDJGNiAv
KiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzdFRjYyRjExMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3N0VGNjJG
MjEyRjlEQjc0MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUFDOTIxNjEwOTk0NUM4MDAyMTI2NkUg
LyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ29tcG9zaXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc5QUM5MjE3MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb21wb3NpdGlvbkV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21w
b3NpdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
bXBvc2l0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzNTYs
NiArMTMzNzYsOSBAQAogCQkJCTZFQkYwRTQ1MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJl
RmxvYXQuY3BwICovLAogCQkJCTZFQkYwRTQ2MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJl
RmxvYXQuaCAqLywKIAkJCQk2RUJGMEU0NzEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZs
b2F0LmlkbCAqLywKKwkJCQk3N0ExN0E2RTEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJy
YXlPYmplY3QuY3BwICovLAorCQkJCTc3QTE3QTZGMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0
ZXhBcnJheU9iamVjdC5oICovLAorCQkJCTc3QTE3QTcwMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNW
ZXJ0ZXhBcnJheU9iamVjdC5pZGwgKi8sCiAJCQkJNkU5NkJCMUIxMTk4NkVFMTAwN0Q5NENEIC8q
IFR5cGVkQXJyYXlCYXNlLmggKi8sCiAJCQkJNDlFRUNEREMxMDUwM0MyMzAwMDk5RkFCIC8qIFVp
bnQxNkFycmF5LmNwcCAqLywKIAkJCQk0OUVFQ0RERDEwNTAzQzI0MDAwOTlGQUIgLyogVWludDE2
QXJyYXkuaCAqLywKQEAgLTEzNDA0LDYgKzEzNDI3LDkgQEAKIAkJCQkwQzNGMUY1NzEwQzg4NzEy
MDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwICovLAogCQkJCTBDM0YxRjU4MTBD
ODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovLAogCQkJCTBDM0YxRjU5
MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwgKi8sCisJCQkJNzdB
MTdBNzQxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICov
LAorCQkJCTc3QTE3QTc1MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTLmggKi8sCisJCQkJNzdBMTdBNzYxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaWRsICovLAogCQkJCTkzRjFENUI3MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJL
aXRMb3NlQ29udGV4dC5jcHAgKi8sCiAJCQkJOTNGMUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8qIFdl
YktpdExvc2VDb250ZXh0LmggKi8sCiAJCQkJOTNGMUQ1QjkxMkQ1MzJDNDAwODMyQkVDIC8qIFdl
YktpdExvc2VDb250ZXh0LmlkbCAqLywKQEAgLTE2MjY0LDYgKzE2MjkwLDggQEAKIAkJCQk5MDAx
Nzg3RjEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi8sCiAJ
CQkJNkVCRjBFNzQxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCAqLywK
IAkJCQk2RUJGMEU3NTEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCAqLywK
KwkJCQk3N0ExN0FBMjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5j
cHAgKi8sCisJCQkJNzdBMTdBQTMxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlP
YmplY3QuaCAqLywKIAkJCQlCQ0VGNDVGMzBFNjg3QjVDMDAxQzEyODcgLyogSlNUZXh0TWV0cmlj
cy5jcHAgKi8sCiAJCQkJQkNFRjQ1RjQwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1ldHJpY3Mu
aCAqLywKIAkJCQlFNDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmNwcCAq
LywKQEAgLTE2Mjk2LDYgKzE2MzI0LDggQEAKIAkJCQk0OUM3Qjk5MjEwNDJEMkQzMDAwOUQ0NDcg
LyogSlNXZWJHTFRleHR1cmUuaCAqLywKIAkJCQkwQzQ1MzQyNTEwQ0RCQkZBMDA4NjkxNTcgLyog
SlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8sCiAJCQkJMEM0NTM0MjYxMENEQkJGQTAwODY5
MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLywKKwkJCQk3N0VGNjJGMTEyRjlEQjc0
MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCAqLywKKwkJCQk3N0VG
NjJGMjEyRjlEQjc0MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggKi8s
CiAJCQkJOTNGMUQ1QkUxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViS2l0TG9zZUNvbnRleHQuY3Bw
ICovLAogCQkJCTkzRjFENUJGMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYktpdExvc2VDb250ZXh0
LmggKi8sCiAJCQkpOwpAQCAtMTc1MzksNiArMTc1NjksNyBAQAogCQkJCTBGNTgwQjBCMEYxMkEy
NjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCiAJCQkJQjJBMDE1OTQwQUY2
Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuY3BwICovLAogCQkJCUIyQTAxNTk1MEFGNkNE
NTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggKi8sCisJCQkJNzdBMTdBN0ExMkYyODkwQjAw
NEUwMkY2IC8qIEdyYXBoaWNzVHlwZXMzRC5oICovLAogCQkJCUIyNzUzNTQwMEIwNTM4MTQwMDJD
RTY0RiAvKiBJY29uLmggKi8sCiAJCQkJQjI3NTM1NDEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdl
LmNwcCAqLywKIAkJCQlCMjc1MzU0MjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCAqLywKQEAg
LTIyNDk2LDYgKzIyNTI3LDExIEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhT
TFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0M0NCODIxMkYyNUU1MTAwMzND
NUVFIC8qIFRleHRDb2RlY1VURjguaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTc3QTE3QTcyMTJG
MjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTc3QTE3QTdCMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGlj
c1R5cGVzM0QuaCBpbiBIZWFkZXJzICovLAorCQkJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJGNiAv
KiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3N0VGNjJGNDEy
RjlEQjc0MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI1MTk4LDYgKzI1MjM3LDEwIEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzQzQ0I4MTEy
RjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTc3QTE3QTcxMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3N0ExN0E3NzEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3N0ExN0FBNjEyRjI4QjJB
MDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3N0VGNjJGMzEyRjlEQjc0MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNp
b24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNs
dWRlICJKU0ltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
IgogI2luY2x1ZGUgIkpTT0VTVGV4dHVyZUZsb2F0LmgiCisjaW5jbHVkZSAiSlNPRVNWZXJ0ZXhB
cnJheU9iamVjdC5oIgorI2luY2x1ZGUgIkpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgog
I2luY2x1ZGUgIkpTV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Zsb2F0MzJBcnJheS5oIgog
I2luY2x1ZGUgIkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgpAQCAtNTMsNiArNTUsOCBAQAogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
IgogI2luY2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgorI2luY2x1ZGUgIk9FU1ZlcnRleEFycmF5
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1
ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVkZSAi
V2ViR0xFeHRlbnNpb24uaCIKQEAgLTExNSw2ICsxMTksOCBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNECiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSk7CisgICAgY2FzZSBX
ZWJHTEdldEluZm86OmtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzoKKyAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMoKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xNzksNiArMTg1LDggQEAgc3RhdGljIEpTVmFs
dWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRAogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMqPihleHRlbnNp
b24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpPRVNUZXh0dXJlRmxvYXROYW1lOgogICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PE9FU1RleHR1
cmVGbG9hdCo+KGV4dGVuc2lvbikpOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1ZlcnRl
eEFycmF5T2JqZWN0TmFtZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDxPRVNWZXJ0ZXhBcnJheU9iamVjdCo+KGV4dGVuc2lvbikpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDc3ODM3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlY4
SW50OEFycmF5LmgiCiAjaW5jbHVkZSAiVjhPRVNTdGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5j
bHVkZSAiVjhPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJWOE9FU1ZlcnRleEFycmF5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VWludDE2QXJyYXkuaCIK
ICNpbmNsdWRlICJWOFVpbnQzMkFycmF5LmgiCkBAIC02MSw2ICs2Miw3IEBACiAjaW5jbHVkZSAi
VjhXZWJHTFNoYWRlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAi
VjhXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgorI2luY2x1ZGUgIlY4V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAKQEAgLTE0Niw2ICsxNDgsOCBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoCiAgICAgICAgIHJldHVybiB0b1Y4KGluZm8uZ2V0V2Vi
R0xUZXh0dXJlKCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVW5zaWduZWRC
eXRlQXJyYXk6CiAgICAgICAgIHJldHVybiB0b1Y4KGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVB
cnJheSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTOgorICAgICAgICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMoKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTE2Nyw2ICsxNzEsOSBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoCiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6
T0VTVGV4dHVyZUZsb2F0TmFtZToKICAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0
aWNfY2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNpb24pKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VTVmVydGV4QXJyYXlPYmplY3ROYW1lOgorICAgICAg
ICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PE9FU1ZlcnRleEFycmF5T2JqZWN0
Kj4oZXh0ZW5zaW9uKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlQoIWV4dGVu
c2lvbk9iamVjdC5Jc0VtcHR5KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0SGlkZGVuUmVmZXJl
bmNlKGNvbnRleHRPYmplY3QsIGV4dGVuc2lvbk9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIk9FU1ZlcnRleEFycmF5T2Jq
ZWN0LmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworT0VTVmVydGV4QXJyYXlPYmplY3Q6Ok9FU1ZlcnRleEFy
cmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IFdlYkdMRXh0
ZW5zaW9uKCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQoreworfQorCitPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6fk9FU1ZlcnRleEFycmF5T2JqZWN0KCkKK3sKK30KKworV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgT0VTVmVydGV4QXJyYXlPYmplY3Q6OmdldE5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPRVNWZXJ0ZXhBcnJheU9iamVjdE5hbWU7Cit9CisKK1Bhc3NSZWZQdHI8T0VT
VmVydGV4QXJyYXlPYmplY3Q+IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgT0VTVmVy
dGV4QXJyYXlPYmplY3QoY29udGV4dCkpOworfQorCitQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVM+IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygp
Cit7CisgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gbyA9IFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZShtX2NvbnRleHQsIGZhbHNlKTsKKyAgICBtX2Nv
bnRleHQtPmFkZE9iamVjdChvLmdldCgpKTsKKyAgICByZXR1cm4gbzsKK30KKwordm9pZCBPRVNW
ZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyogYXJyYXlPYmplY3QpCit7CisgICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRl
eHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGFycmF5T2Jq
ZWN0LT5kZWxldGVPYmplY3QoKTsKK30KKworR0MzRGJvb2xlYW4gT0VTVmVydGV4QXJyYXlPYmpl
Y3Q6OmlzVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmpl
Y3QpCit7CisgICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3Qo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFhcnJheU9iamVjdC0+aGFzRXZl
ckJlZW5Cb3VuZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBFeHRlbnNpb25zM0Qq
IGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lv
bnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+aXNWZXJ0ZXhBcnJheU9FUyhhcnJheU9iamVj
dC0+b2JqZWN0KCkpOworfQorCit2b2lkIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpiaW5kVmVydGV4
QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgaWYgKG1fY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGFycmF5T2Jq
ZWN0ICYmIGFycmF5T2JqZWN0LT5jb250ZXh0KCkgIT0gbV9jb250ZXh0KSB7CisgICAgICAgIG1f
Y29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoYXJyYXlPYmplY3QgJiYgIWFycmF5
T2JqZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9iamVjdC0+b2JqZWN0KCkpIHsKKyAg
ICAgICAgZXh0ZW5zaW9ucy0+YmluZFZlcnRleEFycmF5T0VTKGFycmF5T2JqZWN0LT5vYmplY3Qo
KSk7CisgICAgICAgIAorICAgICAgICBhcnJheU9iamVjdC0+c2V0SGFzRXZlckJlZW5Cb3VuZCgp
OworICAgICAgICBtX2NvbnRleHQtPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoYXJyYXlPYmpl
Y3QpOworICAgIH0gZWxzZSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmJpbmRWZXJ0ZXhBcnJheU9F
UygwKTsKKyAgICAgICAgCisgICAgICAgIG1fY29udGV4dC0+c2V0Qm91bmRWZXJ0ZXhBcnJheU9i
amVjdCgwKTsKKyAgICB9CisgICAgCisgICAgbV9jb250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhB
cnJheU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1ZlcnRleEFycmF5T2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBPRVNWZXJ0ZXhBcnJheU9iamVjdF9oCisjZGVmaW5lIE9FU1Zl
cnRleEFycmF5T2JqZWN0X2gKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorI2luY2x1
ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ7CitjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOworCitjbGFzcyBPRVNWZXJ0
ZXhBcnJheU9iamVjdCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8T0VTVmVydGV4QXJyYXlPYmplY3Q+IGNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqKTsKKworICAgIHZpcnR1YWwgfk9FU1ZlcnRleEFycmF5T2JqZWN0KCk7CisgICAg
dmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdDsKKyAgICAKKyAgICBQYXNzUmVm
UHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IGNyZWF0ZVZlcnRleEFycmF5T0VTKCk7Cisg
ICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKik7
CisgICAgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTKik7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUyosIEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBPRVNWZXJ0ZXhBcnJheU9i
amVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICAKKyAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIG1fY29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIE9FU1ZlcnRleEFycmF5T2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJm
YWNlIFtDb25kaXRpb25hbD1XRUJHTCwgT21pdENvbnN0cnVjdG9yLCBEb250Q2hlY2tFbnVtc10g
T0VTVmVydGV4QXJyYXlPYmplY3QgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgVkVSVEVY
X0FSUkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1OworICAgICAgICAKKyAgICAgICAgW1N0cmljdFR5
cGVDaGVja2luZ10gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyBjcmVhdGVWZXJ0ZXhBcnJheU9F
UygpOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgZGVsZXRlVmVy
dGV4QXJyYXlPRVMoaW4gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyBhcnJheU9iamVjdCk7Cisg
ICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIGJvb2xlYW4gICAgICBpc1ZlcnRleEFycmF5T0VT
KGluIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgYXJyYXlPYmplY3QpOworICAgICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgYmluZFZlcnRleEFycmF5T0VTKGluIFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMgYXJyYXlPYmplY3QpIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5z
aW9uLmgJKHJldmlzaW9uIDc3ODM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFdlYktpdExvc2VDb250ZXh0TmFtZSwKICAgICAgICAgT0VTVGV4dHVyZUZsb2F0TmFt
ZSwKICAgICAgICAgT0VTU3RhbmRhcmREZXJpdmF0aXZlc05hbWUsCisgICAgICAgIE9FU1ZlcnRl
eEFycmF5T2JqZWN0TmFtZSwKICAgICB9OwogCiAgICAgdmlydHVhbCB+V2ViR0xFeHRlbnNpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAko
cmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldElu
Zm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViR0xQ
cm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJH
TFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM0LDYgKzEzNSwxMiBAQCBXZWJHTEdldEluZm86Oldl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFVpCiB7CiB9CiAKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gdmFsdWUpCisgICAgOiBt
X3R5cGUoa1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKQorICAgICwgbV93ZWJnbFZlcnRl
eEFycmF5T2JqZWN0KHZhbHVlKQoreworfQorCiBXZWJHTEdldEluZm86On5XZWJHTEdldEluZm8o
KQogewogfQpAQCAtMjI3LDYgKzIzNCwxMiBAQCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFdlYkdM
R2V0SW5mbzo6Z2V0CiAgICAgcmV0dXJuIG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKIH0KIAor
UGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTEdldEluZm86OmdldFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkg
PT0ga1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKTsKKyAgICByZXR1cm4gbV93ZWJnbFZl
cnRleEFycmF5T2JqZWN0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdl
dEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdl
dEluZm8uaAkocmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEdldEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IldlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVk
ZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CkBAIC02NSw3ICs2Niw4IEBAIHB1YmxpYzoKICAgICAgICAga1R5cGVXZWJHTFByb2dyYW0sCiAg
ICAgICAgIGtUeXBlV2ViR0xSZW5kZXJidWZmZXIsCiAgICAgICAgIGtUeXBlV2ViR0xUZXh0dXJl
LAotICAgICAgICBrVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXkKKyAgICAgICAga1R5cGVXZWJH
TFVuc2lnbmVkQnl0ZUFycmF5LAorICAgICAgICBrVHlwZVdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMsCiAgICAgfTsKIAogICAgIFdlYkdMR2V0SW5mbyhib29sIHZhbHVlKTsKQEAgLTg2LDYgKzg4
LDcgQEAgcHVibGljOgogICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVm
ZmVyPiB2YWx1ZSk7CiAgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiB2
YWx1ZSk7CiAgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8VWludDhBcnJheT4gdmFsdWUpOwor
ICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IHZh
bHVlKTsKIAogICAgIHZpcnR1YWwgfldlYkdMR2V0SW5mbygpOwogCkBAIC0xMDcsNiArMTEwLDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGdldFdlYkdMUmVu
ZGVyYnVmZmVyKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGdldFdlYkdM
VGV4dHVyZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2V0V2ViR0xVbnNp
Z25lZEJ5dGVBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUz4gZ2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIFR5cGUgbV90eXBlOwpAQCAtMTI2LDYgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBtX3dlYmdsUmVuZGVyYnVmZmVyOwogICAgIFJlZlB0cjxX
ZWJHTFRleHR1cmU+IG1fd2ViZ2xUZXh0dXJlOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX3dl
YmdsVW5zaWduZWRCeXRlQXJyYXk7CisgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM+IG1fd2ViZ2xWZXJ0ZXhBcnJheU9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPRVNTdGFu
ZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCisjaW5jbHVk
ZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlVpbnQxNkFycmF5LmgiCkBAIC0zODEsNyAr
MzgyLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZQogICAgIG1f
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9IGZhbHNlOwogICAgIG1fdW5wYWNrQ29sb3JzcGFjZUNv
bnZlcnNpb24gPSBHcmFwaGljc0NvbnRleHQzRDo6QlJPV1NFUl9ERUZBVUxUX1dFQkdMOwogICAg
IG1fYm91bmRBcnJheUJ1ZmZlciA9IDA7Ci0gICAgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlciA9
IDA7CiAgICAgbV9jdXJyZW50UHJvZ3JhbSA9IDA7CiAgICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmcg
PSAwOwogICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZyA9IDA7CkBAIC0zOTEsNyArMzkxLDYgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZQogICAgIG1fc3RlbmNpbEZ1
bmNSZWZCYWNrID0gMDsKICAgICBtX3N0ZW5jaWxGdW5jTWFzayA9IDB4RkZGRkZGRkY7CiAgICAg
bV9zdGVuY2lsRnVuY01hc2tCYWNrID0gMHhGRkZGRkZGRjsKLSAgICBtX3ZlcnRleEF0dHJpYlN0
YXRlLmNsZWFyKCk7CiAKICAgICBHQzNEaW50IG51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMg
PSAwOwogICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9D
T01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyk7CkBAIC00MDEsMTMgKzQwMCwxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aW5p
dGlhbGl6ZU5lCiAgICAgR0MzRGludCBudW1WZXJ0ZXhBdHRyaWJzID0gMDsKICAgICBtX2NvbnRl
eHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZu
dW1WZXJ0ZXhBdHRyaWJzKTsKICAgICBtX21heFZlcnRleEF0dHJpYnMgPSBudW1WZXJ0ZXhBdHRy
aWJzOwotCisgICAgCiAgICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7CiAgICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4VGV4
dHVyZVNpemUpOwogICAgIG1fbWF4VGV4dHVyZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRl
TGV2ZWxDb3VudChtX21heFRleHR1cmVTaXplLCBtX21heFRleHR1cmVTaXplKTsKICAgICBtX21h
eEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDA7CiAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHQzRDo6TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgJm1fbWF4Q3ViZU1hcFRl
eHR1cmVTaXplKTsKICAgICBtX21heEN1YmVNYXBUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6
OmNvbXB1dGVMZXZlbENvdW50KG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplLCBtX21heEN1YmVNYXBU
ZXh0dXJlU2l6ZSk7CisgICAgCisgICAgbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUodGhpcywgdHJ1ZSk7CisgICAgYWRkT2JqZWN0
KG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0LmdldCgpKTsKKyAgICBtX2JvdW5kVmVydGV4QXJy
YXlPYmplY3QgPSBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsKKyAgICAKKyAgICBtX3ZlcnRl
eEF0dHJpYlZhbHVlLnJlc2l6ZShtX21heFZlcnRleEF0dHJpYnMpOwogCiAgICAgaWYgKCFpc0dM
RVMyTlBPVFN0cmljdCgpKQogICAgICAgICBjcmVhdGVGYWxsYmFja0JsYWNrVGV4dHVyZXMxeDEo
KTsKQEAgLTU3Niw3ICs1ODEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1
ZmZlcihHCiAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
KQogICAgICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSBidWZmZXI7CiAgICAgZWxzZSBpZiAodGFy
Z2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikKLSAgICAgICAg
bV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICAgICAgbV9ib3VuZFZlcnRl
eEFycmF5T2JqZWN0LT5zZXRFbGVtZW50QXJyYXlCdWZmZXIoYnVmZmVyKTsKICAgICBlbHNlIHsK
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5MiwxMCArMTA5NywxMSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlQnVmZmVyCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAobV9ib3VuZEFycmF5QnVmZmVyID09IGJ1ZmZlcikKICAgICAgICAgbV9ib3VuZEFy
cmF5QnVmZmVyID0gMDsKLSAgICBpZiAobV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlciA9PSBidWZm
ZXIpCi0gICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSAwOworICAgIFJlZlB0cjxX
ZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKKyAgICBpZiAoZWxlbWVudEFycmF5QnVmZmVyID09
IGJ1ZmZlcikKKyAgICAgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5zZXRFbGVtZW50QXJy
YXlCdWZmZXIoMCk7CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpIHsKLSAgICAgICAgVmVy
dGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZVswXTsKKyAgICAgICAg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9i
b3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZSgwKTsKICAgICAgICAg
aWYgKGJ1ZmZlciA9PSBzdGF0ZS5idWZmZXJCaW5kaW5nKSB7CiAgICAgICAgICAgICBzdGF0ZS5i
dWZmZXJCaW5kaW5nID0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyOwogICAgICAgICAgICAgc3RhdGUu
Ynl0ZXNQZXJFbGVtZW50ID0gMDsKQEAgLTEyMTYsOCArMTIyMiw4IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChpbmRleCA8IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICBtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS5lbmFibGVkID0gZmFsc2U7CisgICAgV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFycmF5
T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbmRleCk7CisgICAgc3RhdGUuZW5hYmxlZCA9
IGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID4gMCB8fCBpc0dMRVMyQ29tcGxpYW50KCkpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwpAQCAtMTIy
Nyw3ICsxMjMzLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRpc2FibGVWZXJ0ZQog
CiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVFbGVtZW50QXJyYXlTaXplKEdD
M0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7Ci0gICAg
aWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKQorICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4g
ZWxlbWVudEFycmF5QnVmZmVyID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50
QXJyYXlCdWZmZXIoKTsKKyAgICAKKyAgICBpZiAoIWVsZW1lbnRBcnJheUJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG9mZnNldCA8IDApCkBAIC0xMjQxLDExICsxMjQ5
LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUVsZW0KICAgICAgICAg
Ly8gTWFrZSB1b2Zmc2V0IGFuIGVsZW1lbnQgb2Zmc2V0LgogICAgICAgICBvZmZzZXQgLz0gMjsK
IAotICAgICAgICBHQzNEc2l6ZWlwdHIgbiA9IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSAvIDI7CisgICAgICAgIEdDM0RzaXplaXB0ciBuID0gZWxlbWVudEFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkgLyAyOwogICAgICAgICBpZiAob2Zmc2V0ID4gbiB8fCBjb3VudCA+
IG4gLSBvZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIGlmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSB7Ci0gICAgICAgIEdDM0Rz
aXplaXB0ciBuID0gbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAg
ICAgICBHQzNEc2l6ZWlwdHIgbiA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwog
ICAgICAgICBpZiAob2Zmc2V0ID4gbiB8fCBjb3VudCA+IG4gLSBvZmZzZXQpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTI1OSwxOCArMTI2NywyMCBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRlCiAgICAgLy8gYXJyYXkgYnVmZmVycyBoYXZl
IGVub3VnaCBlbGVtZW50cyB0byBzYXRpc2Z5IHRoYXQgbWF4aW11bQogICAgIC8vIGluZGV4LCBz
a2lwcyB0aGUgZXhwZW5zaXZlIHBlci1kcmF3LWNhbGwgaXRlcmF0aW9uIGluCiAgICAgLy8gdmFs
aWRhdGVJbmRleEFycmF5UHJlY2lzZS4KKyAgICAKKyAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGVs
ZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVudEFy
cmF5QnVmZmVyKCk7CiAKLSAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpCisgICAg
aWYgKCFlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdD
M0RzaXplaXB0ciBudW1FbGVtZW50cyA9IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKTsKKyAgICBHQzNEc2l6ZWlwdHIgbnVtRWxlbWVudHMgPSBlbGVtZW50QXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKTsKICAgICAvLyBUaGUgY2FzZSBjb3VudD09MCBpcyBhbHJlYWR5IGRl
YWx0IHdpdGggaW4gZHJhd0VsZW1lbnRzIGJlZm9yZSB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2
YXRpdmUuCiAgICAgaWYgKCFudW1FbGVtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGNvbnN0IEFycmF5QnVmZmVyKiBidWZmZXIgPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5l
bGVtZW50QXJyYXlCdWZmZXIoKTsKKyAgICBjb25zdCBBcnJheUJ1ZmZlciogYnVmZmVyID0gZWxl
bWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlQoYnVmZmVy
KTsKIAotICAgIGludCBtYXhJbmRleCA9IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmdldENh
Y2hlZE1heEluZGV4KHR5cGUpOworICAgIGludCBtYXhJbmRleCA9IGVsZW1lbnRBcnJheUJ1ZmZl
ci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7CiAgICAgaWYgKG1heEluZGV4IDwgMCkgewogICAg
ICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGluZGV4IGluIHRoZSBlbnRpcmUgYnVmZmVyIGZv
ciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0x
MjkwLDcgKzEzMDAsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRl
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
LSAgICAgICAgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+c2V0Q2FjaGVkTWF4SW5kZXgodHlw
ZSwgbWF4SW5kZXgpOworICAgICAgICBlbGVtZW50QXJyYXlCdWZmZXItPnNldENhY2hlZE1heElu
ZGV4KHR5cGUsIG1heEluZGV4KTsKICAgICB9CiAKICAgICBpZiAobWF4SW5kZXggPj0gMCkgewpA
QCAtMTMwNyw4ICsxMzE3LDEwIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZUluZGUKIHsKICAgICBBU1NFUlQoY291bnQgPj0gMCAmJiBvZmZzZXQgPj0gMCk7CiAgICAgaW50
IGxhc3RJbmRleCA9IC0xOworICAgIAorICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFy
cmF5QnVmZmVyID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZm
ZXIoKTsKIAotICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICBpZiAoIWVs
ZW1lbnRBcnJheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFjb3Vu
dCkgewpAQCAtMTMxNiw3ICsxMzI4LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlSW5kZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fYm91
bmRFbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpKQorICAgIGlmICghZWxl
bWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgdW5zaWduZWQgbG9uZyB1b2Zmc2V0ID0gb2Zmc2V0OwpAQCAtMTMyNSwxNCAr
MTMzNywxNCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRlCiAgICAg
aWYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUKSB7CiAgICAgICAg
IC8vIE1ha2UgdW9mZnNldCBhbiBlbGVtZW50IG9mZnNldC4KICAgICAgICAgdW9mZnNldCAvPSBz
aXplb2YoR0MzRHVzaG9ydCk7Ci0gICAgICAgIGNvbnN0IEdDM0R1c2hvcnQqIHAgPSBzdGF0aWNf
Y2FzdDxjb25zdCBHQzNEdXNob3J0Kj4obV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVu
dEFycmF5QnVmZmVyKCktPmRhdGEoKSkgKyB1b2Zmc2V0OworICAgICAgICBjb25zdCBHQzNEdXNo
b3J0KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVzaG9ydCo+KGVsZW1lbnRBcnJheUJ1ZmZl
ci0+ZWxlbWVudEFycmF5QnVmZmVyKCktPmRhdGEoKSkgKyB1b2Zmc2V0OwogICAgICAgICB3aGls
ZSAobi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpwID4gbGFzdEluZGV4KQogICAgICAgICAg
ICAgICAgIGxhc3RJbmRleCA9ICpwOwogICAgICAgICAgICAgKytwOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSB7Ci0g
ICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1Ynl0ZSo+
KG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkp
ICsgdW9mZnNldDsKKyAgICAgICAgY29uc3QgR0MzRHVieXRlKiBwID0gc3RhdGljX2Nhc3Q8Y29u
c3QgR0MzRHVieXRlKj4oZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKS0+
ZGF0YSgpKSArIHVvZmZzZXQ7CiAgICAgICAgIHdoaWxlIChuLS0gPiAwKSB7CiAgICAgICAgICAg
ICBpZiAoKnAgPiBsYXN0SW5kZXgpCiAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gKnA7CkBA
IC0xMzUwLDEyICsxMzYyLDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZVJlbmQKICAgICBpZiAoIW1fY3VycmVudFByb2dyYW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGludCBudW1BdHRyaWJTdGF0ZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fdmVydGV4QXR0
cmliU3RhdGUuc2l6ZSgpKTsKLQogICAgIC8vIExvb2sgaW4gZWFjaCBlbmFibGVkIHZlcnRleCBh
dHRyaWIgYW5kIGNoZWNrIGlmIHRoZXkndmUgYmVlbiBib3VuZCB0byBhIGJ1ZmZlci4KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bUF0dHJpYlN0YXRlczsgKytpKSB7Ci0gICAgICAgIGlmICht
X3ZlcnRleEF0dHJpYlN0YXRlW2ldLmVuYWJsZWQKLSAgICAgICAgICAgICYmICghbV92ZXJ0ZXhB
dHRyaWJTdGF0ZVtpXS5idWZmZXJCaW5kaW5nIHx8ICFtX3ZlcnRleEF0dHJpYlN0YXRlW2ldLmJ1
ZmZlckJpbmRpbmctPm9iamVjdCgpKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9t
YXhWZXJ0ZXhBdHRyaWJzOyArK2kpIHsKKyAgICAgICAgY29uc3QgV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2Jq
ZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpKTsKKyAgICAgICAgaWYgKHN0YXRlLmVuYWJsZWQK
KyAgICAgICAgICAgICYmICghc3RhdGUuYnVmZmVyQmluZGluZyB8fCAhc3RhdGUuYnVmZmVyQmlu
ZGluZy0+b2JqZWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTM2Nyw4ICsxMzc4LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUmVu
ZAogICAgIGludCBudW1BY3RpdmVBdHRyaWJMb2NhdGlvbnMgPSBtX2N1cnJlbnRQcm9ncmFtLT5u
dW1BY3RpdmVBdHRyaWJMb2NhdGlvbnMoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUFj
dGl2ZUF0dHJpYkxvY2F0aW9uczsgKytpKSB7CiAgICAgICAgIGludCBsb2MgPSBtX2N1cnJlbnRQ
cm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbihpKTsKLSAgICAgICAgaWYgKGxvYyA+PTAg
JiYgbG9jIDwgbnVtQXR0cmliU3RhdGVzKSB7Ci0gICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRy
aWJTdGF0ZSYgc3RhdGUgPSBtX3ZlcnRleEF0dHJpYlN0YXRlW2xvY107CisgICAgICAgIGlmIChs
b2MgPj0gMCAmJiBsb2MgPCAoaW50KW1fbWF4VmVydGV4QXR0cmlicykgeworICAgICAgICAgICAg
Y29uc3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRl
ID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZShsb2MpOwog
ICAgICAgICAgICAgaWYgKHN0YXRlLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAvLyBBdm9p
ZCBvZmYtYnktb25lIGVycm9ycyBpbiBudW1FbGVtZW50cyBjb21wdXRhdGlvbi4KICAgICAgICAg
ICAgICAgICAvLyBGb3IgdGhlIGxhc3QgZWxlbWVudCwgd2Ugd2lsbCBvbmx5IHRvdWNoIHRoZSBk
YXRhIGZvciB0aGUKQEAgLTE1NDMsMTAgKzE1NTQsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZW5hYmxlVmVydGV4CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaW5k
ZXggPj0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCkpCi0gICAgICAgIG1fdmVydGV4QXR0cmli
U3RhdGUucmVzaXplKGluZGV4ICsgMSk7Ci0KLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4
XS5lbmFibGVkID0gdHJ1ZTsKKyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWZXJ0ZXhB
dHRyaWJTdGF0ZSYgc3RhdGUgPSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldFZlcnRleEF0
dHJpYlN0YXRlKGluZGV4KTsKKyAgICBzdGF0ZS5lbmFibGVkID0gdHJ1ZTsKIAogICAgIG1fY29u
dGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CkBAIC0xODIwLDYgKzE4MjksMTQgQEAgV2ViR0xFeHRlbnNpb24q
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29l
c1RleHR1cmVGbG9hdC5nZXQoKTsKICAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpCisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkgewor
ICAgICAgICBpZiAoIW1fb2VzVmVydGV4QXJyYXlPYmplY3QpIHsKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdmVydGV4X2FycmF5
X29iamVjdCIpOworICAgICAgICAgICAgbV9vZXNWZXJ0ZXhBcnJheU9iamVjdCA9IE9FU1ZlcnRl
eEFycmF5T2JqZWN0OjpjcmVhdGUodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1f
b2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CisgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiV0VCS0lUX2xvc2VfY29udGV4dCIpKSB7CiAgICAgICAgIGlmICghbV93ZWJr
aXRMb3NlQ29udGV4dCkKICAgICAgICAgICAgIG1fd2Via2l0TG9zZUNvbnRleHQgPSBXZWJLaXRM
b3NlQ29udGV4dDo6Y3JlYXRlKHRoaXMpOwpAQCAtMTk0MCw3ICsxOTU3LDcgQEAgV2ViR0xHZXRJ
bmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRJVEhFUjoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6
Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4obV9i
b3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBh
c3NSZWZQdHI8V2ViR0xCdWZmZXI+KG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVu
dEFycmF5QnVmZmVyKCkpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Ul9CSU5ESU5HOgogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xG
cmFtZWJ1ZmZlcj4obV9mcmFtZWJ1ZmZlckJpbmRpbmcpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpGUk9OVF9GQUNFOgpAQCAtMjA2Niw2ICsyMDgzLDE0IEBAIFdlYkdMR2V0SW5mbyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICAgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZEludFBhcmFtZXRlcihFeHRlbnNpb25zM0Q6OkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJ
TlRfT0VTKTsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwor
ICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpWRVJURVhfQVJSQVlfQklORElOR19PRVM6IC8vIE9FU192
ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgICAgIGlmIChtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7
CisgICAgICAgICAgICBpZiAoIW1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+aXNEZWZhdWx0T2Jq
ZWN0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVM+KG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkpOworICAg
ICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICB9CisgICAgICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7
CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICBkZWZhdWx0OgogICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VO
VU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0yMjI3LDYgKzIyNTIsOCBA
QCBWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdlCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Iik7CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlf
b2JqZWN0IikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0
Iik7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX2xvc2VfY29udGV4dCIpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0yNDIyLDQwICsyNDQ5LDI2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFYKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKICAgICB9CisgICAgY29uc3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6
VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRW
ZXJ0ZXhBdHRyaWJTdGF0ZShpbmRleCk7CiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6Ci0g
ICAgICAgIGlmICgoIWlzR0xFUzJDb21wbGlhbnQoKSAmJiAhaW5kZXggJiYgbV92ZXJ0ZXhBdHRy
aWJTdGF0ZVswXS5idWZmZXJCaW5kaW5nID09IG1fdmVydGV4QXR0cmliMEJ1ZmZlcikKLSAgICAg
ICAgICAgIHx8IGluZGV4ID49IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpCi0gICAgICAgICAg
ICB8fCAhbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uYnVmZmVyQmluZGluZwotICAgICAgICAg
ICAgfHwgIW1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ1ZmZlckJpbmRpbmctPm9iamVjdCgp
KQorICAgICAgICBpZiAoKCFpc0dMRVMyQ29tcGxpYW50KCkgJiYgIWluZGV4ICYmIG1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoMCkuYnVmZmVyQmluZGluZyA9
PSBtX3ZlcnRleEF0dHJpYjBCdWZmZXIpCisgICAgICAgICAgICB8fCAhc3RhdGUuYnVmZmVyQmlu
ZGluZworICAgICAgICAgICAgfHwgIXN0YXRlLmJ1ZmZlckJpbmRpbmctPm9iamVjdCgpKQogICAg
ICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+KG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ1
ZmZlckJpbmRpbmcpKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdl
YkdMQnVmZmVyPihzdGF0ZS5idWZmZXJCaW5kaW5nKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOgotICAgICAgICBpZiAoaW5kZXggPj0g
bV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3ZlcnRleEF0dHJpYlN0
YXRlW2luZGV4XS5lbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0ZS5l
bmFibGVkKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZ
X05PUk1BTElaRUQ6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNp
emUoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oZmFsc2UpOwotICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLm5vcm1hbGl6ZWQp
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRlLm5vcm1hbGl6ZWQpOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToKLSAgICAgICAg
aWYgKGluZGV4ID49IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxpbnQ+KDQpKTsKLSAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5zaXplKTsKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhzdGF0ZS5zaXplKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERToKLSAgICAgICAgaWYgKGluZGV4ID49IG1fdmVy
dGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhz
dGF0aWNfY2FzdDxpbnQ+KDApKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS5vcmlnaW5hbFN0cmlkZSk7CisgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oc3RhdGUub3JpZ2luYWxTdHJpZGUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKLSAgICAgICAgaWYgKGluZGV4ID49IG1fdmVy
dGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCkpOwotICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLnR5cGUp
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRlLnR5cGUpOwogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNVUlJFTlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgaWYgKGluZGV4
ID49IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBmbG9hdCB2YWx1
ZVs0XSA9IHsgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiB9OwotICAgICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgNCkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oRmxvYXQzMkFycmF5OjpjcmVhdGUobV92ZXJ0ZXhB
dHRyaWJTdGF0ZVtpbmRleF0udmFsdWUsIDQpKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
byhGbG9hdDMyQXJyYXk6OmNyZWF0ZShtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS52YWx1ZSwg
NCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKQEAgLTM2ODksMTkgKzM3MDIsMTcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYgogICAgIH0KICAgICBHQzNEc2l6ZWkgYnl0ZXNQZXJFbGVtZW50ID0g
c2l6ZSAqIHR5cGVTaXplOwogCi0gICAgaWYgKGluZGV4ID49IG1fdmVydGV4QXR0cmliU3RhdGUu
c2l6ZSgpKQotICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShpbmRleCArIDEpOwot
CiAgICAgR0MzRHNpemVpIHZhbGlkYXRlZFN0cmlkZSA9IHN0cmlkZSA/IHN0cmlkZSA6IGJ5dGVz
UGVyRWxlbWVudDsKIAotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ1ZmZlckJpbmRp
bmcgPSBtX2JvdW5kQXJyYXlCdWZmZXI7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0u
Ynl0ZXNQZXJFbGVtZW50ID0gYnl0ZXNQZXJFbGVtZW50OwotICAgIG1fdmVydGV4QXR0cmliU3Rh
dGVbaW5kZXhdLnNpemUgPSBzaXplOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLnR5
cGUgPSB0eXBlOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLm5vcm1hbGl6ZWQgPSBu
b3JtYWxpemVkOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLnN0cmlkZSA9IHZhbGlk
YXRlZFN0cmlkZTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5vcmlnaW5hbFN0cmlk
ZSA9IHN0cmlkZTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5vZmZzZXQgPSBvZmZz
ZXQ7CisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0
YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbmRl
eCk7CisgICAgc3RhdGUuYnVmZmVyQmluZGluZyA9IG1fYm91bmRBcnJheUJ1ZmZlcjsKKyAgICBz
dGF0ZS5ieXRlc1BlckVsZW1lbnQgPSBieXRlc1BlckVsZW1lbnQ7CisgICAgc3RhdGUuc2l6ZSA9
IHNpemU7CisgICAgc3RhdGUudHlwZSA9IHR5cGU7CisgICAgc3RhdGUubm9ybWFsaXplZCA9IG5v
cm1hbGl6ZWQ7CisgICAgc3RhdGUuc3RyaWRlID0gdmFsaWRhdGVkU3RyaWRlOworICAgIHN0YXRl
Lm9yaWdpbmFsU3RyaWRlID0gc3RyaWRlOworICAgIHN0YXRlLm9mZnNldCA9IG9mZnNldDsKICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1h
bGl6ZWQsIHN0cmlkZSwgb2Zmc2V0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwogfQpAQCAtNDQzOCw3ICs0NDQ5LDcgQEAgV2ViR0xCdWZmZXIqIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmFsaQogICAgIFdlYkdMQnVmZmVyKiBidWZmZXIgPSAwOwogICAgIHN3aXRjaCAo
dGFyZ2V0KSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZG
RVI6Ci0gICAgICAgIGJ1ZmZlciA9IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCk7Cisg
ICAgICAgIGJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5
QnVmZmVyKCkuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkFSUkFZX0JVRkZFUjoKICAgICAgICAgYnVmZmVyID0gbV9ib3VuZEFycmF5QnVmZmVyLmdl
dCgpOwpAQCAtNDQ4NywxMiArNDQ5OCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliCiAgICAgICAgIH0KICAgICAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKICAgICB9Ci0gICAgaWYgKGluZGV4ID49IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6
ZSgpKQotICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShpbmRleCArIDEpOwotICAg
IG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLnZhbHVlWzBdID0gdjA7Ci0gICAgbV92ZXJ0ZXhB
dHRyaWJTdGF0ZVtpbmRleF0udmFsdWVbMV0gPSB2MTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
W2luZGV4XS52YWx1ZVsyXSA9IHYyOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLnZh
bHVlWzNdID0gdjM7CisgICAgVmVydGV4QXR0cmliVmFsdWUmIGF0dHJpYlZhbHVlID0gbV92ZXJ0
ZXhBdHRyaWJWYWx1ZVtpbmRleF07CisgICAgYXR0cmliVmFsdWUudmFsdWVbMF0gPSB2MDsKKyAg
ICBhdHRyaWJWYWx1ZS52YWx1ZVsxXSA9IHYxOworICAgIGF0dHJpYlZhbHVlLnZhbHVlWzJdID0g
djI7CisgICAgYXR0cmliVmFsdWUudmFsdWVbM10gPSB2MzsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYmZ2SW1wbChHQzNEdWludCBpbmRleCwgRmxvYXQzMkFy
cmF5KiB2LCBHQzNEc2l6ZWkgZXhwZWN0ZWRTaXplKQpAQCAtNDU0MCwyMSArNDU1MCwyMSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliCiAgICAgICAgIH0KICAgICAg
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKICAgICB9Ci0gICAgaWYgKGluZGV4
ID49IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICBtX3ZlcnRleEF0dHJpYlN0
YXRlLnJlc2l6ZShpbmRleCArIDEpOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmlu
aXRWYWx1ZSgpOworICAgIFZlcnRleEF0dHJpYlZhbHVlJiBhdHRyaWJWYWx1ZSA9IG1fdmVydGV4
QXR0cmliVmFsdWVbaW5kZXhdOworICAgIGF0dHJpYlZhbHVlLmluaXRWYWx1ZSgpOwogICAgIGZv
ciAoaW50IGlpID0gMDsgaWkgPCBleHBlY3RlZFNpemU7ICsraWkpCi0gICAgICAgIG1fdmVydGV4
QXR0cmliU3RhdGVbaW5kZXhdLnZhbHVlW2lpXSA9IHZbaWldOworICAgICAgICBhdHRyaWJWYWx1
ZS52YWx1ZVtpaV0gPSB2W2lpXTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omlu
aXRWZXJ0ZXhBdHRyaWIwKCkKIHsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZSgxKTsK
KyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3RhdGUg
PSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldFZlcnRleEF0dHJpYlN0YXRlKDApOworICAg
IAogICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcigpOwogICAgIG1fY29u
dGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3ZlcnRl
eEF0dHJpYjBCdWZmZXItPm9iamVjdCgpKTsKICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3Jh
cGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRZTkFN
SUNfRFJBVyk7CiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdyYXBo
aWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDAsIDApOwotICAgIG1fdmVydGV4QXR0cmliU3Rh
dGVbMF0uYnVmZmVyQmluZGluZyA9IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsKKyAgICBzdGF0ZS5i
dWZmZXJCaW5kaW5nID0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyOwogICAgIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKTsKICAgICBtX2NvbnRl
eHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwogICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZl
clNpemUgPSAwOwpAQCAtNDU2OCw3ICs0NTc4LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmluaXRWZXJ0ZXhBdAogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2ltdWxhdGVW
ZXJ0ZXhBdHRyaWIwKEdDM0RzaXplaSBudW1WZXJ0ZXgpCiB7Ci0gICAgY29uc3QgVmVydGV4QXR0
cmliU3RhdGUmIHN0YXRlID0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZVswXTsKKyAgICBjb25zdCBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjpWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3RhdGUgPSBtX2JvdW5k
VmVydGV4QXJyYXlPYmplY3QtPmdldFZlcnRleEF0dHJpYlN0YXRlKDApOworICAgIGNvbnN0IFZl
cnRleEF0dHJpYlZhbHVlJiBhdHRyaWJWYWx1ZSA9IG1fdmVydGV4QXR0cmliVmFsdWVbMF07CiAg
ICAgaWYgKCFtX2N1cnJlbnRQcm9ncmFtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9v
bCB1c2luZ1ZlcnRleEF0dHJpYjAgPSBtX2N1cnJlbnRQcm9ncmFtLT5pc1VzaW5nVmVydGV4QXR0
cmliMCgpOwpAQCAtNDU4OCwyMSArNDU5OSwyMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6c2ltdWxhdGVWZXJ0CiAgICAgfQogICAgIGlmICh1c2luZ1ZlcnRleEF0dHJpYjAKICAgICAg
ICAgJiYgKG1fZm9yY2VBdHRyaWIwQnVmZmVyUmVmaWxsCi0gICAgICAgICAgICB8fCBzdGF0ZS52
YWx1ZVswXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVswXQotICAgICAgICAgICAgfHwg
c3RhdGUudmFsdWVbMV0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMV0KLSAgICAgICAg
ICAgIHx8IHN0YXRlLnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCi0g
ICAgICAgICAgICB8fCBzdGF0ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1
ZVszXSkpIHsKKyAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzBdICE9IG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzBdCisgICAgICAgICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVsx
XSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsxXQorICAgICAgICAgICAgfHwgYXR0cmli
VmFsdWUudmFsdWVbMl0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0KKyAgICAgICAg
ICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzNdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVl
WzNdKSkgewogICAgICAgICBPd25BcnJheVB0cjxHQzNEZmxvYXQ+IGJ1ZmZlckRhdGEgPSBhZG9w
dEFycmF5UHRyKG5ldyBHQzNEZmxvYXRbKG51bVZlcnRleCArIDEpICogNF0pOwogICAgICAgICBm
b3IgKEdDM0RzaXplaSBpaSA9IDA7IGlpIDwgbnVtVmVydGV4ICsgMTsgKytpaSkgewotICAgICAg
ICAgICAgYnVmZmVyRGF0YVtpaSAqIDRdID0gc3RhdGUudmFsdWVbMF07Ci0gICAgICAgICAgICBi
dWZmZXJEYXRhW2lpICogNCArIDFdID0gc3RhdGUudmFsdWVbMV07Ci0gICAgICAgICAgICBidWZm
ZXJEYXRhW2lpICogNCArIDJdID0gc3RhdGUudmFsdWVbMl07Ci0gICAgICAgICAgICBidWZmZXJE
YXRhW2lpICogNCArIDNdID0gc3RhdGUudmFsdWVbM107Ci0gICAgICAgIH0KLSAgICAgICAgbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMF0gPSBzdGF0ZS52YWx1ZVswXTsKLSAgICAgICAgbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMV0gPSBzdGF0ZS52YWx1ZVsxXTsKLSAgICAgICAgbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0gPSBzdGF0ZS52YWx1ZVsyXTsKLSAgICAgICAgbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10gPSBzdGF0ZS52YWx1ZVszXTsKKyAgICAgICAgICAg
IGJ1ZmZlckRhdGFbaWkgKiA0XSA9IGF0dHJpYlZhbHVlLnZhbHVlWzBdOworICAgICAgICAgICAg
YnVmZmVyRGF0YVtpaSAqIDQgKyAxXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzFdOworICAgICAgICAg
ICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAyXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzJdOworICAgICAg
ICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAzXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzNdOworICAg
ICAgICB9CisgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzBdID0gYXR0cmliVmFs
dWUudmFsdWVbMF07CisgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdID0gYXR0
cmliVmFsdWUudmFsdWVbMV07CisgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJd
ID0gYXR0cmliVmFsdWUudmFsdWVbMl07CisgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZh
bHVlWzNdID0gYXR0cmliVmFsdWUudmFsdWVbM107CiAgICAgICAgIG1fZm9yY2VBdHRyaWIwQnVm
ZmVyUmVmaWxsID0gZmFsc2U7CiAgICAgICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YShHcmFw
aGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwLCBidWZmZXJEYXRhU2l6ZSwgYnVmZmVyRGF0
YS5nZXQoKSk7CiAgICAgfQpAQCAtNDYxMiw3ICs0NjIzLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnNpbXVsYXRlVmVydAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVz
dG9yZVN0YXRlc0FmdGVyVmVydGV4QXR0cmliMFNpbXVsYXRpb24oKQogewotICAgIGNvbnN0IFZl
cnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fdmVydGV4QXR0cmliU3RhdGVbMF07CisgICAgY29u
c3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0g
bV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZSgwKTsKICAgICBp
ZiAoc3RhdGUuYnVmZmVyQmluZGluZyAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXIpIHsKICAgICAg
ICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIs
IG9iamVjdE9yWmVybyhzdGF0ZS5idWZmZXJCaW5kaW5nLmdldCgpKSk7CiAgICAgICAgIG1fY29u
dGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCBzdGF0ZS5zaXplLCBzdGF0ZS50eXBlLCBzdGF0
ZS5ub3JtYWxpemVkLCBzdGF0ZS5vcmlnaW5hbFN0cmlkZSwgc3RhdGUub2Zmc2V0KTsKQEAgLTQ2
MjIsMTEgKzQ2MzMsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0
ZQogCiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXROdW1iZXJPZkV4dGVuc2lvbnMoKQog
ewotICAgIHJldHVybiAobV9vZXNTdGFuZGFyZERlcml2YXRpdmVzID8gMSA6IDApICsgKG1fd2Vi
a2l0TG9zZUNvbnRleHQgPyAxIDogMCkgKyAobV9vZXNUZXh0dXJlRmxvYXQgPyAxIDogMCk7Cisg
ICAgcmV0dXJuIChtX29lc1ZlcnRleEFycmF5T2JqZWN0ID8gMSA6IDApICsgKG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcyA/IDEgOiAwKSArIChtX3dlYmtpdExvc2VDb250ZXh0ID8gMSA6IDApICsg
KG1fb2VzVGV4dHVyZUZsb2F0ID8gMSA6IDApOwogfQogCiBXZWJHTEV4dGVuc2lvbiogV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb25OdW1iZXIoaW50IGkpCiB7CisgICAgaWYgKG1f
b2VzVmVydGV4QXJyYXlPYmplY3QpIHsKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgcmV0
dXJuIG1fb2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CisgICAgICAgIC0taTsKKyAgICB9CiAg
ICAgaWYgKG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcykgewogICAgICAgICBpZiAoIWkpCiAgICAg
ICAgICAgICByZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdldCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDc3ODM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgY2xhc3MgSW1h
Z2VEYXRhOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM7CiBj
bGFzcyBPRVNUZXh0dXJlRmxvYXQ7CitjbGFzcyBPRVNWZXJ0ZXhBcnJheU9iamVjdDsKK2NsYXNz
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM7CiAKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKQEAgLTI4Miw2ICsy
ODQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCk7CiAKICAgICB2b2lkIHJlbW92ZU9iamVjdChXZWJHTE9iamVjdCopOworICAgIAor
ICAgIHVuc2lnbmVkIGdldE1heFZlcnRleEF0dHJpYnMoKSBjb25zdCB7IHJldHVybiBtX21heFZl
cnRleEF0dHJpYnM7IH0KIAogICAgIC8vIEhlbHBlcnMgZm9yIEpTQyBiaW5kaW5ncy4KICAgICBp
bnQgZ2V0TnVtYmVyT2ZFeHRlbnNpb25zKCk7CkBAIC0yODksNiArMjkzLDcgQEAgcHVibGljOgog
CiAgIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMT2JqZWN0OworICAgIGZyaWVuZCBj
bGFzcyBPRVNWZXJ0ZXhBcnJheU9iamVjdDsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChI
VE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CiAgICAgdm9pZCBpbml0aWFsaXplTmV3Q29udGV4dCgp
OwpAQCAtMzU2LDI0ICszNjEsMjQgQEAgcHVibGljOgogCiAgICAgLy8gTGlzdCBvZiBib3VuZCBW
Qk8ncy4gVXNlZCB0byBtYWludGFpbiBpbmZvIGFib3V0IHNpemVzIGZvciBBUlJBWV9CVUZGRVIg
YW5kIHN0b3JlZCB2YWx1ZXMgZm9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSCiAgICAgUmVmUHRyPFdl
YkdMQnVmZmVyPiBtX2JvdW5kQXJyYXlCdWZmZXI7Ci0gICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBt
X2JvdW5kRWxlbWVudEFycmF5QnVmZmVyOwotCi0gICAgLy8gQ2FjaGVkIHZhbHVlcyBmb3IgdmVy
dGV4IGF0dHJpYiByYW5nZSBjaGVja3MKLSAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJTdGF0ZSB7Cisg
ICAgCisgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IG1fZGVmYXVsdFZlcnRl
eEFycmF5T2JqZWN0OworICAgIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBtX2Jv
dW5kVmVydGV4QXJyYXlPYmplY3Q7CisgICAgdm9pZCBzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0
KFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gYXJyYXlPYmplY3QpCisgICAg
eworICAgICAgICBpZiAoYXJyYXlPYmplY3QpCisgICAgICAgICAgICBtX2JvdW5kVmVydGV4QXJy
YXlPYmplY3QgPSBhcnJheU9iamVjdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9ib3Vu
ZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3Q7CisgICAgfQor
ICAgIAorICAgIGNsYXNzIFZlcnRleEF0dHJpYlZhbHVlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFZlcnRleEF0dHJpYlN0YXRlKCkKLSAgICAgICAgICAgIDogZW5hYmxlZChmYWxzZSkKLSAgICAg
ICAgICAgICwgYnl0ZXNQZXJFbGVtZW50KDApCi0gICAgICAgICAgICAsIHNpemUoNCkKLSAgICAg
ICAgICAgICwgdHlwZShHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQpCi0gICAgICAgICAgICAsIG5v
cm1hbGl6ZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHN0cmlkZSgxNikKLSAgICAgICAgICAgICwg
b3JpZ2luYWxTdHJpZGUoMCkKLSAgICAgICAgICAgICwgb2Zmc2V0KDApCisgICAgICAgIFZlcnRl
eEF0dHJpYlZhbHVlKCkKICAgICAgICAgewogICAgICAgICAgICAgaW5pdFZhbHVlKCk7CiAgICAg
ICAgIH0KLQorICAgICAgICAKICAgICAgICAgdm9pZCBpbml0VmFsdWUoKQogICAgICAgICB7CiAg
ICAgICAgICAgICB2YWx1ZVswXSA9IDAuMGY7CkBAIC0zODEsMjAgKzM4NiwxMCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICB2YWx1ZVsyXSA9IDAuMGY7CiAgICAgICAgICAgICB2YWx1ZVszXSA9IDEu
MGY7CiAgICAgICAgIH0KLQotICAgICAgICBib29sIGVuYWJsZWQ7Ci0gICAgICAgIFJlZlB0cjxX
ZWJHTEJ1ZmZlcj4gYnVmZmVyQmluZGluZzsKLSAgICAgICAgR0MzRHNpemVpIGJ5dGVzUGVyRWxl
bWVudDsKLSAgICAgICAgR0MzRGludCBzaXplOwotICAgICAgICBHQzNEZW51bSB0eXBlOwotICAg
ICAgICBib29sIG5vcm1hbGl6ZWQ7Ci0gICAgICAgIEdDM0RzaXplaSBzdHJpZGU7Ci0gICAgICAg
IEdDM0RzaXplaSBvcmlnaW5hbFN0cmlkZTsKLSAgICAgICAgR0MzRGludHB0ciBvZmZzZXQ7Cisg
ICAgICAgIAogICAgICAgICBHQzNEZmxvYXQgdmFsdWVbNF07CiAgICAgfTsKLQotICAgIFZlY3Rv
cjxWZXJ0ZXhBdHRyaWJTdGF0ZT4gbV92ZXJ0ZXhBdHRyaWJTdGF0ZTsKKyAgICBWZWN0b3I8VmVy
dGV4QXR0cmliVmFsdWU+IG1fdmVydGV4QXR0cmliVmFsdWU7CiAgICAgdW5zaWduZWQgbV9tYXhW
ZXJ0ZXhBdHRyaWJzOwogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyOwogICAgIGxvbmcgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6ZTsKQEAgLTQ1Niw2ICs0NTEs
NyBAQCBwdWJsaWM6CiAgICAgLy8gRW5hYmxlZCBleHRlbnNpb24gb2JqZWN0cy4KICAgICBSZWZQ
dHI8T0VTVGV4dHVyZUZsb2F0PiBtX29lc1RleHR1cmVGbG9hdDsKICAgICBSZWZQdHI8T0VTU3Rh
bmRhcmREZXJpdmF0aXZlcz4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzOworICAgIFJlZlB0cjxP
RVNWZXJ0ZXhBcnJheU9iamVjdD4gbV9vZXNWZXJ0ZXhBcnJheU9iamVjdDsKICAgICBSZWZQdHI8
V2ViS2l0TG9zZUNvbnRleHQ+IG1fd2Via2l0TG9zZUNvbnRleHQ7CiAKICAgICAvLyBIZWxwZXJz
IGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNs
dWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQ
YXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVM6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgYm9vbCBkZWZhdWx0T2Jq
ZWN0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UyhjdHgsIGRlZmF1bHRPYmplY3QpKTsKK30KKworV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgYm9v
bCBkZWZhdWx0T2JqZWN0KQorICAgIDogV2ViR0xPYmplY3QoY3R4KQorICAgICwgbV9kZWZhdWx0
T2JqZWN0KGRlZmF1bHRPYmplY3QpCisgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFsc2UpCisg
ICAgLCBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKDApCit7CisgICAgbV92ZXJ0ZXhBdHRyaWJT
dGF0ZS5yZXNpemUoY3R4LT5nZXRNYXhWZXJ0ZXhBdHRyaWJzKCkpOworICAgIAorICAgIGlmICgh
bV9kZWZhdWx0T2JqZWN0KSB7CisgICAgICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNv
bnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgICAgICBz
ZXRPYmplY3QoZXh0ZW5zaW9ucy0+Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSk7CisgICAgfQorfQor
Cit2b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9iamVjdEltcGwoUGxhdGZv
cm0zRE9iamVjdCBvYmplY3QpCit7CisgICAgaWYgKCFtX2RlZmF1bHRPYmplY3QpIHsKKyAgICAg
ICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQz
RCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVZlcnRleEFy
cmF5T0VTKG9iamVjdCk7CisgICAgfQorfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FU19oCisj
ZGVmaW5lIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVNfaAorCisjaW5jbHVkZSAiV2ViR0xCdWZm
ZXIuaCIKKyNpbmNsdWRlICJXZWJHTE9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgOiBwdWJsaWMgV2ViR0xPYmplY3Qg
eworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSB7IGRl
bGV0ZU9iamVjdCgpOyB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgYm9vbCk7CisgICAgCisg
ICAgLy8gQ2FjaGVkIHZhbHVlcyBmb3IgdmVydGV4IGF0dHJpYiByYW5nZSBjaGVja3MKKyAgICBj
bGFzcyBWZXJ0ZXhBdHRyaWJTdGF0ZSB7CisgICAgcHVibGljOgorICAgICAgICBWZXJ0ZXhBdHRy
aWJTdGF0ZSgpCisgICAgICAgIDogZW5hYmxlZChmYWxzZSkKKyAgICAgICAgLCBieXRlc1BlckVs
ZW1lbnQoMCkKKyAgICAgICAgLCBzaXplKDQpCisgICAgICAgICwgdHlwZShHcmFwaGljc0NvbnRl
eHQzRDo6RkxPQVQpCisgICAgICAgICwgbm9ybWFsaXplZChmYWxzZSkKKyAgICAgICAgLCBzdHJp
ZGUoMTYpCisgICAgICAgICwgb3JpZ2luYWxTdHJpZGUoMCkKKyAgICAgICAgLCBvZmZzZXQoMCkK
KyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQ7Cisg
ICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gYnVmZmVyQmluZGluZzsKKyAgICAgICAgR0MzRHNp
emVpIGJ5dGVzUGVyRWxlbWVudDsKKyAgICAgICAgR0MzRGludCBzaXplOworICAgICAgICBHQzNE
ZW51bSB0eXBlOworICAgICAgICBib29sIG5vcm1hbGl6ZWQ7CisgICAgICAgIEdDM0RzaXplaSBz
dHJpZGU7CisgICAgICAgIEdDM0RzaXplaSBvcmlnaW5hbFN0cmlkZTsKKyAgICAgICAgR0MzRGlu
dHB0ciBvZmZzZXQ7CisgICAgfTsKKyAgICAKKyAgICBib29sIGlzRGVmYXVsdE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdE9iamVjdDsgfQorICAgIAorICAgIGJvb2wgaGFzRXZlckJl
ZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgpICYmIG1faGFzRXZlckJlZW5Cb3VuZDsg
fQorICAgIHZvaWQgc2V0SGFzRXZlckJlZW5Cb3VuZCgpIHsgbV9oYXNFdmVyQmVlbkJvdW5kID0g
dHJ1ZTsgfQorICAgIAorICAgIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGdldEVsZW1lbnRBcnJh
eUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXI7IH0KKyAg
ICB2b2lkIHNldEVsZW1lbnRBcnJheUJ1ZmZlcihQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBidWZm
ZXIpIHsgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlciA9IGJ1ZmZlcjsgfQorICAgIAorICAgIFZl
cnRleEF0dHJpYlN0YXRlJiBnZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbnQgaW5kZXgpIHsgcmV0dXJu
IG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdOyB9CisKK3ByaXZhdGU6CisgICAgV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBib29sKTsKKworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVPYmplY3RJbXBsKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdmly
dHVhbCBib29sIGlzVmVydGV4QXJyYXkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgCisg
ICAgYm9vbCBtX2RlZmF1bHRPYmplY3Q7CisgICAgYm9vbCBtX2hhc0V2ZXJCZWVuQm91bmQ7Cisg
ICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyOworICAgIFZl
Y3RvcjxWZXJ0ZXhBdHRyaWJTdGF0ZT4gbV92ZXJ0ZXhBdHRyaWJTdGF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVNf
aApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFtD
b25kaXRpb25hbD1XRUJHTF0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyB7CisgICAgfTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMz
RC5oCShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnMzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVm
IEV4dGVuc2lvbnMzRF9oCiAjZGVmaW5lIEV4dGVuc2lvbnMzRF9oCiAKKyNpbmNsdWRlICJHcmFw
aGljc1R5cGVzM0QuaCIKKwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01Myw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyAgIEdMX09F
U190ZXh0dXJlX2Zsb2F0CiAgICAgLy8gICBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICAg
ICAvLyAgIEdMX09FU19yZ2I4X3JnYmE4CisgICAgLy8gICBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdAogCiAgICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUs
CiAgICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCkBAIC05Miw2ICs5NSw5
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gR0xfT0VTX3JnYjhfcmdiYTggbmFtZXMKICAgICAgICAg
UkdCOF9PRVMgPSAweDgwNTEsCiAgICAgICAgIFJHQkE4X09FUyA9IDB4ODA1OCwKKyAgICAgICAg
CisgICAgICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IG5hbWVzCisgICAgICAgIFZF
UlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNSwKICAgICB9OwogCiAgICAgLy8gR0xfQVJC
X3JvYnVzdG5lc3MKQEAgLTEwMSw3ICsxMDcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOwogICAgIAogICAg
IC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAwOyAgICAKKyAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7CisgICAgCisgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyAgICB2aXJ0dWFsIFBsYXRmb3JtM0RPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIEdDM0Rib29sZWFu
IGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCkgPSAwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00Miwy
NSArNDMsNiBAQAogI3VuZGVmIFZFUlNJT04KICNlbmRpZgogCi0vLyBHQzNEIHR5cGVzIG1hdGNo
IHRoZSBjb3JyZXNwb25kaW5nIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdMIEVTIDIuMAot
Ly8gaGVhZGVyIGZpbGUgZ2wyLmggZnJvbSBraHJvbm9zLm9yZy4KLXR5cGVkZWYgdW5zaWduZWQg
aW50IEdDM0RlbnVtOwotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdDM0Rib29sZWFuOwotdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgR0MzRGJpdGZpZWxkOwotdHlwZWRlZiBzaWduZWQgY2hhciBHQzNEYnl0
ZTsKLXR5cGVkZWYgdW5zaWduZWQgY2hhciBHQzNEdWJ5dGU7Ci10eXBlZGVmIHNob3J0IEdDM0Rz
aG9ydDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0MzRHVzaG9ydDsKLXR5cGVkZWYgaW50IEdD
M0RpbnQ7Ci10eXBlZGVmIGludCBHQzNEc2l6ZWk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBHQzNE
dWludDsKLXR5cGVkZWYgZmxvYXQgR0MzRGZsb2F0OwotdHlwZWRlZiBmbG9hdCBHQzNEY2xhbXBm
OwotdHlwZWRlZiBzaWduZWQgbG9uZyBpbnQgR0MzRGludHB0cjsKLXR5cGVkZWYgc2lnbmVkIGxv
bmcgaW50IEdDM0RzaXplaXB0cjsKLQotdHlwZWRlZiBHQzNEdWludCBQbGF0Zm9ybTNET2JqZWN0
OwotCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAj
aW5jbHVkZSA8T3BlbkdML09wZW5HTC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlczNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlczNELmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzM0QuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHcmFwaGljc1R5cGVzM0Rf
aAorI2RlZmluZSBHcmFwaGljc1R5cGVzM0RfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworLy8gR0MzRCB0eXBlcyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBHTCB0eXBlcyBhcyBkZWZp
bmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBmaWxlIGdsMi5oIGZyb20ga2hyb25vcy5v
cmcuCit0eXBlZGVmIHVuc2lnbmVkIGludCBHQzNEZW51bTsKK3R5cGVkZWYgdW5zaWduZWQgY2hh
ciBHQzNEYm9vbGVhbjsKK3R5cGVkZWYgdW5zaWduZWQgaW50IEdDM0RiaXRmaWVsZDsKK3R5cGVk
ZWYgc2lnbmVkIGNoYXIgR0MzRGJ5dGU7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0MzRHVieXRl
OwordHlwZWRlZiBzaG9ydCBHQzNEc2hvcnQ7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IEdDM0R1
c2hvcnQ7Cit0eXBlZGVmIGludCBHQzNEaW50OwordHlwZWRlZiBpbnQgR0MzRHNpemVpOwordHlw
ZWRlZiB1bnNpZ25lZCBpbnQgR0MzRHVpbnQ7Cit0eXBlZGVmIGZsb2F0IEdDM0RmbG9hdDsKK3R5
cGVkZWYgZmxvYXQgR0MzRGNsYW1wZjsKK3R5cGVkZWYgc2lnbmVkIGxvbmcgaW50IEdDM0RpbnRw
dHI7Cit0eXBlZGVmIHNpZ25lZCBsb25nIGludCBHQzNEc2l6ZWlwdHI7CisKK3R5cGVkZWYgR0Mz
RHVpbnQgUGxhdGZvcm0zRE9iamVjdDsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmgJKHJldmlzaW9uIDc3ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNiArNDYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcg
c3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxv
bmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5z
aWduZWQgbG9uZyBmaWx0ZXIpOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywg
dW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpOworICAgIHZpcnR1YWwgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybTNET2JqZWN0KTsKKyAgICB2aXJ0dWFsIEdDM0Rib29sZWFuIGlzVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm0zRE9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybTNET2JqZWN0KTsKIAogICAgIGVudW0gewogICAgICAgICAvLyBHTF9DSFJPTUlVTV9t
YXBfc3ViIChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9BUkJfdmVydGV4X2J1ZmZlcl9vYmplY3Qp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAkocmV2aXNpb24gNzc4MzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsMTAgQEAgYm9vbCBFeHRlbnNpb25zM0RP
cGVuR0w6OnN1cHBvcnRzKGNvbnN0IAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQg
YXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwg
bmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpCiAgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0Iik7CisgICAg
CisgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyAgICBpZiAobmFtZSA9PSAiR0xf
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CiAKICAgICAv
LyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgZGVyaXZhdGl2ZSBmdW5j
dGlvbnMKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikKQEAg
LTEyNyw2ICsxMzEsNTMgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0
bwogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKK1BsYXRmb3JtM0RPYmpl
Y3QgRXh0ZW5zaW9uczNET3BlbkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCit7CisgICAgbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyNpZiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlf
b2JqZWN0CisgICAgR0x1aW50IGFycmF5ID0gMDsKKyAgICBnbEdlblZlcnRleEFycmF5c0FQUExF
KDEsICZhcnJheSk7CisgICAgcmV0dXJuIGFycmF5OworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCit2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm0zRE9iamVjdCBhcnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyNpZiBHTF9B
UFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgZ2xEZWxldGVWZXJ0ZXhBcnJheXNBUFBMRSgx
LCAmYXJyYXkpOworI2Vsc2UKKyNlbmRpZgorfQorCitHQzNEYm9vbGVhbiBFeHRlbnNpb25zM0RP
cGVuR0w6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJheSkKK3sKKyAgICBp
ZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gR0xfRkFMU0U7CisgICAgCisgICAgbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyNpZiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0
CisgICAgcmV0dXJuIGdsSXNWZXJ0ZXhBcnJheUFQUExFKGFycmF5KTsKKyNlbHNlCisgICAgcmV0
dXJuIEdMX0ZBTFNFOworI2VuZGlmCit9CisKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMOjpiaW5k
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJheSkKK3sKKyAgICBtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworI2lmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QK
KyAgICBnbEJpbmRWZXJ0ZXhBcnJheUFQUExFKGFycmF5KTsKKyNlbHNlCisgICAgQVNTRVJUX1VO
VVNFRChhcnJheSwgc3VwcG9ydHMoYXJyYXkpKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTC5oCShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVFbmFibGVkKGNvbnN0
IFN0cmluZyYpOwogICAgIHZpcnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAs
IGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0
WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIp
OwotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50
ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsK
KyAgICAKKyAgICB2aXJ0dWFsIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgdmlydHVhbCBHQzNEYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RP
YmplY3QpOworICAgIHZpcnR1YWwgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9i
amVjdCk7CiAKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGlu
c3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHQzRCBpbXBsZW1lbnRhdGlvbnMuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzc4NjcpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEx
LTAyLTA3ICBCZW4gVmFuaWsgIDxiZW52YW5pa0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyA1Mzk0MDogSW1wbGVtZW50IHRo
ZSBPRVNfdmVydGV4X2FycmF5X29iamVjdCBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzOTQwCisKKyAgICAgICAgU3R1YmJl
ZCBvdXQgbWV0aG9kcyBmb3IgdGhlIG5ldyBPRVNfdmVydGV4X2FycmF5X29iamVjdCBtZXRob2Rz
LgorCisgICAgICAgICogc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OmlzVmVydGV4QXJyYXlP
RVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OmJpbmRWZXJ0ZXhB
cnJheU9FUyk6CisKIDIwMTEtMDItMDQgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCShy
ZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMz
RENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMjQgQEAgdm9pZCBFeHRl
bnNpb25zM0RDaHJvbWl1bTo6Y29weVRleHR1cmVUbwogICAgIG1faW50ZXJuYWwtPmNvcHlUZXh0
dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odGV4dHVyZSwgcGFyZW50VGV4dHVyZSk7CiB9CiAK
K1BsYXRmb3JtM0RPYmplY3QgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmNyZWF0ZVZlcnRleEFycmF5
T0VTKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6
ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCkKK3sKK30KKworR0MzRGJvb2xl
YW4gRXh0ZW5zaW9uczNEQ2hyb21pdW06OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVj
dCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Ymlu
ZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81568</attachid>
            <date>2011-02-07 19:14:16 -0800</date>
            <delta_ts>2011-02-07 19:38:19 -0800</delta_ts>
            <desc>Implementation of OES_vertex_array_object for WebKit/OSX (reupload)</desc>
            <filename>OES_vertex_array_object.patch</filename>
            <type>text/plain</type>
            <size>86014</size>
            <attacher name="Ben Vanik">ben.vanik</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3ODY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA3IEBACisyMDExLTAyLTA3ICBCZW4gVmFu
aWsgIDxiZW52YW5pa0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ1ZyA1Mzk0MDogSW1wbGVtZW50IHRoZSBPRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUzOTQwCisKKyAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgZXh0ZW5zaW9uIGFkZGluZyB0aGUgT0VT
VmVydGV4QXJyYXlPYmplY3QKKyAgICAgICAgZXh0ZW5zaW9uIGNvbnRhaW5lciBhbmQgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUyBWQU8gb2JqZWN0LiBUaGUgZXh0ZW5zaW9uIGlzIHBsdW1iZWQg
dGhyb3VnaAorICAgICAgICB0aGUgRXh0ZW5zaW9uczNEIGludGVyZmFjZSBhbmQgaW1wbGVtZW50
ZWQgaW4gdGhlIEV4dGVuc2lvbnMzRE9wZW5HTCAoV2ViS2l0L09TWCkgdmVyc2lvbiB3aGVuCisg
ICAgICAgIGl0IGlzIGF2YWlsYWJsZS4KKyAgICAgICAgVHdvIGJpZyBjaGFuZ2VzIHRvdWNoaW5n
IGNvZGUgb3V0c2lkZSBvZiB0aGUgZXh0ZW5zaW9uOgorICAgICAgICAqIE1vdmVkIHRoZSB0eXBl
ZGVmcyBhdCB0aGUgdG9wIG9mIEdyYXBoaWNzQ29udGV4dDNELmggdG8gR3JhcGhpY3NUeXBlczNE
LmggKG1vZGVsZWQgYWZ0ZXIKKyAgICAgICAgICBHcmFwaGljc1R5cGVzLmgpLiBUaGV5IGFyZSBu
b3QgbmFtZXNwYWNlZCBhcyB0aGV5IHdlcmVuJ3QgYmVmb3JlLgorICAgICAgICAqIFRvIG1ha2Ug
dGhlIGNvZGUgY2xlYW5lci9jbGVhcmVyIGFsbCB2ZXJ0ZXggYXR0cmlidXRlIHN0YXRlIGhhcyBi
ZWVuIG1vdmVkIHRvIHRoZQorICAgICAgICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgdHlw
ZSAoY2xhc3MgVmVydGV4QXR0cmliU3RhdGUpIGV4Y2VwdCBmb3IgdmFsdWVzIHdoaWNoIGFyZSBz
dGlsbAorICAgICAgICAgIG9uIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQuIEEgZGVmYXVsdCBW
QU8gaXMgbm93IHVzZWQgdG8gc3RvcmUgdGhlIGV4aXN0aW5nIGF0dHJpYnV0ZQorICAgICAgICAg
IHN0YXRlcyBmb3Igd2hlbiBubyBvdGhlciBWQU8gaXMgdXNlZC4gQ29kZSBpbiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgZGVhbGluZyB3aXRoIGJ1ZmZlcnMgYW5kCisgICAgICAgICAgdmVydGV4IGF0
dHJpYnV0ZXMgbm93IGRlZmVycyB0byBvciBzdG9yZXMgdmFsdWVzIGluIHRoZSBib3VuZCBhcnJh
eSBvYmplY3QuCisgICAgICAgIAorICAgICAgICBUZXN0ZWQgYWdhaW5zdCB0aGUgV2ViR0wgY29u
Zm9ybWFuY2Ugc3VpdGUgYW5kIHRoZSBuZXcKKyAgICAgICAgb2VzLXZlcnRleC1hcnJheS1vYmpl
Y3QgdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6fk9FU1ZlcnRleEFy
cmF5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXRO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZVZlcnRleEFycmF5
T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVWZXJ0
ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6aXNW
ZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6
YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVFbGVtZW50QXJyYXlTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJ
bmRleEFycmF5UHJlY2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlUmVuZGVyaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCdWZm
ZXJEYXRhUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYmZJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmVydGV4QXR0cmliZnZJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6aW5pdFZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzaW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRy
aWIwU2ltdWxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldE51bWJlck9mRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbk51bWJlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldE1heFZlcnRleEF0dHJpYnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6VmVydGV4QXR0cmliVmFsdWU6OlZlcnRleEF0dHJp
YlZhbHVlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6fldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmli
U3RhdGU6OlZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVM6OmlzRGVmYXVsdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjpoYXNFdmVyQmVlbkJvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OnNldEhhc0V2ZXJCZWVuQm91bmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Z2V0RWxlbWVudEFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OnNl
dEVsZW1lbnRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTOjpnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzM0QuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnMzRE9wZW5HTDo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3Bl
bkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
M0RPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnMzRE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zM0RPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oOgorCiAyMDExLTAyLTA3ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByNzc4NDguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMjkzLDYgKzI5Myw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2Fu
dmFzL0ludDhBcnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVz
LmlkbAogICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwKKyAgICBodG1sL2NhbnZh
cy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5p
ZGwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKICAgICBodG1sL2NhbnZhcy9VaW50
OEFycmF5LmlkbApAQCAtMzA2LDYgKzMwNyw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAg
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmlkbAogICAgIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVy
ZS5pZGwKICAgICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5pZGwKKyAgICBodG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbAogICAgIGh0bWwvY2FudmFzL1dl
YktpdExvc2VDb250ZXh0LmlkbAogCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5p
ZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNzc4MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTQsNiArMzE0LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTm90aWZpY2F0aW9uQ2VudGVyIFwK
ICAgICBPRVNTdGFuZGFyZERlcml2YXRpdmVzIFwKICAgICBPRVNUZXh0dXJlRmxvYXQgXAorCU9F
U1ZlcnRleEFycmF5T2JqZWN0IFwKKwlXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIFwKICAgICBP
dmVyZmxvd0V2ZW50IFwKICAgICBQYWdlVHJhbnNpdGlvbkV2ZW50IFwKICAgICBQZXJmb3JtYW5j
ZSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDg0LDYgKzQ4NCw4IEBA
IHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1Rl
eHR1cmVGbG9hdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPRVNUZXh0dXJlRmxv
YXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1ZlcnRleEFycmF5T2JqZWN0LmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1ZlcnRleEFycmF5T2JqZWN0LmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKQEAgLTU5MCw2ICs1OTIsOCBAQCB3ZWJjb3Jl
X2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFRleHR1
cmUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIFwKQEAgLTE1ODUs
MTMgKzE1ODksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0ludDhBcnJheS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhB
cnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnRlZ3JhbFR5cGVkQXJyYXlC
YXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRp
dmVzLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQxNkFycmF5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2
QXJyYXkuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuY3BwIFwK
QEAgLTQ4MTIsNyArNDgxMCwxOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVGV4dHVyZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFVuaWZvcm1Mb2NhdGlvbi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VW5pZm9ybUxvY2F0aW9uLmgKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFVuaWZv
cm1Mb2NhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFu
ZGFyZERlcml2YXRpdmVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxv
YXQuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5LmggXAorCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmNwcCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaAogZW5kaWYgICMgRU5EIEVOQUJMRV9XRUJH
TAogCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3BwOiBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTIxOCw2ICsyMTgsNyBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0ludDhB
cnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsJywK
KyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvVWludDMyQXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50
OEFycmF5LmlkbCcsCkBAIC0yMzIsNiArMjMzLDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTFNoYWRlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVGV4dHVy
ZS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmlk
bCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5p
ZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmlkbCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsJywKQEAgLTE5MjksNiArMTkz
MSw4IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCcsCisgICAgICAgICAgICAnaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwJywKKyAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9U
eXBlZEFycmF5QmFzZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MTZBcnJheS5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmgnLApAQCAtMTk2Miw2
ICsxOTY2LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oJywKKyAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCcsCisgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYktpdExvc2VDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0NT
U1ByZWxvYWRTY2FubmVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2aXNpb24gNzc4Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYg
KzE5NSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmlkbCBcCiAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5pZGwgXAogICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwgXAorICAgIGh0bWwv
Y2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xB
Y3RpdmVJbmZvLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaWRsIFwKICAgICBo
dG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCBcCkBAIC0yMDYsNiArMjA3LDcg
QEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbCBcCiAg
ICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xV
bmlmb3JtTG9jYXRpb24uaWRsIFwKKyAgICBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaWRsIFwKICAg
ICBodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCBcCiAgICAgaHRtbC9jYW52YXMvVWludDMyQXJy
YXkuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zODMxLDYgKzM4MzEsOCBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTFNoYWRlci5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmggXAorICAgICAgICBo
dG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oIFwKKyAgICAgICAgaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXkuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXApAQCAtMzg1Niw2ICszODU4LDggQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2Vi
R0xTaGFkZXIuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIFwKKyAgICAg
ICAgaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIFwKKyAgICAgICAgaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXkuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0
dXJlLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmNwcCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA3NzgzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIAlhcmNoaXZlVmVyc2lvbiA9
IDE7CiAJY2xhc3NlcyA9IHsKIAl9OwotCW9iamVjdFZlcnNpb24gPSA0MjsKKwlvYmplY3RWZXJz
aW9uID0gNDQ7CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNl
Y3Rpb24gKi8KQEAgLTE2NDksNiArMTY0OSwxNSBAQAogCQk3NkZDMkIwQjEyMzcwREEwMDA2QTk5
MUEgLyogRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc2RkMyQjA4MTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3Bw
ICovOyB9OwogCQk3NkZDMkIwQzEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkZDMkIwOTEyMzcw
REEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggKi87IH07CiAJCTc2RkYxN0UzMTEyMzU2NzMw
MDFENjFCNSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NkZGMTdFMjExMjM1NjczMDAxRDYxQjUgLyogUGx1Z2luVmll
d05vbmUuY3BwICovOyB9OworCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4
QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzdBMTdBNkUxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0LmNw
cCAqLzsgfTsKKwkJNzdBMTdBNzIxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0Ex
N0E2RjEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKKwkJ
NzdBMTdBNzcxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdBMTdBNzQx
MkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICovOyB9Owor
CQk3N0ExN0E3ODEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdBMTdBNzUx
MkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCAqLzsgfTsKKwkJ
NzdBMTdBN0IxMkYyODkwQjAwNEUwMkY2IC8qIEdyYXBoaWNzVHlwZXMzRC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdBMTdBN0ExMkYyODkwQjAwNEUw
MkY2IC8qIEdyYXBoaWNzVHlwZXMzRC5oICovOyB9OworCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAy
RjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0FBMjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi87IH07CisJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJGNiAv
KiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0FBMzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhB
cnJheU9iamVjdC5oICovOyB9OworCQk3N0VGNjJGMzEyRjlEQjc0MDBDNzdCRDIgLyogSlNXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc3RUY2MkYxMTJGOURCNzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuY3BwICovOyB9OworCQk3N0VGNjJGNDEyRjlEQjc0MDBDNzdCRDIgLyog
SlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3N0VGNjJGMjEyRjlEQjc0MDBDNzdCRDIgLyogSlNXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmggKi87IH07CiAJCTc5QUM5MjE4MTA5OTQ1QzgwMDIxMjY2RSAv
KiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25F
dmVudC5jcHAgKi87IH07CiAJCTc5QUM5MjE5MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc5QUM5MjE3MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsK
IAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUUxMDkxOTM5
QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OwpAQCAtODEwMyw2ICs4MTEy
LDE3IEBACiAJCTc2RkMyQjA5MTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2RkMyQjBBMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxp
c3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVRva2VuTGlzdC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RkYxN0UyMTEyMzU2NzMwMDFENjFCNSAvKiBQbHVnaW5W
aWV3Tm9uZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5W
aWV3Tm9uZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QTZFMTJGMjgx
ODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA7IHBhdGggPSBjYW52
YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3N0ExN0E2RjEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT0VTVmVydGV4QXJyYXlPYmplY3QuaDsgcGF0
aCA9IGNhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3N0ExN0E3MDEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1ZlcnRleEFycmF5T2JqZWN0LmlkbDsgcGF0
aCA9IGNhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTc3QTE3QTc0MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3N0ExN0E3NTEyRjI4NjQy
MDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg7IHBhdGggPSBjYW52
YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3N0ExN0E3NjEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5p
ZGw7IHBhdGggPSBjYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QTdBMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGlj
c1R5cGVzM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NUeXBl
czNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QUEyMTJGMjhCMkEwMDRF
MDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3N0ExN0FBMzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhB
cnJheU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09FU1ZlcnRl
eEFycmF5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3RUY2MkYxMTJG
OURCNzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdFRjYyRjIxMkY5REI3NDAwQzc3
QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRp
b25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbXBv
c2l0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUFDOTIxNzEw
OTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ29tcG9zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wb3NpdGlvbkV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzU2LDYgKzEzMzc2LDkgQEAK
IAkJCQk2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLywK
IAkJCQk2RUJGMEU0NjEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmggKi8sCiAJ
CQkJNkVCRjBFNDcxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5pZGwgKi8sCisJ
CQkJNzdBMTdBNkUxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCAq
LywKKwkJCQk3N0ExN0E2RjEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3Qu
aCAqLywKKwkJCQk3N0ExN0E3MDEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmpl
Y3QuaWRsICovLAogCQkJCTZFOTZCQjFCMTE5ODZFRTEwMDdEOTRDRCAvKiBUeXBlZEFycmF5QmFz
ZS5oICovLAogCQkJCTQ5RUVDRERDMTA1MDNDMjMwMDA5OUZBQiAvKiBVaW50MTZBcnJheS5jcHAg
Ki8sCiAJCQkJNDlFRUNEREQxMDUwM0MyNDAwMDk5RkFCIC8qIFVpbnQxNkFycmF5LmggKi8sCkBA
IC0xMzQwNCw2ICsxMzQyNyw5IEBACiAJCQkJMEMzRjFGNTcxMEM4ODcxMjAwRDcyQ0UxIC8qIFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLywKIAkJCQkwQzNGMUY1ODEwQzg4NzEyMDBENzJDRTEg
LyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLywKIAkJCQkwQzNGMUY1OTEwQzg4NzEyMDBENzJD
RTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsICovLAorCQkJCTc3QTE3QTc0MTJGMjg2NDIw
MDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCAqLywKKwkJCQk3N0ExN0E3
NTEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovLAorCQkJ
CTc3QTE3QTc2MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlk
bCAqLywKIAkJCQk5M0YxRDVCNzEyRDUzMkM0MDA4MzJCRUMgLyogV2ViS2l0TG9zZUNvbnRleHQu
Y3BwICovLAogCQkJCTkzRjFENUI4MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJLaXRMb3NlQ29udGV4
dC5oICovLAogCQkJCTkzRjFENUI5MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJLaXRMb3NlQ29udGV4
dC5pZGwgKi8sCkBAIC0xNjI2NCw2ICsxNjI5MCw4IEBACiAJCQkJOTAwMTc4N0YxMkUwMzcwNzAw
NjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovLAogCQkJCTZFQkYwRTc0MTJB
OTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAgKi8sCiAJCQkJNkVCRjBFNzUx
MkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi8sCisJCQkJNzdBMTdBQTIx
MkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwICovLAorCQkJCTc3
QTE3QUEzMTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggKi8sCiAJ
CQkJQkNFRjQ1RjMwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1ldHJpY3MuY3BwICovLAogCQkJ
CUJDRUY0NUY0MEU2ODdCNUMwMDFDMTI4NyAvKiBKU1RleHRNZXRyaWNzLmggKi8sCiAJCQkJRTQ0
NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5jcHAgKi8sCkBAIC0xNjI5Niw2
ICsxNjMyNCw4IEBACiAJCQkJNDlDN0I5OTIxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xUZXh0
dXJlLmggKi8sCiAJCQkJMEM0NTM0MjUxMENEQkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3Jt
TG9jYXRpb24uY3BwICovLAogCQkJCTBDNDUzNDI2MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdM
VW5pZm9ybUxvY2F0aW9uLmggKi8sCisJCQkJNzdFRjYyRjExMkY5REI3NDAwQzc3QkQyIC8qIEpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgKi8sCisJCQkJNzdFRjYyRjIxMkY5REI3NDAw
Qzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovLAogCQkJCTkzRjFENUJF
MTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYktpdExvc2VDb250ZXh0LmNwcCAqLywKIAkJCQk5M0Yx
RDVCRjEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJLaXRMb3NlQ29udGV4dC5oICovLAogCQkJKTsK
QEAgLTE3NTM5LDYgKzE3NTY5LDcgQEAKIAkJCQkwRjU4MEIwQjBGMTJBMjY5MDA1MUQ2ODkgLyog
R3JhcGhpY3NMYXllckNsaWVudC5oICovLAogCQkJCUIyQTAxNTk0MEFGNkNENTMwMDZCQ0UwRSAv
KiBHcmFwaGljc1R5cGVzLmNwcCAqLywKIAkJCQlCMkEwMTU5NTBBRjZDRDUzMDA2QkNFMEUgLyog
R3JhcGhpY3NUeXBlcy5oICovLAorCQkJCTc3QTE3QTdBMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFw
aGljc1R5cGVzM0QuaCAqLywKIAkJCQlCMjc1MzU0MDBCMDUzODE0MDAyQ0U2NEYgLyogSWNvbi5o
ICovLAogCQkJCUIyNzUzNTQxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5jcHAgKi8sCiAJCQkJ
QjI3NTM1NDIwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggKi8sCkBAIC0yMjQ5Niw2ICsyMjUy
NywxMSBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29k
ZWNVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyog
WFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3N0ExN0E3MjEyRjI4MTgyMDA0RTAyRjYg
LyogT0VTVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTc3QTE3QTc4MTJG
Mjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3N0ExN0E3QjEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NUeXBlczNELmggaW4g
SGVhZGVycyAqLywKKwkJCQk3N0ExN0FBNzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhB
cnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzdFRjYyRjQxMkY5REI3NDAwQzc3QkQy
IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjU1
Myw2ICsyMjU4OSw5IEBACiAvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAkJMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJY
UHJvamVjdDsKKworCisKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAy
QjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJX
ZWJDb3JlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7CiAJCQlk
ZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CkBAIC0yNTE5OCw2ICsyNTIzNywxMCBAQAogCQkJ
CUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM0M0NCODExMkYyNUU1MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYgLyogT0VT
VmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzdBMTdBNzcxMkYyODY0
MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNzdBMTdBQTYxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzdFRjYyRjMxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDc3ODM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKICNpbmNsdWRlICJKU09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCIKICNpbmNsdWRlICJKU09FU1RleHR1cmVGbG9hdC5oIgor
I2luY2x1ZGUgIkpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKKyNpbmNsdWRlICJKU1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlICJKU1dlYkdMQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiSlNGbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJKU1dlYkdMRnJhbWVidWZmZXIuaCIKQEAg
LTUzLDYgKzU1LDggQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk9F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCIKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNp
bmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0
MzJBcnJheS5oIgogI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCkBAIC0xMTUsNiArMTE5LDgg
QEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRAogICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xUZXh0dXJlKCkpOwogICAg
IGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXk6CiAgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVM6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5n
ZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTc5LDYg
KzE4NSw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0QKICAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxPRVNTdGFuZGFy
ZERlcml2YXRpdmVzKj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VT
VGV4dHVyZUZsb2F0TmFtZToKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNpb24pKTsKKyAgICBjYXNlIFdl
YkdMRXh0ZW5zaW9uOjpPRVNWZXJ0ZXhBcnJheU9iamVjdE5hbWU6CisgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8T0VTVmVydGV4QXJyYXlPYmplY3Qq
PihleHRlbnNpb24pKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIGpzTnVsbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYg
KzUwLDcgQEAKICNpbmNsdWRlICJWOEludDhBcnJheS5oIgogI2luY2x1ZGUgIlY4T0VTU3RhbmRh
cmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIlY4T0VTVGV4dHVyZUZsb2F0LmgiCisjaW5jbHVk
ZSAiVjhPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNs
dWRlICJWOFVpbnQxNkFycmF5LmgiCiAjaW5jbHVkZSAiVjhVaW50MzJBcnJheS5oIgpAQCAtNjEs
NiArNjIsNyBAQAogI2luY2x1ZGUgIlY4V2ViR0xTaGFkZXIuaCIKICNpbmNsdWRlICJWOFdlYkdM
VGV4dHVyZS5oIgogI2luY2x1ZGUgIlY4V2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKKyNpbmNsdWRl
ICJWOFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCkBAIC0xNDYsNiArMTQ4
LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KAogICAgICAgICBy
ZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5m
bzo6a1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OgogICAgICAgICByZXR1cm4gdG9WOChpbmZv
LmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzoKKyAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5n
ZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0xNjcs
NiArMTcxLDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KAogICAg
IGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1RleHR1cmVGbG9hdE5hbWU6CiAgICAgICAgIGV4dGVu
c2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8T0VTVGV4dHVyZUZsb2F0Kj4oZXh0ZW5zaW9u
KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1ZlcnRleEFy
cmF5T2JqZWN0TmFtZToKKyAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2Fz
dDxPRVNWZXJ0ZXhBcnJheU9iamVjdCo+KGV4dGVuc2lvbikpOworICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgQVNTRVJUKCFleHRlbnNpb25PYmplY3QuSXNFbXB0eSgpKTsKICAgICBWOERPTVdy
YXBwZXI6OnNldEhpZGRlblJlZmVyZW5jZShjb250ZXh0T2JqZWN0LCBleHRlbnNpb25PYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFy
cmF5T2JqZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNs
dWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK09FU1ZlcnRleEFy
cmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lvbigpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
K3sKK30KKworT0VTVmVydGV4QXJyYXlPYmplY3Q6On5PRVNWZXJ0ZXhBcnJheU9iamVjdCgpCit7
Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU1ZlcnRleEFycmF5T2JqZWN0
OjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT0VTVmVydGV4QXJyYXlPYmplY3ROYW1l
OworfQorCitQYXNzUmVmUHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0PiBPRVNWZXJ0ZXhBcnJheU9i
amVjdDo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE9FU1ZlcnRleEFycmF5T2JqZWN0KGNvbnRleHQpKTsKK30KKworUGFz
c1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQoreworICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExv
c3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVM+IG8gPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUobV9jb250
ZXh0LCBmYWxzZSk7CisgICAgbV9jb250ZXh0LT5hZGRPYmplY3Qoby5nZXQoKSk7CisgICAgcmV0
dXJuIG87Cit9CisKK3ZvaWQgT0VTVmVydGV4QXJyYXlPYmplY3Q6OmRlbGV0ZVZlcnRleEFycmF5
T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQoreworICAgIGlmICgh
YXJyYXlPYmplY3QgfHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBhcnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KCk7Cit9CisKK0dDM0Rib29s
ZWFuIE9FU1ZlcnRleEFycmF5T2JqZWN0Ojppc1ZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQoreworICAgIGlmICghYXJyYXlPYmplY3QgfHwgbV9j
b250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlm
ICghYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5ncmFwaGljc0Nv
bnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmlzVmVy
dGV4QXJyYXlPRVMoYXJyYXlPYmplY3QtPm9iamVjdCgpKTsKK30KKwordm9pZCBPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMq
IGFycmF5T2JqZWN0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBVTlVTRURfUEFSQU0oZWMp
OworICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIGlmIChhcnJheU9iamVjdCAmJiBhcnJheU9iamVjdC0+Y29udGV4dCgpICE9IG1f
Y29udGV4dCkgeworICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0g
bV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYg
KGFycmF5T2JqZWN0ICYmICFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlP
YmplY3QtPm9iamVjdCgpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmJpbmRWZXJ0ZXhBcnJheU9F
UyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOworICAgICAgICAKKyAgICAgICAgYXJyYXlPYmplY3Qt
PnNldEhhc0V2ZXJCZWVuQm91bmQoKTsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRCb3VuZFZlcnRl
eEFycmF5T2JqZWN0KGFycmF5T2JqZWN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBleHRlbnNp
b25zLT5iaW5kVmVydGV4QXJyYXlPRVMoMCk7CisgICAgICAgIAorICAgICAgICBtX2NvbnRleHQt
PnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7CisgICAgfQorICAgIAorICAgIG1fY29udGV4
dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT0VTVmVydGV4QXJyYXlP
YmplY3RfaAorI2RlZmluZSBPRVNWZXJ0ZXhBcnJheU9iamVjdF9oCisKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiV2Vi
R0xFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCisK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUzsKKworY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3QgOiBwdWJsaWMgV2ViR0xFeHRlbnNp
b24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0
PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIH5PRVNWZXJ0
ZXhBcnJheU9iamVjdCgpOworICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Q7CisgICAgCisgICAgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpOworICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUyopOworICAgIEdDM0Rib29sZWFuIGlzVmVydGV4QXJyYXlPRVMo
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyopOworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VT
KFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqLCBFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6
CisgICAgT0VTVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisgICAg
CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBPRVNWZXJ0ZXhBcnJheU9iamVjdF9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
aWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4
QXJyYXlPYmplY3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9k
dWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9V0VCR0wsIE9taXRDb25zdHJ1
Y3RvciwgRG9udENoZWNrRW51bXNdIE9FU1ZlcnRleEFycmF5T2JqZWN0IHsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNTsKKyAgICAg
ICAgCisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMgY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10g
dm9pZCAgICAgICAgIGRlbGV0ZVZlcnRleEFycmF5T0VTKGluIFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMgYXJyYXlPYmplY3QpOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBib29sZWFu
ICAgICAgaXNWZXJ0ZXhBcnJheU9FUyhpbiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIGFycmF5
T2JqZWN0KTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGJpbmRW
ZXJ0ZXhBcnJheU9FUyhpbiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIGFycmF5T2JqZWN0KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAgcHVibGljOgogICAgICAgICBXZWJLaXRMb3NlQ29udGV4dE5hbWUsCiAgICAg
ICAgIE9FU1RleHR1cmVGbG9hdE5hbWUsCiAgICAgICAgIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXNO
YW1lLAorICAgICAgICBPRVNWZXJ0ZXhBcnJheU9iamVjdE5hbWUsCiAgICAgfTsKIAogICAgIHZp
cnR1YWwgfldlYkdMRXh0ZW5zaW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEdldEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMR2V0SW5mby5jcHAJKHJldmlzaW9uIDc3ODM3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVm
ZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNCw2ICsxMzUs
MTIgQEAgV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxVaQogewogfQogCitX
ZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVM+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UykKKyAgICAsIG1fd2ViZ2xWZXJ0ZXhBcnJheU9iamVjdCh2YWx1ZSkKK3sKK30KKwogV2ViR0xH
ZXRJbmZvOjp+V2ViR0xHZXRJbmZvKCkKIHsKIH0KQEAgLTIyNyw2ICsyMzQsMTIgQEAgUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBXZWJHTEdldEluZm86OmdldAogICAgIHJldHVybiBtX3dlYmdsVW5z
aWduZWRCeXRlQXJyYXk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uz4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk7
CisgICAgcmV0dXJuIG1fd2ViZ2xWZXJ0ZXhBcnJheU9iamVjdDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgJKHJldmlzaW9uIDc3ODM3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjUsNyArNjYsOCBAQCBwdWJsaWM6CiAgICAgICAg
IGtUeXBlV2ViR0xQcm9ncmFtLAogICAgICAgICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAogICAg
ICAgICBrVHlwZVdlYkdMVGV4dHVyZSwKLSAgICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5CisgICAgICAgIGtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSwKKyAgICAgICAga1R5cGVX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLAogICAgIH07CiAKICAgICBXZWJHTEdldEluZm8oYm9v
bCB2YWx1ZSk7CkBAIC04Niw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICBXZWJHTEdldEluZm8oUGFz
c1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gdmFsdWUpOwogICAgIFdlYkdMR2V0SW5mbyhQYXNz
UmVmUHRyPFdlYkdMVGV4dHVyZT4gdmFsdWUpOwogICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTPiB2YWx1ZSk7CiAKICAgICB2aXJ0dWFsIH5XZWJHTEdldEluZm8o
KTsKIApAQCAtMTA3LDYgKzExMCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFdlYkdMUmVu
ZGVyYnVmZmVyPiBnZXRXZWJHTFJlbmRlcmJ1ZmZlcigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8
V2ViR0xUZXh0dXJlPiBnZXRXZWJHTFRleHR1cmUoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFVp
bnQ4QXJyYXk+IGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IGdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKQEAgLTEyNiw2ICsxMzAs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbV93ZWJnbFJlbmRl
cmJ1ZmZlcjsKICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3dlYmdsVGV4dHVyZTsKICAgICBS
ZWZQdHI8VWludDhBcnJheT4gbV93ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OworICAgIFJlZlB0cjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBtX3dlYmdsVmVydGV4QXJyYXlPYmplY3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDc3ODM3KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIk9FU1Rl
eHR1cmVGbG9hdC5oIgorI2luY2x1ZGUgIk9FU1ZlcnRleEFycmF5T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJVaW50
MTZBcnJheS5oIgpAQCAtMzgxLDcgKzM4Miw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojppbml0aWFsaXplTmUKICAgICBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEgPSBmYWxzZTsKICAg
ICBtX3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJST1dT
RVJfREVGQVVMVF9XRUJHTDsKICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSAwOwotICAgIG1fYm91
bmRFbGVtZW50QXJyYXlCdWZmZXIgPSAwOwogICAgIG1fY3VycmVudFByb2dyYW0gPSAwOwogICAg
IG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmcgPSAw
OwpAQCAtMzkxLDcgKzM5MSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFs
aXplTmUKICAgICBtX3N0ZW5jaWxGdW5jUmVmQmFjayA9IDA7CiAgICAgbV9zdGVuY2lsRnVuY01h
c2sgPSAweEZGRkZGRkZGOwogICAgIG1fc3RlbmNpbEZ1bmNNYXNrQmFjayA9IDB4RkZGRkZGRkY7
Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5jbGVhcigpOwogCiAgICAgR0MzRGludCBudW1Db21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzID0gMDsKICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdy
YXBoaWNzQ29udGV4dDNEOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJm51bUNv
bWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwpAQCAtNDAxLDEzICs0MDAsMTkgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZQogICAgIEdDM0RpbnQgbnVtVmVydGV4QXR0
cmlicyA9IDA7CiAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6
TUFYX1ZFUlRFWF9BVFRSSUJTLCAmbnVtVmVydGV4QXR0cmlicyk7CiAgICAgbV9tYXhWZXJ0ZXhB
dHRyaWJzID0gbnVtVmVydGV4QXR0cmliczsKLQorICAgIAogICAgIG1fbWF4VGV4dHVyZVNpemUg
PSAwOwogICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9U
RVhUVVJFX1NJWkUsICZtX21heFRleHR1cmVTaXplKTsKICAgICBtX21heFRleHR1cmVMZXZlbCA9
IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQobV9tYXhUZXh0dXJlU2l6ZSwgbV9tYXhU
ZXh0dXJlU2l6ZSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUgPSAwOwogICAgIG1fY29u
dGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9DVUJFX01BUF9URVhUVVJF
X1NJWkUsICZtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVy
ZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0
dXJlU2l6ZSwgbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUpOworICAgIAorICAgIG1fZGVmYXVsdFZl
cnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKHRoaXMs
IHRydWUpOworICAgIGFkZE9iamVjdChtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKSk7
CisgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJyYXlPYmpl
Y3Q7CisgICAgCisgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZS5yZXNpemUobV9tYXhWZXJ0ZXhBdHRy
aWJzKTsKIAogICAgIGlmICghaXNHTEVTMk5QT1RTdHJpY3QoKSkKICAgICAgICAgY3JlYXRlRmFs
bGJhY2tCbGFja1RleHR1cmVzMXgxKCk7CkBAIC01NzYsNyArNTgxLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIoRwogICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkFSUkFZX0JVRkZFUikKICAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gYnVm
ZmVyOwogICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9B
UlJBWV9CVUZGRVIpCi0gICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBidWZmZXI7
CisgICAgICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+c2V0RWxlbWVudEFycmF5QnVmZmVy
KGJ1ZmZlcik7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTEwOTIsMTAgKzEwOTcsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZUJ1
ZmZlcgogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fYm91bmRBcnJheUJ1ZmZlciA9PSBidWZm
ZXIpCiAgICAgICAgIG1fYm91bmRBcnJheUJ1ZmZlciA9IDA7Ci0gICAgaWYgKG1fYm91bmRFbGVt
ZW50QXJyYXlCdWZmZXIgPT0gYnVmZmVyKQotICAgICAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVm
ZmVyID0gMDsKKyAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1f
Ym91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgaWYg
KGVsZW1lbnRBcnJheUJ1ZmZlciA9PSBidWZmZXIpCisgICAgICAgIG1fYm91bmRWZXJ0ZXhBcnJh
eU9iamVjdC0+c2V0RWxlbWVudEFycmF5QnVmZmVyKDApOwogICAgIGlmICghaXNHTEVTMkNvbXBs
aWFudCgpKSB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fdmVydGV4QXR0
cmliU3RhdGVbMF07CisgICAgICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0
dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0
cmliU3RhdGUoMCk7CiAgICAgICAgIGlmIChidWZmZXIgPT0gc3RhdGUuYnVmZmVyQmluZGluZykg
ewogICAgICAgICAgICAgc3RhdGUuYnVmZmVyQmluZGluZyA9IG1fdmVydGV4QXR0cmliMEJ1ZmZl
cjsKICAgICAgICAgICAgIHN0YXRlLmJ5dGVzUGVyRWxlbWVudCA9IDA7CkBAIC0xMjE2LDggKzEy
MjIsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZVZlcnRlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaW5kZXggPCBtX3ZlcnRleEF0dHJpYlN0YXRlLnNp
emUoKSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxlZCA9IGZhbHNl
OworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0
ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgp
OworICAgIHN0YXRlLmVuYWJsZWQgPSBmYWxzZTsKIAogICAgIGlmIChpbmRleCA+IDAgfHwgaXNH
TEVTMkNvbXBsaWFudCgpKSB7CiAgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KTsKQEAgLTEyMjcsNyArMTIzMyw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpkaXNhYmxlVmVydGUKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlk
YXRlRWxlbWVudEFycmF5U2l6ZShHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0Rp
bnRwdHIgb2Zmc2V0KQogewotICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikKKyAg
ICBSZWZQdHI8V2ViR0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhB
cnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgCisgICAgaWYgKCFlbGVt
ZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChvZmZzZXQg
PCAwKQpAQCAtMTI0MSwxMSArMTI0OSwxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmFsaWRhdGVFbGVtCiAgICAgICAgIC8vIE1ha2UgdW9mZnNldCBhbiBlbGVtZW50IG9mZnNldC4K
ICAgICAgICAgb2Zmc2V0IC89IDI7CiAKLSAgICAgICAgR0MzRHNpemVpcHRyIG4gPSBtX2JvdW5k
RWxlbWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkgLyAyOworICAgICAgICBHQzNEc2l6ZWlw
dHIgbiA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC8gMjsKICAgICAgICAgaWYg
KG9mZnNldCA+IG4gfHwgY291bnQgPiBuIC0gb2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSkgewotICAgICAgICBHQzNEc2l6ZWlwdHIgbiA9IG1fYm91bmRFbGVtZW50QXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgR0MzRHNpemVpcHRyIG4gPSBlbGVtZW50QXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAgaWYgKG9mZnNldCA+IG4gfHwgY291bnQgPiBu
IC0gb2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEyNTksMTgg
KzEyNjcsMjAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZQogICAg
IC8vIGFycmF5IGJ1ZmZlcnMgaGF2ZSBlbm91Z2ggZWxlbWVudHMgdG8gc2F0aXNmeSB0aGF0IG1h
eGltdW0KICAgICAvLyBpbmRleCwgc2tpcHMgdGhlIGV4cGVuc2l2ZSBwZXItZHJhdy1jYWxsIGl0
ZXJhdGlvbiBpbgogICAgIC8vIHZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UuCisgICAgCisgICAg
UmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIgPSBtX2JvdW5kVmVydGV4QXJy
YXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwogCi0gICAgaWYgKCFtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyKQorICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBHQzNEc2l6ZWlwdHIgbnVtRWxlbWVudHMgPSBtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgR0MzRHNpemVpcHRyIG51bUVsZW1l
bnRzID0gZWxlbWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgLy8gVGhlIGNhc2Ug
Y291bnQ9PTAgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIGluIGRyYXdFbGVtZW50cyBiZWZvcmUgdmFs
aWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlLgogICAgIGlmICghbnVtRWxlbWVudHMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBBcnJheUJ1ZmZlciogYnVmZmVyID0gbV9ib3Vu
ZEVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgY29uc3QgQXJy
YXlCdWZmZXIqIGJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVy
KCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBpbnQgbWF4SW5kZXggPSBtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyLT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKKyAgICBpbnQgbWF4SW5k
ZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1heEluZGV4KHR5cGUpOwogICAgIGlm
IChtYXhJbmRleCA8IDApIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgbWF4aW11bSBpbmRleCBp
biB0aGUgZW50aXJlIGJ1ZmZlciBmb3IgdGhlIGdpdmVuIHR5cGUgb2YgaW5kZXguCiAgICAgICAg
IHN3aXRjaCAodHlwZSkgewpAQCAtMTI5MCw3ICsxMzAwLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlSW5kZQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIt
PnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1heEluZGV4KTsKKyAgICAgICAgZWxlbWVudEFycmF5
QnVmZmVyLT5zZXRDYWNoZWRNYXhJbmRleCh0eXBlLCBtYXhJbmRleCk7CiAgICAgfQogCiAgICAg
aWYgKG1heEluZGV4ID49IDApIHsKQEAgLTEzMDcsOCArMTMxNywxMCBAQCBib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRlCiB7CiAgICAgQVNTRVJUKGNvdW50ID49IDAgJiYg
b2Zmc2V0ID49IDApOwogICAgIGludCBsYXN0SW5kZXggPSAtMTsKKyAgICAKKyAgICBSZWZQdHI8
V2ViR0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVj
dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CiAKLSAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJy
YXlCdWZmZXIpCisgICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghY291bnQpIHsKQEAgLTEzMTYsNyArMTMyOCw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlC
dWZmZXIoKSkKKyAgICBpZiAoIWVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVy
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIGxvbmcgdW9mZnNldCA9
IG9mZnNldDsKQEAgLTEzMjUsMTQgKzEzMzcsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlSW5kZQogICAgIGlmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9TSE9SVCkgewogICAgICAgICAvLyBNYWtlIHVvZmZzZXQgYW4gZWxlbWVudCBvZmZzZXQu
CiAgICAgICAgIHVvZmZzZXQgLz0gc2l6ZW9mKEdDM0R1c2hvcnQpOwotICAgICAgICBjb25zdCBH
QzNEdXNob3J0KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVzaG9ydCo+KG1fYm91bmRFbGVt
ZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9mZnNldDsK
KyAgICAgICAgY29uc3QgR0MzRHVzaG9ydCogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hv
cnQqPihlbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpICsg
dW9mZnNldDsKICAgICAgICAgd2hpbGUgKG4tLSA+IDApIHsKICAgICAgICAgICAgIGlmICgqcCA+
IGxhc3RJbmRleCkKICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAqcDsKICAgICAgICAgICAg
ICsrcDsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSkgewotICAgICAgICBjb25zdCBHQzNEdWJ5dGUqIHAgPSBzdGF0aWNf
Y2FzdDxjb25zdCBHQzNEdWJ5dGUqPihtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50
QXJyYXlCdWZmZXIoKS0+ZGF0YSgpKSArIHVvZmZzZXQ7CisgICAgICAgIGNvbnN0IEdDM0R1Ynl0
ZSogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1Ynl0ZSo+KGVsZW1lbnRBcnJheUJ1ZmZlci0+
ZWxlbWVudEFycmF5QnVmZmVyKCktPmRhdGEoKSkgKyB1b2Zmc2V0OwogICAgICAgICB3aGlsZSAo
bi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpwID4gbGFzdEluZGV4KQogICAgICAgICAgICAg
ICAgIGxhc3RJbmRleCA9ICpwOwpAQCAtMTM1MCwxMiArMTM2MiwxMSBAQCBib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVSZW5kCiAgICAgaWYgKCFtX2N1cnJlbnRQcm9ncmFtKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQgbnVtQXR0cmliU3RhdGVzID0gc3RhdGlj
X2Nhc3Q8aW50PihtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSk7Ci0KICAgICAvLyBMb29rIGlu
IGVhY2ggZW5hYmxlZCB2ZXJ0ZXggYXR0cmliIGFuZCBjaGVjayBpZiB0aGV5J3ZlIGJlZW4gYm91
bmQgdG8gYSBidWZmZXIuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJTdGF0ZXM7
ICsraSkgewotICAgICAgICBpZiAobV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpXS5lbmFibGVkCi0gICAg
ICAgICAgICAmJiAoIW1fdmVydGV4QXR0cmliU3RhdGVbaV0uYnVmZmVyQmluZGluZyB8fCAhbV92
ZXJ0ZXhBdHRyaWJTdGF0ZVtpXS5idWZmZXJCaW5kaW5nLT5vYmplY3QoKSkpCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4VmVydGV4QXR0cmliczsgKytpKSB7CisgICAgICAgIGNv
bnN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9
IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaSk7CisgICAg
ICAgIGlmIChzdGF0ZS5lbmFibGVkCisgICAgICAgICAgICAmJiAoIXN0YXRlLmJ1ZmZlckJpbmRp
bmcgfHwgIXN0YXRlLmJ1ZmZlckJpbmRpbmctPm9iamVjdCgpKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTEzNjcsOCArMTM3OCw4IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmQKICAgICBpbnQgbnVtQWN0aXZlQXR0cmliTG9jYXRpb25z
ID0gbV9jdXJyZW50UHJvZ3JhbS0+bnVtQWN0aXZlQXR0cmliTG9jYXRpb25zKCk7CiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1BY3RpdmVBdHRyaWJMb2NhdGlvbnM7ICsraSkgewogICAgICAg
ICBpbnQgbG9jID0gbV9jdXJyZW50UHJvZ3JhbS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb24oaSk7
Ci0gICAgICAgIGlmIChsb2MgPj0wICYmIGxvYyA8IG51bUF0dHJpYlN0YXRlcykgewotICAgICAg
ICAgICAgY29uc3QgVmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV92ZXJ0ZXhBdHRyaWJTdGF0
ZVtsb2NdOworICAgICAgICBpZiAobG9jID49IDAgJiYgbG9jIDwgKGludCltX21heFZlcnRleEF0
dHJpYnMpIHsKKyAgICAgICAgICAgIGNvbnN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZl
cnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVy
dGV4QXR0cmliU3RhdGUobG9jKTsKICAgICAgICAgICAgIGlmIChzdGF0ZS5lbmFibGVkKSB7CiAg
ICAgICAgICAgICAgICAgLy8gQXZvaWQgb2ZmLWJ5LW9uZSBlcnJvcnMgaW4gbnVtRWxlbWVudHMg
Y29tcHV0YXRpb24uCiAgICAgICAgICAgICAgICAgLy8gRm9yIHRoZSBsYXN0IGVsZW1lbnQsIHdl
IHdpbGwgb25seSB0b3VjaCB0aGUgZGF0YSBmb3IgdGhlCkBAIC0xNTQzLDEwICsxNTU0LDggQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGluZGV4ID49IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQot
ICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShpbmRleCArIDEpOwotCi0gICAgbV92
ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxlZCA9IHRydWU7CisgICAgV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFy
cmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbmRleCk7CisgICAgc3RhdGUuZW5hYmxl
ZCA9IHRydWU7CiAKICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTgyMCw2ICsxODI5
LDE0IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmcKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7CiAgICAgfQorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAg
ICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0
ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAgICAgaWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0
KSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgICAgIG1fb2VzVmVydGV4
QXJyYXlPYmplY3QgPSBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKHRoaXMpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBtX29lc1ZlcnRleEFycmF5T2JqZWN0LmdldCgpOworICAgIH0K
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQktJVF9sb3NlX2NvbnRleHQiKSkg
ewogICAgICAgICBpZiAoIW1fd2Via2l0TG9zZUNvbnRleHQpCiAgICAgICAgICAgICBtX3dlYmtp
dExvc2VDb250ZXh0ID0gV2ViS2l0TG9zZUNvbnRleHQ6OmNyZWF0ZSh0aGlzKTsKQEAgLTE5NDAs
NyArMTk1Nyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpESVRIRVI6CiAgICAgICAgIHJldHVybiBnZXRCb29s
ZWFuUGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5U
X0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NS
ZWZQdHI8V2ViR0xCdWZmZXI+KG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpKTsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPihtX2JvdW5kVmVydGV4
QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpKSk7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklORElORzoKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+KG1fZnJhbWVidWZmZXJCaW5kaW5nKSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RlJPTlRfRkFDRToKQEAgLTIwNjYsNiArMjA4
MywxNCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAg
ICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIoRXh0ZW5zaW9uczNEOjpGUkFHTUVO
VF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyk7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oKTsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6VkVSVEVYX0FSUkFZ
X0JJTkRJTkdfT0VTOiAvLyBPRVNfdmVydGV4X2FycmF5X29iamVjdAorICAgICAgICBpZiAobV9v
ZXNWZXJ0ZXhBcnJheU9iamVjdCkgeworICAgICAgICAgICAgaWYgKCFtX2JvdW5kVmVydGV4QXJy
YXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPihtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3QpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAg
ICAgICAgfQorICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygp
OwpAQCAtMjIyNyw2ICsyMjUyLDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOwogICAg
IGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJP
RVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9sb3Nl
X2NvbnRleHQiKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQyMiw0MCArMjQ0OSwyNiBA
QCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWCiAgICAgICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
OwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQorICAgIGNvbnN0IFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgpOwogICAgIHN3aXRj
aCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FS
UkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAgICBpZiAoKCFpc0dMRVMyQ29tcGxpYW50KCkgJiYg
IWluZGV4ICYmIG1fdmVydGV4QXR0cmliU3RhdGVbMF0uYnVmZmVyQmluZGluZyA9PSBtX3ZlcnRl
eEF0dHJpYjBCdWZmZXIpCi0gICAgICAgICAgICB8fCBpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0
YXRlLnNpemUoKQotICAgICAgICAgICAgfHwgIW1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ1
ZmZlckJpbmRpbmcKLSAgICAgICAgICAgIHx8ICFtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5i
dWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKKyAgICAgICAgaWYgKCghaXNHTEVTMkNvbXBsaWFudCgp
ICYmICFpbmRleCAmJiBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldFZlcnRleEF0dHJpYlN0
YXRlKDApLmJ1ZmZlckJpbmRpbmcgPT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyKQorICAgICAgICAg
ICAgfHwgIXN0YXRlLmJ1ZmZlckJpbmRpbmcKKyAgICAgICAgICAgIHx8ICFzdGF0ZS5idWZmZXJC
aW5kaW5nLT5vYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPihtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS5idWZmZXJCaW5kaW5nKSk7CisgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4oc3RhdGUuYnVmZmVyQmluZGluZykpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoK
LSAgICAgICAgaWYgKGluZGV4ID49IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhmYWxzZSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8obV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxlZCk7CisgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oc3RhdGUuZW5hYmxlZCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOgotICAgICAgICBpZiAoaW5kZXggPj0g
bV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3ZlcnRleEF0dHJpYlN0
YXRlW2luZGV4XS5ub3JtYWxpemVkKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0
ZS5ub3JtYWxpemVkKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklC
X0FSUkFZX1NJWkU6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNp
emUoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8aW50Pig0
KSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRl
eF0uc2l6ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGUuc2l6ZSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6Ci0gICAg
ICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8aW50PigwKSk7Ci0gICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8obV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0ub3JpZ2luYWxTdHJpZGUp
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRlLm9yaWdpbmFsU3RyaWRlKTsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6Ci0gICAg
ICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVQpKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhtX3ZlcnRleEF0
dHJpYlN0YXRlW2luZGV4XS50eXBlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0
ZS50eXBlKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVVJSRU5UX1ZFUlRFWF9BVFRS
SUI6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkgewot
ICAgICAgICAgICAgZmxvYXQgdmFsdWVbNF0gPSB7IDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYgfTsK
LSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oRmxvYXQzMkFycmF5OjpjcmVhdGUodmFs
dWUsIDQpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKEZsb2F0MzJB
cnJheTo6Y3JlYXRlKG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLnZhbHVlLCA0KSk7CisgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oRmxvYXQzMkFycmF5OjpjcmVhdGUobV92ZXJ0ZXhBdHRy
aWJWYWx1ZVtpbmRleF0udmFsdWUsIDQpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwog
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0zNjg5LDE5ICszNzAyLDE3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIKICAgICB9CiAgICAgR0MzRHNp
emVpIGJ5dGVzUGVyRWxlbWVudCA9IHNpemUgKiB0eXBlU2l6ZTsKIAotICAgIGlmIChpbmRleCA+
PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0
ZS5yZXNpemUoaW5kZXggKyAxKTsKLQogICAgIEdDM0RzaXplaSB2YWxpZGF0ZWRTdHJpZGUgPSBz
dHJpZGUgPyBzdHJpZGUgOiBieXRlc1BlckVsZW1lbnQ7CiAKLSAgICBtX3ZlcnRleEF0dHJpYlN0
YXRlW2luZGV4XS5idWZmZXJCaW5kaW5nID0gbV9ib3VuZEFycmF5QnVmZmVyOwotICAgIG1fdmVy
dGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ5dGVzUGVyRWxlbWVudCA9IGJ5dGVzUGVyRWxlbWVudDsK
LSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5zaXplID0gc2l6ZTsKLSAgICBtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS50eXBlID0gdHlwZTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
W2luZGV4XS5ub3JtYWxpemVkID0gbm9ybWFsaXplZDsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
W2luZGV4XS5zdHJpZGUgPSB2YWxpZGF0ZWRTdHJpZGU7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0
ZVtpbmRleF0ub3JpZ2luYWxTdHJpZGUgPSBzdHJpZGU7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0
ZVtpbmRleF0ub2Zmc2V0ID0gb2Zmc2V0OworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6
OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0
VmVydGV4QXR0cmliU3RhdGUoaW5kZXgpOworICAgIHN0YXRlLmJ1ZmZlckJpbmRpbmcgPSBtX2Jv
dW5kQXJyYXlCdWZmZXI7CisgICAgc3RhdGUuYnl0ZXNQZXJFbGVtZW50ID0gYnl0ZXNQZXJFbGVt
ZW50OworICAgIHN0YXRlLnNpemUgPSBzaXplOworICAgIHN0YXRlLnR5cGUgPSB0eXBlOworICAg
IHN0YXRlLm5vcm1hbGl6ZWQgPSBub3JtYWxpemVkOworICAgIHN0YXRlLnN0cmlkZSA9IHZhbGlk
YXRlZFN0cmlkZTsKKyAgICBzdGF0ZS5vcmlnaW5hbFN0cmlkZSA9IHN0cmlkZTsKKyAgICBzdGF0
ZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGlu
ZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIG9mZnNldCk7CiAgICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTQ0MzgsNyArNDQ0OSw3IEBAIFdlYkdM
QnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGkKICAgICBXZWJHTEJ1ZmZlciogYnVm
ZmVyID0gMDsKICAgICBzd2l0Y2ggKHRhcmdldCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSOgotICAgICAgICBidWZmZXIgPSBtX2JvdW5kRWxlbWVu
dEFycmF5QnVmZmVyLmdldCgpOworICAgICAgICBidWZmZXIgPSBtX2JvdW5kVmVydGV4QXJyYXlP
YmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVI6CiAgICAgICAgIGJ1ZmZlciA9
IG1fYm91bmRBcnJheUJ1ZmZlci5nZXQoKTsKQEAgLTQ0ODcsMTIgKzQ0OTgsMTEgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYgogICAgICAgICB9CiAgICAgICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiAgICAgfQotICAgIGlmIChpbmRleCA+PSBt
X3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5y
ZXNpemUoaW5kZXggKyAxKTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS52YWx1ZVsw
XSA9IHYwOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLnZhbHVlWzFdID0gdjE7Ci0g
ICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0udmFsdWVbMl0gPSB2MjsKLSAgICBtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS52YWx1ZVszXSA9IHYzOworICAgIFZlcnRleEF0dHJpYlZhbHVl
JiBhdHRyaWJWYWx1ZSA9IG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdOworICAgIGF0dHJpYlZh
bHVlLnZhbHVlWzBdID0gdjA7CisgICAgYXR0cmliVmFsdWUudmFsdWVbMV0gPSB2MTsKKyAgICBh
dHRyaWJWYWx1ZS52YWx1ZVsyXSA9IHYyOworICAgIGF0dHJpYlZhbHVlLnZhbHVlWzNdID0gdjM7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJmdkltcGwoR0Mz
RHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSogdiwgR0MzRHNpemVpIGV4cGVjdGVkU2l6ZSkKQEAg
LTQ1NDAsMjEgKzQ1NTAsMjEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYgogICAgICAgICB9CiAgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiAgICAgfQotICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAg
ICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoaW5kZXggKyAxKTsKLSAgICBtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS5pbml0VmFsdWUoKTsKKyAgICBWZXJ0ZXhBdHRyaWJWYWx1ZSYg
YXR0cmliVmFsdWUgPSBtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XTsKKyAgICBhdHRyaWJWYWx1
ZS5pbml0VmFsdWUoKTsKICAgICBmb3IgKGludCBpaSA9IDA7IGlpIDwgZXhwZWN0ZWRTaXplOyAr
K2lpKQotICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS52YWx1ZVtpaV0gPSB2W2lp
XTsKKyAgICAgICAgYXR0cmliVmFsdWUudmFsdWVbaWldID0gdltpaV07CiB9CiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojppbml0VmVydGV4QXR0cmliMCgpCiB7Ci0gICAgbV92ZXJ0ZXhB
dHRyaWJTdGF0ZS5yZXNpemUoMSk7CisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVy
dGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0
ZXhBdHRyaWJTdGF0ZSgwKTsKKyAgICAKICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXIgPSBjcmVh
dGVCdWZmZXIoKTsKICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkFSUkFZX0JVRkZFUiwgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyLT5vYmplY3QoKSk7CiAgICAgbV9j
b250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpEWU5BTUlDX0RSQVcpOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsK
LSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlWzBdLmJ1ZmZlckJpbmRpbmcgPSBtX3ZlcnRleEF0dHJp
YjBCdWZmZXI7CisgICAgc3RhdGUuYnVmZmVyQmluZGluZyA9IG1fdmVydGV4QXR0cmliMEJ1ZmZl
cjsKICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JV
RkZFUiwgMCk7CiAgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKICAg
ICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplID0gMDsKQEAgLTQ1NjgsNyArNDU3OCw4IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0VmVydGV4QXQKIAogYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQzNEc2l6ZWkgbnVtVmVydGV4KQog
ewotICAgIGNvbnN0IFZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fdmVydGV4QXR0cmliU3Rh
dGVbMF07CisgICAgY29uc3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmli
U3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJT
dGF0ZSgwKTsKKyAgICBjb25zdCBWZXJ0ZXhBdHRyaWJWYWx1ZSYgYXR0cmliVmFsdWUgPSBtX3Zl
cnRleEF0dHJpYlZhbHVlWzBdOwogICAgIGlmICghbV9jdXJyZW50UHJvZ3JhbSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGJvb2wgdXNpbmdWZXJ0ZXhBdHRyaWIwID0gbV9jdXJyZW50UHJv
Z3JhbS0+aXNVc2luZ1ZlcnRleEF0dHJpYjAoKTsKQEAgLTQ1ODgsMjEgKzQ1OTksMjEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpbXVsYXRlVmVydAogICAgIH0KICAgICBpZiAodXNp
bmdWZXJ0ZXhBdHRyaWIwCiAgICAgICAgICYmIChtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbAot
ICAgICAgICAgICAgfHwgc3RhdGUudmFsdWVbMF0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFs
dWVbMF0KLSAgICAgICAgICAgIHx8IHN0YXRlLnZhbHVlWzFdICE9IG1fdmVydGV4QXR0cmliMEJ1
ZmZlclZhbHVlWzFdCi0gICAgICAgICAgICB8fCBzdGF0ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0
dHJpYjBCdWZmZXJWYWx1ZVsyXQotICAgICAgICAgICAgfHwgc3RhdGUudmFsdWVbM10gIT0gbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10pKSB7CisgICAgICAgICAgICB8fCBhdHRyaWJWYWx1
ZS52YWx1ZVswXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVswXQorICAgICAgICAgICAg
fHwgYXR0cmliVmFsdWUudmFsdWVbMV0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMV0K
KyAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1
ZmZlclZhbHVlWzJdCisgICAgICAgICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVszXSAhPSBtX3Zl
cnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSkpIHsKICAgICAgICAgT3duQXJyYXlQdHI8R0MzRGZs
b2F0PiBidWZmZXJEYXRhID0gYWRvcHRBcnJheVB0cihuZXcgR0MzRGZsb2F0WyhudW1WZXJ0ZXgg
KyAxKSAqIDRdKTsKICAgICAgICAgZm9yIChHQzNEc2l6ZWkgaWkgPSAwOyBpaSA8IG51bVZlcnRl
eCArIDE7ICsraWkpIHsKLSAgICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0XSA9IHN0YXRlLnZh
bHVlWzBdOwotICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAxXSA9IHN0YXRlLnZhbHVl
WzFdOwotICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAyXSA9IHN0YXRlLnZhbHVlWzJd
OwotICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAzXSA9IHN0YXRlLnZhbHVlWzNdOwot
ICAgICAgICB9Ci0gICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzBdID0gc3RhdGUu
dmFsdWVbMF07Ci0gICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdID0gc3RhdGUu
dmFsdWVbMV07Ci0gICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdID0gc3RhdGUu
dmFsdWVbMl07Ci0gICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gc3RhdGUu
dmFsdWVbM107CisgICAgICAgICAgICBidWZmZXJEYXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52
YWx1ZVswXTsKKyAgICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1
ZS52YWx1ZVsxXTsKKyAgICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0ICsgMl0gPSBhdHRyaWJW
YWx1ZS52YWx1ZVsyXTsKKyAgICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0ICsgM10gPSBhdHRy
aWJWYWx1ZS52YWx1ZVszXTsKKyAgICAgICAgfQorICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZm
ZXJWYWx1ZVswXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzBdOworICAgICAgICBtX3ZlcnRleEF0dHJp
YjBCdWZmZXJWYWx1ZVsxXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzFdOworICAgICAgICBtX3ZlcnRl
eEF0dHJpYjBCdWZmZXJWYWx1ZVsyXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzJdOworICAgICAgICBt
X3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzNdOwogICAg
ICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IGZhbHNlOwogICAgICAgICBtX2NvbnRl
eHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCwgYnVm
ZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkpOwogICAgIH0KQEAgLTQ2MTIsNyArNDYyMyw3
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaW11bGF0ZVZlcnQKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0ZXNBZnRlclZlcnRleEF0dHJpYjBTaW11bGF0
aW9uKCkKIHsKLSAgICBjb25zdCBWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3RhdGUgPSBtX3ZlcnRleEF0
dHJpYlN0YXRlWzBdOworICAgIGNvbnN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRl
eEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4
QXR0cmliU3RhdGUoMCk7CiAgICAgaWYgKHN0YXRlLmJ1ZmZlckJpbmRpbmcgIT0gbV92ZXJ0ZXhB
dHRyaWIwQnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6QVJSQVlfQlVGRkVSLCBvYmplY3RPclplcm8oc3RhdGUuYnVmZmVyQmluZGluZy5n
ZXQoKSkpOwogICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgc3RhdGUu
c2l6ZSwgc3RhdGUudHlwZSwgc3RhdGUubm9ybWFsaXplZCwgc3RhdGUub3JpZ2luYWxTdHJpZGUs
IHN0YXRlLm9mZnNldCk7CkBAIC00NjIyLDExICs0NjMzLDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpyZXN0b3JlU3RhdGUKIAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
TnVtYmVyT2ZFeHRlbnNpb25zKCkKIHsKLSAgICByZXR1cm4gKG1fb2VzU3RhbmRhcmREZXJpdmF0
aXZlcyA/IDEgOiAwKSArIChtX3dlYmtpdExvc2VDb250ZXh0ID8gMSA6IDApICsgKG1fb2VzVGV4
dHVyZUZsb2F0ID8gMSA6IDApOworICAgIHJldHVybiAobV9vZXNWZXJ0ZXhBcnJheU9iamVjdCA/
IDEgOiAwKSArIChtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgPyAxIDogMCkgKyAobV93ZWJraXRM
b3NlQ29udGV4dCA/IDEgOiAwKSArIChtX29lc1RleHR1cmVGbG9hdCA/IDEgOiAwKTsKIH0KIAog
V2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uTnVtYmVy
KGludCBpKQogeworICAgIGlmIChtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgIGlm
ICghaSkKKyAgICAgICAgICAgIHJldHVybiBtX29lc1ZlcnRleEFycmF5T2JqZWN0LmdldCgpOwor
ICAgICAgICAtLWk7CisgICAgfQogICAgIGlmIChtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsK
ICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgcmV0dXJuIG1fb2VzU3RhbmRhcmREZXJpdmF0
aXZlcy5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA3NzgzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBPRVNT
dGFuZGFyZERlcml2YXRpdmVzOwogY2xhc3MgT0VTVGV4dHVyZUZsb2F0OworY2xhc3MgT0VTVmVy
dGV4QXJyYXlPYmplY3Q7CitjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOwogCiBjbGFz
cyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7
CiBwdWJsaWM6CkBAIC0yODIsNiArMjg0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgdm9pZCByZW1vdmVPYmplY3Qo
V2ViR0xPYmplY3QqKTsKKyAgICAKKyAgICB1bnNpZ25lZCBnZXRNYXhWZXJ0ZXhBdHRyaWJzKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXhWZXJ0ZXhBdHRyaWJzOyB9CiAKICAgICAvLyBIZWxwZXJzIGZv
ciBKU0MgYmluZGluZ3MuCiAgICAgaW50IGdldE51bWJlck9mRXh0ZW5zaW9ucygpOwpAQCAtMjg5
LDYgKzI5Myw3IEBAIHB1YmxpYzoKIAogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJH
TE9iamVjdDsKKyAgICBmcmllbmQgY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CiAKICAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZvaWQg
aW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKQEAgLTM1NiwyNCArMzYxLDI0IEBAIHB1YmxpYzoKIAog
ICAgIC8vIExpc3Qgb2YgYm91bmQgVkJPJ3MuIFVzZWQgdG8gbWFpbnRhaW4gaW5mbyBhYm91dCBz
aXplcyBmb3IgQVJSQVlfQlVGRkVSIGFuZCBzdG9yZWQgdmFsdWVzIGZvciBFTEVNRU5UX0FSUkFZ
X0JVRkZFUgogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEFycmF5QnVmZmVyOwotICAg
IFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcjsKLQotICAgIC8v
IENhY2hlZCB2YWx1ZXMgZm9yIHZlcnRleCBhdHRyaWIgcmFuZ2UgY2hlY2tzCi0gICAgY2xhc3Mg
VmVydGV4QXR0cmliU3RhdGUgeworICAgIAorICAgIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTPiBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsKKyAgICBSZWZQdHI8V2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUz4gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0OworICAgIHZvaWQgc2V0
Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM+IGFycmF5T2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKGFycmF5T2JqZWN0KQorICAgICAg
ICAgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0ID0gYXJyYXlPYmplY3Q7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCA9IG1fZGVmYXVsdFZlcnRl
eEFycmF5T2JqZWN0OworICAgIH0KKyAgICAKKyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJWYWx1ZSB7
CiAgICAgcHVibGljOgotICAgICAgICBWZXJ0ZXhBdHRyaWJTdGF0ZSgpCi0gICAgICAgICAgICA6
IGVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIGJ5dGVzUGVyRWxlbWVudCgwKQotICAgICAg
ICAgICAgLCBzaXplKDQpCi0gICAgICAgICAgICAsIHR5cGUoR3JhcGhpY3NDb250ZXh0M0Q6OkZM
T0FUKQotICAgICAgICAgICAgLCBub3JtYWxpemVkKGZhbHNlKQotICAgICAgICAgICAgLCBzdHJp
ZGUoMTYpCi0gICAgICAgICAgICAsIG9yaWdpbmFsU3RyaWRlKDApCi0gICAgICAgICAgICAsIG9m
ZnNldCgwKQorICAgICAgICBWZXJ0ZXhBdHRyaWJWYWx1ZSgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGluaXRWYWx1ZSgpOwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgaW5p
dFZhbHVlKCkKICAgICAgICAgewogICAgICAgICAgICAgdmFsdWVbMF0gPSAwLjBmOwpAQCAtMzgx
LDIwICszODYsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgdmFsdWVbMl0gPSAwLjBmOwogICAg
ICAgICAgICAgdmFsdWVbM10gPSAxLjBmOwogICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBlbmFi
bGVkOwotICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGJ1ZmZlckJpbmRpbmc7Ci0gICAgICAg
IEdDM0RzaXplaSBieXRlc1BlckVsZW1lbnQ7Ci0gICAgICAgIEdDM0RpbnQgc2l6ZTsKLSAgICAg
ICAgR0MzRGVudW0gdHlwZTsKLSAgICAgICAgYm9vbCBub3JtYWxpemVkOwotICAgICAgICBHQzNE
c2l6ZWkgc3RyaWRlOwotICAgICAgICBHQzNEc2l6ZWkgb3JpZ2luYWxTdHJpZGU7Ci0gICAgICAg
IEdDM0RpbnRwdHIgb2Zmc2V0OworICAgICAgICAKICAgICAgICAgR0MzRGZsb2F0IHZhbHVlWzRd
OwogICAgIH07Ci0KLSAgICBWZWN0b3I8VmVydGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmli
U3RhdGU7CisgICAgVmVjdG9yPFZlcnRleEF0dHJpYlZhbHVlPiBtX3ZlcnRleEF0dHJpYlZhbHVl
OwogICAgIHVuc2lnbmVkIG1fbWF4VmVydGV4QXR0cmliczsKICAgICBSZWZQdHI8V2ViR0xCdWZm
ZXI+IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsKICAgICBsb25nIG1fdmVydGV4QXR0cmliMEJ1ZmZl
clNpemU7CkBAIC00NTYsNiArNDUxLDcgQEAgcHVibGljOgogICAgIC8vIEVuYWJsZWQgZXh0ZW5z
aW9uIG9iamVjdHMuCiAgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxv
YXQ7CiAgICAgUmVmUHRyPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+IG1fb2VzU3RhbmRhcmREZXJp
dmF0aXZlczsKKyAgICBSZWZQdHI8T0VTVmVydGV4QXJyYXlPYmplY3Q+IG1fb2VzVmVydGV4QXJy
YXlPYmplY3Q7CiAgICAgUmVmUHRyPFdlYktpdExvc2VDb250ZXh0PiBtX3dlYmtpdExvc2VDb250
ZXh0OwogCiAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQkdM
KQorCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgorCisjaW5jbHVkZSAi
RXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
PiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjdHgsIGJvb2wgZGVmYXVsdE9iamVjdCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMoY3R4LCBkZWZhdWx0T2JqZWN0KSk7Cit9CisKK1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBjdHgsIGJvb2wgZGVmYXVsdE9iamVjdCkKKyAgICA6IFdlYkdMT2JqZWN0
KGN0eCkKKyAgICAsIG1fZGVmYXVsdE9iamVjdChkZWZhdWx0T2JqZWN0KQorICAgICwgbV9oYXNF
dmVyQmVlbkJvdW5kKGZhbHNlKQorICAgICwgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcigwKQor
eworICAgIG1fdmVydGV4QXR0cmliU3RhdGUucmVzaXplKGN0eC0+Z2V0TWF4VmVydGV4QXR0cmli
cygpKTsKKyAgICAKKyAgICBpZiAoIW1fZGVmYXVsdE9iamVjdCkgeworICAgICAgICBFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4
dGVuc2lvbnMoKTsKKyAgICAgICAgc2V0T2JqZWN0KGV4dGVuc2lvbnMtPmNyZWF0ZVZlcnRleEFy
cmF5T0VTKCkpOworICAgIH0KK30KKwordm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpk
ZWxldGVPYmplY3RJbXBsKFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQoreworICAgIGlmICghbV9k
ZWZhdWx0T2JqZWN0KSB7CisgICAgICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRl
eHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgICAgICBleHRl
bnNpb25zLT5kZWxldGVWZXJ0ZXhBcnJheU9FUyhvYmplY3QpOworICAgIH0KK30KKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVNfaAorI2RlZmluZSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTX2gK
KworI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKKwor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
IDogcHVibGljIFdlYkdMT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTKCkgeyBkZWxldGVPYmplY3QoKTsgfQorCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCosIGJvb2wpOworICAgIAorICAgIC8vIENhY2hlZCB2YWx1ZXMgZm9yIHZlcnRleCBhdHRy
aWIgcmFuZ2UgY2hlY2tzCisgICAgY2xhc3MgVmVydGV4QXR0cmliU3RhdGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgVmVydGV4QXR0cmliU3RhdGUoKQorICAgICAgICA6IGVuYWJsZWQoZmFsc2Up
CisgICAgICAgICwgYnl0ZXNQZXJFbGVtZW50KDApCisgICAgICAgICwgc2l6ZSg0KQorICAgICAg
ICAsIHR5cGUoR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUKQorICAgICAgICAsIG5vcm1hbGl6ZWQo
ZmFsc2UpCisgICAgICAgICwgc3RyaWRlKDE2KQorICAgICAgICAsIG9yaWdpbmFsU3RyaWRlKDAp
CisgICAgICAgICwgb2Zmc2V0KDApCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBlbmFibGVkOworICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGJ1ZmZlckJp
bmRpbmc7CisgICAgICAgIEdDM0RzaXplaSBieXRlc1BlckVsZW1lbnQ7CisgICAgICAgIEdDM0Rp
bnQgc2l6ZTsKKyAgICAgICAgR0MzRGVudW0gdHlwZTsKKyAgICAgICAgYm9vbCBub3JtYWxpemVk
OworICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlOworICAgICAgICBHQzNEc2l6ZWkgb3JpZ2luYWxT
dHJpZGU7CisgICAgICAgIEdDM0RpbnRwdHIgb2Zmc2V0OworICAgIH07CisgICAgCisgICAgYm9v
bCBpc0RlZmF1bHRPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRPYmplY3Q7IH0KKyAg
ICAKKyAgICBib29sIGhhc0V2ZXJCZWVuQm91bmQoKSBjb25zdCB7IHJldHVybiBvYmplY3QoKSAm
JiBtX2hhc0V2ZXJCZWVuQm91bmQ7IH0KKyAgICB2b2lkIHNldEhhc0V2ZXJCZWVuQm91bmQoKSB7
IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPFdlYkdM
QnVmZmVyPiBnZXRFbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyOyB9CisgICAgdm9pZCBzZXRFbGVtZW50QXJyYXlCdWZmZXIoUGFzc1Jl
ZlB0cjxXZWJHTEJ1ZmZlcj4gYnVmZmVyKSB7IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBi
dWZmZXI7IH0KKyAgICAKKyAgICBWZXJ0ZXhBdHRyaWJTdGF0ZSYgZ2V0VmVydGV4QXR0cmliU3Rh
dGUoaW50IGluZGV4KSB7IHJldHVybiBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XTsgfQorCitw
cml2YXRlOgorICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiwgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChQbGF0Zm9y
bTNET2JqZWN0KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRleEFycmF5KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIGJvb2wgbV9kZWZhdWx0T2JqZWN0OworICAgIGJvb2wg
bV9oYXNFdmVyQmVlbkJvdW5kOworICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEVsZW1l
bnRBcnJheUJ1ZmZlcjsKKyAgICBWZWN0b3I8VmVydGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0
cmliU3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGh0
bWwgeworICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9V0VCR0xdIFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMgeworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAkocmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsOCBAQAogI2lmbmRlZiBFeHRlbnNpb25zM0RfaAogI2RlZmluZSBFeHRlbnNpb25z
M0RfaAogCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsNiArNTUsNyBAQCBw
dWJsaWM6CiAgICAgLy8gICBHTF9PRVNfdGV4dHVyZV9mbG9hdAogICAgIC8vICAgR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzCiAgICAgLy8gICBHTF9PRVNfcmdiOF9yZ2JhOAorICAgIC8vICAg
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKIAogICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBl
eHRlbnNpb247IGZvciBleGFtcGxlLAogICAgIC8vICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiLgpAQCAtOTIsNiArOTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEdMX09FU19yZ2I4
X3JnYmE4IG5hbWVzCiAgICAgICAgIFJHQjhfT0VTID0gMHg4MDUxLAogICAgICAgICBSR0JBOF9P
RVMgPSAweDgwNTgsCisgICAgICAgIAorICAgICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCBuYW1lcworICAgICAgICBWRVJURVhfQVJSQVlfQklORElOR19PRVMgPSAweDg1QjUsCiAg
ICAgfTsKIAogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCkBAIC0xMDEsNyArMTA3LDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcg
c3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxv
bmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBm
aWx0ZXIpID0gMDsKICAgICAKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0g
MDsgICAgCisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25n
IGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdo
dCkgPSAwOworICAgIAorICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgdmly
dHVhbCBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KSA9IDA7Cisg
ICAgdmlydHVhbCBHQzNEYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3Qp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmpl
Y3QpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2
aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpAQCAtNDIsMjUgKzQzLDYgQEAKICN1bmRlZiBWRVJTSU9OCiAjZW5kaWYK
IAotLy8gR0MzRCB0eXBlcyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBHTCB0eXBlcyBhcyBkZWZp
bmVkIGluIE9wZW5HTCBFUyAyLjAKLS8vIGhlYWRlciBmaWxlIGdsMi5oIGZyb20ga2hyb25vcy5v
cmcuCi10eXBlZGVmIHVuc2lnbmVkIGludCBHQzNEZW51bTsKLXR5cGVkZWYgdW5zaWduZWQgY2hh
ciBHQzNEYm9vbGVhbjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IEdDM0RiaXRmaWVsZDsKLXR5cGVk
ZWYgc2lnbmVkIGNoYXIgR0MzRGJ5dGU7Ci10eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0MzRHVieXRl
OwotdHlwZWRlZiBzaG9ydCBHQzNEc2hvcnQ7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IEdDM0R1
c2hvcnQ7Ci10eXBlZGVmIGludCBHQzNEaW50OwotdHlwZWRlZiBpbnQgR0MzRHNpemVpOwotdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgR0MzRHVpbnQ7Ci10eXBlZGVmIGZsb2F0IEdDM0RmbG9hdDsKLXR5
cGVkZWYgZmxvYXQgR0MzRGNsYW1wZjsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgaW50IEdDM0RpbnRw
dHI7Ci10eXBlZGVmIHNpZ25lZCBsb25nIGludCBHQzNEc2l6ZWlwdHI7Ci0KLXR5cGVkZWYgR0Mz
RHVpbnQgUGxhdGZvcm0zRE9iamVjdDsKLQogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJB
TkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMzRC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMzRC5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlczNELmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgR3JhcGhpY3NUeXBlczNEX2gKKyNkZWZpbmUgR3JhcGhpY3NUeXBlczNEX2gKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKy8vIEdDM0QgdHlwZXMgbWF0Y2ggdGhlIGNvcnJlc3Bv
bmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBpbiBPcGVuR0wgRVMgMi4wCisvLyBoZWFkZXIgZmls
ZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgordHlwZWRlZiB1bnNpZ25lZCBpbnQgR0MzRGVudW07
Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0MzRGJvb2xlYW47Cit0eXBlZGVmIHVuc2lnbmVkIGlu
dCBHQzNEYml0ZmllbGQ7Cit0eXBlZGVmIHNpZ25lZCBjaGFyIEdDM0RieXRlOwordHlwZWRlZiB1
bnNpZ25lZCBjaGFyIEdDM0R1Ynl0ZTsKK3R5cGVkZWYgc2hvcnQgR0MzRHNob3J0OwordHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBHQzNEdXNob3J0OwordHlwZWRlZiBpbnQgR0MzRGludDsKK3R5cGVk
ZWYgaW50IEdDM0RzaXplaTsKK3R5cGVkZWYgdW5zaWduZWQgaW50IEdDM0R1aW50OwordHlwZWRl
ZiBmbG9hdCBHQzNEZmxvYXQ7Cit0eXBlZGVmIGZsb2F0IEdDM0RjbGFtcGY7Cit0eXBlZGVmIHNp
Z25lZCBsb25nIGludCBHQzNEaW50cHRyOwordHlwZWRlZiBzaWduZWQgbG9uZyBpbnQgR0MzRHNp
emVpcHRyOworCit0eXBlZGVmIEdDM0R1aW50IFBsYXRmb3JtM0RPYmplY3Q7CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCShyZXZpc2lvbiA3NzgzNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lk
IGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25n
IHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1
bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtM0RPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdmlydHVhbCBHQzNEYm9v
bGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZpcnR1YWwgdm9p
ZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICBlbnVtIHsKICAg
ICAgICAgLy8gR0xfQ0hST01JVU1fbWFwX3N1YiAoZW51bXMgaW5oZXJpdGVkIGZyb20gR0xfQVJC
X3ZlcnRleF9idWZmZXJfb2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAJ
KHJldmlzaW9uIDc3ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDEw
IEBAIGJvb2wgRXh0ZW5zaW9uczNET3BlbkdMOjpzdXBwb3J0cyhjb25zdCAKICAgICAvLyBHTF9P
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9PSAiR0xf
T0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQi
KQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJf
dGV4dHVyZV9mbG9hdCIpOworICAgIAorICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0
CisgICAgaWYgKG5hbWUgPT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikKKyAgICAgICAg
cmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2Fy
cmF5X29iamVjdCIpOwogCiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgdGhlIHN0
YW5kYXJkIGRlcml2YXRpdmUgZnVuY3Rpb25zCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU19zdGFu
ZGFyZF9kZXJpdmF0aXZlcyIpCkBAIC0xMjcsNiArMTMxLDUzIEBAIHZvaWQgRXh0ZW5zaW9uczNE
T3BlbkdMOjpyZW5kZXJidWZmZXJTdG8KICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OwogfQogCitQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lvbnMzRE9wZW5HTDo6Y3JlYXRlVmVydGV4
QXJyYXlPRVMoKQoreworICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisjaWYg
R0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdAorICAgIEdMdWludCBhcnJheSA9IDA7CisgICAg
Z2xHZW5WZXJ0ZXhBcnJheXNBUFBMRSgxLCAmYXJyYXkpOworICAgIHJldHVybiBhcnJheTsKKyNl
bHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6
OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCit7CisgICAgaWYg
KCFhcnJheSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CisjaWYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdAorICAgIGdsRGVs
ZXRlVmVydGV4QXJyYXlzQVBQTEUoMSwgJmFycmF5KTsKKyNlbHNlCisjZW5kaWYKK30KKworR0Mz
RGJvb2xlYW4gRXh0ZW5zaW9uczNET3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RP
YmplY3QgYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNF
OworICAgIAorICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisjaWYgR0xfQVBQ
TEVfdmVydGV4X2FycmF5X29iamVjdAorICAgIHJldHVybiBnbElzVmVydGV4QXJyYXlBUFBMRShh
cnJheSk7CisjZWxzZQorICAgIHJldHVybiBHTF9GQUxTRTsKKyNlbmRpZgorfQorCit2b2lkIEV4
dGVuc2lvbnMzRE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJy
YXkpCit7CisgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyNpZiBHTF9BUFBM
RV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgZ2xCaW5kVmVydGV4QXJyYXlBUFBMRShhcnJheSk7
CisjZWxzZQorICAgIEFTU0VSVF9VTlVTRUQoYXJyYXksIHN1cHBvcnRzKGFycmF5KSk7CisjZW5k
aWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnMzRE9wZW5HTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAkocmV2aXNpb24gNzc4MzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihs
b25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgw
LCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ss
IHVuc2lnbmVkIGxvbmcgZmlsdGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KTsgICAgCisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1w
bGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCk7CisgICAgCisgICAgdmlydHVhbCBQbGF0Zm9ybTNET2JqZWN0
IGNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZpcnR1YWwgR0MzRGJvb2xlYW4gaXNWZXJ0
ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpOwogCiBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xh
c3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0M0QgaW1w
bGVtZW50YXRpb25zLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3
ODY3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0wNyAgQmVuIFZhbmlrICA8YmVudmFuaWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
dWcgNTM5NDA6IEltcGxlbWVudCB0aGUgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgV2ViR0wgZXh0
ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
Mzk0MAorCisgICAgICAgIFN0dWJiZWQgb3V0IG1ldGhvZHMgZm9yIHRoZSBuZXcgT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QgbWV0aG9kcy4KKworICAgICAgICAqIHNyYy9FeHRlbnNpb25zM0RDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y3JlYXRl
VmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06
OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENo
cm9taXVtOjppc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMz
RENocm9taXVtOjpiaW5kVmVydGV4QXJyYXlPRVMpOgorCiAyMDExLTAyLTA0ICBDaGFybGllIFJl
aXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFy
cGFyaXRhLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVu
c2lvbnMzRENocm9taXVtLmNwcAkocmV2aXNpb24gNzc4MzcpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3
LDYgKzk3LDI0IEBAIHZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmNvcHlUZXh0dXJlVG8KICAg
ICBtX2ludGVybmFsLT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHRleHR1cmUs
IHBhcmVudFRleHR1cmUpOwogfQogCitQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lvbnMzRENocm9t
aXVtOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
RXh0ZW5zaW9uczNEQ2hyb21pdW06OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmpl
Y3QpCit7Cit9CisKK0dDM0Rib29sZWFuIEV4dGVuc2lvbnMzRENocm9taXVtOjppc1ZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgRXh0
ZW5zaW9uczNEQ2hyb21pdW06OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KQor
eworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81569</attachid>
            <date>2011-02-07 19:38:19 -0800</date>
            <delta_ts>2011-02-17 13:11:12 -0800</delta_ts>
            <desc>Implementation of OES_vertex_array_object for WebKit/OSX (reupload)</desc>
            <filename>OES_vertex_array_object.patch</filename>
            <type>text/plain</type>
            <size>85586</size>
            <attacher name="Ben Vanik">ben.vanik</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3ODgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA3IEBACisyMDExLTAyLTA3ICBCZW4gVmFu
aWsgIDxiZW52YW5pa0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ1ZyA1Mzk0MDogSW1wbGVtZW50IHRoZSBPRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUzOTQwCisKKyAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgZXh0ZW5zaW9uIGFkZGluZyB0aGUgT0VT
VmVydGV4QXJyYXlPYmplY3QKKyAgICAgICAgZXh0ZW5zaW9uIGNvbnRhaW5lciBhbmQgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUyBWQU8gb2JqZWN0LiBUaGUgZXh0ZW5zaW9uIGlzIHBsdW1iZWQg
dGhyb3VnaAorICAgICAgICB0aGUgRXh0ZW5zaW9uczNEIGludGVyZmFjZSBhbmQgaW1wbGVtZW50
ZWQgaW4gdGhlIEV4dGVuc2lvbnMzRE9wZW5HTCAoV2ViS2l0L09TWCkgdmVyc2lvbiB3aGVuCisg
ICAgICAgIGl0IGlzIGF2YWlsYWJsZS4KKyAgICAgICAgVHdvIGJpZyBjaGFuZ2VzIHRvdWNoaW5n
IGNvZGUgb3V0c2lkZSBvZiB0aGUgZXh0ZW5zaW9uOgorICAgICAgICAqIE1vdmVkIHRoZSB0eXBl
ZGVmcyBhdCB0aGUgdG9wIG9mIEdyYXBoaWNzQ29udGV4dDNELmggdG8gR3JhcGhpY3NUeXBlczNE
LmggKG1vZGVsZWQgYWZ0ZXIKKyAgICAgICAgICBHcmFwaGljc1R5cGVzLmgpLiBUaGV5IGFyZSBu
b3QgbmFtZXNwYWNlZCBhcyB0aGV5IHdlcmVuJ3QgYmVmb3JlLgorICAgICAgICAqIFRvIG1ha2Ug
dGhlIGNvZGUgY2xlYW5lci9jbGVhcmVyIGFsbCB2ZXJ0ZXggYXR0cmlidXRlIHN0YXRlIGhhcyBi
ZWVuIG1vdmVkIHRvIHRoZQorICAgICAgICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgdHlw
ZSAoY2xhc3MgVmVydGV4QXR0cmliU3RhdGUpIGV4Y2VwdCBmb3IgdmFsdWVzIHdoaWNoIGFyZSBz
dGlsbAorICAgICAgICAgIG9uIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQuIEEgZGVmYXVsdCBW
QU8gaXMgbm93IHVzZWQgdG8gc3RvcmUgdGhlIGV4aXN0aW5nIGF0dHJpYnV0ZQorICAgICAgICAg
IHN0YXRlcyBmb3Igd2hlbiBubyBvdGhlciBWQU8gaXMgdXNlZC4gQ29kZSBpbiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgZGVhbGluZyB3aXRoIGJ1ZmZlcnMgYW5kCisgICAgICAgICAgdmVydGV4IGF0
dHJpYnV0ZXMgbm93IGRlZmVycyB0byBvciBzdG9yZXMgdmFsdWVzIGluIHRoZSBib3VuZCBhcnJh
eSBvYmplY3QuCisgICAgICAgIAorICAgICAgICBUZXN0ZWQgYWdhaW5zdCB0aGUgV2ViR0wgY29u
Zm9ybWFuY2Ugc3VpdGUgYW5kIHRoZSBuZXcKKyAgICAgICAgb2VzLXZlcnRleC1hcnJheS1vYmpl
Y3QgdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6fk9FU1ZlcnRleEFy
cmF5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXRO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZVZlcnRleEFycmF5
T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVWZXJ0
ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6aXNW
ZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6
YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVFbGVtZW50QXJyYXlTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJ
bmRleEFycmF5UHJlY2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlUmVuZGVyaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCdWZm
ZXJEYXRhUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYmZJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmVydGV4QXR0cmliZnZJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6aW5pdFZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzaW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRy
aWIwU2ltdWxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldE51bWJlck9mRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbk51bWJlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldE1heFZlcnRleEF0dHJpYnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6VmVydGV4QXR0cmliVmFsdWU6OlZlcnRleEF0dHJp
YlZhbHVlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6fldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmli
U3RhdGU6OlZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVM6OmlzRGVmYXVsdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjpoYXNFdmVyQmVlbkJvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OnNldEhhc0V2ZXJCZWVuQm91bmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Z2V0RWxlbWVudEFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OnNl
dEVsZW1lbnRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTOjpnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzM0QuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnMzRE9wZW5HTDo6c3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3Bl
bkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
M0RPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnMzRE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zM0RPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oOgorCiAyMDExLTAyLTA3ICBFbnJp
Y2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3Nzg4MikKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNiArMjkz
LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvSW50OEFycmF5Lmlk
bAogICAgIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCiAgICAgaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbAorICAgIGh0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5
T2JqZWN0LmlkbAogICAgIGh0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAogICAgIGh0bWwvY2Fu
dmFzL1VpbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCkBAIC0z
MDYsNiArMzA3LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvV2Vi
R0xTaGFkZXIuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmlkbAogICAgIGh0bWwv
Y2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbAorICAgIGh0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQu
aWRsCiAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApJbmRleDogU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA3Nzg4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw2ICszMTQsOCBAQCBE
T01fQ0xBU1NFUyA9IFwKICAgICBOb3RpZmljYXRpb25DZW50ZXIgXAogICAgIE9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMgXAogICAgIE9FU1RleHR1cmVGbG9hdCBcCisJT0VTVmVydGV4QXJyYXlPYmpl
Y3QgXAorCVdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgXAogICAgIE92ZXJmbG93RXZlbnQgXAog
ICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAogICAgIFBlcmZvcm1hbmNlIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3Nzg4MikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00ODQsNiArNDg0LDggQEAgd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT0VTU3RhbmRhcmREZXJpdmF0
aXZlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT0VTVGV4dHVyZUZsb2F0LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1RleHR1cmVGbG9hdC5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTT0VTVmVydGV4QXJyYXlPYmplY3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU092ZXJmbG93RXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
T3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRp
b25FdmVudC5jcHAgXApAQCAtNTkwLDYgKzU5Miw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVGV4dHVyZS5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYktpdENTU0tleWZyYW1lUnVsZS5jcHAgXApAQCAtMTU4NSwxMyArMTU4OSw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBcCi0JU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBcCi0JU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcCBcCi0JU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1R5cGVkQXJyYXlCYXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YktpdExvc2VDb250ZXh0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViS2l0
TG9zZUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXku
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5jcHAgXApAQCAtNDgxMiw3ICs0ODEw
LDE5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0
dXJlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24u
aAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAor
CVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVz
LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmggXAorCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXkuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJL
aXRMb3NlQ29udGV4dC5oCiBlbmRpZiAgIyBFTkQgRU5BQkxFX1dFQkdMCiAKIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q1NTUHJvcGVydHlOYW1lcy5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3Nzg4MikK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE4LDYg
KzIxOCw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwnLAorICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvVWludDE2QXJyYXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MzJB
cnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsJywKQEAg
LTIzMiw2ICsyMzMsNyBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmlk
bCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsJywKKyAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaWRsJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5pZGwnLApAQCAtMTkyOSw2ICsxOTMxLDggQEAKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdC5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNWZXJ0
ZXhBcnJheU9iamVjdC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1ZlcnRleEFy
cmF5T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1R5cGVkQXJyYXlCYXNlLmgn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaCcsCkBAIC0xOTYyLDYgKzE5NjYsOCBAQAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YktpdExvc2VDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViS2l0TG9z
ZUNvbnRleHQuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
Y3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCShyZXZpc2lvbiA3Nzg4MikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDcgQEAgSURMX0JJ
TkRJTkdTICs9IFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRs
IFwKICAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbCBcCiAgICAgaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbCBcCisgICAgaHRtbC9jYW52YXMvT0VTVmVydGV4
QXJyYXlPYmplY3QuaWRsIFwKICAgICBodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsIFwK
ICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuaWRsIFwKQEAgLTIwNiw2ICsyMDcsNyBAQCBJRExfQklORElOR1Mg
Kz0gXAogICAgIGh0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsIFwKICAgICBodG1sL2NhbnZhcy9X
ZWJHTFRleHR1cmUuaWRsIFwKICAgICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5p
ZGwgXAorICAgIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKICAg
ICBodG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5pZGwgXAogICAgIGh0bWwvY2FudmFzL1Vp
bnQ4QXJyYXkuaWRsIFwKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwgXApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDc3ODgyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTM4MzEsNiArMzgzMSw4IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmggXAog
ICAgICAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmggXAogICAgICAgICBo
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBcCisgICAgICAgIGh0bWwvY2FudmFzL09FU1Zl
cnRleEFycmF5T2JqZWN0LmggXAorICAgICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheS5o
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViS2l0
TG9zZUNvbnRleHQuaCBcCkBAIC0zODU2LDYgKzM4NTgsOCBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAgXAog
ICAgICAgICBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCBcCiAgICAgICAg
IGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhB
cnJheS5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc3ODgyKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjMyLDYgKzE2MzIsMTUgQEAKIAkJNzZGQzJCMEIxMjM3MERBMDAwNkE5OTFB
IC8qIERPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3NkZDMkIwODEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCAq
LzsgfTsKIAkJNzZGQzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZGQzJCMDkxMjM3MERB
MDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oICovOyB9OwogCQk3NkZGMTdFMzExMjM1NjczMDAx
RDYxQjUgLyogUGx1Z2luVmlld05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzZGRjE3RTIxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdO
b25lLmNwcCAqLzsgfTsKKwkJNzdBMTdBNzExMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFy
cmF5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc3QTE3QTZFMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAg
Ki87IH07CisJCTc3QTE3QTcyMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdBMTdB
NkYxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CisJCTc3
QTE3QTc3MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QTc0MTJG
Mjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCAqLzsgfTsKKwkJ
NzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QTc1MTJG
Mjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggKi87IH07CisJCTc3
QTE3QTdCMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGljc1R5cGVzM0QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QTdBMTJGMjg5MEIwMDRFMDJG
NiAvKiBHcmFwaGljc1R5cGVzM0QuaCAqLzsgfTsKKwkJNzdBMTdBQTYxMkYyOEIyQTAwNEUwMkY2
IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzdBMTdBQTIxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVy
dGV4QXJyYXlPYmplY3QuY3BwICovOyB9OworCQk3N0ExN0FBNzEyRjI4QjJBMDA0RTAyRjYgLyog
SlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzdBMTdBQTMxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJy
YXlPYmplY3QuaCAqLzsgfTsKKwkJNzdFRjYyRjMxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3N0VGNjJGMTEyRjlEQjc0MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmNwcCAqLzsgfTsKKwkJNzdFRjYyRjQxMkY5REI3NDAwQzc3QkQyIC8qIEpT
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzdFRjYyRjIxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oICovOyB9OwogCQk3OUFDOTIxODEwOTk0NUM4MDAyMTI2NkUgLyog
SlNDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QUM5MjE2MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZl
bnQuY3BwICovOyB9OwogCQk3OUFDOTIxOTEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlv
bkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CiAJ
CTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlFMTA5MTkzOUEw
MDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsgfTsKQEAgLTgwNjgsNiArODA3Nywx
NyBAQAogCQk3NkZDMkIwOTEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRva2VuTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NkZDMkIwQTEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01Ub2tlbkxpc3QuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NkZGMTdFMjExMjM1NjczMDAxRDYxQjUgLyogUGx1Z2luVmll
d05vbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luVmll
d05vbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3N0ExN0E2RTEyRjI4MTgy
MDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOyBwYXRoID0gY2FudmFz
L09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzdBMTdBNkYxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9FU1ZlcnRleEFycmF5T2JqZWN0Lmg7IHBhdGgg
PSBjYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzdBMTdBNzAxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBPRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGw7IHBhdGgg
PSBjYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3N0ExN0E3NDEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdBMTdBNzUxMkYyODY0MjAw
NEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oOyBwYXRoID0gY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzdBMTdBNzYxMkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRs
OyBwYXRoID0gY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3N0ExN0E3QTEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NU
eXBlczNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzVHlwZXMz
RC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3N0ExN0FBMjEyRjI4QjJBMDA0RTAy
RjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzdBMTdBQTMxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJy
YXlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNWZXJ0ZXhB
cnJheU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3N0VGNjJGMTEyRjlE
Qjc0MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3RUY2MkYyMTJGOURCNzQwMEM3N0JE
MiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc5QUM5MjE2MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9u
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb21wb3Np
dGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlBQzkyMTcxMDk5
NDVDODAwMjEyNjZFIC8qIEpTQ29tcG9zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0NvbXBvc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcG9zaXRpb25FdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzMwMiw2ICsxMzMyMiw5IEBACiAJ
CQkJNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi8sCiAJ
CQkJNkVCRjBFNDYxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5oICovLAogCQkJ
CTZFQkYwRTQ3MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuaWRsICovLAorCQkJ
CTc3QTE3QTZFMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi8s
CisJCQkJNzdBMTdBNkYxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0Lmgg
Ki8sCisJCQkJNzdBMTdBNzAxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0
LmlkbCAqLywKIAkJCQk2RTk2QkIxQjExOTg2RUUxMDA3RDk0Q0QgLyogVHlwZWRBcnJheUJhc2Uu
aCAqLywKIAkJCQk0OUVFQ0REQzEwNTAzQzIzMDAwOTlGQUIgLyogVWludDE2QXJyYXkuY3BwICov
LAogCQkJCTQ5RUVDREREMTA1MDNDMjQwMDA5OUZBQiAvKiBVaW50MTZBcnJheS5oICovLApAQCAt
MTMzNTAsNiArMTMzNzMsOSBAQAogCQkJCTBDM0YxRjU3MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJH
TFVuaWZvcm1Mb2NhdGlvbi5jcHAgKi8sCiAJCQkJMEMzRjFGNTgxMEM4ODcxMjAwRDcyQ0UxIC8q
IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi8sCiAJCQkJMEMzRjFGNTkxMEM4ODcxMjAwRDcyQ0Ux
IC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbCAqLywKKwkJCQk3N0ExN0E3NDEyRjI4NjQyMDA0
RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgKi8sCisJCQkJNzdBMTdBNzUx
MkYyODY0MjAwNEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCAqLywKKwkJCQk3
N0ExN0E3NjEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwg
Ki8sCiAJCQkJOTNGMUQ1QjcxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYktpdExvc2VDb250ZXh0LmNw
cCAqLywKIAkJCQk5M0YxRDVCODEyRDUzMkM0MDA4MzJCRUMgLyogV2ViS2l0TG9zZUNvbnRleHQu
aCAqLywKIAkJCQk5M0YxRDVCOTEyRDUzMkM0MDA4MzJCRUMgLyogV2ViS2l0TG9zZUNvbnRleHQu
aWRsICovLApAQCAtMTYyMTAsNiArMTYyMzYsOCBAQAogCQkJCTkwMDE3ODdGMTJFMDM3MDcwMDY0
ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCAqLywKIAkJCQk2RUJGMEU3NDEyQTk4
Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuY3BwICovLAogCQkJCTZFQkYwRTc1MTJB
OTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5oICovLAorCQkJCTc3QTE3QUEyMTJG
MjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCAqLywKKwkJCQk3N0Ex
N0FBMzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oICovLAogCQkJ
CUJDRUY0NUYzMEU2ODdCNUMwMDFDMTI4NyAvKiBKU1RleHRNZXRyaWNzLmNwcCAqLywKIAkJCQlC
Q0VGNDVGNDBFNjg3QjVDMDAxQzEyODcgLyogSlNUZXh0TWV0cmljcy5oICovLAogCQkJCUU0NDYx
NDEyMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwICovLApAQCAtMTYyNDIsNiAr
MTYyNzAsOCBAQAogCQkJCTQ5QzdCOTkyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMVGV4dHVy
ZS5oICovLAogCQkJCTBDNDUzNDI1MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxv
Y2F0aW9uLmNwcCAqLywKIAkJCQkwQzQ1MzQyNjEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVu
aWZvcm1Mb2NhdGlvbi5oICovLAorCQkJCTc3RUY2MkYxMTJGOURCNzQwMEM3N0JEMiAvKiBKU1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICovLAorCQkJCTc3RUY2MkYyMTJGOURCNzQwMEM3
N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCAqLywKIAkJCQk5M0YxRDVCRTEy
RDUzMzU2MDA4MzJCRUMgLyogSlNXZWJLaXRMb3NlQ29udGV4dC5jcHAgKi8sCiAJCQkJOTNGMUQ1
QkYxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViS2l0TG9zZUNvbnRleHQuaCAqLywKIAkJCSk7CkBA
IC0xNzQ4NSw2ICsxNzUxNSw3IEBACiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAwNTFENjg5IC8qIEdy
YXBoaWNzTGF5ZXJDbGllbnQuaCAqLywKIAkJCQlCMkEwMTU5NDBBRjZDRDUzMDA2QkNFMEUgLyog
R3JhcGhpY3NUeXBlcy5jcHAgKi8sCiAJCQkJQjJBMDE1OTUwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCAqLywKKwkJCQk3N0ExN0E3QTEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhp
Y3NUeXBlczNELmggKi8sCiAJCQkJQjI3NTM1NDAwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCAq
LywKIAkJCQlCMjc1MzU0MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuY3BwICovLAogCQkJCUIy
NzUzNTQyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5oICovLApAQCAtMjI0NDIsNiArMjI0NzMs
MTEgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVj
VVRGOC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzdBMTdBNzIxMkYyODE4MjAwNEUwMkY2IC8q
IE9FU1ZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3N0ExN0E3ODEyRjI4
NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzdBMTdBN0IxMkYyODkwQjAwNEUwMkY2IC8qIEdyYXBoaWNzVHlwZXMzRC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzdBMTdBQTcxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJy
YXlPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTc3RUY2MkY0MTJGOURCNzQwMEM3N0JEMiAv
KiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUxMjQs
NiArMjUxNjAsMTAgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNv
ZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNDNDQjgxMTJGMjVFNTEwMDMzQzVFRSAv
KiBUZXh0Q29kZWNVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMw
MEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzdBMTdBNzExMkYy
ODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTc3QTE3QTc3MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc3QTE3QUE2MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09F
U1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc3RUY2MkYzMTJGOURC
NzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyOUMxNkUxMzAwQzJFMjAwMkQ3OTRFIC8qIEFjY2Vzc2liaWxpdHlBbGxJbk9u
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDc3
ODgyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAi
SlNJbWFnZURhdGEuaCIKICNpbmNsdWRlICJKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCIKICNp
bmNsdWRlICJKU09FU1RleHR1cmVGbG9hdC5oIgorI2luY2x1ZGUgIkpTT0VTVmVydGV4QXJyYXlP
YmplY3QuaCIKKyNpbmNsdWRlICJKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNs
dWRlICJKU1dlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNGbG9hdDMyQXJyYXkuaCIKICNpbmNs
dWRlICJKU1dlYkdMRnJhbWVidWZmZXIuaCIKQEAgLTUzLDYgKzU1LDggQEAKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCIKICNp
bmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVj
dC5oIgorI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlICJX
ZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgogI2luY2x1ZGUgIldlYkdM
RXh0ZW5zaW9uLmgiCkBAIC0xMTUsNiArMTE5LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRAogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IGluZm8uZ2V0V2ViR0xUZXh0dXJlKCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdl
YkdMVW5zaWduZWRCeXRlQXJyYXk6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW5mby5nZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGNhc2UgV2ViR0xH
ZXRJbmZvOjprVHlwZVdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6CisgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTc5LDYgKzE4NSw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKiBleGVjLCBKU0QKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDxPRVNTdGFuZGFyZERlcml2YXRpdmVzKj4oZXh0ZW5zaW9uKSk7
CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VTVGV4dHVyZUZsb2F0TmFtZToKICAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxPRVNUZXh0dXJlRmxv
YXQqPihleHRlbnNpb24pKTsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpPRVNWZXJ0ZXhBcnJh
eU9iamVjdE5hbWU6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8T0VTVmVydGV4QXJyYXlPYmplY3QqPihleHRlbnNpb24pKTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA3Nzg4MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJWOEludDhB
cnJheS5oIgogI2luY2x1ZGUgIlY4T0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUg
IlY4T0VTVGV4dHVyZUZsb2F0LmgiCisjaW5jbHVkZSAiVjhPRVNWZXJ0ZXhBcnJheU9iamVjdC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFVpbnQxNkFycmF5LmgiCiAjaW5j
bHVkZSAiVjhVaW50MzJBcnJheS5oIgpAQCAtNjEsNiArNjIsNyBAQAogI2luY2x1ZGUgIlY4V2Vi
R0xTaGFkZXIuaCIKICNpbmNsdWRlICJWOFdlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIlY4V2Vi
R0xVbmlmb3JtTG9jYXRpb24uaCIKKyNpbmNsdWRlICJWOFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogCkBAIC0xNDYsNiArMTQ4LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4T2JqZWN0KAogICAgICAgICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVGV4
dHVyZSgpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5OgogICAgICAgICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXko
KSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UzoKKyAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0xNjcsNiArMTcxLDkgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KAogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1Rl
eHR1cmVGbG9hdE5hbWU6CiAgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nh
c3Q8T0VTVGV4dHVyZUZsb2F0Kj4oZXh0ZW5zaW9uKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV2ViR0xFeHRlbnNpb246Ok9FU1ZlcnRleEFycmF5T2JqZWN0TmFtZToKKyAgICAgICAgZXh0
ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxPRVNWZXJ0ZXhBcnJheU9iamVjdCo+KGV4
dGVuc2lvbikpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUKCFleHRlbnNpb25P
YmplY3QuSXNFbXB0eSgpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldEhpZGRlblJlZmVyZW5jZShj
b250ZXh0T2JqZWN0LCBleHRlbnNpb25PYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5o
IgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK09FU1ZlcnRleEFycmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9i
amVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lv
bigpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworT0VTVmVydGV4QXJyYXlPYmpl
Y3Q6On5PRVNWZXJ0ZXhBcnJheU9iamVjdCgpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjpFeHRl
bnNpb25OYW1lIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT0VTVmVydGV4QXJyYXlPYmplY3ROYW1lOworfQorCitQYXNzUmVmUHRyPE9FU1ZlcnRl
eEFycmF5T2JqZWN0PiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9FU1ZlcnRleEFy
cmF5T2JqZWN0KGNvbnRleHQpKTsKK30KKworUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTPiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQorewor
ICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IG8gPSBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpjcmVhdGUobV9jb250ZXh0LCBmYWxzZSk7CisgICAgbV9jb250ZXh0
LT5hZGRPYmplY3Qoby5nZXQoKSk7CisgICAgcmV0dXJuIG87Cit9CisKK3ZvaWQgT0VTVmVydGV4
QXJyYXlPYmplY3Q6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMqIGFycmF5T2JqZWN0KQoreworICAgIGlmICghYXJyYXlPYmplY3QgfHwgbV9jb250ZXh0LT5p
c0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhcnJheU9iamVjdC0+
ZGVsZXRlT2JqZWN0KCk7Cit9CisKK0dDM0Rib29sZWFuIE9FU1ZlcnRleEFycmF5T2JqZWN0Ojpp
c1ZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQor
eworICAgIGlmICghYXJyYXlPYmplY3QgfHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmICghYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVu
Qm91bmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgRXh0ZW5zaW9uczNEKiBleHRl
bnNpb25zID0gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7
CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmlzVmVydGV4QXJyYXlPRVMoYXJyYXlPYmplY3QtPm9i
amVjdCgpKTsKK30KKwordm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5
T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0LCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIGlmIChtX2NvbnRleHQtPmlzQ29u
dGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChhcnJheU9iamVjdCAm
JiBhcnJheU9iamVjdC0+Y29udGV4dCgpICE9IG1fY29udGV4dCkgeworICAgICAgICBtX2NvbnRl
eHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQz
RCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYgKGFycmF5T2JqZWN0ICYmICFhcnJheU9iamVj
dC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QtPm9iamVjdCgpKSB7CisgICAgICAg
IGV4dGVuc2lvbnMtPmJpbmRWZXJ0ZXhBcnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOwor
ICAgICAgICAKKyAgICAgICAgYXJyYXlPYmplY3QtPnNldEhhc0V2ZXJCZWVuQm91bmQoKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5zZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KGFycmF5T2JqZWN0KTsK
KyAgICB9IGVsc2UgeworICAgICAgICBleHRlbnNpb25zLT5iaW5kVmVydGV4QXJyYXlPRVMoMCk7
CisgICAgICAgIAorICAgICAgICBtX2NvbnRleHQtPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3Qo
MCk7CisgICAgfQorICAgIAorICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0
ZXhBcnJheU9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgT0VTVmVydGV4QXJyYXlPYmplY3RfaAorI2RlZmluZSBPRVNWZXJ0ZXhB
cnJheU9iamVjdF9oCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFt
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OworY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKKworY2xhc3MgT0VTVmVydGV4QXJy
YXlPYmplY3QgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0Kik7CisKKyAgICB2aXJ0dWFsIH5PRVNWZXJ0ZXhBcnJheU9iamVjdCgpOworICAgIHZpcnR1
YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisgICAgCisgICAgUGFzc1JlZlB0cjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgIHZv
aWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyopOworICAg
IEdDM0Rib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyop
OworICAgIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMq
LCBFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6CisgICAgT0VTVmVydGV4QXJyYXlPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisgICAgCisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBP
RVNWZXJ0ZXhBcnJheU9iamVjdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBb
Q29uZGl0aW9uYWw9V0VCR0wsIE9taXRDb25zdHJ1Y3RvciwgRG9udENoZWNrRW51bXNdIE9FU1Zl
cnRleEFycmF5T2JqZWN0IHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IFZFUlRFWF9BUlJB
WV9CSU5ESU5HX09FUyA9IDB4ODVCNTsKKyAgICAgICAgCisgICAgICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmddIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsK
KyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGRlbGV0ZVZlcnRleEFy
cmF5T0VTKGluIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgYXJyYXlPYmplY3QpOworICAgICAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nXSBib29sZWFuICAgICAgaXNWZXJ0ZXhBcnJheU9FUyhpbiBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIGFycmF5T2JqZWN0KTsKKyAgICAgICAgW1N0cmljdFR5
cGVDaGVja2luZ10gdm9pZCAgICAgICAgIGJpbmRWZXJ0ZXhBcnJheU9FUyhpbiBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTIGFycmF5T2JqZWN0KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9
OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5o
CShyZXZpc2lvbiA3Nzg4MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgICAg
ICBXZWJLaXRMb3NlQ29udGV4dE5hbWUsCiAgICAgICAgIE9FU1RleHR1cmVGbG9hdE5hbWUsCiAg
ICAgICAgIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXNOYW1lLAorICAgICAgICBPRVNWZXJ0ZXhBcnJh
eU9iamVjdE5hbWUsCiAgICAgfTsKIAogICAgIHZpcnR1YWwgfldlYkdMRXh0ZW5zaW9uKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAJKHJldmlz
aW9uIDc3ODgyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkdMUHJvZ3Jh
bS5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0
dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTEzNCw2ICsxMzUsMTIgQEAgV2ViR0xHZXRJbmZvOjpXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxVaQogewogfQogCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQ
YXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IHZhbHVlKQorICAgIDogbV90eXBl
KGtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUykKKyAgICAsIG1fd2ViZ2xWZXJ0ZXhBcnJh
eU9iamVjdCh2YWx1ZSkKK3sKK30KKwogV2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKCkKIHsK
IH0KQEAgLTIyNyw2ICsyMzQsMTIgQEAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBXZWJHTEdldElu
Zm86OmdldAogICAgIHJldHVybiBtX3dlYmdsVW5zaWduZWRCeXRlQXJyYXk7CiB9CiAKK1Bhc3NS
ZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtU
eXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk7CisgICAgcmV0dXJuIG1fd2ViZ2xWZXJ0ZXhB
cnJheU9iamVjdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZv
LmgJKHJldmlzaW9uIDc3ODgyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xH
ZXRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJH
TFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldl
YkdMVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKIAog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NjUsNyArNjYsOCBAQCBwdWJsaWM6CiAgICAgICAgIGtUeXBlV2ViR0xQcm9ncmFtLAogICAgICAg
ICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAogICAgICAgICBrVHlwZVdlYkdMVGV4dHVyZSwKLSAg
ICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5CisgICAgICAgIGtUeXBlV2ViR0xVbnNp
Z25lZEJ5dGVBcnJheSwKKyAgICAgICAga1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLAog
ICAgIH07CiAKICAgICBXZWJHTEdldEluZm8oYm9vbCB2YWx1ZSk7CkBAIC04Niw2ICs4OCw3IEBA
IHB1YmxpYzoKICAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4g
dmFsdWUpOwogICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gdmFsdWUp
OwogICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHZhbHVlKTsKKyAgICBX
ZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiB2YWx1ZSk7
CiAKICAgICB2aXJ0dWFsIH5XZWJHTEdldEluZm8oKTsKIApAQCAtMTA3LDYgKzExMCw3IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBnZXRXZWJHTFJlbmRlcmJ1
ZmZlcigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBnZXRXZWJHTFRleHR1
cmUoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdldFdlYkdMVW5zaWduZWRC
eXRlQXJyYXkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM+IGdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBUeXBlIG1fdHlwZTsKQEAgLTEyNiw2ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxX
ZWJHTFJlbmRlcmJ1ZmZlcj4gbV93ZWJnbFJlbmRlcmJ1ZmZlcjsKICAgICBSZWZQdHI8V2ViR0xU
ZXh0dXJlPiBtX3dlYmdsVGV4dHVyZTsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV93ZWJnbFVu
c2lnbmVkQnl0ZUFycmF5OworICAgIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBt
X3dlYmdsVmVydGV4QXJyYXlPYmplY3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHJldmlzaW9uIDc3ODgyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgorI2luY2x1ZGUgIk9F
U1ZlcnRleEFycmF5T2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAi
UmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJVaW50MTZBcnJheS5oIgpAQCAtMzgxLDcgKzM4Miw2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmUKICAgICBtX3VucGFj
a1ByZW11bHRpcGx5QWxwaGEgPSBmYWxzZTsKICAgICBtX3VucGFja0NvbG9yc3BhY2VDb252ZXJz
aW9uID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJST1dTRVJfREVGQVVMVF9XRUJHTDsKICAgICBtX2Jv
dW5kQXJyYXlCdWZmZXIgPSAwOwotICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSAwOwog
ICAgIG1fY3VycmVudFByb2dyYW0gPSAwOwogICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsK
ICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmcgPSAwOwpAQCAtMzkxLDcgKzM5MSw2IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmUKICAgICBtX3N0ZW5jaWxGdW5jUmVm
QmFjayA9IDA7CiAgICAgbV9zdGVuY2lsRnVuY01hc2sgPSAweEZGRkZGRkZGOwogICAgIG1fc3Rl
bmNpbEZ1bmNNYXNrQmFjayA9IDB4RkZGRkZGRkY7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5j
bGVhcigpOwogCiAgICAgR0MzRGludCBudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gMDsK
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfQ09NQklO
RURfVEVYVFVSRV9JTUFHRV9VTklUUywgJm51bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwpA
QCAtNDAxLDEzICs0MDAsMTkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxp
emVOZQogICAgIEdDM0RpbnQgbnVtVmVydGV4QXR0cmlicyA9IDA7CiAgICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmbnVtVmVy
dGV4QXR0cmlicyk7CiAgICAgbV9tYXhWZXJ0ZXhBdHRyaWJzID0gbnVtVmVydGV4QXR0cmliczsK
LQorICAgIAogICAgIG1fbWF4VGV4dHVyZVNpemUgPSAwOwogICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtX21heFRleHR1cmVT
aXplKTsKICAgICBtX21heFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVs
Q291bnQobV9tYXhUZXh0dXJlU2l6ZSwgbV9tYXhUZXh0dXJlU2l6ZSk7CiAgICAgbV9tYXhDdWJl
TWFwVGV4dHVyZVNpemUgPSAwOwogICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0M0Q6Ok1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsICZtX21heEN1YmVNYXBUZXh0dXJl
U2l6ZSk7CiAgICAgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVsID0gV2ViR0xUZXh0dXJlOjpjb21w
dXRlTGV2ZWxDb3VudChtX21heEN1YmVNYXBUZXh0dXJlU2l6ZSwgbV9tYXhDdWJlTWFwVGV4dHVy
ZVNpemUpOworICAgIAorICAgIG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKHRoaXMsIHRydWUpOworICAgIGFkZE9iamVjdChtX2Rl
ZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKSk7CisgICAgbV9ib3VuZFZlcnRleEFycmF5T2Jq
ZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3Q7CisgICAgCisgICAgbV92ZXJ0ZXhBdHRy
aWJWYWx1ZS5yZXNpemUobV9tYXhWZXJ0ZXhBdHRyaWJzKTsKIAogICAgIGlmICghaXNHTEVTMk5Q
T1RTdHJpY3QoKSkKICAgICAgICAgY3JlYXRlRmFsbGJhY2tCbGFja1RleHR1cmVzMXgxKCk7CkBA
IC01NzYsNyArNTgxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIo
RwogICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUikKICAg
ICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gYnVmZmVyOwogICAgIGVsc2UgaWYgKHRhcmdldCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpCi0gICAgICAgIG1fYm91
bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBidWZmZXI7CisgICAgICAgIG1fYm91bmRWZXJ0ZXhBcnJh
eU9iamVjdC0+c2V0RWxlbWVudEFycmF5QnVmZmVyKGJ1ZmZlcik7CiAgICAgZWxzZSB7CiAgICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwOTIsMTAgKzEwOTcsMTEgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZUJ1ZmZlcgogICAgICAgICByZXR1cm47CiAgICAg
aWYgKG1fYm91bmRBcnJheUJ1ZmZlciA9PSBidWZmZXIpCiAgICAgICAgIG1fYm91bmRBcnJheUJ1
ZmZlciA9IDA7Ci0gICAgaWYgKG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPT0gYnVmZmVyKQot
ICAgICAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyID0gMDsKKyAgICBSZWZQdHI8V2ViR0xC
dWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0
RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgaWYgKGVsZW1lbnRBcnJheUJ1ZmZlciA9PSBidWZm
ZXIpCisgICAgICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+c2V0RWxlbWVudEFycmF5QnVm
ZmVyKDApOwogICAgIGlmICghaXNHTEVTMkNvbXBsaWFudCgpKSB7Ci0gICAgICAgIFZlcnRleEF0
dHJpYlN0YXRlJiBzdGF0ZSA9IG1fdmVydGV4QXR0cmliU3RhdGVbMF07CisgICAgICAgIFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoMCk7CiAgICAgICAgIGlmIChi
dWZmZXIgPT0gc3RhdGUuYnVmZmVyQmluZGluZykgewogICAgICAgICAgICAgc3RhdGUuYnVmZmVy
QmluZGluZyA9IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsKICAgICAgICAgICAgIHN0YXRlLmJ5dGVz
UGVyRWxlbWVudCA9IDA7CkBAIC0xMjE2LDggKzEyMjIsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6ZGlzYWJsZVZlcnRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
aW5kZXggPCBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRy
aWJTdGF0ZVtpbmRleF0uZW5hYmxlZCA9IGZhbHNlOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVj
dC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgpOworICAgIHN0YXRlLmVuYWJsZWQgPSBmYWxz
ZTsKIAogICAgIGlmIChpbmRleCA+IDAgfHwgaXNHTEVTMkNvbXBsaWFudCgpKSB7CiAgICAgICAg
IG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKQEAgLTEyMjcsNyAr
MTIzMyw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlVmVydGUKIAogYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZShHQzNEc2l6
ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewotICAgIGlmICgh
bV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGVsZW1l
bnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5
QnVmZmVyKCk7CisgICAgCisgICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChvZmZzZXQgPCAwKQpAQCAtMTI0MSwxMSArMTI0OSwxMSBA
QCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVFbGVtCiAgICAgICAgIC8vIE1h
a2UgdW9mZnNldCBhbiBlbGVtZW50IG9mZnNldC4KICAgICAgICAgb2Zmc2V0IC89IDI7CiAKLSAg
ICAgICAgR0MzRHNpemVpcHRyIG4gPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkgLyAyOworICAgICAgICBHQzNEc2l6ZWlwdHIgbiA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpIC8gMjsKICAgICAgICAgaWYgKG9mZnNldCA+IG4gfHwgY291bnQgPiBuIC0g
b2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSBpZiAodHlwZSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkgewotICAgICAgICBHQzNEc2l6ZWlw
dHIgbiA9IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAg
R0MzRHNpemVpcHRyIG4gPSBlbGVtZW50QXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgaWYgKG9mZnNldCA+IG4gfHwgY291bnQgPiBuIC0gb2Zmc2V0KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTEyNTksMTggKzEyNjcsMjAgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZQogICAgIC8vIGFycmF5IGJ1ZmZlcnMgaGF2ZSBlbm91
Z2ggZWxlbWVudHMgdG8gc2F0aXNmeSB0aGF0IG1heGltdW0KICAgICAvLyBpbmRleCwgc2tpcHMg
dGhlIGV4cGVuc2l2ZSBwZXItZHJhdy1jYWxsIGl0ZXJhdGlvbiBpbgogICAgIC8vIHZhbGlkYXRl
SW5kZXhBcnJheVByZWNpc2UuCisgICAgCisgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50
QXJyYXlCdWZmZXIgPSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1
ZmZlcigpOwogCi0gICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKQorICAgIGlmICgh
ZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHQzNEc2l6
ZWlwdHIgbnVtRWxlbWVudHMgPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCk7CisgICAgR0MzRHNpemVpcHRyIG51bUVsZW1lbnRzID0gZWxlbWVudEFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCk7CiAgICAgLy8gVGhlIGNhc2UgY291bnQ9PTAgaXMgYWxyZWFkeSBkZWFsdCB3
aXRoIGluIGRyYXdFbGVtZW50cyBiZWZvcmUgdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZl
LgogICAgIGlmICghbnVtRWxlbWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25z
dCBBcnJheUJ1ZmZlciogYnVmZmVyID0gbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVu
dEFycmF5QnVmZmVyKCk7CisgICAgY29uc3QgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGVsZW1lbnRB
cnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAK
LSAgICBpbnQgbWF4SW5kZXggPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5nZXRDYWNoZWRN
YXhJbmRleCh0eXBlKTsKKyAgICBpbnQgbWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdl
dENhY2hlZE1heEluZGV4KHR5cGUpOwogICAgIGlmIChtYXhJbmRleCA8IDApIHsKICAgICAgICAg
Ly8gQ29tcHV0ZSB0aGUgbWF4aW11bSBpbmRleCBpbiB0aGUgZW50aXJlIGJ1ZmZlciBmb3IgdGhl
IGdpdmVuIHR5cGUgb2YgaW5kZXguCiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTI5MCw3
ICsxMzAwLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZQogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1h
eEluZGV4KTsKKyAgICAgICAgZWxlbWVudEFycmF5QnVmZmVyLT5zZXRDYWNoZWRNYXhJbmRleCh0
eXBlLCBtYXhJbmRleCk7CiAgICAgfQogCiAgICAgaWYgKG1heEluZGV4ID49IDApIHsKQEAgLTEz
MDcsOCArMTMxNywxMCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRl
CiB7CiAgICAgQVNTRVJUKGNvdW50ID49IDAgJiYgb2Zmc2V0ID49IDApOwogICAgIGludCBsYXN0
SW5kZXggPSAtMTsKKyAgICAKKyAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1
ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7
CiAKLSAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpCisgICAgaWYgKCFlbGVtZW50
QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghY291bnQpIHsK
QEAgLTEzMTYsNyArMTMyOCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZUluZGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKSkKKyAgICBpZiAoIWVsZW1lbnRB
cnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHVuc2lnbmVkIGxvbmcgdW9mZnNldCA9IG9mZnNldDsKQEAgLTEzMjUsMTQgKzEzMzcs
MTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZQogICAgIGlmICh0
eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCkgewogICAgICAgICAvLyBN
YWtlIHVvZmZzZXQgYW4gZWxlbWVudCBvZmZzZXQuCiAgICAgICAgIHVvZmZzZXQgLz0gc2l6ZW9m
KEdDM0R1c2hvcnQpOwotICAgICAgICBjb25zdCBHQzNEdXNob3J0KiBwID0gc3RhdGljX2Nhc3Q8
Y29uc3QgR0MzRHVzaG9ydCo+KG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJh
eUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9mZnNldDsKKyAgICAgICAgY29uc3QgR0MzRHVzaG9ydCog
cCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hvcnQqPihlbGVtZW50QXJyYXlCdWZmZXItPmVs
ZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9mZnNldDsKICAgICAgICAgd2hpbGUgKG4t
LSA+IDApIHsKICAgICAgICAgICAgIGlmICgqcCA+IGxhc3RJbmRleCkKICAgICAgICAgICAgICAg
ICBsYXN0SW5kZXggPSAqcDsKICAgICAgICAgICAgICsrcDsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkgewotICAgICAg
ICBjb25zdCBHQzNEdWJ5dGUqIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBHQzNEdWJ5dGUqPihtX2Jv
dW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKS0+ZGF0YSgpKSArIHVv
ZmZzZXQ7CisgICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdD
M0R1Ynl0ZSo+KGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCktPmRhdGEo
KSkgKyB1b2Zmc2V0OwogICAgICAgICB3aGlsZSAobi0tID4gMCkgewogICAgICAgICAgICAgaWYg
KCpwID4gbGFzdEluZGV4KQogICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9ICpwOwpAQCAtMTM1
MCwxMiArMTM2MiwxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVSZW5k
CiAgICAgaWYgKCFtX2N1cnJlbnRQcm9ncmFtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpbnQgbnVtQXR0cmliU3RhdGVzID0gc3RhdGljX2Nhc3Q8aW50PihtX3ZlcnRleEF0dHJpYlN0
YXRlLnNpemUoKSk7Ci0KICAgICAvLyBMb29rIGluIGVhY2ggZW5hYmxlZCB2ZXJ0ZXggYXR0cmli
IGFuZCBjaGVjayBpZiB0aGV5J3ZlIGJlZW4gYm91bmQgdG8gYSBidWZmZXIuCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1BdHRyaWJTdGF0ZXM7ICsraSkgewotICAgICAgICBpZiAobV92ZXJ0
ZXhBdHRyaWJTdGF0ZVtpXS5lbmFibGVkCi0gICAgICAgICAgICAmJiAoIW1fdmVydGV4QXR0cmli
U3RhdGVbaV0uYnVmZmVyQmluZGluZyB8fCAhbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpXS5idWZmZXJC
aW5kaW5nLT5vYmplY3QoKSkpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF4VmVy
dGV4QXR0cmliczsgKytpKSB7CisgICAgICAgIGNvbnN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+
Z2V0VmVydGV4QXR0cmliU3RhdGUoaSk7CisgICAgICAgIGlmIChzdGF0ZS5lbmFibGVkCisgICAg
ICAgICAgICAmJiAoIXN0YXRlLmJ1ZmZlckJpbmRpbmcgfHwgIXN0YXRlLmJ1ZmZlckJpbmRpbmct
Pm9iamVjdCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEzNjcs
OCArMTM3OCw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmQKICAg
ICBpbnQgbnVtQWN0aXZlQXR0cmliTG9jYXRpb25zID0gbV9jdXJyZW50UHJvZ3JhbS0+bnVtQWN0
aXZlQXR0cmliTG9jYXRpb25zKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BY3RpdmVB
dHRyaWJMb2NhdGlvbnM7ICsraSkgewogICAgICAgICBpbnQgbG9jID0gbV9jdXJyZW50UHJvZ3Jh
bS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb24oaSk7Ci0gICAgICAgIGlmIChsb2MgPj0wICYmIGxv
YyA8IG51bUF0dHJpYlN0YXRlcykgewotICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliU3Rh
dGUmIHN0YXRlID0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtsb2NdOworICAgICAgICBpZiAobG9jID49
IDAgJiYgbG9jIDwgKGludCltX21heFZlcnRleEF0dHJpYnMpIHsKKyAgICAgICAgICAgIGNvbnN0
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1f
Ym91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUobG9jKTsKICAgICAg
ICAgICAgIGlmIChzdGF0ZS5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gQXZvaWQgb2Zm
LWJ5LW9uZSBlcnJvcnMgaW4gbnVtRWxlbWVudHMgY29tcHV0YXRpb24uCiAgICAgICAgICAgICAg
ICAgLy8gRm9yIHRoZSBsYXN0IGVsZW1lbnQsIHdlIHdpbGwgb25seSB0b3VjaCB0aGUgZGF0YSBm
b3IgdGhlCkBAIC0xNTQzLDEwICsxNTU0LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmVuYWJsZVZlcnRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGluZGV4ID49
IG1fdmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
LnJlc2l6ZShpbmRleCArIDEpOwotCi0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5h
YmxlZCA9IHRydWU7CisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmli
U3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJT
dGF0ZShpbmRleCk7CisgICAgc3RhdGUuZW5hYmxlZCA9IHRydWU7CiAKICAgICBtX2NvbnRleHQt
PmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwpAQCAtMTgyMCw2ICsxODI5LDE0IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmcKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0
dXJlRmxvYXQuZ2V0KCk7CiAgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAi
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAg
ICAgaWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiKTsKKyAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6Y3JlYXRlKHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29lc1Zl
cnRleEFycmF5T2JqZWN0LmdldCgpOworICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgIldFQktJVF9sb3NlX2NvbnRleHQiKSkgewogICAgICAgICBpZiAoIW1fd2Via2l0TG9z
ZUNvbnRleHQpCiAgICAgICAgICAgICBtX3dlYmtpdExvc2VDb250ZXh0ID0gV2ViS2l0TG9zZUNv
bnRleHQ6OmNyZWF0ZSh0aGlzKTsKQEAgLTE5NDAsNyArMTk1Nyw3IEBAIFdlYkdMR2V0SW5mbyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpE
SVRIRVI6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+KG1fYm91bmRF
bGVtZW50QXJyYXlCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMQnVmZmVyPihtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJh
eUJ1ZmZlcigpKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklO
RElORzoKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRnJhbWVi
dWZmZXI+KG1fZnJhbWVidWZmZXJCaW5kaW5nKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6RlJPTlRfRkFDRToKQEAgLTIwNjYsNiArMjA4MywxNCBAQCBXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQ
YXJhbWV0ZXIoRXh0ZW5zaW9uczNEOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09F
Uyk7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6VkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTOiAvLyBPRVNfdmVydGV4
X2FycmF5X29iamVjdAorICAgICAgICBpZiAobV9vZXNWZXJ0ZXhBcnJheU9iamVjdCkgeworICAg
ICAgICAgICAgaWYgKCFtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTPihtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QpKTsKKyAgICAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICAgICAgfQorICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsK
ICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwpAQCAtMjIyNyw2ICsyMjUyLDggQEAgVmVj
dG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVj
dCIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwog
ICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9sb3NlX2NvbnRleHQiKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMjQyMiw0MCArMjQ0OSwyNiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRWCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKCk7CiAgICAgfQorICAgIGNvbnN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRl
eEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4
QXR0cmliU3RhdGUoaW5kZXgpOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAg
ICBpZiAoKCFpc0dMRVMyQ29tcGxpYW50KCkgJiYgIWluZGV4ICYmIG1fdmVydGV4QXR0cmliU3Rh
dGVbMF0uYnVmZmVyQmluZGluZyA9PSBtX3ZlcnRleEF0dHJpYjBCdWZmZXIpCi0gICAgICAgICAg
ICB8fCBpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKQotICAgICAgICAgICAgfHwg
IW1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ1ZmZlckJpbmRpbmcKLSAgICAgICAgICAgIHx8
ICFtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5idWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKKyAg
ICAgICAgaWYgKCghaXNHTEVTMkNvbXBsaWFudCgpICYmICFpbmRleCAmJiBtX2JvdW5kVmVydGV4
QXJyYXlPYmplY3QtPmdldFZlcnRleEF0dHJpYlN0YXRlKDApLmJ1ZmZlckJpbmRpbmcgPT0gbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyKQorICAgICAgICAgICAgfHwgIXN0YXRlLmJ1ZmZlckJpbmRpbmcK
KyAgICAgICAgICAgIHx8ICFzdGF0ZS5idWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKICAgICAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQ
YXNzUmVmUHRyPFdlYkdMQnVmZmVyPihtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5idWZmZXJC
aW5kaW5nKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1
ZmZlcj4oc3RhdGUuYnVmZmVyQmluZGluZykpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKLSAgICAgICAgaWYgKGluZGV4ID49IG1fdmVy
dGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhm
YWxzZSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV92ZXJ0ZXhBdHRyaWJTdGF0ZVtp
bmRleF0uZW5hYmxlZCk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGUuZW5hYmxl
ZCk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JN
QUxJWkVEOgotICAgICAgICBpZiAoaW5kZXggPj0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCkp
Ci0gICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKGZhbHNlKTsKLSAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5ub3JtYWxpemVkKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0ZS5ub3JtYWxpemVkKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1NJWkU6Ci0gICAgICAgIGlmIChp
bmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8aW50Pig0KSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8obV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uc2l6ZSk7CisgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oc3RhdGUuc2l6ZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVS
VEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0
dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGlj
X2Nhc3Q8aW50PigwKSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV92ZXJ0ZXhBdHRy
aWJTdGF0ZVtpbmRleF0ub3JpZ2luYWxTdHJpZGUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKHN0YXRlLm9yaWdpbmFsU3RyaWRlKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpW
RVJURVhfQVRUUklCX0FSUkFZX1RZUEU6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0
dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQpKTsKLSAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS50eXBlKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0ZS50eXBlKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpDVVJSRU5UX1ZFUlRFWF9BVFRSSUI6Ci0gICAgICAgIGlmIChpbmRleCA+PSBt
X3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkgewotICAgICAgICAgICAgZmxvYXQgdmFsdWVbNF0g
PSB7IDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYgfTsKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oRmxvYXQzMkFycmF5OjpjcmVhdGUodmFsdWUsIDQpKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKEZsb2F0MzJBcnJheTo6Y3JlYXRlKG1fdmVydGV4QXR0cmli
U3RhdGVbaW5kZXhdLnZhbHVlLCA0KSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oRmxv
YXQzMkFycmF5OjpjcmVhdGUobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udmFsdWUsIDQpKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CkBAIC0zNjg5LDE5ICszNzAyLDE3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWIKICAgICB9CiAgICAgR0MzRHNpemVpIGJ5dGVzUGVyRWxlbWVudCA9IHNpemUg
KiB0eXBlU2l6ZTsKIAotICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUo
KSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoaW5kZXggKyAxKTsKLQogICAg
IEdDM0RzaXplaSB2YWxpZGF0ZWRTdHJpZGUgPSBzdHJpZGUgPyBzdHJpZGUgOiBieXRlc1BlckVs
ZW1lbnQ7CiAKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5idWZmZXJCaW5kaW5nID0g
bV9ib3VuZEFycmF5QnVmZmVyOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ5dGVz
UGVyRWxlbWVudCA9IGJ5dGVzUGVyRWxlbWVudDsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2lu
ZGV4XS5zaXplID0gc2l6ZTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS50eXBlID0g
dHlwZTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5ub3JtYWxpemVkID0gbm9ybWFs
aXplZDsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5zdHJpZGUgPSB2YWxpZGF0ZWRT
dHJpZGU7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0ub3JpZ2luYWxTdHJpZGUgPSBz
dHJpZGU7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0ub2Zmc2V0ID0gb2Zmc2V0Owor
ICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9
IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgpOwor
ICAgIHN0YXRlLmJ1ZmZlckJpbmRpbmcgPSBtX2JvdW5kQXJyYXlCdWZmZXI7CisgICAgc3RhdGUu
Ynl0ZXNQZXJFbGVtZW50ID0gYnl0ZXNQZXJFbGVtZW50OworICAgIHN0YXRlLnNpemUgPSBzaXpl
OworICAgIHN0YXRlLnR5cGUgPSB0eXBlOworICAgIHN0YXRlLm5vcm1hbGl6ZWQgPSBub3JtYWxp
emVkOworICAgIHN0YXRlLnN0cmlkZSA9IHZhbGlkYXRlZFN0cmlkZTsKKyAgICBzdGF0ZS5vcmln
aW5hbFN0cmlkZSA9IHN0cmlkZTsKKyAgICBzdGF0ZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9j
b250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVk
LCBzdHJpZGUsIG9mZnNldCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KQEAgLTQ0MzgsNyArNDQ0OSw3IEBAIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGkKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gMDsKICAgICBzd2l0Y2ggKHRhcmdl
dCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSOgot
ICAgICAgICBidWZmZXIgPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLmdldCgpOworICAgICAg
ICBidWZmZXIgPSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpLmdldCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpB
UlJBWV9CVUZGRVI6CiAgICAgICAgIGJ1ZmZlciA9IG1fYm91bmRBcnJheUJ1ZmZlci5nZXQoKTsK
QEAgLTQ0ODcsMTIgKzQ0OTgsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYgogICAgICAgICB9CiAgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiAgICAgfQotICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkK
LSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoaW5kZXggKyAxKTsKLSAgICBtX3Zl
cnRleEF0dHJpYlN0YXRlW2luZGV4XS52YWx1ZVswXSA9IHYwOwotICAgIG1fdmVydGV4QXR0cmli
U3RhdGVbaW5kZXhdLnZhbHVlWzFdID0gdjE7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRl
eF0udmFsdWVbMl0gPSB2MjsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS52YWx1ZVsz
XSA9IHYzOworICAgIFZlcnRleEF0dHJpYlZhbHVlJiBhdHRyaWJWYWx1ZSA9IG1fdmVydGV4QXR0
cmliVmFsdWVbaW5kZXhdOworICAgIGF0dHJpYlZhbHVlLnZhbHVlWzBdID0gdjA7CisgICAgYXR0
cmliVmFsdWUudmFsdWVbMV0gPSB2MTsKKyAgICBhdHRyaWJWYWx1ZS52YWx1ZVsyXSA9IHYyOwor
ICAgIGF0dHJpYlZhbHVlLnZhbHVlWzNdID0gdjM7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWJmdkltcGwoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSog
diwgR0MzRHNpemVpIGV4cGVjdGVkU2l6ZSkKQEAgLTQ1NDAsMjEgKzQ1NTAsMjEgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYgogICAgICAgICB9CiAgICAgICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiAgICAgfQotICAgIGlmIChpbmRleCA+PSBt
X3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5y
ZXNpemUoaW5kZXggKyAxKTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5pbml0VmFs
dWUoKTsKKyAgICBWZXJ0ZXhBdHRyaWJWYWx1ZSYgYXR0cmliVmFsdWUgPSBtX3ZlcnRleEF0dHJp
YlZhbHVlW2luZGV4XTsKKyAgICBhdHRyaWJWYWx1ZS5pbml0VmFsdWUoKTsKICAgICBmb3IgKGlu
dCBpaSA9IDA7IGlpIDwgZXhwZWN0ZWRTaXplOyArK2lpKQotICAgICAgICBtX3ZlcnRleEF0dHJp
YlN0YXRlW2luZGV4XS52YWx1ZVtpaV0gPSB2W2lpXTsKKyAgICAgICAgYXR0cmliVmFsdWUudmFs
dWVbaWldID0gdltpaV07CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0VmVy
dGV4QXR0cmliMCgpCiB7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoMSk7CisgICAg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9i
b3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZSgwKTsKKyAgICAKICAg
ICBtX3ZlcnRleEF0dHJpYjBCdWZmZXIgPSBjcmVhdGVCdWZmZXIoKTsKICAgICBtX2NvbnRleHQt
PmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyLT5vYmplY3QoKSk7CiAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNz
Q29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpEWU5BTUlDX0RS
QVcpOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlWzBd
LmJ1ZmZlckJpbmRpbmcgPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXI7CisgICAgc3RhdGUuYnVmZmVy
QmluZGluZyA9IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsKICAgICBtX2NvbnRleHQtPmJpbmRCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCk7CiAgICAgbV9jb250ZXh0LT5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXpl
ID0gMDsKQEAgLTQ1NjgsNyArNDU3OCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpp
bml0VmVydGV4QXQKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpbXVsYXRlVmVydGV4
QXR0cmliMChHQzNEc2l6ZWkgbnVtVmVydGV4KQogewotICAgIGNvbnN0IFZlcnRleEF0dHJpYlN0
YXRlJiBzdGF0ZSA9IG1fdmVydGV4QXR0cmliU3RhdGVbMF07CisgICAgY29uc3QgV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRl
eEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZSgwKTsKKyAgICBjb25zdCBWZXJ0ZXhB
dHRyaWJWYWx1ZSYgYXR0cmliVmFsdWUgPSBtX3ZlcnRleEF0dHJpYlZhbHVlWzBdOwogICAgIGlm
ICghbV9jdXJyZW50UHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgdXNp
bmdWZXJ0ZXhBdHRyaWIwID0gbV9jdXJyZW50UHJvZ3JhbS0+aXNVc2luZ1ZlcnRleEF0dHJpYjAo
KTsKQEAgLTQ1ODgsMjEgKzQ1OTksMjEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNp
bXVsYXRlVmVydAogICAgIH0KICAgICBpZiAodXNpbmdWZXJ0ZXhBdHRyaWIwCiAgICAgICAgICYm
IChtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbAotICAgICAgICAgICAgfHwgc3RhdGUudmFsdWVb
MF0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMF0KLSAgICAgICAgICAgIHx8IHN0YXRl
LnZhbHVlWzFdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdCi0gICAgICAgICAgICB8
fCBzdGF0ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXQotICAgICAg
ICAgICAgfHwgc3RhdGUudmFsdWVbM10gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10p
KSB7CisgICAgICAgICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVswXSAhPSBtX3ZlcnRleEF0dHJp
YjBCdWZmZXJWYWx1ZVswXQorICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMV0gIT0g
bV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMV0KKyAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVl
LnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCisgICAgICAgICAgICB8
fCBhdHRyaWJWYWx1ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSkp
IHsKICAgICAgICAgT3duQXJyYXlQdHI8R0MzRGZsb2F0PiBidWZmZXJEYXRhID0gYWRvcHRBcnJh
eVB0cihuZXcgR0MzRGZsb2F0WyhudW1WZXJ0ZXggKyAxKSAqIDRdKTsKICAgICAgICAgZm9yIChH
QzNEc2l6ZWkgaWkgPSAwOyBpaSA8IG51bVZlcnRleCArIDE7ICsraWkpIHsKLSAgICAgICAgICAg
IGJ1ZmZlckRhdGFbaWkgKiA0XSA9IHN0YXRlLnZhbHVlWzBdOwotICAgICAgICAgICAgYnVmZmVy
RGF0YVtpaSAqIDQgKyAxXSA9IHN0YXRlLnZhbHVlWzFdOwotICAgICAgICAgICAgYnVmZmVyRGF0
YVtpaSAqIDQgKyAyXSA9IHN0YXRlLnZhbHVlWzJdOwotICAgICAgICAgICAgYnVmZmVyRGF0YVtp
aSAqIDQgKyAzXSA9IHN0YXRlLnZhbHVlWzNdOwotICAgICAgICB9Ci0gICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzBdID0gc3RhdGUudmFsdWVbMF07Ci0gICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzFdID0gc3RhdGUudmFsdWVbMV07Ci0gICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzJdID0gc3RhdGUudmFsdWVbMl07Ci0gICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzNdID0gc3RhdGUudmFsdWVbM107CisgICAgICAgICAgICBidWZm
ZXJEYXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVswXTsKKyAgICAgICAgICAgIGJ1ZmZl
ckRhdGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsxXTsKKyAgICAgICAgICAgIGJ1
ZmZlckRhdGFbaWkgKiA0ICsgMl0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsyXTsKKyAgICAgICAgICAg
IGJ1ZmZlckRhdGFbaWkgKiA0ICsgM10gPSBhdHRyaWJWYWx1ZS52YWx1ZVszXTsKKyAgICAgICAg
fQorICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVswXSA9IGF0dHJpYlZhbHVlLnZh
bHVlWzBdOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsxXSA9IGF0dHJpYlZh
bHVlLnZhbHVlWzFdOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXSA9IGF0
dHJpYlZhbHVlLnZhbHVlWzJdOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsz
XSA9IGF0dHJpYlZhbHVlLnZhbHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJl
ZmlsbCA9IGZhbHNlOwogICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3ND
b250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0
KCkpOwogICAgIH0KQEAgLTQ2MTIsNyArNDYyMyw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpzaW11bGF0ZVZlcnQKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVT
dGF0ZXNBZnRlclZlcnRleEF0dHJpYjBTaW11bGF0aW9uKCkKIHsKLSAgICBjb25zdCBWZXJ0ZXhB
dHRyaWJTdGF0ZSYgc3RhdGUgPSBtX3ZlcnRleEF0dHJpYlN0YXRlWzBdOworICAgIGNvbnN0IFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91
bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoMCk7CiAgICAgaWYgKHN0
YXRlLmJ1ZmZlckJpbmRpbmcgIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyKSB7CiAgICAgICAgIG1f
Y29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBvYmpl
Y3RPclplcm8oc3RhdGUuYnVmZmVyQmluZGluZy5nZXQoKSkpOwogICAgICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgc3RhdGUuc2l6ZSwgc3RhdGUudHlwZSwgc3RhdGUubm9y
bWFsaXplZCwgc3RhdGUub3JpZ2luYWxTdHJpZGUsIHN0YXRlLm9mZnNldCk7CkBAIC00NjIyLDEx
ICs0NjMzLDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlU3RhdGUKIAog
aW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TnVtYmVyT2ZFeHRlbnNpb25zKCkKIHsKLSAg
ICByZXR1cm4gKG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcyA/IDEgOiAwKSArIChtX3dlYmtpdExv
c2VDb250ZXh0ID8gMSA6IDApICsgKG1fb2VzVGV4dHVyZUZsb2F0ID8gMSA6IDApOworICAgIHJl
dHVybiAobV9vZXNWZXJ0ZXhBcnJheU9iamVjdCA/IDEgOiAwKSArIChtX29lc1N0YW5kYXJkRGVy
aXZhdGl2ZXMgPyAxIDogMCkgKyAobV93ZWJraXRMb3NlQ29udGV4dCA/IDEgOiAwKSArIChtX29l
c1RleHR1cmVGbG9hdCA/IDEgOiAwKTsKIH0KIAogV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uTnVtYmVyKGludCBpKQogeworICAgIGlmIChtX29lc1Zl
cnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIHJldHVybiBt
X29lc1ZlcnRleEFycmF5T2JqZWN0LmdldCgpOworICAgICAgICAtLWk7CisgICAgfQogICAgIGlm
IChtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKICAgICAgICAgaWYgKCFpKQogICAgICAgICAg
ICAgcmV0dXJuIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcy5nZXQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZp
c2lvbiA3Nzg4MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0
YTsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBPRVNTdGFuZGFyZERlcml2YXRpdmVzOwogY2xhc3Mg
T0VTVGV4dHVyZUZsb2F0OworY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CitjbGFzcyBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOwogCiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBw
dWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CkBAIC0yODIsNiArMjg0LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpOwogCiAgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR0xPYmplY3QqKTsKKyAgICAKKyAgICB1
bnNpZ25lZCBnZXRNYXhWZXJ0ZXhBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhWZXJ0ZXhB
dHRyaWJzOyB9CiAKICAgICAvLyBIZWxwZXJzIGZvciBKU0MgYmluZGluZ3MuCiAgICAgaW50IGdl
dE51bWJlck9mRXh0ZW5zaW9ucygpOwpAQCAtMjg5LDYgKzI5Myw3IEBAIHB1YmxpYzoKIAogICBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKKyAgICBmcmllbmQgY2xhc3Mg
T0VTVmVydGV4QXJyYXlPYmplY3Q7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENh
bnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKQEAg
LTM1NiwyNCArMzYxLDI0IEBAIHB1YmxpYzoKIAogICAgIC8vIExpc3Qgb2YgYm91bmQgVkJPJ3Mu
IFVzZWQgdG8gbWFpbnRhaW4gaW5mbyBhYm91dCBzaXplcyBmb3IgQVJSQVlfQlVGRkVSIGFuZCBz
dG9yZWQgdmFsdWVzIGZvciBFTEVNRU5UX0FSUkFZX0JVRkZFUgogICAgIFJlZlB0cjxXZWJHTEJ1
ZmZlcj4gbV9ib3VuZEFycmF5QnVmZmVyOwotICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3Vu
ZEVsZW1lbnRBcnJheUJ1ZmZlcjsKLQotICAgIC8vIENhY2hlZCB2YWx1ZXMgZm9yIHZlcnRleCBh
dHRyaWIgcmFuZ2UgY2hlY2tzCi0gICAgY2xhc3MgVmVydGV4QXR0cmliU3RhdGUgeworICAgIAor
ICAgIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBtX2RlZmF1bHRWZXJ0ZXhBcnJh
eU9iamVjdDsKKyAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gbV9ib3VuZFZl
cnRleEFycmF5T2JqZWN0OworICAgIHZvaWQgc2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChQYXNz
UmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IGFycmF5T2JqZWN0KQorICAgIHsKKyAg
ICAgICAgaWYgKGFycmF5T2JqZWN0KQorICAgICAgICAgICAgbV9ib3VuZFZlcnRleEFycmF5T2Jq
ZWN0ID0gYXJyYXlPYmplY3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYm91bmRWZXJ0
ZXhBcnJheU9iamVjdCA9IG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0OworICAgIH0KKyAgICAK
KyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJWYWx1ZSB7CiAgICAgcHVibGljOgotICAgICAgICBWZXJ0
ZXhBdHRyaWJTdGF0ZSgpCi0gICAgICAgICAgICA6IGVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAg
ICAsIGJ5dGVzUGVyRWxlbWVudCgwKQotICAgICAgICAgICAgLCBzaXplKDQpCi0gICAgICAgICAg
ICAsIHR5cGUoR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUKQotICAgICAgICAgICAgLCBub3JtYWxp
emVkKGZhbHNlKQotICAgICAgICAgICAgLCBzdHJpZGUoMTYpCi0gICAgICAgICAgICAsIG9yaWdp
bmFsU3RyaWRlKDApCi0gICAgICAgICAgICAsIG9mZnNldCgwKQorICAgICAgICBWZXJ0ZXhBdHRy
aWJWYWx1ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRWYWx1ZSgpOwogICAgICAgICB9
Ci0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgaW5pdFZhbHVlKCkKICAgICAgICAgewogICAgICAg
ICAgICAgdmFsdWVbMF0gPSAwLjBmOwpAQCAtMzgxLDIwICszODYsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgdmFsdWVbMl0gPSAwLjBmOwogICAgICAgICAgICAgdmFsdWVbM10gPSAxLjBmOwog
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBlbmFibGVkOwotICAgICAgICBSZWZQdHI8V2ViR0xC
dWZmZXI+IGJ1ZmZlckJpbmRpbmc7Ci0gICAgICAgIEdDM0RzaXplaSBieXRlc1BlckVsZW1lbnQ7
Ci0gICAgICAgIEdDM0RpbnQgc2l6ZTsKLSAgICAgICAgR0MzRGVudW0gdHlwZTsKLSAgICAgICAg
Ym9vbCBub3JtYWxpemVkOwotICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlOwotICAgICAgICBHQzNE
c2l6ZWkgb3JpZ2luYWxTdHJpZGU7Ci0gICAgICAgIEdDM0RpbnRwdHIgb2Zmc2V0OworICAgICAg
ICAKICAgICAgICAgR0MzRGZsb2F0IHZhbHVlWzRdOwogICAgIH07Ci0KLSAgICBWZWN0b3I8VmVy
dGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7CisgICAgVmVjdG9yPFZlcnRleEF0
dHJpYlZhbHVlPiBtX3ZlcnRleEF0dHJpYlZhbHVlOwogICAgIHVuc2lnbmVkIG1fbWF4VmVydGV4
QXR0cmliczsKICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsK
ICAgICBsb25nIG1fdmVydGV4QXR0cmliMEJ1ZmZlclNpemU7CkBAIC00NTYsNiArNDUxLDcgQEAg
cHVibGljOgogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAgUmVmUHRyPE9F
U1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7CiAgICAgUmVmUHRyPE9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXM+IG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlczsKKyAgICBSZWZQdHI8T0VTVmVy
dGV4QXJyYXlPYmplY3Q+IG1fb2VzVmVydGV4QXJyYXlPYmplY3Q7CiAgICAgUmVmUHRyPFdlYktp
dExvc2VDb250ZXh0PiBtX3dlYmtpdExvc2VDb250ZXh0OwogCiAgICAgLy8gSGVscGVycyBmb3Ig
Z2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAi
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1Jl
ZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIGJvb2wgZGVmYXVsdE9iamVjdCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoY3R4
LCBkZWZhdWx0T2JqZWN0KSk7Cit9CisKK1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OldlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIGJvb2wgZGVm
YXVsdE9iamVjdCkKKyAgICA6IFdlYkdMT2JqZWN0KGN0eCkKKyAgICAsIG1fZGVmYXVsdE9iamVj
dChkZWZhdWx0T2JqZWN0KQorICAgICwgbV9oYXNFdmVyQmVlbkJvdW5kKGZhbHNlKQorICAgICwg
bV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcigwKQoreworICAgIG1fdmVydGV4QXR0cmliU3RhdGUu
cmVzaXplKGN0eC0+Z2V0TWF4VmVydGV4QXR0cmlicygpKTsKKyAgICAKKyAgICBpZiAoIW1fZGVm
YXVsdE9iamVjdCkgeworICAgICAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0
KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICAgICAgc2V0T2Jq
ZWN0KGV4dGVuc2lvbnMtPmNyZWF0ZVZlcnRleEFycmF5T0VTKCkpOworICAgIH0KK30KKwordm9p
ZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKFBsYXRmb3JtM0RP
YmplY3Qgb2JqZWN0KQoreworICAgIGlmICghbV9kZWZhdWx0T2JqZWN0KSB7CisgICAgICAgIEV4
dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+
Z2V0RXh0ZW5zaW9ucygpOworICAgICAgICBleHRlbnNpb25zLT5kZWxldGVWZXJ0ZXhBcnJheU9F
UyhvYmplY3QpOworICAgIH0KK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVNfaAorI2RlZmlu
ZSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTX2gKKworI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgi
CisjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIDogcHVibGljIFdlYkdMT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkgeyBkZWxldGVP
YmplY3QoKTsgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIGJvb2wpOworICAgIAorICAgIC8v
IENhY2hlZCB2YWx1ZXMgZm9yIHZlcnRleCBhdHRyaWIgcmFuZ2UgY2hlY2tzCisgICAgY2xhc3Mg
VmVydGV4QXR0cmliU3RhdGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVmVydGV4QXR0cmliU3Rh
dGUoKQorICAgICAgICA6IGVuYWJsZWQoZmFsc2UpCisgICAgICAgICwgYnl0ZXNQZXJFbGVtZW50
KDApCisgICAgICAgICwgc2l6ZSg0KQorICAgICAgICAsIHR5cGUoR3JhcGhpY3NDb250ZXh0M0Q6
OkZMT0FUKQorICAgICAgICAsIG5vcm1hbGl6ZWQoZmFsc2UpCisgICAgICAgICwgc3RyaWRlKDE2
KQorICAgICAgICAsIG9yaWdpbmFsU3RyaWRlKDApCisgICAgICAgICwgb2Zmc2V0KDApCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVkOworICAgICAg
ICBSZWZQdHI8V2ViR0xCdWZmZXI+IGJ1ZmZlckJpbmRpbmc7CisgICAgICAgIEdDM0RzaXplaSBi
eXRlc1BlckVsZW1lbnQ7CisgICAgICAgIEdDM0RpbnQgc2l6ZTsKKyAgICAgICAgR0MzRGVudW0g
dHlwZTsKKyAgICAgICAgYm9vbCBub3JtYWxpemVkOworICAgICAgICBHQzNEc2l6ZWkgc3RyaWRl
OworICAgICAgICBHQzNEc2l6ZWkgb3JpZ2luYWxTdHJpZGU7CisgICAgICAgIEdDM0RpbnRwdHIg
b2Zmc2V0OworICAgIH07CisgICAgCisgICAgYm9vbCBpc0RlZmF1bHRPYmplY3QoKSBjb25zdCB7
IHJldHVybiBtX2RlZmF1bHRPYmplY3Q7IH0KKyAgICAKKyAgICBib29sIGhhc0V2ZXJCZWVuQm91
bmQoKSBjb25zdCB7IHJldHVybiBvYmplY3QoKSAmJiBtX2hhc0V2ZXJCZWVuQm91bmQ7IH0KKyAg
ICB2b2lkIHNldEhhc0V2ZXJCZWVuQm91bmQoKSB7IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7
IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBnZXRFbGVtZW50QXJyYXlCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyOyB9CisgICAgdm9p
ZCBzZXRFbGVtZW50QXJyYXlCdWZmZXIoUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gYnVmZmVyKSB7
IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBidWZmZXI7IH0KKyAgICAKKyAgICBWZXJ0ZXhB
dHRyaWJTdGF0ZSYgZ2V0VmVydGV4QXR0cmliU3RhdGUoaW50IGluZGV4KSB7IHJldHVybiBtX3Zl
cnRleEF0dHJpYlN0YXRlW2luZGV4XTsgfQorCitwcml2YXRlOgorICAgIFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgYm9vbCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0SW1wbChQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZpcnR1YWwg
Ym9vbCBpc1ZlcnRleEFycmF5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIGJv
b2wgbV9kZWZhdWx0T2JqZWN0OworICAgIGJvb2wgbV9oYXNFdmVyQmVlbkJvdW5kOworICAgIFJl
ZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICBWZWN0b3I8
VmVydGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbQ29uZGl0
aW9uYWw9V0VCR0xdIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgeworICAgIH07Cit9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAko
cmV2aXNpb24gNzc4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zM0QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBFeHRl
bnNpb25zM0RfaAogI2RlZmluZSBFeHRlbnNpb25zM0RfaAogCisjaW5jbHVkZSAiR3JhcGhpY3NU
eXBlczNELmgiCisKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTMsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gICBHTF9PRVNfdGV4
dHVyZV9mbG9hdAogICAgIC8vICAgR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCiAgICAgLy8g
ICBHTF9PRVNfcmdiOF9yZ2JhOAorICAgIC8vICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QK
IAogICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxlLAogICAg
IC8vICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgpAQCAtOTIsNiArOTUsOSBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIEdMX09FU19yZ2I4X3JnYmE4IG5hbWVzCiAgICAgICAgIFJHQjhf
T0VTID0gMHg4MDUxLAogICAgICAgICBSR0JBOF9PRVMgPSAweDgwNTgsCisgICAgICAgIAorICAg
ICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCBuYW1lcworICAgICAgICBWRVJURVhf
QVJSQVlfQklORElOR19PRVMgPSAweDg1QjUsCiAgICAgfTsKIAogICAgIC8vIEdMX0FSQl9yb2J1
c3RuZXNzCkBAIC0xMDEsNyArMTA3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3Jj
WTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2ln
bmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpID0gMDsKICAgICAKICAgICAvLyBH
TF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3
aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsgICAgCisgICAgdmlydHVhbCB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAwOworICAgIAorICAgIC8vIEdMX09F
U192ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgdmlydHVhbCBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0
ZVZlcnRleEFycmF5T0VTKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJh
eU9FUyhQbGF0Zm9ybTNET2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCBHQzNEYm9vbGVhbiBpc1Zl
cnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmlu
ZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNzc4ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDIsMjUgKzQz
LDYgQEAKICN1bmRlZiBWRVJTSU9OCiAjZW5kaWYKIAotLy8gR0MzRCB0eXBlcyBtYXRjaCB0aGUg
Y29ycmVzcG9uZGluZyBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKLS8vIGhl
YWRlciBmaWxlIGdsMi5oIGZyb20ga2hyb25vcy5vcmcuCi10eXBlZGVmIHVuc2lnbmVkIGludCBH
QzNEZW51bTsKLXR5cGVkZWYgdW5zaWduZWQgY2hhciBHQzNEYm9vbGVhbjsKLXR5cGVkZWYgdW5z
aWduZWQgaW50IEdDM0RiaXRmaWVsZDsKLXR5cGVkZWYgc2lnbmVkIGNoYXIgR0MzRGJ5dGU7Ci10
eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0MzRHVieXRlOwotdHlwZWRlZiBzaG9ydCBHQzNEc2hvcnQ7
Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IEdDM0R1c2hvcnQ7Ci10eXBlZGVmIGludCBHQzNEaW50
OwotdHlwZWRlZiBpbnQgR0MzRHNpemVpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgR0MzRHVpbnQ7
Ci10eXBlZGVmIGZsb2F0IEdDM0RmbG9hdDsKLXR5cGVkZWYgZmxvYXQgR0MzRGNsYW1wZjsKLXR5
cGVkZWYgc2lnbmVkIGxvbmcgaW50IEdDM0RpbnRwdHI7Ci10eXBlZGVmIHNpZ25lZCBsb25nIGlu
dCBHQzNEc2l6ZWlwdHI7Ci0KLXR5cGVkZWYgR0MzRHVpbnQgUGxhdGZvcm0zRE9iamVjdDsKLQog
I2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1
ZGUgPE9wZW5HTC9PcGVuR0wuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXMzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMzRC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlczNELmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgR3JhcGhpY3NUeXBlczNEX2gKKyNk
ZWZpbmUgR3JhcGhpY3NUeXBlczNEX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKy8v
IEdDM0QgdHlwZXMgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgR0wgdHlwZXMgYXMgZGVmaW5lZCBp
biBPcGVuR0wgRVMgMi4wCisvLyBoZWFkZXIgZmlsZSBnbDIuaCBmcm9tIGtocm9ub3Mub3JnLgor
dHlwZWRlZiB1bnNpZ25lZCBpbnQgR0MzRGVudW07Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0Mz
RGJvb2xlYW47Cit0eXBlZGVmIHVuc2lnbmVkIGludCBHQzNEYml0ZmllbGQ7Cit0eXBlZGVmIHNp
Z25lZCBjaGFyIEdDM0RieXRlOwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdDM0R1Ynl0ZTsKK3R5
cGVkZWYgc2hvcnQgR0MzRHNob3J0OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHQzNEdXNob3J0
OwordHlwZWRlZiBpbnQgR0MzRGludDsKK3R5cGVkZWYgaW50IEdDM0RzaXplaTsKK3R5cGVkZWYg
dW5zaWduZWQgaW50IEdDM0R1aW50OwordHlwZWRlZiBmbG9hdCBHQzNEZmxvYXQ7Cit0eXBlZGVm
IGZsb2F0IEdDM0RjbGFtcGY7Cit0eXBlZGVmIHNpZ25lZCBsb25nIGludCBHQzNEaW50cHRyOwor
dHlwZWRlZiBzaWduZWQgbG9uZyBpbnQgR0MzRHNpemVpcHRyOworCit0eXBlZGVmIEdDM0R1aW50
IFBsYXRmb3JtM0RPYmplY3Q7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oCShyZXZpc2lvbiA3Nzg4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gw
LCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRz
dFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgZmlsdGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVmVydGV4QXJy
YXlPRVMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgdmlydHVhbCBHQzNEYm9vbGVhbiBpc1ZlcnRleEFycmF5T0VTKFBsYXRm
b3JtM0RPYmplY3QpOworICAgIHZpcnR1YWwgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm0zRE9iamVjdCk7CiAKICAgICBlbnVtIHsKICAgICAgICAgLy8gR0xfQ0hST01JVU1fbWFwX3N1
YiAoZW51bXMgaW5oZXJpdGVkIGZyb20gR0xfQVJCX3ZlcnRleF9idWZmZXJfb2JqZWN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAJKHJldmlzaW9uIDc3ODgyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDEwIEBAIGJvb2wgRXh0ZW5zaW9uczNET3BlbkdM
OjpzdXBwb3J0cyhjb25zdCAKICAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGFzIGF2
YWlsYWJsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUg
PT0gIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpOworICAgIAorICAg
IC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgaWYgKG5hbWUgPT0gIkdMX09FU192
ZXJ0ZXhfYXJyYXlfb2JqZWN0IikKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOwogCiAgICAgLy8gRGVz
a3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgdGhlIHN0YW5kYXJkIGRlcml2YXRpdmUgZnVuY3Rpb25z
CiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpCkBAIC0xMjcs
NiArMTMxLDUzIEBAIHZvaWQgRXh0ZW5zaW9uczNET3BlbkdMOjpyZW5kZXJidWZmZXJTdG8KICAg
ICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKHRhcmdldCwgc2FtcGxlcywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCitQbGF0Zm9ybTNET2JqZWN0IEV4
dGVuc2lvbnMzRE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQoreworICAgIG1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisjaWYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVj
dAorICAgIEdMdWludCBhcnJheSA9IDA7CisgICAgZ2xHZW5WZXJ0ZXhBcnJheXNBUFBMRSgxLCAm
YXJyYXkpOworICAgIHJldHVybiBhcnJheTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKwordm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRm
b3JtM0RPYmplY3QgYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisjaWYgR0xfQVBQTEVf
dmVydGV4X2FycmF5X29iamVjdAorICAgIGdsRGVsZXRlVmVydGV4QXJyYXlzQVBQTEUoMSwgJmFy
cmF5KTsKKyNlbHNlCisjZW5kaWYKK30KKworR0MzRGJvb2xlYW4gRXh0ZW5zaW9uczNET3BlbkdM
Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCit7CisgICAgaWYgKCFh
cnJheSkKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOworICAgIAorICAgIG1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CisjaWYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdAorICAg
IHJldHVybiBnbElzVmVydGV4QXJyYXlBUFBMRShhcnJheSk7CisjZWxzZQorICAgIHJldHVybiBH
TF9GQUxTRTsKKyNlbmRpZgorfQorCit2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTDo6YmluZFZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCit7CisgICAgbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyNpZiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAg
Z2xCaW5kVmVydGV4QXJyYXlBUFBMRShhcnJheSk7CisjZWxzZQorICAgIEFTU0VSVF9VTlVTRUQo
YXJyYXksIHN1cHBvcnRzKGFycmF5KSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuaAkocmV2aXNpb24gNzc4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQz
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAg
dmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25n
IHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBs
b25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxm
b3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsgICAgCisg
ICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CisgICAg
CisgICAgdmlydHVhbCBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpOwor
ICAgIHZpcnR1YWwgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3Qp
OwogCiBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50
aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb25zLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3ODgyKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0w
NyAgQmVuIFZhbmlrICA8YmVudmFuaWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgNTM5NDA6IEltcGxlbWVudCB0aGUgT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mzk0MAorCisgICAgICAgIFN0dWJiZWQgb3V0
IG1ldGhvZHMgZm9yIHRoZSBuZXcgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgbWV0aG9kcy4KKwor
ICAgICAgICAqIHNyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjppc1ZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjpiaW5kVmVydGV4QXJyYXlP
RVMpOgorCiAyMDExLTAyLTAzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAJKHJldmlzaW9u
IDc3ODgyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21p
dW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywyNCBAQCB2b2lkIEV4dGVuc2lvbnMz
RENocm9taXVtOjpjb3B5VGV4dHVyZVRvCiAgICAgbV9pbnRlcm5hbC0+Y29weVRleHR1cmVUb1Bh
cmVudFRleHR1cmVDSFJPTUlVTSh0ZXh0dXJlLCBwYXJlbnRUZXh0dXJlKTsKIH0KIAorUGxhdGZv
cm0zRE9iamVjdCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQor
eworICAgIHJldHVybiAwOworfQorCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpkZWxldGVW
ZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KQoreworfQorCitHQzNEYm9vbGVhbiBFeHRl
bnNpb25zM0RDaHJvbWl1bTo6aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KQorewor
ICAgIHJldHVybiAwOworfQorCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpiaW5kVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQo=
</data>
<flag name="review"
          id="73177"
          type_id="1"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82854</attachid>
            <date>2011-02-17 13:11:12 -0800</date>
            <delta_ts>2011-02-17 17:58:35 -0800</delta_ts>
            <desc>Revised implementation of OES_vertex_array_object</desc>
            <filename>OES_vertex_array_object.patch</filename>
            <type>text/plain</type>
            <size>90074</size>
            <attacher name="Ben Vanik">ben.vanik</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4OTA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE2IEBACisyMDExLTAyLTE3ICBCZW4gVmFu
aWsgIDxiZW52YW5pa0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ1ZyA1Mzk0MDogSW1wbGVtZW50IHRoZSBPRVNfdmVydGV4X2Fy
cmF5X29iamVjdCBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUzOTQwCisKKyAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgZXh0ZW5zaW9uIGFkZGluZyB0aGUgT0VT
VmVydGV4QXJyYXlPYmplY3QKKyAgICAgICAgZXh0ZW5zaW9uIGNvbnRhaW5lciBhbmQgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUyBWQU8gb2JqZWN0LiBUaGUgZXh0ZW5zaW9uIGlzIHBsdW1iZWQg
dGhyb3VnaAorICAgICAgICB0aGUgRXh0ZW5zaW9uczNEIGludGVyZmFjZSBhbmQgaW1wbGVtZW50
ZWQgaW4gdGhlIEV4dGVuc2lvbnMzRE9wZW5HTCAoV2ViS2l0L09TWCkgdmVyc2lvbiB3aGVuCisg
ICAgICAgIGl0IGlzIGF2YWlsYWJsZS4KKyAgICAgICAgVHdvIGJpZyBjaGFuZ2VzIHRvdWNoaW5n
IGNvZGUgb3V0c2lkZSBvZiB0aGUgZXh0ZW5zaW9uIGZpbGVzOgorICAgICAgICAqIE1vdmVkIHRo
ZSB0eXBlZGVmcyBhdCB0aGUgdG9wIG9mIEdyYXBoaWNzQ29udGV4dDNELmggdG8gR3JhcGhpY3NU
eXBlczNELmggKG1vZGVsZWQgYWZ0ZXIKKyAgICAgICAgICBHcmFwaGljc1R5cGVzLmgpLiBUaGV5
IGFyZSBub3QgbmFtZXNwYWNlZCBhcyB0aGV5IHdlcmVuJ3QgYmVmb3JlLgorICAgICAgICAqIFRv
IG1ha2UgdGhlIGNvZGUgY2xlYW5lci9jbGVhcmVyIGFsbCB2ZXJ0ZXggYXR0cmlidXRlIHN0YXRl
IGhhcyBiZWVuIG1vdmVkIHRvIHRoZQorICAgICAgICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMgdHlwZSAoc3RydWN0IFZlcnRleEF0dHJpYlN0YXRlKSBleGNlcHQgZm9yIHZhbHVlcyB3aGlj
aCBhcmUgc3RpbGwKKyAgICAgICAgICBvbiB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBBIGRl
ZmF1bHQgVkFPIGlzIG5vdyB1c2VkIHRvIHN0b3JlIHRoZSBleGlzdGluZyBhdHRyaWJ1dGUKKyAg
ICAgICAgICBzdGF0ZXMgZm9yIHdoZW4gbm8gb3RoZXIgVkFPIGlzIHVzZWQuIENvZGUgaW4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0IGRlYWxpbmcgd2l0aCBidWZmZXJzIGFuZAorICAgICAgICAgIHZl
cnRleCBhdHRyaWJ1dGVzIG5vdyBkZWZlcnMgdG8gb3Igc3RvcmVzIHZhbHVlcyBpbiB0aGUgYm91
bmQgYXJyYXkgb2JqZWN0LgorICAgICAgICAKKyAgICAgICAgVGVzdGVkIGFnYWluc3QgdGhlIFdl
YkdMIGNvbmZvcm1hbmNlIHN1aXRlIGFuZCB0aGUgbmV3CisgICAgICAgIG9lcy12ZXJ0ZXgtYXJy
YXktb2JqZWN0IHRlc3Q6CisgICAgICAgIGh0dHBzOi8vY3ZzLmtocm9ub3Mub3JnL3N2bi9yZXBv
cy9yZWdpc3RyeS90cnVuay9wdWJsaWMvd2ViZ2wvc2RrL3Rlc3RzL2NvbmZvcm1hbmNlL29lcy12
ZXJ0ZXgtYXJyYXktb2JqZWN0Lmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIENvZGVHZW5lcmF0b3JzLnByaToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwOiBNb2Rp
ZmllZCBwcm9wZXJ0eSBzdm46aWdub3JlLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2Jq
ZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6
T0VTVmVydGV4QXJyYXlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlP
YmplY3Q6On5PRVNWZXJ0ZXhBcnJheU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6Z2V0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0
OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVy
dGV4QXJyYXlPYmplY3Q6OmlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VT
VmVydGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52
YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEV4dGVuc2lvbi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRWxlbWVudEFycmF5
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
SW5kZXhBcnJheUNvbnNlcnZhdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVJlbmRlcmluZ1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VmVydGV4QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJmSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmluaXRWZXJ0ZXhBdHRyaWIwKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2ltdWxhdGVWZXJ0ZXhBdHRy
aWIwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZVN0
YXRlc0FmdGVyVmVydGV4QXR0cmliMFNpbXVsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXROdW1iZXJPZkV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb25OdW1iZXIpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhWZXJ0ZXhBdHRyaWJzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OlZlcnRleEF0dHJp
YlZhbHVlOjpWZXJ0ZXhBdHRyaWJWYWx1ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVM6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6On5XZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlOjpWZXJ0ZXhBdHRyaWJTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjppc0RlZmF1bHRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6aGFzRXZlckJlZW5Cb3Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpzZXRIYXNF
dmVyQmVlbkJvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM6OmdldEVsZW1lbnRBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpzZXRFbGVtZW50QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Z2V0VmVydGV4QXR0cmliU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6aXNWZXJ0ZXhBcnJheSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlczNELmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0w6OmlzVmVydGV4QXJyYXlPRVMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RRdDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEUXQ6OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRFF0Ojppc1ZlcnRleEFycmF5T0VTKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRFF0OjpiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0Lmg6CisKIDIwMTEtMDItMTcg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNp
ZWogU3RhY2hvd2lhay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3ODg0MykK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOTQs
NiArMjk0LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvSW50OEFy
cmF5LmlkbAogICAgIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsCiAgICAg
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbAorICAgIGh0bWwvY2FudmFzL09FU1ZlcnRl
eEFycmF5T2JqZWN0LmlkbAogICAgIGh0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAogICAgIGh0
bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRs
CkBAIC0zMDcsNiArMzA4LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmlkbAogICAg
IGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbAorICAgIGh0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNv
bnRleHQuaWRsCiAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApJbmRleDog
U291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQkocmV2aXNpb24gNzg4NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Db2RlR2VuZXJhdG9ycy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsNyBA
QCBJRExfQklORElOR1MgKz0gXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5pZGwgXAogICAgIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsIFwK
ICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsIFwKKyAgICBodG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5m
by5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbCBcCiAgICAgaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXApAQCAtMjA5LDYgKzIxMCw3IEBAIElETF9C
SU5ESU5HUyArPSBcCiAgICAgaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwgXAogICAgIGh0bWwv
Y2FudmFzL1dlYkdMVGV4dHVyZS5pZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxv
Y2F0aW9uLmlkbCBcCisgICAgaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5p
ZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmlkbCBcCiAgICAgaHRtbC9j
YW52YXMvVWludDhBcnJheS5pZGwgXAogICAgIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDc4ODQzKQorKysg
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzEy
LDYgKzMxMiw4IEBAIERPTV9DTEFTU0VTID0gXAogICAgIE5vdGlmaWNhdGlvbkNlbnRlciBcCiAg
ICAgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyBcCiAgICAgT0VTVGV4dHVyZUZsb2F0IFwKKyAgICAg
T0VTVmVydGV4QXJyYXlPYmplY3QgXAorICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIFwK
ICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQYWdlVHJhbnNpdGlvbkV2ZW50IFwKICAgICBQZXJm
b3JtYW5jZSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzg4NDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDg2LDYgKzQ4
Niw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U09FU1RleHR1cmVGbG9hdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPRVNUZXh0
dXJlRmxvYXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1ZlcnRleEFycmF5T2Jq
ZWN0LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09FU1ZlcnRleEFycmF5T2JqZWN0
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2ZW50LmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKQEAgLTU5Miw2ICs1OTQsOCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
TFRleHR1cmUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVW5pZm9ybUxvY2F0
aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIFwKQEAg
LTE1ODcsMTMgKzE1OTEsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ludDhBcnJheS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0ludDhBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnRlZ3JhbFR5cGVk
QXJyYXlCYXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERl
cml2YXRpdmVzLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1VpbnQxNkFycmF5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
VWludDE2QXJyYXkuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXku
Y3BwIFwKQEAgLTI0MzcsNiArMjQzNSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzM0QuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSWNvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmggXApAQCAtNDgwNyw3ICs0ODA2LDE5IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0
ZXhBcnJheU9iamVjdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRl
eEFycmF5T2JqZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFy
cmF5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXkuaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5oCiBlbmRpZiAgIyBF
TkQgRU5BQkxFX1dFQkdMCiAKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1l
cy5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiA3ODg0MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCw3IEBACiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvSW50OEFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1
cmVGbG9hdC5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2Jq
ZWN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsJywKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsJywKQEAgLTIzMiw2ICsyMzMsNyBAQAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbmlm
b3JtTG9jYXRpb24uaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNv
bnRleHQuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmlk
bCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwnLApA
QCAtMTkzMSw2ICsxOTMzLDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNTdGFuZGFy
ZERlcml2YXRpdmVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oJywKKyAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmgnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1R5cGVkQXJyYXlCYXNlLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFz
L1VpbnQxNkFycmF5LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDE2QXJyYXku
aCcsCkBAIC0xOTY0LDYgKzE5NjgsOCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdM
VGV4dHVyZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlv
bi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgn
LAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
JywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaCcsCiAgICAgICAgICAgICAn
aHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwJywKQEAgLTI5NDcsNiArMjk1Myw3IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzM0QuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvSWNvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgnLApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDc4ODQzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIwMzEsNiArMjAzMSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMzRC5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIFwKQEAgLTM2
ODgsNiArMzY4OSw4IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmggXAogICAgICAgICBodG1sL2NhbnZhcy9PRVNT
dGFuZGFyZERlcml2YXRpdmVzLmggXAogICAgICAgICBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxv
YXQuaCBcCisgICAgICAgIGh0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmggXAorICAg
ICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheS5oIFwKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlv
bi5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaCBcCkBAIC0zNzE1
LDYgKzM3MTgsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9PRVNT
dGFuZGFyZERlcml2YXRpdmVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL09FU1RleHR1cmVG
bG9hdC5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAg
XAorICAgICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheS5jcHAgXAogICAgICAgICBodG1s
L2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xVbmlm
b3JtTG9jYXRpb24uY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQu
Y3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDc4ODQzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMxLDYgKzE2MzEs
MTUgQEAKIAkJNzZGQzJCMEIxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkZDMkIwODEyMzcw
REEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCAqLzsgfTsKIAkJNzZGQzJCMEMxMjM3MERB
MDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzZGQzJCMDkxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlz
dC5oICovOyB9OwogCQk3NkZGMTdFMzExMjM1NjczMDAxRDYxQjUgLyogUGx1Z2luVmlld05vbmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZGRjE3
RTIxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdOb25lLmNwcCAqLzsgfTsKKwkJNzdBMTdB
NzExMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QTZFMTJGMjgxODIwMDRF
MDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi87IH07CisJCTc3QTE3QTcyMTJGMjgx
ODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdBMTdBNkYxMkYyODE4MjAwNEUwMkY2IC8qIE9F
U1ZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CisJCTc3QTE3QTc3MTJGMjg2NDIwMDRFMDJGNiAv
KiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QTc0MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmNwcCAqLzsgfTsKKwkJNzdBMTdBNzgxMkYyODY0MjAwNEUwMkY2
IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QTE3QTc1MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmggKi87IH07CisJCTc3QTE3QTdCMTJGMjg5MEIwMDRFMDJGNiAv
KiBHcmFwaGljc1R5cGVzM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc3QTE3QTdBMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGljc1R5cGVzM0QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3N0ExN0FB
NjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0FBMjEyRjI4QjJBMDA0
RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi87IH07CisJCTc3QTE3QUE3MTJG
MjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0ExN0FBMzEyRjI4QjJBMDA0RTAyRjYg
LyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oICovOyB9OworCQk3N0VGNjJGMzEyRjlEQjc0MDBD
NzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3RUY2MkYxMTJGOURCNzQwMEM3N0JEMiAv
KiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwICovOyB9OworCQk3N0VGNjJGNDEyRjlE
Qjc0MDBDNzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3N0VGNjJGMjEyRjlEQjc0MDBDNzdC
RDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggKi87IH07CiAJCTc5QUM5MjE4MTA5
OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZFIC8q
IEpTQ29tcG9zaXRpb25FdmVudC5jcHAgKi87IH07CiAJCTc5QUM5MjE5MTA5OTQ1QzgwMDIxMjY2
RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc5QUM5MjE3MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9u
RXZlbnQuaCAqLzsgfTsKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9u
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OwpA
QCAtODA2Niw2ICs4MDc1LDE3IEBACiAJCTc2RkMyQjA5MTIzNzBEQTAwMDZBOTkxQSAvKiBET01U
b2tlbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVG9rZW5MaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RkMyQjBBMTIzNzBEQTAwMDZBOTkx
QSAvKiBET01Ub2tlbkxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVRva2VuTGlz
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RkYxN0UyMTEyMzU2NzMwMDFE
NjFCNSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQbHVnaW5WaWV3Tm9uZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTc3QTE3QTZFMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBPRVNWZXJ0ZXhBcnJheU9iamVjdC5j
cHA7IHBhdGggPSBjYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3N0ExN0E2RjEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJy
YXlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT0VTVmVydGV4QXJy
YXlPYmplY3QuaDsgcGF0aCA9IGNhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3N0ExN0E3MDEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVy
dGV4QXJyYXlPYmplY3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE9FU1ZlcnRleEFycmF5
T2JqZWN0LmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QTc0MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
N0ExN0E3NTEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3N0ExN0E3NjEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3QTdBMTJGMjg5MEIwMDRF
MDJGNiAvKiBHcmFwaGljc1R5cGVzM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NUeXBlczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc3QTE3
QUEyMTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTVmVydGV4QXJyYXlPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3N0ExN0FBMzEyRjI4QjJBMDA0RTAyRjYg
LyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU09FU1ZlcnRleEFycmF5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTc3RUY2MkYxMTJGOURCNzQwMEM3N0JEMiAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdFRjYy
RjIxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlBQzkyMTYxMDk5NDVDODAwMjEyNjZF
IC8qIEpTQ29tcG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29tcG9zaXRpb25FdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29t
cG9zaXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b21wb3NpdGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMjg3
LDYgKzEzMzA3LDkgQEAKIAkJCQk2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVy
ZUZsb2F0LmNwcCAqLywKIAkJCQk2RUJGMEU0NjEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVy
ZUZsb2F0LmggKi8sCiAJCQkJNkVCRjBFNDcxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVG
bG9hdC5pZGwgKi8sCisJCQkJNzdBMTdBNkUxMkYyODE4MjAwNEUwMkY2IC8qIE9FU1ZlcnRleEFy
cmF5T2JqZWN0LmNwcCAqLywKKwkJCQk3N0ExN0E2RjEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVy
dGV4QXJyYXlPYmplY3QuaCAqLywKKwkJCQk3N0ExN0E3MDEyRjI4MTgyMDA0RTAyRjYgLyogT0VT
VmVydGV4QXJyYXlPYmplY3QuaWRsICovLAogCQkJCTZFOTZCQjFCMTE5ODZFRTEwMDdEOTRDRCAv
KiBUeXBlZEFycmF5QmFzZS5oICovLAogCQkJCTQ5RUVDRERDMTA1MDNDMjMwMDA5OUZBQiAvKiBV
aW50MTZBcnJheS5jcHAgKi8sCiAJCQkJNDlFRUNEREQxMDUwM0MyNDAwMDk5RkFCIC8qIFVpbnQx
NkFycmF5LmggKi8sCkBAIC0xMzMzNSw2ICsxMzM1OCw5IEBACiAJCQkJMEMzRjFGNTcxMEM4ODcx
MjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLywKIAkJCQkwQzNGMUY1ODEw
Qzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCAqLywKIAkJCQkwQzNGMUY1
OTEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsICovLAorCQkJCTc3
QTE3QTc0MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCAq
LywKKwkJCQk3N0ExN0E3NTEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5oICovLAorCQkJCTc3QTE3QTc2MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmlkbCAqLywKIAkJCQk5M0YxRDVCNzEyRDUzMkM0MDA4MzJCRUMgLyogV2Vi
S2l0TG9zZUNvbnRleHQuY3BwICovLAogCQkJCTkzRjFENUI4MTJENTMyQzQwMDgzMkJFQyAvKiBX
ZWJLaXRMb3NlQ29udGV4dC5oICovLAogCQkJCTkzRjFENUI5MTJENTMyQzQwMDgzMkJFQyAvKiBX
ZWJLaXRMb3NlQ29udGV4dC5pZGwgKi8sCkBAIC0xNjIwNSw2ICsxNjIzMSw4IEBACiAJCQkJOTAw
MTc4N0YxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovLAog
CQkJCTZFQkYwRTc0MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAgKi8s
CiAJCQkJNkVCRjBFNzUxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi8s
CisJCQkJNzdBMTdBQTIxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwICovLAorCQkJCTc3QTE3QUEzMTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5
T2JqZWN0LmggKi8sCiAJCQkJQkNFRjQ1RjMwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1ldHJp
Y3MuY3BwICovLAogCQkJCUJDRUY0NUY0MEU2ODdCNUMwMDFDMTI4NyAvKiBKU1RleHRNZXRyaWNz
LmggKi8sCiAJCQkJRTQ0NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5jcHAg
Ki8sCkBAIC0xNjIzNyw2ICsxNjI2NSw4IEBACiAJCQkJNDlDN0I5OTIxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTV2ViR0xUZXh0dXJlLmggKi8sCiAJCQkJMEM0NTM0MjUxMENEQkJGQTAwODY5MTU3IC8q
IEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwICovLAogCQkJCTBDNDUzNDI2MTBDREJCRkEwMDg2
OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggKi8sCisJCQkJNzdFRjYyRjExMkY5REI3
NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgKi8sCisJCQkJNzdF
RjYyRjIxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oICov
LAogCQkJCTkzRjFENUJFMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYktpdExvc2VDb250ZXh0LmNw
cCAqLywKIAkJCQk5M0YxRDVCRjEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJLaXRMb3NlQ29udGV4
dC5oICovLAogCQkJKTsKQEAgLTE3NDc0LDYgKzE3NTA0LDcgQEAKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAogCQkJCUIyQTAxNTk0MEFG
NkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLywKIAkJCQlCMkEwMTU5NTBBRjZD
RDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oICovLAorCQkJCTc3QTE3QTdBMTJGMjg5MEIw
MDRFMDJGNiAvKiBHcmFwaGljc1R5cGVzM0QuaCAqLywKIAkJCQlCMjc1MzU0MDBCMDUzODE0MDAy
Q0U2NEYgLyogSWNvbi5oICovLAogCQkJCUIyNzUzNTQxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZS5jcHAgKi8sCiAJCQkJQjI3NTM1NDIwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggKi8sCkBA
IC0yMjQyOSw2ICsyMjQ2MCwxMSBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBY
U0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDNDQjgyMTJGMjVFNTEwMDMz
QzVFRSAvKiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3N0ExN0E3MjEy
RjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTc3QTE3QTc4MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3N0ExN0E3QjEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhp
Y3NUeXBlczNELmggaW4gSGVhZGVycyAqLywKKwkJCQk3N0ExN0FBNzEyRjI4QjJBMDA0RTAyRjYg
LyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzdFRjYyRjQx
MkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTc1Q0EyOEIxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTc1Q0EyQTIxMzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyNkU5OEExMDEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlG
YXN0UGF0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTExMCw2ICsyNTE0NiwxMCBAQAogCQkJCUUx
QkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM0M0NCODExMkYyNUU1MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVy
dGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzdBMTdBNzcxMkYyODY0MjAw
NEUwMkY2IC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNzdBMTdBQTYxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzdFRjYyRjMxMkY5REI3NDAwQzc3QkQyIC8qIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI5QzE2RTEzMDBD
MkUyMDAyRDc5NEUgLyogQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3NUNBMjhBMTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc1Q0EyQTExMzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNzg4NDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJKU0ltYWdlRGF0
YS5oIgogI2luY2x1ZGUgIkpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIkpT
T0VTVGV4dHVyZUZsb2F0LmgiCisjaW5jbHVkZSAiSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgor
I2luY2x1ZGUgIkpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUgIkpTV2Vi
R0xCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Zsb2F0MzJBcnJheS5oIgogI2luY2x1ZGUgIkpTV2Vi
R0xGcmFtZWJ1ZmZlci5oIgpAQCAtNTMsNiArNTUsOCBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIk9F
U1RleHR1cmVGbG9hdC5oIgorI2luY2x1ZGUgIk9FU1ZlcnRleEFycmF5T2JqZWN0LmgiCisjaW5j
bHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVy
LmgiCiAjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24u
aCIKQEAgLTExNSw2ICsxMTksOCBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhl
YywgSlNECiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRX
ZWJHTFRleHR1cmUoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25l
ZEJ5dGVBcnJheToKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZv
LmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzoKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSk7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CkBAIC0xNzksNiArMTg1LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTRAogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0
YXRpY19jYXN0PE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMqPihleHRlbnNpb24pKTsKICAgICBjYXNl
IFdlYkdMRXh0ZW5zaW9uOjpPRVNUZXh0dXJlRmxvYXROYW1lOgogICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PE9FU1RleHR1cmVGbG9hdCo+KGV4dGVu
c2lvbikpOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246Ok9FU1ZlcnRleEFycmF5T2JqZWN0TmFt
ZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxP
RVNWZXJ0ZXhBcnJheU9iamVjdCo+KGV4dGVuc2lvbikpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDc4ODQzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlY4SW50OEFycmF5LmgiCiAj
aW5jbHVkZSAiVjhPRVNTdGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiVjhPRVNUZXh0
dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJWOE9FU1ZlcnRleEFycmF5T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VWludDE2QXJyYXkuaCIKICNpbmNsdWRlICJWOFVp
bnQzMkFycmF5LmgiCkBAIC02MSw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVjhXZWJHTFNoYWRlci5o
IgogI2luY2x1ZGUgIlY4V2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVjhXZWJHTFVuaWZvcm1M
b2NhdGlvbi5oIgorI2luY2x1ZGUgIlY4V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAKQEAgLTE0Niw2ICsxNDgsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhPYmplY3QoCiAgICAgICAgIHJldHVybiB0b1Y4KGluZm8uZ2V0V2ViR0xUZXh0dXJlKCkpOwog
ICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXk6CiAgICAg
ICAgIHJldHVybiB0b1Y4KGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAgICBj
YXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOgorICAgICAg
ICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSk7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKQEAgLTE2Nyw2ICsxNzEsOSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhPYmplY3QoCiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VTVGV4dHVyZUZsb2F0
TmFtZToKICAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxPRVNUZXh0
dXJlRmxvYXQqPihleHRlbnNpb24pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJHTEV4
dGVuc2lvbjo6T0VTVmVydGV4QXJyYXlPYmplY3ROYW1lOgorICAgICAgICBleHRlbnNpb25PYmpl
Y3QgPSB0b1Y4KHN0YXRpY19jYXN0PE9FU1ZlcnRleEFycmF5T2JqZWN0Kj4oZXh0ZW5zaW9uKSk7
CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlQoIWV4dGVuc2lvbk9iamVjdC5Jc0Vt
cHR5KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0SGlkZGVuUmVmZXJlbmNlKGNvbnRleHRPYmpl
Y3QsIGV4dGVuc2lvbk9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgorCisj
aW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK09FU1ZlcnRleEFycmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9iamVjdChX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lvbigpCisg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworT0VTVmVydGV4QXJyYXlPYmplY3Q6On5P
RVNWZXJ0ZXhBcnJheU9iamVjdCgpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T0VTVmVydGV4QXJyYXlPYmplY3ROYW1lOworfQorCitQYXNzUmVmUHRyPE9FU1ZlcnRleEFycmF5
T2JqZWN0PiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9FU1ZlcnRleEFycmF5T2Jq
ZWN0KGNvbnRleHQpKTsKK30KKworUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
PiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQoreworICAgIGlm
IChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisg
ICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IG8gPSBXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTOjpjcmVhdGUobV9jb250ZXh0LCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpr
VmFvVHlwZVVzZXIpOworICAgIG1fY29udGV4dC0+YWRkT2JqZWN0KG8uZ2V0KCkpOworICAgIHJl
dHVybiBvLnJlbGVhc2UoKTsKK30KKwordm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRl
VmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QpCit7
CisgICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIGFycmF5T2JqZWN0LT5kZWxldGVPYmplY3QoKTsKK30K
KworR0MzRGJvb2xlYW4gT0VTVmVydGV4QXJyYXlPYmplY3Q6OmlzVmVydGV4QXJyYXlPRVMoV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QpCit7CisgICAgaWYgKCFhcnJheU9i
amVjdCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgCisgICAgaWYgKCFhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQt
PmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5z
aW9ucy0+aXNWZXJ0ZXhBcnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOworfQorCit2b2lk
IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpiaW5kVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUyogYXJyYXlPYmplY3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFVOVVNF
RF9QQVJBTShlYyk7CisgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgaWYgKGFycmF5T2JqZWN0ICYmIGFycmF5T2JqZWN0LT5jb250
ZXh0KCkgIT0gbV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0
M0QoKS0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBFeHRlbnNpb25zM0QqIGV4
dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMo
KTsKKyAgICBpZiAoYXJyYXlPYmplY3QgJiYgIWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3Qo
KSAmJiBhcnJheU9iamVjdC0+b2JqZWN0KCkpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+YmluZFZl
cnRleEFycmF5T0VTKGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CisgICAgICAgIAorICAgICAgICBh
cnJheU9iamVjdC0+c2V0SGFzRXZlckJlZW5Cb3VuZCgpOworICAgICAgICBtX2NvbnRleHQtPnNl
dEJvdW5kVmVydGV4QXJyYXlPYmplY3QoYXJyYXlPYmplY3QpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGV4dGVuc2lvbnMtPmJpbmRWZXJ0ZXhBcnJheU9FUygwKTsKKyAgICAgICAgCisgICAgICAg
IG1fY29udGV4dC0+c2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVjdCgwKTsKKyAgICB9CisgICAgCisg
ICAgbV9jb250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
T0VTVmVydGV4QXJyYXlPYmplY3RfaAorI2RlZmluZSBPRVNWZXJ0ZXhBcnJheU9iamVjdF9oCisK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgi
CisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUzsKKworY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3QgOiBwdWJs
aWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9FU1Zl
cnRleEFycmF5T2JqZWN0PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICB2
aXJ0dWFsIH5PRVNWZXJ0ZXhBcnJheU9iamVjdCgpOworICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFt
ZSBnZXROYW1lKCkgY29uc3Q7CisgICAgCisgICAgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTPiBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgIHZvaWQgZGVsZXRlVmVydGV4
QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyopOworICAgIEdDM0Rib29sZWFuIGlz
VmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyopOworICAgIHZvaWQgYmlu
ZFZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqLCBFeGNlcHRpb25Db2Rl
Jik7CisKK3ByaXZhdGU6CisgICAgT0VTVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdD
b250ZXh0Kik7CisgICAgCisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBPRVNWZXJ0ZXhBcnJheU9i
amVjdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVy
dGV4QXJyYXlPYmplY3QuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKK21vZHVsZSBodG1sIHsKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFs
PVdFQkdMLCBPbWl0Q29uc3RydWN0b3IsIERvbnRDaGVja0VudW1zXSBPRVNWZXJ0ZXhBcnJheU9i
amVjdCB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBWRVJURVhfQVJSQVlfQklORElOR19P
RVMgPSAweDg1QjU7CisgICAgICAgIAorICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTIGNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgICAgICAgICBkZWxldGVWZXJ0ZXhBcnJheU9FUyhpbiBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIGFycmF5T2JqZWN0KTsKKyAgICAgICAgW1N0cmljdFR5
cGVDaGVja2luZ10gYm9vbGVhbiAgICAgIGlzVmVydGV4QXJyYXlPRVMoaW4gV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUyBhcnJheU9iamVjdCk7CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmdd
IHZvaWQgICAgICAgICBiaW5kVmVydGV4QXJyYXlPRVMoaW4gV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUyBhcnJheU9iamVjdCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgfTsKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAkocmV2aXNpb24g
Nzg4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViS2l0TG9z
ZUNvbnRleHROYW1lLAogICAgICAgICBPRVNUZXh0dXJlRmxvYXROYW1lLAogICAgICAgICBPRVNT
dGFuZGFyZERlcml2YXRpdmVzTmFtZSwKKyAgICAgICAgT0VTVmVydGV4QXJyYXlPYmplY3ROYW1l
LAogICAgIH07CiAKICAgICB2aXJ0dWFsIH5XZWJHTEV4dGVuc2lvbigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCShyZXZpc2lvbiA3ODg0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNs
dWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2lu
Y2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMzQsNiArMTM1LDEyIEBAIFdlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NS
ZWZQdHI8VWkKIHsKIH0KIAorV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMpCisgICAgLCBtX3dlYmdsVmVydGV4QXJyYXlPYmplY3QodmFs
dWUpCit7Cit9CisKIFdlYkdMR2V0SW5mbzo6fldlYkdMR2V0SW5mbygpCiB7CiB9CkBAIC0yMjcs
NiArMjM0LDEyIEBAIFBhc3NSZWZQdHI8VWludDhBcnJheT4gV2ViR0xHZXRJbmZvOjpnZXQKICAg
ICByZXR1cm4gbV93ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OwogfQogCitQYXNzUmVmUHRyPFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMpOworICAgIHJldHVybiBtX3dlYmdsVmVydGV4QXJyYXlPYmplY3Q7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCShyZXZpc2lv
biA3ODg0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFRleHR1cmUu
aCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY1LDcgKzY2LDgg
QEAgcHVibGljOgogICAgICAgICBrVHlwZVdlYkdMUHJvZ3JhbSwKICAgICAgICAga1R5cGVXZWJH
TFJlbmRlcmJ1ZmZlciwKICAgICAgICAga1R5cGVXZWJHTFRleHR1cmUsCi0gICAgICAgIGtUeXBl
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheQorICAgICAgICBrVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJy
YXksCisgICAgICAgIGtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUywKICAgICB9OwogCiAg
ICAgV2ViR0xHZXRJbmZvKGJvb2wgdmFsdWUpOwpAQCAtODYsNiArODgsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IHZhbHVlKTsKICAg
ICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IHZhbHVlKTsKICAgICBXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxVaW50OEFycmF5PiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gdmFsdWUpOwogCiAgICAgdmly
dHVhbCB+V2ViR0xHZXRJbmZvKCk7CiAKQEAgLTEwNyw2ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gZ2V0V2ViR0xSZW5kZXJidWZmZXIoKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gZ2V0V2ViR0xUZXh0dXJlKCkgY29uc3Q7
CiAgICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBnZXRXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5
cGU7CkBAIC0xMjYsNiArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViR0xSZW5kZXJi
dWZmZXI+IG1fd2ViZ2xSZW5kZXJidWZmZXI7CiAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV93
ZWJnbFRleHR1cmU7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1fd2ViZ2xVbnNpZ25lZEJ5dGVB
cnJheTsKKyAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gbV93ZWJnbFZlcnRl
eEFycmF5T2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CShyZXZpc2lvbiA3ODg0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
aCIKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQwMiw3ICs0MDMsNiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5lCiAgICAgbV91bnBhY2tQcmVtdWx0aXBseUFs
cGhhID0gZmFsc2U7CiAgICAgbV91bnBhY2tDb2xvcnNwYWNlQ29udmVyc2lvbiA9IEdyYXBoaWNz
Q29udGV4dDNEOjpCUk9XU0VSX0RFRkFVTFRfV0VCR0w7CiAgICAgbV9ib3VuZEFycmF5QnVmZmVy
ID0gMDsKLSAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyID0gMDsKICAgICBtX2N1cnJlbnRQ
cm9ncmFtID0gMDsKICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IDA7CiAgICAgbV9yZW5kZXJi
dWZmZXJCaW5kaW5nID0gMDsKQEAgLTQxMiw3ICs0MTIsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6aW5pdGlhbGl6ZU5lCiAgICAgbV9zdGVuY2lsRnVuY1JlZkJhY2sgPSAwOwogICAg
IG1fc3RlbmNpbEZ1bmNNYXNrID0gMHhGRkZGRkZGRjsKICAgICBtX3N0ZW5jaWxGdW5jTWFza0Jh
Y2sgPSAweEZGRkZGRkZGOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGUuY2xlYXIoKTsKIAogICAg
IEdDM0RpbnQgbnVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IDA7CiAgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1B
R0VfVU5JVFMsICZudW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKQEAgLTQyMiwxMyArNDIx
LDE5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmUKICAgICBHQzNE
aW50IG51bVZlcnRleEF0dHJpYnMgPSAwOwogICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfQVRUUklCUywgJm51bVZlcnRleEF0dHJpYnMpOwog
ICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51bVZlcnRleEF0dHJpYnM7Ci0KKyAgICAKICAgICBt
X21heFRleHR1cmVTaXplID0gMDsKICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dDNEOjpNQVhfVEVYVFVSRV9TSVpFLCAmbV9tYXhUZXh0dXJlU2l6ZSk7CiAgICAgbV9t
YXhUZXh0dXJlTGV2ZWwgPSBXZWJHTFRleHR1cmU6OmNvbXB1dGVMZXZlbENvdW50KG1fbWF4VGV4
dHVyZVNpemUsIG1fbWF4VGV4dHVyZVNpemUpOwogICAgIG1fbWF4Q3ViZU1hcFRleHR1cmVTaXpl
ID0gMDsKICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhf
Q1VCRV9NQVBfVEVYVFVSRV9TSVpFLCAmbV9tYXhDdWJlTWFwVGV4dHVyZVNpemUpOwogICAgIG1f
bWF4Q3ViZU1hcFRleHR1cmVMZXZlbCA9IFdlYkdMVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ291bnQo
bV9tYXhDdWJlTWFwVGV4dHVyZVNpemUsIG1fbWF4Q3ViZU1hcFRleHR1cmVTaXplKTsKKyAgICAK
KyAgICBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM6OmNyZWF0ZSh0aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjprVmFvVHlwZURlZmF1
bHQpOworICAgIGFkZE9iamVjdChtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKSk7Cisg
ICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3Q7
CisgICAgCisgICAgbV92ZXJ0ZXhBdHRyaWJWYWx1ZS5yZXNpemUobV9tYXhWZXJ0ZXhBdHRyaWJz
KTsKIAogICAgIGlmICghaXNHTEVTMk5QT1RTdHJpY3QoKSkKICAgICAgICAgY3JlYXRlRmFsbGJh
Y2tCbGFja1RleHR1cmVzMXgxKCk7CkBAIC02MDAsNyArNjA1LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIoRwogICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUikKICAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gYnVmZmVy
OwogICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJB
WV9CVUZGRVIpCi0gICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSBidWZmZXI7Cisg
ICAgICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+c2V0RWxlbWVudEFycmF5QnVmZmVyKGJ1
ZmZlcik7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEx
MTYsMTAgKzExMjEsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZUJ1ZmZl
cgogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fYm91bmRBcnJheUJ1ZmZlciA9PSBidWZmZXIp
CiAgICAgICAgIG1fYm91bmRBcnJheUJ1ZmZlciA9IDA7Ci0gICAgaWYgKG1fYm91bmRFbGVtZW50
QXJyYXlCdWZmZXIgPT0gYnVmZmVyKQotICAgICAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVy
ID0gMDsKKyAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91
bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgaWYgKGVs
ZW1lbnRBcnJheUJ1ZmZlciA9PSBidWZmZXIpCisgICAgICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9i
amVjdC0+c2V0RWxlbWVudEFycmF5QnVmZmVyKDApOwogICAgIGlmICghaXNHTEVTMkNvbXBsaWFu
dCgpKSB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fdmVydGV4QXR0cmli
U3RhdGVbMF07CisgICAgICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJp
YlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmli
U3RhdGUoMCk7CiAgICAgICAgIGlmIChidWZmZXIgPT0gc3RhdGUuYnVmZmVyQmluZGluZykgewog
ICAgICAgICAgICAgc3RhdGUuYnVmZmVyQmluZGluZyA9IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsK
ICAgICAgICAgICAgIHN0YXRlLmJ5dGVzUGVyRWxlbWVudCA9IDA7CkBAIC0xMjQwLDggKzEyNDYs
OCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZVZlcnRlCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoaW5kZXggPCBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUo
KSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxlZCA9IGZhbHNlOwor
ICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9
IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgpOwor
ICAgIHN0YXRlLmVuYWJsZWQgPSBmYWxzZTsKIAogICAgIGlmIChpbmRleCA+IDAgfHwgaXNHTEVT
MkNvbXBsaWFudCgpKSB7CiAgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGluZGV4KTsKQEAgLTEyNTEsNyArMTI1Nyw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpkaXNhYmxlVmVydGUKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
RWxlbWVudEFycmF5U2l6ZShHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRw
dHIgb2Zmc2V0KQogewotICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICBS
ZWZQdHI8V2ViR0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJh
eU9iamVjdC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgCisgICAgaWYgKCFlbGVtZW50
QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChvZmZzZXQgPCAw
KQpAQCAtMTI2NSwxMSArMTI3MywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVFbGVtCiAgICAgICAgIC8vIE1ha2UgdW9mZnNldCBhbiBlbGVtZW50IG9mZnNldC4KICAg
ICAgICAgb2Zmc2V0IC89IDI7CiAKLSAgICAgICAgR0MzRHNpemVpcHRyIG4gPSBtX2JvdW5kRWxl
bWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkgLyAyOworICAgICAgICBHQzNEc2l6ZWlwdHIg
biA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC8gMjsKICAgICAgICAgaWYgKG9m
ZnNldCA+IG4gfHwgY291bnQgPiBuIC0gb2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSkgewotICAgICAgICBHQzNEc2l6ZWlwdHIgbiA9IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgR0MzRHNpemVpcHRyIG4gPSBlbGVtZW50QXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAgaWYgKG9mZnNldCA+IG4gfHwgY291bnQgPiBuIC0g
b2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEyODMsMTggKzEy
OTEsMjAgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZQogICAgIC8v
IGFycmF5IGJ1ZmZlcnMgaGF2ZSBlbm91Z2ggZWxlbWVudHMgdG8gc2F0aXNmeSB0aGF0IG1heGlt
dW0KICAgICAvLyBpbmRleCwgc2tpcHMgdGhlIGV4cGVuc2l2ZSBwZXItZHJhdy1jYWxsIGl0ZXJh
dGlvbiBpbgogICAgIC8vIHZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UuCisgICAgCisgICAgUmVm
UHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIgPSBtX2JvdW5kVmVydGV4QXJyYXlP
YmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwogCi0gICAgaWYgKCFtX2JvdW5kRWxlbWVu
dEFycmF5QnVmZmVyKQorICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBHQzNEc2l6ZWlwdHIgbnVtRWxlbWVudHMgPSBtX2JvdW5kRWxlbWVu
dEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgR0MzRHNpemVpcHRyIG51bUVsZW1lbnRz
ID0gZWxlbWVudEFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgLy8gVGhlIGNhc2UgY291
bnQ9PTAgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIGluIGRyYXdFbGVtZW50cyBiZWZvcmUgdmFsaWRh
dGVJbmRleEFycmF5Q29uc2VydmF0aXZlLgogICAgIGlmICghbnVtRWxlbWVudHMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBBcnJheUJ1ZmZlciogYnVmZmVyID0gbV9ib3VuZEVs
ZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgY29uc3QgQXJyYXlC
dWZmZXIqIGJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCk7
CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBpbnQgbWF4SW5kZXggPSBtX2JvdW5kRWxlbWVu
dEFycmF5QnVmZmVyLT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKKyAgICBpbnQgbWF4SW5kZXgg
PSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1heEluZGV4KHR5cGUpOwogICAgIGlmICht
YXhJbmRleCA8IDApIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgbWF4aW11bSBpbmRleCBpbiB0
aGUgZW50aXJlIGJ1ZmZlciBmb3IgdGhlIGdpdmVuIHR5cGUgb2YgaW5kZXguCiAgICAgICAgIHN3
aXRjaCAodHlwZSkgewpAQCAtMTMxNCw3ICsxMzI0LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlSW5kZQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPnNl
dENhY2hlZE1heEluZGV4KHR5cGUsIG1heEluZGV4KTsKKyAgICAgICAgZWxlbWVudEFycmF5QnVm
ZmVyLT5zZXRDYWNoZWRNYXhJbmRleCh0eXBlLCBtYXhJbmRleCk7CiAgICAgfQogCiAgICAgaWYg
KG1heEluZGV4ID49IDApIHsKQEAgLTEzMzEsOCArMTM0MSwxMCBAQCBib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmFsaWRhdGVJbmRlCiB7CiAgICAgQVNTRVJUKGNvdW50ID49IDAgJiYgb2Zm
c2V0ID49IDApOwogICAgIGludCBsYXN0SW5kZXggPSAtMTsKKyAgICAKKyAgICBSZWZQdHI8V2Vi
R0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+
Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CiAKLSAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlC
dWZmZXIpCisgICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmICghY291bnQpIHsKQEAgLTEzNDAsNyArMTM1Miw3IEBAIGJvb2wgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZm
ZXIoKSkKKyAgICBpZiAoIWVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIGxvbmcgdW9mZnNldCA9IG9m
ZnNldDsKQEAgLTEzNDksMTQgKzEzNjEsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlSW5kZQogICAgIGlmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9TSE9SVCkgewogICAgICAgICAvLyBNYWtlIHVvZmZzZXQgYW4gZWxlbWVudCBvZmZzZXQuCiAg
ICAgICAgIHVvZmZzZXQgLz0gc2l6ZW9mKEdDM0R1c2hvcnQpOwotICAgICAgICBjb25zdCBHQzNE
dXNob3J0KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVzaG9ydCo+KG1fYm91bmRFbGVtZW50
QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9mZnNldDsKKyAg
ICAgICAgY29uc3QgR0MzRHVzaG9ydCogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hvcnQq
PihlbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9m
ZnNldDsKICAgICAgICAgd2hpbGUgKG4tLSA+IDApIHsKICAgICAgICAgICAgIGlmICgqcCA+IGxh
c3RJbmRleCkKICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAqcDsKICAgICAgICAgICAgICsr
cDsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSkgewotICAgICAgICBjb25zdCBHQzNEdWJ5dGUqIHAgPSBzdGF0aWNfY2Fz
dDxjb25zdCBHQzNEdWJ5dGUqPihtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJy
YXlCdWZmZXIoKS0+ZGF0YSgpKSArIHVvZmZzZXQ7CisgICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSog
cCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1Ynl0ZSo+KGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxl
bWVudEFycmF5QnVmZmVyKCktPmRhdGEoKSkgKyB1b2Zmc2V0OwogICAgICAgICB3aGlsZSAobi0t
ID4gMCkgewogICAgICAgICAgICAgaWYgKCpwID4gbGFzdEluZGV4KQogICAgICAgICAgICAgICAg
IGxhc3RJbmRleCA9ICpwOwpAQCAtMTM3NCwxMiArMTM4NiwxMSBAQCBib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmFsaWRhdGVSZW5kCiAgICAgaWYgKCFtX2N1cnJlbnRQcm9ncmFtKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQgbnVtQXR0cmliU3RhdGVzID0gc3RhdGljX2Nh
c3Q8aW50PihtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSk7Ci0KICAgICAvLyBMb29rIGluIGVh
Y2ggZW5hYmxlZCB2ZXJ0ZXggYXR0cmliIGFuZCBjaGVjayBpZiB0aGV5J3ZlIGJlZW4gYm91bmQg
dG8gYSBidWZmZXIuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJTdGF0ZXM7ICsr
aSkgewotICAgICAgICBpZiAobV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpXS5lbmFibGVkCi0gICAgICAg
ICAgICAmJiAoIW1fdmVydGV4QXR0cmliU3RhdGVbaV0uYnVmZmVyQmluZGluZyB8fCAhbV92ZXJ0
ZXhBdHRyaWJTdGF0ZVtpXS5idWZmZXJCaW5kaW5nLT5vYmplY3QoKSkpCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF4VmVydGV4QXR0cmliczsgKytpKSB7CisgICAgICAgIGNvbnN0
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1f
Ym91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaSk7CisgICAgICAg
IGlmIChzdGF0ZS5lbmFibGVkCisgICAgICAgICAgICAmJiAoIXN0YXRlLmJ1ZmZlckJpbmRpbmcg
fHwgIXN0YXRlLmJ1ZmZlckJpbmRpbmctPm9iamVjdCgpKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTEzOTEsOCArMTQwMiw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZVJlbmQKICAgICBpbnQgbnVtQWN0aXZlQXR0cmliTG9jYXRpb25zID0g
bV9jdXJyZW50UHJvZ3JhbS0+bnVtQWN0aXZlQXR0cmliTG9jYXRpb25zKCk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1BY3RpdmVBdHRyaWJMb2NhdGlvbnM7ICsraSkgewogICAgICAgICBp
bnQgbG9jID0gbV9jdXJyZW50UHJvZ3JhbS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb24oaSk7Ci0g
ICAgICAgIGlmIChsb2MgPj0wICYmIGxvYyA8IG51bUF0dHJpYlN0YXRlcykgewotICAgICAgICAg
ICAgY29uc3QgVmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZVts
b2NdOworICAgICAgICBpZiAobG9jID49IDAgJiYgbG9jIDwgc3RhdGljX2Nhc3Q8aW50PihtX21h
eFZlcnRleEF0dHJpYnMpKSB7CisgICAgICAgICAgICBjb25zdCBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTOjpWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3RhdGUgPSBtX2JvdW5kVmVydGV4QXJyYXlPYmpl
Y3QtPmdldFZlcnRleEF0dHJpYlN0YXRlKGxvYyk7CiAgICAgICAgICAgICBpZiAoc3RhdGUuZW5h
YmxlZCkgewogICAgICAgICAgICAgICAgIC8vIEF2b2lkIG9mZi1ieS1vbmUgZXJyb3JzIGluIG51
bUVsZW1lbnRzIGNvbXB1dGF0aW9uLgogICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgbGFzdCBl
bGVtZW50LCB3ZSB3aWxsIG9ubHkgdG91Y2ggdGhlIGRhdGEgZm9yIHRoZQpAQCAtMTUwNiw3ICsx
NTE3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50cwogICAgIGlm
ICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9ib3VuZEVsZW1lbnRBcnJh
eUJ1ZmZlcikgeworICAgIGlmICghbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50
QXJyYXlCdWZmZXIoKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNTcyLDEwICsxNTgzLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVu
YWJsZVZlcnRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGluZGV4ID49IG1f
dmVydGV4QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJl
c2l6ZShpbmRleCArIDEpOwotCi0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uZW5hYmxl
ZCA9IHRydWU7CisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3Rh
dGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0
ZShpbmRleCk7CisgICAgc3RhdGUuZW5hYmxlZCA9IHRydWU7CiAKICAgICBtX2NvbnRleHQtPmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwpAQCAtMTg0OSw2ICsxODU4LDE0IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmcKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJl
RmxvYXQuZ2V0KCk7CiAgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAgICAg
aWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qi
KTsKKyAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBPRVNWZXJ0ZXhBcnJheU9i
amVjdDo6Y3JlYXRlKHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29lc1ZlcnRl
eEFycmF5T2JqZWN0LmdldCgpOworICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgIldFQktJVF9sb3NlX2NvbnRleHQiKSkgewogICAgICAgICBpZiAoIW1fd2Via2l0TG9zZUNv
bnRleHQpCiAgICAgICAgICAgICBtX3dlYmtpdExvc2VDb250ZXh0ID0gV2ViS2l0TG9zZUNvbnRl
eHQ6OmNyZWF0ZSh0aGlzKTsKQEAgLTE5NjksNyArMTk4Niw3IEBAIFdlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpESVRI
RVI6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+KG1fYm91bmRFbGVt
ZW50QXJyYXlCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRy
PFdlYkdMQnVmZmVyPihtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1
ZmZlcigpKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklORElO
RzoKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZm
ZXI+KG1fZnJhbWVidWZmZXJCaW5kaW5nKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
RlJPTlRfRkFDRToKQEAgLTIwOTUsNiArMjExMiwxNCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJh
bWV0ZXIoRXh0ZW5zaW9uczNEOjpGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyk7
CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfRU5VTSk7CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6VkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTOiAvLyBPRVNfdmVydGV4X2Fy
cmF5X29iamVjdAorICAgICAgICBpZiAobV9vZXNWZXJ0ZXhBcnJheU9iamVjdCkgeworICAgICAg
ICAgICAgaWYgKCFtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTPihtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QpKTsKKyAgICAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICAgICAgfQorICAgICAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwpAQCAtMjI1Niw2ICsyMjgxLDggQEAgVmVjdG9y
PFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfdGV4dHVyZV9mbG9hdCIpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIp
KQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogICAg
IHJlc3VsdC5hcHBlbmQoIldFQktJVF9sb3NlX2NvbnRleHQiKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtMjQ1MSw0MCArMjQ3OCwyNiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CiAgICAgfQorICAgIGNvbnN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0
dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0
cmliU3RhdGUoaW5kZXgpOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAgICBp
ZiAoKCFpc0dMRVMyQ29tcGxpYW50KCkgJiYgIWluZGV4ICYmIG1fdmVydGV4QXR0cmliU3RhdGVb
MF0uYnVmZmVyQmluZGluZyA9PSBtX3ZlcnRleEF0dHJpYjBCdWZmZXIpCi0gICAgICAgICAgICB8
fCBpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKQotICAgICAgICAgICAgfHwgIW1f
dmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ1ZmZlckJpbmRpbmcKLSAgICAgICAgICAgIHx8ICFt
X3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5idWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKKyAgICAg
ICAgaWYgKCghaXNHTEVTMkNvbXBsaWFudCgpICYmICFpbmRleCAmJiBtX2JvdW5kVmVydGV4QXJy
YXlPYmplY3QtPmdldFZlcnRleEF0dHJpYlN0YXRlKDApLmJ1ZmZlckJpbmRpbmcgPT0gbV92ZXJ0
ZXhBdHRyaWIwQnVmZmVyKQorICAgICAgICAgICAgfHwgIXN0YXRlLmJ1ZmZlckJpbmRpbmcKKyAg
ICAgICAgICAgIHx8ICFzdGF0ZS5idWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKICAgICAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNz
UmVmUHRyPFdlYkdMQnVmZmVyPihtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5idWZmZXJCaW5k
aW5nKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZl
cj4oc3RhdGUuYnVmZmVyQmluZGluZykpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZF
UlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKLSAgICAgICAgaWYgKGluZGV4ID49IG1fdmVydGV4
QXR0cmliU3RhdGUuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhmYWxz
ZSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRl
eF0uZW5hYmxlZCk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGUuZW5hYmxlZCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJ
WkVEOgotICAgICAgICBpZiAoaW5kZXggPj0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5zaXplKCkpCi0g
ICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5ub3JtYWxpemVkKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0ZS5ub3JtYWxpemVkKTsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1NJWkU6Ci0gICAgICAgIGlmIChpbmRl
eCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oc3RhdGljX2Nhc3Q8aW50Pig0KSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8obV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0uc2l6ZSk7CisgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oc3RhdGUuc2l6ZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVY
X0FUVFJJQl9BUlJBWV9TVFJJREU6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJp
YlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8aW50PigwKSk7Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8obV92ZXJ0ZXhBdHRyaWJT
dGF0ZVtpbmRleF0ub3JpZ2luYWxTdHJpZGUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KHN0YXRlLm9yaWdpbmFsU3RyaWRlKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJU
RVhfQVRUUklCX0FSUkFZX1RZUEU6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJp
YlN0YXRlLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQpKTsKLSAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS50eXBlKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0ZS50eXBlKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpDVVJSRU5UX1ZFUlRFWF9BVFRSSUI6Ci0gICAgICAgIGlmIChpbmRleCA+PSBtX3Zl
cnRleEF0dHJpYlN0YXRlLnNpemUoKSkgewotICAgICAgICAgICAgZmxvYXQgdmFsdWVbNF0gPSB7
IDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYgfTsKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oRmxvYXQzMkFycmF5OjpjcmVhdGUodmFsdWUsIDQpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKEZsb2F0MzJBcnJheTo6Y3JlYXRlKG1fdmVydGV4QXR0cmliU3Rh
dGVbaW5kZXhdLnZhbHVlLCA0KSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oRmxvYXQz
MkFycmF5OjpjcmVhdGUobV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF0udmFsdWUsIDQpKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CkBAIC0zNzIyLDE5ICszNzM1LDE3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWIKICAgICB9CiAgICAgR0MzRHNpemVpIGJ5dGVzUGVyRWxlbWVudCA9IHNpemUgKiB0
eXBlU2l6ZTsKIAotICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkK
LSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoaW5kZXggKyAxKTsKLQogICAgIEdD
M0RzaXplaSB2YWxpZGF0ZWRTdHJpZGUgPSBzdHJpZGUgPyBzdHJpZGUgOiBieXRlc1BlckVsZW1l
bnQ7CiAKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5idWZmZXJCaW5kaW5nID0gbV9i
b3VuZEFycmF5QnVmZmVyOwotICAgIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdLmJ5dGVzUGVy
RWxlbWVudCA9IGJ5dGVzUGVyRWxlbWVudDsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4
XS5zaXplID0gc2l6ZTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS50eXBlID0gdHlw
ZTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5ub3JtYWxpemVkID0gbm9ybWFsaXpl
ZDsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5zdHJpZGUgPSB2YWxpZGF0ZWRTdHJp
ZGU7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0ub3JpZ2luYWxTdHJpZGUgPSBzdHJp
ZGU7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0ub2Zmc2V0ID0gb2Zmc2V0OworICAg
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1f
Ym91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgpOworICAg
IHN0YXRlLmJ1ZmZlckJpbmRpbmcgPSBtX2JvdW5kQXJyYXlCdWZmZXI7CisgICAgc3RhdGUuYnl0
ZXNQZXJFbGVtZW50ID0gYnl0ZXNQZXJFbGVtZW50OworICAgIHN0YXRlLnNpemUgPSBzaXplOwor
ICAgIHN0YXRlLnR5cGUgPSB0eXBlOworICAgIHN0YXRlLm5vcm1hbGl6ZWQgPSBub3JtYWxpemVk
OworICAgIHN0YXRlLnN0cmlkZSA9IHZhbGlkYXRlZFN0cmlkZTsKKyAgICBzdGF0ZS5vcmlnaW5h
bFN0cmlkZSA9IHN0cmlkZTsKKyAgICBzdGF0ZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBz
dHJpZGUsIG9mZnNldCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
QEAgLTQ0NzEsNyArNDQ4Miw3IEBAIFdlYkdMQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZhbGkKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gMDsKICAgICBzd2l0Y2ggKHRhcmdldCkg
ewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSOgotICAg
ICAgICBidWZmZXIgPSBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLmdldCgpOworICAgICAgICBi
dWZmZXIgPSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigp
LmdldCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBUlJB
WV9CVUZGRVI6CiAgICAgICAgIGJ1ZmZlciA9IG1fYm91bmRBcnJheUJ1ZmZlci5nZXQoKTsKQEAg
LTQ1MjAsMTIgKzQ1MzEsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0
dHJpYgogICAgICAgICB9CiAgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiAgICAgfQotICAgIGlmIChpbmRleCA+PSBtX3ZlcnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAg
ICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoaW5kZXggKyAxKTsKLSAgICBtX3ZlcnRl
eEF0dHJpYlN0YXRlW2luZGV4XS52YWx1ZVswXSA9IHYwOwotICAgIG1fdmVydGV4QXR0cmliU3Rh
dGVbaW5kZXhdLnZhbHVlWzFdID0gdjE7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtpbmRleF0u
dmFsdWVbMl0gPSB2MjsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS52YWx1ZVszXSA9
IHYzOworICAgIFZlcnRleEF0dHJpYlZhbHVlJiBhdHRyaWJWYWx1ZSA9IG1fdmVydGV4QXR0cmli
VmFsdWVbaW5kZXhdOworICAgIGF0dHJpYlZhbHVlLnZhbHVlWzBdID0gdjA7CisgICAgYXR0cmli
VmFsdWUudmFsdWVbMV0gPSB2MTsKKyAgICBhdHRyaWJWYWx1ZS52YWx1ZVsyXSA9IHYyOworICAg
IGF0dHJpYlZhbHVlLnZhbHVlWzNdID0gdjM7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWJmdkltcGwoR0MzRHVpbnQgaW5kZXgsIEZsb2F0MzJBcnJheSogdiwg
R0MzRHNpemVpIGV4cGVjdGVkU2l6ZSkKQEAgLTQ1NzMsMjEgKzQ1ODMsMjEgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYgogICAgICAgICB9CiAgICAgICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiAgICAgfQotICAgIGlmIChpbmRleCA+PSBtX3Zl
cnRleEF0dHJpYlN0YXRlLnNpemUoKSkKLSAgICAgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNp
emUoaW5kZXggKyAxKTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XS5pbml0VmFsdWUo
KTsKKyAgICBWZXJ0ZXhBdHRyaWJWYWx1ZSYgYXR0cmliVmFsdWUgPSBtX3ZlcnRleEF0dHJpYlZh
bHVlW2luZGV4XTsKKyAgICBhdHRyaWJWYWx1ZS5pbml0VmFsdWUoKTsKICAgICBmb3IgKGludCBp
aSA9IDA7IGlpIDwgZXhwZWN0ZWRTaXplOyArK2lpKQotICAgICAgICBtX3ZlcnRleEF0dHJpYlN0
YXRlW2luZGV4XS52YWx1ZVtpaV0gPSB2W2lpXTsKKyAgICAgICAgYXR0cmliVmFsdWUudmFsdWVb
aWldID0gdltpaV07CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0VmVydGV4
QXR0cmliMCgpCiB7Ci0gICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoMSk7CisgICAgV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3Vu
ZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZSgwKTsKKyAgICAKICAgICBt
X3ZlcnRleEF0dHJpYjBCdWZmZXIgPSBjcmVhdGVCdWZmZXIoKTsKICAgICBtX2NvbnRleHQtPmJp
bmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV92ZXJ0ZXhBdHRyaWIw
QnVmZmVyLT5vYmplY3QoKSk7CiAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29u
dGV4dDNEOjpBUlJBWV9CVUZGRVIsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpEWU5BTUlDX0RSQVcp
OwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHcmFwaGljc0NvbnRl
eHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlWzBdLmJ1
ZmZlckJpbmRpbmcgPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXI7CisgICAgc3RhdGUuYnVmZmVyQmlu
ZGluZyA9IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsKICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCk7CiAgICAgbV9jb250ZXh0LT5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplID0g
MDsKQEAgLTQ2MDEsNyArNDYxMSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0
VmVydGV4QXQKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpbXVsYXRlVmVydGV4QXR0
cmliMChHQzNEc2l6ZWkgbnVtVmVydGV4KQogewotICAgIGNvbnN0IFZlcnRleEF0dHJpYlN0YXRl
JiBzdGF0ZSA9IG1fdmVydGV4QXR0cmliU3RhdGVbMF07CisgICAgY29uc3QgV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV9ib3VuZFZlcnRleEFy
cmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZSgwKTsKKyAgICBjb25zdCBWZXJ0ZXhBdHRy
aWJWYWx1ZSYgYXR0cmliVmFsdWUgPSBtX3ZlcnRleEF0dHJpYlZhbHVlWzBdOwogICAgIGlmICgh
bV9jdXJyZW50UHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgdXNpbmdW
ZXJ0ZXhBdHRyaWIwID0gbV9jdXJyZW50UHJvZ3JhbS0+aXNVc2luZ1ZlcnRleEF0dHJpYjAoKTsK
QEAgLTQ2MjEsMjEgKzQ2MzIsMjEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpbXVs
YXRlVmVydAogICAgIH0KICAgICBpZiAodXNpbmdWZXJ0ZXhBdHRyaWIwCiAgICAgICAgICYmICht
X2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbAotICAgICAgICAgICAgfHwgc3RhdGUudmFsdWVbMF0g
IT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMF0KLSAgICAgICAgICAgIHx8IHN0YXRlLnZh
bHVlWzFdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdCi0gICAgICAgICAgICB8fCBz
dGF0ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXQotICAgICAgICAg
ICAgfHwgc3RhdGUudmFsdWVbM10gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10pKSB7
CisgICAgICAgICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVswXSAhPSBtX3ZlcnRleEF0dHJpYjBC
dWZmZXJWYWx1ZVswXQorICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMV0gIT0gbV92
ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMV0KKyAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZh
bHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCisgICAgICAgICAgICB8fCBh
dHRyaWJWYWx1ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSkpIHsK
ICAgICAgICAgT3duQXJyYXlQdHI8R0MzRGZsb2F0PiBidWZmZXJEYXRhID0gYWRvcHRBcnJheVB0
cihuZXcgR0MzRGZsb2F0WyhudW1WZXJ0ZXggKyAxKSAqIDRdKTsKICAgICAgICAgZm9yIChHQzNE
c2l6ZWkgaWkgPSAwOyBpaSA8IG51bVZlcnRleCArIDE7ICsraWkpIHsKLSAgICAgICAgICAgIGJ1
ZmZlckRhdGFbaWkgKiA0XSA9IHN0YXRlLnZhbHVlWzBdOwotICAgICAgICAgICAgYnVmZmVyRGF0
YVtpaSAqIDQgKyAxXSA9IHN0YXRlLnZhbHVlWzFdOwotICAgICAgICAgICAgYnVmZmVyRGF0YVtp
aSAqIDQgKyAyXSA9IHN0YXRlLnZhbHVlWzJdOwotICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAq
IDQgKyAzXSA9IHN0YXRlLnZhbHVlWzNdOwotICAgICAgICB9Ci0gICAgICAgIG1fdmVydGV4QXR0
cmliMEJ1ZmZlclZhbHVlWzBdID0gc3RhdGUudmFsdWVbMF07Ci0gICAgICAgIG1fdmVydGV4QXR0
cmliMEJ1ZmZlclZhbHVlWzFdID0gc3RhdGUudmFsdWVbMV07Ci0gICAgICAgIG1fdmVydGV4QXR0
cmliMEJ1ZmZlclZhbHVlWzJdID0gc3RhdGUudmFsdWVbMl07Ci0gICAgICAgIG1fdmVydGV4QXR0
cmliMEJ1ZmZlclZhbHVlWzNdID0gc3RhdGUudmFsdWVbM107CisgICAgICAgICAgICBidWZmZXJE
YXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVswXTsKKyAgICAgICAgICAgIGJ1ZmZlckRh
dGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsxXTsKKyAgICAgICAgICAgIGJ1ZmZl
ckRhdGFbaWkgKiA0ICsgMl0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsyXTsKKyAgICAgICAgICAgIGJ1
ZmZlckRhdGFbaWkgKiA0ICsgM10gPSBhdHRyaWJWYWx1ZS52YWx1ZVszXTsKKyAgICAgICAgfQor
ICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVswXSA9IGF0dHJpYlZhbHVlLnZhbHVl
WzBdOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsxXSA9IGF0dHJpYlZhbHVl
LnZhbHVlWzFdOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXSA9IGF0dHJp
YlZhbHVlLnZhbHVlWzJdOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSA9
IGF0dHJpYlZhbHVlLnZhbHVlWzNdOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmls
bCA9IGZhbHNlOwogICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEoR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCkp
OwogICAgIH0KQEAgLTQ2NDUsNyArNDY1Niw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpzaW11bGF0ZVZlcnQKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0
ZXNBZnRlclZlcnRleEF0dHJpYjBTaW11bGF0aW9uKCkKIHsKLSAgICBjb25zdCBWZXJ0ZXhBdHRy
aWJTdGF0ZSYgc3RhdGUgPSBtX3ZlcnRleEF0dHJpYlN0YXRlWzBdOworICAgIGNvbnN0IFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3RhdGUoMCk7CiAgICAgaWYgKHN0YXRl
LmJ1ZmZlckJpbmRpbmcgIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyKSB7CiAgICAgICAgIG1fY29u
dGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBvYmplY3RP
clplcm8oc3RhdGUuYnVmZmVyQmluZGluZy5nZXQoKSkpOwogICAgICAgICBtX2NvbnRleHQtPnZl
cnRleEF0dHJpYlBvaW50ZXIoMCwgc3RhdGUuc2l6ZSwgc3RhdGUudHlwZSwgc3RhdGUubm9ybWFs
aXplZCwgc3RhdGUub3JpZ2luYWxTdHJpZGUsIHN0YXRlLm9mZnNldCk7CkBAIC00NjU1LDExICs0
NjY2LDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlU3RhdGUKIAogaW50
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TnVtYmVyT2ZFeHRlbnNpb25zKCkKIHsKLSAgICBy
ZXR1cm4gKG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcyA/IDEgOiAwKSArIChtX3dlYmtpdExvc2VD
b250ZXh0ID8gMSA6IDApICsgKG1fb2VzVGV4dHVyZUZsb2F0ID8gMSA6IDApOworICAgIHJldHVy
biAobV9vZXNWZXJ0ZXhBcnJheU9iamVjdCA/IDEgOiAwKSArIChtX29lc1N0YW5kYXJkRGVyaXZh
dGl2ZXMgPyAxIDogMCkgKyAobV93ZWJraXRMb3NlQ29udGV4dCA/IDEgOiAwKSArIChtX29lc1Rl
eHR1cmVGbG9hdCA/IDEgOiAwKTsKIH0KIAogV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uTnVtYmVyKGludCBpKQogeworICAgIGlmIChtX29lc1ZlcnRl
eEFycmF5T2JqZWN0KSB7CisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIHJldHVybiBtX29l
c1ZlcnRleEFycmF5T2JqZWN0LmdldCgpOworICAgICAgICAtLWk7CisgICAgfQogICAgIGlmICht
X29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAg
cmV0dXJuIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcy5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lv
biA3ODg0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIEltYWdlRGF0YTsK
IGNsYXNzIEludFNpemU7CiBjbGFzcyBPRVNTdGFuZGFyZERlcml2YXRpdmVzOwogY2xhc3MgT0VT
VGV4dHVyZUZsb2F0OworY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CitjbGFzcyBXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTOwogCiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBwdWJs
aWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CkBAIC0yODYsNiArMjg4LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygp
OwogCiAgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR0xPYmplY3QqKTsKKyAgICAKKyAgICB1bnNp
Z25lZCBnZXRNYXhWZXJ0ZXhBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhWZXJ0ZXhBdHRy
aWJzOyB9CiAKICAgICAvLyBIZWxwZXJzIGZvciBKU0MgYmluZGluZ3MuCiAgICAgaW50IGdldE51
bWJlck9mRXh0ZW5zaW9ucygpOwpAQCAtMjkzLDYgKzI5Nyw3IEBAIHB1YmxpYzoKIAogICBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKKyAgICBmcmllbmQgY2xhc3MgT0VT
VmVydGV4QXJyYXlPYmplY3Q7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZh
c0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKQEAgLTM2
MiwyNCArMzY3LDI0IEBAIHB1YmxpYzoKIAogICAgIC8vIExpc3Qgb2YgYm91bmQgVkJPJ3MuIFVz
ZWQgdG8gbWFpbnRhaW4gaW5mbyBhYm91dCBzaXplcyBmb3IgQVJSQVlfQlVGRkVSIGFuZCBzdG9y
ZWQgdmFsdWVzIGZvciBFTEVNRU5UX0FSUkFZX0JVRkZFUgogICAgIFJlZlB0cjxXZWJHTEJ1ZmZl
cj4gbV9ib3VuZEFycmF5QnVmZmVyOwotICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEVs
ZW1lbnRBcnJheUJ1ZmZlcjsKLQotICAgIC8vIENhY2hlZCB2YWx1ZXMgZm9yIHZlcnRleCBhdHRy
aWIgcmFuZ2UgY2hlY2tzCi0gICAgY2xhc3MgVmVydGV4QXR0cmliU3RhdGUgeworICAgIAorICAg
IFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9i
amVjdDsKKyAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gbV9ib3VuZFZlcnRl
eEFycmF5T2JqZWN0OworICAgIHZvaWQgc2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChQYXNzUmVm
UHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IGFycmF5T2JqZWN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGFycmF5T2JqZWN0KQorICAgICAgICAgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
ID0gYXJyYXlPYmplY3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYm91bmRWZXJ0ZXhB
cnJheU9iamVjdCA9IG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0OworICAgIH0KKyAgICAKKyAg
ICBjbGFzcyBWZXJ0ZXhBdHRyaWJWYWx1ZSB7CiAgICAgcHVibGljOgotICAgICAgICBWZXJ0ZXhB
dHRyaWJTdGF0ZSgpCi0gICAgICAgICAgICA6IGVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAs
IGJ5dGVzUGVyRWxlbWVudCgwKQotICAgICAgICAgICAgLCBzaXplKDQpCi0gICAgICAgICAgICAs
IHR5cGUoR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUKQotICAgICAgICAgICAgLCBub3JtYWxpemVk
KGZhbHNlKQotICAgICAgICAgICAgLCBzdHJpZGUoMTYpCi0gICAgICAgICAgICAsIG9yaWdpbmFs
U3RyaWRlKDApCi0gICAgICAgICAgICAsIG9mZnNldCgwKQorICAgICAgICBWZXJ0ZXhBdHRyaWJW
YWx1ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRWYWx1ZSgpOwogICAgICAgICB9Ci0K
KyAgICAgICAgCiAgICAgICAgIHZvaWQgaW5pdFZhbHVlKCkKICAgICAgICAgewogICAgICAgICAg
ICAgdmFsdWVbMF0gPSAwLjBmOwpAQCAtMzg3LDIwICszOTIsMTAgQEAgcHVibGljOgogICAgICAg
ICAgICAgdmFsdWVbMl0gPSAwLjBmOwogICAgICAgICAgICAgdmFsdWVbM10gPSAxLjBmOwogICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCBlbmFibGVkOwotICAgICAgICBSZWZQdHI8V2ViR0xCdWZm
ZXI+IGJ1ZmZlckJpbmRpbmc7Ci0gICAgICAgIEdDM0RzaXplaSBieXRlc1BlckVsZW1lbnQ7Ci0g
ICAgICAgIEdDM0RpbnQgc2l6ZTsKLSAgICAgICAgR0MzRGVudW0gdHlwZTsKLSAgICAgICAgYm9v
bCBub3JtYWxpemVkOwotICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlOwotICAgICAgICBHQzNEc2l6
ZWkgb3JpZ2luYWxTdHJpZGU7Ci0gICAgICAgIEdDM0RpbnRwdHIgb2Zmc2V0OworICAgICAgICAK
ICAgICAgICAgR0MzRGZsb2F0IHZhbHVlWzRdOwogICAgIH07Ci0KLSAgICBWZWN0b3I8VmVydGV4
QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7CisgICAgVmVjdG9yPFZlcnRleEF0dHJp
YlZhbHVlPiBtX3ZlcnRleEF0dHJpYlZhbHVlOwogICAgIHVuc2lnbmVkIG1fbWF4VmVydGV4QXR0
cmliczsKICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsKICAg
ICBsb25nIG1fdmVydGV4QXR0cmliMEJ1ZmZlclNpemU7CkBAIC00NjIsNiArNDU3LDcgQEAgcHVi
bGljOgogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAgUmVmUHRyPE9FU1Rl
eHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7CiAgICAgUmVmUHRyPE9FU1N0YW5kYXJkRGVy
aXZhdGl2ZXM+IG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlczsKKyAgICBSZWZQdHI8T0VTVmVydGV4
QXJyYXlPYmplY3Q+IG1fb2VzVmVydGV4QXJyYXlPYmplY3Q7CiAgICAgUmVmUHRyPFdlYktpdExv
c2VDb250ZXh0PiBtX3dlYmtpdExvc2VDb250ZXh0OwogCiAgICAgLy8gSGVscGVycyBmb3IgZ2V0
UGFyYW1ldGVyIGFuZCBvdGhlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAiV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0
cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpj
cmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFZhb1R5cGUgdHlwZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoY3R4LCB0eXBlKSk7
Cit9CisKK1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OldlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFZhb1R5cGUgdHlwZSkKKyAgICA6IFdlYkdM
T2JqZWN0KGN0eCkKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9oYXNFdmVyQmVlbkJvdW5k
KGZhbHNlKQorICAgICwgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcigwKQoreworICAgIG1fdmVy
dGV4QXR0cmliU3RhdGUucmVzaXplKGN0eC0+Z2V0TWF4VmVydGV4QXR0cmlicygpKTsKKyAgICAK
KyAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2Ug
a1Zhb1R5cGVEZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBz
ZXRPYmplY3QoZXh0ZW5zaW9ucy0+Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpkZWxldGVP
YmplY3RJbXBsKFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQoreworICAgIEV4dGVuc2lvbnMzRCog
ZXh0ZW5zaW9ucyA9IGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9u
cygpOworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBrVmFvVHlwZURlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVZl
cnRleEFycmF5T0VTKG9iamVjdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVNfaAorI2RlZmluZSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTX2gK
KworI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKKwor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
IDogcHVibGljIFdlYkdMT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBlbnVtIFZhb1R5cGUgeworICAg
ICAgICBrVmFvVHlwZURlZmF1bHQsCisgICAgICAgIGtWYW9UeXBlVXNlciwKKyAgICB9OworICAg
IAorICAgIHZpcnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSB7IGRlbGV0ZU9iamVj
dCgpOyB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgVmFvVHlwZSk7CisgICAgCisgICAgLy8g
Q2FjaGVkIHZhbHVlcyBmb3IgdmVydGV4IGF0dHJpYiByYW5nZSBjaGVja3MKKyAgICBzdHJ1Y3Qg
VmVydGV4QXR0cmliU3RhdGUgeworICAgICAgICBWZXJ0ZXhBdHRyaWJTdGF0ZSgpCisgICAgICAg
ICAgICA6IGVuYWJsZWQoZmFsc2UpCisgICAgICAgICAgICAsIGJ5dGVzUGVyRWxlbWVudCgwKQor
ICAgICAgICAgICAgLCBzaXplKDQpCisgICAgICAgICAgICAsIHR5cGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkZMT0FUKQorICAgICAgICAgICAgLCBub3JtYWxpemVkKGZhbHNlKQorICAgICAgICAgICAg
LCBzdHJpZGUoMTYpCisgICAgICAgICAgICAsIG9yaWdpbmFsU3RyaWRlKDApCisgICAgICAgICAg
ICAsIG9mZnNldCgwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJv
b2wgZW5hYmxlZDsKKyAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBidWZmZXJCaW5kaW5nOwor
ICAgICAgICBHQzNEc2l6ZWkgYnl0ZXNQZXJFbGVtZW50OworICAgICAgICBHQzNEaW50IHNpemU7
CisgICAgICAgIEdDM0RlbnVtIHR5cGU7CisgICAgICAgIGJvb2wgbm9ybWFsaXplZDsKKyAgICAg
ICAgR0MzRHNpemVpIHN0cmlkZTsKKyAgICAgICAgR0MzRHNpemVpIG9yaWdpbmFsU3RyaWRlOwor
ICAgICAgICBHQzNEaW50cHRyIG9mZnNldDsKKyAgICB9OworICAgIAorICAgIGJvb2wgaXNEZWZh
dWx0T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IGtWYW9UeXBlRGVmYXVsdDsgfQor
ICAgIAorICAgIGJvb2wgaGFzRXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgp
ICYmIG1faGFzRXZlckJlZW5Cb3VuZDsgfQorICAgIHZvaWQgc2V0SGFzRXZlckJlZW5Cb3VuZCgp
IHsgbV9oYXNFdmVyQmVlbkJvdW5kID0gdHJ1ZTsgfQorICAgIAorICAgIFBhc3NSZWZQdHI8V2Vi
R0xCdWZmZXI+IGdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRF
bGVtZW50QXJyYXlCdWZmZXI7IH0KKyAgICB2b2lkIHNldEVsZW1lbnRBcnJheUJ1ZmZlcihQYXNz
UmVmUHRyPFdlYkdMQnVmZmVyPiBidWZmZXIpIHsgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlciA9
IGJ1ZmZlcjsgfQorICAgIAorICAgIFZlcnRleEF0dHJpYlN0YXRlJiBnZXRWZXJ0ZXhBdHRyaWJT
dGF0ZShpbnQgaW5kZXgpIHsgcmV0dXJuIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdOyB9CisK
K3ByaXZhdGU6CisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqLCBWYW9UeXBlKTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJbXBsKFBs
YXRmb3JtM0RPYmplY3QpOworCisgICAgdmlydHVhbCBib29sIGlzVmVydGV4QXJyYXkoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgVmFvVHlwZSBtX3R5cGU7CisgICAgYm9vbCBt
X2hhc0V2ZXJCZWVuQm91bmQ7CisgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2JvdW5kRWxlbWVu
dEFycmF5QnVmZmVyOworICAgIFZlY3RvcjxWZXJ0ZXhBdHRyaWJTdGF0ZT4gbV92ZXJ0ZXhBdHRy
aWJTdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVNfaApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRt
bCB7CisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1XRUJHTF0gV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyB7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0V4dGVuc2lvbnMzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCShyZXZpc2lvbiA3ODg0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw4IEBACiAjaWZuZGVmIEV4dGVuc2lvbnMzRF9oCiAjZGVmaW5lIEV4dGVuc2lvbnMz
RF9oCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKwogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw2ICs1NSw3IEBAIHB1
YmxpYzoKICAgICAvLyAgIEdMX09FU190ZXh0dXJlX2Zsb2F0CiAgICAgLy8gICBHTF9PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMKICAgICAvLyAgIEdMX09FU19yZ2I4X3JnYmE4CisgICAgLy8gICBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogCiAgICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4
dGVuc2lvbjsgZm9yIGV4YW1wbGUsCiAgICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JB
ODg4OCIuCkBAIC05Miw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gR0xfT0VTX3JnYjhf
cmdiYTggbmFtZXMKICAgICAgICAgUkdCOF9PRVMgPSAweDgwNTEsCiAgICAgICAgIFJHQkE4X09F
UyA9IDB4ODA1OCwKKyAgICAgICAgCisgICAgICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0IG5hbWVzCisgICAgICAgIFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4ODVCNSwKICAg
ICB9OwogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKQEAgLTEwMSw3ICsxMDcsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBz
cmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9u
ZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZp
bHRlcikgPSAwOwogICAgIAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgPSAw
OyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcg
aW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KSA9IDA7CisgICAgCisgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyAgICB2aXJ0
dWFsIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpID0gMDsKKyAg
ICB2aXJ0dWFsIEdDM0Rib29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVj
dCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZp
c2lvbiA3ODg0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkludFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NUeXBlczNELmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC00MiwyNSArNDMsNiBAQAogI3VuZGVmIFZFUlNJT04KICNlbmRpZgog
Ci0vLyBHQzNEIHR5cGVzIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIEdMIHR5cGVzIGFzIGRlZmlu
ZWQgaW4gT3BlbkdMIEVTIDIuMAotLy8gaGVhZGVyIGZpbGUgZ2wyLmggZnJvbSBraHJvbm9zLm9y
Zy4KLXR5cGVkZWYgdW5zaWduZWQgaW50IEdDM0RlbnVtOwotdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IEdDM0Rib29sZWFuOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgR0MzRGJpdGZpZWxkOwotdHlwZWRl
ZiBzaWduZWQgY2hhciBHQzNEYnl0ZTsKLXR5cGVkZWYgdW5zaWduZWQgY2hhciBHQzNEdWJ5dGU7
Ci10eXBlZGVmIHNob3J0IEdDM0RzaG9ydDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0MzRHVz
aG9ydDsKLXR5cGVkZWYgaW50IEdDM0RpbnQ7Ci10eXBlZGVmIGludCBHQzNEc2l6ZWk7Ci10eXBl
ZGVmIHVuc2lnbmVkIGludCBHQzNEdWludDsKLXR5cGVkZWYgZmxvYXQgR0MzRGZsb2F0OwotdHlw
ZWRlZiBmbG9hdCBHQzNEY2xhbXBmOwotdHlwZWRlZiBzaWduZWQgbG9uZyBpbnQgR0MzRGludHB0
cjsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgaW50IEdDM0RzaXplaXB0cjsKLQotdHlwZWRlZiBHQzNE
dWludCBQbGF0Zm9ybTNET2JqZWN0OwotCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkFO
R0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVkZSA8T3BlbkdML09wZW5HTC5oPgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlczNELmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlczNELmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzM0QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBHcmFwaGljc1R5cGVzM0RfaAorI2RlZmluZSBHcmFwaGljc1R5cGVzM0RfaAorCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworLy8gR0MzRCB0eXBlcyBtYXRjaCB0aGUgY29ycmVzcG9u
ZGluZyBHTCB0eXBlcyBhcyBkZWZpbmVkIGluIE9wZW5HTCBFUyAyLjAKKy8vIGhlYWRlciBmaWxl
IGdsMi5oIGZyb20ga2hyb25vcy5vcmcuCit0eXBlZGVmIHVuc2lnbmVkIGludCBHQzNEZW51bTsK
K3R5cGVkZWYgdW5zaWduZWQgY2hhciBHQzNEYm9vbGVhbjsKK3R5cGVkZWYgdW5zaWduZWQgaW50
IEdDM0RiaXRmaWVsZDsKK3R5cGVkZWYgc2lnbmVkIGNoYXIgR0MzRGJ5dGU7Cit0eXBlZGVmIHVu
c2lnbmVkIGNoYXIgR0MzRHVieXRlOwordHlwZWRlZiBzaG9ydCBHQzNEc2hvcnQ7Cit0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IEdDM0R1c2hvcnQ7Cit0eXBlZGVmIGludCBHQzNEaW50OwordHlwZWRl
ZiBpbnQgR0MzRHNpemVpOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgR0MzRHVpbnQ7Cit0eXBlZGVm
IGZsb2F0IEdDM0RmbG9hdDsKK3R5cGVkZWYgZmxvYXQgR0MzRGNsYW1wZjsKK3R5cGVkZWYgc2ln
bmVkIGxvbmcgaW50IEdDM0RpbnRwdHI7Cit0eXBlZGVmIHNpZ25lZCBsb25nIGludCBHQzNEc2l6
ZWlwdHI7CisKK3R5cGVkZWYgR0MzRHVpbnQgUGxhdGZvcm0zRE9iamVjdDsKKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25z
M0RDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgJKHJldmlzaW9uIDc4ODQzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hy
b21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKICAgICB2aXJ0dWFsIHZvaWQg
YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcg
c3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVu
c2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpOwogICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworICAgIHZpcnR1YWwgUGxhdGZv
cm0zRE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2aXJ0dWFsIEdDM0Rib29s
ZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdmlydHVhbCB2b2lk
IGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KTsKIAogICAgIGVudW0gewogICAg
ICAgICAvLyBHTF9DSFJPTUlVTV9tYXBfc3ViIChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9BUkJf
dmVydGV4X2J1ZmZlcl9vYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAko
cmV2aXNpb24gNzg4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsMTAg
QEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzKGNvbnN0IAogICAgIC8vIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXQgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9P
RVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIp
CiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90
ZXh0dXJlX2Zsb2F0Iik7CisgICAgCisgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QK
KyAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAgICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJy
YXlfb2JqZWN0Iik7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyB0aGUgc3Rh
bmRhcmQgZGVyaXZhdGl2ZSBmdW5jdGlvbnMKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3N0YW5k
YXJkX2Rlcml2YXRpdmVzIikKQEAgLTEyNyw2ICsxMzEsNTMgQEAgdm9pZCBFeHRlbnNpb25zM0RP
cGVuR0w6OnJlbmRlcmJ1ZmZlclN0bwogICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVFWFQodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7
CiB9CiAKK1BsYXRmb3JtM0RPYmplY3QgRXh0ZW5zaW9uczNET3BlbkdMOjpjcmVhdGVWZXJ0ZXhB
cnJheU9FUygpCit7CisgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyNpZiBH
TF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgR0x1aW50IGFycmF5ID0gMDsKKyAgICBn
bEdlblZlcnRleEFycmF5c0FQUExFKDEsICZhcnJheSk7CisgICAgcmV0dXJuIGFycmF5OworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTDo6
ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJheSkKK3sKKyAgICBpZiAo
IWFycmF5KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyNpZiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgZ2xEZWxl
dGVWZXJ0ZXhBcnJheXNBUFBMRSgxLCAmYXJyYXkpOworI2Vsc2UKKyNlbmRpZgorfQorCitHQzNE
Ym9vbGVhbiBFeHRlbnNpb25zM0RPcGVuR0w6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9i
amVjdCBhcnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gR0xfRkFMU0U7
CisgICAgCisgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyNpZiBHTF9BUFBM
RV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgcmV0dXJuIGdsSXNWZXJ0ZXhBcnJheUFQUExFKGFy
cmF5KTsKKyNlbHNlCisgICAgcmV0dXJuIEdMX0ZBTFNFOworI2VuZGlmCit9CisKK3ZvaWQgRXh0
ZW5zaW9uczNET3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJh
eSkKK3sKKyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworI2lmIEdMX0FQUExF
X3ZlcnRleF9hcnJheV9vYmplY3QKKyAgICBnbEJpbmRWZXJ0ZXhBcnJheUFQUExFKGFycmF5KTsK
KyNlbHNlCisgICAgQVNTRVJUX1VOVVNFRChhcnJheSwgc3VwcG9ydHMoYXJyYXkpKTsKKyNlbmRp
ZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCShyZXZpc2lvbiA3ODg0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBlbnN1cmVFbmFibGVkKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgaW50IGdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKTsKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxv
bmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAs
IGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywg
dW5zaWduZWQgbG9uZyBmaWx0ZXIpOwotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxl
cywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5z
aWduZWQgbG9uZyBoZWlnaHQpOyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBs
ZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICAKKyAgICB2aXJ0dWFsIFBsYXRmb3JtM0RPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdmlydHVhbCBHQzNEYm9vbGVhbiBpc1ZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZpcnR1YWwgdm9pZCBiaW5kVmVydGV4
QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCk7CiAKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBjbGFz
cyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHQzRCBpbXBs
ZW1lbnRhdGlvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9F
eHRlbnNpb25zM0RRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwCShyZXZpc2lvbiA3ODg0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNiArNjQsMjQgQEAgdm9pZCBFeHRlbnNpb25zM0RRdDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZQogewogfQogCitQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lvbnMzRFF0OjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgRXh0ZW5zaW9u
czNEUXQ6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpCit7Cit9CisKK0dD
M0Rib29sZWFuIEV4dGVuc2lvbnMzRFF0Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmpl
Y3QpCit7CisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCit2b2lkIEV4dGVuc2lvbnMzRFF0Ojpi
aW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCkKK3sKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCShyZXZp
c2lvbiA3ODg0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVu
c2lvbnMzRFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFs
IGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRG
cmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kx
LCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25l
ZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsgICAgCisgICAgdmlydHVhbCB2b2lkIHJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBs
b25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CisgICAgdmlydHVhbCBQbGF0Zm9ybTNE
T2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZl
cnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZpcnR1YWwgR0MzRGJvb2xlYW4g
aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYmlu
ZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QpOwogCiBwcml2YXRlOgogICAgIC8vIFRo
aXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0
M0QgaW1wbGVtZW50YXRpb25zLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc4OTA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0xNyAgQmVuIFZhbmlrICA8YmVudmFuaWtA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCdWcgNTM5NDA6IEltcGxlbWVudCB0aGUgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgV2Vi
R0wgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01Mzk0MAorCisgICAgICAgIFN0dWJiZWQgb3V0IG1ldGhvZHMgZm9yIHRoZSBuZXcgT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QgbWV0aG9kcy4KKworICAgICAgICAqIHNyYy9FeHRlbnNpb25z
M0RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6
Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hy
b21pdW06OmRlbGV0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnMzRENocm9taXVtOjppc1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnMzRENocm9taXVtOjpiaW5kVmVydGV4QXJyYXlPRVMpOgorCiAyMDExLTAyLTE3ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKYW1lcyBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4
dGVuc2lvbnMzRENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDc4ODQzKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Nyw2ICs5NywyNCBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpjb3B5
VGV4dHVyZVRvCiAgICAgbV9pbnRlcm5hbC0+Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJP
TUlVTSh0ZXh0dXJlLCBwYXJlbnRUZXh0dXJlKTsKIH0KIAorUGxhdGZvcm0zRE9iamVjdCBFeHRl
bnNpb25zM0RDaHJvbWl1bTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQoreworICAgIHJldHVybiAw
OworfQorCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybTNET2JqZWN0KQoreworfQorCitHQzNEYm9vbGVhbiBFeHRlbnNpb25zM0RDaHJvbWl1
bTo6aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KQoreworICAgIHJldHVybiAwOwor
fQorCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZv
cm0zRE9iamVjdCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQo=
</data>
<flag name="review"
          id="74560"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>