<?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>220372</bug_id>
          
          <creation_ts>2021-01-06 11:03:02 -0800</creation_ts>
          <short_desc>[WebGL2] fbostatequery, negativebufferapi, negativevertexarrayapi, shaderstatequery conformance failures</short_desc>
          <delta_ts>2021-01-18 20:01:50 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220720</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>205610</dependson>
          <blocked>126404</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1717707</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-06 11:03:02 -0800</bug_when>
    <thetext>The following WebGL 2.0 conformance tests are failing multiple sub-tests:

deqp/functional/gles3/fbostatequery.html
deqp/functional/gles3/negativebufferapi.html
deqp/functional/gles3/negativevertexarrayapi.html
deqp/functional/gles3/shaderstatequery.html

The reasons vary, but there are some incorrect early-outs that would otherwise generate errors in ANGLE&apos;s validation, and a couple of places where additional validation is needed in order to generate the correct errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718180</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-07 18:35:23 -0800</bug_when>
    <thetext>Note to self: the ?filter= query arg is most useful for running individual test cases, e.g.:

http://localhost:8080/webgl/2.0.0/resources/webgl_test_files/deqp/functional/gles3/shaderstatequery.html?filter=shader.program_active_uniform_blocks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718876</commentid>
    <comment_count>2</comment_count>
      <attachid>417423</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-11 17:56:00 -0800</bug_when>
    <thetext>Created attachment 417423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718926</commentid>
    <comment_count>3</comment_count>
      <attachid>417423</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-12 01:47:16 -0800</bug_when>
    <thetext>Comment on attachment 417423
Patch

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

Overall. looks great!

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.h:505
&gt; +    // compared to others. Performs a context loss check internally.

mandatory typo marker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719050</commentid>
    <comment_count>4</comment_count>
      <attachid>417423</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-01-12 10:49:15 -0800</bug_when>
    <thetext>Comment on attachment 417423
Patch

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

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1745
&gt; +    // Determine the number of elements the bound buffer can hold, given the offset, size, type and stride

Nit: End with period.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2055
&gt; +    if (isContextLostOrPending() || !sampler || !sampler-&gt;validate(contextGroup(), *this) || sampler-&gt;isDeleted())

Can a sampler be valid if it is deleted? If not, can we delete the last test here?

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:-2085
&gt; -    if (isContextLostOrPending() || !sync || sync-&gt;isDeleted() || !validateWebGLObject(&quot;deleteSync&quot;, sync))
&gt; -        return;

Is it ok to delete this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719062</commentid>
    <comment_count>5</comment_count>
      <attachid>417423</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-12 11:04:29 -0800</bug_when>
    <thetext>Comment on attachment 417423
Patch

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

Thanks for your reviews Dean and Kimmo. Still working through the test failures - a couple of the tests have contradictory validation requirements and I&apos;m trying to figure out why they pass in Chromium and fail in WebKit.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1745
&gt;&gt; +    // Determine the number of elements the bound buffer can hold, given the offset, size, type and stride
&gt; 
&gt; Nit: End with period.

Done.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2055
&gt;&gt; +    if (isContextLostOrPending() || !sampler || !sampler-&gt;validate(contextGroup(), *this) || sampler-&gt;isDeleted())
&gt; 
&gt; Can a sampler be valid if it is deleted? If not, can we delete the last test here?

The way the validation code&apos;s factored, all objects need the deletion check. The implementations of WebGLObject::validate() basically only check whether the object is owned by this context. Further validation is delegated to the WebGLRenderingContextBase. All this could be revisited, of course.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:-2085
&gt;&gt; -        return;
&gt; 
&gt; Is it ok to delete this?

Yes. It&apos;s completely redundant to the checks already done in deleteObject.

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.h:505
&gt;&gt; +    // compared to others. Performs a context loss check internally.
&gt; 
&gt; mandatory typo marker

loss -&gt; lost? It&apos;s actually that way in comments in Chromium, but I&apos;ll make this change here.

Oh, I see, also &quot;objetcts&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719189</commentid>
    <comment_count>6</comment_count>
      <attachid>417503</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-12 18:01:12 -0800</bug_when>
    <thetext>Created attachment 417503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719190</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-01-12 18:01:59 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719346</commentid>
    <comment_count>8</comment_count>
      <attachid>417503</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-13 10:50:27 -0800</bug_when>
    <thetext>Comment on attachment 417503
Patch

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

It’s great that this has so many fixes; they look good. Are we confident that each of these was covered by a test? With somewhere in the neighborhood of 30 failures fixed here and somewhere near 30 different logic changes, it’s hard for me to spot which improvements are tested and which are untested.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1755
&gt; +    GCGLsizei bytesPerElement = size * typeSize;

What prevents this from overflowing?

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2787
&gt; +        // We can look directly at m_attributes because in WebGL 2,
&gt; +        // they are required to be honored.

No need to break this into two lines. Reads better in one line.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2790
&gt; +        bool missingImage = (attachment == GraphicsContextGL::DEPTH &amp;&amp; !hasDepth) || (attachment == GraphicsContextGL::STENCIL &amp;&amp; !hasStencil);

Not a fan of naming a boolean &quot;missing image&quot; since it’s not an image. Prefer a name like hasMissingImage.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1380
&gt; +        // This differs in behavior to ValidateWebGLObject; null objects are allowed
&gt; +        // in these entry points.

Given the function’s name, it does not seem like we need this comment. What else would we assume &quot;nullable&quot; means other than &quot;null is allowed&quot;? I also think the logic is easier to understand when more compact and less vertical.

    return !object || validateWebGLObject(functionName, object);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719356</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-13 10:56:39 -0800</bug_when>
    <thetext>Committed r271444: &lt;https://trac.webkit.org/changeset/271444&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417503.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719357</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-13 10:57:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73158102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719387</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-13 12:37:35 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 417503 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=417503&amp;action=review
&gt; 
&gt; It’s great that this has so many fixes; they look good. Are we confident
&gt; that each of these was covered by a test? With somewhere in the neighborhood
&gt; of 30 failures fixed here and somewhere near 30 different logic changes,
&gt; it’s hard for me to spot which improvements are tested and which are
&gt; untested.

Thanks for your review. Yes, all of these changes are covered by one test or another; they were all informed by trying to pass individual cases of the tests that were improved with this fix.

Apologies for not splitting up this patch, but it was much faster to try to get all of these done at the same time. There were actually some interdependencies among some of the now-passing tests.

Will reply to other review comments inline too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719388</commentid>
    <comment_count>12</comment_count>
      <attachid>417503</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-13 12:37:46 -0800</bug_when>
    <thetext>Comment on attachment 417503
Patch

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

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1755
&gt;&gt; +    GCGLsizei bytesPerElement = size * typeSize;
&gt; 
&gt; What prevents this from overflowing?

These are guaranteed to be very small numbers per the validation checks above.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2787
&gt;&gt; +        // they are required to be honored.
&gt; 
&gt; No need to break this into two lines. Reads better in one line.

Fair enough. Some of this code originated in another project which has an 80 column line limit.

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2790
&gt;&gt; +        bool missingImage = (attachment == GraphicsContextGL::DEPTH &amp;&amp; !hasDepth) || (attachment == GraphicsContextGL::STENCIL &amp;&amp; !hasStencil);
&gt; 
&gt; Not a fan of naming a boolean &quot;missing image&quot; since it’s not an image. Prefer a name like hasMissingImage.

Got it, will keep that in mind in the future.

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1380
&gt;&gt; +        // in these entry points.
&gt; 
&gt; Given the function’s name, it does not seem like we need this comment. What else would we assume &quot;nullable&quot; means other than &quot;null is allowed&quot;? I also think the logic is easier to understand when more compact and less vertical.
&gt; 
&gt;     return !object || validateWebGLObject(functionName, object);

Fair enough. Again this code originated in a different project where I added this comment originally. I wanted to be very explicit since there were some subtle bugs in these areas.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417423</attachid>
            <date>2021-01-11 17:56:00 -0800</date>
            <delta_ts>2021-01-12 18:01:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220372-20210111175559.patch</filename>
            <type>text/plain</type>
            <size>72086</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0ZmRmMTBiODUxNDQw
ZWQ3YWNmOGU5ZmIxZTJhYTgwMzZkMzkwZS4uYWQ2NzM4M2IxNGE5MGNiYjYyZDkzMTcwYzEyMGFk
ZDBiZWU0NWEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0wMS0xMSAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViR0wyXSBmYm9z
dGF0ZXF1ZXJ5LCBuZWdhdGl2ZWJ1ZmZlcmFwaSwgbmVnYXRpdmV2ZXJ0ZXhhcnJheWFwaSwgc2hh
ZGVyc3RhdGVxdWVyeSBjb25mb3JtYW5jZSBmYWlsdXJlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHZhbGlkYXRpb24gb2YgcHJvZ3JhbSBhbmQg
c2hhZGVyIG9iamVjdHMgdG8gYWRkcmVzcworICAgICAgICBjb25mb3JtYW5jZSB0ZXN0IGZhaWx1
cmVzLiBVbmlmeSBhbmQgY2xlYW4gdXAgdmFsaWRhdGlvbiBvZiBzb21lCisgICAgICAgIG90aGVy
IG9iamVjdCB0eXBlcy4KKworICAgICAgICBGaXggYnVncyBpbiBxdWVyaWVzIG9mIGZyYW1lYnVm
ZmVyIGF0dGFjaG1lbnRzIGFuZCBpbnRlZ2VyIHZlcnRleAorICAgICAgICBhdHRyaWJ1dGVzLgor
CisgICAgICAgIFJlbW92ZSBhbiBvbGQgbWFjT1Mgd29ya2Fyb3VuZCBmcm9tIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEUgd2hpY2gKKyAgICAgICAgd2FzIGNhdXNpbmcgdGVzdCBmYWlsdXJlcyBvZiBt
YXhpbXVtIHJlbmRlcmJ1ZmZlciBzaXplcy4KKworICAgICAgICBHZW5lcmF0ZSB0ZXN0cycgZXhw
ZWN0ZWQgT3BlbkdMIGVycm9ycyBmb3IgYSBmZXcgQVBJcy4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIFdlYkdMIDIuMCBjb25mb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNRdWVyeSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1l
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzU2FtcGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1N5bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlU3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp3YWl0U3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTeW5jUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnNldEluZGV4
ZWRCdWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1CbG9ja0JpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE9iamVjdDo6ZGVsZXRlT2JqZWN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TE9iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YXR0
YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxl
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRl
dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZVdlYkdMT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZm
ZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1JbmZvTG9nKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlcklu
Zm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1NoYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1RleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dyYW1XaXRob3V0SW52
YWxpZGF0aW5nQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdBcnJheXNJbnN0YW5j
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNoZWNrT2JqZWN0VG9CZUJvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2U6OnNldFZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKwogMjAyMS0w
MS0xMSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFJlY2Vpdmlu
ZyB0d28gZW50ZXIvZXhpdCBmdWxsc2NyZWVuIGRlbGVnYXRlIGNhbGxiYWNrcyBvbiBpUGFkIHdo
ZW4gcHJlc2VudGluZyBmdWxsc2NyZWVuIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDhlZGMyOGIw
YThkMzZlNDI0NTkxYjUyNjRhZjY5YWZmODg4ZjYwYzYuLmEyNzVjZTZmYWNlOTEwNGQ2MzE0ZmRk
OTM5OWFjNmVjZWZkYjNkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFy
Z2V0LCBHQ0dMZW51bSB3cmkKICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IHJlYWRCdWZmZXIgPSB2
YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKCJjb3B5QnVmZmVyU3ViRGF0YSIsIHJlYWRUYXJn
ZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CiAgICAgUmVmUHRyPFdlYkdMQnVm
ZmVyPiB3cml0ZUJ1ZmZlciA9IHZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMoImNvcHlCdWZm
ZXJTdWJEYXRhIiwgd3JpdGVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7
CiAgICAgaWYgKCFyZWFkQnVmZmVyIHx8ICF3cml0ZUJ1ZmZlcikgewotICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImNvcHlCdWZmZXJT
dWJEYXRhIiwgIkludmFsaWQgcmVhZFRhcmdldCBvciB3cml0ZVRhcmdldCIpOworICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJj
b3B5QnVmZmVyU3ViRGF0YSIsICJJbnZhbGlkIHJlYWRUYXJnZXQgb3Igd3JpdGVUYXJnZXQiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xG
cmFtZWJ1ZmZlcioKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9j
aygpKTsKIAotICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJpbmRGcmFtZWJ1ZmZlciIs
IGJ1ZmZlcikpCisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRGcmFt
ZWJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAodGFyZ2V0
KSB7CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogCiBHQ0dM
aW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9jYXRpb24oV2ViR0xQcm9n
cmFtJiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0RnJhZ0Rh
dGFMb2NhdGlvbiIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JT
aGFkZXIoImdldEZyYWdEYXRhTG9jYXRpb24iLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiAt
MTsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0ub2Jq
ZWN0KCksIG5hbWUpOwogfQpAQCAtMTcwNCw5ICsxNzA0LDU3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIFVpbnQzMkxpc3Qm
JiBsaXN0CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50
ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludDY0IG9mZnNldCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9jaygpKTsKKwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkJZVEU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURf
QllURToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSE9SVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpVTlNJR05FRF9TSE9SVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpGTE9BVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpJTlQ6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9F
TlVNLCAidmVydGV4QXR0cmliSVBvaW50ZXIiLCAiaW52YWxpZCB0eXBlIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKGluZGV4ID49IG1fbWF4VmVydGV4QXR0cmlicykgeworICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
InZlcnRleEF0dHJpYklQb2ludGVyIiwgImluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChzaXplIDwgMSB8fCBzaXplID4gNCkgeworICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInZlcnRl
eEF0dHJpYklQb2ludGVyIiwgImJhZCBzaXplIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKHN0cmlkZSA8IDAgfHwgc3RyaWRlID4gMjU1KSB7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSVBv
aW50ZXIiLCAiYmFkIHN0cmlkZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChv
ZmZzZXQgPCAwIHx8IG9mZnNldCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X1ZBTFVFLCAidmVydGV4QXR0cmliSVBvaW50ZXIiLCAiYmFkIG9mZnNldCIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghbV9ib3VuZEFycmF5QnVmZmVyICYmIG9mZnNldCkgewor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04sICJ2ZXJ0ZXhBdHRyaWJJUG9pbnRlciIsICJubyBib3VuZCBBUlJBWV9CVUZGRVIiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBl
bGVtZW50cyB0aGUgYm91bmQgYnVmZmVyIGNhbiBob2xkLCBnaXZlbiB0aGUgb2Zmc2V0LCBzaXpl
LCB0eXBlIGFuZCBzdHJpZGUKKyAgICBhdXRvIHR5cGVTaXplID0gc2l6ZUluQnl0ZXModHlwZSk7
CisgICAgaWYgKCF0eXBlU2l6ZSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAidmVydGV4QXR0cmliSVBvaW50ZXIiLCAiaW52YWxp
ZCB0eXBlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKChzdHJpZGUgJSB0eXBl
U2l6ZSkgfHwgKHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCkgJSB0eXBlU2l6ZSkpIHsK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BF
UkFUSU9OLCAidmVydGV4QXR0cmliSVBvaW50ZXIiLCAic3RyaWRlIG9yIG9mZnNldCBub3QgdmFs
aWQgZm9yIHR5cGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBHQ0dMc2l6ZWkgYnl0
ZXNQZXJFbGVtZW50ID0gc2l6ZSAqIHR5cGVTaXplOworCisgICAgbV9ib3VuZFZlcnRleEFycmF5
T2JqZWN0LT5zZXRWZXJ0ZXhBdHRyaWJTdGF0ZShsb2NrZXIsIGluZGV4LCBieXRlc1BlckVsZW1l
bnQsIHNpemUsIHR5cGUsIGZhbHNlLCBzdHJpZGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9m
ZnNldCksIHRydWUsIG1fYm91bmRBcnJheUJ1ZmZlci5nZXQoKSk7CiAgICAgbV9jb250ZXh0LT52
ZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBvZmZzZXQpOwog
fQogCkBAIC0xNzQ4LDkgKzE3OTYsMjQgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpk
cmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQogICAgICAgICByZXR1
cm47CiAgICAgR0NHTHNpemVpIG4gPSBidWZmZXJzLnNpemUoKTsKICAgICBjb25zdCBHQ0dMZW51
bSogYnVmcyA9IGJ1ZmZlcnMuZGF0YSgpOworICAgIGZvciAoR0NHTHNpemVpIGkgPSAwOyBpIDwg
bjsgKytpKSB7CisgICAgICAgIHN3aXRjaCAoYnVmc1tpXSkgeworICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpOT05FOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpCQUNL
OgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMDoKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKGJ1
ZnNbaV0gPiBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAKKyAgICAgICAgICAg
ICAgICAmJiBidWZzW2ldIDwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1FTlQwICsg
Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9FTlVNLCAiZHJhd0J1ZmZlcnMiLCAiaW52YWxpZCBidWZmZXIiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAoIW1fZnJhbWVidWZm
ZXJCaW5kaW5nKSB7CiAgICAgICAgIGlmIChuICE9IDEpIHsKLSAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnMi
LCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzIiwgIm1v
cmUgdGhhbiBvbmUgYnVmZmVyIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGJ1ZnNbMF0gIT0gR3JhcGhpY3NDb250ZXh0R0w6OkJBQ0sgJiYgYnVmc1swXSAh
PSBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSkgewpAQCAtMTg1Myw4ICsxOTE2LDEyIEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlUXVlcnkoV2ViR0xRdWVyeSogcXVlcnkpCiAK
IEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzUXVlcnkoV2ViR0xRdWVyeSog
cXVlcnkpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhcXVlcnkgfHwg
IXF1ZXJ5LT5vYmplY3QoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiaXNRdWVyeSIsIHF1ZXJ5
KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFxdWVyeSB8fCAhcXVlcnkt
PnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChxdWVyeS0+aXNEZWxldGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIHJldHVybiBtX2NvbnRleHQtPmlzUXVlcnkocXVlcnktPm9iamVjdCgpKTsKIH0KIApAQCAt
MTg3NCw3ICsxOTQxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCwgV2ViR0xRdWVyeSYgcXVlcnkpCiAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CiAKICAgICBHQ0dMZW51bSB0YXJnZXRLZXk7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgi
YmVnaW5RdWVyeSIsICZxdWVyeSkgfHwgIXZhbGlkYXRlUXVlcnlUYXJnZXQoImJlZ2luUXVlcnki
LCB0YXJnZXQsICZ0YXJnZXRLZXkpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTE9iamVjdCgiYmVn
aW5RdWVyeSIsICZxdWVyeSkgfHwgIXZhbGlkYXRlUXVlcnlUYXJnZXQoImJlZ2luUXVlcnkiLCB0
YXJnZXQsICZ0YXJnZXRLZXkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocXVlcnkudGFy
Z2V0KCkgJiYgcXVlcnkudGFyZ2V0KCkgIT0gdGFyZ2V0KSB7CkBAIC0xOTM1LDcgKzIwMDIsNyBA
QCBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbgogCiBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcG5hbWUp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9i
amVjdCgiZ2V0UXVlcnlQYXJhbWV0ZXIiLCAmcXVlcnkpKQorICAgIGlmICghdmFsaWRhdGVXZWJH
TE9iamVjdCgiZ2V0UXVlcnlQYXJhbWV0ZXIiLCAmcXVlcnkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIHN3aXRjaCAocG5hbWUpIHsKQEAgLTE5ODUsNyArMjA1Miw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlU2FtcGxlcihXZWJHTFNhbXBsZXIqIHNhbXBs
ZXIpCiAKIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzU2FtcGxlcihXZWJH
TFNhbXBsZXIqIHNhbXBsZXIpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhc2FtcGxlciB8fCBzYW1wbGVyLT5pc0RlbGV0ZWQoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVj
dCgiaXNTYW1wbGVyIiwgc2FtcGxlcikpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhc2FtcGxlciB8fCAhc2FtcGxlci0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlz
KSB8fCBzYW1wbGVyLT5pc0RlbGV0ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIG1fY29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXItPm9iamVjdCgpKTsKQEAgLTIwNzQs
MjEgKzIxNDEsMjUgQEAgUmVmUHRyPFdlYkdMU3luYz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGYKIAogR0NHTGJvb2xlYW4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6aXNTeW5jKFdlYkdMU3luYyogc3luYykKIHsKLSAgICByZXR1
cm4gIWlzQ29udGV4dExvc3RPclBlbmRpbmcoKSAmJiBzeW5jICYmICFzeW5jLT5pc0RlbGV0ZWQo
KSAmJiB2YWxpZGF0ZVdlYkdMT2JqZWN0KCJpc1N5bmMiLCBzeW5jKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFzeW5jIHx8ICFzeW5jLT52YWxpZGF0ZShjb250ZXh0R3Jv
dXAoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3luYy0+aXNE
ZWxldGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhIXN5bmMtPm9i
amVjdCgpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVN5bmMoV2Vi
R0xTeW5jKiBzeW5jKQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhM
b2NrKCkpOwogCi0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhc3luYyB8fCBz
eW5jLT5pc0RlbGV0ZWQoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZGVsZXRlU3luYyIsIHN5
bmMpKQotICAgICAgICByZXR1cm47CiAgICAgZGVsZXRlT2JqZWN0KGxvY2tlciwgc3luYyk7CiB9
CiAKIEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdM
U3luYyYgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgi
Y2xpZW50V2FpdFN5bmMiLCAmc3luYykpCisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJj
bGllbnRXYWl0U3luYyIsICZzeW5jKSkKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdM
OjpXQUlUX0ZBSUxFRF9XRUJHTDsKIAogICAgIGlmICh0aW1lb3V0ID4gTWF4Q2xpZW50V2FpdFRp
bWVvdXQpIHsKQEAgLTIxMTEsNyArMjE4Miw3IEBAIEdDR0xlbnVtIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmNsaWVudFdhaXRTeW5jKFdlYkdMU3luYyYgc3luYywgR0NHTGJpdGZpZWxkIGZsCiAK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6d2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBH
Q0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoIndhaXRTeW5jIiwgJnN5
bmMpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTE9iamVjdCgid2FpdFN5bmMiLCAmc3luYykpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChmbGFncykKQEAgLTIxMjQsNyArMjE5NSw3IEBAIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6d2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MsIEdDR0xpCiAKIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldFN5bmNQYXJhbWV0ZXIoV2ViR0xTeW5jJiBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJn
ZXRTeW5jUGFyYW1ldGVyIiwgJnN5bmMpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTE9iamVjdCgi
Z2V0U3luY1BhcmFtZXRlciIsICZzeW5jKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBzd2l0Y2ggKHBuYW1lKSB7CkBAIC0yMTU0LDI1ICsyMjI1LDMyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayogZmVlCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2so
KSk7CiAKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFmZWVkYmFja09iamVj
dCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3Qo
ImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQotICAgICAgICByZXR1
cm47Ci0gICAgCisgICAgLy8gV2UgaGF2ZSB0byBzaG9ydC1jaXJjdWl0IHRoZSBkZWxldGlvbiBw
cm9jZXNzIGlmIHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMKKyAgICAvLyBhY3RpdmUuIFRoaXMg
cmVxdWlyZXMgZHVwbGljYXRpb24gb2Ygc29tZSB2YWxpZGF0aW9uIGxvZ2ljLgorICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgJiYgZmVlZGJhY2tPYmplY3QgJiYgZmVlZGJhY2tPYmpl
Y3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhpcykpIHsKKyAgICAgICAgaWYgKGZlZWRi
YWNrT2JqZWN0LT5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkZWxldGVUcmFuc2Zvcm1GZWVk
YmFjayIsICJhdHRlbXB0IHRvIGRlbGV0ZSBhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNrIG9i
amVjdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgQVNT
RVJUKGZlZWRiYWNrT2JqZWN0ICE9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAK
LSAgICBpZiAoZmVlZGJhY2tPYmplY3QtPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2siLCAiYXR0ZW1wdCB0byBkZWxldGUgYW4gYWN0aXZlIHRyYW5zZm9ybSBm
ZWVkYmFjayBvYmplY3QiKTsKKworICAgIGlmICghZGVsZXRlT2JqZWN0KGxvY2tlciwgZmVlZGJh
Y2tPYmplY3QpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKG1fYm91bmRUcmFu
c2Zvcm1GZWVkYmFjayA9PSBmZWVkYmFja09iamVjdCkKICAgICAgICAgbV9ib3VuZFRyYW5zZm9y
bUZlZWRiYWNrID0gbV9kZWZhdWx0VHJhbnNmb3JtRmVlZGJhY2s7Ci0KLSAgICBkZWxldGVPYmpl
Y3QobG9ja2VyLCBmZWVkYmFja09iamVjdCk7CiB9CiAKIEdDR0xib29sZWFuIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayog
ZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
ZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpIHx8ICF2YWxpZGF0
ZVdlYkdMT2JqZWN0KCJpc1RyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWZlZWRiYWNrT2JqZWN0IHx8IGZlZWRi
YWNrT2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWZlZWRiYWNrT2JqZWN0LT5oYXNFdmVyQmVlbkJvdW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRl
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1Ry
YW5zZm9ybUZlZWRiYWNrKGZlZWRiYWNrT2JqZWN0LT5vYmplY3QoKSk7CkBAIC0yMTgyLDE5ICsy
MjYwLDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFRyYW5zZm8KIHsKICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkpCisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRUcmFuc2Zv
cm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGZlZWRiYWNrT2JqZWN0KSB7Ci0gICAgICAgIGlmIChmZWVkYmFja09iamVjdC0+aXNEZWxldGVk
KCkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX09QRVJBVElPTiwgImJpbmRUcmFuc2Zvcm1GZWVkYmFjayIsICJjYW5ub3QgYmluZCBh
IGRlbGV0ZWQgVHJhbnNmb3JtIEZlZWRiYWNrIG9iamVjdCIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJiaW5kVHJh
bnNmb3JtRmVlZGJhY2siLCBmZWVkYmFja09iamVjdCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JNX0ZF
RURCQUNLKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX0VOVU0sICJiaW5kVHJhbnNmb3JtRmVlZGJhY2siLCAidGFyZ2V0IG11c3QgYmUgVFJB
TlNGT1JNX0ZFRURCQUNLIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIyNzQsNyArMjM0Miw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoV2Vi
R0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xl
bnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyIs
ICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsKQEAgLTIyOTcsNyArMjM2NSw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhXZWJHTFByb2dy
YW0mIHByb2dyYW0sIGNvCiAKIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhXZWJHTFByb2dyYW0mIHByb2dy
YW0sIEdDR0x1aW50IGluZGV4KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwpAQCAt
MjM1MCwxMCArMjQxOCw3IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6c2V0SW5kZXhl
ZEJ1ZmZlckJpbmRpbmcoY29uc3QgY2hhciAqZnVuY3Rpb25OYW1lLCBHCiB7CiAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CiAKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWNoZWNr
T2JqZWN0VG9CZUJvdW5kKGZ1bmN0aW9uTmFtZSwgYnVmZmVyKSkKKyAgICBpZiAoIXZhbGlkYXRl
TnVsbGFibGVXZWJHTE9iamVjdChmdW5jdGlvbk5hbWUsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHN3aXRjaCAodGFyZ2V0KSB7CkBAIC0yNDQ1LDIxICsyNTEwLDE0IEBA
IFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpCiAKIE9wdGlvbmFsPFZlY3RvcjxHQ0dMdWludD4+IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSYgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG5hbWVzKQogewotI2lmIFVTRShBTkdMRSkKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9y
U2hhZGVyKCJnZXRVbmlmb3JtSW5kaWNlcyIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRl
V2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFVuaWZvcm1JbmRpY2VzIiwgJnByb2dyYW0pKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVybiBtX2NvbnRleHQtPmdldFVuaWZv
cm1JbmRpY2VzKHByb2dyYW0ub2JqZWN0KCksIG5hbWVzKTsKLSNlbHNlCi0gICAgTE9HKFdlYkdM
LCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGdldFVuaWZvcm1JbmRpY2VzKCkiKTsKLSAgICBVTlVT
RURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKG5hbWVzKTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotI2VuZGlmCiB9CiAKIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldEFjdGl2ZVVuaWZvcm1zKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgVmVjdG9y
PEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogewotICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImdldEFjdGl2ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFBy
b2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgc3dpdGNoIChwbmFtZSkgewpAQCAtMjQ4OCwyMiArMjU0Niwx
NCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhX
ZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0CiAKIEdDR0x1aW50IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldFVuaWZvcm1CbG9ja0luZGV4KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewotI2lmIFVTRShBTkdMRSkKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJn
ZXRVbmlmb3JtQmxvY2tJbmRleCIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImdldFVuaWZvcm1CbG9ja0luZGV4IiwgJnByb2dyYW0pKQogICAgICAg
ICByZXR1cm4gMDsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChw
cm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxvY2tOYW1lKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tOYW1lKTsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZ2V0VW5pZm9ybUJsb2NrSW5kZXgoKSIp
OwotICAgIHJldHVybiAwOwotI2VuZGlmCiB9CiAKIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKLSNpZiBV
U0UoQU5HTEUpCi0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVX
ZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgJnBy
b2dyYW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5J
Rk9STV9CTE9DS19CSU5ESU5HOgpAQCAtMjUxNCw3ICsyNTY0LDcgQEAgV2ViR0xBbnkgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdMUHJv
Z3JhbSYgcHIKICAgICAgICAgR0NHTGludCBzaXplID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0Nv
bnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVMpOwogICAgICAgICBWZWN0b3I8
R0NHTGludD4gcGFyYW1zKHNpemUsIDApOwogICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwg
cGFyYW1zKTsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5tYXAoW10oYXV0byB4KSB7IHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0pOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PEdDR0x1aW50Kj4ocGFyYW1zLmRhdGEoKSksIHBh
cmFtcy5zaXplKCkpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JN
X0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOgpAQCAt
MjUyMywxOSArMjU3MywxMSBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoV2ViR0xQcm9ncmFtJiBwcgogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3Jh
bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFS
QU0ocG5hbWUpOwotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSBnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoKSIpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlm
CiB9CiAKIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1C
bG9ja05hbWUoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCkKIHsKLSNpZiBV
U0UoQU5HTEUpCi0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVX
ZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSIsICZwcm9ncmFt
KSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBp
ZiAoIXByb2dyYW0uZ2V0TGlua1N0YXR1cygpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldEFjdGl2ZVVuaWZvcm1C
bG9ja05hbWUiLCAicHJvZ3JhbSBub3QgbGlua2VkIik7CkBAIC0yNTQ1LDI2ICsyNTg3LDEzIEBA
IFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUoV2ViR0xQcm9ncmFtJiBwcm9ncmFtCiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBuYW1lOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSgpIik7Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiB7Ci0jaWYgVVNF
KEFOR0xFKQotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2Vi
R0xQcm9ncmFtT3JTaGFkZXIoInVuaWZvcm1CbG9ja0JpbmRpbmciLCAmcHJvZ3JhbSkpCisgICAg
aWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJ1bmlmb3JtQmxvY2tCaW5kaW5nIiwg
JnByb2dyYW0pKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT51bmlmb3JtQmxvY2tC
aW5kaW5nKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tC
aW5kaW5nKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9Q
QVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0Jp
bmRpbmcpOwotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtQmxv
Y2tCaW5kaW5nKCkiKTsKLSNlbmRpZgogfQogCiBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVj
dD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVydGV4QXJyYXkoKQpAQCAtMjU4MSwy
MSArMjYxMCwyNCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVZlcnRleEFy
cmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIGFycmF5T2JqZQogewogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOwogCisgICAgLy8gdmFsaWRhdGVXZWJHTE9i
amVjdCBnZW5lcmF0ZXMgYW4gZXJyb3IgaWYgdGhlIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuCisg
ICAgLy8gZGVsZXRlZCwgc28gd2UgbXVzdCByZXBsaWNhdGUgbW9zdCBvZiBpdHMgY2hlY2tzIGhl
cmUuCiAgICAgaWYgKCFhcnJheU9iamVjdCB8fCBpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmICghYXJyYXlPYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAq
dGhpcykpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfT1BFUkFUSU9OLCAiZGVsZXRlVmVydGV4QXJyYXkiLCAib2JqZWN0IGRvZXMgbm90IGJl
bG9uZyB0byB0aGlzIGNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlm
IChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
YXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpICYmIGFycmF5T2JqZWN0ID09IG1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdCkgewotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgIHNldEJvdW5k
VmVydGV4QXJyYXlPYmplY3QobG9ja2VyLCBudWxscHRyKTsKLSNlbHNlCiAgICAgICAgIC8vIGJp
bmRWZXJ0ZXhBcnJheSBncmFicyB0aGUgbG9jayBpbnRlcm5hbGx5LgogICAgICAgICBsb2NrZXIu
dW5sb2NrRWFybHkoKTsKICAgICAgICAgYmluZFZlcnRleEFycmF5KG51bGxwdHIpOyAvLyBUaGUg
ZGVmYXVsdCBWQU8gd2FzIHJlbW92ZWQgaW4gT3BlbkdMIDMuMyBidXQgbm90IGZyb20gV2ViR0wg
MjsgYmluZCB0aGUgZGVmYXVsdCBmb3IgV2ViR0wgdG8gdXNlLgogICAgICAgICBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBhcnJheU9i
amVjdC0+ZGVsZXRlT2JqZWN0KGxvY2tlciwgZ3JhcGhpY3NDb250ZXh0R0woKSk7CkBAIC0yNjAz
LDEwICsyNjM1LDEyIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVmVydGV4
QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplCiAKIEdDR0xib29sZWFuIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dCogYXJyYXlPYmplY3QpCiB7Ci0gICAgaWYgKCFhcnJheU9iamVjdCB8fCBpc0NvbnRleHRMb3N0
KCkpCisgICAgaWYgKCFhcnJheU9iamVjdCB8fCBpc0NvbnRleHRMb3N0KCkgfHwgIWFycmF5T2Jq
ZWN0LT52YWxpZGF0ZSgwLCAqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
ICghYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlk
YXRlKDAsICp0aGlzKSkKKyAgICBpZiAoIWFycmF5T2JqZWN0LT5oYXNFdmVyQmVlbkJvdW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXJyYXlPYmplY3QtPmlzRGVsZXRlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1ZlcnRl
eEFycmF5KGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CkBAIC0yNjE2LDEzICsyNjUwLDkgQEAgdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdCogYXJyYXlPYmplY3QKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVj
dEdyYXBoTG9jaygpKTsKIAotICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCF2YWxp
ZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRWZXJ0ZXhBcnJheSIsIGFycmF5T2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGFycmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+
aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCAqdGhpcykgfHwgIW1fY29u
dGV4dE9iamVjdHMuY29udGFpbnMoYXJyYXlPYmplY3QpKSkgewotICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYgKGFycmF5T2JqZWN0ICYmICFhcnJheU9i
amVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QtPm9iamVjdCgpKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+YmluZFZlcnRleEFycmF5KGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CiAK
QEAgLTI3NDcsMTggKzI3NzcsNDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICBhdXRv
IHRhcmdldEZyYW1lYnVmZmVyID0gKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9G
UkFNRUJVRkZFUikgPyBtX3JlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgOiBtX2ZyYW1lYnVmZmVyQmlu
ZGluZzsKIAogICAgIGlmICghdGFyZ2V0RnJhbWVidWZmZXIpIHsKLSAgICAgICAgLy8gT3BlbkdM
IEVTIDM6IERlZmF1bHQgZnJhbWVidWZmZXIgaXMgYm91bmQuCiAgICAgICAgIGlmICghdmFsaWRh
dGVEZWZhdWx0RnJhbWVidWZmZXJBdHRhY2htZW50KGF0dGFjaG1lbnQpKSB7CiAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5j
dGlvbk5hbWUsICJpbnZhbGlkIGF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisKKyAgICAg
ICAgLy8gV2UgY2FuIGxvb2sgZGlyZWN0bHkgYXQgbV9hdHRyaWJ1dGVzIGJlY2F1c2UgaW4gV2Vi
R0wgMiwKKyAgICAgICAgLy8gdGhleSBhcmUgcmVxdWlyZWQgdG8gYmUgaG9ub3JlZC4KKyAgICAg
ICAgYm9vbCBoYXNEZXB0aCA9IG1fYXR0cmlidXRlcy5kZXB0aDsKKyAgICAgICAgYm9vbCBoYXNT
dGVuY2lsID0gbV9hdHRyaWJ1dGVzLnN0ZW5jaWw7CisgICAgICAgIGJvb2wgbWlzc2luZ0ltYWdl
ID0gKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIICYmICFoYXNEZXB0aCkg
fHwgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUwgJiYgIWhhc1N0ZW5j
aWwpOworICAgICAgICBpZiAobWlzc2luZ0ltYWdlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHBu
YW1lKSB7CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9UWVBFOgorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUpOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKKyAgICAgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfREVGQVVMVDsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIH0K
ICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZU5vbkRlZmF1bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQo
ZnVuY3Rpb25OYW1lLCBhdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvIG9iamVjdCA9IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1l
bnRPYmplY3QoYXR0YWNobWVudCkpOwotICAgIGlmICghb2JqZWN0KSB7CisgICAgUmVmUHRyPFdl
YkdMU2hhcmVkT2JqZWN0PiBhdHRhY2htZW50T2JqZWN0OworICAgIGlmIChhdHRhY2htZW50ID09
IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpIHsKKyAgICAgICAg
YXR0YWNobWVudE9iamVjdCA9IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFj
aG1lbnRPYmplY3QoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX0FUVEFDSE1FTlQpKTsKKyAgICAg
ICAgYXV0byBzdGVuY2lsQXR0YWNobWVudCA9IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZmZXIt
PmdldEF0dGFjaG1lbnRPYmplY3QoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQVRUQUNITUVO
VCkpOworICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdCAhPSBzdGVuY2lsQXR0YWNobWVudCkg
eworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJkaWZmZXJlbnQgb2JqZWN0cyBib3VuZCB0byBE
RVBUSF9BVFRBQ0hNRU5UIGFuZCBTVEVOQ0lMX0FUVEFDSE1FTlQiKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGF0dGFjaG1lbnRP
YmplY3QgPSBtYWtlUmVmUHRyKHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0
KGF0dGFjaG1lbnQpKTsKKworICAgIGlmICghYXR0YWNobWVudE9iamVjdCkgewogICAgICAgICBp
ZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JK
RUNUX1RZUEUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBo
aWNzQ29udGV4dEdMOjpOT05FKTsKICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4
dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKQpAQCAtMjc2OCw1MyArMjgy
OCwzOCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAgIH0KIAogICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFOgorICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+aXNUZXh0dXJlKCkp
CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFw
aGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOgorICAgICAgICBpZiAoYXR0YWNo
bWVudE9iamVjdC0+aXNUZXh0dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihy
ZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVyZSY+KCphdHRhY2htZW50T2JqZWN0KSk7CisgICAg
ICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXIm
PigqYXR0YWNobWVudE9iamVjdCkpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVW
RUw6CisgICAgICAgIGlmICghYXR0YWNobWVudE9iamVjdC0+aXNUZXh0dXJlKCkpCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkU6CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkU6CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpF
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQ
VEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX1NURU5DSUxfU0laRToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6CiAgICAgICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKG9iamVjdC0+aXNUZXh0dXJlKCkpIHsK
LSAgICAgICAgc3dpdGNoIChwbmFtZSkgewotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRSk7Ci0gICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUU6Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdl
YkdMVGV4dHVyZSY+KCpvYmplY3QpKTsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFD
RToKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9DT0xPUl9FTkNPRElORzoKLSAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHBhcmFtZXRlciBu
YW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQiKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG9iamVjdC0+aXNSZW5k
ZXJidWZmZXIoKSk7Ci0gICAgICAgIHN3aXRjaCAocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlJF
TkRFUkJVRkZFUik7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihy
ZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyJj4oKm9iamVjdCkpOwotICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09E
SU5HIDogewotICAgICAgICAgICAgYXV0byYgcmVuZGVyQnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDxXZWJHTFJlbmRlcmJ1ZmZlciY+KCpvYmplY3QpOwotICAgICAgICAgICAgYXV0byBmb3JtYXQg
PSByZW5kZXJCdWZmZXIuZ2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAgICAgICAgICAgIGlmIChmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNSR0I4X0FMUEhBOAotICAgICAgICAgICAgICAgIHx8
IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyCi0gICAg
ICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9FVEMyX0VBQwotICAgICAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29u
dGV4dEdMOjpTUkdCKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgcGFyYW1ldGVyIG5h
bWUgZm9yIHJlbmRlcmJ1ZmZlciBhdHRhY2htZW50Iik7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKKyAgICAgICAgaWYg
KGF0dGFjaG1lbnQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJDT01QT05FTlRfVFlQRSBjYW4ndCBiZSBx
dWVyaWVkIGZvciBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAg
ICAgfQorCisgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
RU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3IgYXR0YWNobWVu
dCIpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlRnJhbWVidWZmZXJUYXJnZXQoR0NHTGVudW0gdGFyZ2V0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCmluZGV4IDE5MTc4NmFiOTY4YmM3MDQ3
NWMzY2ZjNDc0NGM3ZmQ5NjBlNzE1OTEuLmRiMmI3MjVhYzFiMTNmNjkzZDhkNThiYzU2MTQ0Yjdm
OTBlNGMwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAK
QEAgLTY3LDE1ICs2Nyw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OmRlbGV0ZU9iamVjdChjb25zdCBB
YnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCoKICAgICBpZiAoIWhhc0dy
b3VwT3JDb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEFOR0xFIGNvcnJlY3Rs
eSBoYW5kbGVzIG9iamVjdCBkZWxldGlvbiB3aXRoIFdlYkdMIHNlbWFudGljcy4KLSAgICAvLyBG
b3Igb3RoZXIgR0wgaW1wbGVtZW50YXRpb25zLCBkZWxheSBkZWxldGlvbiB1bnRpbCB3ZSBrbm93
Ci0gICAgLy8gdGhlIG9iamVjdCBpcyBub3QgYXR0YWNoZWQgYW55d2hlcmUuCi0jaWYgVVNFKEFO
R0xFKQotICAgIGlmICghbV9jYWxsZWREZWxldGUpIHsKLSAgICAgICAgbV9jYWxsZWREZWxldGUg
PSB0cnVlOwotI2Vsc2UKICAgICBpZiAoIW1fYXR0YWNobWVudENvdW50KSB7Ci0jZW5kaWYKICAg
ICAgICAgaWYgKCFjb250ZXh0M2QpCiAgICAgICAgICAgICBjb250ZXh0M2QgPSBnZXRBR3JhcGhp
Y3NDb250ZXh0R0woKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgK
aW5kZXggY2FkNDc5Y2UyNzcxMGM4OTQxM2VmZDlkYWRjNmNiYzM4M2RkMmVlMS4uMDBjZDhmMGMy
YjdiMjFiYmY5NzJhZmE3Y2ZjNWVlODVlM2UwNjBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE9iamVjdC5oCkBAIC05NCw5ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgUGxhdGZv
cm1HTE9iamVjdCBtX29iamVjdCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2F0dGFjaG1lbnRDb3Vu
dCB7IDAgfTsKICAgICBib29sIG1fZGVsZXRlZCB7IGZhbHNlIH07Ci0jaWYgVVNFKEFOR0xFKQot
ICAgIGJvb2wgbV9jYWxsZWREZWxldGUgeyBmYWxzZSB9OwotI2VuZGlmCiB9OwogCiBpbmxpbmUg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3RPclplcm8oV2ViR0xPYmplY3QqIG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKaW5kZXggYzFhODkzN2VlYzdmYWZlYmVlZDVlNDAxZWMwODZkYmZmODRjNTlhOC4u
OTQzOTYwNjA4NjEzMDkzOTA5NWNmMjI3ZjcxOWRmMDE5NjdiMDczZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKQEAgLTEzNDIsNyArMTM0Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
YXR0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgV2ViR0xTaGFkZXImCiB7CiAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CiAKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJh
dHRhY2hTaGFkZXIiLCAmcHJvZ3JhbSkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImF0dGFjaFNoYWRlciIsICZzaGFkZXIpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1P
clNoYWRlcigiYXR0YWNoU2hhZGVyIiwgJnByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3Jh
bU9yU2hhZGVyKCJhdHRhY2hTaGFkZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghcHJvZ3JhbS5hdHRhY2hTaGFkZXIobG9ja2VyLCAmc2hhZGVyKSkgewogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJh
dHRhY2hTaGFkZXIiLCAic2hhZGVyIGF0dGFjaG1lbnQgYWxyZWFkeSBoYXMgc2hhZGVyIik7CkBA
IC0xMzU0LDcgKzEzNTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFj
aFNoYWRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIFdlYkdMU2hhZGVyJgogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0mIHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigi
YmluZEF0dHJpYkxvY2F0aW9uIiwgJnByb2dyYW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFBy
b2dyYW1PclNoYWRlcigiYmluZEF0dHJpYkxvY2F0aW9uIiwgJnByb2dyYW0pKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKCF2YWxpZGF0ZUxvY2F0aW9uTGVuZ3RoKCJiaW5kQXR0cmliTG9jYXRp
b24iLCBuYW1lKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM3MSwyMSArMTM3MSwxNiBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dy
YW0mIHByb2dyYW0sIEdDR0x1aQogICAgIG1fY29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHBy
b2dyYW0ub2JqZWN0KCksIGluZGV4LCBuYW1lKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3VuZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IFdlYkdMT2JqZWN0KiBvYmplY3QpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFdlYkdM
T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgaWYgKCFvYmpl
Y3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhpcykpIHsKLSAgICAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rp
b25OYW1lLCAib2JqZWN0IG5vdCBmcm9tIHRoaXMgY29udGV4dCIpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghb2JqZWN0LT5vYmplY3QoKSkgewot
ICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURf
T1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJkZWxldGVkIG9iamVjdHMgY2Fubm90IGJlIGJvdW5k
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICBpZiAoIW9iamVj
dCkgeworICAgICAgICAvLyBUaGlzIGRpZmZlcnMgaW4gYmVoYXZpb3IgdG8gVmFsaWRhdGVXZWJH
TE9iamVjdDsgbnVsbCBvYmplY3RzIGFyZSBhbGxvd2VkCisgICAgICAgIC8vIGluIHRoZXNlIGVu
dHJ5IHBvaW50cy4KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiB2YWxpZGF0ZVdlYkdMT2JqZWN0KGZ1bmN0aW9uTmFtZSwgb2JqZWN0KTsK
IH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlclRhcmdl
dChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKQEAgLTE0NDcsNyAr
MTQ0Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CiAKLSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJv
dW5kKCJiaW5kQnVmZmVyIiwgYnVmZmVyKSkKKyAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJH
TE9iamVjdCgiYmluZEJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghdmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcobG9ja2VyLCAiYmluZEJ1ZmZlciIsIHRh
cmdldCwgYnVmZmVyKSkKQEAgLTE0NjAsNyArMTQ1NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1
ZmZlCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CiAK
LSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5kKCJiaW5kRnJhbWVidWZmZXIiLCBidWZmZXIp
KQorICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0KCJiaW5kRnJhbWVidWZmZXIi
LCBidWZmZXIpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUikgewpAQCAtMTQ3NSw3ICsxNDcwLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
V2ViR0xSZW5kZXJidWYKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBo
TG9jaygpKTsKIAotICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJpbmRSZW5kZXJidWZm
ZXIiLCByZW5kZXJCdWZmZXIpKQorICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0
KCJiaW5kUmVuZGVyYnVmZmVyIiwgcmVuZGVyQnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUikgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiYmlu
ZFJlbmRlcmJ1ZmZlciIsICJpbnZhbGlkIHRhcmdldCIpOwpAQCAtMTQ5MSw3ICsxNDg2LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJn
ZXQsIFdlYkdMVGV4dHVyZSogdGV4dHUKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9i
amVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJpbmRU
ZXh0dXJlIiwgdGV4dHVyZSkpCisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3Qo
ImJpbmRUZXh0dXJlIiwgdGV4dHVyZSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAodGV4dHVy
ZSAmJiB0ZXh0dXJlLT5nZXRUYXJnZXQoKSAmJiB0ZXh0dXJlLT5nZXRUYXJnZXQoKSAhPSB0YXJn
ZXQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfT1BFUkFUSU9OLCAiYmluZFRleHR1cmUiLCAidGV4dHVyZXMgY2FuIG5vdCBiZSB1c2VkIHdp
dGggbXVsdGlwbGUgdGFyZ2V0cyIpOwpAQCAtMTc1MSw3ICsxNzQ2LDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVh
biBncmVlbiwgR0MKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hh
ZGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiY29tcGlsZVNoYWRlciIsICZz
aGFkZXIpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiY29tcGlsZVNo
YWRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT5jb21waWxl
U2hhZGVyKHNoYWRlci5vYmplY3QoKSk7CiAgICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NU
QVRVUyk7CkBAIC0yMTY2LDcgKzIxNjEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIFdlYkdMU2hhZGVyJgogewog
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOwogCi0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigiZGV0YWNoU2hhZGVyIiwgJnByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hh
ZGVyKCJkZXRhY2hTaGFkZXIiLCAmc2hhZGVyKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9n
cmFtT3JTaGFkZXIoImRldGFjaFNoYWRlciIsICZwcm9ncmFtKSB8fCAhdmFsaWRhdGVXZWJHTFBy
b2dyYW1PclNoYWRlcigiZGV0YWNoU2hhZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIXByb2dyYW0uZGV0YWNoU2hhZGVyKGxvY2tlciwgJnNoYWRlcikpIHsKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9O
LCAiZGV0YWNoU2hhZGVyIiwgInNoYWRlciBub3QgYXR0YWNoZWQiKTsKQEAgLTIzODEsMTEgKzIz
NzYsMTMgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVZlcnRleEF0
dHJpYnV0ZXModW5zaWduZWQgZWxlbWVudENvdW50LAogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlV2ViR0xPYmplY3QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBX
ZWJHTE9iamVjdCogb2JqZWN0KQogeworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25O
YW1lLCAib2JqZWN0IGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBpZiAoIW9iamVjdC0+b2JqZWN0KCkpIHsKKyAgICBpZiAob2JqZWN0LT5pc0RlbGV0ZWQoKSkg
ewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9P
UEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gdXNlIGEgZGVsZXRlZCBvYmplY3Qi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIzOTgsMTIgKzIzOTUsMjEgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgV2UKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
V2ViR0xPYmplY3QqIG9iamVjdCkKIHsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9u
TmFtZSwgInByb2dyYW0gb3Igc2hhZGVyIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICAvLyBVc2luZyBhIGRlbGV0ZWQgcHJvZ3JhbSBvciBzaGFkZXIgaXMgSU5W
QUxJRF9WQUxVRSBpbnN0ZWFkIG9mIElOVkFMSURfT1BFUkFUSU9OIGFzIGZvcgotICAgIC8vIG90
aGVyIFdlYkdMIG9iamVjdHMuCisgICAgLy8gT3BlbkdMIEVTIDMuMC41IHAuIDQ1OgorICAgIC8v
ICJDb21tYW5kcyB0aGF0IGFjY2VwdCBzaGFkZXIgb3IgcHJvZ3JhbSBvYmplY3QgbmFtZXMgd2ls
bCBnZW5lcmF0ZSB0aGUKKyAgICAvLyBlcnJvciBJTlZBTElEX1ZBTFVFIGlmIHRoZSBwcm92aWRl
ZCBuYW1lIGlzIG5vdCB0aGUgbmFtZSBvZiBlaXRoZXIgYSBzaGFkZXIKKyAgICAvLyBvciBwcm9n
cmFtIG9iamVjdCBhbmQgSU5WQUxJRF9PUEVSQVRJT04gaWYgdGhlIHByb3ZpZGVkIG5hbWUgaWRl
bnRpZmllcyBhbgorICAgIC8vIG9iamVjdCB0aGF0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgdHlwZS4i
CisgICAgLy8KKyAgICAvLyBQcm9ncmFtcyBhbmQgc2hhZGVycyBhbHNvIGhhdmUgc2xpZ2h0bHkg
ZGlmZmVyZW50IGxpZmV0aW1lIHJ1bGVzIHRoYW4gb3RoZXIKKyAgICAvLyBvYmplY3RzIGluIHRo
ZSBBUEk7IHRoZXkgY29udGludWUgdG8gYmUgdXNhYmxlIGFmdGVyIGJlaW5nIG1hcmtlZCBmb3IK
KyAgICAvLyBkZWxldGlvbi4KICAgICBpZiAoIW9iamVjdC0+b2JqZWN0KCkpIHsKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0
aW9uTmFtZSwgImF0dGVtcHQgdG8gdXNlIGEgZGVsZXRlZCBwcm9ncmFtIG9yIHNoYWRlciIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzEyLDEwICsyNzE4LDggQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnUKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfRU5VTSwgImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwgImludmFsaWQgdGFyZ2V0
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGJ1ZmZlciAmJiAhYnVmZmVyLT52
YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyIiwgIm5vIGJ1ZmZlciBvciBidWZmZXIgbm90IGZyb20gdGhpcyBjb250ZXh0Iik7
CisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyIiwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAoYnVmZmVy
ICYmICFidWZmZXItPmhhc0V2ZXJCZWVuQm91bmQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlciIsICJidWZmZXIgaGFzIG5ldmVyIGJlZW4gYm91bmQiKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjc0MSwxNiArMjc0NSwxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYQogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwg
ImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgImxldmVsIG5vdCAwIGFuZCBPRVNfZmJvX3JlbmRlcl9t
aXBtYXAgbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAodGV4
dHVyZSAmJiAhdGV4dHVyZS0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkgewotICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJ
T04sICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsICJubyB0ZXh0dXJlIG9yIHRleHR1cmUgbm90IGZy
b20gdGhpcyBjb250ZXh0Iik7CisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3Qo
ImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgdGV4dHVyZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlckJpbmRpbmcgPSBnZXRGcmFtZWJ1
ZmZlckJpbmRpbmcodGFyZ2V0KTsKIAogICAgIC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGZy
YW1lYnVmZmVyIHRvIGJlIG11dGF0ZWQ7IGFsbCBjdXJyZW50CiAgICAgLy8gaW1wbGVtZW50YXRp
b25zIHVzZSBhbiBGQk8gaW50ZXJuYWxseSBpbiBwbGFjZSBvZiB0aGUgZGVmYXVsdAogICAgIC8v
IEZCTy4KKyAgICBXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlckJpbmRpbmcgPSBnZXRGcmFt
ZWJ1ZmZlckJpbmRpbmcodGFyZ2V0KTsKICAgICBpZiAoIWZyYW1lYnVmZmVyQmluZGluZyB8fCAh
ZnJhbWVidWZmZXJCaW5kaW5nLT5vYmplY3QoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclRleHR1
cmUyRCIsICJubyBmcmFtZWJ1ZmZlciBib3VuZCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODEw
LDcgKzI4MTEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdlbmVyYXRlTWlw
bWFwKEdDR0xlbnVtIHRhcmdldCkKIAogUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlQXR0cmliIiwgJnByb2dyYW0p
KQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlQXR0cmli
IiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBHcmFwaGljc0NvbnRl
eHRHTDo6QWN0aXZlSW5mbyBpbmZvOwogICAgIGlmICghbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRy
aWIocHJvZ3JhbS5vYmplY3QoKSwgaW5kZXgsIGluZm8pKQpAQCAtMjgyMyw3ICsyODI0LDcgQEAg
UmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0
aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSYKIAogUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dy
YW0sIEdDR0x1aW50IGluZGV4KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm0iLCAmcHJv
Z3JhbSkpCisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVV
bmlmb3JtIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwogICAgIGlmICghbV9jb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3JtKHByb2dyYW0ub2JqZWN0KCksIGluZGV4LCBpbmZvKSkKQEAgLTI4NDAsNyArMjg0
MSw3IEBAIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtCiAKIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8
V2ViR0xTaGFkZXI+Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFk
ZXJzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBdHRhY2hlZFNoYWRl
cnMiLCAmcHJvZ3JhbSkpCisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJn
ZXRBdHRhY2hlZFNoYWRlcnMiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKICAgICBjb25zdCBHQ0dMZW51bSBzaGFkZXJUeXBlc1tdID0gewpAQCAtMjg1OCw3ICsy
ODU5LDcgQEAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+PiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWQKIAogR0NHTGludCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBdHRyaWJMb2NhdGlvbiIsICZwcm9n
cmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEF0dHJpYkxv
Y2F0aW9uIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCF2YWxpZGF0
ZUxvY2F0aW9uTGVuZ3RoKCJnZXRBdHRyaWJMb2NhdGlvbiIsIG5hbWUpKQogICAgICAgICByZXR1
cm4gLTE7CkBAIC0zMjU2LDcgKzMyNTcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogCiBT
dHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQ
cm9ncmFtJiBwcm9ncmFtKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFByb2dyYW1JbmZvTG9nIiwgJnByb2dy
YW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0UHJvZ3JhbUlu
Zm9Mb2ciLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4g
ZW5zdXJlTm90TnVsbChtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0ub2JqZWN0
KCkpKTsKIH0KQEAgLTMzNjIsNyArMzM2Myw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciYgc2hhZGVyLCBHQ0dMCiAK
IFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdM
U2hhZGVyJiBzaGFkZXIpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0U2hhZGVySW5mb0xvZyIsICZzaGFkZXIp
KQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0U2hhZGVySW5mb0xv
ZyIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGVuc3Vy
ZU5vdE51bGwobV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlci5vYmplY3QoKSkpOwog
fQpAQCAtMzQwMCw3ICszNDAxLDcgQEAgUmVmUHRyPFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQcmVjaXNpb24KIAogU3RyaW5n
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciYg
c2hhZGVyKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
V2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFNoYWRlclNvdXJjZSIsICZzaGFkZXIpKQorICAgIGlm
ICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0U2hhZGVyU291cmNlIiwgJnNoYWRl
cikpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5zdXJlTm90TnVsbChz
aGFkZXIuZ2V0U291cmNlKCkpOwogfQpAQCAtMzQzMSw3ICszNDMyLDcgQEAgV2ViR0xBbnkgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG4KIAogV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5p
Zm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uJiB1
bmlmb3JtTG9jYXRpb24pCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0VW5pZm9ybSIsICZwcm9ncmFtKSkKKyAg
ICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFVuaWZvcm0iLCAmcHJvZ3Jh
bSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICh1bmlmb3JtTG9jYXRpb24ucHJv
Z3JhbSgpICE9ICZwcm9ncmFtKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImdldFVuaWZvcm0iLCAibm8gdW5pZm9ybWxv
Y2F0aW9uIG9yIG5vdCB2YWxpZCBmb3IgdGhpcyBwcm9ncmFtIik7CkBAIC0zNjM1LDcgKzM2MzYs
NyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogCiBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRp
b24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRVbmlm
b3JtTG9jYXRpb24iLCAmcHJvZ3JhbSkpCisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9y
U2hhZGVyKCJnZXRVbmlmb3JtTG9jYXRpb24iLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGlmICghdmFsaWRhdGVMb2NhdGlvbkxlbmd0aCgiZ2V0VW5pZm9ybUxvY2F0
aW9uIiwgbmFtZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY5MCw2ICszNjkxLDkg
QEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmEKICAgICBpZiAoKGlzV2ViR0wyKCkgfHwgbV9hbmds
ZUluc3RhbmNlZEFycmF5cykgJiYgcG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9B
VFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSkKICAgICAgICAgcmV0dXJuIHN0YXRlLmRpdmlzb3I7
CiAKKyAgICBpZiAoaXNXZWJHTDIoKSAmJiBwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VkVS
VEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSKQorICAgICAgICByZXR1cm4gc3RhdGUuaXNJbnRlZ2Vy
OworCiAgICAgc3dpdGNoIChwbmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlZF
UlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CiAjaWYgIVVTRShBTkdMRSkKQEAgLTM4
MDksMTEgKzM4MTMsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoaW50KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKIAogR0NHTGJvb2xlYW4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6aXNCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBpZiAo
IWJ1ZmZlciB8fCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgaWYgKCFidWZmZXIgfHwg
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFidWZmZXItPnZhbGlkYXRlKGNvbnRleHRHcm91
cCgpLCAqdGhpcykpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFidWZmZXItPmhhc0V2
ZXJCZWVuQm91bmQoKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGJ1ZmZlci0+aXNEZWxl
dGVkKCkpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIG1fY29udGV4dC0+aXNCdWZm
ZXIoYnVmZmVyLT5vYmplY3QoKSk7CiB9CkBAIC0zODU1LDQ5ICszODYxLDYzIEBAIEdDR0xib29s
ZWFuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCiAK
IEdDR0xib29sZWFuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzRnJhbWVidWZmZXIoV2Vi
R0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXIpCiB7Ci0gICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCBp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCBpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIWZyYW1lYnVmZmVyLT52YWxpZGF0ZShjb250ZXh0R3JvdXAo
KSwgKnRoaXMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghZnJhbWVidWZmZXItPmhh
c0V2ZXJCZWVuQm91bmQoKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGZyYW1lYnVmZmVy
LT5pc0RlbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbV9jb250ZXh0
LT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyLT5vYmplY3QoKSk7CiB9CiAKIEdDR0xib29sZWFu
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dy
YW0pCiB7Ci0gICAgaWYgKCFwcm9ncmFtIHx8IGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICBpZiAoIXByb2dyYW0gfHwgaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFwcm9ncmFtLT52
YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKQogICAgICAgICByZXR1cm4gMDsKIAorICAg
IC8vIE9wZW5HTCBFUyBzcGVjaWFsLWNhc2VzIHRoZSBiZWhhdmlvciBvZiBwcm9ncmFtIG9iamVj
dHM7IGlmIHRoZXkncmUgZGVsZXRlZAorICAgIC8vIHdoaWxlIGF0dGFjaGVkIHRvIHRoZSBjdXJy
ZW50IGNvbnRleHQgc3RhdGUsIGdsSXNQcm9ncmFtIGlzIHN1cHBvc2VkIHRvCisgICAgLy8gc3Rp
bGwgcmV0dXJuIHRydWUuIEZvciB0aGlzIHJlYXNvbiwgaXNEZWxldGVkIGlzIG5vdCBjaGVja2Vk
IGhlcmUuCisKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1Byb2dyYW0ocHJvZ3JhbS0+b2JqZWN0
KCkpOwogfQogCiBHQ0dMYm9vbGVhbiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1JlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciogcmVuZGVyYnVmZmVyKQogewotICAgIGlmICghcmVu
ZGVyYnVmZmVyIHx8IGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICBpZiAoIXJlbmRlcmJ1
ZmZlciB8fCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXJlbmRlcmJ1ZmZlci0+dmFsaWRh
dGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAo
IXJlbmRlcmJ1ZmZlci0+aGFzRXZlckJlZW5Cb3VuZCgpKQogICAgICAgICByZXR1cm4gMDsKKyAg
ICBpZiAocmVuZGVyYnVmZmVyLT5pc0RlbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICByZXR1cm4gbV9jb250ZXh0LT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXItPm9iamVjdCgp
KTsKIH0KIAogR0NHTGJvb2xlYW4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNTaGFkZXIo
V2ViR0xTaGFkZXIqIHNoYWRlcikKIHsKLSAgICBpZiAoIXNoYWRlciB8fCBpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgaWYgKCFzaGFkZXIgfHwgaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICFzaGFkZXItPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhpcykpCiAgICAgICAgIHJl
dHVybiAwOwogCisgICAgLy8gT3BlbkdMIEVTIHNwZWNpYWwtY2FzZXMgdGhlIGJlaGF2aW9yIG9m
IHNoYWRlciBvYmplY3RzOyBpZiB0aGV5J3JlIGRlbGV0ZWQKKyAgICAvLyB3aGlsZSBhdHRhY2hl
ZCB0byBhIHByb2dyYW0sIGdsSXNTaGFkZXIgaXMgc3VwcG9zZWQgdG8gc3RpbGwgcmV0dXJuIHRy
dWUuCisgICAgLy8gRm9yIHRoaXMgcmVhc29uLCBpc0RlbGV0ZWQgaXMgbm90IGNoZWNrZWQgaGVy
ZS4KKwogICAgIHJldHVybiBtX2NvbnRleHQtPmlzU2hhZGVyKHNoYWRlci0+b2JqZWN0KCkpOwog
fQogCiBHQ0dMYm9vbGVhbiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1RleHR1cmUoV2Vi
R0xUZXh0dXJlKiB0ZXh0dXJlKQogewotICAgIGlmICghdGV4dHVyZSB8fCBpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgaWYgKCF0ZXh0dXJlIHx8IGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdGV4dHVyZS0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBpZiAoIXRleHR1cmUtPmhhc0V2ZXJCZWVuQm91bmQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CisgICAgaWYgKHRleHR1cmUtPmlzRGVsZXRlZCgpKQorICAgICAgICByZXR1
cm4gMDsKIAogICAgIHJldHVybiBtX2NvbnRleHQtPmlzVGV4dHVyZSh0ZXh0dXJlLT5vYmplY3Qo
KSk7CiB9CkBAIC0zOTE5LDcgKzM5MzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIAogYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbVdpdGhvdXRJbnZhbGlkYXRpbmdBdHRyaWJMb2Nh
dGlvbnMoV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImxpbmtQcm9ncmFtIiwg
cHJvZ3JhbSkpCisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJsaW5rUHJv
Z3JhbSIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8V2Vi
R0xTaGFkZXI+IHZlcnRleFNoYWRlciA9IHByb2dyYW0tPmdldEF0dGFjaGVkU2hhZGVyKEdyYXBo
aWNzQ29udGV4dEdMOjpWRVJURVhfU0hBREVSKTsKQEAgLTQ0NzEsNyArNDQ5MSw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2hh
ZGVyU291cmNlKFdlYkdMU2hhZGVyJiBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFt
T3JTaGFkZXIoInNoYWRlclNvdXJjZSIsICZzaGFkZXIpKQorICAgIGlmICghdmFsaWRhdGVXZWJH
TFByb2dyYW1PclNoYWRlcigic2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVy
bjsKICNpZiBVU0UoQU5HTEUpCiAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLm9i
amVjdCgpLCBzdHJpbmcpOwpAQCAtNTk5Niw3ICs2MDE2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlmICghY2hl
Y2tPYmplY3RUb0JlQm91bmQoInVzZVByb2dyYW0iLCBwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlk
YXRlTnVsbGFibGVXZWJHTE9iamVjdCgidXNlUHJvZ3JhbSIsIHByb2dyYW0pKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKHByb2dyYW0gJiYgIXByb2dyYW0tPmdldExpbmtTdGF0dXMoKSkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04sICJ1c2VQcm9ncmFtIiwgInByb2dyYW0gbm90IHZhbGlkIik7CkBAIC02MDE0LDcgKzYw
MzQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0oV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigidmFsaWRhdGVQ
cm9ncmFtIiwgJnByb2dyYW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigidmFsaWRhdGVQcm9ncmFtIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47CiAgICAgbV9j
b250ZXh0LT52YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbS5vYmplY3QoKSk7CiB9CkBAIC02MTI2LDcg
KzYxNDYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYlBv
aW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZQogICAgIH0KICAgICBHQ0dMc2l6ZWkg
Ynl0ZXNQZXJFbGVtZW50ID0gc2l6ZSAqIHR5cGVTaXplOwogCi0gICAgbV9ib3VuZFZlcnRleEFy
cmF5T2JqZWN0LT5zZXRWZXJ0ZXhBdHRyaWJTdGF0ZShsb2NrZXIsIGluZGV4LCBieXRlc1BlckVs
ZW1lbnQsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSwgbV9ib3VuZEFycmF5QnVmZmVyLmdldCgpKTsKKyAgICBtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3QtPnNldFZlcnRleEF0dHJpYlN0YXRlKGxvY2tlciwgaW5kZXgsIGJ5dGVz
UGVyRWxlbWVudCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBzdGF0aWNfY2FzdDxH
Q0dMaW50cHRyPihvZmZzZXQpLCBmYWxzZSwgbV9ib3VuZEFycmF5QnVmZmVyLmdldCgpKTsKICAg
ICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1h
bGl6ZWQsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSk7CiB9CiAKQEAg
LTc3MTgsMTQgKzc3MzgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdAogI2lmIFVTRShBTkdM
RSkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0j
ZW5kaWYgLy8gVVNFKEFOR0xFKQotCi0gICAgaWYgKCFwcmltY291bnQpIHsKLSAgICAgICAgbWFy
a0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiAhVVNFKEFO
R0xFKQorI2Vsc2UKICAgICBpZiAoIXZhbGlkYXRlRHJhd0FycmF5cygiZHJhd0FycmF5c0luc3Rh
bmNlZCIsIG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmIC8vICFVU0UoQU5HTEUpCkBAIC03NzYzLDE0ICs3Nzc2LDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGMKICNpZiBVU0UoQU5HTEUpCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBpZiAoIXByaW1jb3VudCkgewot
ICAgICAgICBtYXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
I2lmICFVU0UoQU5HTEUpCisjZWxzZQogICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gMDsKICAg
ICBpZiAoIXZhbGlkYXRlRHJhd0VsZW1lbnRzKCJkcmF3RWxlbWVudHNJbnN0YW5jZWQiLCBtb2Rl
LCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBudW1FbGVtZW50cywgcHJpbWNvdW50KSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGM5NzllNTIwOWM4ZDRjMjNkMWE5MGIyZDY0OWRlZTJk
N2IyYTA2NzAuLjJkZTkyZmJhYTlhN2NkZWE0N2Y4YjRhZjFmNGI4OWZjNjBkMmY5NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKQEAgLTQ5NSw3ICs0OTUsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgdmFsaWRh
dGVJbmRleEFycmF5UHJlY2lzZShHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0LCB1bnNpZ25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCk7CiAgICAgYm9vbCB2
YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXModW5zaWduZWQgZWxlbWVudENvdW50LCB1bnNpZ25lZCBw
cmltaXRpdmVDb3VudCA9IDApOwogCisgICAgLy8gVmFsaWRhdGVzIHRoZSBpbmNvbWluZyBXZWJH
TCBvYmplY3QsIHdoaWNoIGlzIGFzc3VtZWQgdG8gYmUgbm9uLW51bGwuCisgICAgLy8gQ2hlY2tz
IHRoYXQgdGhlIG9iamVjdCBiZWxvbmdzIHRvIHRoaXMgY29udGV4dCBhbmQgdGhhdCBpdCdzIG5v
dCBtYXJrZWQgZm9yCisgICAgLy8gZGVsZXRpb24uIFBlcmZvcm1zIGEgY29udGV4dCBsb3NzIGNo
ZWNrIGludGVybmFsbHkuCiAgICAgYm9vbCB2YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIq
LCBXZWJHTE9iamVjdCopOworCisgICAgLy8gVmFsaWRhdGVzIHRoZSBpbmNvbWluZyBXZWJHTCBw
cm9ncmFtIG9yIHNoYWRlciwgd2hpY2ggaXMgYXNzdW1lZCB0byBiZQorICAgIC8vIG5vbi1udWxs
LiBPcGVuR0wgRVMncyB2YWxpZGF0aW9uIHJ1bGVzIGRpZmZlciBmb3IgdGhlc2UgdHlwZXMgb2Yg
b2JqZXRjdHMKKyAgICAvLyBjb21wYXJlZCB0byBvdGhlcnMuIFBlcmZvcm1zIGEgY29udGV4dCBs
b3NzIGNoZWNrIGludGVybmFsbHkuCiAgICAgYm9vbCB2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hh
ZGVyKGNvbnN0IGNoYXIqLCBXZWJHTE9iamVjdCopOwogCiAjaWYgIVVTRShBTkdMRSkKQEAgLTEw
NDYsOSArMTA1MywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGNhbGxl
ciBzaG91bGQgcmV0dXJuIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLgogICAgIGJvb2wgZGVs
ZXRlT2JqZWN0KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTE9iamVjdCopOwogCi0g
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBiaW5kKiAoYmluZEJ1ZmZlciwgYmluZFRleHR1cmUs
IGV0YykgYW5kIHVzZVByb2dyYW0uCi0gICAgLy8gUmV0dXJuIGZhbHNlIGlmIGNhbGxlciBzaG91
bGQgcmV0dXJuIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLgotICAgIGJvb2wgY2hlY2tPYmpl
Y3RUb0JlQm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXZWJHTE9iamVjdCopOworICAg
IC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgQVBJcyB3aGljaCBjYW4gbGVnYWxseSByZWNlaXZlIG51
bGwgb2JqZWN0cywgaW5jbHVkaW5nCisgICAgLy8gdGhlIGJpbmQqIGNhbGxzIChiaW5kQnVmZmVy
LCBiaW5kVGV4dHVyZSwgZXRjLikgYW5kIHVzZVByb2dyYW0uIENoZWNrcyB0aGF0CisgICAgLy8g
dGhlIG9iamVjdCBiZWxvbmdzIHRvIHRoaXMgY29udGV4dCBhbmQgdGhhdCBpdCdzIG5vdCBtYXJr
ZWQgZm9yIGRlbGV0aW9uLgorICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIGNhbGxlciBzaG91
bGQgcmV0dXJuIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLgorICAgIC8vIFBlcmZvcm1zIGEg
Y29udGV4dCBsb3NzIGNoZWNrIGludGVybmFsbHkuCisgICAgLy8gVGhpcyByZXR1cm5zIHRydWUg
Zm9yIG51bGwgV2ViR0xPYmplY3QgYXJndW1lbnRzIQorICAgIGJvb2wgdmFsaWRhdGVOdWxsYWJs
ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgV2ViR0xPYmplY3QqKTsKIAog
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgdGFyZ2V0IGZvciBidWZmZXJE
YXRhIGFuZAogICAgIC8vIGdldEJ1ZmZlclBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcAppbmRl
eCBkODdmZDYwY2NkM2JiZGVlNTlmOTI2YTlhMjA2YjBjN2E3OGM3OTU5Li41ZTg2YzQ1MThhMDAz
ZGYyZWE1Mzc4MjgwMzg4MzllMDAwZDI1YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6OnNldEVsZW1lbnRBcnJh
eUJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYgbG9jCiAgICAgCiB9CiAKLXZvaWQgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2U6OnNldFZlcnRleEF0dHJpYlN0YXRlKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnl0ZXNQZXJFbGVtZW50
LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdD
R0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQor
dm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6c2V0VmVydGV4QXR0cmliU3RhdGUoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBieXRl
c1BlckVsZW1lbnQsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9y
bWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQsIGJvb2wgaXNJbnRl
Z2VyLCBXZWJHTEJ1ZmZlciogYnVmZmVyKQogewogICAgIEdDR0xzaXplaSB2YWxpZGF0ZWRTdHJp
ZGUgPSBzdHJpZGUgPyBzdHJpZGUgOiBieXRlc1BlckVsZW1lbnQ7CiAgICAgCkBAIC03MSw2ICs3
MSw3IEBAIHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6OnNldFZlcnRleEF0dHJpYlN0
YXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrCiAgICAgc3RhdGUuc3RyaWRlID0gdmFsaWRh
dGVkU3RyaWRlOwogICAgIHN0YXRlLm9yaWdpbmFsU3RyaWRlID0gc3RyaWRlOwogICAgIHN0YXRl
Lm9mZnNldCA9IG9mZnNldDsKKyAgICBzdGF0ZS5pc0ludGVnZXIgPSBpc0ludGVnZXI7CiB9CiAK
IHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6OnVuYmluZEJ1ZmZlcihjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyLCBXZWJHTEJ1ZmZlciYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgKaW5k
ZXggNWE5MzZiMjg0ZmMxZmRkZjZhZmVkZTc1ZWZkYzg2MTVlNzcyZGY3MS4uNWU2NmFmOWFmMmRk
ODcxZDMzZjJhMTZkNGFhNjA5YjQ4MjA1MjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCkBAIC02MCw2ICs2
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgR0NHTHNpemVpIG9yaWdpbmFsU3RyaWRlIHsgMCB9Owog
ICAgICAgICBHQ0dMaW50cHRyIG9mZnNldCB7IDAgfTsKICAgICAgICAgR0NHTHVpbnQgZGl2aXNv
ciB7IDAgfTsKKyAgICAgICAgYm9vbCBpc0ludGVnZXIgeyBmYWxzZSB9OwogICAgIH07CiAKICAg
ICBib29sIGlzRGVmYXVsdE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpE
ZWZhdWx0OyB9CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVsZW1lbnRB
cnJheUJ1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXIqKTsKIAog
ICAgIFZlcnRleEF0dHJpYlN0YXRlJiBnZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbnQgaW5kZXgpIHsg
cmV0dXJuIG1fdmVydGV4QXR0cmliU3RhdGVbaW5kZXhdOyB9Ci0gICAgdm9pZCBzZXRWZXJ0ZXhB
dHRyaWJTdGF0ZShjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR0NHTHVpbnQsIEdDR0xzaXpl
aSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xib29sZWFuLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIs
IFdlYkdMQnVmZmVyKik7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJTdGF0ZShjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTGludCwgR0NHTGVudW0s
IEdDR0xib29sZWFuLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIsIGJvb2wsIFdlYkdMQnVmZmVyKik7
CiAgICAgdm9pZCB1bmJpbmRCdWZmZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdM
QnVmZmVyJik7CiAKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApp
bmRleCA0ZjY0NzkyNTYxYzEwZGQyZTI0Njc0M2ZmYzZjNzBkMjJlNTFhMDFmLi43NGMxNzU4Nzc2
MGZkZDQ3ZGY2ZWMyOTc1YWVhNGY5ZjU3ZjQ3M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcApAQCAtMjkyLDIzICsyOTIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdQog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBnbDo6
R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFs
dWUuZGF0YSk7Ci0KLSAgICBzd2l0Y2ggKHBuYW1lKSB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAg
IC8vIFNvbWUgb2xkZXIgaGFyZHdhcmUgYWR2ZXJ0aXNlcyBhIGxhcmdlciBtYXhpbXVtIHRoYW4g
dGhleQotICAgIC8vIGNhbiBhY3R1YWxseSBoYW5kbGUuIFJhdGhlciB0aGFuIGRldGVjdGluZyBz
dWNoIGRldmljZXMsIHNpbXBseQotICAgIC8vIGNsYW1wIHRoZSBtYXhpbXVtIHRvIDgxOTIsIHdo
aWNoIGlzIGJpZyBlbm91Z2ggZm9yIGEgNUsgZGlzcGxheS4KLSAgICBjYXNlIE1BWF9SRU5ERVJC
VUZGRVJfU0laRToKLSAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oODE5MiwgKnZhbHVlKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNQVhfVklFV1BPUlRfRElNUzoKLSAgICAgICAgdmFsdWVb
MF0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVswXSk7Ci0gICAgICAgIHZhbHVlWzFdID0gc3RkOjpt
aW4oODE5MiwgdmFsdWVbMV0pOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRlclR5cGUsIEdDR0xlbnVt
IHByZWNpc2lvblR5cGUsIEdDR0xTcGFuPEdDR0xpbnQsIDI+IHJhbmdlLCBHQ0dMaW50KiBwcmVj
aXNpb24pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMzZmZWEyNGJkMGExN2Q1MmQzMGQwZmMzODk0NmU2MzEyNmFiMGFiOS4u
Y2I3YjQwN2EzZTdmMTQwNGM1ZWRjZjMwZjZhOWJkMWUyOWU1YTg5MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTAxLTExICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtXZWJHTDJdIGZib3N0YXRlcXVlcnksIG5lZ2F0aXZlYnVmZmVyYXBpLCBuZWdh
dGl2ZXZlcnRleGFycmF5YXBpLCBzaGFkZXJzdGF0ZXF1ZXJ5IGNvbmZvcm1hbmNlIGZhaWx1cmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzNzIK
KworICAgICAgICBSZWJhc2VsaW5lIG5vdy1wYXNzaW5nIGRFUVAgdGVzdHMuCisKKyAgICAgICAg
KiB3ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvc3RhdGVxdWVyeS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViZ2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0
aXZlYnVmZmVyYXBpLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJnbC8yLjAuMC9kZXFwL2Z1
bmN0aW9uYWwvZ2xlczMvbmVnYXRpdmV2ZXJ0ZXhhcnJheWFwaS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViZ2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnN0YXRlcXVlcnkt
ZXhwZWN0ZWQudHh0OgorCiAyMDIxLTAxLTExICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5l
ckBhcHBsZS5jb20+CiAKICAgICAgICAgRG91YmxlIHRhcCB0byBzZWxlY3QgZG9lcyBub3Qgd29y
ayBpZiB0aGUgcGFnZSBjbGVhcnMgc2VsZWN0aW9ucyBvbiB0YXAsIGxpa2UgZ3JhbW1hcmx5LmNv
bSBkb2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9u
YWwvZ2xlczMvZmJvc3RhdGVxdWVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8y
LjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvc3RhdGVxdWVyeS1leHBlY3RlZC50eHQKaW5k
ZXggN2JiZDRkNzU2YTJkNWVhNDljMzc2NjExYjBlMmE4MDIyNzQwYjM5ZC4uM2ZmNzg3NjAzY2U1
Y2UzNTMxY2Y0M2VlYmMzZTcxNzhmNjU2YTYxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3N0YXRlcXVlcnktZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9mYm9z
dGF0ZXF1ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSw0IEBACiBUaGlzIHRlc3QgcnVucyB0
aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mg
b3IgRkFJTC4KIAogVGVzdDogLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL2Zib3N0YXRlcXVlcnkuaHRtbAotCi1bIDE6IEZBSUwgXSBmYm8u
ZHJhd19mcmFtZWJ1ZmZlcl9kZWZhdWx0X2ZyYW1lYnVmZmVyOgotWyAyOiBGQUlMIF0gZmJvLnJl
YWRfZnJhbWVidWZmZXJfZGVmYXVsdF9mcmFtZWJ1ZmZlcjoKLVsgMzogUEFTUyBdIGZiby5mcmFt
ZWJ1ZmZlcl9hdHRhY2htZW50X29iamVjdDogUGFzc2VkCi1bIDQ6IFBBU1MgXSBmYm8uZnJhbWVi
dWZmZXJfYXR0YWNobWVudF90ZXh0dXJlX2xldmVsOiBQYXNzZWQKLVsgNTogUEFTUyBdIGZiby5m
cmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfY3ViZV9tYXBfZmFjZTogUGFzc2VkCi1bIDY6
IEZBSUwgXSBmYm8uZnJhbWVidWZmZXJfYXR0YWNobWVudF90ZXh0dXJlX2xheWVyOgotWyA3OiBQ
QVNTIF0gZmJvLmZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29sb3JfZW5jb2Rpbmc6IFBhc3NlZAot
WyA4OiBQQVNTIF0gZmJvLmZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29tcG9uZW50X3R5cGU6IFBh
c3NlZAotWyA5OiBQQVNTIF0gZmJvLmZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfeF9zaXplX2luaXRp
YWw6IFBhc3NlZAotWyAxMDogUEFTUyBdIGZiby5mcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3hfc2l6
ZV9yYm86IFBhc3NlZAotWyAxMTogUEFTUyBdIGZiby5mcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3hf
c2l6ZV90ZXh0dXJlOiBQYXNzZWQKLVsgMTI6IFBBU1MgXSBmYm8uZnJhbWVidWZmZXJfdW5zcGVj
aWZpZWRfYXR0YWNobWVudF9jb2xvcl9lbmNvZGluZzogUGFzc2VkCi1bIDEzOiBQQVNTIF0gZmJv
LmZyYW1lYnVmZmVyX3Vuc3BlY2lmaWVkX2F0dGFjaG1lbnRfY29tcG9uZW50X3R5cGU6IFBhc3Nl
ZAotWyAxNDogUEFTUyBdIGZiby5mcmFtZWJ1ZmZlcl91bnNwZWNpZmllZF9hdHRhY2htZW50X3hf
c2l6ZV9yYm86IFBhc3NlZAotWyAxNTogUEFTUyBdIGZiby5mcmFtZWJ1ZmZlcl91bnNwZWNpZmll
ZF9hdHRhY2htZW50X3hfc2l6ZV90ZXh0dXJlOiBQYXNzZWQKLVsgMTY6IFBBU1MgXSBmYm8uZnJh
bWVidWZmZXJfdW5zcGVjaWZpZWRfYXR0YWNobWVudF94X3NpemVfdGV4dHVyZTogc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBdIDMgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBd
IEFsbCB0ZXN0cyBwYXNzZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2Rl
cXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZWJ1ZmZlcmFwaS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbmVnYXRpdmVidWZmZXJh
cGktZXhwZWN0ZWQudHh0CmluZGV4IGMwYTk1YzE5MGZiMmRiNTZlZTI5YzA1NjMxMWNjMTQxMTEx
MTc1MTUuLjcxZmRjZTBlN2FjOTVlMjMwOTFlYTMwMTk5YzBkNmM0ZTA4MjRhNjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2
ZWJ1ZmZlcmFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlYnVmZmVyYXBpLWV4cGVjdGVkLnR4dApAQCAtMSwz
NCArMSw0IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4g
YW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVzdDogLi4vLi4vLi4vcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlYnVm
ZmVyYXBpLmh0bWwKLQotWyAxOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuYmluZF9idWZmZXI6
IFBhc3NlZAotWyAyOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuYnVmZmVyX2RhdGE6IFBhc3Nl
ZAotWyAzOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuYnVmZmVyX3N1Yl9kYXRhOiBQYXNzZWQK
LVsgNDogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmJ1ZmZlcl9zdWJfZGF0YV9zaXplX29mZnNl
dDogUGFzc2VkCi1bIDU6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5jbGVhcjogUGFzc2VkCi1b
IDY6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5yZWFkX3BpeGVsczogUGFzc2VkCi1bIDc6IFBB
U1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5yZWFkX3BpeGVsc19mb3JtYXRfbWlzbWF0Y2g6IFBhc3Nl
ZAotWyA4OiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkucmVhZF9waXhlbHNfZmJvX2Zvcm1hdF9t
aXNtYXRjaDogUGFzc2VkCi1bIDk6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5iaW5kX2J1ZmZl
cl9yYW5nZTogUGFzc2VkCi1bIDEwOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuYmluZF9idWZm
ZXJfYmFzZTogUGFzc2VkCi1bIDExOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuY2xlYXJfYnVm
ZmVyaXY6IFBhc3NlZAotWyAxMjogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmNsZWFyX2J1ZmZl
cnVpdjogUGFzc2VkCi1bIDEzOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuY2xlYXJfYnVmZmVy
ZnY6IFBhc3NlZAotWyAxNDogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmNsZWFyX2J1ZmZlcmZp
OiBQYXNzZWQKLVsgMTU6IEZBSUwgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5jb3B5X2J1ZmZlcl9zdWJf
ZGF0YTogRXhwZWN0ZWQgZ2wuSU5WQUxJRF9PUEVSQVRJT04sIGJ1dCBnb3QgZ2wuSU5WQUxJRF9W
QUxVRS4KLVsgMTY6IEZBSUwgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5kcmF3X2J1ZmZlcnM6IEV4cGVj
dGVkIGdsLk5PX0VSUk9SLCBidXQgZ290IGdsLklOVkFMSURfT1BFUkFUSU9OLgotWyAxNzogUEFT
UyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmJpbmRfZnJhbWVidWZmZXI6IFBhc3NlZAotWyAxODogUEFT
UyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmJpbmRfcmVuZGVyYnVmZmVyOiBQYXNzZWQKLVsgMTk6IFBB
U1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXM6IFBhc3NlZAot
WyAyMDogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmZyYW1lYnVmZmVyX3JlbmRlcmJ1ZmZlcjog
UGFzc2VkCi1bIDIxOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuZnJhbWVidWZmZXJfdGV4dHVy
ZTJkOiBQYXNzZWQKLVsgMjI6IEZBSUwgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5yZW5kZXJidWZmZXJf
c3RvcmFnZTogRXhwZWN0ZWQgZ2wuSU5WQUxJRF9WQUxVRSwgYnV0IGdvdCBnbC5OT19FUlJPUi4K
LVsgMjM6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5ibGl0X2ZyYW1lYnVmZmVyOiBQYXNzZWQK
LVsgMjQ6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5ibGl0X2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlOiBQYXNzZWQKLVsgMjU6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5mcmFtZWJ1ZmZlcl90
ZXh0dXJlX2xheWVyOiBQYXNzZWQKLVsgMjY6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5pbnZh
bGlkYXRlX2ZyYW1lYnVmZmVyOiBQYXNzZWQKLVsgMjc6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFw
aS5pbnZhbGlkYXRlX3N1Yl9mcmFtZWJ1ZmZlcjogUGFzc2VkCi1bIDI4OiBGQUlMIF0gbmVnYXRp
dmVCdWZmZXJBcGkucmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVsdGlzYW1wbGU6IEV4cGVjdGVkIGds
LklOVkFMSURfVkFMVUUsIGJ1dCBnb3QgZ2wuTk9fRVJST1IuCi1bIDI5OiBQQVNTIF0gc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBdIDQgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFT
UyBdIEFsbCB0ZXN0cyBwYXNzZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4w
L2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZXZlcnRleGFycmF5YXBpLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2
ZXZlcnRleGFycmF5YXBpLWV4cGVjdGVkLnR4dAppbmRleCA4OWI2YmY3MjY3MGY1ZjVhYmE5ZmU4
MGM2ZGQ1ODA1NjJjMTk3Y2Y1Li5hNGIxZTY3MmFlOTI5NDIxYTU2M2E1ZjNhNDU2ZWIyN2I4Nzg5
NjkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvbmVnYXRpdmV2ZXJ0ZXhhcnJheWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZldmVydGV4YXJyYXlh
cGktZXhwZWN0ZWQudHh0CkBAIC0xLDMwICsxLDQgQEAKIFRoaXMgdGVzdCBydW5zIHRoZSBXZWJH
TCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlM
LgogCiBUZXN0OiAuLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvbmVnYXRpdmV2ZXJ0ZXhhcnJheWFwaS5odG1sCi0KLVsgMTogUEFTUyBdIHZl
cnRleF9hcnJheS52ZXJ0ZXhfYXR0cmliZjogUGFzc2VkCi1bIDI6IFBBU1MgXSB2ZXJ0ZXhfYXJy
YXkudmVydGV4X2F0dHJpYmZ2OiBQYXNzZWQKLVsgMzogUEFTUyBdIHZlcnRleF9hcnJheS52ZXJ0
ZXhfYXR0cmliaTQ6IFBhc3NlZAotWyA0OiBQQVNTIF0gdmVydGV4X2FycmF5LnZlcnRleF9hdHRy
aWJpNHY6IFBhc3NlZAotWyA1OiBQQVNTIF0gdmVydGV4X2FycmF5LnZlcnRleF9hdHRyaWJfcG9p
bnRlcjogUGFzc2VkCi1bIDY6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkudmVydGV4X2F0dHJpYl9pX3Bv
aW50ZXI6IFBhc3NlZAotWyA3OiBQQVNTIF0gdmVydGV4X2FycmF5LmVuYWJsZV92ZXJ0ZXhfYXR0
cmliX2FycmF5OiBQYXNzZWQKLVsgODogUEFTUyBdIHZlcnRleF9hcnJheS5kaXNhYmxlX3ZlcnRl
eF9hdHRyaWJfYXJyYXk6IFBhc3NlZAotWyA5OiBQQVNTIF0gdmVydGV4X2FycmF5LnZlcnRleF9h
dHRyaWJfZGl2aXNvcjogUGFzc2VkCi1bIDEwOiBQQVNTIF0gdmVydGV4X2FycmF5LmRyYXdfYXJy
YXlzOiBQYXNzZWQKLVsgMTE6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkuZHJhd19hcnJheXNfaW52YWxp
ZF9wcm9ncmFtOiBQYXNzZWQKLVsgMTI6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkuZHJhd19hcnJheXNf
aW5jb21wbGV0ZV9wcmltaXRpdmU6IFBhc3NlZAotWyAxMzogUEFTUyBdIHZlcnRleF9hcnJheS5k
cmF3X2VsZW1lbnRzOiBQYXNzZWQKLVsgMTQ6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkuZHJhd19lbGVt
ZW50c19pbnZhbGlkX3Byb2dyYW06IFBhc3NlZAotWyAxNTogUEFTUyBdIHZlcnRleF9hcnJheS5k
cmF3X2VsZW1lbnRzX2luY29tcGxldGVfcHJpbWl0aXZlOiBQYXNzZWQKLVsgMTY6IFBBU1MgXSB2
ZXJ0ZXhfYXJyYXkuZHJhd19hcnJheXNfaW5zdGFuY2VkOiBQYXNzZWQKLVsgMTc6IFBBU1MgXSB2
ZXJ0ZXhfYXJyYXkuZHJhd19hcnJheXNfaW5zdGFuY2VkX2ludmFsaWRfcHJvZ3JhbTogUGFzc2Vk
Ci1bIDE4OiBQQVNTIF0gdmVydGV4X2FycmF5LmRyYXdfYXJyYXlzX2luc3RhbmNlZF9pbmNvbXBs
ZXRlX3ByaW1pdGl2ZTogUGFzc2VkCi1bIDE5OiBGQUlMIF0gdmVydGV4X2FycmF5LmRyYXdfZWxl
bWVudHNfaW5zdGFuY2VkOiBFeHBlY3RlZCBnbC5JTlZBTElEX1ZBTFVFLCBidXQgZ290IGdsLk5P
X0VSUk9SLgotWyAyMDogUEFTUyBdIHZlcnRleF9hcnJheS5kcmF3X2VsZW1lbnRzX2luc3RhbmNl
ZF9pbnZhbGlkX3Byb2dyYW06IFBhc3NlZAotWyAyMTogRkFJTCBdIHZlcnRleF9hcnJheS5kcmF3
X2VsZW1lbnRzX2luc3RhbmNlZF9pbmNvbXBsZXRlX3ByaW1pdGl2ZTogRXhwZWN0ZWQgZ2wuSU5W
QUxJRF9WQUxVRSwgYnV0IGdvdCBnbC5OT19FUlJPUi4KLVsgMjI6IFBBU1MgXSB2ZXJ0ZXhfYXJy
YXkuZHJhd19yYW5nZV9lbGVtZW50czogUGFzc2VkCi1bIDIzOiBQQVNTIF0gdmVydGV4X2FycmF5
LmRyYXdfcmFuZ2VfZWxlbWVudHNfaW52YWxpZF9wcm9ncmFtOiBQYXNzZWQKLVsgMjQ6IFBBU1Mg
XSB2ZXJ0ZXhfYXJyYXkuZHJhd19yYW5nZV9lbGVtZW50c19pbmNvbXBsZXRlX3ByaW1pdGl2ZTog
UGFzc2VkCi1bIDI1OiBQQVNTIF0gdmVydGV4X2FycmF5LmRyYXdfcmFuZ2VfZWxlbWVudHNfaW5j
b21wbGV0ZV9wcmltaXRpdmU6IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi1bIEZBSUwgXSAy
IGZhaWx1cmVzIHJlcG9ydGVkCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyc3Rh
dGVxdWVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVyc3RhdGVxdWVyeS1leHBlY3RlZC50eHQKaW5kZXggYWYwNDdlMDQw
NDIxODcwNmNmMTliZjdiMWZjYzFhMmY5ZWMyN2E4YS4uZGZkMWRlYjIxMjJhZDk2NjEzNjJjODFl
ODEwYWFkOTM3MGMyZGQzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvZGVx
cC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnN0YXRlcXVlcnktZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9zaGFkZXJzdGF0ZXF1
ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMSw1MSArMSw0IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2Vi
R0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJ
TC4KIAogVGVzdDogLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5j
dGlvbmFsL2dsZXMzL3NoYWRlcnN0YXRlcXVlcnkuaHRtbAotCi1bIDE6IFBBU1MgXSBzaGFkZXIu
c2hhZGVyX3R5cGU6IFBhc3NlZAotWyAyOiBQQVNTIF0gc2hhZGVyLnNoYWRlcl9jb21waWxlX3N0
YXR1czogUGFzc2VkCi1bIDM6IFBBU1MgXSBzaGFkZXIuc2hhZGVyX2luZm9fbG9nOiBQYXNzZWQK
LVsgNDogUEFTUyBdIHNoYWRlci5zaGFkZXJfc291cmNlOiBQYXNzZWQKLVsgNTogRkFJTCBdIHNo
YWRlci5kZWxldGVfc3RhdHVzOgotWyA2OiBQQVNTIF0gc2hhZGVyLmN1cnJlbnRfdmVydGV4X2F0
dHJpYl9pbml0aWFsOiBQYXNzZWQKLVsgNzogUEFTUyBdIHNoYWRlci5jdXJyZW50X3ZlcnRleF9h
dHRyaWJfZmxvYXQ6IFBhc3NlZAotWyA4OiBQQVNTIF0gc2hhZGVyLmN1cnJlbnRfdmVydGV4X2F0
dHJpYl9pbnQ6IFBhc3NlZAotWyA5OiBQQVNTIF0gc2hhZGVyLmN1cnJlbnRfdmVydGV4X2F0dHJp
Yl91aW50OiBQYXNzZWQKLVsgMTA6IFBBU1MgXSBzaGFkZXIucHJvZ3JhbV9pbmZvX2xvZzogUGFz
c2VkCi1bIDExOiBQQVNTIF0gc2hhZGVyLnByb2dyYW1fdmFsaWRhdGVfc3RhdHVzOiBQYXNzZWQK
LVsgMTI6IFBBU1MgXSBzaGFkZXIucHJvZ3JhbV9hdHRhY2hlZF9zaGFkZXJzOiBQYXNzZWQKLVsg
MTM6IFBBU1MgXSBzaGFkZXIucHJvZ3JhbV9hY3RpdmVfdW5pZm9ybV9uYW1lOiBQYXNzZWQKLVsg
MTQ6IFBBU1MgXSBzaGFkZXIucHJvZ3JhbV9hY3RpdmVfdW5pZm9ybV90eXBlczogUGFzc2VkCi1b
IDE1OiBGQUlMIF0gc2hhZGVyLnByb2dyYW1fYWN0aXZlX3VuaWZvcm1fYmxvY2tzOiBFeHBlY3Rl
ZCB7IDEsIDJ9OyBnb3QgezEsIDJ9Ci1bIDE2OiBQQVNTIF0gc2hhZGVyLnRyYW5zZm9ybV9mZWVk
YmFjazogUGFzc2VkCi1bIDE3OiBQQVNTIF0gc2hhZGVyLmFjdGl2ZV9hdHRyaWJ1dGVzOiBQYXNz
ZWQKLVsgMTg6IFBBU1MgXSBzaGFkZXIudmVydGV4X2F0dHJpYl9zaXplOiBQYXNzZWQKLVsgMTk6
IEZBSUwgXSBzaGFkZXIudmVydGV4X2F0dHJpYl90eXBlOgotWyAyMDogRkFJTCBdIHNoYWRlci52
ZXJ0ZXhfYXR0cmliX3N0cmlkZToKLVsgMjE6IEZBSUwgXSBzaGFkZXIudmVydGV4X2F0dHJpYl9u
b3JtYWxpemVkOgotWyAyMjogRkFJTCBdIHNoYWRlci52ZXJ0ZXhfYXR0cmliX2ludGVnZXI6Ci1b
IDIzOiBQQVNTIF0gc2hhZGVyLnZlcnRleF9hdHRyaWJfYXJyYXlfZW5hYmxlZDogUGFzc2VkCi1b
IDI0OiBQQVNTIF0gc2hhZGVyLnZlcnRleF9hdHRyaWJfYXJyYXlfZGl2aXNvcjogUGFzc2VkCi1b
IDI1OiBQQVNTIF0gc2hhZGVyLnZlcnRleF9hdHRyaWJfYXJyYXlfYnVmZmVyX2JpbmRpbmc6IFBh
c3NlZAotWyAyNjogUEFTUyBdIHNoYWRlci52ZXJ0ZXhfYXR0cmliX29mZnNldDogUGFzc2VkCi1b
IDI3OiBQQVNTIF0gc2hhZGVyLnVuaWZvcm1fdmFsdWVfZmxvYXQ6IFBhc3NlZAotWyAyODogUEFT
UyBdIHNoYWRlci51bmlmb3JtX3ZhbHVlX2ludDogUGFzc2VkCi1bIDI5OiBQQVNTIF0gc2hhZGVy
LnVuaWZvcm1fdmFsdWVfdWludDogUGFzc2VkCi1bIDMwOiBQQVNTIF0gc2hhZGVyLnVuaWZvcm1f
dmFsdWVfYm9vbGVhbjogUGFzc2VkCi1bIDMxOiBQQVNTIF0gc2hhZGVyLnVuaWZvcm1fdmFsdWVf
c2FtcGxlcjogUGFzc2VkCi1bIDMyOiBQQVNTIF0gc2hhZGVyLnVuaWZvcm1fdmFsdWVfYXJyYXk6
IFBhc3NlZAotWyAzMzogUEFTUyBdIHNoYWRlci51bmlmb3JtX3ZhbHVlX21hdHJpeDogUGFzc2Vk
Ci1bIDM0OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92ZXJ0ZXhfbG93cF9mbG9hdDogUGFzc2Vk
Ci1bIDM1OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92ZXJ0ZXhfbWVkaXVtcF9mbG9hdDogUGFz
c2VkCi1bIDM2OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92ZXJ0ZXhfaGlnaHBfZmxvYXQ6IFBh
c3NlZAotWyAzNzogUEFTUyBdIHNoYWRlci5wcmVjaXNpb25fdmVydGV4X2xvd3BfaW50OiBQYXNz
ZWQKLVsgMzg6IFBBU1MgXSBzaGFkZXIucHJlY2lzaW9uX3ZlcnRleF9tZWRpdW1wX2ludDogUGFz
c2VkCi1bIDM5OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92ZXJ0ZXhfaGlnaHBfaW50OiBQYXNz
ZWQKLVsgNDA6IFBBU1MgXSBzaGFkZXIucHJlY2lzaW9uX2ZyYWdtZW50X2xvd3BfZmxvYXQ6IFBh
c3NlZAotWyA0MTogUEFTUyBdIHNoYWRlci5wcmVjaXNpb25fZnJhZ21lbnRfbWVkaXVtcF9mbG9h
dDogUGFzc2VkCi1bIDQyOiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl9mcmFnbWVudF9oaWdocF9m
bG9hdDogUGFzc2VkCi1bIDQzOiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl9mcmFnbWVudF9sb3dw
X2ludDogUGFzc2VkCi1bIDQ0OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl9mcmFnbWVudF9tZWRp
dW1wX2ludDogUGFzc2VkCi1bIDQ1OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl9mcmFnbWVudF9o
aWdocF9pbnQ6IFBhc3NlZAotWyA0NjogUEFTUyBdIHNoYWRlci5wcmVjaXNpb25fZnJhZ21lbnRf
aGlnaHBfaW50OiBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotWyBGQUlMIF0gNiBmYWlsdXJl
cyByZXBvcnRlZAorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3NlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417503</attachid>
            <date>2021-01-12 18:01:12 -0800</date>
            <delta_ts>2021-01-13 10:56:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220372-20210112180111.patch</filename>
            <type>text/plain</type>
            <size>98213</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggM2JjZGNhMGYxMmE1ZjdiNjQzMGJhOTU5NjRmYzgzOWQ0ODgyNTY0NS4uMzZiYjkxMDExNDk4
YzFkZjQ1MDk2YjllNTVmMDYyMzFkMGFhZmUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAxLTEyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtXZWJHTDJdIGZib3N0YXRlcXVlcnksIG5lZ2F0aXZlYnVm
ZmVyYXBpLCBuZWdhdGl2ZXZlcnRleGFycmF5YXBpLCBzaGFkZXJzdGF0ZXF1ZXJ5IGNvbmZvcm1h
bmNlIGZhaWx1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjAzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBuZWVkZWQgZWFybHktb3V0IGluIGRyYXdBcnJheXNJbnN0YW5jZWQgdmFsaWRh
dGlvbiB3aGVuIHRoZQorICAgICAgICBwcmltaXRpdmUgY291bnQgaXMgemVyby4gVGhpcyBwYXRj
aCB3aWxsIGJlIHVwc3RyZWFtZWQgdG8gQU5HTEUKKyAgICAgICAgYWZ0ZXJ3YXJkLgorCisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
RHJhd0FycmF5c0F0dHJpYnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0FycmF5c0NvbW1v
bik6CisKIDIwMjEtMDEtMDggIEt5bGUgUGlkZGluZ3RvbiAgPGtwaWRkaW5ndG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBGYWlsdXJlcyBvZiBhdHRyaWJ1dGUgbG9jYXRpb24gY29uZm9ybWFuY2Ug
dGVzdHMgd2l0aCBNZXRhbCBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk0ZmRmMTBiODUxNDQwZWQ3
YWNmOGU5ZmIxZTJhYTgwMzZkMzkwZS4uMDQ0YmQzMTAyNTM1YTMxOTg1MzEyMjdjYjc0MzJjYmEw
NWNhY2Q5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0wMS0xMiAgS2VubmV0
aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViR0wyXSBmYm9zdGF0
ZXF1ZXJ5LCBuZWdhdGl2ZWJ1ZmZlcmFwaSwgbmVnYXRpdmV2ZXJ0ZXhhcnJheWFwaSwgc2hhZGVy
c3RhdGVxdWVyeSBjb25mb3JtYW5jZSBmYWlsdXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHZhbGlkYXRpb24gb2YgcHJvZ3JhbSBhbmQgc2hh
ZGVyIG9iamVjdHMgdG8gYWRkcmVzcworICAgICAgICBjb25mb3JtYW5jZSB0ZXN0IGZhaWx1cmVz
LiBVbmlmeSBhbmQgY2xlYW4gdXAgdmFsaWRhdGlvbiBvZiBzb21lCisgICAgICAgIG90aGVyIG9i
amVjdCB0eXBlcy4KKworICAgICAgICBGaXggYnVncyBpbiBxdWVyaWVzIG9mIGZyYW1lYnVmZmVy
IGF0dGFjaG1lbnRzIGFuZCBpbnRlZ2VyIHZlcnRleAorICAgICAgICBhdHRyaWJ1dGVzLgorCisg
ICAgICAgIFJlbW92ZSBhbiBvbGQgbWFjT1Mgd29ya2Fyb3VuZCBmcm9tIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEUgd2hpY2gKKyAgICAgICAgd2FzIGNhdXNpbmcgdGVzdCBmYWlsdXJlcyBvZiBtYXhp
bXVtIHJlbmRlcmJ1ZmZlciBzaXplcy4KKworICAgICAgICBHZW5lcmF0ZSB0ZXN0cycgZXhwZWN0
ZWQgT3BlbkdMIGVycm9ycyBmb3IgYSBmZXcgQVBJcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIFdlYkdMIDIuMCBjb25mb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y29weUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNRdWVyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzU2FtcGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1N5bmMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlU3luYyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp3YWl0U3luYyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTeW5jUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omlz
VHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnNldEluZGV4ZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldFVuaWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1CbG9ja0JpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTE9iamVjdDo6ZGVsZXRlT2JqZWN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YXR0YWNo
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJp
bmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFj
aFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZVdlYkdMT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1JbmZvTG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlckluZm9M
b2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hh
ZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1NoYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1RleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dyYW1XaXRob3V0SW52YWxp
ZGF0aW5nQXR0cmliTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNoZWNrT2JqZWN0VG9CZUJvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2U6OnNldFZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KToKKwogMjAyMS0wMS0x
MSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFJlY2VpdmluZyB0
d28gZW50ZXIvZXhpdCBmdWxsc2NyZWVuIGRlbGVnYXRlIGNhbGxiYWNrcyBvbiBpUGFkIHdoZW4g
cHJlc2VudGluZyBmdWxsc2NyZWVuIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgKaW5kZXggZjRmZWVkYzQ3NzdhYzYw
YjA5MDFkMGU5NjQ2YjdmMzk5MTI0NzIzMi4uYjRmZTk0YTAyZTFiMmM3OTMwOWZlNjYwNDkxZGM3
ZjY5MWJmNWQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FUy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uRVMuaApAQCAtNzkxLDcgKzc5MSw3IEBAIEFOR0xFX0lOTElORSBib29s
IFZhbGlkYXRlRHJhd0F0dHJpYnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgaW50NjRfdCBtYXhW
ZXJ0ZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUFOR0xFX0lOTElORSBib29sIFZhbGlkYXRl
RHJhd0FycmF5c0F0dHJpYnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgZmlyc3QsIEdM
c2l6ZWkgY291bnQpCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNBdHRyaWJz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNp
emVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmlzQnVmZmVyQWNjZXNzVmFsaWRh
dGlvbkVuYWJsZWQoKSkKICAgICB7CkBAIC04MTEsNiArODExLDEyIEBAIEFOR0xFX0lOTElORSBi
b29sIFZhbGlkYXRlRHJhd0FycmF5c0F0dHJpYnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgZmlyc3QsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAocHJpbWNv
dW50ID09IDApCisgICAgeworICAgICAgICAvLyBTa2lwIHRoZSBzcGVjaWZpYyB2YWxpZGF0aW9u
IG9mIHRoZSBub24taW5zdGFuY2VkIHZlcnRleCBlbGVtZW50IGxpbWl0LgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3QXR0cmlicyhjb250ZXh0
LCBtYXhWZXJ0ZXgpOwogfQogCkBAIC04NzAsNyArODc2LDcgQEAgQU5HTEVfSU5MSU5FIGJvb2wg
VmFsaWRhdGVEcmF3QXJyYXlzQ29tbW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gVmFsaWRhdGVEcmF3QXJyYXlzQXR0cmlicyhjb250ZXh0
LCBmaXJzdCwgY291bnQpOworICAgIHJldHVybiBWYWxpZGF0ZURyYXdBcnJheXNBdHRyaWJzKGNv
bnRleHQsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAogQU5HTEVfSU5MSU5FIGJvb2wg
VmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDhlZGMyOGIwYThkMzZlNDI0NTkxYjUyNjRhZjY5YWZmODg4ZjYwYzYuLmIyNjc4NWM3
YTM2YjU4ODQyM2E0NzMzMTFmYzYwM2ZiNTIxNTQ5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01ODEsNyAr
NTgxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb3B5QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cmkKICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+
IHJlYWRCdWZmZXIgPSB2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKCJjb3B5QnVmZmVyU3Vi
RGF0YSIsIHJlYWRUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7CiAgICAg
UmVmUHRyPFdlYkdMQnVmZmVyPiB3cml0ZUJ1ZmZlciA9IHZhbGlkYXRlQnVmZmVyRGF0YVBhcmFt
ZXRlcnMoImNvcHlCdWZmZXJTdWJEYXRhIiwgd3JpdGVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdM
OjpTVEFUSUNfRFJBVyk7CiAgICAgaWYgKCFyZWFkQnVmZmVyIHx8ICF3cml0ZUJ1ZmZlcikgewot
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgImNvcHlCdWZmZXJTdWJEYXRhIiwgIkludmFsaWQgcmVhZFRhcmdldCBvciB3cml0ZVRhcmdl
dCIpOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9PUEVSQVRJT04sICJjb3B5QnVmZmVyU3ViRGF0YSIsICJJbnZhbGlkIHJlYWRUYXJnZXQgb3Ig
d3JpdGVUYXJnZXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjg5LDcgKzY4OSw3
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlcioKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJp
bmRGcmFtZWJ1ZmZlciIsIGJ1ZmZlcikpCisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xP
YmplY3QoImJpbmRGcmFtZWJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHN3aXRjaCAodGFyZ2V0KSB7CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZQogCiBHQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdEYXRhTG9j
YXRpb24oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNo
YWRlcigiZ2V0RnJhZ0RhdGFMb2NhdGlvbiIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRl
V2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEZyYWdEYXRhTG9jYXRpb24iLCAmcHJvZ3JhbSkpCiAg
ICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0
aW9uKHByb2dyYW0ub2JqZWN0KCksIG5hbWUpOwogfQpAQCAtMTcwNCw5ICsxNzA0LDU3IEBAIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5k
ZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVy
dGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludDY0IG9mZnNldCkKIHsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKwogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkJZVEU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6VU5TSUdORURfQllURToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSE9SVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9TSE9SVDoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGTE9BVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpJTlQ6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOgorICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9FTlVNLCAidmVydGV4QXR0cmliSVBvaW50ZXIiLCAiaW52YWxpZCB0eXBl
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGluZGV4ID49IG1fbWF4VmVydGV4
QXR0cmlicykgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9WQUxVRSwgInZlcnRleEF0dHJpYklQb2ludGVyIiwgImluZGV4IG91dCBvZiByYW5n
ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzaXplIDwgMSB8fCBzaXplID4g
NCkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRSwgInZlcnRleEF0dHJpYklQb2ludGVyIiwgImJhZCBzaXplIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKHN0cmlkZSA8IDAgfHwgc3RyaWRlID4gMjU1KSB7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAi
dmVydGV4QXR0cmliSVBvaW50ZXIiLCAiYmFkIHN0cmlkZSIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidmVydGV4QXR0cmliSVBvaW50ZXIiLCAiYmFkIG9mZnNl
dCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghbV9ib3VuZEFycmF5QnVmZmVy
ICYmIG9mZnNldCkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9PUEVSQVRJT04sICJ2ZXJ0ZXhBdHRyaWJJUG9pbnRlciIsICJubyBib3VuZCBB
UlJBWV9CVUZGRVIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBEZXRlcm1pbmUg
dGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGUgYm91bmQgYnVmZmVyIGNhbiBob2xkLCBnaXZlbiB0
aGUgb2Zmc2V0LCBzaXplLCB0eXBlIGFuZCBzdHJpZGUuCisgICAgYXV0byB0eXBlU2l6ZSA9IHNp
emVJbkJ5dGVzKHR5cGUpOworICAgIGlmICghdHlwZVNpemUpIHsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInZlcnRleEF0dHJpYklQ
b2ludGVyIiwgImludmFsaWQgdHlwZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICgoc3RyaWRlICUgdHlwZVNpemUpIHx8IChzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQp
ICUgdHlwZVNpemUpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgInZlcnRleEF0dHJpYklQb2ludGVyIiwgInN0cmlkZSBv
ciBvZmZzZXQgbm90IHZhbGlkIGZvciB0eXBlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgR0NHTHNpemVpIGJ5dGVzUGVyRWxlbWVudCA9IHNpemUgKiB0eXBlU2l6ZTsKKworICAgIG1f
Ym91bmRWZXJ0ZXhBcnJheU9iamVjdC0+c2V0VmVydGV4QXR0cmliU3RhdGUobG9ja2VyLCBpbmRl
eCwgYnl0ZXNQZXJFbGVtZW50LCBzaXplLCB0eXBlLCBmYWxzZSwgc3RyaWRlLCBzdGF0aWNfY2Fz
dDxHQ0dMaW50cHRyPihvZmZzZXQpLCB0cnVlLCBtX2JvdW5kQXJyYXlCdWZmZXIuZ2V0KCkpOwog
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0
cmlkZSwgb2Zmc2V0KTsKIH0KIApAQCAtMTc0OCw5ICsxNzk2LDI0IEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZlcnMoY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVy
cykKICAgICAgICAgcmV0dXJuOwogICAgIEdDR0xzaXplaSBuID0gYnVmZmVycy5zaXplKCk7CiAg
ICAgY29uc3QgR0NHTGVudW0qIGJ1ZnMgPSBidWZmZXJzLmRhdGEoKTsKKyAgICBmb3IgKEdDR0xz
aXplaSBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBzd2l0Y2ggKGJ1ZnNbaV0pIHsKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORToKKyAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6QkFDSzoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1Jf
QVRUQUNITUVOVDA6CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGlmIChidWZzW2ldID4gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0FUVEFDSE1F
TlQwCisgICAgICAgICAgICAgICAgJiYgYnVmc1tpXSA8IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xP
Ul9BVFRBQ0hNRU5UMCArIGdldE1heENvbG9yQXR0YWNobWVudHMoKSkgeworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImRyYXdCdWZmZXJzIiwgImludmFs
aWQgYnVmZmVyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAg
aWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZykgewogICAgICAgICBpZiAobiAhPSAxKSB7Ci0gICAg
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgImRyYXdCdWZmZXJzIiwgIm1vcmUgdGhhbiBvbmUgYnVmZmVyIik7CisgICAgICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJk
cmF3QnVmZmVycyIsICJtb3JlIHRoYW4gb25lIGJ1ZmZlciIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIGlmIChidWZzWzBdICE9IEdyYXBoaWNzQ29udGV4dEdMOjpC
QUNLICYmIGJ1ZnNbMF0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUpIHsKQEAgLTE4NTMsOCAr
MTkxNiwxMiBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVF1ZXJ5KFdlYkdM
UXVlcnkqIHF1ZXJ5KQogCiBHQ0dMYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1F1
ZXJ5KFdlYkdMUXVlcnkqIHF1ZXJ5KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXF1ZXJ5IHx8ICFxdWVyeS0+b2JqZWN0KCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3Qo
ImlzUXVlcnkiLCBxdWVyeSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
cXVlcnkgfHwgIXF1ZXJ5LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocXVlcnktPmlzRGVsZXRlZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1F1ZXJ5KHF1ZXJ5LT5vYmpl
Y3QoKSk7CiB9CiAKQEAgLTE4NzQsNyArMTk0MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOwogCiAgICAgR0NHTGVu
dW0gdGFyZ2V0S2V5OwotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImJlZ2luUXVlcnkiLCAmcXVlcnkpIHx8ICF2YWxpZGF0ZVF1ZXJ5VGFy
Z2V0KCJiZWdpblF1ZXJ5IiwgdGFyZ2V0LCAmdGFyZ2V0S2V5KSkKKyAgICBpZiAoIXZhbGlkYXRl
V2ViR0xPYmplY3QoImJlZ2luUXVlcnkiLCAmcXVlcnkpIHx8ICF2YWxpZGF0ZVF1ZXJ5VGFyZ2V0
KCJiZWdpblF1ZXJ5IiwgdGFyZ2V0LCAmdGFyZ2V0S2V5KSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKHF1ZXJ5LnRhcmdldCgpICYmIHF1ZXJ5LnRhcmdldCgpICE9IHRhcmdldCkgewpAQCAt
MTkzNSw3ICsyMDAyLDcgQEAgUmVmUHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4KIAogV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYgcXVlcnks
IEdDR0xlbnVtIHBuYW1lKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFF1ZXJ5UGFyYW1ldGVyIiwgJnF1ZXJ5KSkKKyAgICBp
ZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFF1ZXJ5UGFyYW1ldGVyIiwgJnF1ZXJ5KSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHBuYW1lKSB7CkBAIC0xOTg1LDcg
KzIwNTIsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVNhbXBsZXIoV2Vi
R0xTYW1wbGVyKiBzYW1wbGVyKQogCiBHQ0dMYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojppc1NhbXBsZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVyKQogewotICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXNhbXBsZXIgfHwgc2FtcGxlci0+aXNEZWxldGVkKCkgfHwgIXZh
bGlkYXRlV2ViR0xPYmplY3QoImlzU2FtcGxlciIsIHNhbXBsZXIpKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXNhbXBsZXIgfHwgIXNhbXBsZXItPnZhbGlkYXRlKGNvbnRl
eHRHcm91cCgpLCAqdGhpcykgfHwgc2FtcGxlci0+aXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJldHVybiBtX2NvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyLT5vYmpl
Y3QoKSk7CkBAIC0yMDc0LDIxICsyMTQxLDI1IEBAIFJlZlB0cjxXZWJHTFN5bmM+IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmCiAK
IEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzU3luYyhXZWJHTFN5bmMqIHN5
bmMpCiB7Ci0gICAgcmV0dXJuICFpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgJiYgc3luYyAmJiAh
c3luYy0+aXNEZWxldGVkKCkgJiYgdmFsaWRhdGVXZWJHTE9iamVjdCgiaXNTeW5jIiwgc3luYyk7
CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhc3luYyB8fCAhc3luYy0+dmFs
aWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKHN5bmMtPmlzRGVsZXRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gISFzeW5jLT5vYmplY3QoKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpkZWxldGVTeW5jKFdlYkdMU3luYyogc3luYykKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG9iamVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXN5bmMgfHwgc3luYy0+aXNEZWxldGVkKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3Qo
ImRlbGV0ZVN5bmMiLCBzeW5jKSkKLSAgICAgICAgcmV0dXJuOwogICAgIGRlbGV0ZU9iamVjdChs
b2NrZXIsIHN5bmMpOwogfQogCiBHQ0dMZW51bSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGll
bnRXYWl0U3luYyhXZWJHTFN5bmMmIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2
NCB0aW1lb3V0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImNsaWVudFdhaXRTeW5jIiwgJnN5bmMpKQorICAgIGlmICghdmFsaWRh
dGVXZWJHTE9iamVjdCgiY2xpZW50V2FpdFN5bmMiLCAmc3luYykpCiAgICAgICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CiAKICAgICBpZiAodGltZW91dCA+
IE1heENsaWVudFdhaXRUaW1lb3V0KSB7CkBAIC0yMTExLDcgKzIxODIsNyBAQCBHQ0dMZW51bSBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGllbnRXYWl0U3luYyhXZWJHTFN5bmMmIHN5bmMsIEdD
R0xiaXRmaWVsZCBmbAogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OndhaXRTeW5jKFdl
YkdMU3luYyYgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0
KCJ3YWl0U3luYyIsICZzeW5jKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QoIndhaXRT
eW5jIiwgJnN5bmMpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZmxhZ3MpCkBAIC0yMTI0
LDcgKzIxOTUsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OndhaXRTeW5jKFdlYkdM
U3luYyYgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaQogCiBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRTeW5jUGFyYW1ldGVyKFdlYkdMU3luYyYgc3luYywgR0NHTGVu
dW0gcG5hbWUpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVXZWJHTE9iamVjdCgiZ2V0U3luY1BhcmFtZXRlciIsICZzeW5jKSkKKyAgICBpZiAoIXZhbGlk
YXRlV2ViR0xPYmplY3QoImdldFN5bmNQYXJhbWV0ZXIiLCAmc3luYykpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgc3dpdGNoIChwbmFtZSkgewpAQCAtMjE1NCwyNSArMjIyNSwzMiBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2sqIGZlZQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
b2JqZWN0R3JhcGhMb2NrKCkpOwogCi0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhZmVlZGJhY2tPYmplY3QgfHwgZmVlZGJhY2tPYmplY3QtPmlzRGVsZXRlZCgpIHx8ICF2YWxp
ZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAorICAgIC8vIFdlIGhhdmUgdG8gc2hvcnQtY2lyY3Vp
dCB0aGUgZGVsZXRpb24gcHJvY2VzcyBpZiB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIGlzCisgICAg
Ly8gYWN0aXZlLiBUaGlzIHJlcXVpcmVzIGR1cGxpY2F0aW9uIG9mIHNvbWUgdmFsaWRhdGlvbiBs
b2dpYy4KKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpICYmIGZlZWRiYWNrT2JqZWN0
ICYmIGZlZWRiYWNrT2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7Cisg
ICAgICAgIGlmIChmZWVkYmFja09iamVjdC0+aXNBY3RpdmUoKSkgeworICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2siLCAiYXR0ZW1wdCB0byBkZWxldGUgYW4gYWN0aXZlIHRyYW5z
Zm9ybSBmZWVkYmFjayBvYmplY3QiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIEFTU0VSVChmZWVkYmFja09iamVjdCAhPSBtX2RlZmF1bHRUcmFuc2Zvcm1G
ZWVkYmFjayk7Ci0gICAgCi0gICAgaWYgKGZlZWRiYWNrT2JqZWN0LT5pc0FjdGl2ZSgpKSB7Ci0g
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJB
VElPTiwgImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgImF0dGVtcHQgdG8gZGVsZXRlIGFuIGFj
dGl2ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0Iik7CisKKyAgICBpZiAoIWRlbGV0ZU9iamVj
dChsb2NrZXIsIGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAg
IGlmIChtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2sgPT0gZmVlZGJhY2tPYmplY3QpCiAgICAgICAg
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IG1fZGVmYXVsdFRyYW5zZm9ybUZlZWRiYWNrOwot
Ci0gICAgZGVsZXRlT2JqZWN0KGxvY2tlciwgZmVlZGJhY2tPYmplY3QpOwogfQogCiBHQ0dMYm9v
bGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2sqIGZlZWRiYWNrT2JqZWN0KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIWZlZWRiYWNrT2JqZWN0IHx8IGZlZWRiYWNrT2JqZWN0LT5pc0RlbGV0
ZWQoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiaXNUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRi
YWNrT2JqZWN0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFmZWVkYmFj
a09iamVjdCB8fCAhZmVlZGJhY2tPYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhp
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZmVlZGJhY2tPYmplY3QtPmhh
c0V2ZXJCZWVuQm91bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChmZWVkYmFj
a09iamVjdC0+aXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVy
biBtX2NvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soZmVlZGJhY2tPYmplY3QtPm9iamVjdCgp
KTsKQEAgLTIxODIsMTkgKzIyNjAsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJp
bmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFdlYkdMVHJhbnNmbwogewogICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOwogCi0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9i
amVjdCgiYmluZFRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoZmVlZGJhY2tPYmplY3QpIHsKLSAgICAgICAgaWYgKGZlZWRiYWNr
T2JqZWN0LT5pc0RlbGV0ZWQoKSkgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiYmluZFRyYW5zZm9ybUZlZWRiYWNr
IiwgImNhbm5vdCBiaW5kIGEgZGVsZXRlZCBUcmFuc2Zvcm0gRmVlZGJhY2sgb2JqZWN0Iik7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXZhbGlkYXRlV2Vi
R0xPYmplY3QoImJpbmRUcmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4
dEdMOjpUUkFOU0ZPUk1fRkVFREJBQ0spIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImJpbmRUcmFuc2Zvcm1GZWVkYmFjayIsICJ0
YXJnZXQgbXVzdCBiZSBUUkFOU0ZPUk1fRkVFREJBQ0siKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjIwNSw2ICsyMjczLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVHJhbnNm
b3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFRyYW5zZm8KICAgICB9CiAKICAgICBh
dXRvIHRvQmVCb3VuZCA9IGZlZWRiYWNrT2JqZWN0ID8gZmVlZGJhY2tPYmplY3QgOiBtX2RlZmF1
bHRUcmFuc2Zvcm1GZWVkYmFjay5nZXQoKTsKKyAgICB0b0JlQm91bmQtPnNldEhhc0V2ZXJCZWVu
Qm91bmQoKTsKICAgICBtX2NvbnRleHQtPmJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIHRv
QmVCb3VuZC0+b2JqZWN0KCkpOwogICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjayA9IHRvQmVC
b3VuZDsKIH0KQEAgLTIyNzQsNyArMjM0Myw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigidHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlk
YXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MiLCAmcHJv
Z3JhbSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2ggKGJ1ZmZlck1vZGUpIHsK
QEAgLTIyOTcsNyArMjM2Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvCiAKIFJlZlB0cjxX
ZWJHTEFjdGl2ZUluZm8+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIEdDR0x1aW50IGluZGV4KQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JT
aGFkZXIoImdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyIsICZwcm9ncmFtKSkKKyAgICBpZiAo
IXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
ZyIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwpAQCAtMjM1MCwxMCArMjQxOSw3IEBAIGJvb2wgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6c2V0SW5kZXhlZEJ1ZmZlckJpbmRpbmcoY29uc3QgY2hhciAq
ZnVuY3Rpb25OYW1lLCBHCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFw
aExvY2soKSk7CiAKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5kKGZ1bmN0aW9uTmFt
ZSwgYnVmZmVyKSkKKyAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdChmdW5jdGlv
bk5hbWUsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAodGFy
Z2V0KSB7CkBAIC0yNDQ1LDIxICsyNTExLDE0IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpCiAK
IE9wdGlvbmFsPFZlY3RvcjxHQ0dMdWludD4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFVu
aWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IG5hbWVzKQogewotI2lmIFVTRShBTkdMRSkKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRVbmlmb3JtSW5kaWNlcyIs
ICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFVu
aWZvcm1JbmRpY2VzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0ub2JqZWN0KCks
IG5hbWVzKTsKLSNlbHNlCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIGdl
dFVuaWZvcm1JbmRpY2VzKCkiKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5V
U0VEX1BBUkFNKG5hbWVzKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiB9CiAK
IFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMs
IEdDR0xlbnVtIHBuYW1lKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm1zIiwgJnByb2dy
YW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5p
Zm9ybXMiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgc3dpdGNo
IChwbmFtZSkgewpAQCAtMjQ4OCwyMiArMjU0NywxNCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0
CiAKIEdDR0x1aW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1CbG9ja0luZGV4
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQog
ewotI2lmIFVTRShBTkdMRSkKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRVbmlmb3JtQmxvY2tJbmRleCIsICZwcm9n
cmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFVuaWZvcm1C
bG9ja0luZGV4IiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtQmxv
Y2tOYW1lKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9Q
QVJBTSh1bmlmb3JtQmxvY2tOYW1lKTsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5U
RUQgXV0gZ2V0VW5pZm9ybUJsb2NrSW5kZXgoKSIpOwotICAgIHJldHVybiAwOwotI2VuZGlmCiB9
CiAKIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9j
a1BhcmFtZXRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKLSNpZiBVU0UoQU5HTEUpCi0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0
aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgJnByb2dyYW0pKQorICAgIGlmICghdmFsaWRhdGVX
ZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgJnBy
b2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19CSU5ESU5HOgpAQCAtMjUx
NCw3ICsyNTY1LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYgcHIKICAgICAgICAgR0NHTGludCBz
aXplID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpKHByb2dyYW0ub2JqZWN0KCks
IHVuaWZvcm1CbG9ja0luZGV4LCBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19BQ1RJ
VkVfVU5JRk9STVMpOwogICAgICAgICBWZWN0b3I8R0NHTGludD4gcGFyYW1zKHNpemUsIDApOwog
ICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgcmV0dXJuIHBh
cmFtcy5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0p
OworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0
PEdDR0x1aW50Kj4ocGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXplKCkpOwogICAgIH0KICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVY
X1NIQURFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JMT0NLX1JFRkVS
RU5DRURfQllfRlJBR01FTlRfU0hBREVSOgpAQCAtMjUyMywxOSArMjU3NCwxMSBAQCBXZWJHTEFu
eSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIo
V2ViR0xQcm9ncmFtJiBwcgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZv
cm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIExPRyhXZWJHTCwg
IltbIE5PVCBJTVBMRU1FTlRFRCBdXSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIoKSIp
OwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCiB9CiAKIFdlYkdMQW55IFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoV2ViR0xQcm9ncmFtJiBwcm9n
cmFtLCBHQ0dMdWludCBpbmRleCkKIHsKLSNpZiBVU0UoQU5HTEUpCi0gICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZSIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUiLCAmcHJvZ3JhbSkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoIXByb2dyYW0uZ2V0TGlua1N0YXR1cygp
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTiwgImdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUiLCAicHJvZ3JhbSBub3QgbGlu
a2VkIik7CkBAIC0yNTQ1LDI2ICsyNTg4LDEzIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoV2ViR0xQcm9ncmFtJiBwcm9ncmFtCiAg
ICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biBuYW1lOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGluZGV4KTsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gZ2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZSgpIik7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKIH0K
IAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0JpbmRpbmcpCiB7Ci0jaWYgVVNFKEFOR0xFKQotICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInVuaWZvcm1C
bG9ja0JpbmRpbmciLCAmcHJvZ3JhbSkpCisgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9y
U2hhZGVyKCJ1bmlmb3JtQmxvY2tCaW5kaW5nIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0ub2JqZWN0KCksIHVu
aWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRleCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0JpbmRpbmcpOwotICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtQmxvY2tCaW5kaW5nKCkiKTsKLSNlbmRpZgogfQog
CiBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlVmVydGV4QXJyYXkoKQpAQCAtMjU4MSwyMSArMjYxMSwyNCBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3Qq
IGFycmF5T2JqZQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2Nr
KCkpOwogCisgICAgLy8gdmFsaWRhdGVXZWJHTE9iamVjdCBnZW5lcmF0ZXMgYW4gZXJyb3IgaWYg
dGhlIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuCisgICAgLy8gZGVsZXRlZCwgc28gd2UgbXVzdCBy
ZXBsaWNhdGUgbW9zdCBvZiBpdHMgY2hlY2tzIGhlcmUuCiAgICAgaWYgKCFhcnJheU9iamVjdCB8
fCBpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghYXJyYXlPYmpl
Y3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhpcykpIHsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVsZXRlVmVy
dGV4QXJyYXkiLCAib2JqZWN0IGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIGNvbnRleHQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghYXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVj
dCgpICYmIGFycmF5T2JqZWN0ID09IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkgewotI2lmIFVT
RShPUEVOR0xfRVMpCi0gICAgICAgIHNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QobG9ja2VyLCBu
dWxscHRyKTsKLSNlbHNlCiAgICAgICAgIC8vIGJpbmRWZXJ0ZXhBcnJheSBncmFicyB0aGUgbG9j
ayBpbnRlcm5hbGx5LgogICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKICAgICAgICAgYmlu
ZFZlcnRleEFycmF5KG51bGxwdHIpOyAvLyBUaGUgZGVmYXVsdCBWQU8gd2FzIHJlbW92ZWQgaW4g
T3BlbkdMIDMuMyBidXQgbm90IGZyb20gV2ViR0wgMjsgYmluZCB0aGUgZGVmYXVsdCBmb3IgV2Vi
R0wgdG8gdXNlLgogICAgICAgICBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
Ci0jZW5kaWYKICAgICB9CiAKICAgICBhcnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KGxvY2tlciwg
Z3JhcGhpY3NDb250ZXh0R0woKSk7CkBAIC0yNjAzLDEwICsyNjM2LDEyIEBAIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dCogYXJyYXlPYmplCiAKIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzVmVy
dGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplY3QpCiB7Ci0gICAgaWYg
KCFhcnJheU9iamVjdCB8fCBpc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCFhcnJheU9iamVjdCB8
fCBpc0NvbnRleHRMb3N0KCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCAqdGhpcykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVu
Qm91bmQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKDAsICp0aGlzKSkKKyAgICBpZiAoIWFy
cmF5T2JqZWN0LT5oYXNFdmVyQmVlbkJvdW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoYXJyYXlPYmplY3QtPmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFycmF5T2JqZWN0LT5vYmplY3Qo
KSk7CkBAIC0yNjE2LDEzICsyNjUxLDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplY3QKIHsKICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlmIChp
c0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJp
bmRWZXJ0ZXhBcnJheSIsIGFycmF5T2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGFycmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0
LT52YWxpZGF0ZSgwLCAqdGhpcykgfHwgIW1fY29udGV4dE9iamVjdHMuY29udGFpbnMoYXJyYXlP
YmplY3QpKSkgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAg
ICAgaWYgKGFycmF5T2JqZWN0ICYmICFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYg
YXJyYXlPYmplY3QtPm9iamVjdCgpKSB7CiAgICAgICAgIG1fY29udGV4dC0+YmluZFZlcnRleEFy
cmF5KGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CiAKQEAgLTI3NDcsMTggKzI3NzgsNDggQEAgV2Vi
R0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICBhdXRvIHRhcmdldEZyYW1lYnVmZmVyID0gKHRhcmdl
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUikgPyBtX3JlYWRGcmFtZWJ1
ZmZlckJpbmRpbmcgOiBtX2ZyYW1lYnVmZmVyQmluZGluZzsKIAogICAgIGlmICghdGFyZ2V0RnJh
bWVidWZmZXIpIHsKLSAgICAgICAgLy8gT3BlbkdMIEVTIDM6IERlZmF1bHQgZnJhbWVidWZmZXIg
aXMgYm91bmQuCiAgICAgICAgIGlmICghdmFsaWRhdGVEZWZhdWx0RnJhbWVidWZmZXJBdHRhY2ht
ZW50KGF0dGFjaG1lbnQpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGF0dGFjaG1l
bnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSk7CisKKyAgICAgICAgLy8gV2UgY2FuIGxvb2sgZGlyZWN0bHkg
YXQgbV9hdHRyaWJ1dGVzIGJlY2F1c2UgaW4gV2ViR0wgMiwKKyAgICAgICAgLy8gdGhleSBhcmUg
cmVxdWlyZWQgdG8gYmUgaG9ub3JlZC4KKyAgICAgICAgYm9vbCBoYXNEZXB0aCA9IG1fYXR0cmli
dXRlcy5kZXB0aDsKKyAgICAgICAgYm9vbCBoYXNTdGVuY2lsID0gbV9hdHRyaWJ1dGVzLnN0ZW5j
aWw7CisgICAgICAgIGJvb2wgbWlzc2luZ0ltYWdlID0gKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OkRFUFRIICYmICFoYXNEZXB0aCkgfHwgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlNURU5DSUwgJiYgIWhhc1N0ZW5jaWwpOworICAgICAgICBpZiAobWlzc2luZ0lt
YWdlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgorICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0
R0w6Ok5PTkUpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9u
TmFtZSwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9PQkpFQ1RfVFlQRToKKyAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6
RlJBTUVCVUZGRVJfREVGQVVMVDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBh
dHRhY2htZW50LCBwbmFtZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZU5v
bkRlZmF1bHRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoZnVuY3Rpb25OYW1lLCBhdHRhY2htZW50KSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIG9iamVjdCA9IG1ha2VSZWZQdHIo
dGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNobWVudCkpOwotICAg
IGlmICghb2JqZWN0KSB7CisgICAgUmVmUHRyPFdlYkdMU2hhcmVkT2JqZWN0PiBhdHRhY2htZW50
T2JqZWN0OworICAgIGlmIChhdHRhY2htZW50ID09IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQpIHsKKyAgICAgICAgYXR0YWNobWVudE9iamVjdCA9IG1ha2VSZWZQ
dHIodGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoR3JhcGhpY3NDb250ZXh0
R0w6OkRFUFRIX0FUVEFDSE1FTlQpKTsKKyAgICAgICAgYXV0byBzdGVuY2lsQXR0YWNobWVudCA9
IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoR3JhcGhp
Y3NDb250ZXh0R0w6OlNURU5DSUxfQVRUQUNITUVOVCkpOworICAgICAgICBpZiAoYXR0YWNobWVu
dE9iamVjdCAhPSBzdGVuY2lsQXR0YWNobWVudCkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUs
ICJkaWZmZXJlbnQgb2JqZWN0cyBib3VuZCB0byBERVBUSF9BVFRBQ0hNRU5UIGFuZCBTVEVOQ0lM
X0FUVEFDSE1FTlQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisg
ICAgfSBlbHNlCisgICAgICAgIGF0dGFjaG1lbnRPYmplY3QgPSBtYWtlUmVmUHRyKHRhcmdldEZy
YW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KGF0dGFjaG1lbnQpKTsKKworICAgIGlmICgh
YXR0YWNobWVudE9iamVjdCkgewogICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpCiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpOT05FKTsKICAgICAg
ICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9OQU1FKQpAQCAtMjc2OCw1MyArMjgyOSwzOCBAQCBXZWJHTEFueSBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0g
dGFyZwogICAgIH0KIAogICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgorICAgICAgICBpZiAo
YXR0YWNobWVudE9iamVjdC0+aXNUZXh0dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVS
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FOgorICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+aXNUZXh0dXJlKCkpCisg
ICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVy
ZSY+KCphdHRhY2htZW50T2JqZWN0KSk7CisgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXImPigqYXR0YWNobWVudE9iamVjdCkpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9D
VUJFX01BUF9GQUNFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MQVlFUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CisgICAgICAgIGlmICghYXR0YWNobWVu
dE9iamVjdC0+aXNUZXh0dXJlKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRkFMTFRI
Uk9VR0g7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9SRURfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0dSRUVOX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9CTFVFX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRToKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRToKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBF
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09M
T1JfRU5DT0RJTkc6CiAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7Ci0gICAgfQotCi0g
ICAgaWYgKG9iamVjdC0+aXNUZXh0dXJlKCkpIHsKLSAgICAgICAgc3dpdGNoIChwbmFtZSkgewot
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFOgotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRSk7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6Ci0gICAgICAgICAgICByZXR1cm4g
bWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVyZSY+KCpvYmplY3QpKTsKLSAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhU
VVJFX0xFVkVMOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzoKLSAgICAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCBmdW5j
dGlvbk5hbWUsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIGZvciB0ZXh0dXJlIGF0dGFjaG1lbnQi
KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKG9iamVjdC0+aXNSZW5kZXJidWZmZXIoKSk7Ci0gICAgICAgIHN3aXRj
aCAocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUik7Ci0gICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6Ci0g
ICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVy
YnVmZmVyJj4oKm9iamVjdCkpOwotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HIDogewotICAgICAgICAgICAgYXV0byYg
cmVuZGVyQnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJHTFJlbmRlcmJ1ZmZlciY+KCpvYmpl
Y3QpOwotICAgICAgICAgICAgYXV0byBmb3JtYXQgPSByZW5kZXJCdWZmZXIuZ2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICAgICAgICAgIGlmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNS
R0I4X0FMUEhBOAotICAgICAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TUkdCOF9FVEMyCi0gICAgICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQwotICAgICAg
ICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250
ZXh0R0w6OkxJTkVBUik7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0
aW9uTmFtZSwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHJlbmRlcmJ1ZmZlciBhdHRhY2ht
ZW50Iik7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9DT01QT05FTlRfVFlQRToKKyAgICAgICAgaWYgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3NDb250
ZXh0R0w6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkgeworICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5h
bWUsICJDT01QT05FTlRfVFlQRSBjYW4ndCBiZSBxdWVyaWVkIGZvciBERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CisgICAg
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmko
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7CiAgICAgfQorCisgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSBmb3IgYXR0YWNobWVudCIpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRnJhbWVidWZmZXJUYXJn
ZXQoR0NHTGVudW0gdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwCmluZGV4IDE5MTc4NmFiOTY4YmM3MDQ3NWMzY2ZjNDc0NGM3ZmQ5NjBlNzE1OTEuLmRi
MmI3MjVhYzFiMTNmNjkzZDhkNThiYzU2MTQ0YjdmOTBlNGMwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTY3LDE1ICs2Nyw3IEBAIHZvaWQgV2Vi
R0xPYmplY3Q6OmRlbGV0ZU9iamVjdChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFw
aGljc0NvbnRleHRHTCoKICAgICBpZiAoIWhhc0dyb3VwT3JDb250ZXh0KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIEFOR0xFIGNvcnJlY3RseSBoYW5kbGVzIG9iamVjdCBkZWxldGlvbiB3
aXRoIFdlYkdMIHNlbWFudGljcy4KLSAgICAvLyBGb3Igb3RoZXIgR0wgaW1wbGVtZW50YXRpb25z
LCBkZWxheSBkZWxldGlvbiB1bnRpbCB3ZSBrbm93Ci0gICAgLy8gdGhlIG9iamVjdCBpcyBub3Qg
YXR0YWNoZWQgYW55d2hlcmUuCi0jaWYgVVNFKEFOR0xFKQotICAgIGlmICghbV9jYWxsZWREZWxl
dGUpIHsKLSAgICAgICAgbV9jYWxsZWREZWxldGUgPSB0cnVlOwotI2Vsc2UKICAgICBpZiAoIW1f
YXR0YWNobWVudENvdW50KSB7Ci0jZW5kaWYKICAgICAgICAgaWYgKCFjb250ZXh0M2QpCiAgICAg
ICAgICAgICBjb250ZXh0M2QgPSBnZXRBR3JhcGhpY3NDb250ZXh0R0woKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKaW5kZXggY2FkNDc5Y2UyNzcxMGM4OTQxM2Vm
ZDlkYWRjNmNiYzM4M2RkMmVlMS4uMDBjZDhmMGMyYjdiMjFiYmY5NzJhZmE3Y2ZjNWVlODVlM2Uw
NjBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCkBAIC05NCw5
ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1HTE9iamVjdCBtX29iamVjdCB7IDAgfTsK
ICAgICB1bnNpZ25lZCBtX2F0dGFjaG1lbnRDb3VudCB7IDAgfTsKICAgICBib29sIG1fZGVsZXRl
ZCB7IGZhbHNlIH07Ci0jaWYgVVNFKEFOR0xFKQotICAgIGJvb2wgbV9jYWxsZWREZWxldGUgeyBm
YWxzZSB9OwotI2VuZGlmCiB9OwogCiBpbmxpbmUgUGxhdGZvcm1HTE9iamVjdCBvYmplY3RPclpl
cm8oV2ViR0xPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzFhODkzN2VlYzdm
YWZlYmVlZDVlNDAxZWMwODZkYmZmODRjNTlhOC4uOTQzOTYwNjA4NjEzMDkzOTA5NWNmMjI3Zjcx
OWRmMDE5NjdiMDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNDIsNyArMTM0Miw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YXR0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSYg
cHJvZ3JhbSwgV2ViR0xTaGFkZXImCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CiAKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJhdHRhY2hTaGFkZXIiLCAmcHJvZ3JhbSkgfHwg
IXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImF0dGFjaFNoYWRlciIsICZzaGFkZXIpKQor
ICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiYXR0YWNoU2hhZGVyIiwgJnBy
b2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJhdHRhY2hTaGFkZXIiLCAm
c2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghcHJvZ3JhbS5hdHRhY2hTaGFkZXIo
bG9ja2VyLCAmc2hhZGVyKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJhdHRhY2hTaGFkZXIiLCAic2hhZGVyIGF0dGFj
aG1lbnQgYWxyZWFkeSBoYXMgc2hhZGVyIik7CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0mIHByb2dy
YW0sIFdlYkdMU2hhZGVyJgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRB
dHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiYmluZEF0dHJpYkxvY2F0aW9uIiwgJnByb2dy
YW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiYmluZEF0dHJpYkxv
Y2F0aW9uIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCF2YWxpZGF0ZUxv
Y2F0aW9uTGVuZ3RoKCJiaW5kQXR0cmliTG9jYXRpb24iLCBuYW1lKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTM3MSwyMSArMTM3MSwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEdDR0x1aQogICAgIG1f
Y29udGV4dC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0ub2JqZWN0KCksIGluZGV4LCBuYW1l
KTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVC
b3VuZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFdlYkdMT2JqZWN0KiBvYmplY3QpCitib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdChj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFdlYkdMT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChvYmplY3QpIHsKLSAgICAgICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgp
LCAqdGhpcykpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAib2JqZWN0IG5vdCBmcm9tIHRo
aXMgY29udGV4dCIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICghb2JqZWN0LT5vYmplY3QoKSkgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJk
ZWxldGVkIG9iamVjdHMgY2Fubm90IGJlIGJvdW5kIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAvLyBUaGlzIGRpZmZl
cnMgaW4gYmVoYXZpb3IgdG8gVmFsaWRhdGVXZWJHTE9iamVjdDsgbnVsbCBvYmplY3RzIGFyZSBh
bGxvd2VkCisgICAgICAgIC8vIGluIHRoZXNlIGVudHJ5IHBvaW50cy4KKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB2YWxpZGF0ZVdlYkdM
T2JqZWN0KGZ1bmN0aW9uTmFtZSwgb2JqZWN0KTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUJ1ZmZlclRhcmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IEdDR0xlbnVtIHRhcmdldCkKQEAgLTE0NDcsNyArMTQ0Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBi
dWZmZXIpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
CiAKLSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJvdW5kKCJiaW5kQnVmZmVyIiwgYnVmZmVyKSkK
KyAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZEJ1ZmZlciIsIGJ1ZmZl
cikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghdmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJp
bmRpbmcobG9ja2VyLCAiYmluZEJ1ZmZlciIsIHRhcmdldCwgYnVmZmVyKSkKQEAgLTE0NjAsNyAr
MTQ1NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlCiB7CiAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CiAKLSAgICBpZiAoIWNoZWNrT2JqZWN0VG9CZUJv
dW5kKCJiaW5kRnJhbWVidWZmZXIiLCBidWZmZXIpKQorICAgIGlmICghdmFsaWRhdGVOdWxsYWJs
ZVdlYkdMT2JqZWN0KCJiaW5kRnJhbWVidWZmZXIiLCBidWZmZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUikgewpA
QCAtMTQ3NSw3ICsxNDcwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5k
UmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xSZW5kZXJidWYKIHsKICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlmICghY2hlY2tP
YmplY3RUb0JlQm91bmQoImJpbmRSZW5kZXJidWZmZXIiLCByZW5kZXJCdWZmZXIpKQorICAgIGlm
ICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0KCJiaW5kUmVuZGVyYnVmZmVyIiwgcmVuZGVy
QnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250
ZXh0R0w6OlJFTkRFUkJVRkZFUikgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiYmluZFJlbmRlcmJ1ZmZlciIsICJpbnZhbGlkIHRh
cmdldCIpOwpAQCAtMTQ5MSw3ICsxNDg2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHUKIHsK
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKIAotICAgIGlm
ICghY2hlY2tPYmplY3RUb0JlQm91bmQoImJpbmRUZXh0dXJlIiwgdGV4dHVyZSkpCisgICAgaWYg
KCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRUZXh0dXJlIiwgdGV4dHVyZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAodGV4dHVyZSAmJiB0ZXh0dXJlLT5nZXRUYXJnZXQoKSAm
JiB0ZXh0dXJlLT5nZXRUYXJnZXQoKSAhPSB0YXJnZXQpIHsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiYmluZFRleHR1cmUi
LCAidGV4dHVyZXMgY2FuIG5vdCBiZSB1c2VkIHdpdGggbXVsdGlwbGUgdGFyZ2V0cyIpOwpAQCAt
MTc1MSw3ICsxNzQ2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb2xvck1h
c2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0MKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7
Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dy
YW1PclNoYWRlcigiY29tcGlsZVNoYWRlciIsICZzaGFkZXIpKQorICAgIGlmICghdmFsaWRhdGVX
ZWJHTFByb2dyYW1PclNoYWRlcigiY29tcGlsZVNoYWRlciIsICZzaGFkZXIpKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKHNoYWRlci5vYmplY3QoKSk7CiAg
ICAgR0NHTGludCB2YWx1ZSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIub2JqZWN0KCks
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUyk7CkBAIC0yMTY2LDcgKzIxNjEsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFjaFNoYWRlcihXZWJHTFByb2dy
YW0mIHByb2dyYW0sIFdlYkdMU2hhZGVyJgogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
b2JqZWN0R3JhcGhMb2NrKCkpOwogCi0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZGV0YWNoU2hhZGVyIiwgJnByb2dyYW0p
IHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJkZXRhY2hTaGFkZXIiLCAmc2hhZGVy
KSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImRldGFjaFNoYWRlciIs
ICZwcm9ncmFtKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZGV0YWNoU2hhZGVy
IiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXByb2dyYW0uZGV0YWNoU2hh
ZGVyKGxvY2tlciwgJnNoYWRlcikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZGV0YWNoU2hhZGVyIiwgInNoYWRlciBu
b3QgYXR0YWNoZWQiKTsKQEAgLTIzODEsMTEgKzIzNzYsMTMgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXModW5zaWduZWQgZWxlbWVudENv
dW50LAogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlV2ViR0xPYmpl
Y3QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXZWJHTE9iamVjdCogb2JqZWN0KQogeworICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIW9iamVjdCkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAib2JqZWN0IGlzIG51bGwiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW9iamVjdC0+b2JqZWN0KCkpIHsK
KyAgICBpZiAob2JqZWN0LT5pc0RlbGV0ZWQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0
dGVtcHQgdG8gdXNlIGEgZGVsZXRlZCBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTIzOTgsMTIgKzIzOTUsMjEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgV2UKIAog
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hh
ZGVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgV2ViR0xPYmplY3QqIG9iamVjdCkKIHsKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInByb2dyYW0gb3Igc2hhZGVyIGlz
IG51bGwiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAvLyBVc2luZyBhIGRl
bGV0ZWQgcHJvZ3JhbSBvciBzaGFkZXIgaXMgSU5WQUxJRF9WQUxVRSBpbnN0ZWFkIG9mIElOVkFM
SURfT1BFUkFUSU9OIGFzIGZvcgotICAgIC8vIG90aGVyIFdlYkdMIG9iamVjdHMuCisgICAgLy8g
T3BlbkdMIEVTIDMuMC41IHAuIDQ1OgorICAgIC8vICJDb21tYW5kcyB0aGF0IGFjY2VwdCBzaGFk
ZXIgb3IgcHJvZ3JhbSBvYmplY3QgbmFtZXMgd2lsbCBnZW5lcmF0ZSB0aGUKKyAgICAvLyBlcnJv
ciBJTlZBTElEX1ZBTFVFIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlzIG5vdCB0aGUgbmFtZSBvZiBl
aXRoZXIgYSBzaGFkZXIKKyAgICAvLyBvciBwcm9ncmFtIG9iamVjdCBhbmQgSU5WQUxJRF9PUEVS
QVRJT04gaWYgdGhlIHByb3ZpZGVkIG5hbWUgaWRlbnRpZmllcyBhbgorICAgIC8vIG9iamVjdCB0
aGF0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgdHlwZS4iCisgICAgLy8KKyAgICAvLyBQcm9ncmFtcyBh
bmQgc2hhZGVycyBhbHNvIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IGxpZmV0aW1lIHJ1bGVzIHRo
YW4gb3RoZXIKKyAgICAvLyBvYmplY3RzIGluIHRoZSBBUEk7IHRoZXkgY29udGludWUgdG8gYmUg
dXNhYmxlIGFmdGVyIGJlaW5nIG1hcmtlZCBmb3IKKyAgICAvLyBkZWxldGlvbi4KICAgICBpZiAo
IW9iamVjdC0+b2JqZWN0KCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gdXNlIGEg
ZGVsZXRlZCBwcm9ncmFtIG9yIHNoYWRlciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NzEyLDEwICsyNzE4LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnUKICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyIiwgImludmFsaWQgdGFyZ2V0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKGJ1ZmZlciAmJiAhYnVmZmVyLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRo
aXMpKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwgIm5vIGJ1ZmZlciBvciBi
dWZmZXIgbm90IGZyb20gdGhpcyBjb250ZXh0Iik7CisgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxl
V2ViR0xPYmplY3QoImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwgYnVmZmVyKSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KICAgICBpZiAoYnVmZmVyICYmICFidWZmZXItPmhhc0V2ZXJCZWVuQm91
bmQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsICJidWZmZXIgaGFzIG5l
dmVyIGJlZW4gYm91bmQiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjc0MSwxNiArMjc0NSwxMyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgImxl
dmVsIG5vdCAwIGFuZCBPRVNfZmJvX3JlbmRlcl9taXBtYXAgbm90IGVuYWJsZWQiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAodGV4dHVyZSAmJiAhdGV4dHVyZS0+dmFsaWRhdGUo
Y29udGV4dEdyb3VwKCksICp0aGlzKSkgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIs
ICJubyB0ZXh0dXJlIG9yIHRleHR1cmUgbm90IGZyb20gdGhpcyBjb250ZXh0Iik7CisgICAgaWYg
KCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgdGV4
dHVyZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJHTEZyYW1lYnVmZmVyKiBm
cmFtZWJ1ZmZlckJpbmRpbmcgPSBnZXRGcmFtZWJ1ZmZlckJpbmRpbmcodGFyZ2V0KTsKIAogICAg
IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIHRvIGJlIG11dGF0ZWQ7IGFs
bCBjdXJyZW50CiAgICAgLy8gaW1wbGVtZW50YXRpb25zIHVzZSBhbiBGQk8gaW50ZXJuYWxseSBp
biBwbGFjZSBvZiB0aGUgZGVmYXVsdAogICAgIC8vIEZCTy4KKyAgICBXZWJHTEZyYW1lYnVmZmVy
KiBmcmFtZWJ1ZmZlckJpbmRpbmcgPSBnZXRGcmFtZWJ1ZmZlckJpbmRpbmcodGFyZ2V0KTsKICAg
ICBpZiAoIWZyYW1lYnVmZmVyQmluZGluZyB8fCAhZnJhbWVidWZmZXJCaW5kaW5nLT5vYmplY3Qo
KSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsICJubyBmcmFtZWJ1ZmZlciBib3Vu
ZCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODEwLDcgKzI4MTEsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdlbmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkKIAogUmVm
UHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZl
QXR0cmliKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigiZ2V0QWN0aXZlQXR0cmliIiwgJnByb2dyYW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFBy
b2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlQXR0cmliIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwogICAg
IGlmICghbV9jb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbS5vYmplY3QoKSwgaW5kZXgs
IGluZm8pKQpAQCAtMjgyMyw3ICsyODI0LDcgQEAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSYKIAog
UmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0
aXZlVW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEdDR0x1aW50IGluZGV4KQogewotICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JT
aGFkZXIoImdldEFjdGl2ZVVuaWZvcm0iLCAmcHJvZ3JhbSkpCisgICAgaWYgKCF2YWxpZGF0ZVdl
YkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBY3RpdmVVbmlmb3JtIiwgJnByb2dyYW0pKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZv
OwogICAgIGlmICghbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0ub2JqZWN0KCks
IGluZGV4LCBpbmZvKSkKQEAgLTI4NDAsNyArMjg0MSw3IEBAIFJlZlB0cjxXZWJHTEFjdGl2ZUlu
Zm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9n
cmFtCiAKIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+Pj4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJv
Z3JhbU9yU2hhZGVyKCJnZXRBdHRhY2hlZFNoYWRlcnMiLCAmcHJvZ3JhbSkpCisgICAgaWYgKCF2
YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRBdHRhY2hlZFNoYWRlcnMiLCAmcHJvZ3Jh
bSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBjb25zdCBHQ0dMZW51bSBz
aGFkZXJUeXBlc1tdID0gewpAQCAtMjg1OCw3ICsyODU5LDcgQEAgT3B0aW9uYWw8VmVjdG9yPFJl
ZlB0cjxXZWJHTFNoYWRlcj4+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hl
ZFNoYWQKIAogR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRyaWJMb2Nh
dGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hh
ZGVyKCJnZXRBdHRyaWJMb2NhdGlvbiIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2Vi
R0xQcm9ncmFtT3JTaGFkZXIoImdldEF0dHJpYkxvY2F0aW9uIiwgJnByb2dyYW0pKQogICAgICAg
ICByZXR1cm4gLTE7CiAgICAgaWYgKCF2YWxpZGF0ZUxvY2F0aW9uTGVuZ3RoKCJnZXRBdHRyaWJM
b2NhdGlvbiIsIG5hbWUpKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0zMjU2LDcgKzMyNTcsNyBA
QCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgRwogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogewotICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFk
ZXIoImdldFByb2dyYW1JbmZvTG9nIiwgJnByb2dyYW0pKQorICAgIGlmICghdmFsaWRhdGVXZWJH
TFByb2dyYW1PclNoYWRlcigiZ2V0UHJvZ3JhbUluZm9Mb2ciLCAmcHJvZ3JhbSkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5zdXJlTm90TnVsbChtX2NvbnRleHQtPmdl
dFByb2dyYW1JbmZvTG9nKHByb2dyYW0ub2JqZWN0KCkpKTsKIH0KQEAgLTMzNjIsNyArMzM2Myw3
IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRl
cihXZWJHTFNoYWRlciYgc2hhZGVyLCBHQ0dMCiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigiZ2V0U2hhZGVySW5mb0xvZyIsICZzaGFkZXIpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFBy
b2dyYW1PclNoYWRlcigiZ2V0U2hhZGVySW5mb0xvZyIsICZzaGFkZXIpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGVuc3VyZU5vdE51bGwobV9jb250ZXh0LT5nZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlci5vYmplY3QoKSkpOwogfQpAQCAtMzQwMCw3ICszNDAxLDcgQEAgUmVm
UHRyPFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRTaGFkZXJQcmVjaXNpb24KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciYgc2hhZGVyKQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFNo
YWRlclNvdXJjZSIsICZzaGFkZXIpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNo
YWRlcigiZ2V0U2hhZGVyU291cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICByZXR1cm4gZW5zdXJlTm90TnVsbChzaGFkZXIuZ2V0U291cmNlKCkpOwogfQpAQCAt
MzQzMSw3ICszNDMyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG4KIAogV2ViR0xBbnkgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0s
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uJiB1bmlmb3JtTG9jYXRpb24pCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRl
cigiZ2V0VW5pZm9ybSIsICZwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFt
T3JTaGFkZXIoImdldFVuaWZvcm0iLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmICh1bmlmb3JtTG9jYXRpb24ucHJvZ3JhbSgpICE9ICZwcm9ncmFtKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElP
TiwgImdldFVuaWZvcm0iLCAibm8gdW5pZm9ybWxvY2F0aW9uIG9yIG5vdCB2YWxpZCBmb3IgdGhp
cyBwcm9ncmFtIik7CkBAIC0zNjM1LDcgKzM2MzYsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2Vi
RwogCiBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRVbmlmb3JtTG9jYXRpb24iLCAmcHJvZ3JhbSkpCisg
ICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJnZXRVbmlmb3JtTG9jYXRpb24i
LCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghdmFsaWRhdGVM
b2NhdGlvbkxlbmd0aCgiZ2V0VW5pZm9ybUxvY2F0aW9uIiwgbmFtZSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMzY5MCw2ICszNjkxLDkgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmEK
ICAgICBpZiAoKGlzV2ViR0wyKCkgfHwgbV9hbmdsZUluc3RhbmNlZEFycmF5cykgJiYgcG5hbWUg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSkK
ICAgICAgICAgcmV0dXJuIHN0YXRlLmRpdmlzb3I7CiAKKyAgICBpZiAoaXNXZWJHTDIoKSAmJiBw
bmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSKQor
ICAgICAgICByZXR1cm4gc3RhdGUuaXNJbnRlZ2VyOworCiAgICAgc3dpdGNoIChwbmFtZSkgewog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJ
TkRJTkc6CiAjaWYgIVVTRShBTkdMRSkKQEAgLTM4MDksMTEgKzM4MTMsMTMgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9k
ZSkKIAogR0NHTGJvb2xlYW4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNCdWZmZXIoV2Vi
R0xCdWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBpZiAoIWJ1ZmZlciB8fCBpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkpCisgICAgaWYgKCFidWZmZXIgfHwgaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICFidWZmZXItPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhpcykpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgaWYgKCFidWZmZXItPmhhc0V2ZXJCZWVuQm91bmQoKSkKICAgICAgICAgcmV0
dXJuIDA7CisgICAgaWYgKGJ1ZmZlci0+aXNEZWxldGVkKCkpCisgICAgICAgIHJldHVybiAwOwog
CiAgICAgcmV0dXJuIG1fY29udGV4dC0+aXNCdWZmZXIoYnVmZmVyLT5vYmplY3QoKSk7CiB9CkBA
IC0zODU1LDQ5ICszODYxLDYzIEBAIEdDR0xib29sZWFuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCiAKIEdDR0xib29sZWFuIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmlzRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXIp
CiB7Ci0gICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisg
ICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWZyYW1l
YnVmZmVyLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIGlmICghZnJhbWVidWZmZXItPmhhc0V2ZXJCZWVuQm91bmQoKSkKICAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKGZyYW1lYnVmZmVyLT5pc0RlbGV0ZWQoKSkKKyAgICAgICAgcmV0
dXJuIDA7CiAKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVy
LT5vYmplY3QoKSk7CiB9CiAKIEdDR0xib29sZWFuIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmlzUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCiB7Ci0gICAgaWYgKCFwcm9ncmFtIHx8
IGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICBpZiAoIXByb2dyYW0gfHwgaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICFwcm9ncmFtLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRo
aXMpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIC8vIE9wZW5HTCBFUyBzcGVjaWFsLWNhc2Vz
IHRoZSBiZWhhdmlvciBvZiBwcm9ncmFtIG9iamVjdHM7IGlmIHRoZXkncmUgZGVsZXRlZAorICAg
IC8vIHdoaWxlIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgc3RhdGUsIGdsSXNQcm9n
cmFtIGlzIHN1cHBvc2VkIHRvCisgICAgLy8gc3RpbGwgcmV0dXJuIHRydWUuIEZvciB0aGlzIHJl
YXNvbiwgaXNEZWxldGVkIGlzIG5vdCBjaGVja2VkIGhlcmUuCisKICAgICByZXR1cm4gbV9jb250
ZXh0LT5pc1Byb2dyYW0ocHJvZ3JhbS0+b2JqZWN0KCkpOwogfQogCiBHQ0dMYm9vbGVhbiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciog
cmVuZGVyYnVmZmVyKQogewotICAgIGlmICghcmVuZGVyYnVmZmVyIHx8IGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICBpZiAoIXJlbmRlcmJ1ZmZlciB8fCBpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXJlbmRlcmJ1ZmZlci0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIXJlbmRlcmJ1ZmZlci0+aGFzRXZlckJlZW5C
b3VuZCgpKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocmVuZGVyYnVmZmVyLT5pc0RlbGV0
ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbV9jb250ZXh0LT5pc1JlbmRl
cmJ1ZmZlcihyZW5kZXJidWZmZXItPm9iamVjdCgpKTsKIH0KIAogR0NHTGJvb2xlYW4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKIHsKLSAg
ICBpZiAoIXNoYWRlciB8fCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgaWYgKCFzaGFk
ZXIgfHwgaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFzaGFkZXItPnZhbGlkYXRlKGNvbnRl
eHRHcm91cCgpLCAqdGhpcykpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgLy8gT3BlbkdMIEVT
IHNwZWNpYWwtY2FzZXMgdGhlIGJlaGF2aW9yIG9mIHNoYWRlciBvYmplY3RzOyBpZiB0aGV5J3Jl
IGRlbGV0ZWQKKyAgICAvLyB3aGlsZSBhdHRhY2hlZCB0byBhIHByb2dyYW0sIGdsSXNTaGFkZXIg
aXMgc3VwcG9zZWQgdG8gc3RpbGwgcmV0dXJuIHRydWUuCisgICAgLy8gRm9yIHRoaXMgcmVhc29u
LCBpc0RlbGV0ZWQgaXMgbm90IGNoZWNrZWQgaGVyZS4KKwogICAgIHJldHVybiBtX2NvbnRleHQt
PmlzU2hhZGVyKHNoYWRlci0+b2JqZWN0KCkpOwogfQogCiBHQ0dMYm9vbGVhbiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppc1RleHR1cmUoV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQogewotICAg
IGlmICghdGV4dHVyZSB8fCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgaWYgKCF0ZXh0
dXJlIHx8IGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdGV4dHVyZS0+dmFsaWRhdGUoY29u
dGV4dEdyb3VwKCksICp0aGlzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIXRleHR1
cmUtPmhhc0V2ZXJCZWVuQm91bmQoKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHRleHR1
cmUtPmlzRGVsZXRlZCgpKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBtX2NvbnRl
eHQtPmlzVGV4dHVyZSh0ZXh0dXJlLT5vYmplY3QoKSk7CiB9CkBAIC0zOTE5LDcgKzM5MzksNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtKFdlYkdMUHJvZ3Jh
bSYgcHJvZ3JhbSkKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3Jh
bVdpdGhvdXRJbnZhbGlkYXRpbmdBdHRyaWJMb2NhdGlvbnMoV2ViR0xQcm9ncmFtKiBwcm9ncmFt
KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImxpbmtQcm9ncmFtIiwgcHJvZ3JhbSkpCisgICAgaWYgKCF2YWxpZGF0
ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJsaW5rUHJvZ3JhbSIsIHByb2dyYW0pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8V2ViR0xTaGFkZXI+IHZlcnRleFNoYWRlciA9IHBy
b2dyYW0tPmdldEF0dGFjaGVkU2hhZGVyKEdyYXBoaWNzQ29udGV4dEdMOjpWRVJURVhfU0hBREVS
KTsKQEAgLTQ0NzEsNyArNDQ5MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyJiBzaGFk
ZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInNoYWRlclNvdXJjZSIsICZz
aGFkZXIpKQorICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigic2hhZGVyU291
cmNlIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKICNpZiBVU0UoQU5HTEUpCiAgICAgbV9j
b250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLm9iamVjdCgpLCBzdHJpbmcpOwpAQCAtNTk5Niw3
ICs2MDE2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVj
dEdyYXBoTG9jaygpKTsKIAotICAgIGlmICghY2hlY2tPYmplY3RUb0JlQm91bmQoInVzZVByb2dy
YW0iLCBwcm9ncmFtKSkKKyAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgidXNl
UHJvZ3JhbSIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHByb2dyYW0gJiYg
IXByb2dyYW0tPmdldExpbmtTdGF0dXMoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1c2VQcm9ncmFtIiwgInByb2dy
YW0gbm90IHZhbGlkIik7CkBAIC02MDE0LDcgKzYwMzQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0mIHBy
b2dyYW0pCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVX
ZWJHTFByb2dyYW1PclNoYWRlcigidmFsaWRhdGVQcm9ncmFtIiwgJnByb2dyYW0pKQorICAgIGlm
ICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigidmFsaWRhdGVQcm9ncmFtIiwgJnByb2dy
YW0pKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVByb2dyYW0ocHJv
Z3JhbS5vYmplY3QoKSk7CiB9CkBAIC02MTI2LDcgKzYxNDYsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZQogICAgIH0KICAgICBHQ0dMc2l6ZWkgYnl0ZXNQZXJFbGVtZW50ID0gc2l6ZSAqIHR5
cGVTaXplOwogCi0gICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5zZXRWZXJ0ZXhBdHRyaWJT
dGF0ZShsb2NrZXIsIGluZGV4LCBieXRlc1BlckVsZW1lbnQsIHNpemUsIHR5cGUsIG5vcm1hbGl6
ZWQsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8R0NHTGludHB0cj4ob2Zmc2V0KSwgbV9ib3VuZEFycmF5
QnVmZmVyLmdldCgpKTsKKyAgICBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPnNldFZlcnRleEF0
dHJpYlN0YXRlKGxvY2tlciwgaW5kZXgsIGJ5dGVzUGVyRWxlbWVudCwgc2l6ZSwgdHlwZSwgbm9y
bWFsaXplZCwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBmYWxzZSwg
bV9ib3VuZEFycmF5QnVmZmVyLmdldCgpKTsKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBv
aW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8
R0NHTGludHB0cj4ob2Zmc2V0KSk7CiB9CiAKQEAgLTc3MTgsMTQgKzc3MzgsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdAogI2lmIFVTRShBTkdMRSkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0jZW5kaWYgLy8gVVNFKEFOR0xFKQotCi0gICAg
aWYgKCFwcmltY291bnQpIHsKLSAgICAgICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSNpZiAhVVNFKEFOR0xFKQorI2Vsc2UKICAgICBpZiAoIXZhbGlk
YXRlRHJhd0FycmF5cygiZHJhd0FycmF5c0luc3RhbmNlZCIsIG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmIC8vICFVU0UoQU5HTEUpCkBAIC03
NzYzLDE0ICs3Nzc2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGMKICNpZiBVU0UoQU5HTEUp
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotI2Vu
ZGlmCi0KLSAgICBpZiAoIXByaW1jb3VudCkgewotICAgICAgICBtYXJrQ29udGV4dENoYW5nZWQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmICFVU0UoQU5HTEUpCisjZWxzZQogICAg
IHVuc2lnbmVkIG51bUVsZW1lbnRzID0gMDsKICAgICBpZiAoIXZhbGlkYXRlRHJhd0VsZW1lbnRz
KCJkcmF3RWxlbWVudHNJbnN0YW5jZWQiLCBtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBudW1F
bGVtZW50cywgcHJpbWNvdW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGM5
NzllNTIwOWM4ZDRjMjNkMWE5MGIyZDY0OWRlZTJkN2IyYTA2NzAuLjI2YzUxMThlNGQxZWJlMDg1
NWMzMmMyMTAzOGIxNGZhOTgzM2JlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTQ5NSw3ICs0OTUsMTQg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgdmFsaWRhdGVJbmRleEFycmF5UHJlY2lzZShHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCB1bnNpZ25lZCYgbnVt
RWxlbWVudHNSZXF1aXJlZCk7CiAgICAgYm9vbCB2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXModW5z
aWduZWQgZWxlbWVudENvdW50LCB1bnNpZ25lZCBwcmltaXRpdmVDb3VudCA9IDApOwogCisgICAg
Ly8gVmFsaWRhdGVzIHRoZSBpbmNvbWluZyBXZWJHTCBvYmplY3QsIHdoaWNoIGlzIGFzc3VtZWQg
dG8gYmUgbm9uLW51bGwuCisgICAgLy8gQ2hlY2tzIHRoYXQgdGhlIG9iamVjdCBiZWxvbmdzIHRv
IHRoaXMgY29udGV4dCBhbmQgdGhhdCBpdCdzIG5vdCBtYXJrZWQgZm9yCisgICAgLy8gZGVsZXRp
b24uIFBlcmZvcm1zIGEgY29udGV4dCBsb3N0IGNoZWNrIGludGVybmFsbHkuCiAgICAgYm9vbCB2
YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIqLCBXZWJHTE9iamVjdCopOworCisgICAgLy8g
VmFsaWRhdGVzIHRoZSBpbmNvbWluZyBXZWJHTCBwcm9ncmFtIG9yIHNoYWRlciwgd2hpY2ggaXMg
YXNzdW1lZCB0byBiZQorICAgIC8vIG5vbi1udWxsLiBPcGVuR0wgRVMncyB2YWxpZGF0aW9uIHJ1
bGVzIGRpZmZlciBmb3IgdGhlc2UgdHlwZXMgb2Ygb2JqZWN0cworICAgIC8vIGNvbXBhcmVkIHRv
IG90aGVycy4gUGVyZm9ybXMgYSBjb250ZXh0IGxvc3QgY2hlY2sgaW50ZXJuYWxseS4KICAgICBi
b29sIHZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoY29uc3QgY2hhciosIFdlYkdMT2JqZWN0
Kik7CiAKICNpZiAhVVNFKEFOR0xFKQpAQCAtMTA0Niw5ICsxMDUzLDEzIEBAIHByb3RlY3RlZDoK
ICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgY2FsbGVyIHNob3VsZCByZXR1cm4gd2l0aG91dCBmdXJ0
aGVyIHByb2Nlc3NpbmcuCiAgICAgYm9vbCBkZWxldGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFj
dExvY2tlciYsIFdlYkdMT2JqZWN0Kik7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGJp
bmQqIChiaW5kQnVmZmVyLCBiaW5kVGV4dHVyZSwgZXRjKSBhbmQgdXNlUHJvZ3JhbS4KLSAgICAv
LyBSZXR1cm4gZmFsc2UgaWYgY2FsbGVyIHNob3VsZCByZXR1cm4gd2l0aG91dCBmdXJ0aGVyIHBy
b2Nlc3NpbmcuCi0gICAgYm9vbCBjaGVja09iamVjdFRvQmVCb3VuZChjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIFdlYkdMT2JqZWN0Kik7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBBUElz
IHdoaWNoIGNhbiBsZWdhbGx5IHJlY2VpdmUgbnVsbCBvYmplY3RzLCBpbmNsdWRpbmcKKyAgICAv
LyB0aGUgYmluZCogY2FsbHMgKGJpbmRCdWZmZXIsIGJpbmRUZXh0dXJlLCBldGMuKSBhbmQgdXNl
UHJvZ3JhbS4gQ2hlY2tzIHRoYXQKKyAgICAvLyB0aGUgb2JqZWN0IGJlbG9uZ3MgdG8gdGhpcyBj
b250ZXh0IGFuZCB0aGF0IGl0J3Mgbm90IG1hcmtlZCBmb3IgZGVsZXRpb24uCisgICAgLy8gUmV0
dXJucyBmYWxzZSBpZiB0aGUgY2FsbGVyIHNob3VsZCByZXR1cm4gd2l0aG91dCBmdXJ0aGVyIHBy
b2Nlc3NpbmcuCisgICAgLy8gUGVyZm9ybXMgYSBjb250ZXh0IGxvc3QgY2hlY2sgaW50ZXJuYWxs
eS4KKyAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBmb3IgbnVsbCBXZWJHTE9iamVjdCBhcmd1bWVu
dHMhCisgICAgYm9vbCB2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBXZWJHTE9iamVjdCopOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZh
bGlkYXRlIHRoZSB0YXJnZXQgZm9yIGJ1ZmZlckRhdGEgYW5kCiAgICAgLy8gZ2V0QnVmZmVyUGFy
YW1ldGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwCmluZGV4IGQ4N2ZkNjBjY2QzYmJkZWU1OWY5MjZhOWEy
MDZiMGM3YTc4Yzc5NTkuLjVlODZjNDUxOGEwMDNkZjJlYTUzNzgyODAzODgzOWUwMDBkMjViMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0QmFzZTo6c2V0RWxlbWVudEFycmF5QnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiBsb2MKICAgICAKIH0KIAotdm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6c2V0VmVy
dGV4QXR0cmliU3RhdGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBieXRlc1BlckVsZW1lbnQsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlw
ZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBv
ZmZzZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCit2b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3RC
YXNlOjpzZXRWZXJ0ZXhBdHRyaWJTdGF0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ5dGVzUGVyRWxlbWVudCwgR0NHTGludCBzaXplLCBH
Q0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBH
Q0dMaW50cHRyIG9mZnNldCwgYm9vbCBpc0ludGVnZXIsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7
CiAgICAgR0NHTHNpemVpIHZhbGlkYXRlZFN0cmlkZSA9IHN0cmlkZSA/IHN0cmlkZSA6IGJ5dGVz
UGVyRWxlbWVudDsKICAgICAKQEAgLTcxLDYgKzcxLDcgQEAgdm9pZCBXZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZTo6c2V0VmVydGV4QXR0cmliU3RhdGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2sKICAgICBzdGF0ZS5zdHJpZGUgPSB2YWxpZGF0ZWRTdHJpZGU7CiAgICAgc3RhdGUub3JpZ2lu
YWxTdHJpZGUgPSBzdHJpZGU7CiAgICAgc3RhdGUub2Zmc2V0ID0gb2Zmc2V0OworICAgIHN0YXRl
LmlzSW50ZWdlciA9IGlzSW50ZWdlcjsKIH0KIAogdm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0
QmFzZTo6dW5iaW5kQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIFdlYkdMQnVm
ZmVyJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFZlcnRleEFycmF5T2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAppbmRleCA1YTkzNmIyODRmYzFmZGRmNmFmZWRlNzVl
ZmRjODYxNWU3NzJkZjcxLi41ZTY2YWY5YWYyZGQ4NzFkMzNmMmExNmQ0YWE2MDliNDgyMDUyNjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RCYXNlLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBHQ0dM
c2l6ZWkgb3JpZ2luYWxTdHJpZGUgeyAwIH07CiAgICAgICAgIEdDR0xpbnRwdHIgb2Zmc2V0IHsg
MCB9OwogICAgICAgICBHQ0dMdWludCBkaXZpc29yIHsgMCB9OworICAgICAgICBib29sIGlzSW50
ZWdlciB7IGZhbHNlIH07CiAgICAgfTsKIAogICAgIGJvb2wgaXNEZWZhdWx0T2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkRlZmF1bHQ7IH0KQEAgLTcxLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RWxlbWVudEFycmF5QnVmZmVyKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBXZWJHTEJ1ZmZlciopOwogCiAgICAgVmVydGV4QXR0cmliU3RhdGUmIGdldFZl
cnRleEF0dHJpYlN0YXRlKGludCBpbmRleCkgeyByZXR1cm4gbV92ZXJ0ZXhBdHRyaWJTdGF0ZVtp
bmRleF07IH0KLSAgICB2b2lkIHNldFZlcnRleEF0dHJpYlN0YXRlKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGJv
b2xlYW4sIEdDR0xzaXplaSwgR0NHTGludHB0ciwgV2ViR0xCdWZmZXIqKTsKKyAgICB2b2lkIHNl
dFZlcnRleEF0dHJpYlN0YXRlKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMdWludCwg
R0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGJvb2xlYW4sIEdDR0xzaXplaSwgR0NH
TGludHB0ciwgYm9vbCwgV2ViR0xCdWZmZXIqKTsKICAgICB2b2lkIHVuYmluZEJ1ZmZlcihjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXImKTsKIAogICAgIHZvaWQgc2V0VmVy
dGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDRmNjQ3OTI1NjFjMTBkZDJlMjQ2NzQz
ZmZjNmM3MGQyMmU1MWEwMWYuLjc0YzE3NTg3NzYwZmRkNDdkZjZlYzI5NzVhZWE0ZjlmNTdmNDcz
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0yOTIsMjMgKzI5Miw2
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBu
YW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGdsOjpHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKHBuYW1l
LCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLQotICAgIHN3aXRjaCAocG5h
bWUpIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gU29tZSBvbGRlciBoYXJkd2FyZSBhZHZl
cnRpc2VzIGEgbGFyZ2VyIG1heGltdW0gdGhhbiB0aGV5Ci0gICAgLy8gY2FuIGFjdHVhbGx5IGhh
bmRsZS4gUmF0aGVyIHRoYW4gZGV0ZWN0aW5nIHN1Y2ggZGV2aWNlcywgc2ltcGx5Ci0gICAgLy8g
Y2xhbXAgdGhlIG1heGltdW0gdG8gODE5Miwgd2hpY2ggaXMgYmlnIGVub3VnaCBmb3IgYSA1SyBk
aXNwbGF5LgotICAgIGNhc2UgTUFYX1JFTkRFUkJVRkZFUl9TSVpFOgotICAgICAgICAqdmFsdWUg
PSBzdGQ6Om1pbig4MTkyLCAqdmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1BWF9W
SUVXUE9SVF9ESU1TOgotICAgICAgICB2YWx1ZVswXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVlWzBd
KTsKLSAgICAgICAgdmFsdWVbMV0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVsxXSk7Ci0gICAgICAg
IGJyZWFrOwotI2VuZGlmCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSwgR0NHTFNwYW48R0NH
TGludCwgMj4gcmFuZ2UsIEdDR0xpbnQqIHByZWNpc2lvbikKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNmZlYTI0YmQwYTE3
ZDUyZDMwZDBmYzM4OTQ2ZTYzMTI2YWIwYWI5Li4xZGFkMmY4Mjg0YmEyMzE5YjFmNjUyN2E1YjU1
OWY4OGFlNDc4MjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDEtMTIgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYkdMMl0gZmJvc3RhdGVx
dWVyeSwgbmVnYXRpdmVidWZmZXJhcGksIG5lZ2F0aXZldmVydGV4YXJyYXlhcGksIHNoYWRlcnN0
YXRlcXVlcnkgY29uZm9ybWFuY2UgZmFpbHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgdGVzdHMgd2hpY2ggYXJlIGVpdGhlciBu
b3cgcGFzc2luZyBvciB3aGljaCBoYXZlCisgICAgICAgIHByb2dyZXNzZWQuCisKKyAgICAgICAg
KiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9wcm9ncmFtcy9wcm9ncmFtLXRlc3QtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3Qt
Z2V0LWNhbGxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvZmJvc3RhdGVxdWVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ2wv
Mi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlYnVmZmVyYXBpLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbmVnYXRpdmV2
ZXJ0ZXhhcnJheWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ2wvMi4wLjAvZGVxcC9m
dW5jdGlvbmFsL2dsZXMzL3NoYWRlcnN0YXRlcXVlcnktZXhwZWN0ZWQudHh0OgorCiAyMDIxLTAx
LTExICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAg
RG91YmxlIHRhcCB0byBzZWxlY3QgZG9lcyBub3Qgd29yayBpZiB0aGUgcGFnZSBjbGVhcnMgc2Vs
ZWN0aW9ucyBvbiB0YXAsIGxpa2UgZ3JhbW1hcmx5LmNvbSBkb2VzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9wcm9ncmFtcy9wcm9ncmFtLXRlc3QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcHJvZ3JhbXMv
cHJvZ3JhbS10ZXN0LWV4cGVjdGVkLnR4dAppbmRleCA0MzY3NGVlNDVjYWNiYzIzOTE3MTBiOTQw
NzQ4NTlhMjJkMmM2M2MwLi42M2FlMzUzNmZkYjY2ODEwYTJlYjVjZWVmYzUxMGI0YTlmZTlkN2E2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9wcm9ncmFt
cy9wcm9ncmFtLXRlc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlL3Byb2dyYW1zL3Byb2dyYW0tdGVzdC1leHBlY3RlZC50eHQKQEAgLTEsODMg
KzEsNCBAQAogVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFu
IGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Byb2dyYW1zL3Byb2dyYW0tdGVzdC5odG1s
Ci0KLVsgMTogUEFTUyBdIGNvbnRleHQgZXhpc3RzCi1bIDI6IFBBU1MgXSBnb29kIHZlcnRleCBz
aGFkZXIgc2hvdWxkIGNvbXBpbGUKLVsgMzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOiBzaG91bGQgYmUgbm8gZXJyb3JzIGF0IHRoaXMgcG9pbnQKLVsgNDog
UEFTUyBdIGludmFsaWQgY2FsbCB0byBnZXRTaGFkZXJQYXJhbWV0ZXIgc2hvdWxkIHJldHVybiBu
dWxsCi1bIDU6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRU5V
TSA6IElORk9fTE9HX0xFTkdUSCBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCB0byBnZXRTaGFkZXJQ
YXJhbWV0ZXIgaW4gV2ViR0wKLVsgNjogUEFTUyBdIGludmFsaWQgY2FsbCB0byBnZXRTaGFkZXJQ
YXJhbWV0ZXIgc2hvdWxkIHJldHVybiBudWxsCi1bIDc6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IElOVkFMSURfRU5VTSA6IFNIQURFUl9TT1VSQ0VfTEVOR1RIIGlzIG5vdCBh
IHZhbGlkIGFyZ3VtZW50IHRvIGdldFNoYWRlclBhcmFtZXRlciBpbiBXZWJHTAotWyA4OiBQQVNT
IF0gZ29vZCB2ZXJ0ZXggc2hhZGVyICMyIHNob3VsZCBjb21waWxlCi1bIDk6IFBBU1MgXSBnb29k
IGZyYWdtZW50IHNoYWRlciBzaG91bGQgY29tcGlsZQotWyAxMDogUEFTUyBdIGdvb2QgZnJhZ21l
bnQgc2hhZGVyICMyIHNob3VsZCBjb21waWxlCi1bIDExOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3VsZCBiZSBubyBlcnJvcnMgYXQgdGhpcyBwb2lu
dAotWyAxMjogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBh
dHRhY2hpbmcgYSB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBzdWNjZWVkCi1bIDEzOiBQQVNTIF0gZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGF0dGFjaGluZyBh
biBhbHJlYWR5IGF0dGFjaGVkIHZlcnRleCBzaGFkZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURf
T1BFUkFUSU9OCi1bIDE0OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19F
UlJPUiA6IGF0dGFjaGluZyBhIGZyYWdtZW50IHNoYWRlciBzaG91bGQgc3VjY2VlZAotWyAxNTog
UEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBh
dHRhY2hpbmcgYW4gYWxyZWFkeSBhdHRhY2hlZCBmcmFnbWVudCBzaGFkZXIgc2hvdWxkIGdlbmVy
YXRlIElOVkFMSURfT1BFUkFUSU9OCi1bIDE2OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGF0dGFjaGluZyBzaGFkZXJzIG9mIHRoZSBzYW1l
IHR5cGUgdG8gYSBwcm9ncmFtIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTgotWyAx
NzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04g
OiBhdHRhY2hpbmcgc2hhZGVycyBvZiB0aGUgc2FtZSB0eXBlIHRvIGEgcHJvZ3JhbSBzaG91bGQg
Z2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04KLVsgMTg6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZGV0YWNoaW5nIGEgdmVydGV4IHNoYWRlciBzaG91bGQg
c3VjY2VlZAotWyAxOTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJ
RF9PUEVSQVRJT04gOiBkZXRhY2hpbmcgYSBub3QgYWxyZWFkeSBhdHRhY2hlZCB2ZXJ0ZXggc2hh
ZGVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTgotWyAyMDogUEFTUyBdIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBkZXRhY2hpbmcgYSBmcmFnbWVudCBz
aGFkZXIgc2hvdWxkIHN1Y2NlZWQKLVsgMjE6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogZGV0YWNoaW5nIGEgbm90IGFscmVhZHkgYXR0YWNo
ZWQgZnJhZ21lbnQgc2hhZGVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTgotWyAy
MjogUEFTUyBdIGdldEF0dGFjaGVkU2hhZGVycyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGxpc3Qg
YnkgZGVmYXVsdAotWyAyMzogUEFTUyBdIGF0dGFjaGluZyBhIHNpbmdsZSBzaGFkZXIgc2hvdWxk
IGdpdmUgdGhlIGV4cGVjdGVkIGxpc3QKLVsgMjQ6IFBBU1MgXSBhdHRhY2hpbmcgc29tZSBzaGFk
ZXJzIHNob3VsZCBnaXZlIHRoZSBleHBlY3RlZCBsaXN0Ci1bIDI1OiBQQVNTIF0gYXR0YWNoaW5n
IGEgc2hhZGVyIGFuZCBkZXRhY2hpbmcgaXQgc2hvdWxkIGxlYXZlIGFuIGVtcHR5IGxpc3QKLVsg
MjY6IFBBU1MgXSBhdHRhY2hpbmcgc29tZSBzaGFkZXJzIGFuZCBkZXRhY2hpbmcgdGhlbSBpbiBz
YW1lIG9yZGVyIHNob3VsZCBsZWF2ZSBhbiBlbXB0eSBsaXN0Ci1bIDI3OiBQQVNTIF0gYXR0YWNo
aW5nIHNvbWUgc2hhZGVycyBhbmQgZGV0YWNoaW5nIHRoZW0gaW4gcmFuZG9tIG9yZGVyIHNob3Vs
ZCBsZWF2ZSBhbiBlbXB0eSBsaXN0Ci1bIDI4OiBQQVNTIF0gYXR0YWNoaW5nIGFuZCBkZXRhY2hp
bmcgc29tZSBzaGFkZXJzIHNob3VsZCBsZWF2ZSB0aGUgZGlmZmVyZW5jZSBsaXN0Ci1bIDI5OiBQ
QVNTIF0gYXR0YWNoaW5nIGFuZCBkZXRhY2hpbmcgc29tZSBzaGFkZXJzIHNob3VsZCBsZWF2ZSB0
aGUgZGlmZmVyZW5jZSBsaXN0Ci1bIDMwOiBQQVNTIF0gYXR0YWNoaW5nIGEgc2hhZGVyIHRoYXQg
ZmFpbGVkIHRvIGNvbXBpbGUgc2hvdWxkIHN0aWxsIHNob3cgaXQgaW4gdGhlIGxpc3QKLVsgMzE6
IFBBU1MgXSBhdHRhY2hpbmcgc2hhZGVycywgaW5jbHVkaW5nIG9uZSB0aGF0IGZhaWxlZCB0byBj
b21waWxlLCBzaG91bGQgc3RpbGwgc2hvdyB0aGUgaXQgaW4gdGhlIGxpc3QKLVsgMzI6IFBBU1Mg
XSB2YWxpZCBwcm9ncmFtIHNob3VsZCBsaW5rCi1bIDMzOiBQQVNTIF0gaW52YWxpZCBjYWxsIHRv
IGdldFByb2dyYW1QYXJhbWV0ZXIgc2hvdWxkIHJldHVybiBudWxsCi1bIDM0OiBQQVNTIF0gZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0VOVU0gOiBJTkZPX0xPR19MRU5HVEgg
aXMgbm90IGEgdmFsaWQgYXJndW1lbnQgdG8gZ2V0UHJvZ3JhbVBhcmFtZXRlciBpbiBXZWJHTAot
WyAzNTogUEFTUyBdIGludmFsaWQgY2FsbCB0byBnZXRQcm9ncmFtUGFyYW1ldGVyIHNob3VsZCBy
ZXR1cm4gbnVsbAotWyAzNjogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5W
QUxJRF9FTlVNIDogQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGlzIG5vdCBhIHZhbGlkIGFy
Z3VtZW50IHRvIGdldFByb2dyYW1QYXJhbWV0ZXIgaW4gV2ViR0wKLVsgMzc6IFBBU1MgXSBpbnZh
bGlkIGNhbGwgdG8gZ2V0UHJvZ3JhbVBhcmFtZXRlciBzaG91bGQgcmV0dXJuIG51bGwKLVsgMzg6
IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRU5VTSA6IEFDVElW
RV9VTklGT1JNX01BWF9MRU5HVEggaXMgbm90IGEgdmFsaWQgYXJndW1lbnQgdG8gZ2V0UHJvZ3Jh
bVBhcmFtZXRlciBpbiBXZWJHTAotWyAzOTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOiB1c2luZyBhIHZhbGlkIHByb2dyYW0gc2hvdWxkIHN1Y2NlZWQKLVsg
NDA6IFBBU1MgXSB2YWxpZCBwcm9ncmFtICMyIHNob3VsZCBsaW5rCi1bIDQxOiBQQVNTIF0gZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHVzaW5nIGEgdmFsaWQgcHJvZ3Jh
bSBzaG91bGQgc3VjY2VlZAotWyA0MjogUEFTUyBdIHByb2dyYW0gd2l0aCBubyBmcmFnbWVudCBz
aGFkZXIgc2hvdWxkIGZhaWwgdG8gbGluawotWyA0MzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiB1c2luZyBhbiBpbnZhbGlkIHByb2dyYW0g
c2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OCi1bIDQ0OiBQQVNTIF0gcHJvZ3JhbSB3
aXRoIG5vIHZlcnRleCBzaGFkZXIgc2hvdWxkIGZhaWwgdG8gbGluawotWyA0NTogUEFTUyBdIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiB1c2luZyBhbiBp
bnZhbGlkIHByb2dyYW0gc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFUSU9OCi1bIDQ2OiBQ
QVNTIF0gcHJvZ3JhbSB3aXRoIGJhZCB2ZXJ0ZXggc2hhZGVyIHNob3VsZCBmYWlsIHRvIGxpbmsK
LVsgNDc6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFU
SU9OIDogdXNpbmcgYW4gaW52YWxpZCBwcm9ncmFtIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09Q
RVJBVElPTgotWyA0ODogUEFTUyBdIHByb2dyYW0gd2l0aCBiYWQgZnJhZ21lbnQgc2hhZGVyIHNo
b3VsZCBmYWlsIHRvIGxpbmsKLVsgNDk6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IElOVkFMSURfT1BFUkFUSU9OIDogdXNpbmcgYW4gaW52YWxpZCBwcm9ncmFtIHNob3VsZCBn
ZW5lcmF0ZSBJTlZBTElEX09QRVJBVElPTgotWyA1MDogUEFTUyBdIHByb2dyYW0gd2l0aCBiYWQg
c2hhZGVycyBzaG91bGQgZmFpbCB0byBsaW5rCi1bIDUxOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IHVzaW5nIGFuIGludmFsaWQgcHJvZ3Jh
bSBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04KLVsgNTI6IFBBU1MgXSBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogdXNpbmcgYSB2YWxpZCBwcm9ncmFtIHNo
b3VsZG4ndCBnZW5lcmF0ZSBhIEdMIGVycm9yCi1bIDUzOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3VsZCBiZSBubyBlcnJvcnMgYXQgdGhpcyBwb2lu
dCAjMgotWyA1NDogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9P
UEVSQVRJT04gOiBkcmF3aW5nIHdpdGggYSBudWxsIHByb2dyYW0gc2hvdWxkIGdlbmVyYXRlIElO
VkFMSURfT1BFUkFUSU9OCi1bIDU1OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVl
OiBOT19FUlJPUiA6IGRyYXdpbmcgd2l0aCBhIHZhbGlkIHByb2dyYW0gc2hvdWxkbid0IGdlbmVy
YXRlIGEgR0wgZXJyb3IKLVsgNTY6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IElOVkFMSURfT1BFUkFUSU9OIDogdXNpbmcgYW4gaW52YWxpZCBwcm9ncmFtIHNob3VsZCBnZW5l
cmF0ZSBJTlZBTElEX09QRVJBVElPTgotWyA1NzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogTk9fRVJST1IgOiBUcnkgdG8gdXNlIGFuIGludmFsaWQgcHJvZ3JhbSBzaG91bGQg
bm90IGNoYW5nZSB0aGUgY3VycmVudCByZW5kZXJpbmcgc3RhdGUKLVsgNTg6IFBBU1MgXSBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZHJhd2luZyB3aXRoIGEgdmFsaWQg
cHJvZ3JhbSBzaG91bGRuJ3QgZ2VuZXJhdGUgYSBHTCBlcnJvcgotWyA1OTogUEFTUyBdIGxpbmtp
bmcgc2hvdWxkIGZhaWwgd2l0aCBpbi11c2UgZm9ybWVybHkgZ29vZCBwcm9ncmFtLCB3aXRoIG5l
dyBiYWQgc2hhZGVyIGF0dGFjaGVkCi1bIDYwOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IGRyYXdpbmcgd2l0aCBhIHZhbGlkIHByb2dyYW0gc2hvdWxkbid0
IGdlbmVyYXRlIGEgR0wgZXJyb3IKLVsgNjE6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IE5PX0VSUk9SIDogZHJhd2luZyB3aXRoIGEgdmFsaWQgd2hlbiBsYXN0IHVzZWQgcHJv
Z3JhbSBzaG91bGRuJ3QgZ2VuZXJhdGUgYSBHTCBlcnJvcgotWyA2MjogUEFTUyBdIGRlbGV0ZSBz
aGFkZXJzIGFmdGVyIGF0dGFjaGluZyB0aGVtIGFuZCBiZWZvcmUgbGlua2luZyBwcm9ncmFtIHNo
b3VsZCBub3QgYWZmZWN0IGxpbmtQcm9ncmFtCi1bIDYzOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHVzaW5nIGEgdmFsaWQgcHJvZ3JhbSBzaG91bGQgc3Vj
Y2VlZAotWyA2NDogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1Ig
OiBkcmF3aW5nIHdpdGggYSB2YWxpZCB3aGVuIGxhc3QgdXNlZCBwcm9ncmFtIHNob3VsZG4ndCBn
ZW5lcmF0ZSBhIEdMIGVycm9yCi1bIDY1OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IGRlbGV0ZSB0aGUgY3VycmVudCBwcm9ncmFtIHNob3VsZG4ndCBjaGFu
Z2UgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIHN0YXRlCi1bIDY2OiBQQVNTIF0gZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFRoZSBjdXJyZW50IHByb2dyYW0gc2hvdWxkbid0
IGJlIGRlbGV0ZWQKLVsgNjc6IFBBU1MgXSBnb29kIGZyYWdtZW50IHNoYWRlciBzaG91bGQgY29t
cGlsZQotWyA2ODogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9W
QUxVRSA6IGFuIHVuYXR0YWNoZWQgc2hhZGVyIHNob3VsZCBiZSBkZWxldGVkIGltbWVkaWF0ZWx5
Ci1bIDY5OiBQQVNTIF0gZ29vZCBmcmFnbWVudCBzaGFkZXIgc2hvdWxkIGNvbXBpbGUKLVsgNzA6
IEZBSUwgXSBhbiBhdHRhY2hlZCBzaGFkZXIgc2hvdWxkbid0IGJlIGRlbGV0ZWQKLVsgNzE6IEZB
SUwgXSBnZXRFcnJvciBleHBlY3RlZDogSU5WQUxJRF9WQUxVRS4gV2FzIElOVkFMSURfT1BFUkFU
SU9OIDogYSBkZWxldGUtbWFya2VkIHByb2dyYW0gc2hvdWxkIGJlIGRlbGV0ZWQgb25jZSBpdCdz
IG5vIGxvbmdlciB0aGUgY3VycmVudCBwcm9ncmFtCi1bIDcyOiBQQVNTIF0gZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFIDogYSBkZWxldGUtbWFya2VkIHNoYWRlciBz
aG91bGQgYmUgZGVsZXRlZCBvbmNlIGFsbCBpdHMgYXR0YWNobWVudHMgYXJlIHJlbW92ZWQKLVsg
NzM6IFBBU1MgXSBzaG91bGQgYmUgcmVkCi1bIDc0OiBQQVNTIF0gc2hvdWxkIGJlIGdyZWVuCi1b
IDc1OiBQQVNTIF0gc2hvdWxkIGJlIHJlZAotWyA3NjogUEFTUyBdIHNob3VsZCBiZSB0cmFucGFy
ZW50IGJsYWNrCi1bIDc3OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19F
UlJPUiA6IHNob3VsZCBiZSBubyBlcnJvcnMKLVsgNzg6IFBBU1MgXSBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotWyBGQUlMIF0gMiBmYWlsdXJlcyByZXBvcnRlZAorWyBQQVNTIF0gQWxsIHRl
c3RzIHBhc3NlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0
ZWQudHh0CmluZGV4IDJjNzJlNzhlZjIyYjYwMGFkODUwY2FkNDg4ODQyMWU5ZGVlYzU5MzIuLjM3
NTk0NDc2ZDk4NjQzY2FmZGUwM2FhMjA4NDEzMDJmOGY1MjNlM2IgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIv
c3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3RlZC50eHQKQEAgLTQyLDcgKzQyLDcgQEAg
VGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3N0YXRl
L2dsLW9iamVjdC1nZXQtY2FsbHMuaHQKIFsgMzg6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsg
MCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFKSBpcyBub24temVyby4KIFsg
Mzk6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9DT01QT05FTlRfVFlQRSkgaXMgbm9uLXplcm8uCiBbIDQwOiBQQVNTIF0gZ2wuZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCArIDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcpIGlzIG5v
bi16ZXJvLgotWyA0MTogRkFJTCBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyAwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIpIHNob3VsZCBiZSAwIChvZiB0eXBlIG51bWJlciku
IFdhcyBudWxsIChvZiB0eXBlIG9iamVjdCkuCitbIDQxOiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCArIDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUikgaXMgMAogWyA0
MjogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJV
RkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyA3LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFKSBpcyBnbC5URVhUVVJFCiBbIDQzOiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCArIDcsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIGlzIGFub3RoZXJU
ZXh0dXJlCiBbIDQ0OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIDcsIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCkgaXMgMApAQCAtNTMsMjggKzUzLDI4IEBAIFRlc3Q6
IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1v
YmplY3QtZ2V0LWNhbGxzLmh0CiBbIDQ5OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIDcsIGds
LkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRSkgaXMgbm9uLXplcm8uCiBbIDUwOiBQ
QVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIDcsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09N
UE9ORU5UX1RZUEUpIGlzIG5vbi16ZXJvLgogWyA1MTogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAg
KyA3LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HKSBpcyBub24temVy
by4KLVsgNTI6IEZBSUwgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgNywgZ2wuRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9URVhUVVJFX0xBWUVSKSBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMg
bnVsbCAob2YgdHlwZSBvYmplY3QpLgorWyA1MjogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyA3
LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIpIGlzIDAKIFsgNTM6IFBB
U1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZ
UEUpIGlzIGdsLlJFTkRFUkJVRkZFUgogWyA1NDogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkgaXMgcmVuZGVyYnVmZmVyCiBbIDU1
OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVG
RkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JK
RUNUX1RZUEUpIGlzIGdsLlJFTkRFUkJVRkZFUgogWyA1NjogUEFTUyBdIGdsLmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTF9BVFRBQ0hN
RU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyByZW5kZXJidWZm
ZXIKLVsgNTc6IEZBSUwgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkgc2hvdWxkIGJlIDM2MTYxLiBXYXMgMC4KLVsgNTg6IEZB
SUwgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9P
QkpFQ1RfTkFNRSkgc2hvdWxkIGJlIFtvYmplY3QgV2ViR0xSZW5kZXJidWZmZXJdLiBXYXMgbnVs
bC4KK1sgNTc6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkgaXMgZ2wuUkVOREVSQlVGRkVSCitbIDU4OiBQQVNTIF0g
Z2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5E
RVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUpIGlzIHJlbmRlcmJ1ZmZlcgogWyA1OTogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFKSBpcyBub24temVyby4KIFsgNjA6IFBB
U1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lM
X1NJWkUpIGlzIG5vbi16ZXJvLgogWyA2MTogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRSkgaXMgbm9uLXplcm8uCiBbIDYyOiBQ
QVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HKSBpcyBub24temVyby4KIFsgNjM6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRSkgaXMgbm9uLXplcm8uCiBbIDY0
OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVG
RkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09M
T1JfRU5DT0RJTkcpIGlzIG5vbi16ZXJvLgotWyA2NTogRkFJTCBdIGdldEVycm9yIGV4cGVjdGVk
OiBJTlZBTElEX09QRVJBVElPTi4gV2FzIElOVkFMSURfRU5VTSA6IGFmdGVyIGV2YWx1YXRpbmc6
IGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wu
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBP
TkVOVF9UWVBFKQorWyA2NTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5W
QUxJRF9PUEVSQVRJT04gOiBhZnRlciBldmFsdWF0aW5nOiBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRSkKIFsgNjY6IFBBU1Mg
XSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xP
Ul9FTkNPRElORykgaXMgbm9uLXplcm8uCi1bIDY3OiBGQUlMIF0gZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyIGRpZCBub3QgZ2VuZXJhdGUgSU5WQUxJRF9FTlVNIGZvciBpbnZhbGlk
IHBhcmFtZXRlciBlbnVtOiBOT19FUlJPUgorWyA2NzogUEFTUyBdIGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlciBjb3JyZWN0bHkgaGFuZGxlZCBpbnZhbGlkIHBhcmFtZXRlciBlbnVt
cwogWyA2ODogUEFTUyBdIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciBjb3JyZWN0
bHkgaGFuZGxlZCBpbnZhbGlkIHRhcmdldCBlbnVtcwogWyA2OTogUEFTUyBdIGdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlciBjb3JyZWN0bHkgaGFuZGxlZCBpbnZhbGlkIGF0dGFjaG1l
bnQgZW51bXMKIFsgNzA6IFBBU1MgXSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURQotWyA3MTogRkFJTCBdIGdsLmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQkFDSywgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkgc2hvdWxkIGJlIDMzMzA0LiBXYXMg
NTg5MC4KLVsgNzI6IEZBSUwgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRILCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9UWVBFKSBzaG91bGQgYmUgMzMzMDQuIFdhcyAwLgotWyA3MzogRkFJTCBdIGdsLmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuU1RFTkNJTCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkgc2hvdWxkIGJlIDMzMzA0LiBXYXMg
MC4KK1sgNzE6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkJBQ0ssIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZ
UEUpIGlzIGdsLkZSQU1FQlVGRkVSX0RFRkFVTFQKK1sgNzI6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRILCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5GUkFNRUJVRkZFUl9ERUZBVUxU
CitbIDczOiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZS
QU1FQlVGRkVSLCBnbC5TVEVOQ0lMLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9U
WVBFKSBpcyBnbC5GUkFNRUJVRkZFUl9ERUZBVUxUCiBbIDc0OiBQQVNTIF0gZ2wuZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5CQUNLLCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFKSBpcyBub24temVyby4KIFsgNzU6IFBBU1MgXSBn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkJB
Q0ssIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRSkgaXMgbm9uLXplcm8uCiBb
IDc2OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5CQUNLLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRSkgaXMg
bm9uLXplcm8uCkBAIC0xMDUsNyArMTA1LDcgQEAgVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHQKIFsg
MTAxOiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQUxQSEFfU0laRSkgaXMgbm9uLXplcm8uCiBbIDEwMjogUEFTUyBdIGdsLmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAgKyAwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFKSBpcyBub24t
emVyby4KIFsgMTAzOiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCArIDAsIGdsLkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcpIGlzIG5vbi16ZXJvLgotWyAxMDQ6IEZBSUwgXSBn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwICsgMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xB
WUVSKSBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgbnVsbCAob2YgdHlwZSBvYmpl
Y3QpLgorWyAxMDQ6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgMCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0xBWUVSKSBpcyAwCiBbIDEwNTogUEFTUyBdIGdsLmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAgKyA3LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5U
RVhUVVJFCiBbIDEwNjogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyA3LCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyBhbm90aGVyVGV4dHVyZQogWyAxMDc6IFBBU1Mg
XSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwICsgNywgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0xFVkVMKSBpcyAwCkBAIC0xMTYsMjcgKzExNiwyNyBAQCBUZXN0OiAuLi8uLi9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5o
dAogWyAxMTI6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgNywgZ2wuRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9BTFBIQV9TSVpFKSBpcyBub24temVyby4KIFsgMTEzOiBQQVNTIF0gZ2wuZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCArIDcsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUpIGlz
IG5vbi16ZXJvLgogWyAxMTQ6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwICsgNywgZ2wuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORykgaXMgbm9uLXplcm8uCi1bIDExNTogRkFJ
TCBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAgKyA3LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRV
UkVfTEFZRVIpIHNob3VsZCBiZSAwIChvZiB0eXBlIG51bWJlcikuIFdhcyBudWxsIChvZiB0eXBl
IG9iamVjdCkuCitbIDExNTogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAgKyA3LCBnbC5GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIpIGlzIDAKIFsgMTE2OiBQQVNTIF0gZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9B
VFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5S
RU5ERVJCVUZGRVIKIFsgMTE3OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyByZW5kZXJidWZmZXIKIFsgMTE4OiBQQVNTIF0g
Z2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5T
VEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUp
IGlzIGdsLlJFTkRFUkJVRkZFUgogWyAxMTk6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkgaXMgcmVuZGVyYnVmZmVyCi1bIDEy
MDogRkFJTCBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJV
RkZFUiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9UWVBFKSBzaG91bGQgYmUgMzYxNjEuIFdhcyAwLgotWyAxMjE6IEZBSUwgXSBn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRF
UFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
TkFNRSkgc2hvdWxkIGJlIFtvYmplY3QgV2ViR0xSZW5kZXJidWZmZXJdLiBXYXMgbnVsbC4KK1sg
MTIwOiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfT0JKRUNUX1RZUEUpIGlzIGdsLlJFTkRFUkJVRkZFUgorWyAxMjE6IFBBU1MgXSBnbC5n
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRI
X1NURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFN
RSkgaXMgcmVuZGVyYnVmZmVyCiBbIDEyMjogUEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFKSBpcyBub24temVyby4KIFsgMTIzOiBQQVNT
IF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9T
SVpFKSBpcyBub24temVyby4KIFsgMTI0OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFKSBpcyBub24temVyby4KIFsgMTI1OiBQ
QVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HKSBpcyBub24temVyby4KIFsgMTI2OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGds
LkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUpIGlzIG5vbi16ZXJvLgogWyAx
Mjc6IFBBU1MgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9D
T0xPUl9FTkNPRElORykgaXMgbm9uLXplcm8uCi1bIDEyODogRkFJTCBdIGdldEVycm9yIGV4cGVj
dGVkOiBJTlZBTElEX09QRVJBVElPTi4gV2FzIElOVkFMSURfRU5VTSA6IGFmdGVyIGV2YWx1YXRp
bmc6IGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NP
TVBPTkVOVF9UWVBFKQorWyAxMjg6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IElOVkFMSURfT1BFUkFUSU9OIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUpCiBbIDEyOTog
UEFTUyBdIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZF
UiwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X0NPTE9SX0VOQ09ESU5HKSBpcyBub24temVyby4KLVsgMTMwOiBGQUlMIF0gZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyIGRpZCBub3QgZ2VuZXJhdGUgSU5WQUxJRF9FTlVNIGZvciBp
bnZhbGlkIHBhcmFtZXRlciBlbnVtOiBOT19FUlJPUgorWyAxMzA6IFBBU1MgXSBnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgY29ycmVjdGx5IGhhbmRsZWQgaW52YWxpZCBwYXJhbWV0
ZXIgZW51bXMKIFsgMTMxOiBQQVNTIF0gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
IGNvcnJlY3RseSBoYW5kbGVkIGludmFsaWQgdGFyZ2V0IGVudW1zCiBbIDEzMjogUEFTUyBdIGdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciBjb3JyZWN0bHkgaGFuZGxlZCBpbnZhbGlk
IGF0dGFjaG1lbnQgZW51bXMKIFsgMTMzOiBQQVNTIF0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUKLVsgMTM0OiBGQUlM
IF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5CQUNLLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBzaG91bGQgYmUg
MzMzMDQuIFdhcyA1ODkwLgotWyAxMzU6IEZBSUwgXSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRILCBnbC5GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9UWVBFKSBzaG91bGQgYmUgMzMzMDQuIFdhcyAwLgorWyAxMzQ6IFBBU1Mg
XSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkJBQ0ssIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpIGlzIGdsLkZSQU1F
QlVGRkVSX0RFRkFVTFQKK1sgMTM1OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9PQkpFQ1RfVFlQRSkgaXMgZ2wuRlJBTUVCVUZGRVJfREVGQVVMVAogWyAxMzY6IFBBU1Mg
XSBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LlNURU5DSUwsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpIGlzIGdsLk5P
TkUKIFsgMTM3OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGds
LkZSQU1FQlVGRkVSLCBnbC5CQUNLLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpF
KSBpcyBub24temVyby4KIFsgMTM4OiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5CQUNLLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX0dSRUVOX1NJWkUpIGlzIG5vbi16ZXJvLgpAQCAtMjcwLDE1ICsyNzAsMTUgQEAgVGVzdDog
Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9i
amVjdC1nZXQtY2FsbHMuaHQKIFsgMjY2OiBQQVNTIF0gZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGds
LlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSkgaXMgZ2wuRkxPQVQKIFsgMjY3OiBQQVNTIF0gZ2wu
Z2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRCkgaXMg
ZmFsc2UKIFsgMjY4OiBQQVNTIF0gZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRS
SUJfQVJSQVlfRElWSVNPUikgaXMgMAotWyAyNjk6IEZBSUwgXSBnbC5nZXRWZXJ0ZXhBdHRyaWIo
MSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSKSBzaG91bGQgYmUgZmFsc2UgKG9mIHR5
cGUgYm9vbGVhbikuIFdhcyBudWxsIChvZiB0eXBlIG9iamVjdCkuCitbIDI2OTogUEFTUyBdIGds
LmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIpIGlzIGZh
bHNlCiBbIDI3MDogUEFTUyBdIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklC
X0FSUkFZX0RJVklTT1IpIGlzIDIKIFsgMjcxOiBQQVNTIF0gZ2wuZ2V0VmVydGV4QXR0cmliKDEs
IGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSBpcyAzNgogWyAyNzI6IFBBU1MgXSBnbC5n
ZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSKSBp
cyAxMgogWyAyNzM6IFBBU1MgXSBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9FTkFCTEVEKSBpcyBmYWxzZQogWyAyNzQ6IFBBU1MgXSBnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKSBpcyBbNSwgNiwgNywgOF0KLVsgMjc1OiBG
QUlMIF0gZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSkg
c2hvdWxkIGJlIDUxMjQuIFdhcyA1MTI2LgotWyAyNzY6IEZBSUwgXSBnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSKSBzaG91bGQgYmUgdHJ1ZSAob2Yg
dHlwZSBib29sZWFuKS4gV2FzIG51bGwgKG9mIHR5cGUgb2JqZWN0KS4KLVsgMjc3OiBGQUlMIF0g
Z2V0RXJyb3IgZXhwZWN0ZWQ6IE5PX0VSUk9SLiBXYXMgSU5WQUxJRF9FTlVNIDoKK1sgMjc1OiBQ
QVNTIF0gZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSkg
aXMgZ2wuSU5UCitbIDI3NjogUEFTUyBdIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhf
QVRUUklCX0FSUkFZX0lOVEVHRVIpIGlzIHRydWUKK1sgMjc3OiBQQVNTIF0gZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6CiBbIDI3ODogUEFTUyBdIGdldFZlcnRleEF0dHJp
YiBjb3JyZWN0bHkgaGFuZGxlZCBpbnZhbGlkIHBhcmFtZXRlciBlbnVtcwogWyAyNzk6IFBBU1Mg
XSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiBhZnRlciBldmFs
dWF0aW5nOiBnbC5nZXRWZXJ0ZXhBdHRyaWIoMTYsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQikK
IFsgMjgwOiBQQVNTIF0gZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZS
QU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9PQkpFQ1RfVFlQRSkgaXMgZ2wuTk9ORQpAQCAtMzY1LDQgKzM2NSw0IEBAIFRlc3Q6IC4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3Qt
Z2V0LWNhbGxzLmh0CiBbIDM2MTogUEFTUyBdIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRl
ciBjb3JyZWN0bHkgaGFuZGxlZCBpbnZhbGlkIHBuYW1lIGVudW1zCiBbIDM2MjogUEFTUyBdIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgogWyAzNjM6IFBBU1MgXSBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotWyBGQUlMIF0gMzUgZmFpbHVyZXMgcmVwb3J0ZWQKK1sg
RkFJTCBdIDE0IGZhaWx1cmVzIHJlcG9ydGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
bC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvc3RhdGVxdWVyeS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvZmJvc3RhdGVx
dWVyeS1leHBlY3RlZC50eHQKaW5kZXggN2JiZDRkNzU2YTJkNWVhNDljMzc2NjExYjBlMmE4MDIy
NzQwYjM5ZC4uM2ZmNzg3NjAzY2U1Y2UzNTMxY2Y0M2VlYmMzZTcxNzhmNjU2YTYxOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3N0
YXRlcXVlcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAv
ZnVuY3Rpb25hbC9nbGVzMy9mYm9zdGF0ZXF1ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMSwyMSArMSw0
IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZy
YW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVzdDogLi4vLi4vLi4vcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL2Zib3N0YXRlcXVlcnkuaHRt
bAotCi1bIDE6IEZBSUwgXSBmYm8uZHJhd19mcmFtZWJ1ZmZlcl9kZWZhdWx0X2ZyYW1lYnVmZmVy
OgotWyAyOiBGQUlMIF0gZmJvLnJlYWRfZnJhbWVidWZmZXJfZGVmYXVsdF9mcmFtZWJ1ZmZlcjoK
LVsgMzogUEFTUyBdIGZiby5mcmFtZWJ1ZmZlcl9hdHRhY2htZW50X29iamVjdDogUGFzc2VkCi1b
IDQ6IFBBU1MgXSBmYm8uZnJhbWVidWZmZXJfYXR0YWNobWVudF90ZXh0dXJlX2xldmVsOiBQYXNz
ZWQKLVsgNTogUEFTUyBdIGZiby5mcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfY3ViZV9t
YXBfZmFjZTogUGFzc2VkCi1bIDY6IEZBSUwgXSBmYm8uZnJhbWVidWZmZXJfYXR0YWNobWVudF90
ZXh0dXJlX2xheWVyOgotWyA3OiBQQVNTIF0gZmJvLmZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfY29s
b3JfZW5jb2Rpbmc6IFBhc3NlZAotWyA4OiBQQVNTIF0gZmJvLmZyYW1lYnVmZmVyX2F0dGFjaG1l
bnRfY29tcG9uZW50X3R5cGU6IFBhc3NlZAotWyA5OiBQQVNTIF0gZmJvLmZyYW1lYnVmZmVyX2F0
dGFjaG1lbnRfeF9zaXplX2luaXRpYWw6IFBhc3NlZAotWyAxMDogUEFTUyBdIGZiby5mcmFtZWJ1
ZmZlcl9hdHRhY2htZW50X3hfc2l6ZV9yYm86IFBhc3NlZAotWyAxMTogUEFTUyBdIGZiby5mcmFt
ZWJ1ZmZlcl9hdHRhY2htZW50X3hfc2l6ZV90ZXh0dXJlOiBQYXNzZWQKLVsgMTI6IFBBU1MgXSBm
Ym8uZnJhbWVidWZmZXJfdW5zcGVjaWZpZWRfYXR0YWNobWVudF9jb2xvcl9lbmNvZGluZzogUGFz
c2VkCi1bIDEzOiBQQVNTIF0gZmJvLmZyYW1lYnVmZmVyX3Vuc3BlY2lmaWVkX2F0dGFjaG1lbnRf
Y29tcG9uZW50X3R5cGU6IFBhc3NlZAotWyAxNDogUEFTUyBdIGZiby5mcmFtZWJ1ZmZlcl91bnNw
ZWNpZmllZF9hdHRhY2htZW50X3hfc2l6ZV9yYm86IFBhc3NlZAotWyAxNTogUEFTUyBdIGZiby5m
cmFtZWJ1ZmZlcl91bnNwZWNpZmllZF9hdHRhY2htZW50X3hfc2l6ZV90ZXh0dXJlOiBQYXNzZWQK
LVsgMTY6IFBBU1MgXSBmYm8uZnJhbWVidWZmZXJfdW5zcGVjaWZpZWRfYXR0YWNobWVudF94X3Np
emVfdGV4dHVyZTogc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBdIDMgZmFpbHVy
ZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZWJ1ZmZlcmFw
aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwv
Z2xlczMvbmVnYXRpdmVidWZmZXJhcGktZXhwZWN0ZWQudHh0CmluZGV4IGMwYTk1YzE5MGZiMmRi
NTZlZTI5YzA1NjMxMWNjMTQxMTExMTc1MTUuLjcxZmRjZTBlN2FjOTVlMjMwOTFlYTMwMTk5YzBk
NmM0ZTA4MjRhNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9uZWdhdGl2ZWJ1ZmZlcmFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL25lZ2F0aXZlYnVmZmVyYXBp
LWV4cGVjdGVkLnR4dApAQCAtMSwzNCArMSw0IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wg
VGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4K
IAogVGVzdDogLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlv
bmFsL2dsZXMzL25lZ2F0aXZlYnVmZmVyYXBpLmh0bWwKLQotWyAxOiBQQVNTIF0gbmVnYXRpdmVC
dWZmZXJBcGkuYmluZF9idWZmZXI6IFBhc3NlZAotWyAyOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJB
cGkuYnVmZmVyX2RhdGE6IFBhc3NlZAotWyAzOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkuYnVm
ZmVyX3N1Yl9kYXRhOiBQYXNzZWQKLVsgNDogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmJ1ZmZl
cl9zdWJfZGF0YV9zaXplX29mZnNldDogUGFzc2VkCi1bIDU6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZl
ckFwaS5jbGVhcjogUGFzc2VkCi1bIDY6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5yZWFkX3Bp
eGVsczogUGFzc2VkCi1bIDc6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5yZWFkX3BpeGVsc19m
b3JtYXRfbWlzbWF0Y2g6IFBhc3NlZAotWyA4OiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJBcGkucmVh
ZF9waXhlbHNfZmJvX2Zvcm1hdF9taXNtYXRjaDogUGFzc2VkCi1bIDk6IFBBU1MgXSBuZWdhdGl2
ZUJ1ZmZlckFwaS5iaW5kX2J1ZmZlcl9yYW5nZTogUGFzc2VkCi1bIDEwOiBQQVNTIF0gbmVnYXRp
dmVCdWZmZXJBcGkuYmluZF9idWZmZXJfYmFzZTogUGFzc2VkCi1bIDExOiBQQVNTIF0gbmVnYXRp
dmVCdWZmZXJBcGkuY2xlYXJfYnVmZmVyaXY6IFBhc3NlZAotWyAxMjogUEFTUyBdIG5lZ2F0aXZl
QnVmZmVyQXBpLmNsZWFyX2J1ZmZlcnVpdjogUGFzc2VkCi1bIDEzOiBQQVNTIF0gbmVnYXRpdmVC
dWZmZXJBcGkuY2xlYXJfYnVmZmVyZnY6IFBhc3NlZAotWyAxNDogUEFTUyBdIG5lZ2F0aXZlQnVm
ZmVyQXBpLmNsZWFyX2J1ZmZlcmZpOiBQYXNzZWQKLVsgMTU6IEZBSUwgXSBuZWdhdGl2ZUJ1ZmZl
ckFwaS5jb3B5X2J1ZmZlcl9zdWJfZGF0YTogRXhwZWN0ZWQgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
IGJ1dCBnb3QgZ2wuSU5WQUxJRF9WQUxVRS4KLVsgMTY6IEZBSUwgXSBuZWdhdGl2ZUJ1ZmZlckFw
aS5kcmF3X2J1ZmZlcnM6IEV4cGVjdGVkIGdsLk5PX0VSUk9SLCBidXQgZ290IGdsLklOVkFMSURf
T1BFUkFUSU9OLgotWyAxNzogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmJpbmRfZnJhbWVidWZm
ZXI6IFBhc3NlZAotWyAxODogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmJpbmRfcmVuZGVyYnVm
ZmVyOiBQYXNzZWQKLVsgMTk6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5jaGVja19mcmFtZWJ1
ZmZlcl9zdGF0dXM6IFBhc3NlZAotWyAyMDogUEFTUyBdIG5lZ2F0aXZlQnVmZmVyQXBpLmZyYW1l
YnVmZmVyX3JlbmRlcmJ1ZmZlcjogUGFzc2VkCi1bIDIxOiBQQVNTIF0gbmVnYXRpdmVCdWZmZXJB
cGkuZnJhbWVidWZmZXJfdGV4dHVyZTJkOiBQYXNzZWQKLVsgMjI6IEZBSUwgXSBuZWdhdGl2ZUJ1
ZmZlckFwaS5yZW5kZXJidWZmZXJfc3RvcmFnZTogRXhwZWN0ZWQgZ2wuSU5WQUxJRF9WQUxVRSwg
YnV0IGdvdCBnbC5OT19FUlJPUi4KLVsgMjM6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5ibGl0
X2ZyYW1lYnVmZmVyOiBQYXNzZWQKLVsgMjQ6IFBBU1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5ibGl0
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlOiBQYXNzZWQKLVsgMjU6IFBBU1MgXSBuZWdhdGl2ZUJ1
ZmZlckFwaS5mcmFtZWJ1ZmZlcl90ZXh0dXJlX2xheWVyOiBQYXNzZWQKLVsgMjY6IFBBU1MgXSBu
ZWdhdGl2ZUJ1ZmZlckFwaS5pbnZhbGlkYXRlX2ZyYW1lYnVmZmVyOiBQYXNzZWQKLVsgMjc6IFBB
U1MgXSBuZWdhdGl2ZUJ1ZmZlckFwaS5pbnZhbGlkYXRlX3N1Yl9mcmFtZWJ1ZmZlcjogUGFzc2Vk
Ci1bIDI4OiBGQUlMIF0gbmVnYXRpdmVCdWZmZXJBcGkucmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVs
dGlzYW1wbGU6IEV4cGVjdGVkIGdsLklOVkFMSURfVkFMVUUsIGJ1dCBnb3QgZ2wuTk9fRVJST1Iu
Ci1bIDI5OiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBdIDQgZmFp
bHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVuY3Rpb25hbC9nbGVzMy9uZWdhdGl2ZXZlcnRl
eGFycmF5YXBpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVu
Y3Rpb25hbC9nbGVzMy9uZWdhdGl2ZXZlcnRleGFycmF5YXBpLWV4cGVjdGVkLnR4dAppbmRleCA4
OWI2YmY3MjY3MGY1ZjVhYmE5ZmU4MGM2ZGQ1ODA1NjJjMTk3Y2Y1Li5hNGIxZTY3MmFlOTI5NDIx
YTU2M2E1ZjNhNDU2ZWIyN2I4Nzg5NjkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC8y
LjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbmVnYXRpdmV2ZXJ0ZXhhcnJheWFwaS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMz
L25lZ2F0aXZldmVydGV4YXJyYXlhcGktZXhwZWN0ZWQudHh0CkBAIC0xLDMwICsxLDQgQEAKIFRo
aXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5k
IHJlcG9ydHMgUEFTUyBvciBGQUlMLgogCiBUZXN0OiAuLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvbmVnYXRpdmV2ZXJ0ZXhhcnJheWFwaS5o
dG1sCi0KLVsgMTogUEFTUyBdIHZlcnRleF9hcnJheS52ZXJ0ZXhfYXR0cmliZjogUGFzc2VkCi1b
IDI6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkudmVydGV4X2F0dHJpYmZ2OiBQYXNzZWQKLVsgMzogUEFT
UyBdIHZlcnRleF9hcnJheS52ZXJ0ZXhfYXR0cmliaTQ6IFBhc3NlZAotWyA0OiBQQVNTIF0gdmVy
dGV4X2FycmF5LnZlcnRleF9hdHRyaWJpNHY6IFBhc3NlZAotWyA1OiBQQVNTIF0gdmVydGV4X2Fy
cmF5LnZlcnRleF9hdHRyaWJfcG9pbnRlcjogUGFzc2VkCi1bIDY6IFBBU1MgXSB2ZXJ0ZXhfYXJy
YXkudmVydGV4X2F0dHJpYl9pX3BvaW50ZXI6IFBhc3NlZAotWyA3OiBQQVNTIF0gdmVydGV4X2Fy
cmF5LmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5OiBQYXNzZWQKLVsgODogUEFTUyBdIHZlcnRl
eF9hcnJheS5kaXNhYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXk6IFBhc3NlZAotWyA5OiBQQVNTIF0g
dmVydGV4X2FycmF5LnZlcnRleF9hdHRyaWJfZGl2aXNvcjogUGFzc2VkCi1bIDEwOiBQQVNTIF0g
dmVydGV4X2FycmF5LmRyYXdfYXJyYXlzOiBQYXNzZWQKLVsgMTE6IFBBU1MgXSB2ZXJ0ZXhfYXJy
YXkuZHJhd19hcnJheXNfaW52YWxpZF9wcm9ncmFtOiBQYXNzZWQKLVsgMTI6IFBBU1MgXSB2ZXJ0
ZXhfYXJyYXkuZHJhd19hcnJheXNfaW5jb21wbGV0ZV9wcmltaXRpdmU6IFBhc3NlZAotWyAxMzog
UEFTUyBdIHZlcnRleF9hcnJheS5kcmF3X2VsZW1lbnRzOiBQYXNzZWQKLVsgMTQ6IFBBU1MgXSB2
ZXJ0ZXhfYXJyYXkuZHJhd19lbGVtZW50c19pbnZhbGlkX3Byb2dyYW06IFBhc3NlZAotWyAxNTog
UEFTUyBdIHZlcnRleF9hcnJheS5kcmF3X2VsZW1lbnRzX2luY29tcGxldGVfcHJpbWl0aXZlOiBQ
YXNzZWQKLVsgMTY6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkuZHJhd19hcnJheXNfaW5zdGFuY2VkOiBQ
YXNzZWQKLVsgMTc6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkuZHJhd19hcnJheXNfaW5zdGFuY2VkX2lu
dmFsaWRfcHJvZ3JhbTogUGFzc2VkCi1bIDE4OiBQQVNTIF0gdmVydGV4X2FycmF5LmRyYXdfYXJy
YXlzX2luc3RhbmNlZF9pbmNvbXBsZXRlX3ByaW1pdGl2ZTogUGFzc2VkCi1bIDE5OiBGQUlMIF0g
dmVydGV4X2FycmF5LmRyYXdfZWxlbWVudHNfaW5zdGFuY2VkOiBFeHBlY3RlZCBnbC5JTlZBTElE
X1ZBTFVFLCBidXQgZ290IGdsLk5PX0VSUk9SLgotWyAyMDogUEFTUyBdIHZlcnRleF9hcnJheS5k
cmF3X2VsZW1lbnRzX2luc3RhbmNlZF9pbnZhbGlkX3Byb2dyYW06IFBhc3NlZAotWyAyMTogRkFJ
TCBdIHZlcnRleF9hcnJheS5kcmF3X2VsZW1lbnRzX2luc3RhbmNlZF9pbmNvbXBsZXRlX3ByaW1p
dGl2ZTogRXhwZWN0ZWQgZ2wuSU5WQUxJRF9WQUxVRSwgYnV0IGdvdCBnbC5OT19FUlJPUi4KLVsg
MjI6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkuZHJhd19yYW5nZV9lbGVtZW50czogUGFzc2VkCi1bIDIz
OiBQQVNTIF0gdmVydGV4X2FycmF5LmRyYXdfcmFuZ2VfZWxlbWVudHNfaW52YWxpZF9wcm9ncmFt
OiBQYXNzZWQKLVsgMjQ6IFBBU1MgXSB2ZXJ0ZXhfYXJyYXkuZHJhd19yYW5nZV9lbGVtZW50c19p
bmNvbXBsZXRlX3ByaW1pdGl2ZTogUGFzc2VkCi1bIDI1OiBQQVNTIF0gdmVydGV4X2FycmF5LmRy
YXdfcmFuZ2VfZWxlbWVudHNfaW5jb21wbGV0ZV9wcmltaXRpdmU6IHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi1bIEZBSUwgXSAyIGZhaWx1cmVzIHJlcG9ydGVkCitbIFBBU1MgXSBBbGwgdGVz
dHMgcGFzc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0
aW9uYWwvZ2xlczMvc2hhZGVyc3RhdGVxdWVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC8yLjAuMC9kZXFwL2Z1bmN0aW9uYWwvZ2xlczMvc2hhZGVyc3RhdGVxdWVyeS1leHBlY3Rl
ZC50eHQKaW5kZXggYWYwNDdlMDQwNDIxODcwNmNmMTliZjdiMWZjYzFhMmY5ZWMyN2E4YS4uZGZk
MWRlYjIxMjJhZDk2NjEzNjJjODFlODEwYWFkOTM3MGMyZGQzZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ2wvMi4wLjAvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnN0YXRlcXVlcnkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2RlcXAvZnVuY3Rpb25h
bC9nbGVzMy9zaGFkZXJzdGF0ZXF1ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMSw1MSArMSw0IEBACiBU
aGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFu
ZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVzdDogLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvZGVxcC9mdW5jdGlvbmFsL2dsZXMzL3NoYWRlcnN0YXRlcXVlcnkuaHRtbAot
Ci1bIDE6IFBBU1MgXSBzaGFkZXIuc2hhZGVyX3R5cGU6IFBhc3NlZAotWyAyOiBQQVNTIF0gc2hh
ZGVyLnNoYWRlcl9jb21waWxlX3N0YXR1czogUGFzc2VkCi1bIDM6IFBBU1MgXSBzaGFkZXIuc2hh
ZGVyX2luZm9fbG9nOiBQYXNzZWQKLVsgNDogUEFTUyBdIHNoYWRlci5zaGFkZXJfc291cmNlOiBQ
YXNzZWQKLVsgNTogRkFJTCBdIHNoYWRlci5kZWxldGVfc3RhdHVzOgotWyA2OiBQQVNTIF0gc2hh
ZGVyLmN1cnJlbnRfdmVydGV4X2F0dHJpYl9pbml0aWFsOiBQYXNzZWQKLVsgNzogUEFTUyBdIHNo
YWRlci5jdXJyZW50X3ZlcnRleF9hdHRyaWJfZmxvYXQ6IFBhc3NlZAotWyA4OiBQQVNTIF0gc2hh
ZGVyLmN1cnJlbnRfdmVydGV4X2F0dHJpYl9pbnQ6IFBhc3NlZAotWyA5OiBQQVNTIF0gc2hhZGVy
LmN1cnJlbnRfdmVydGV4X2F0dHJpYl91aW50OiBQYXNzZWQKLVsgMTA6IFBBU1MgXSBzaGFkZXIu
cHJvZ3JhbV9pbmZvX2xvZzogUGFzc2VkCi1bIDExOiBQQVNTIF0gc2hhZGVyLnByb2dyYW1fdmFs
aWRhdGVfc3RhdHVzOiBQYXNzZWQKLVsgMTI6IFBBU1MgXSBzaGFkZXIucHJvZ3JhbV9hdHRhY2hl
ZF9zaGFkZXJzOiBQYXNzZWQKLVsgMTM6IFBBU1MgXSBzaGFkZXIucHJvZ3JhbV9hY3RpdmVfdW5p
Zm9ybV9uYW1lOiBQYXNzZWQKLVsgMTQ6IFBBU1MgXSBzaGFkZXIucHJvZ3JhbV9hY3RpdmVfdW5p
Zm9ybV90eXBlczogUGFzc2VkCi1bIDE1OiBGQUlMIF0gc2hhZGVyLnByb2dyYW1fYWN0aXZlX3Vu
aWZvcm1fYmxvY2tzOiBFeHBlY3RlZCB7IDEsIDJ9OyBnb3QgezEsIDJ9Ci1bIDE2OiBQQVNTIF0g
c2hhZGVyLnRyYW5zZm9ybV9mZWVkYmFjazogUGFzc2VkCi1bIDE3OiBQQVNTIF0gc2hhZGVyLmFj
dGl2ZV9hdHRyaWJ1dGVzOiBQYXNzZWQKLVsgMTg6IFBBU1MgXSBzaGFkZXIudmVydGV4X2F0dHJp
Yl9zaXplOiBQYXNzZWQKLVsgMTk6IEZBSUwgXSBzaGFkZXIudmVydGV4X2F0dHJpYl90eXBlOgot
WyAyMDogRkFJTCBdIHNoYWRlci52ZXJ0ZXhfYXR0cmliX3N0cmlkZToKLVsgMjE6IEZBSUwgXSBz
aGFkZXIudmVydGV4X2F0dHJpYl9ub3JtYWxpemVkOgotWyAyMjogRkFJTCBdIHNoYWRlci52ZXJ0
ZXhfYXR0cmliX2ludGVnZXI6Ci1bIDIzOiBQQVNTIF0gc2hhZGVyLnZlcnRleF9hdHRyaWJfYXJy
YXlfZW5hYmxlZDogUGFzc2VkCi1bIDI0OiBQQVNTIF0gc2hhZGVyLnZlcnRleF9hdHRyaWJfYXJy
YXlfZGl2aXNvcjogUGFzc2VkCi1bIDI1OiBQQVNTIF0gc2hhZGVyLnZlcnRleF9hdHRyaWJfYXJy
YXlfYnVmZmVyX2JpbmRpbmc6IFBhc3NlZAotWyAyNjogUEFTUyBdIHNoYWRlci52ZXJ0ZXhfYXR0
cmliX29mZnNldDogUGFzc2VkCi1bIDI3OiBQQVNTIF0gc2hhZGVyLnVuaWZvcm1fdmFsdWVfZmxv
YXQ6IFBhc3NlZAotWyAyODogUEFTUyBdIHNoYWRlci51bmlmb3JtX3ZhbHVlX2ludDogUGFzc2Vk
Ci1bIDI5OiBQQVNTIF0gc2hhZGVyLnVuaWZvcm1fdmFsdWVfdWludDogUGFzc2VkCi1bIDMwOiBQ
QVNTIF0gc2hhZGVyLnVuaWZvcm1fdmFsdWVfYm9vbGVhbjogUGFzc2VkCi1bIDMxOiBQQVNTIF0g
c2hhZGVyLnVuaWZvcm1fdmFsdWVfc2FtcGxlcjogUGFzc2VkCi1bIDMyOiBQQVNTIF0gc2hhZGVy
LnVuaWZvcm1fdmFsdWVfYXJyYXk6IFBhc3NlZAotWyAzMzogUEFTUyBdIHNoYWRlci51bmlmb3Jt
X3ZhbHVlX21hdHJpeDogUGFzc2VkCi1bIDM0OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92ZXJ0
ZXhfbG93cF9mbG9hdDogUGFzc2VkCi1bIDM1OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92ZXJ0
ZXhfbWVkaXVtcF9mbG9hdDogUGFzc2VkCi1bIDM2OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92
ZXJ0ZXhfaGlnaHBfZmxvYXQ6IFBhc3NlZAotWyAzNzogUEFTUyBdIHNoYWRlci5wcmVjaXNpb25f
dmVydGV4X2xvd3BfaW50OiBQYXNzZWQKLVsgMzg6IFBBU1MgXSBzaGFkZXIucHJlY2lzaW9uX3Zl
cnRleF9tZWRpdW1wX2ludDogUGFzc2VkCi1bIDM5OiBQQVNTIF0gc2hhZGVyLnByZWNpc2lvbl92
ZXJ0ZXhfaGlnaHBfaW50OiBQYXNzZWQKLVsgNDA6IFBBU1MgXSBzaGFkZXIucHJlY2lzaW9uX2Zy
YWdtZW50X2xvd3BfZmxvYXQ6IFBhc3NlZAotWyA0MTogUEFTUyBdIHNoYWRlci5wcmVjaXNpb25f
ZnJhZ21lbnRfbWVkaXVtcF9mbG9hdDogUGFzc2VkCi1bIDQyOiBQQVNTIF0gc2hhZGVyLnByZWNp
c2lvbl9mcmFnbWVudF9oaWdocF9mbG9hdDogUGFzc2VkCi1bIDQzOiBQQVNTIF0gc2hhZGVyLnBy
ZWNpc2lvbl9mcmFnbWVudF9sb3dwX2ludDogUGFzc2VkCi1bIDQ0OiBQQVNTIF0gc2hhZGVyLnBy
ZWNpc2lvbl9mcmFnbWVudF9tZWRpdW1wX2ludDogUGFzc2VkCi1bIDQ1OiBQQVNTIF0gc2hhZGVy
LnByZWNpc2lvbl9mcmFnbWVudF9oaWdocF9pbnQ6IFBhc3NlZAotWyA0NjogUEFTUyBdIHNoYWRl
ci5wcmVjaXNpb25fZnJhZ21lbnRfaGlnaHBfaW50OiBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotWyBGQUlMIF0gNiBmYWlsdXJlcyByZXBvcnRlZAorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3Nl
ZAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>