<?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>98432</bug_id>
          
          <creation_ts>2012-10-04 11:33:34 -0700</creation_ts>
          <short_desc>[WebKit2] Create an API for adding and removing user stylesheets from a page group</short_desc>
          <delta_ts>2022-02-27 23:56:07 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734875</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-10-04 11:33:34 -0700</bug_when>
    <thetext>[WebKit2] Create an API for adding and removing user stylesheets from a page group</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734924</commentid>
    <comment_count>1</comment_count>
      <attachid>167156</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-10-04 12:23:36 -0700</bug_when>
    <thetext>Created attachment 167156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734968</commentid>
    <comment_count>2</comment_count>
      <attachid>167156</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 13:29:21 -0700</bug_when>
    <thetext>Comment on attachment 167156
Patch

Attachment 167156 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14171365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734971</commentid>
    <comment_count>3</comment_count>
      <attachid>167156</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-04 13:31:23 -0700</bug_when>
    <thetext>Comment on attachment 167156
Patch

Attachment 167156 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14178178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734974</commentid>
    <comment_count>4</comment_count>
      <attachid>167166</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-10-04 13:40:47 -0700</bug_when>
    <thetext>Created attachment 167166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734993</commentid>
    <comment_count>5</comment_count>
      <attachid>167166</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-10-04 13:54:26 -0700</bug_when>
    <thetext>Comment on attachment 167166
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm:36
&gt; -#import &lt;WebKit2/WKBrowsingContextGroup.h&gt;
&gt; +#import &quot;PlatformUtilities.h&quot;
&gt; +#import &lt;JavaScriptCore/JSRetainPtr.h&gt;
&gt; +#import &lt;JavaScriptCore/JavaScriptCore.h&gt;
&gt; +#import &lt;WebKit2/WKRetainPtr.h&gt;
&gt; +#import &lt;WebKit2/WKSerializedScriptValue.h&gt;
&gt; +#import &lt;WebKit2/WKViewPrivate.h&gt;
&gt; +#import &lt;WebKit2/WebKit2.h&gt;
&gt; +#import &lt;WebKit2/WebKit2_C.h&gt;

This file was added by mistake. I&apos;ll remove it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734994</commentid>
    <comment_count>6</comment_count>
      <attachid>167166</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-10-04 13:55:15 -0700</bug_when>
    <thetext>Comment on attachment 167166
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm:36
&gt;&gt; +#import &lt;WebKit2/WebKit2_C.h&gt;
&gt; 
&gt; This file was added by mistake. I&apos;ll remove it before landing.

Er, these includes, not this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735080</commentid>
    <comment_count>7</comment_count>
      <attachid>167166</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-04 15:40:08 -0700</bug_when>
    <thetext>Comment on attachment 167166
Patch

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

&gt; Source/WebKit2/Shared/ImmutableArray.h:53
&gt; +        return adoptRef(new ImmutableArray(entries, size, /* shouldAdoptReferences */ false));
&gt; +    }
&gt; +    static PassRefPtr&lt;ImmutableArray&gt; adopt(APIObject** entries, size_t size)
&gt; +    {
&gt; +        return adoptRef(new ImmutableArray(entries, size, /* shouldAdoptReferences */ true));
&gt;      }

It would probably be cleaner to do this with a Tag (See RetainPtr for an example of this) since this is always known at compile time.

&gt; Source/WebKit2/Shared/UserContentContainer.cpp:35
&gt; +class UserContentItemMessageEncoder : public UserMessageEncoder&lt;UserContentItemMessageEncoder&gt; {

I don&apos;t think this should be using user message coding, since we know the object graph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735274</commentid>
    <comment_count>8</comment_count>
      <attachid>167239</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-10-04 20:17:40 -0700</bug_when>
    <thetext>Created attachment 167239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738502</commentid>
    <comment_count>9</comment_count>
      <attachid>167239</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-09 21:27:12 -0700</bug_when>
    <thetext>Comment on attachment 167239
Patch

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

&gt; Source/WebKit2/Shared/ImmutableArray.cpp:35
&gt; +ImmutableArray::ImmutableArray(ImmutableArray::AdoptTag, APIObject** entries, size_t size)

I think you can just call it AdoptTag here.

&gt; Source/WebKit2/Shared/ImmutableArray.cpp:43
&gt; +: m_entries(size)

Please indent.

&gt; Source/WebKit2/Shared/UserContentContainer.cpp:89
&gt; +        vector.uncheckedAppend(adoptRef(WebString::create(string).leakRef()));

Is the leakRef() adoptRef() craziness needed here?.  Could you not just do vector.uncheckedAppend(WebString::create(string))?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739255</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-10-10 13:28:27 -0700</bug_when>
    <thetext>Committed r130948: &lt;http://trac.webkit.org/changeset/130948&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167156</attachid>
            <date>2012-10-04 12:23:36 -0700</date>
            <delta_ts>2012-10-04 13:40:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98432-20121004122245.patch</filename>
            <type>text/plain</type>
            <size>56408</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmM5YzMwZjE5YzhkNjc4
MWU4M2RiMjRkZmMyNDI1MGZmMjkxOGVjZS4uMTZmMDJkNDI3YzAwYjUxYmVkYzMxNDBhZmEyYTYy
ZjY5OWRkMjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0xMC0wNCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIENyZWF0ZSBh
biBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZXNoZWV0cyBmcm9tIGEgcGFn
ZSBncm91cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdGhlIGZvbGxvd2luZyBBUEkgdG8gV0tCcm93c2luZ0NvbnRleHRHcm91
cDoKKworICAgICAgICAtICh2b2lkKWFkZFVzZXJTdHlsZVNoZWV0OihOU1N0cmluZyAqKXNvdXJj
ZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgd2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0
IGJsYWNrbGlzdDooTlNBcnJheSAqKWJsYWNrbGlzdCBtYWluRnJhbWVPbmx5OihCT09MKW1haW5G
cmFtZU9ubHk7CisgICAgICAgIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzOworCisg
ICAgICAgIFNoZWV0cyBhZGRlZCB2aWEgdGhpcyBBUEkgYXJlIHNlbnQgdG8gYWxsIHByb2Nlc3Nl
cyB0aGF0IGNvbnRhaW4gYSBwYWdlCisgICAgICAgIGluIHRoZSBnaXZlbiBwYWdlIGdyb3VwLiBT
aGVldHMgYXJlIGFsc28gY2FjaGVkIGluIHRoZSBVSSBwcm9jZXNzIGluIGEKKyAgICAgICAgbmV3
IG9iamVjdCBjYWxsZWQgVXNlckNvbnRlbnRDb250YWluZXIsIHdoaWNoIGlzIGEgcHJvcGVydHkg
b2YgZWFjaAorICAgICAgICBncm91cCdzIFdlYlBhZ2VHcm91cERhdGEgYW5kIGlzIHNlbnQgdG8g
bmV3IHdlYiBwcm9jZXNzZXMgZHVyaW5nIHBhZ2UKKyAgICAgICAgaW5pdGlhbGl6YXRpb24uCisK
KyAgICAgICAgVGhpcyBpcyBsZXNzIHRoYW4gaWRlYWwsIHNpbmNlIG5ldyBwYWdlcyBhZGRlZCB0
byBhIHByZS1leGlzdGluZworICAgICAgICBwcm9jZXNzIC8gcGFnZSBncm91cCBjb21iaW5hdGlv
biB3aWxsIHNlbmQgcmVkdW5kYW50IHVzZXIgc3R5bGVzaGVldAorICAgICAgICBzdHJpbmdzIG92
ZXIgdGhlIHdpcmUuIFRvIGF2b2lkIHRoaXMgd2UnZCBoYXZlIHRvIGtlZXAgdHJhY2sgdHJhY2sg
b2YKKyAgICAgICAgdGhlIGdyb3VwcyB0aGF0IGN1cnJlbnRseSBleGlzdCBpbiBlYWNoIHByb2Nl
c3MgYW5kIG9ubHkgc2VuZCB1c2VyCisgICAgICAgIGNvbnRlbnQgZHVyaW5nIHBhZ2UgY3JlYXRp
b24gaWYgaXQgaXMgdGhlIGZpcnN0IHRpbWUgYSBwcm9jZXNzIGhhcyBzZWVuCisgICAgICAgIHRo
ZSBwYWdlJ3MgZ3JvdXAuIEkgZGVjaWRlZCB0byBub3QgYWRkIHRoaXMgY29tcGxleGl0eSBmb3Ig
dGhlIHRpbWUKKyAgICAgICAgYmVpbmcsIGJ1dCB3ZSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGl0
IGlmIHdlIGZpbmQgdGhhdCB0aGUgY3VycmVudAorICAgICAgICBhcHByb2FjaCBpbXBhY3RzIHBl
cmZvcm1hbmNlIGZvciBjbGllbnRzIHRoYXQgaGVhdmlseSB1dGlsaXplIHVzZXIKKyAgICAgICAg
Y29udGVudC4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0FycmF5LmNwcDoKKyAgICAgICAg
KFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyk6IEFkZCBhIFdLQXJyYXkgY3JlYXRpb24gZnVu
Y3Rpb24gdGhhdAorICAgICAgICBhZG9wdHMgdGhlIGluY29taW5nIFdLVHlwZVJlZnMgcmF0aGVy
IHRoYW4gcmVmaW5nIHRoZW0uCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQXJyYXkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6IE1vdmUgV0tVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIG91dCBvZgorICAgICAgICBXS0J1bmRsZVByaXZhdGUuaCBzbyBpdCBjYW4gYmUgdXNl
ZCBpbiBXS1BhZ2VHcm91cCwgdG9vLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENG
LmNwcDoKKyAgICAgICAgKFdLVVJMQ3JlYXRlV2l0aENGVVJMKTogUmV0dXJuIDAgZm9yIG51bGwg
Q0ZVUkxSZWZzIGluc3RlYWQgb2YgY3Jhc2hpbmcKKyAgICAgICAgaW5zaWRlIENGVVJMR2V0U3Ry
aW5nKCkuCisgICAgICAgICogU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5KTogQWRkIGFuIHRoaXJkIGFyZ3Vt
ZW50IGNhbGxlZAorICAgICAgICBzaG91bGRBZG9wdFJlZmVyZW5jZXMgdG8gdGhpcyBjdG9yLCB1
c2VkIGJ5IFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcy4KKyAgICAgICAgKiBTaGFyZWQvSW1t
dXRhYmxlQXJyYXkuaDoKKyAgICAgICAgKFdlYktpdDo6SW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSk6
IENhbGwgdGhlIGN0b3Igd2l0aCBzaG91bGRBZG9wdFJlZmVyZW5jZXMgZXF1YWwgdG8gZmFsc2Uu
CisgICAgICAgIChXZWJLaXQ6OkltbXV0YWJsZUFycmF5OjphZG9wdCk6IENhbGwgdGhlIGN0b3Ig
d2l0aCBzaG91bGRBZG9wdFJlZmVyZW5jZXMgZXF1YWwgdG8gdHJ1ZS4KKyAgICAgICAgKiBTaGFy
ZWQvVXNlckNvbnRlbnRDb250YWluZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFVzZXJDb250ZW50
SXRlbU1lc3NhZ2VFbmNvZGVyKTogQ3JlYXRlIGEgVXNlck1lc3NhZ2VFbmNvZGVyIGZvcgorICAg
ICAgICBzZXJpYWxpemluZyBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSdzIEFQSU9iamVjdHMu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNvZGVyOjpVc2VyQ29u
dGVudEl0ZW1NZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50SXRl
bU1lc3NhZ2VFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAoVXNlckNvbnRlbnRJdGVtTWVzc2Fn
ZURlY29kZXIpOiBDcmVhdGUgYSBVc2VyTWVzc2FnZUVuY29kZXIgZm9yCisgICAgICAgIGRlc2Vy
aWFsaXppbmcgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0ncyBBUElPYmplY3RzLgorICAgICAg
ICAoV2ViS2l0OjpVc2VyQ29udGVudEl0ZW1NZXNzYWdlRGVjb2Rlcjo6VXNlckNvbnRlbnRJdGVt
TWVzc2FnZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudEl0ZW1NZXNzYWdl
RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250YWluZXI6
Okl0ZW06Okl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudENvbnRhaW5lcjo6SXRl
bTo6ZW5jb2RlKTogRW5jb2RlIHRoZSBpdGVtJ3MKKyAgICAgICAgcHJvcGVydGllcyB1c2luZyBV
c2VyQ29udGVudEl0ZW1NZXNzYWdlRW5jb2Rlci4KKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRl
bnRDb250YWluZXI6Okl0ZW06OmRlY29kZSk6IERlY29kZSB0aGUgaXRlbSdzCisgICAgICAgIHBy
b3BlcnRpZXMgdXNpbmcgVXNlckNvbnRlbnRJdGVtTWVzc2FnZURlY29kZXIuCisgICAgICAgIChX
ZWJLaXQ6OnRvU3RyaW5nVmVjdG9yKTogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0
aW5nIGFuCisgICAgICAgIEltbXV0YWJsZUFycmF5IG9mIFdlYlN0cmluZ3MgdG8gYSBWZWN0b3Ig
b2YgU3RyaW5ncy4KKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06
OndoaXRlbGlzdCk6IFVzZSB0b1N0cmluZ1ZlY3RvcigpLgorICAgICAgICAoV2ViS2l0OjpVc2Vy
Q29udGVudENvbnRhaW5lcjo6SXRlbTo6YmxhY2tsaXN0KTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjplbmNvZGUpOiBFbmNvZGUgdGhlIFZlY3RvciBvZiBV
c2VyQ29udGVudENvbnRhaW5lcjo6SXRlbXMuCisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50
Q29udGFpbmVyOjpkZWNvZGUpOiBEZWNvZGUgdGhlIFZlY3RvciBvZiBVc2VyQ29udGVudENvbnRh
aW5lcjo6SXRlbXMuCisgICAgICAgICogU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKTogSW5jbHVkZSB1c2VyU3R5bGVTaGVldHMg
d2hlbiBlbmNvZGluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2Rl
KTogSW5jbHVkZSB1c2VyU3R5bGVTaGVldHMgd2hlbiBkZWNvZGluZy4KKyAgICAgICAgKiBTaGFy
ZWQvV2ViUGFnZUdyb3VwRGF0YS5oOgorICAgICAgICAoV2ViUGFnZUdyb3VwRGF0YSk6IEFkZCBh
IFVzZXJDb250ZW50Q29udGFpbmVyIGNhbGxlZCB1c2VyU3R5bGVTaGVldHMKKyAgICAgICAgdG8g
V2ViUGFnZUdyb3VwRGF0YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAu
Y3BwOiBBZGQgdGhlIEMgU1BJIHZlcnNpb24gb2YgdGhlIE9iamVjdGl2ZS1DIEFQSS4KKyAgICAg
ICAgKFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV0tQYWdlR3JvdXBS
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VHcm91cC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0
R3JvdXAuaDogQWRkIHRoZSBPYmplY3RpdmUtQyBBUEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbToKKyAgICAgICAgKGNyZWF0ZVdLQXJyYXkp
OiBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhbiBOU0FycmF5IG9mIE5TU3Ry
aW5ncyB0byBhIFdLQXJyYXkgb2YgV0tTdHJpbmdzLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OmJhc2VVUkw6d2hpdGVsaXN0OmJsYWNrbGlzdDpt
YWluRnJhbWVPbmx5Ol0pOgorICAgICAgICBJbXBsZW1lbnQgdGhlIE9iamVjdGl2ZS1DIEFQSSBp
biB0ZXJtcyBvZiB0aGUgQyBTUEkuCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAg
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OmFkZFVzZXJT
dHlsZVNoZWV0KTogQWRkIHRoZSBuZXcgc2hlZXQgdG8gdGhlCisgICAgICAgIGdyb3VwJ3MgV2Vi
UGFnZUdyb3VwRGF0YSwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBncm91cCdzIHNoZWV0cyBhcmUK
KyAgICAgICAgc2VudCB0byBuZXcgd2ViIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOiBEaXR0byBmb3IgcmVtb3ZhbC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VHcm91cDo6c2VuZFRvQWxsUHJvY2Vzc2VzSW5Hcm91cCk6IEFkZCBhIGhlbHBlciBtZXNz
YWdlCisgICAgICAgIHRoYXQgc2VuZHMgYSBtZXNzYWdlIHRvIGFsbCBwcm9jZXNzZXMgdGhhdCBo
YXZlIGEgcGFnZSBpbiB0aGUgY3VycmVudAorICAgICAgICBncm91cC4gVGhpcyBpcyB1c2VkIHRv
IGFkZCBuZXcgdXNlciBzaGVldHMgdG8gYWxyZWFkeS1pbml0aWFsaXplZCBwYWdlCisgICAgICAg
IGdyb3VwcyBpbiB0aGUgVUkgcHJvY2Vzc2VzLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBNb3ZlZAorICAgICAgICBXS1VzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgZnJvbSBoZXJlIHRvIFdLQmFzZS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91
cFByb3h5OjpXZWJQYWdlR3JvdXBQcm94eSk6IEFkZCBlYWNoIHNoZWV0IGluIHRoZQorICAgICAg
ICBXZWJQYWdlR3JvdXBEYXRhIHRvIFdlYkNvcmUncyBwYWdlIGdyb3VwLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlR3JvdXBQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQpOiBBZGQgdGhlIHNoZWV0
IHJlY2VpdmVkCisgICAgICAgIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gV2ViQ29yZSdzIHBhZ2Ug
Z3JvdXAuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cFByb3h5OjpyZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMpOiBSZW1vdmUgYWxsCisgICAgICAgIHNoZWV0cyBmcm9tIFdlYkNvcmUncyBw
YWdlIGdyb3VwLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5tZXNz
YWdlcy5pbjogRGVmaW5lCisgICAgICAgIEFkZFVzZXJTdHlsZVNoZWV0IGFuZCBSZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMsIHR3byBtZXNzYWdlcyBzZW50IGZyb20KKyAgICAgICAgdGhlIFVJIHBy
b2Nlc3MgdG8gYSB3ZWIgcHJvY2VzcydzIFdlYlBhZ2VHcm91cFByb3h5LgorCiAyMDEyLTEwLTA0
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKICAgICAg
ICAgW1F0XSBGaXggdGhlIHRzdF9RUXVpY2tXZWJWaWV3OjpzY3JvbGxSZXF1ZXN0IGF1dG8gdGVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCmluZGV4IDZjYTlhZjI3M2Nk
OTEyNDNjY2JiYzQ4NDU2MGI4MjM5MGVjZTI0NzAuLjViZjM1ZTNjM2VkZjcwNDVkMmU4ZmE4ZmVi
NzI5ODI5M2I0NmYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAK
QEAgLTQyLDYgKzQyLDEyIEBAIFdLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZShXS1R5cGVSZWYqIHZh
bHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQogICAgIHJldHVybiB0b0FQSShhcnJheS5yZWxl
YXNlKCkubGVha1JlZigpKTsKIH0KIAorV0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdW
YWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVlcykKK3sKKyAgICBS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGFycmF5ID0gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHJlaW50
ZXJwcmV0X2Nhc3Q8QVBJT2JqZWN0Kio+KGNvbnN0X2Nhc3Q8dm9pZCoqPih2YWx1ZXMpKSwgbnVt
YmVyT2ZWYWx1ZXMpOworICAgIHJldHVybiB0b0FQSShhcnJheS5yZWxlYXNlKCkubGVha1JlZigp
KTsKK30KKwogV0tUeXBlUmVmIFdLQXJyYXlHZXRJdGVtQXRJbmRleChXS0FycmF5UmVmIGFycmF5
UmVmLCBzaXplX3QgaW5kZXgpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChhcnJheVJlZiktPmF0KGlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5oCmluZGV4IGRhNDU2MGEwYTQy
N2E5Mjc3MTk5YWU4MDA2ZWNlZDQ3Mjc3NzJmODcuLjI1OTAwZjMxMzllZDkwM2M3YWZhNDdjMjVi
MTA2NDUxNGJjMDQ2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0FycmF5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuaApAQCAt
MzcsNiArMzcsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0FycmF5R2V0
VHlwZUlEKCk7CiAKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVm
KiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVlcyk7CitXS19FWFBPUlQgV0tBcnJheVJlZiBX
S0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1i
ZXJPZlZhbHVlcyk7CiAKIFdLX0VYUE9SVCBXS1R5cGVSZWYgV0tBcnJheUdldEl0ZW1BdEluZGV4
KFdLQXJyYXlSZWYgYXJyYXksIHNpemVfdCBpbmRleCk7CiBXS19FWFBPUlQgc2l6ZV90IFdLQXJy
YXlHZXRTaXplKFdLQXJyYXlSZWYgYXJyYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCmluZGV4IGFiNmNhODRjZGE1N2Y4ZDU0NWQ4ODU3ZTE4YzkxM2Y1MTZlNTE2MzUuLmY0ZWE2
MDY5OTU4M2QxZjc5ZGI5ZGZlZTdiZTBmZDliODJmZTlhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tCYXNlLmgKQEAgLTc5LDYgKzc5LDEyIEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLVVJMUmVxdWVzdCogV0tVUkxSZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tVUkxSZXNwb25zZSogV0tVUkxSZXNwb25zZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuKiBXS1VzZXJDb250ZW50VVJMUGF0dGVy
blJlZjsKIAorZW51bSBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgeworICAgIGtXS0luamVj
dEluQWxsRnJhbWVzLAorICAgIGtXS0luamVjdEluVG9wRnJhbWVPbmx5Cit9OwordHlwZWRlZiBl
bnVtIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM7CisKIC8qIFdlYktpdDIgbWFpbiBBUEkgdHlwZXMgKi8KIAogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciogV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlclJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VS
TENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcAppbmRl
eCBlMWQ0ZWU3YmJkYWI0ODIyNzQ2YmYxYmY3YzQyYWM0MzQ5MjM3NWM0Li40ZTQwYmRmNGU4MGY5
Mzg4ZWE1MzNhZmY2MjQ1YWUxNTc4YTA3Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL2NmL1dLVVJMQ0YuY3BwCkBAIC0zOCw2ICszOCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aENGVVJMKENGVVJMUmVmIGNmVVJMKQogewor
ICAgIGlmICghY2ZVUkwpCisgICAgICAgIHJldHVybiAwOworCiAgICAgU3RyaW5nIHVybFN0cmlu
ZyhDRlVSTEdldFN0cmluZyhjZlVSTCkpOwogICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh1cmxT
dHJpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFy
cmF5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5jcHAKaW5kZXgg
NjdiMmEzNGM1Y2RiZWE0ZmZmOGYzYWM2M2M5YTYzNTU3Njk2NzFhYy4uMzQ1ZWViN2JhYzRiNGNh
M2E2MjY4MzdlMThkY2U1OGYyODM4MDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0ltbXV0YWJsZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRh
YmxlQXJyYXkuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAgSW1tdXRhYmxlQXJyYXk6OkltbXV0YWJs
ZUFycmF5KCkKIHsKIH0KIAotSW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5KEFQSU9iamVj
dCoqIGVudHJpZXMsIHNpemVfdCBzaXplKQorSW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5
KEFQSU9iamVjdCoqIGVudHJpZXMsIHNpemVfdCBzaXplLCBib29sIHNob3VsZEFkb3B0UmVmZXJl
bmNlcykKICAgICA6IG1fZW50cmllcyhzaXplKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBtX2VudHJpZXNbaV0gPSBlbnRyaWVzW2ldOworICAgICAg
ICBtX2VudHJpZXNbaV0gPSBzaG91bGRBZG9wdFJlZmVyZW5jZXMgPyBhZG9wdFJlZihlbnRyaWVz
W2ldKSA6IGVudHJpZXNbaV07CiB9CiAKIEltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheShW
ZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiYgZW50cmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0lt
bXV0YWJsZUFycmF5LmgKaW5kZXggZTI2ZTRhYTVkYzc4MTdlMmRmYzM5NWE3NDJmNjY5MTBmZGQx
NjE3NS4uOTkwYWEyYjc2YTY5OWYwMmE0ZWE5Y2VjMGJlMTNlNDExZjNhZjc1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmgKQEAgLTQ1LDcgKzQ1LDExIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0ZShBUElP
YmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW1tdXRhYmxlQXJyYXkoZW50cmllcywgc2l6ZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEltbXV0YWJsZUFycmF5KGVudHJpZXMsIHNpemUsIC8qIHNob3VsZEFkb3B0
UmVmZXJlbmNlcyAqLyBmYWxzZSkpOworICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbW11
dGFibGVBcnJheT4gYWRvcHQoQVBJT2JqZWN0KiogZW50cmllcywgc2l6ZV90IHNpemUpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltbXV0YWJsZUFycmF5KGVudHJpZXMsIHNp
emUsIC8qIHNob3VsZEFkb3B0UmVmZXJlbmNlcyAqLyB0cnVlKSk7CiAgICAgfQogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBhZG9wdChWZWN0b3I8UmVmUHRyPEFQSU9iamVj
dD4gPiYgZW50cmllcykKICAgICB7CkBAIC02NCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJvdGVj
dGVkOgogICAgIEltbXV0YWJsZUFycmF5KCk7Ci0gICAgSW1tdXRhYmxlQXJyYXkoQVBJT2JqZWN0
KiogZW50cmllcywgc2l6ZV90IHNpemUpOworICAgIEltbXV0YWJsZUFycmF5KEFQSU9iamVjdCoq
IGVudHJpZXMsIHNpemVfdCwgYm9vbCBzaG91bGRBZG9wdFJlZmVyZW5jZXMpOwogICAgIEltbXV0
YWJsZUFycmF5KFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+JiBlbnRyaWVzKTsKIAogICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNjZGFm
OTQxYjExYjcyMGFkZGY5Y2IyODFkZmRhZjJjMDRkNjZmMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5jcHAKQEAgLTAsMCArMSwx
ODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlckNv
bnRlbnRDb250YWluZXIuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgorI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlQ29kZXJzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworICAgIAorY2xhc3MgVXNlckNvbnRlbnRJdGVtTWVzc2FnZUVuY29kZXIg
OiBwdWJsaWMgVXNlck1lc3NhZ2VFbmNvZGVyPFVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNvZGVy
PiB7CitwdWJsaWM6ICAgIAorICAgIGV4cGxpY2l0IFVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNv
ZGVyKEFQSU9iamVjdCogcm9vdCkKKyAgICA6IFVzZXJNZXNzYWdlRW5jb2RlcjxVc2VyQ29udGVu
dEl0ZW1NZXNzYWdlRW5jb2Rlcj4ocm9vdCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFQSU9iamVjdDo6VHlwZSB0eXBlID0gQVBJT2JqZWN0OjpUeXBlTnVsbDsKKyAgICAg
ICAgaWYgKGJhc2VFbmNvZGUoZW5jb2RlciwgdHlwZSkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK307CisKK2NsYXNzIFVzZXJDb250
ZW50SXRlbU1lc3NhZ2VEZWNvZGVyIDogcHVibGljIFVzZXJNZXNzYWdlRGVjb2RlcjxVc2VyQ29u
dGVudEl0ZW1NZXNzYWdlRGVjb2Rlcj4geworcHJpdmF0ZToKKyAgICB0eXBlZGVmIFVzZXJNZXNz
YWdlRGVjb2RlcjxVc2VyQ29udGVudEl0ZW1NZXNzYWdlRGVjb2Rlcj4gQmFzZTsKKworcHVibGlj
OgorICAgIFVzZXJDb250ZW50SXRlbU1lc3NhZ2VEZWNvZGVyKFVzZXJDb250ZW50SXRlbU1lc3Nh
Z2VEZWNvZGVyJiwgUmVmUHRyPEFQSU9iamVjdD4mIHJvb3QpCisgICAgOiBCYXNlKHJvb3QpCisg
ICAgeworICAgIH0KKworICAgIFVzZXJDb250ZW50SXRlbU1lc3NhZ2VEZWNvZGVyKFJlZlB0cjxB
UElPYmplY3Q+JiByb290KQorICAgIDogQmFzZShyb290KQorICAgIHsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBVc2Vy
Q29udGVudEl0ZW1NZXNzYWdlRGVjb2RlciYgY29kZXIpCisgICAgeworICAgICAgICBBUElPYmpl
Y3Q6OlR5cGUgdHlwZSA9IEFQSU9iamVjdDo6VHlwZU51bGw7CisgICAgICAgIGlmICghQmFzZTo6
YmFzZURlY29kZShkZWNvZGVyLCBjb2RlciwgdHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKK1VzZXJDb250ZW50Q29udGFp
bmVyOjpJdGVtOjpJdGVtKCkKK3sKK30KKworVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06Okl0
ZW0oUGFzc1JlZlB0cjxXZWJTdHJpbmc+IHNvdXJjZSwgUGFzc1JlZlB0cjxXZWJVUkw+IHVybCwg
UGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gd2hpdGVsaXN0LCBQYXNzUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBibGFja2xpc3QsIEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBUeXBlIHR5
cGUpCisgICAgOiBtX3NvdXJjZShzb3VyY2UpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3do
aXRlbGlzdCh3aGl0ZWxpc3QpCisgICAgLCBtX2JsYWNrbGlzdChibGFja2xpc3QpCisgICAgLCBt
X2luamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKQorICAgICwgbV90eXBlKHR5cGUpCit7Cisg
ICAgQVNTRVJUKG1fc291cmNlKTsKK30KKwordm9pZCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRl
bTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyLT5lbmNvZGUoVXNlckNvbnRlbnRJdGVtTWVzc2FnZUVuY29kZXIobV9zb3VyY2Uu
Z2V0KCkpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoVXNlckNvbnRlbnRJdGVtTWVzc2FnZUVuY29k
ZXIobV91cmwuZ2V0KCkpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoVXNlckNvbnRlbnRJdGVtTWVz
c2FnZUVuY29kZXIobV93aGl0ZWxpc3QuZ2V0KCkpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoVXNl
ckNvbnRlbnRJdGVtTWVzc2FnZUVuY29kZXIobV9ibGFja2xpc3QuZ2V0KCkpKTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5qZWN0ZWRGcmFtZXMpKTsKKyAg
ICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdHlwZSkpOworfQorCiti
b29sIFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSYgaXRlbSkKK3sKKyAg
ICBBU1NFUlQoIWl0ZW0ubV9zb3VyY2UpOworICAgIEFTU0VSVCghaXRlbS5tX3VybCk7CisgICAg
QVNTRVJUKCFpdGVtLm1fd2hpdGVsaXN0KTsKKyAgICBBU1NFUlQoIWl0ZW0ubV9ibGFja2xpc3Qp
OworCisgICAgUmVmUHRyPEFQSU9iamVjdD4gb2JqZWN0OworCisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoVXNlckNvbnRlbnRJdGVtTWVzc2FnZURlY29kZXIob2JqZWN0KSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBBU1NFUlQob2JqZWN0LT50eXBlKCkgPT0gQVBJT2JqZWN0OjpUeXBl
U3RyaW5nKTsKKyAgICBpdGVtLm1fc291cmNlID0gc3RhdGljX3BvaW50ZXJfY2FzdDxXZWJTdHJp
bmc+KG9iamVjdC5yZWxlYXNlKCkpOworCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoVXNlckNv
bnRlbnRJdGVtTWVzc2FnZURlY29kZXIob2JqZWN0KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBBUElPYmplY3Q6OlR5cGVV
UkwpOworICAgIGl0ZW0ubV91cmwgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYlVSTD4ob2JqZWN0
LnJlbGVhc2UoKSk7CisKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShVc2VyQ29udGVudEl0ZW1N
ZXNzYWdlRGVjb2RlcihvYmplY3QpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VS
VCghb2JqZWN0IHx8IG9iamVjdC0+dHlwZSgpID09IEFQSU9iamVjdDo6VHlwZUFycmF5KTsKKyAg
ICBpdGVtLm1fd2hpdGVsaXN0ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxJbW11dGFibGVBcnJheT4o
b2JqZWN0LnJlbGVhc2UoKSk7CisKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShVc2VyQ29udGVu
dEl0ZW1NZXNzYWdlRGVjb2RlcihvYmplY3QpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+dHlwZSgpID09IEFQSU9iamVjdDo6VHlwZUFycmF5
KTsKKyAgICBpdGVtLm1fYmxhY2tsaXN0ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxJbW11dGFibGVB
cnJheT4ob2JqZWN0LnJlbGVhc2UoKSk7CisKKyAgICB1aW50MzJfdCBpbmplY3RlZEZyYW1lczsK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihpbmplY3RlZEZyYW1lcykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpdGVtLm1faW5qZWN0ZWRGcmFtZXMgPSBzdGF0aWNfY2FzdDxJ
bmplY3RlZEZyYW1lcz4oaW5qZWN0ZWRGcmFtZXMpOworCisgICAgdWludDMyX3QgdHlwZTsKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGl0ZW0ubV90eXBlID0gc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0b1N0cmlu
Z1ZlY3RvcihJbW11dGFibGVBcnJheSogYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LT5zaXplKCk7Cisg
ICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBPd25QdHI8
VmVjdG9yPFN0cmluZz4gPiBzdHJpbmdWZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmlu
Zz4oKSk7CisgICAgc3RyaW5nVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdlYlN0cmlu
Zyogd2ViU3RyaW5nID0gYXJyYXktPmF0PFdlYlN0cmluZz4oaSk7CisgICAgICAgIEFTU0VSVCh3
ZWJTdHJpbmcpOworICAgICAgICBzdHJpbmdWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCh3ZWJTdHJp
bmctPnN0cmluZygpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHN0cmluZ1ZlY3Rvci5yZWxl
YXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBVc2VyQ29udGVudENvbnRh
aW5lcjo6SXRlbTo6d2hpdGVsaXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9TdHJpbmdWZWN0
b3IobV93aGl0ZWxpc3QuZ2V0KCkpOworfQorCitQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4g
VXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OmJsYWNrbGlzdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRvU3RyaW5nVmVjdG9yKG1fYmxhY2tsaXN0LmdldCgpKTsKK30KKwordm9pZCBVc2VyQ29u
dGVudENvbnRhaW5lcjo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUobV91c2VyQ29udGVudCk7Cit9CisKK2Jvb2wg
VXNlckNvbnRlbnRDb250YWluZXI6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFVzZXJDb250ZW50Q29udGFpbmVyJiB1c2VyQ29udGVudENvbnRhaW5lcikKK3sKKyAg
ICBBU1NFUlQodXNlckNvbnRlbnRDb250YWluZXIubV91c2VyQ29udGVudC5pc0VtcHR5KCkpOwor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVzZXJDb250ZW50Q29udGFpbmVyLm1fdXNlckNvbnRl
bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJD
b250ZW50Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250
YWluZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMGJmMjE1YTMzYmZiOTIxMjBlMGJkYTc0ZjY4MWI1ZDYxY2Fh
YmFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50
Q29udGFpbmVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlckNv
bnRlbnRDb250YWluZXJfaAorI2RlZmluZSBVc2VyQ29udGVudENvbnRhaW5lcl9oCisKKyNpbmNs
dWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlVSTC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xh
c3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNl
ckNvbnRlbnRDb250YWluZXIgeworcHVibGljOgorICAgIGNsYXNzIEl0ZW0geworICAgIHB1Ymxp
YzoKKyAgICAgICAgZW51bSBUeXBlIHsKKyAgICAgICAgICAgIFR5cGVTdHlsZXNoZWV0LAorICAg
ICAgICAgICAgVHlwZVNjcmlwdAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgZW51bSBJ
bmplY3RlZEZyYW1lcyB7CisgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcywKKyAgICAgICAg
ICAgIEluamVjdEluVG9wRnJhbWVPbmx5CisgICAgICAgIH07CisKKyAgICAgICAgSXRlbSgpOwor
ICAgICAgICBJdGVtKFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBzb3VyY2UsIFBhc3NSZWZQdHI8V2Vi
VVJMPiwgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gd2hpdGVsaXN0LCBQYXNzUmVmUHRyPElt
bXV0YWJsZUFycmF5PiBibGFja2xpc3QsIEluamVjdGVkRnJhbWVzLCBUeXBlKTsKKworICAgICAg
ICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAgICAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEl0ZW0mKTsKKyAg
ICAgICAgCisgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2UtPnN0cmluZygpOyB9CisgICAgICAgIFdlYkNvcmU6OktVUkwgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gIW1fdXJsIHx8IG1fdXJsLT5zdHJpbmcoKS5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFu
a1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIG1fdXJsLT5zdHJpbmcoKSk7
IH0KKyAgICAgICAgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IHdoaXRlbGlzdCgpIGNvbnN0
OworICAgICAgICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gYmxhY2tsaXN0KCkgY29uc3Q7
CisgICAgICAgIEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZEZyYW1lczsgfQorICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxXZWJTdHJpbmc+IG1fc291
cmNlOworICAgICAgICBSZWZQdHI8V2ViVVJMPiBtX3VybDsKKyAgICAgICAgUmVmUHRyPEltbXV0
YWJsZUFycmF5PiBtX3doaXRlbGlzdDsKKyAgICAgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBt
X2JsYWNrbGlzdDsKKyAgICAgICAgSW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKKyAg
ICAgICAgVHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqLCBVc2VyQ29udGVudENvbnRhaW5lciYpOworICAgIAorICAgIHZvaWQg
YWRkSXRlbShjb25zdCBJdGVtJiBpdGVtKSB7IG1fdXNlckNvbnRlbnQuYXBwZW5kKGl0ZW0pOyB9
CisgICAgdm9pZCByZW1vdmVBbGxJdGVtcygpIHsgbV91c2VyQ29udGVudC5jbGVhcigpOyB9Cisg
ICAgCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJDb250ZW50LnNpemUo
KTsgfQorICAgIGNvbnN0IEl0ZW0mIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3VzZXJD
b250ZW50LmF0KGkpOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVzZXJDb250ZW50Q29udGFp
bmVyOjpJdGVtPiBtX3VzZXJDb250ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBVc2VyQ29udGVudENvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDEwN2RmMWQxNWNhYTBhNDVmN2Q1YTliZGUwNTUxODEx
ZTI5YjdmYzYuLjQ4OWMxYzBjYjNjYTYyNzEzYTkwMjg0ZjE3Mzk2OTk2MjJiNTkxODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTMzLDEyICszMywx
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdlR3JvdXBEYXRhOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogewotICAgIHJldHVybiBl
bmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oaWRlbnRpZmVyLCBwYWdlR3JvdXBJRCwgdmlzaWJs
ZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQpKTsKKyAgICByZXR1cm4g
ZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGlkZW50aWZlciwgcGFnZUdyb3VwSUQsIHZpc2li
bGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCB1c2VyU3R5bGVTaGVl
dHMpKTsKIH0KIAogYm9vbCBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQogewotICAgIHJldHVy
biBkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGRhdGEuaWRlbnRpZmVyLCBkYXRhLnBhZ2VH
cm91cElELCBkYXRhLnZpc2libGVUb0luamVjdGVkQnVuZGxlLCBkYXRhLnZpc2libGVUb0hpc3Rv
cnlDbGllbnQpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChkYXRh
LmlkZW50aWZlciwgZGF0YS5wYWdlR3JvdXBJRCwgZGF0YS52aXNpYmxlVG9JbmplY3RlZEJ1bmRs
ZSwgZGF0YS52aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCBkYXRhLnVzZXJTdHlsZVNoZWV0cykpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdy
b3VwRGF0YS5oCmluZGV4IDM2ZjZmZTE5YjUxMGI4N2Y4ZjM2MTYyYjE4MDVjMTRiNzY5ZjZkYTku
LmQ5N2U5ZDA1NjliMzk3YzE3YjI0OGQ3MzFmZWU4ZTM5YjFlNGVmYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBX
ZWJQYWdlR3JvdXBEYXRhX2gKICNkZWZpbmUgV2ViUGFnZUdyb3VwRGF0YV9oCiAKKyNpbmNsdWRl
ICJVc2VyQ29udGVudENvbnRhaW5lci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewpAQCAtNDMs
NiArNDUsNyBAQCBzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YSB7CiAgICAgdWludDY0X3QgcGFnZUdy
b3VwSUQ7CiAgICAgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsKICAgICBib29sIHZpc2li
bGVUb0hpc3RvcnlDbGllbnQ7CisgICAgVXNlckNvbnRlbnRDb250YWluZXIgdXNlclN0eWxlU2hl
ZXRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAppbmRleCA4YTRkODZhMDUzNzhiNTQzNDJkMGVj
MmRiODhjOGU5OWU0OTY4NjBhLi45OWI3ODNjOWMyNWJlMGQ2ZTNkN2IxOTZkNGMyNTc1OWYyNzdh
M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5j
cHAKQEAgLTU3LDMgKzU3LDE2IEBAIFdLUHJlZmVyZW5jZXNSZWYgV0tQYWdlR3JvdXBHZXRQcmVm
ZXJlbmNlcyhXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7CiAgICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChwYWdlR3JvdXBSZWYpLT5wcmVmZXJlbmNlcygpKTsKIH0KKwordm9pZCBXS1BhZ2VH
cm91cEFkZFVzZXJTdHlsZVNoZWV0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJp
bmdSZWYgc291cmNlUmVmLCBXS1VSTFJlZiBiYXNlVVJMLCBXS0FycmF5UmVmIHdoaXRlbGlzdCwg
V0tBcnJheVJlZiBibGFja2xpc3QsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3Rl
ZEZyYW1lcykKK3sKKyAgICBpZiAoIXNvdXJjZVJlZikKKyAgICAgICAgcmV0dXJuOworCisgICAg
dG9JbXBsKHBhZ2VHcm91cFJlZiktPmFkZFVzZXJTdHlsZVNoZWV0KFVzZXJDb250ZW50Q29udGFp
bmVyOjpJdGVtKHRvSW1wbChzb3VyY2VSZWYpLCB0b0ltcGwoYmFzZVVSTCksIHRvSW1wbCh3aGl0
ZWxpc3QpLCB0b0ltcGwoYmxhY2tsaXN0KSwgc3RhdGljX2Nhc3Q8VXNlckNvbnRlbnRDb250YWlu
ZXI6Okl0ZW06OkluamVjdGVkRnJhbWVzPihpbmplY3RlZEZyYW1lcyksIFVzZXJDb250ZW50Q29u
dGFpbmVyOjpJdGVtOjpUeXBlU3R5bGVzaGVldCkpOworfQorCit2b2lkIFdLUGFnZUdyb3VwUmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAg
ICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5oCmluZGV4IDcwNWRm
MDgzZTdhNGU0YTUwNTVmNzkzOWViYmE5YmQ3NGY2OWMwOGQuLjEyODAyNDFjODUwNzllNTE0NmRl
MWZkYTYxYzY3NGM1Y2U5ZmMyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VHcm91cC5oCkBAIC00MCw2ICs0MCw5IEBAIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S1BhZ2VHcm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CiAKIFdL
X0VYUE9SVCB2b2lkIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwLCBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKIFdLX0VYUE9SVCBXS1ByZWZl
cmVuY2VzUmVmIFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwKTsKKyAgICAKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQo
V0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS1N0cmluZ1JlZiBzb3VyY2UsIFdLVVJMUmVmIGJh
c2VVUkwsIFdLQXJyYXlSZWYgd2hpdGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUdyb3VwUmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oCmluZGV4IGYzNDI4ZmM5M2IzM2NmMTFiYjZl
OTNlMGM4MjUyM2MyNjM1MjU4ZmUuLmYyNmM5NTJjMDYwYzM2OWE2Yzc4OGNkZTYwOWNhNTViYTI4
MjkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJv
d3NpbmdDb250ZXh0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgKQEAgLTM2LDYgKzM2LDExIEBAIFdLX0VYUE9SVAog
CiAtIChpZClpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcjsKIAorLyog
VXNlciBDb250ZW50ICovCisKKy0gKHZvaWQpYWRkVXNlclN0eWxlU2hlZXQ6KE5TU3RyaW5nICop
c291cmNlIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB3aGl0ZWxpc3Q6KE5TQXJyYXkgKil3aGl0
ZWxpc3QgYmxhY2tsaXN0OihOU0FycmF5ICopYmxhY2tsaXN0IG1haW5GcmFtZU9ubHk6KEJPT0wp
bWFpbkZyYW1lT25seTsKKy0gKHZvaWQpcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzOworCiAKIC8q
IFNldHRpbmdzICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tCmluZGV4IDMzOGQzOTBjYTgzMzJiOGQ5
MmNkNTQ1ZDkxYzJmNDhjYWJjMTYxYzEuLjg3Y2ZmZDBlNzM2ZThiMTkyZDVkNjc5YzJkOGY1ZTk2
YmQ0Nzg2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
QnJvd3NpbmdDb250ZXh0R3JvdXAubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQpAQCAtMjcsMTAgKzI3LDE0IEBACiAjaW1w
b3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV0tBcnJheS5oIgogI2ltcG9ydCAiV0tQYWdl
R3JvdXAuaCIKICNpbXBvcnQgIldLUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldLUmV0YWluUHRy
LmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCisjaW1wb3J0ICJXS1VSTC5oIgorI2ltcG9ydCAi
V0tVUkxDRi5oIgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBAaW50ZXJmYWNlIFdLQnJvd3Np
bmdDb250ZXh0R3JvdXBEYXRhIDogTlNPYmplY3QgewogQHB1YmxpYwpAQCAtODEsNiArODUsNDMg
QEAKICAgICBXS1ByZWZlcmVuY2VzU2V0UGx1Z2luc0VuYWJsZWQoV0tQYWdlR3JvdXBHZXRQcmVm
ZXJlbmNlcyhzZWxmLl9wYWdlR3JvdXBSZWYpLCBhbGxvd3NQbHVnSW5zKTsKIH0KIAorc3RhdGlj
IFdLQXJyYXlSZWYgY3JlYXRlV0tBcnJheShOU0FycmF5ICphcnJheSkKK3sKKyAgICBOU1VJbnRl
Z2VyIGNvdW50ID0gW2FycmF5IGNvdW50XTsKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAg
cmV0dXJuIFdLQXJyYXlSZWYoKTsKKworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHN0cmluZ1ZlY3Rv
cjsKKyAgICBzdHJpbmdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisgICAg
Zm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZCBlbnRy
eSA9IFthcnJheSBvYmplY3RBdEluZGV4OmldOworICAgICAgICBpZiAoW2VudHJ5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBzdHJpbmdWZWN0b3IudW5jaGVj
a2VkQXBwZW5kKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZillbnRyeSkp
OworICAgICAgICAgICAgCisgICAgfQorCisgICAgcmV0dXJuIFdLQXJyYXlDcmVhdGVBZG9wdGlu
Z1ZhbHVlcyhzdHJpbmdWZWN0b3IuZGF0YSgpLCBzdHJpbmdWZWN0b3Iuc2l6ZSgpKTsKK30KKwor
LSh2b2lkKWFkZFVzZXJTdHlsZVNoZWV0OihOU1N0cmluZyAqKXNvdXJjZSBiYXNlVVJMOihOU1VS
TCAqKWJhc2VVUkwgd2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0IGJsYWNrbGlzdDooTlNB
cnJheSAqKWJsYWNrbGlzdCBtYWluRnJhbWVPbmx5OihCT09MKW1haW5GcmFtZU9ubHkKK3sKKyAg
ICBpZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHdrU291cmNlID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZT
dHJpbmdSZWYpc291cmNlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrQmFzZVVSTCA9
IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKWJhc2VVUkwpKTsKKyAgICBX
S1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1doaXRlbGlzdCA9IGFkb3B0V0soY3JlYXRlV0tBcnJh
eSh3aGl0ZWxpc3QpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a0JsYWNrbGlzdCA9
IGFkb3B0V0soY3JlYXRlV0tBcnJheShibGFja2xpc3QpKTsKKyAgICBXS1VzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMgPSBtYWluRnJhbWVPbmx5ID8ga1dLSW5qZWN0SW5U
b3BGcmFtZU9ubHkgOiBrV0tJbmplY3RJbkFsbEZyYW1lczsKKworICAgIFdLUGFnZUdyb3VwQWRk
VXNlclN0eWxlU2hlZXQoc2VsZi5fcGFnZUdyb3VwUmVmLCB3a1NvdXJjZS5nZXQoKSwgd2tCYXNl
VVJMLmdldCgpLCB3a1doaXRlbGlzdC5nZXQoKSwgd2tCbGFja2xpc3QuZ2V0KCksIGluamVjdGVk
RnJhbWVzKTsKK30KKworLSAodm9pZClyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMKK3sKKyAgICBX
S1BhZ2VHcm91cFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhzZWxmLl9wYWdlR3JvdXBSZWYpOwor
fQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIChJbnRl
cm5hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKaW5kZXggNzI1
ODhkNGQ3ZjFiOTllNzIzMWEzNGE5Zjc1MTk1YTg3NDg3NWQ2Mi4uNzMwZGY3N2NlMjc3MTI1YWE5
ODE2NDhmMzhhM2I0ZTVhNGY1NzcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VHcm91cC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJQYWdlR3JvdXAuaCIKIAorI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMjcsNSArMTI4LDE3IEBAIHZvaWQg
V2ViUGFnZUdyb3VwOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiAgICAgICAgIHBhZ2UtPnByZWZl
cmVuY2VzRGlkQ2hhbmdlKCk7CiAgICAgfQogfQorICAgIAordm9pZCBXZWJQYWdlR3JvdXA6OmFk
ZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtJiBzdHlsZVNo
ZWV0KQoreworICAgIG1fZGF0YS51c2VyU3R5bGVTaGVldHMuYWRkSXRlbShzdHlsZVNoZWV0KTsK
KyAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1lc3NhZ2VzOjpXZWJQYWdlR3JvdXBQcm94
eTo6QWRkVXNlclN0eWxlU2hlZXQoc3R5bGVTaGVldCksIG1fZGF0YS5wYWdlR3JvdXBJRCk7Cit9
CisKK3ZvaWQgV2ViUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQoreworICAg
IG1fZGF0YS51c2VyU3R5bGVTaGVldHMucmVtb3ZlQWxsSXRlbXMoKTsKKyAgICBzZW5kVG9BbGxQ
cm9jZXNzZXNJbkdyb3VwKE1lc3NhZ2VzOjpXZWJQYWdlR3JvdXBQcm94eTo6UmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKCksIG1fZGF0YS5wYWdlR3JvdXBJRCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91
cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCmluZGV4IGNjYzE0
YmQ5MTBhMTdlNjBjNDFhZjFkMTZkNjE1MDU2YzgwYWUzNmIuLmQ3NTJmZTViYmRkYTE5ZjQxNzU4
ZTQ5MjA4MWI2MmQ1ODExMDc2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdy
b3VwLmgKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTU2LDE2ICs1OCwzNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlcyopOwogICAgIFdlYlByZWZlcmVuY2VzKiBw
cmVmZXJlbmNlcygpIGNvbnN0OwogICAgIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKTsKKyAg
ICAKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFVzZXJDb250ZW50Q29udGFpbmVy
OjpJdGVtJiBzdHlsZVNoZWV0KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygp
OwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVu
dCk7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0K
KyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlVHlwZT4gdm9pZCBzZW5kVG9BbGxQ
cm9jZXNzZXNJbkdyb3VwKGNvbnN0IE1lc3NhZ2VUeXBlJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCk7CiAKICAgICBXZWJQYWdlR3JvdXBEYXRhIG1fZGF0YTsKICAgICBtdXRhYmxlIFJlZlB0cjxX
ZWJQcmVmZXJlbmNlcz4gbV9wcmVmZXJlbmNlczsKICAgICBIYXNoU2V0PFdlYlBhZ2VQcm94eSo+
IG1fcGFnZXM7CiB9OworICAgIAordGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZVR5cGU+IGlubGlu
ZSB2b2lkIFdlYlBhZ2VHcm91cDo6c2VuZFRvQWxsUHJvY2Vzc2VzSW5Hcm91cChjb25zdCBNZXNz
YWdlVHlwZSYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eSo+IHByb2Nlc3Nlc1NlZW47CisgICAgZm9yIChIYXNoU2V0PFdlYlBh
Z2VQcm94eSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGFnZXMuYmVnaW4oKSwgZW5kID0gbV9w
YWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdlYlByb2Nlc3NQcm94eSog
d2ViUHJvY2Vzc1Byb3h5ID0gKCppdCktPnByb2Nlc3MoKTsKKyAgICAgICAgQVNTRVJUKHdlYlBy
b2Nlc3NQcm94eSk7CisgICAgICAgIGlmICghcHJvY2Vzc2VzU2Vlbi5hZGQod2ViUHJvY2Vzc1By
b3h5KS5pc05ld0VudHJ5KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh3ZWJQ
cm9jZXNzUHJveHktPmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgICAgICB3ZWJQcm9jZXNzUHJv
eHktPnNlbmQobWVzc2FnZSwgZGVzdGluYXRpb25JRCk7CisgICAgfQorfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDRmYWQxODQxYThlZDcxYjIwYTI3NWEzM2ZjMTcxNDkwNDBmMWJl
NjEuLjVjMzkwZGE1YzliZTIwNjcwNWM3ZjdhMGI1MDIwZTM4YjNmMGI0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1MCw2
ICsyNTAsOCBAQAogCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8q
IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0
b3JQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBX
ZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICov
OyB9OworCQkyOTEyMTcwNzE2MUNFNzM2MDA1N0Q0NTEgLyogVXNlckNvbnRlbnRDb250YWluZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkxMjE3
MDUxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmNwcCAqLzsgfTsKKwkJ
MjkxMjE3MDgxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTEyMTcwNjE2MUNFNzM2
MDA1N0Q0NTEgLyogVXNlckNvbnRlbnRDb250YWluZXIuaCAqLzsgfTsKIAkJMjk2QkQ4NUQxNTAx
OUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk2QkQ4NUIxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmlu
Z1V0aWxpdGllcy5oICovOyB9OwogCQkyOTZCRDg1RTE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5n
VXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjk2QkQ4NUMxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLzsgfTsK
IAkJMjlDRDU1QUExMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1
NUE4MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi87
IH07CkBAIC0xMzExLDEzICsxMzEzLDE1IEBACiAJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
SW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MTIxNzA1MTYxQ0U3
MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyQ29udGVudENvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTI5MTIxNzA2MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVu
dENvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQ29udGVu
dENvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTZCRDg1QjE1MDE5
QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTZCRDg1QzE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMjlENTVERUUxNjFCRjg3ODAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkyOUQ1NURFRjE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gV2ViUGFnZUdy
b3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkyOUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQYWdlR3JvdXBQcm94eU1lc3Nh
Z2VzLmg7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTI5RDU1REYwMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VH
cm91cFByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5
NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJDMEM0OTE0NkREQzhBMDAx
NkM5MTEgLyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTU0LDYgKzI1NTgsOCBAQAogCQkJCUJDOTBBMUQwMTIyREQ1NUUwMENDOEM1
MCAvKiBXZWJVUkxSZXNwb25zZS5oICovLAogCQkJCUY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAv
KiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLywKIAkJCQlDMDMzN0REMDEyN0EyOTgwMDA4
RkY0RjQgLyogV2ViV2hlZWxFdmVudC5jcHAgKi8sCisJCQkJMjkxMjE3MDUxNjFDRTczNjAwNTdE
NDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmNwcCAqLywKKwkJCQkyOTEyMTcwNjE2MUNFNzM2
MDA1N0Q0NTEgLyogVXNlckNvbnRlbnRDb250YWluZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
U2hhcmVkOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQzMzgsNiArNDM0NCw3IEBA
CiAJCQkJMUEzRUVEMEYxNjFBNTM1NDAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNl
aXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlENTVERjIxNjFCRjlGMTAwMzFBMkUzIC8qIFdl
YlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5MTIxNzA4MTYx
Q0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC01MTk3LDYgKzUyMDQsNyBAQAogCQkJCUJDOTg5RDgxMTYxQTdFNUQwMDBENDZEMyAvKiBXS1dl
YlByb2Nlc3NQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTNFRUQwRTE2MUE1MzU0MDBB
RUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5RDU1
REYxMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyOTEyMTcwNzE2MUNFNzM2MDA1N0Q0NTEgLyogVXNlckNv
bnRlbnRDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBy
aXZhdGUuaAppbmRleCBmMDMyYzYyMjJhODEyM2U4NTQ0YzgyNzdiY2NhNGFlM2M4YTQyY2YxLi5l
NTNiMjJhY2NiMzkxMGIzZTZhM2FkYzg5ZmI2ZWY4ZGFlMjA2MTM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQcml2YXRlLmgKQEAgLTQyLDEyICs0Miw2IEBAIGVudW0gV0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSB7CiB9OwogdHlwZWRlZiBlbnVtIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUg
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTsKIAotZW51bSBXS1VzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgewotICAgIGtXS0luamVjdEluQWxsRnJhbWVzLAotICAgIGtXS0luamVjdEluVG9wRnJh
bWVPbmx5Ci19OwotdHlwZWRlZiBlbnVtIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBXS1Vz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM7Ci0KIC8vIFRlc3RSdW5uZXIgb25seSBTUEkKIFdLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlU2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoV0tCdW5kbGVSZWYg
YnVuZGxlLCBib29sIHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKTsKIFdLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlU2V0QWx3YXlzQWNjZXB0Q29va2llcyhXS0J1bmRsZVJlZiBidW5kbGUsIGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91
cFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3Jv
dXBQcm94eS5jcHAKaW5kZXggOGE4Nzc2MjMxMzEzZTkxZGVlODRlOGMwZDQ5YjVhOGI1ZDk4YmVh
ZS4uYTkzMTg3ODc4OTg1OTczZGU0NzQyNWUwODJiNWI4NGZkOWJkMTRmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHku
Y3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CkBAIC00NCwxNiArNDYsMjggQEAgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gV2ViUGFn
ZUdyb3VwUHJveHk6OmNyZWF0ZShjb25zdCBXZWJQYWdlR3JvdXBEYXRhJgogV2ViUGFnZUdyb3Vw
UHJveHk6On5XZWJQYWdlR3JvdXBQcm94eSgpCiB7CiB9Ci0gICAgCisKIHZvaWQgV2ViUGFnZUdy
b3VwUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnRzKQogewogICAgIGRpZFJlY2VpdmVXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogfQorICAgIAorV2ViUGFnZUdyb3Vw
UHJveHk6OldlYlBhZ2VHcm91cFByb3h5KGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIGRhdGEpCisg
ICAgOiBtX2RhdGEoZGF0YSkKKyAgICAsIG1fcGFnZUdyb3VwKFdlYkNvcmU6OlBhZ2VHcm91cDo6
cGFnZUdyb3VwKG1fZGF0YS5pZGVudGlmZXIpKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGF0YS51c2VyU3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGFkZFVzZXJTdHls
ZVNoZWV0KGRhdGEudXNlclN0eWxlU2hlZXRzLmF0KGkpKTsKK30KKwordm9pZCBXZWJQYWdlR3Jv
dXBQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgVXNlckNvbnRlbnRDb250YWluZXI6Okl0
ZW0mIHN0eWxlU2hlZXQpCit7CisgICAgbV9wYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0VG9X
b3JsZChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc3R5bGVTaGVldC5zb3VyY2Uo
KSwgc3R5bGVTaGVldC51cmwoKSwgc3R5bGVTaGVldC53aGl0ZWxpc3QoKSwgc3R5bGVTaGVldC5i
bGFja2xpc3QoKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cz4oc3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpKSk7Cit9CiAKLXZvaWQgV2ViUGFnZUdyb3Vw
UHJveHk6OmRpZFJlY2VpdmVXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKikKK3Zv
aWQgV2ViUGFnZUdyb3VwUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiB7Ci0gICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW4g
Y29udGFpbnMgbWVzc2FnZXMsCi0gICAgLy8gaW4gd2hpY2ggY2FzZSB0aGlzIG1ldGhvZCB3aWxs
IGJlIGF1dG8tZ2VuZXJhdGVkLgorICAgIG1fcGFnZUdyb3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVl
dHNGcm9tV29ybGQoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmgKaW5kZXggOWE5ODQ0N2EwYjJlMDQ2ZjQwYmIzODNi
MGUxZjMyMmI0NThjMWIyNi4uNDFiZTUwNjJkZjlmMWRmMmM0OWQyNTRjNDI2YjEzZmM0Yzk2OThl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VH
cm91cFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VHcm91cFByb3h5LmgKQEAgLTM2LDYgKzM2LDEwIEBAIGNsYXNzIENvbm5lY3Rpb247CiBjbGFz
cyBNZXNzYWdlSUQ7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBhZ2VHcm91cDsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5IDogcHVi
bGljIEFQSU9iamVjdCB7CkBAIC01MywxNiArNTcsMTcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZUdyb3Vw
UHJveHkoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoZGF0
YSkKLSAgICB7Ci0gICAgfQorICAgIFdlYlBhZ2VHcm91cFByb3h5KGNvbnN0IFdlYlBhZ2VHcm91
cERhdGEmKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlw
ZTsgfQogICAgIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqKTsKKyAgICAKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFVzZXJD
b250ZW50Q29udGFpbmVyOjpJdGVtJiBzdHlsZVNoZWV0KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cygpOwogCiAgICAgV2ViUGFnZUdyb3VwRGF0YSBtX2RhdGE7CisgICAgV2Vi
Q29yZTo6UGFnZUdyb3VwKiBtX3BhZ2VHcm91cDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VH
cm91cFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDRkNzkzMTBjYTM5ODQxNWEwM2U5
YTE5MjFjMDY4NjI5ZjYxOWVhYzcuLjZiNWFjMTg2ODY2YzRjZjRkOTRiMGM5YjNmYzMzZjhjZTQ2
NzcyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDQgKzIxLDYgQEAK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViUGFnZUdyb3VwUHJveHkgeworICAgIEFk
ZFVzZXJTdHlsZVNoZWV0KFdlYktpdDo6VXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0gc3R5bGVT
aGVldCk7CisgICAgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTE4NDYwMmUwNGExYjc5MTNh
Y2QxMjU5NDQyODhmMmRkMTg5MzI0Yy4uNzdlMGEyZjJjNjE1NDU0OTUyZDAyZjdhODNiZWFhMGI1
YjhiMjcxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEwLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBbV2ViS2l0Ml0gQ3JlYXRlIGFuIEFQSSBmb3IgYWRkaW5nIGFuZCBy
ZW1vdmluZyB1c2VyIHN0eWxlc2hlZXRzIGZyb20gYSBwYWdlIGdyb3VwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aHJlZSBuZXcgQVBJIHRlc3Rz
OgorCisgICAgICAgIC0gVGVzdCBhZGRpbmcgYSB1c2VyIHN0eWxlc2hlZXQgYmVmb3JlIGEgcGFn
ZSBpcyBjcmVhdGVkLiBUaGlzIHRlc3RzCisgICAgICAgIHRoZSBjb2RlIHBhdGggd2hlcmUgdGhl
IHNoZWV0IGlzIHNlbnQgdG8gdGhlIHdlYiBwcm9jZXNzIGFzIHBhcnQgb2YKKyAgICAgICAgdGhl
IG5ldyBwYWdlJ3MgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy4KKyAgICAgICAgLSBUZXN0IGFk
ZGluZyBhIHVzZXIgc3R5bGVzaGVldCBhZnRlciBhIHBhZ2UgaXMgY3JlYXRlZC4gVGhpcyB0ZXN0
cyB0aGUKKyAgICAgICAgY29kZSBwYXRjaCB3aGVyZSB0aGUgc2hlZXQgaXMgc2VudCBhcyBhIHNl
cGFyYXRlIG1lc3NhZ2UgdG8gYWxsCisgICAgICAgIHByb2Nlc3NlcyBjb250YWluaW5nIHRoZSBn
aXZlbiBwYWdlIGdyb3VwLgorICAgICAgICAtIFRlc3QgcmVtb3ZpbmcgYWxsIHVzZXIgc3R5bGVz
aGVldHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJP
YmpDL1VzZXJDb250ZW50VGVzdC5tbTogQWRkZWQuCisgICAgICAgICgtW1VzZXJDb250ZW50VGVz
dExvYWREZWxlZ2F0ZSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XSk6CisgICAgICAgICgtW1Vz
ZXJDb250ZW50VGVzdExvYWREZWxlZ2F0ZSBicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkRmlu
aXNoTG9hZDpdKToKKyAgICAgICAgKGV4cGVjdFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1t
OgorCiAyMDEyLTEwLTA0ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gRW5hYmxlIGluc3BlY3RvciBieSBkZWZhdWx0IGluIEd0a0xh
dW5jaGVyL01pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUxNDRmNWYzNzEw
NDhkNmRiMTFjNWEyNzQ5OWVlNDMxYjFlMmEwOGIuLmJjZGNkNGM0NTE2ZWRlMTRiYjU4NGJjZDNj
MzE1NDhjOWQ3ZjZhMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMSw2ICszMSw3IEBA
CiAJCTI2REY1QTYzMTVBMkEyN0UwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZERjVBNjExNUEyQTIyQjAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9tUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJMjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJG
IC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNkYxQjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCAq
LzsgfTsKIAkJMjZGMUI0NDUxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMUI0NDMxNUNBNDM0
RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwICovOyB9OworCQkyOTQzQkU4NjE2MURGRUI4MDA5
OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjk0M0JFODQxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50
VGVzdC5tbSAqLzsgfTsKIAkJMzMzQjlDRTIxMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0
eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNw
cCAqLzsgfTsKIAkJMzNCRTVBRjUxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jh
c2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNC
RTVBRjQxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwICovOyB9Owog
CQkzM0JFNUFGOTEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTVB
RjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLzsg
fTsKQEAgLTI2Niw2ICsyNjcsNyBAQAogCQkyNkRGNUE2MTE1QTJBMjJCMDAzNjg5QzIgLyogQ2Fu
Y2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNkYxQjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWlj
U3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF0b21pY1N0
cmluZy5jcHA7IHBhdGggPSBXVEYvQXRvbWljU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjZGMUI0NDMxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nSW1wbC5jcHA7IHBhdGgg
PSBXVEYvU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NDNC
RTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBVc2VyQ29udGVudFRlc3QubW07IHBhdGggPSBXZWJL
aXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMzM0I5Q0UxMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmVudEVtcHR5VXNlckFnZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjQxMzdCNUE2QzAwNzA1
ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNo
X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1v
dmVBZnRlckNyYXNoX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
MjksNiArNTMxLDcgQEAKIAkJQkMzQzRDNkYxNDU3NUIxRDAwMjVGQjYyIC8qIFdlYktpdDIgT2Jq
ZWN0aXZlLUMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTI5NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi8sCiAJCQkJ
QkMzQzRDN0QxNDU4N0FBNjAwMjVGQjYyIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1t
ICovLAogCQkJCUJDM0M0QzcwMTQ1NzVCNkEwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZVRlc3QubW0gKi8sCiAJCQkpOwpAQCAtOTg3LDYgKzk5MCw3IEBACiAJCQkJQkM5
MDk5OTQxMjU2QUNGMTAwMDgzNzU2IC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjY1QUY1NTAxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5NDNCRTg2
MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvVXNlckNvbnRl
bnRUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9Vc2VyQ29u
dGVudFRlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNmNmU1ZWVlNjU4OGU3NTE4ZDQ4MTNlOWE4YTgzMTQ2
MzY1OTAxMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mk9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0LmgiCisKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgor
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
Mi9XZWJLaXQyLmg+CisKKworc3RhdGljIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CitzdGF0
aWMgTlNTdHJpbmcgKmh0bWxTdHJpbmcgPSBAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OiByZWQnPiI7CitzdGF0aWMgTlNTdHJpbmcgKnVzZXJTdHlsZVNoZWV0ID0gQCJib2R5IHsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CitzdGF0aWMgY29uc3QgY2hhciog
YmFja2dyb3VuZENvbG9yU2NyaXB0ID0gIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7CitzdGF0
aWMgY29uc3QgY2hhciogZ3JlZW5JblJHQiA9ICJyZ2IoMCwgMTI4LCAwKSI7CitzdGF0aWMgY29u
c3QgY2hhciogcmVkSW5SR0IgPSAicmdiKDI1NSwgMCwgMCkiOworCisKK3R5cGVkZWYgdm9pZCAo
Xk9uTG9hZEJsb2NrKShXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKik7CisKK0BpbnRlcmZh
Y2UgVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdLQnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlPgoreworfQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgT25M
b2FkQmxvY2sgb25Mb2FkQmxvY2s7CisKKy0gKGlkKWluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDoo
T25Mb2FkQmxvY2spYmxvY2s7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFVzZXJDb250ZW50
VGVzdExvYWREZWxlZ2F0ZQorCitAc3ludGhlc2l6ZSBvbkxvYWRCbG9jayA9IF9vbkxvYWRCbG9j
azsKKworLSAoaWQpaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOihPbkxvYWRCbG9jaylibG9jawor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIAorICAgIHNlbGYub25Mb2FkQmxvY2sgPSBibG9jazsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkRmluaXNoTG9hZDooV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyCit7CisgICAgaWYgKF9vbkxvYWRCbG9jaykK
KyAgICAgICAgX29uTG9hZEJsb2NrKHNlbmRlcik7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIHsK
KyAgICBjbGFzcyBXZWJLaXQyVXNlckNvbnRlbnRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CisgICAgcHVibGljOgorICAgICAgICBXS1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwOwor
ICAgICAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICpicm93c2luZ0NvbnRleHRHcm91cDsKKwor
ICAgICAgICBXZWJLaXQyVXNlckNvbnRlbnRUZXN0KCkKKyAgICAgICAgICAgIDogcHJvY2Vzc0dy
b3VwKG5pbCkKKyAgICAgICAgICAgICwgYnJvd3NpbmdDb250ZXh0R3JvdXAobmlsKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHByb2Nlc3NHcm91cCA9IFtbV0tQcm9jZXNzR3JvdXAgYWxs
b2NdIGluaXRdOworICAgICAgICAgICAgYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBbW1dLQnJvd3Np
bmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlVzZXJDb250ZW50SWRl
bnRpZmllciJdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKQorICAgICAgICB7CisgICAgICAgICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVs
ZWFzZV07CisgICAgICAgICAgICBbcHJvY2Vzc0dyb3VwIHJlbGVhc2VdOworICAgICAgICB9Cisg
ICAgfTsKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyB2b2lkIGV4cGVjdFNjcmlwdFZhbHVlKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRWYWx1ZSkKK3sKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgc2NyaXB0Q29udGV4
dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHNjcmlw
dFZhbHVlID0gV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVEZXNlcmlhbGl6ZShzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIHNjcmlwdENvbnRleHQsIDApOworICAgIEVYUEVDVF9UUlVFKEpTVmFsdWVJc1N0
cmluZyhzY3JpcHRDb250ZXh0LCBzY3JpcHRWYWx1ZSkpOworICAgIAorICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzY3JpcHRTdHJpbmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoc2Ny
aXB0Q29udGV4dCwgc2NyaXB0VmFsdWUsIDApKTsKKyAgICBFWFBFQ1RfVFJVRShKU1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKHNjcmlwdFN0cmluZy5nZXQoKSwgZXhwZWN0ZWRWYWx1ZSkpOwor
ICAgIAorICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2Uoc2NyaXB0Q29udGV4dCk7Cit9CisKK1RF
U1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVldEJlZm9yZUNyZWF0
aW5nVmlldykKK3sKKyAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICBbYnJvd3NpbmdDb250
ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpuaWwgd2hp
dGVsaXN0Om5pbCBibGFja2xpc3Q6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKKyAgICAKKyAgICBX
S1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0
R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgKnNlbmRlcikgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYmFja2dyb3Vu
ZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tn
cm91bmRDb2xvclNjcmlwdCkpOworICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVfYih3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJp
YWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVy
cm9yKSB7CisgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIGdyZWVuSW5SR0IpOworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAg
ICAgfSk7CisgICAgfV07CisgICAgCisgICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOworICAgIAorICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKworVEVTVF9GKFdlYktp
dDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVhdGluZ1ZpZXcpCit7
CisgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgCisgICAgV0tWaWV3ICp3a1ZpZXcgPSBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBw
cm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwXTsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVs
ZWdhdGUgPSBbW1VzZXJDb250ZW50VGVzdExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9j
a1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQp
KTsKKyAgICAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2Iod2tWaWV3LnBhZ2VS
ZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVl
UmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgICAgICAg
ICAgZXhwZWN0U2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBncmVlbkluUkdCKTsK
KyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH1dOwor
ICAgIAorICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5
bGVTaGVldCBiYXNlVVJMOm5pbCB3aGl0ZWxpc3Q6bmlsIGJsYWNrbGlzdDpuaWwgbWFpbkZyYW1l
T25seTpZRVNdOworICAgIAorICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBs
b2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKworVEVTVF9GKFdlYktpdDJVc2VyQ29u
dGVudFRlc3QsIFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cykKK3sKKyAgICB0ZXN0RmluaXNoZWQg
PSBmYWxzZTsKKyAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNl
clN0eWxlU2hlZXQgYmFzZVVSTDpuaWwgd2hpdGVsaXN0Om5pbCBibGFja2xpc3Q6bmlsIG1haW5G
cmFtZU9ubHk6WUVTXTsKKyAgICAKKyAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpw
cm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOwor
ICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVXNl
ckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6
XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gYmFja2dyb3VuZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCkpOworICAgICAgICBX
S1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYih3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3Vu
ZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgICAgICAgICBleHBlY3RTY3Jp
cHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIHJlZEluUkdCKTsKKyAgICAgICAgICAgIHRl
c3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH1dOworICAgIAorICAgIFticm93
c2luZ0NvbnRleHRHcm91cCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHNdOworICAgIAorICAgIFt3
a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5n
IGJhc2VVUkw6bmlsXTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RG
aW5pc2hlZCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9XS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
VGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvV0tCcm93c2lu
Z0NvbnRleHRHcm91cFRlc3QubW0KaW5kZXggZmJkODdiZGY0ZGM1MTUzMTFkNjI0NzJmNmY2ZmQz
MTM0ZDBmN2E0NC4uNzdiZjY5Y2ZiNjk5OTczMTIzOTBmZmM3M2RhNTA0YjM3MzljOWY2NSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9XS0Jyb3dzaW5n
Q29udGV4dEdyb3VwVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJPYmpDL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tCkBAIC0yNiw3ICsyNiwxNCBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAKLSNpbXBvcnQgPFdlYktpdDIv
V0tCcm93c2luZ0NvbnRleHRHcm91cC5oPgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1JldGFpblB0ci5o
PgorI2ltcG9ydCA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2ltcG9ydCA8
V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dlYktpdDIuaD4KKyNp
bXBvcnQgPFdlYktpdDIvV2ViS2l0Ml9DLmg+CiAKIFRFU1QoV0tCcm93c2luZ0NvbnRleHRHcm91
cFRlc3QsIEdldFNldEphdmFTY3JpcHRFbmFibGVkKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167166</attachid>
            <date>2012-10-04 13:40:47 -0700</date>
            <delta_ts>2012-10-04 20:17:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98432-20121004133957.patch</filename>
            <type>text/plain</type>
            <size>58919</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmM5YzMwZjE5YzhkNjc4
MWU4M2RiMjRkZmMyNDI1MGZmMjkxOGVjZS4uMTZmMDJkNDI3YzAwYjUxYmVkYzMxNDBhZmEyYTYy
ZjY5OWRkMjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0xMC0wNCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIENyZWF0ZSBh
biBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZXNoZWV0cyBmcm9tIGEgcGFn
ZSBncm91cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdGhlIGZvbGxvd2luZyBBUEkgdG8gV0tCcm93c2luZ0NvbnRleHRHcm91
cDoKKworICAgICAgICAtICh2b2lkKWFkZFVzZXJTdHlsZVNoZWV0OihOU1N0cmluZyAqKXNvdXJj
ZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgd2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0
IGJsYWNrbGlzdDooTlNBcnJheSAqKWJsYWNrbGlzdCBtYWluRnJhbWVPbmx5OihCT09MKW1haW5G
cmFtZU9ubHk7CisgICAgICAgIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzOworCisg
ICAgICAgIFNoZWV0cyBhZGRlZCB2aWEgdGhpcyBBUEkgYXJlIHNlbnQgdG8gYWxsIHByb2Nlc3Nl
cyB0aGF0IGNvbnRhaW4gYSBwYWdlCisgICAgICAgIGluIHRoZSBnaXZlbiBwYWdlIGdyb3VwLiBT
aGVldHMgYXJlIGFsc28gY2FjaGVkIGluIHRoZSBVSSBwcm9jZXNzIGluIGEKKyAgICAgICAgbmV3
IG9iamVjdCBjYWxsZWQgVXNlckNvbnRlbnRDb250YWluZXIsIHdoaWNoIGlzIGEgcHJvcGVydHkg
b2YgZWFjaAorICAgICAgICBncm91cCdzIFdlYlBhZ2VHcm91cERhdGEgYW5kIGlzIHNlbnQgdG8g
bmV3IHdlYiBwcm9jZXNzZXMgZHVyaW5nIHBhZ2UKKyAgICAgICAgaW5pdGlhbGl6YXRpb24uCisK
KyAgICAgICAgVGhpcyBpcyBsZXNzIHRoYW4gaWRlYWwsIHNpbmNlIG5ldyBwYWdlcyBhZGRlZCB0
byBhIHByZS1leGlzdGluZworICAgICAgICBwcm9jZXNzIC8gcGFnZSBncm91cCBjb21iaW5hdGlv
biB3aWxsIHNlbmQgcmVkdW5kYW50IHVzZXIgc3R5bGVzaGVldAorICAgICAgICBzdHJpbmdzIG92
ZXIgdGhlIHdpcmUuIFRvIGF2b2lkIHRoaXMgd2UnZCBoYXZlIHRvIGtlZXAgdHJhY2sgdHJhY2sg
b2YKKyAgICAgICAgdGhlIGdyb3VwcyB0aGF0IGN1cnJlbnRseSBleGlzdCBpbiBlYWNoIHByb2Nl
c3MgYW5kIG9ubHkgc2VuZCB1c2VyCisgICAgICAgIGNvbnRlbnQgZHVyaW5nIHBhZ2UgY3JlYXRp
b24gaWYgaXQgaXMgdGhlIGZpcnN0IHRpbWUgYSBwcm9jZXNzIGhhcyBzZWVuCisgICAgICAgIHRo
ZSBwYWdlJ3MgZ3JvdXAuIEkgZGVjaWRlZCB0byBub3QgYWRkIHRoaXMgY29tcGxleGl0eSBmb3Ig
dGhlIHRpbWUKKyAgICAgICAgYmVpbmcsIGJ1dCB3ZSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGl0
IGlmIHdlIGZpbmQgdGhhdCB0aGUgY3VycmVudAorICAgICAgICBhcHByb2FjaCBpbXBhY3RzIHBl
cmZvcm1hbmNlIGZvciBjbGllbnRzIHRoYXQgaGVhdmlseSB1dGlsaXplIHVzZXIKKyAgICAgICAg
Y29udGVudC4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0FycmF5LmNwcDoKKyAgICAgICAg
KFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyk6IEFkZCBhIFdLQXJyYXkgY3JlYXRpb24gZnVu
Y3Rpb24gdGhhdAorICAgICAgICBhZG9wdHMgdGhlIGluY29taW5nIFdLVHlwZVJlZnMgcmF0aGVy
IHRoYW4gcmVmaW5nIHRoZW0uCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQXJyYXkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6IE1vdmUgV0tVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIG91dCBvZgorICAgICAgICBXS0J1bmRsZVByaXZhdGUuaCBzbyBpdCBjYW4gYmUgdXNl
ZCBpbiBXS1BhZ2VHcm91cCwgdG9vLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENG
LmNwcDoKKyAgICAgICAgKFdLVVJMQ3JlYXRlV2l0aENGVVJMKTogUmV0dXJuIDAgZm9yIG51bGwg
Q0ZVUkxSZWZzIGluc3RlYWQgb2YgY3Jhc2hpbmcKKyAgICAgICAgaW5zaWRlIENGVVJMR2V0U3Ry
aW5nKCkuCisgICAgICAgICogU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5KTogQWRkIGFuIHRoaXJkIGFyZ3Vt
ZW50IGNhbGxlZAorICAgICAgICBzaG91bGRBZG9wdFJlZmVyZW5jZXMgdG8gdGhpcyBjdG9yLCB1
c2VkIGJ5IFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcy4KKyAgICAgICAgKiBTaGFyZWQvSW1t
dXRhYmxlQXJyYXkuaDoKKyAgICAgICAgKFdlYktpdDo6SW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSk6
IENhbGwgdGhlIGN0b3Igd2l0aCBzaG91bGRBZG9wdFJlZmVyZW5jZXMgZXF1YWwgdG8gZmFsc2Uu
CisgICAgICAgIChXZWJLaXQ6OkltbXV0YWJsZUFycmF5OjphZG9wdCk6IENhbGwgdGhlIGN0b3Ig
d2l0aCBzaG91bGRBZG9wdFJlZmVyZW5jZXMgZXF1YWwgdG8gdHJ1ZS4KKyAgICAgICAgKiBTaGFy
ZWQvVXNlckNvbnRlbnRDb250YWluZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFVzZXJDb250ZW50
SXRlbU1lc3NhZ2VFbmNvZGVyKTogQ3JlYXRlIGEgVXNlck1lc3NhZ2VFbmNvZGVyIGZvcgorICAg
ICAgICBzZXJpYWxpemluZyBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSdzIEFQSU9iamVjdHMu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNvZGVyOjpVc2VyQ29u
dGVudEl0ZW1NZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50SXRl
bU1lc3NhZ2VFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAoVXNlckNvbnRlbnRJdGVtTWVzc2Fn
ZURlY29kZXIpOiBDcmVhdGUgYSBVc2VyTWVzc2FnZUVuY29kZXIgZm9yCisgICAgICAgIGRlc2Vy
aWFsaXppbmcgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0ncyBBUElPYmplY3RzLgorICAgICAg
ICAoV2ViS2l0OjpVc2VyQ29udGVudEl0ZW1NZXNzYWdlRGVjb2Rlcjo6VXNlckNvbnRlbnRJdGVt
TWVzc2FnZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudEl0ZW1NZXNzYWdl
RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250YWluZXI6
Okl0ZW06Okl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudENvbnRhaW5lcjo6SXRl
bTo6ZW5jb2RlKTogRW5jb2RlIHRoZSBpdGVtJ3MKKyAgICAgICAgcHJvcGVydGllcyB1c2luZyBV
c2VyQ29udGVudEl0ZW1NZXNzYWdlRW5jb2Rlci4KKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRl
bnRDb250YWluZXI6Okl0ZW06OmRlY29kZSk6IERlY29kZSB0aGUgaXRlbSdzCisgICAgICAgIHBy
b3BlcnRpZXMgdXNpbmcgVXNlckNvbnRlbnRJdGVtTWVzc2FnZURlY29kZXIuCisgICAgICAgIChX
ZWJLaXQ6OnRvU3RyaW5nVmVjdG9yKTogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0
aW5nIGFuCisgICAgICAgIEltbXV0YWJsZUFycmF5IG9mIFdlYlN0cmluZ3MgdG8gYSBWZWN0b3Ig
b2YgU3RyaW5ncy4KKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06
OndoaXRlbGlzdCk6IFVzZSB0b1N0cmluZ1ZlY3RvcigpLgorICAgICAgICAoV2ViS2l0OjpVc2Vy
Q29udGVudENvbnRhaW5lcjo6SXRlbTo6YmxhY2tsaXN0KTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjplbmNvZGUpOiBFbmNvZGUgdGhlIFZlY3RvciBvZiBV
c2VyQ29udGVudENvbnRhaW5lcjo6SXRlbXMuCisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50
Q29udGFpbmVyOjpkZWNvZGUpOiBEZWNvZGUgdGhlIFZlY3RvciBvZiBVc2VyQ29udGVudENvbnRh
aW5lcjo6SXRlbXMuCisgICAgICAgICogU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKTogSW5jbHVkZSB1c2VyU3R5bGVTaGVldHMg
d2hlbiBlbmNvZGluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2Rl
KTogSW5jbHVkZSB1c2VyU3R5bGVTaGVldHMgd2hlbiBkZWNvZGluZy4KKyAgICAgICAgKiBTaGFy
ZWQvV2ViUGFnZUdyb3VwRGF0YS5oOgorICAgICAgICAoV2ViUGFnZUdyb3VwRGF0YSk6IEFkZCBh
IFVzZXJDb250ZW50Q29udGFpbmVyIGNhbGxlZCB1c2VyU3R5bGVTaGVldHMKKyAgICAgICAgdG8g
V2ViUGFnZUdyb3VwRGF0YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAu
Y3BwOiBBZGQgdGhlIEMgU1BJIHZlcnNpb24gb2YgdGhlIE9iamVjdGl2ZS1DIEFQSS4KKyAgICAg
ICAgKFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV0tQYWdlR3JvdXBS
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VHcm91cC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0
R3JvdXAuaDogQWRkIHRoZSBPYmplY3RpdmUtQyBBUEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbToKKyAgICAgICAgKGNyZWF0ZVdLQXJyYXkp
OiBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhbiBOU0FycmF5IG9mIE5TU3Ry
aW5ncyB0byBhIFdLQXJyYXkgb2YgV0tTdHJpbmdzLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OmJhc2VVUkw6d2hpdGVsaXN0OmJsYWNrbGlzdDpt
YWluRnJhbWVPbmx5Ol0pOgorICAgICAgICBJbXBsZW1lbnQgdGhlIE9iamVjdGl2ZS1DIEFQSSBp
biB0ZXJtcyBvZiB0aGUgQyBTUEkuCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAg
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OmFkZFVzZXJT
dHlsZVNoZWV0KTogQWRkIHRoZSBuZXcgc2hlZXQgdG8gdGhlCisgICAgICAgIGdyb3VwJ3MgV2Vi
UGFnZUdyb3VwRGF0YSwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBncm91cCdzIHNoZWV0cyBhcmUK
KyAgICAgICAgc2VudCB0byBuZXcgd2ViIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOiBEaXR0byBmb3IgcmVtb3ZhbC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VHcm91cDo6c2VuZFRvQWxsUHJvY2Vzc2VzSW5Hcm91cCk6IEFkZCBhIGhlbHBlciBtZXNz
YWdlCisgICAgICAgIHRoYXQgc2VuZHMgYSBtZXNzYWdlIHRvIGFsbCBwcm9jZXNzZXMgdGhhdCBo
YXZlIGEgcGFnZSBpbiB0aGUgY3VycmVudAorICAgICAgICBncm91cC4gVGhpcyBpcyB1c2VkIHRv
IGFkZCBuZXcgdXNlciBzaGVldHMgdG8gYWxyZWFkeS1pbml0aWFsaXplZCBwYWdlCisgICAgICAg
IGdyb3VwcyBpbiB0aGUgVUkgcHJvY2Vzc2VzLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBNb3ZlZAorICAgICAgICBXS1VzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgZnJvbSBoZXJlIHRvIFdLQmFzZS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91
cFByb3h5OjpXZWJQYWdlR3JvdXBQcm94eSk6IEFkZCBlYWNoIHNoZWV0IGluIHRoZQorICAgICAg
ICBXZWJQYWdlR3JvdXBEYXRhIHRvIFdlYkNvcmUncyBwYWdlIGdyb3VwLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlR3JvdXBQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQpOiBBZGQgdGhlIHNoZWV0
IHJlY2VpdmVkCisgICAgICAgIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gV2ViQ29yZSdzIHBhZ2Ug
Z3JvdXAuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cFByb3h5OjpyZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMpOiBSZW1vdmUgYWxsCisgICAgICAgIHNoZWV0cyBmcm9tIFdlYkNvcmUncyBw
YWdlIGdyb3VwLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5tZXNz
YWdlcy5pbjogRGVmaW5lCisgICAgICAgIEFkZFVzZXJTdHlsZVNoZWV0IGFuZCBSZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMsIHR3byBtZXNzYWdlcyBzZW50IGZyb20KKyAgICAgICAgdGhlIFVJIHBy
b2Nlc3MgdG8gYSB3ZWIgcHJvY2VzcydzIFdlYlBhZ2VHcm91cFByb3h5LgorCiAyMDEyLTEwLTA0
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKICAgICAg
ICAgW1F0XSBGaXggdGhlIHRzdF9RUXVpY2tXZWJWaWV3OjpzY3JvbGxSZXF1ZXN0IGF1dG8gdGVz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBhOGQ3YmIzNzAzZGE0N2QyMDZhMzU0MmZlNGIyYjE1
OGViOTMzMDRhLi40ZTQ1M2U3OTEyMjRjYTIzMzdhZTNiMDljOGZmYzQyZDEyYTdmZGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTUyLDYgKzE1Miw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMK
ICAgICBTaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCiAgICAgU2hhcmVkL1N1cmZhY2VVcGRhdGVJ
bmZvLmNwcAogICAgIFNoYXJlZC9VcGRhdGVJbmZvLmNwcAorICAgIFNoYXJlZC9Vc2VyQ29udGVu
dENvbnRhaW5lci5jcHAKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAKICAgICBTaGFy
ZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKICAgICBTaGFyZWQvV2ViQmF0dGVyeVN0YXR1
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDI1NDMyMDMwZmU0NjY0M2Vh
ZjI4NjMwYTJjNjMyNTllNjgzOTRkNDIuLmEwNjgxZjljNmE1NzE0MDk0NTA3M2VjZGRlNmI5NDQz
ZmZhODI1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQxLDYgKzQ0MSw4
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNz
YWdlQ29kZXJzLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvU2hhcmVkL1VwZGF0ZUluZm8uaCBcCisJU291cmNlL1dlYktpdDIvU2hh
cmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1Vz
ZXJDb250ZW50Q29udGFpbmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlu
a1RhYmxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuaCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAppbmRleCA2Y2E5YWYyNzNjZDkxMjQz
Y2NiYmM0ODQ1NjBiODIzOTBlY2UyNDcwLi41YmYzNWUzYzNlZGY3MDQ1ZDJlOGZhOGZlYjcyOTgy
OTNiNDZmMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJh
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCkBAIC00
Miw2ICs0MiwxMiBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICByZXR1cm4gdG9BUEkoYXJyYXkucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CiB9CiAKK1dLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVz
KFdLVHlwZVJlZiogdmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpCit7CisgICAgUmVmUHRy
PEltbXV0YWJsZUFycmF5PiBhcnJheSA9IEltbXV0YWJsZUFycmF5OjphZG9wdChyZWludGVycHJl
dF9jYXN0PEFQSU9iamVjdCoqPihjb25zdF9jYXN0PHZvaWQqKj4odmFsdWVzKSksIG51bWJlck9m
VmFsdWVzKTsKKyAgICByZXR1cm4gdG9BUEkoYXJyYXkucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9
CisKIFdLVHlwZVJlZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJlZiwg
c2l6ZV90IGluZGV4KQogewogICAgIHJldHVybiB0b0ltcGwoYXJyYXlSZWYpLT5hdChpbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuaAppbmRleCBkYTQ1NjBhMGE0MjdhOTI3
NzE5OWFlODAwNmVjZWQ0NzI3NzcyZjg3Li4yNTkwMGYzMTM5ZWQ5MDNjN2FmYTQ3YzI1YjEwNjQ1
MTRiYzA0Njg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJh
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmgKQEAgLTM3LDYg
KzM3LDcgQEAgZXh0ZXJuICJDIiB7CiBXS19FWFBPUlQgV0tUeXBlSUQgV0tBcnJheUdldFR5cGVJ
RCgpOwogCiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlKFdLVHlwZVJlZiogdmFs
dWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tBcnJh
eUNyZWF0ZUFkb3B0aW5nVmFsdWVzKFdLVHlwZVJlZiogdmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZW
YWx1ZXMpOwogCiBXS19FWFBPUlQgV0tUeXBlUmVmIFdLQXJyYXlHZXRJdGVtQXRJbmRleChXS0Fy
cmF5UmVmIGFycmF5LCBzaXplX3QgaW5kZXgpOwogV0tfRVhQT1JUIHNpemVfdCBXS0FycmF5R2V0
U2l6ZShXS0FycmF5UmVmIGFycmF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApp
bmRleCBhYjZjYTg0Y2RhNTdmOGQ1NDVkODg1N2UxOGM5MTNmNTE2ZTUxNjM1Li5mNGVhNjA2OTk1
ODNkMWY3OWRiOWRmZWU3YmUwZmQ5YjgyZmU5YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCkBAIC03OSw2ICs3OSwxMiBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1VSTFJlcXVlc3QqIFdLVVJMUmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVVJMUmVzcG9uc2UqIFdLVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1VzZXJDb250ZW50VVJMUGF0dGVybiogV0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWY7
CiAKK2VudW0gV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHsKKyAgICBrV0tJbmplY3RJbkFs
bEZyYW1lcywKKyAgICBrV0tJbmplY3RJblRvcEZyYW1lT25seQorfTsKK3R5cGVkZWYgZW51bSBX
S1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOwor
CiAvKiBXZWJLaXQyIG1haW4gQVBJIHR5cGVzICovCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIqIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJS
ZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAKaW5kZXggZTFk
NGVlN2JiZGFiNDgyMjc0NmJmMWJmN2M0MmFjNDM0OTIzNzVjNC4uNGU0MGJkZjRlODBmOTM4OGVh
NTMzYWZmNjI0NWFlMTU3OGEwN2NmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL2NmL1dLVVJMQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLmNwcApAQCAtMzgsNiArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhDRlVSTChDRlVSTFJlZiBjZlVSTCkKIHsKKyAgICBp
ZiAoIWNmVVJMKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIFN0cmluZyB1cmxTdHJpbmcoQ0ZV
UkxHZXRTdHJpbmcoY2ZVUkwpKTsKICAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodXJsU3RyaW5n
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwCmluZGV4IDY3YjJh
MzRjNWNkYmVhNGZmZjhmM2FjNjNjOWE2MzU1NzY5NjcxYWMuLjM0NWVlYjdiYWM0YjRjYTNhNjI2
ODM3ZTE4ZGNlNThmMjgzODA3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9J
bW11dGFibGVBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFy
cmF5LmNwcApAQCAtMzIsMTEgKzMyLDExIEBAIEltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJh
eSgpCiB7CiB9CiAKLUltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheShBUElPYmplY3QqKiBl
bnRyaWVzLCBzaXplX3Qgc2l6ZSkKK0ltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheShBUElP
YmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSwgYm9vbCBzaG91bGRBZG9wdFJlZmVyZW5jZXMp
CiAgICAgOiBtX2VudHJpZXMoc2l6ZSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgbV9lbnRyaWVzW2ldID0gZW50cmllc1tpXTsKKyAgICAgICAgbV9l
bnRyaWVzW2ldID0gc2hvdWxkQWRvcHRSZWZlcmVuY2VzID8gYWRvcHRSZWYoZW50cmllc1tpXSkg
OiBlbnRyaWVzW2ldOwogfQogCiBJbW11dGFibGVBcnJheTo6SW1tdXRhYmxlQXJyYXkoVmVjdG9y
PFJlZlB0cjxBUElPYmplY3Q+ID4mIGVudHJpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFi
bGVBcnJheS5oCmluZGV4IGUyNmU0YWE1ZGM3ODE3ZTJkZmMzOTVhNzQyZjY2OTEwZmRkMTYxNzUu
Ljk5MGFhMmI3NmE2OTlmMDJhNGVhOWNlYzBiZTEzZTQxMWYzYWY3NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9JbW11dGFibGVBcnJheS5oCkBAIC00NSw3ICs0NSwxMSBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjcmVhdGUoQVBJT2JqZWN0
KiogZW50cmllcywgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEltbXV0YWJsZUFycmF5KGVudHJpZXMsIHNpemUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplLCAvKiBzaG91bGRBZG9wdFJlZmVy
ZW5jZXMgKi8gZmFsc2UpKTsKKyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IGFkb3B0KEFQSU9iamVjdCoqIGVudHJpZXMsIHNpemVfdCBzaXplKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplLCAv
KiBzaG91bGRBZG9wdFJlZmVyZW5jZXMgKi8gdHJ1ZSkpOwogICAgIH0KICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbW11dGFibGVBcnJheT4gYWRvcHQoVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4m
IGVudHJpZXMpCiAgICAgewpAQCAtNjQsNyArNjgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBJbW11dGFibGVBcnJheSgpOwotICAgIEltbXV0YWJsZUFycmF5KEFQSU9iamVjdCoqIGVu
dHJpZXMsIHNpemVfdCBzaXplKTsKKyAgICBJbW11dGFibGVBcnJheShBUElPYmplY3QqKiBlbnRy
aWVzLCBzaXplX3QsIGJvb2wgc2hvdWxkQWRvcHRSZWZlcmVuY2VzKTsKICAgICBJbW11dGFibGVB
cnJheShWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiYgZW50cmllcyk7CiAKICAgICB2aXJ0dWFs
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjY2RhZjk0MWIx
MWI3MjBhZGRmOWNiMjgxZGZkYWYyYzA0ZDY2ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsMTg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50
Q29udGFpbmVyLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKKyNpbmNsdWRlICJB
cmd1bWVudHMuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2FnZUNvZGVycy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKyAgICAKK2NsYXNzIFVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNvZGVyIDogcHVi
bGljIFVzZXJNZXNzYWdlRW5jb2RlcjxVc2VyQ29udGVudEl0ZW1NZXNzYWdlRW5jb2Rlcj4gewor
cHVibGljOiAgICAKKyAgICBleHBsaWNpdCBVc2VyQ29udGVudEl0ZW1NZXNzYWdlRW5jb2RlcihB
UElPYmplY3QqIHJvb3QpCisgICAgOiBVc2VyTWVzc2FnZUVuY29kZXI8VXNlckNvbnRlbnRJdGVt
TWVzc2FnZUVuY29kZXI+KHJvb3QpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkIGVuY29k
ZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBBUElPYmplY3Q6OlR5cGUgdHlwZSA9IEFQSU9iamVjdDo6VHlwZU51bGw7CisgICAgICAgIGlm
IChiYXNlRW5jb2RlKGVuY29kZXIsIHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9OworCitjbGFzcyBVc2VyQ29udGVudEl0
ZW1NZXNzYWdlRGVjb2RlciA6IHB1YmxpYyBVc2VyTWVzc2FnZURlY29kZXI8VXNlckNvbnRlbnRJ
dGVtTWVzc2FnZURlY29kZXI+IHsKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBVc2VyTWVzc2FnZURl
Y29kZXI8VXNlckNvbnRlbnRJdGVtTWVzc2FnZURlY29kZXI+IEJhc2U7CisKK3B1YmxpYzoKKyAg
ICBVc2VyQ29udGVudEl0ZW1NZXNzYWdlRGVjb2RlcihVc2VyQ29udGVudEl0ZW1NZXNzYWdlRGVj
b2RlciYsIFJlZlB0cjxBUElPYmplY3Q+JiByb290KQorICAgIDogQmFzZShyb290KQorICAgIHsK
KyAgICB9CisKKyAgICBVc2VyQ29udGVudEl0ZW1NZXNzYWdlRGVjb2RlcihSZWZQdHI8QVBJT2Jq
ZWN0PiYgcm9vdCkKKyAgICA6IEJhc2Uocm9vdCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgVXNlckNvbnRl
bnRJdGVtTWVzc2FnZURlY29kZXImIGNvZGVyKQorICAgIHsKKyAgICAgICAgQVBJT2JqZWN0OjpU
eXBlIHR5cGUgPSBBUElPYmplY3Q6OlR5cGVOdWxsOworICAgICAgICBpZiAoIUJhc2U6OmJhc2VE
ZWNvZGUoZGVjb2RlciwgY29kZXIsIHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCitVc2VyQ29udGVudENvbnRhaW5lcjo6
SXRlbTo6SXRlbSgpCit7Cit9CisKK1VzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpJdGVtKFBh
c3NSZWZQdHI8V2ViU3RyaW5nPiBzb3VyY2UsIFBhc3NSZWZQdHI8V2ViVVJMPiB1cmwsIFBhc3NS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHdoaXRlbGlzdCwgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gYmxhY2tsaXN0LCBJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVHlwZSB0eXBlKQor
ICAgIDogbV9zb3VyY2Uoc291cmNlKQorICAgICwgbV91cmwodXJsKQorICAgICwgbV93aGl0ZWxp
c3Qod2hpdGVsaXN0KQorICAgICwgbV9ibGFja2xpc3QoYmxhY2tsaXN0KQorICAgICwgbV9pbmpl
Y3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykKKyAgICAsIG1fdHlwZSh0eXBlKQoreworICAgIEFT
U0VSVChtX3NvdXJjZSk7Cit9CisKK3ZvaWQgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OmVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2Rlci0+ZW5jb2RlKFVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNvZGVyKG1fc291cmNlLmdldCgp
KSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKFVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNvZGVyKG1f
dXJsLmdldCgpKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKFVzZXJDb250ZW50SXRlbU1lc3NhZ2VF
bmNvZGVyKG1fd2hpdGVsaXN0LmdldCgpKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKFVzZXJDb250
ZW50SXRlbU1lc3NhZ2VFbmNvZGVyKG1fYmxhY2tsaXN0LmdldCgpKSk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2luamVjdGVkRnJhbWVzKSk7CisgICAgZW5j
b2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpKTsKK30KKworYm9vbCBV
c2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0mIGl0ZW0pCit7CisgICAgQVNT
RVJUKCFpdGVtLm1fc291cmNlKTsKKyAgICBBU1NFUlQoIWl0ZW0ubV91cmwpOworICAgIEFTU0VS
VCghaXRlbS5tX3doaXRlbGlzdCk7CisgICAgQVNTRVJUKCFpdGVtLm1fYmxhY2tsaXN0KTsKKwor
ICAgIFJlZlB0cjxBUElPYmplY3Q+IG9iamVjdDsKKworICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KFVzZXJDb250ZW50SXRlbU1lc3NhZ2VEZWNvZGVyKG9iamVjdCkpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKG9iamVjdC0+dHlwZSgpID09IEFQSU9iamVjdDo6VHlwZVN0cmlu
Zyk7CisgICAgaXRlbS5tX3NvdXJjZSA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViU3RyaW5nPihv
YmplY3QucmVsZWFzZSgpKTsKKworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKFVzZXJDb250ZW50
SXRlbU1lc3NhZ2VEZWNvZGVyKG9iamVjdCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
QVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gQVBJT2JqZWN0OjpUeXBlVVJMKTsK
KyAgICBpdGVtLm1fdXJsID0gc3RhdGljX3BvaW50ZXJfY2FzdDxXZWJVUkw+KG9iamVjdC5yZWxl
YXNlKCkpOworCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoVXNlckNvbnRlbnRJdGVtTWVzc2Fn
ZURlY29kZXIob2JqZWN0KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoIW9i
amVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBBUElPYmplY3Q6OlR5cGVBcnJheSk7CisgICAgaXRl
bS5tX3doaXRlbGlzdCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8SW1tdXRhYmxlQXJyYXk+KG9iamVj
dC5yZWxlYXNlKCkpOworCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoVXNlckNvbnRlbnRJdGVt
TWVzc2FnZURlY29kZXIob2JqZWN0KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NF
UlQoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBBUElPYmplY3Q6OlR5cGVBcnJheSk7Cisg
ICAgaXRlbS5tX2JsYWNrbGlzdCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8SW1tdXRhYmxlQXJyYXk+
KG9iamVjdC5yZWxlYXNlKCkpOworCisgICAgdWludDMyX3QgaW5qZWN0ZWRGcmFtZXM7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIoaW5qZWN0ZWRGcmFtZXMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaXRlbS5tX2luamVjdGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8SW5qZWN0
ZWRGcmFtZXM+KGluamVjdGVkRnJhbWVzKTsKKworICAgIHVpbnQzMl90IHR5cGU7CisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpdGVtLm1fdHlwZSA9IHN0YXRpY19jYXN0PFR5cGU+KHR5cGUpOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gdG9TdHJpbmdWZWN0
b3IoSW1tdXRhYmxlQXJyYXkqIGFycmF5KQoreworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgc2l6ZV90IHNpemUgPSBhcnJheS0+c2l6ZSgpOworICAgIGlm
ICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgT3duUHRyPFZlY3Rv
cjxTdHJpbmc+ID4gc3RyaW5nVmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KCkp
OworICAgIHN0cmluZ1ZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBXZWJTdHJpbmcqIHdl
YlN0cmluZyA9IGFycmF5LT5hdDxXZWJTdHJpbmc+KGkpOworICAgICAgICBBU1NFUlQod2ViU3Ry
aW5nKTsKKyAgICAgICAgc3RyaW5nVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQod2ViU3RyaW5nLT5z
dHJpbmcoKSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBzdHJpbmdWZWN0b3IucmVsZWFzZSgp
OworfQorCitQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gVXNlckNvbnRlbnRDb250YWluZXI6
Okl0ZW06OndoaXRlbGlzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvU3RyaW5nVmVjdG9yKG1f
d2hpdGVsaXN0LmdldCgpKTsKK30KKworUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IFVzZXJD
b250ZW50Q29udGFpbmVyOjpJdGVtOjpibGFja2xpc3QoKSBjb25zdAoreworICAgIHJldHVybiB0
b1N0cmluZ1ZlY3RvcihtX2JsYWNrbGlzdC5nZXQoKSk7Cit9CisKK3ZvaWQgVXNlckNvbnRlbnRD
b250YWluZXI6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1fdXNlckNvbnRlbnQpOworfQorCitib29sIFVzZXJD
b250ZW50Q29udGFpbmVyOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBVc2VyQ29udGVudENvbnRhaW5lciYgdXNlckNvbnRlbnRDb250YWluZXIpCit7CisgICAgQVNT
RVJUKHVzZXJDb250ZW50Q29udGFpbmVyLm1fdXNlckNvbnRlbnQuaXNFbXB0eSgpKTsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZSh1c2VyQ29udGVudENvbnRhaW5lci5tX3VzZXJDb250ZW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVu
dENvbnRhaW5lci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzBiZjIxNWEzM2JmYjkyMTIwZTBiZGE3NGY2ODFiNWQ2MWNhYWJhZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVudENvbnRh
aW5lci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJDb250ZW50
Q29udGFpbmVyX2gKKyNkZWZpbmUgVXNlckNvbnRlbnRDb250YWluZXJfaAorCisjaW5jbHVkZSAi
SW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJV
UkwuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFy
Z3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFVzZXJDb250
ZW50Q29udGFpbmVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBJdGVtIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIGVudW0gVHlwZSB7CisgICAgICAgICAgICBUeXBlU3R5bGVzaGVldCwKKyAgICAgICAg
ICAgIFR5cGVTY3JpcHQKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGVudW0gSW5qZWN0
ZWRGcmFtZXMgeworICAgICAgICAgICAgSW5qZWN0SW5BbGxGcmFtZXMsCisgICAgICAgICAgICBJ
bmplY3RJblRvcEZyYW1lT25seQorICAgICAgICB9OworCisgICAgICAgIEl0ZW0oKTsKKyAgICAg
ICAgSXRlbShQYXNzUmVmUHRyPFdlYlN0cmluZz4gc291cmNlLCBQYXNzUmVmUHRyPFdlYlVSTD4s
IFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHdoaXRlbGlzdCwgUGFzc1JlZlB0cjxJbW11dGFi
bGVBcnJheT4gYmxhY2tsaXN0LCBJbmplY3RlZEZyYW1lcywgVHlwZSk7CisKKyAgICAgICAgdm9p
ZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAgICAgIHN0YXRp
YyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBJdGVtJik7CisgICAgICAg
IAorICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
LT5zdHJpbmcoKTsgfQorICAgICAgICBXZWJDb3JlOjpLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJu
ICFtX3VybCB8fCBtX3VybC0+c3RyaW5nKCkuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwo
KSA6IFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCBtX3VybC0+c3RyaW5nKCkpOyB9Cisg
ICAgICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxpc3QoKSBjb25zdDsKKyAg
ICAgICAgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IGJsYWNrbGlzdCgpIGNvbnN0OworICAg
ICAgICBJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1faW5q
ZWN0ZWRGcmFtZXM7IH0KKyAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZWZQdHI8V2ViU3RyaW5nPiBtX3NvdXJjZTsK
KyAgICAgICAgUmVmUHRyPFdlYlVSTD4gbV91cmw7CisgICAgICAgIFJlZlB0cjxJbW11dGFibGVB
cnJheT4gbV93aGl0ZWxpc3Q7CisgICAgICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gbV9ibGFj
a2xpc3Q7CisgICAgICAgIEluamVjdGVkRnJhbWVzIG1faW5qZWN0ZWRGcmFtZXM7CisgICAgICAg
IFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXIqKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiwgVXNlckNvbnRlbnRDb250YWluZXImKTsKKyAgICAKKyAgICB2b2lkIGFkZEl0
ZW0oY29uc3QgSXRlbSYgaXRlbSkgeyBtX3VzZXJDb250ZW50LmFwcGVuZChpdGVtKTsgfQorICAg
IHZvaWQgcmVtb3ZlQWxsSXRlbXMoKSB7IG1fdXNlckNvbnRlbnQuY2xlYXIoKTsgfQorICAgIAor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV91c2VyQ29udGVudC5zaXplKCk7IH0K
KyAgICBjb25zdCBJdGVtJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV91c2VyQ29udGVu
dC5hdChpKTsgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxVc2VyQ29udGVudENvbnRhaW5lcjo6
SXRlbT4gbV91c2VyQ29udGVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gVXNlckNvbnRlbnRDb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdl
R3JvdXBEYXRhLmNwcAppbmRleCAxMDdkZjFkMTVjYWEwYTQ1ZjdkNWE5YmRlMDU1MTgxMWUyOWI3
ZmM2Li40ODljMWMwY2IzY2E2MjcxM2E5MDI4NGYxNzM5Njk5NjIyYjU5MTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKLSAgICByZXR1cm4gZW5jb2Rl
ci0+ZW5jb2RlKENvcmVJUEM6OkluKGlkZW50aWZlciwgcGFnZUdyb3VwSUQsIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSk7CisgICAgcmV0dXJuIGVuY29k
ZXItPmVuY29kZShDb3JlSVBDOjpJbihpZGVudGlmZXIsIHBhZ2VHcm91cElELCB2aXNpYmxlVG9J
bmplY3RlZEJ1bmRsZSwgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCwgdXNlclN0eWxlU2hlZXRzKSk7
CiB9CiAKIGJvb2wgV2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViUGFnZUdyb3VwRGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gZGVj
b2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChkYXRhLmlkZW50aWZlciwgZGF0YS5wYWdlR3JvdXBJ
RCwgZGF0YS52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSwgZGF0YS52aXNpYmxlVG9IaXN0b3J5Q2xp
ZW50KSk7CisgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoZGF0YS5pZGVu
dGlmZXIsIGRhdGEucGFnZUdyb3VwSUQsIGRhdGEudmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGRh
dGEudmlzaWJsZVRvSGlzdG9yeUNsaWVudCwgZGF0YS51c2VyU3R5bGVTaGVldHMpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUdyb3VwRGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERh
dGEuaAppbmRleCAzNmY2ZmUxOWI1MTBiODdmOGYzNjE2MmIxODA1YzE0Yjc2OWY2ZGE5Li5kOTdl
OWQwNTY5YjM5N2MxN2IyNDhkNzMxZmVlOGUzOWIxZTRlZmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgV2ViUGFn
ZUdyb3VwRGF0YV9oCiAjZGVmaW5lIFdlYlBhZ2VHcm91cERhdGFfaAogCisjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250YWluZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKQEAgLTQzLDYgKzQ1
LDcgQEAgc3RydWN0IFdlYlBhZ2VHcm91cERhdGEgewogICAgIHVpbnQ2NF90IHBhZ2VHcm91cElE
OwogICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CiAgICAgYm9vbCB2aXNpYmxlVG9I
aXN0b3J5Q2xpZW50OworICAgIFVzZXJDb250ZW50Q29udGFpbmVyIHVzZXJTdHlsZVNoZWV0czsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNGYzOTMwNzUzY2Fm
YzE4YzAwMDdhZDdjYTFiZjQ4OGVlNjE0YjkzNi4uZTM2YzUyOGEzZmE2NmRjOGYwZWYxYjc3MjA4
Y2ZhMjlkZDhhNjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC05Niw2ICs5Niw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFNoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAogICAgIFNoYXJlZC9TdXJmYWNlVXBk
YXRlSW5mby5oIFwKICAgICBTaGFyZWQvVXBkYXRlSW5mby5oIFwKKyAgICBTaGFyZWQvVXNlckNv
bnRlbnRDb250YWluZXIuaCBcCiAgICAgU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggXAogICAg
IFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggXAogICAgIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBcCkBAIC00NTIsNiArNDUzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1N0
YXRpc3RpY3NEYXRhLmNwcCBcCiAgICAgU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmNwcCBcCiAg
ICAgU2hhcmVkL1VwZGF0ZUluZm8uY3BwIFwKKyAgICBTaGFyZWQvVXNlckNvbnRlbnRDb250YWlu
ZXIuY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYkJhdHRlcnlTdGF0dXMu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
CmluZGV4IDhhNGQ4NmEwNTM3OGI1NDM0MmQwZWMyZGI4OGM4ZTk5ZTQ5Njg2MGEuLjk5Yjc4M2M5
YzI1YmUwZDZlM2Q3YjE5NmQ0YzI1NzU5ZjI3N2EzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNTcsMyArNTcsMTYgQEAgV0tQcmVm
ZXJlbmNlc1JlZiBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKIHsKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VHcm91cFJlZiktPnByZWZl
cmVuY2VzKCkpOwogfQorCit2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQoV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIFdLVVJMUmVmIGJh
c2VVUkwsIFdLQXJyYXlSZWYgd2hpdGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQoreworICAgIGlmICghc291cmNl
UmVmKQorICAgICAgICByZXR1cm47CisKKyAgICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+YWRkVXNl
clN0eWxlU2hlZXQoVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0odG9JbXBsKHNvdXJjZVJlZiks
IHRvSW1wbChiYXNlVVJMKSwgdG9JbXBsKHdoaXRlbGlzdCksIHRvSW1wbChibGFja2xpc3QpLCBz
dGF0aWNfY2FzdDxVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6SW5qZWN0ZWRGcmFtZXM+KGlu
amVjdGVkRnJhbWVzKSwgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OlR5cGVTdHlsZXNoZWV0
KSk7Cit9CisKK3ZvaWQgV0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwUmVmKQoreworICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT5yZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZUdyb3VwLmgKaW5kZXggNzA1ZGYwODNlN2E0ZTRhNTA1NWY3OTM5ZWJiYTliZDc0
ZjY5YzA4ZC4uMTI4MDI0MWM4NTA3OWU1MTQ2ZGUxZmRhNjFjNjc0YzVjZTlmYzJkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmgKQEAgLTQwLDYgKzQw
LDkgQEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUdyb3VwQ29weUlkZW50aWZpZXIoV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tQYWdlR3JvdXBTZXRQ
cmVmZXJlbmNlcyhXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXMpOwogV0tfRVhQT1JUIFdLUHJlZmVyZW5jZXNSZWYgV0tQYWdlR3JvdXBHZXRQcmVm
ZXJlbmNlcyhXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOworICAgIAorV0tfRVhQT1JUIHZvaWQg
V0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdL
U3RyaW5nUmVmIHNvdXJjZSwgV0tVUkxSZWYgYmFzZVVSTCwgV0tBcnJheVJlZiB3aGl0ZWxpc3Qs
IFdLQXJyYXlSZWYgYmxhY2tsaXN0LCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOworV0tf
RVhQT1JUIHZvaWQgV0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
LmgKaW5kZXggZjM0MjhmYzkzYjMzY2YxMWJiNmU5M2UwYzgyNTIzYzI2MzUyNThmZS4uZjI2Yzk1
MmMwNjBjMzY5YTZjNzg4Y2RlNjA5Y2E1NWJhMjgyOTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaApA
QCAtMzYsNiArMzYsMTEgQEAgV0tfRVhQT1JUCiAKIC0gKGlkKWluaXRXaXRoSWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyOwogCisvKiBVc2VyIENvbnRlbnQgKi8KKworLSAodm9pZClh
ZGRVc2VyU3R5bGVTaGVldDooTlNTdHJpbmcgKilzb3VyY2UgYmFzZVVSTDooTlNVUkwgKiliYXNl
VVJMIHdoaXRlbGlzdDooTlNBcnJheSAqKXdoaXRlbGlzdCBibGFja2xpc3Q6KE5TQXJyYXkgKili
bGFja2xpc3QgbWFpbkZyYW1lT25seTooQk9PTCltYWluRnJhbWVPbmx5OworLSAodm9pZClyZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHM7CisKIAogLyogU2V0dGluZ3MgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0R3Jv
dXAubW0KaW5kZXggMzM4ZDM5MGNhODMzMmI4ZDkyY2Q1NDVkOTFjMmY0OGNhYmMxNjFjMS4uODdj
ZmZkMGU3MzZlOGIxOTJkNWQ2NzljMmQ4ZjVlOTZiZDQ3ODZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
Lm1tCkBAIC0yNywxMCArMjcsMTQgQEAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXAu
aCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIgogCisjaW1wb3J0
ICJXS0FycmF5LmgiCiAjaW1wb3J0ICJXS1BhZ2VHcm91cC5oIgogI2ltcG9ydCAiV0tQcmVmZXJl
bmNlcy5oIgogI2ltcG9ydCAiV0tSZXRhaW5QdHIuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIK
KyNpbXBvcnQgIldLVVJMLmgiCisjaW1wb3J0ICJXS1VSTENGLmgiCisjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRHcm91cERhdGEgOiBOU09iamVj
dCB7CiBAcHVibGljCkBAIC04MSw2ICs4NSw0MyBAQAogICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVn
aW5zRW5hYmxlZChXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHNlbGYuX3BhZ2VHcm91cFJlZiks
IGFsbG93c1BsdWdJbnMpOwogfQogCitzdGF0aWMgV0tBcnJheVJlZiBjcmVhdGVXS0FycmF5KE5T
QXJyYXkgKmFycmF5KQoreworICAgIE5TVUludGVnZXIgY291bnQgPSBbYXJyYXkgY291bnRdOwor
ICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gV0tBcnJheVJlZigpOworCisgICAg
VmVjdG9yPFdLVHlwZVJlZj4gc3RyaW5nVmVjdG9yOworICAgIHN0cmluZ1ZlY3Rvci5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIGlkIGVudHJ5ID0gW2FycmF5IG9iamVjdEF0SW5kZXg6aV07
CisgICAgICAgIGlmIChbZW50cnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAg
ICAgICAgICAgIHN0cmluZ1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoV0tTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKENGU3RyaW5nUmVmKWVudHJ5KSk7CisgICAgICAgICAgICAKKyAgICB9CisKKyAg
ICByZXR1cm4gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHN0cmluZ1ZlY3Rvci5kYXRhKCks
IHN0cmluZ1ZlY3Rvci5zaXplKCkpOworfQorCistKHZvaWQpYWRkVXNlclN0eWxlU2hlZXQ6KE5T
U3RyaW5nICopc291cmNlIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB3aGl0ZWxpc3Q6KE5TQXJy
YXkgKil3aGl0ZWxpc3QgYmxhY2tsaXN0OihOU0FycmF5ICopYmxhY2tsaXN0IG1haW5GcmFtZU9u
bHk6KEJPT0wpbWFpbkZyYW1lT25seQoreworICAgIGlmICghc291cmNlKQorICAgICAgICByZXR1
cm47CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTb3VyY2UgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilzb3VyY2UpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gd2tCYXNlVVJMID0gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhDRlVS
TCgoQ0ZVUkxSZWYpYmFzZVVSTCkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrV2hp
dGVsaXN0ID0gYWRvcHRXSyhjcmVhdGVXS0FycmF5KHdoaXRlbGlzdCkpOworICAgIFdLUmV0YWlu
UHRyPFdLQXJyYXlSZWY+IHdrQmxhY2tsaXN0ID0gYWRvcHRXSyhjcmVhdGVXS0FycmF5KGJsYWNr
bGlzdCkpOworICAgIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyA9
IG1haW5GcmFtZU9ubHkgPyBrV0tJbmplY3RJblRvcEZyYW1lT25seSA6IGtXS0luamVjdEluQWxs
RnJhbWVzOworCisgICAgV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldChzZWxmLl9wYWdlR3Jv
dXBSZWYsIHdrU291cmNlLmdldCgpLCB3a0Jhc2VVUkwuZ2V0KCksIHdrV2hpdGVsaXN0LmdldCgp
LCB3a0JsYWNrbGlzdC5nZXQoKSwgaW5qZWN0ZWRGcmFtZXMpOworfQorCistICh2b2lkKXJlbW92
ZUFsbFVzZXJTdHlsZVNoZWV0cworeworICAgIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzKHNlbGYuX3BhZ2VHcm91cFJlZik7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKEludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCA3MjU4OGQ0ZDdmMWI5OWU3MjMxYTM0YTlmNzUxOTVh
ODc0ODc1ZDYyLi43MzBkZjc3Y2UyNzcxMjVhYTk4MTY0OGYzOGEzYjRlNWE0ZjU3NzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogCisjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTEyNyw1ICsxMjgsMTcgQEAgdm9pZCBXZWJQYWdlR3JvdXA6OnByZWZlcmVuY2VzRGlk
Q2hhbmdlKCkKICAgICAgICAgcGFnZS0+cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKTsKICAgICB9CiB9
CisgICAgCit2b2lkIFdlYlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgVXNlckNv
bnRlbnRDb250YWluZXI6Okl0ZW0mIHN0eWxlU2hlZXQpCit7CisgICAgbV9kYXRhLnVzZXJTdHls
ZVNoZWV0cy5hZGRJdGVtKHN0eWxlU2hlZXQpOworICAgIHNlbmRUb0FsbFByb2Nlc3Nlc0luR3Jv
dXAoTWVzc2FnZXM6OldlYlBhZ2VHcm91cFByb3h5OjpBZGRVc2VyU3R5bGVTaGVldChzdHlsZVNo
ZWV0KSwgbV9kYXRhLnBhZ2VHcm91cElEKTsKK30KKwordm9pZCBXZWJQYWdlR3JvdXA6OnJlbW92
ZUFsbFVzZXJTdHlsZVNoZWV0cygpCit7CisgICAgbV9kYXRhLnVzZXJTdHlsZVNoZWV0cy5yZW1v
dmVBbGxJdGVtcygpOworICAgIHNlbmRUb0FsbFByb2Nlc3Nlc0luR3JvdXAoTWVzc2FnZXM6Oldl
YlBhZ2VHcm91cFByb3h5OjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKSwgbV9kYXRhLnBhZ2VH
cm91cElEKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmgKaW5kZXggY2NjMTRiZDkxMGExN2U2MGM0MWFmMWQxNmQ2MTUwNTZj
ODBhZTM2Yi4uZDc1MmZlNWJiZGRhMTlmNDE3NThlNDkyMDgxYjYyZDU4MTEwNzY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaApAQCAtMjgsNiArMjgsOCBAQAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAtNTYs
MTYgKzU4LDM0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZWZlcmVuY2VzKFdlYlByZWZlcmVu
Y2VzKik7CiAgICAgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29uc3Q7CiAgICAgdm9p
ZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpOworICAgIAorICAgIHZvaWQgYWRkVXNlclN0eWxlU2hl
ZXQoY29uc3QgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0mIHN0eWxlU2hlZXQpOworICAgIHZv
aWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZUdy
b3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRs
ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE1lc3NhZ2VUeXBlPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlc0luR3JvdXAoY29uc3QgTWVzc2Fn
ZVR5cGUmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAogICAgIFdlYlBhZ2VHcm91cERhdGEg
bV9kYXRhOwogICAgIG11dGFibGUgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2Vz
OwogICAgIEhhc2hTZXQ8V2ViUGFnZVByb3h5Kj4gbV9wYWdlczsKIH07CisgICAgCit0ZW1wbGF0
ZTx0eXBlbmFtZSBNZXNzYWdlVHlwZT4gaW5saW5lIHZvaWQgV2ViUGFnZUdyb3VwOjpzZW5kVG9B
bGxQcm9jZXNzZXNJbkdyb3VwKGNvbnN0IE1lc3NhZ2VUeXBlJiBtZXNzYWdlLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQoreworICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gcHJvY2Vzc2Vz
U2VlbjsKKyAgICBmb3IgKEhhc2hTZXQ8V2ViUGFnZVByb3h5Kj46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9wYWdlcy5iZWdpbigpLCBlbmQgPSBtX3BhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkgPSAoKml0KS0+cHJv
Y2VzcygpOworICAgICAgICBBU1NFUlQod2ViUHJvY2Vzc1Byb3h5KTsKKyAgICAgICAgaWYgKCFw
cm9jZXNzZXNTZWVuLmFkZCh3ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgaWYgKHdlYlByb2Nlc3NQcm94eS0+Y2FuU2VuZE1lc3NhZ2Uo
KSkKKyAgICAgICAgICAgIHdlYlByb2Nlc3NQcm94eS0+c2VuZChtZXNzYWdlLCBkZXN0aW5hdGlv
bklEKTsKKyAgICB9Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGZhZDE4NDFh
OGVkNzFiMjBhMjc1YTMzZmMxNzE0OTA0MGYxYmU2MS4uNWMzOTBkYTVjOWJlMjA2NzA1YzdmN2Ew
YjUwMjBlMzhiM2YwYjRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjUwLDYgKzI1MCw4IEBACiAJCTFDQThCOTQ1MTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4Qjk0MzEyN0M4ODJB
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5NDQx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJ
MUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87IH07CisJCTI5MTIxNzA3MTYxQ0U3MzYwMDU3
RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTEyMTcwNTE2MUNFNzM2MDA1N0Q0NTEgLyogVXNlckNv
bnRlbnRDb250YWluZXIuY3BwICovOyB9OworCQkyOTEyMTcwODE2MUNFNzM2MDA1N0Q0NTEgLyog
VXNlckNvbnRlbnRDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5MTIxNzA2MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRh
aW5lci5oICovOyB9OwogCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTZC
RDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi87IH07CiAJCTI5NkJE
ODVFMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTZCRDg1QzE1MDE5QkMzMDA3MUY0MjQg
LyogU3RyaW5nVXRpbGl0aWVzLm1tICovOyB9OwogCQkyOUNENTVBQTEyOEUyOTRGMDAxMzNDODUg
LyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaCAqLzsgfTsKQEAgLTEzMTEsMTMgKzEzMTMsMTUgQEAK
IAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQzMTI3Qzg4MkEwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMjkxMjE3MDUxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29u
dGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJDb250
ZW50Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjkxMjE3MDYx
NjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50Q29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5NkJEODVCMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NkJEODVDMTUwMTlCQzMwMDcxRjQyNCAv
KiBTdHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTkxMjhFMjk0RjAw
MTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUQ1NURFRTE2MUJGODc4MDAzMUEyRTMg
LyogV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI5RDU1REVGMTYxQkY5
RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI5RDU1REYwMTYxQkY5RjEwMDMxQTJFMyAv
KiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IFdlYlBhZ2VHcm91cFBy
b3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlENTVERUYxNjFC
RjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlENTVERjAxNjFC
RjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90
aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5OTk3MTE0NkM3NTlCMDAyOURFQjkg
LyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxMkMwQzQ5MTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTm90aWZpY2F0aW9uUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU1OCw4IEBA
CiAJCQkJQkM5MEExRDAxMjJERDU1RTAwQ0M4QzUwIC8qIFdlYlVSTFJlc3BvbnNlLmggKi8sCiAJ
CQkJRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5o
ICovLAogCQkJCUMwMzM3REQwMTI3QTI5ODAwMDhGRjRGNCAvKiBXZWJXaGVlbEV2ZW50LmNwcCAq
LywKKwkJCQkyOTEyMTcwNTE2MUNFNzM2MDA1N0Q0NTEgLyogVXNlckNvbnRlbnRDb250YWluZXIu
Y3BwICovLAorCQkJCTI5MTIxNzA2MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRh
aW5lci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBTaGFyZWQ7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNDMzOCw2ICs0MzQ0LDcgQEAKIAkJCQkxQTNFRUQwRjE2MUE1MzU0MDBBRUI0
RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFRUQxMjE2
MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OUQ1NURGMjE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMjkxMjE3MDgxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50
Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTUxOTcsNiArNTIwNCw3IEBACiAJCQkJQkM5
ODlEODExNjFBN0U1RDAwMEQ0NkQzIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbi5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBM0VFRDBFMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlENTVERjExNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBh
Z2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5MTIx
NzA3MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCmluZGV4IGYwMzJjNjIyMmE4MTIz
ZTg1NDRjODI3N2JjY2E0YWUzYzhhNDJjZjEuLmU1M2IyMmFjY2IzOTEwYjNlNmEzYWRjODlmYjZl
ZjhkYWUyMDYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaApAQCAtNDIsMTIg
KzQyLDYgQEAgZW51bSBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHsKIH07CiB0eXBlZGVmIGVu
dW0gV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lOwog
Ci1lbnVtIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB7Ci0gICAga1dLSW5qZWN0SW5BbGxG
cmFtZXMsCi0gICAga1dLSW5qZWN0SW5Ub3BGcmFtZU9ubHkKLX07Ci10eXBlZGVmIGVudW0gV0tV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczsKLQog
Ly8gVGVzdFJ1bm5lciBvbmx5IFNQSQogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRTaG91bGRU
cmFja1Zpc2l0ZWRMaW5rcyhXS0J1bmRsZVJlZiBidW5kbGUsIGJvb2wgc2hvdWxkVHJhY2tWaXNp
dGVkTGlua3MpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBbHdheXNBY2NlcHRDb29raWVz
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAppbmRleCA4YTg3NzYyMzEz
MTNlOTFkZWU4NGU4YzBkNDliNWE4YjVkOThiZWFlLi5hOTMxODc4Nzg5ODU5NzNkZTQ3NDI1ZTA4
MmI1Yjg0ZmQ5YmQxNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3Jv
dXAuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0LDE2ICs0NiwyOCBAQCBQYXNzUmVm
UHRyPFdlYlBhZ2VHcm91cFByb3h5PiBXZWJQYWdlR3JvdXBQcm94eTo6Y3JlYXRlKGNvbnN0IFdl
YlBhZ2VHcm91cERhdGEmCiBXZWJQYWdlR3JvdXBQcm94eTo6fldlYlBhZ2VHcm91cFByb3h5KCkK
IHsKIH0KLSAgICAKKwogdm9pZCBXZWJQYWdlR3JvdXBQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgZGlkUmVj
ZWl2ZVdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3Vt
ZW50cyk7CiB9CisgICAgCitXZWJQYWdlR3JvdXBQcm94eTo6V2ViUGFnZUdyb3VwUHJveHkoY29u
c3QgV2ViUGFnZUdyb3VwRGF0YSYgZGF0YSkKKyAgICA6IG1fZGF0YShkYXRhKQorICAgICwgbV9w
YWdlR3JvdXAoV2ViQ29yZTo6UGFnZUdyb3VwOjpwYWdlR3JvdXAobV9kYXRhLmlkZW50aWZlcikp
Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLnVzZXJTdHlsZVNoZWV0cy5zaXpl
KCk7ICsraSkKKyAgICAgICAgYWRkVXNlclN0eWxlU2hlZXQoZGF0YS51c2VyU3R5bGVTaGVldHMu
YXQoaSkpOworfQorCit2b2lkIFdlYlBhZ2VHcm91cFByb3h5OjphZGRVc2VyU3R5bGVTaGVldChj
b25zdCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSYgc3R5bGVTaGVldCkKK3sKKyAgICBtX3Bh
Z2VHcm91cC0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBzdHlsZVNoZWV0LnNvdXJjZSgpLCBzdHlsZVNoZWV0LnVybCgpLCBzdHlsZVNo
ZWV0LndoaXRlbGlzdCgpLCBzdHlsZVNoZWV0LmJsYWNrbGlzdCgpLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzPihzdHlsZVNoZWV0LmluamVjdGVkRnJhbWVz
KCkpKTsKK30KIAotdm9pZCBXZWJQYWdlR3JvdXBQcm94eTo6ZGlkUmVjZWl2ZVdlYlBhZ2VHcm91
cFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKQordm9pZCBXZWJQYWdlR3JvdXBQcm94eTo6cmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKCkKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBX
ZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbiBjb250YWlucyBtZXNzYWdlcywKLSAgICAvLyBp
biB3aGljaCBjYXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuCisgICAgbV9w
YWdlR3JvdXAtPnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZChXZWJDb3JlOjptYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaApp
bmRleCA5YTk4NDQ3YTBiMmUwNDZmNDBiYjM4M2IwZTFmMzIyYjQ1OGMxYjI2Li40MWJlNTA2MmRm
OWYxZGYyYzQ5ZDI1NGM0MjZiMTNmYzRjOTY5OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaApAQCAtMzYsNiArMzYs
MTAgQEAgY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIE1lc3NhZ2VJRDsKIH0KIAorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUGFnZUdyb3VwOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViUGFnZUdyb3VwUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKQEAgLTUzLDE2ICs1
NywxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsK
IAogcHJpdmF0ZToKLSAgICBXZWJQYWdlR3JvdXBQcm94eShjb25zdCBXZWJQYWdlR3JvdXBEYXRh
JiBkYXRhKQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgIHsKLSAgICB9CisgICAgV2ViUGFn
ZUdyb3VwUHJveHkoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYpOwogCiAgICAgdmlydHVhbCBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAgICAgCiAgICAgdm9pZCBkaWRSZWNl
aXZlV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIAorICAgIHZvaWQg
YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0mIHN0eWxl
U2hlZXQpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CiAKICAgICBXZWJQ
YWdlR3JvdXBEYXRhIG1fZGF0YTsKKyAgICBXZWJDb3JlOjpQYWdlR3JvdXAqIG1fcGFnZUdyb3Vw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggNGQ3OTMxMGNhMzk4NDE1YTAzZTlhMTkyMWMwNjg2MjlmNjE5ZWFjNy4uNmI1YWMx
ODY4NjZjNGNmNGQ5NGIwYzliM2ZjMzNmOGNlNDY3NzJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjEsNCArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAt
PiBXZWJQYWdlR3JvdXBQcm94eSB7CisgICAgQWRkVXNlclN0eWxlU2hlZXQoV2ViS2l0OjpVc2Vy
Q29udGVudENvbnRhaW5lcjo6SXRlbSBzdHlsZVNoZWV0KTsKKyAgICBSZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZj
cHJvaiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCBjNzZlYzE3ODZi
NmRjMTg1NmE1MGM3ZWM3MjNlMDE0MDVhMmJkNmQwLi4yY2MyNWNmYTE2MWI1NmQ5Nzk3ZDE4YTNl
ODFmYTBmYzY3YmNiZmJkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52
Y3Byb2oKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCkBAIC01ODcsNiAr
NTg3LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFNoYXJlZFxVc2VyQ29udGVudENvbnRhaW5lci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxVc2VyQ29udGVudENvbnRhaW5l
ci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxT
aGFyZWRcVXNlck1lc3NhZ2VDb2RlcnMuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTE4NDYwMmUwNGExYjc5
MTNhY2QxMjU5NDQyODhmMmRkMTg5MzI0Yy4uNzdlMGEyZjJjNjE1NDU0OTUyZDAyZjdhODNiZWFh
MGI1YjhiMjcxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEwLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViS2l0Ml0gQ3JlYXRlIGFuIEFQSSBmb3IgYWRkaW5nIGFu
ZCByZW1vdmluZyB1c2VyIHN0eWxlc2hlZXRzIGZyb20gYSBwYWdlIGdyb3VwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aHJlZSBuZXcgQVBJIHRl
c3RzOgorCisgICAgICAgIC0gVGVzdCBhZGRpbmcgYSB1c2VyIHN0eWxlc2hlZXQgYmVmb3JlIGEg
cGFnZSBpcyBjcmVhdGVkLiBUaGlzIHRlc3RzCisgICAgICAgIHRoZSBjb2RlIHBhdGggd2hlcmUg
dGhlIHNoZWV0IGlzIHNlbnQgdG8gdGhlIHdlYiBwcm9jZXNzIGFzIHBhcnQgb2YKKyAgICAgICAg
dGhlIG5ldyBwYWdlJ3MgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy4KKyAgICAgICAgLSBUZXN0
IGFkZGluZyBhIHVzZXIgc3R5bGVzaGVldCBhZnRlciBhIHBhZ2UgaXMgY3JlYXRlZC4gVGhpcyB0
ZXN0cyB0aGUKKyAgICAgICAgY29kZSBwYXRjaCB3aGVyZSB0aGUgc2hlZXQgaXMgc2VudCBhcyBh
IHNlcGFyYXRlIG1lc3NhZ2UgdG8gYWxsCisgICAgICAgIHByb2Nlc3NlcyBjb250YWluaW5nIHRo
ZSBnaXZlbiBwYWdlIGdyb3VwLgorICAgICAgICAtIFRlc3QgcmVtb3ZpbmcgYWxsIHVzZXIgc3R5
bGVzaGVldHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJPYmpDL1VzZXJDb250ZW50VGVzdC5tbTogQWRkZWQuCisgICAgICAgICgtW1VzZXJDb250ZW50
VGVzdExvYWREZWxlZ2F0ZSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XSk6CisgICAgICAgICgt
W1VzZXJDb250ZW50VGVzdExvYWREZWxlZ2F0ZSBicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlk
RmluaXNoTG9hZDpdKToKKyAgICAgICAgKGV4cGVjdFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0
Lm1tOgorCiAyMDEyLTEwLTA0ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gRW5hYmxlIGluc3BlY3RvciBieSBkZWZhdWx0IGluIEd0
a0xhdW5jaGVyL01pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUxNDRmNWYz
NzEwNDhkNmRiMTFjNWEyNzQ5OWVlNDMxYjFlMmEwOGIuLmJjZGNkNGM0NTE2ZWRlMTRiYjU4NGJj
ZDNjMzE1NDhjOWQ3ZjZhMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMSw2ICszMSw3
IEBACiAJCTI2REY1QTYzMTVBMkEyN0UwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNl
TG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjZERjVBNjExNUEyQTIyQjAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9t
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJMjZGMUI0NDQxNUNBNDM0RjAwRDFF
NEJGIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNkYxQjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNw
cCAqLzsgfTsKIAkJMjZGMUI0NDUxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMUI0NDMxNUNB
NDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwICovOyB9OworCQkyOTQzQkU4NjE2MURGRUI4
MDA5OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjk0M0JFODQxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250
ZW50VGVzdC5tbSAqLzsgfTsKIAkJMzMzQjlDRTIxMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRF
bXB0eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50
LmNwcCAqLzsgfTsKIAkJMzNCRTVBRjUxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVy
Q3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzNCRTVBRjQxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwICovOyB9
OwogCQkzM0JFNUFGOTEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNC
RTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAq
LzsgfTsKQEAgLTI2Niw2ICsyNjcsNyBAQAogCQkyNkRGNUE2MTE1QTJBMjJCMDAzNjg5QzIgLyog
Q2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkYxQjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRv
bWljU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF0b21p
Y1N0cmluZy5jcHA7IHBhdGggPSBXVEYvQXRvbWljU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjZGMUI0NDMxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nSW1wbC5jcHA7IHBh
dGggPSBXVEYvU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5
NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBVc2VyQ29udGVudFRlc3QubW07IHBhdGggPSBX
ZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMzM0I5Q0UxMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmVudEVtcHR5VXNlckFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjQxMzdCNUE2QzAw
NzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNy
YXNoX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3Vz
ZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MjksNiArNTMxLDcgQEAKIAkJQkMzQzRDNkYxNDU3NUIxRDAwMjVGQjYyIC8qIFdlYktpdDIg
T2JqZWN0aXZlLUMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTI5NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi8sCiAJ
CQkJQkMzQzRDN0QxNDU4N0FBNjAwMjVGQjYyIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0
Lm1tICovLAogCQkJCUJDM0M0QzcwMTQ1NzVCNkEwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4
dExvYWREZWxlZ2F0ZVRlc3QubW0gKi8sCiAJCQkpOwpAQCAtOTg3LDYgKzk5MCw3IEBACiAJCQkJ
QkM5MDk5OTQxMjU2QUNGMTAwMDgzNzU2IC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjY1QUY1NTAxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0cmluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5NDNC
RTg2MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvVXNlckNv
bnRlbnRUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9Vc2Vy
Q29udGVudFRlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNmNmU1ZWVlNjU4OGU3NTE4ZDQ4MTNlOWE4YTgz
MTQ2MzY1OTAxMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mk9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0LmgiCisKKyNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
PgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPFdl
YktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0Mi9XZWJLaXQyLmg+CisKKworc3RhdGljIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7Citz
dGF0aWMgTlNTdHJpbmcgKmh0bWxTdHJpbmcgPSBAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOiByZWQnPiI7CitzdGF0aWMgTlNTdHJpbmcgKnVzZXJTdHlsZVNoZWV0ID0gQCJib2R5IHsg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CitzdGF0aWMgY29uc3QgY2hh
ciogYmFja2dyb3VuZENvbG9yU2NyaXB0ID0gIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7Citz
dGF0aWMgY29uc3QgY2hhciogZ3JlZW5JblJHQiA9ICJyZ2IoMCwgMTI4LCAwKSI7CitzdGF0aWMg
Y29uc3QgY2hhciogcmVkSW5SR0IgPSAicmdiKDI1NSwgMCwgMCkiOworCisKK3R5cGVkZWYgdm9p
ZCAoXk9uTG9hZEJsb2NrKShXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKik7CisKK0BpbnRl
cmZhY2UgVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdLQnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlPgoreworfQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
T25Mb2FkQmxvY2sgb25Mb2FkQmxvY2s7CisKKy0gKGlkKWluaXRXaXRoQmxvY2tUb1J1bk9uTG9h
ZDooT25Mb2FkQmxvY2spYmxvY2s7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFVzZXJDb250
ZW50VGVzdExvYWREZWxlZ2F0ZQorCitAc3ludGhlc2l6ZSBvbkxvYWRCbG9jayA9IF9vbkxvYWRC
bG9jazsKKworLSAoaWQpaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOihPbkxvYWRCbG9jaylibG9j
aworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIHNlbGYub25Mb2FkQmxvY2sgPSBibG9jazsKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkRmluaXNoTG9hZDooV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyCit7CisgICAgaWYgKF9vbkxvYWRCbG9j
aykKKyAgICAgICAgX29uTG9hZEJsb2NrKHNlbmRlcik7Cit9CisKK0BlbmQKKworbmFtZXNwYWNl
IHsKKyAgICBjbGFzcyBXZWJLaXQyVXNlckNvbnRlbnRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CisgICAgcHVibGljOgorICAgICAgICBXS1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3Vw
OworICAgICAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICpicm93c2luZ0NvbnRleHRHcm91cDsK
KworICAgICAgICBXZWJLaXQyVXNlckNvbnRlbnRUZXN0KCkKKyAgICAgICAgICAgIDogcHJvY2Vz
c0dyb3VwKG5pbCkKKyAgICAgICAgICAgICwgYnJvd3NpbmdDb250ZXh0R3JvdXAobmlsKQorICAg
ICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHByb2Nlc3NHcm91cCA9IFtbV0tQcm9jZXNzR3JvdXAg
YWxsb2NdIGluaXRdOworICAgICAgICAgICAgYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBbW1dLQnJv
d3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlVzZXJDb250ZW50
SWRlbnRpZmllciJdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKQorICAgICAgICB7CisgICAgICAgICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAg
cmVsZWFzZV07CisgICAgICAgICAgICBbcHJvY2Vzc0dyb3VwIHJlbGVhc2VdOworICAgICAgICB9
CisgICAgfTsKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyB2b2lkIGV4cGVjdFNjcmlwdFZhbHVl
KFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3Qg
Y2hhciogZXhwZWN0ZWRWYWx1ZSkKK3sKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgc2NyaXB0Q29u
dGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHNj
cmlwdFZhbHVlID0gV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVEZXNlcmlhbGl6ZShzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIHNjcmlwdENvbnRleHQsIDApOworICAgIEVYUEVDVF9UUlVFKEpTVmFsdWVJ
c1N0cmluZyhzY3JpcHRDb250ZXh0LCBzY3JpcHRWYWx1ZSkpOworICAgIAorICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBzY3JpcHRTdHJpbmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHko
c2NyaXB0Q29udGV4dCwgc2NyaXB0VmFsdWUsIDApKTsKKyAgICBFWFBFQ1RfVFJVRShKU1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKHNjcmlwdFN0cmluZy5nZXQoKSwgZXhwZWN0ZWRWYWx1ZSkp
OworICAgIAorICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2Uoc2NyaXB0Q29udGV4dCk7Cit9CisK
K1RFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVldEJlZm9yZUNy
ZWF0aW5nVmlldykKK3sKKyAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICBbYnJvd3NpbmdD
b250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpuaWwg
d2hpdGVsaXN0Om5pbCBibGFja2xpc3Q6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKKyAgICAKKyAg
ICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250
ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIHdrVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKnNlbmRlcikgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYmFja2dy
b3VuZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJh
Y2tncm91bmRDb2xvclNjcmlwdCkpOworICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVfYih3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVm
IGVycm9yKSB7CisgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIGdyZWVuSW5SR0IpOworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAg
ICAgICAgfSk7CisgICAgfV07CisgICAgCisgICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOworICAgIAorICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKworVEVTVF9GKFdl
YktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVhdGluZ1ZpZXcp
Cit7CisgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgCisgICAgV0tWaWV3ICp3a1ZpZXcg
PSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5n
Q29udGV4dEdyb3VwXTsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2Fk
RGVsZWdhdGUgPSBbW1VzZXJDb250ZW50VGVzdExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhC
bG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGJhY2tncm91bmRDb2xvclF1ZXJ5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3Jp
cHQpKTsKKyAgICAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2Iod2tWaWV3LnBh
Z2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgICAg
ICAgICAgZXhwZWN0U2NyaXB0VmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBncmVlbkluUkdC
KTsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH1d
OworICAgIAorICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2Vy
U3R5bGVTaGVldCBiYXNlVVJMOm5pbCB3aGl0ZWxpc3Q6bmlsIGJsYWNrbGlzdDpuaWwgbWFpbkZy
YW1lT25seTpZRVNdOworICAgIAorICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKworVEVTVF9GKFdlYktpdDJVc2Vy
Q29udGVudFRlc3QsIFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cykKK3sKKyAgICB0ZXN0RmluaXNo
ZWQgPSBmYWxzZTsKKyAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6
dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpuaWwgd2hpdGVsaXN0Om5pbCBibGFja2xpc3Q6bmlsIG1h
aW5GcmFtZU9ubHk6WUVTXTsKKyAgICAKKyAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91
cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBd
OworICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtb
VXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5Pbkxv
YWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gYmFja2dyb3VuZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCkpOworICAgICAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYih3a1ZpZXcucGFnZVJlZiwgYmFja2dy
b3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgICAgICAgICBleHBlY3RT
Y3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIHJlZEluUkdCKTsKKyAgICAgICAgICAg
IHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH1dOworICAgIAorICAgIFti
cm93c2luZ0NvbnRleHRHcm91cCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHNdOworICAgIAorICAg
IFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpodG1sU3Ry
aW5nIGJhc2VVUkw6bmlsXTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9XS0Jyb3dzaW5nQ29udGV4dEdy
b3VwVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvV0tCcm93
c2luZ0NvbnRleHRHcm91cFRlc3QubW0KaW5kZXggZmJkODdiZGY0ZGM1MTUzMTFkNjI0NzJmNmY2
ZmQzMTM0ZDBmN2E0NC4uNzdiZjY5Y2ZiNjk5OTczMTIzOTBmZmM3M2RhNTA0YjM3MzljOWY2NSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9XS0Jyb3dz
aW5nQ29udGV4dEdyb3VwVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJPYmpDL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tCkBAIC0yNiw3ICsyNiwxNCBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAKLSNpbXBvcnQgPFdlYktp
dDIvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oPgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1JldGFpblB0
ci5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2ltcG9y
dCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dlYktpdDIuaD4K
KyNpbXBvcnQgPFdlYktpdDIvV2ViS2l0Ml9DLmg+CiAKIFRFU1QoV0tCcm93c2luZ0NvbnRleHRH
cm91cFRlc3QsIEdldFNldEphdmFTY3JpcHRFbmFibGVkKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167239</attachid>
            <date>2012-10-04 20:17:40 -0700</date>
            <delta_ts>2022-02-27 23:56:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98432-20121004201650.patch</filename>
            <type>text/plain</type>
            <size>57739</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmM5YzMwZjE5YzhkNjc4
MWU4M2RiMjRkZmMyNDI1MGZmMjkxOGVjZS4uMjAzM2RhNGRmOWUwMzI0M2UwNjlmYTdhNzBjYzRi
YzZkZWM0NWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0xMC0wNCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIENyZWF0ZSBh
biBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzdHlsZXNoZWV0cyBmcm9tIGEgcGFn
ZSBncm91cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdGhlIGZvbGxvd2luZyBBUEkgdG8gV0tCcm93c2luZ0NvbnRleHRHcm91
cDoKKworICAgICAgICAtICh2b2lkKWFkZFVzZXJTdHlsZVNoZWV0OihOU1N0cmluZyAqKXNvdXJj
ZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgd2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0
IGJsYWNrbGlzdDooTlNBcnJheSAqKWJsYWNrbGlzdCBtYWluRnJhbWVPbmx5OihCT09MKW1haW5G
cmFtZU9ubHk7CisgICAgICAgIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzOworCisg
ICAgICAgIFNoZWV0cyBhZGRlZCB2aWEgdGhpcyBBUEkgYXJlIHNlbnQgdG8gYWxsIHByb2Nlc3Nl
cyB0aGF0IGNvbnRhaW4gYSBwYWdlCisgICAgICAgIGluIHRoZSBnaXZlbiBwYWdlIGdyb3VwLiBT
aGVldHMgYXJlIGFsc28gY2FjaGVkIGluIHRoZSBVSSBwcm9jZXNzIGluIGEKKyAgICAgICAgbmV3
IG9iamVjdCBjYWxsZWQgVXNlckNvbnRlbnRDb250YWluZXIsIHdoaWNoIGlzIGEgcHJvcGVydHkg
b2YgZWFjaAorICAgICAgICBncm91cCdzIFdlYlBhZ2VHcm91cERhdGEgYW5kIGlzIHNlbnQgdG8g
bmV3IHdlYiBwcm9jZXNzZXMgZHVyaW5nIHBhZ2UKKyAgICAgICAgaW5pdGlhbGl6YXRpb24uCisK
KyAgICAgICAgVGhpcyBpcyBsZXNzIHRoYW4gaWRlYWwsIHNpbmNlIG5ldyBwYWdlcyBhZGRlZCB0
byBhIHByZS1leGlzdGluZworICAgICAgICBwcm9jZXNzIC8gcGFnZSBncm91cCBjb21iaW5hdGlv
biB3aWxsIHNlbmQgcmVkdW5kYW50IHVzZXIgc3R5bGVzaGVldAorICAgICAgICBzdHJpbmdzIG92
ZXIgdGhlIHdpcmUuIFRvIGF2b2lkIHRoaXMgd2UnZCBoYXZlIHRvIGtlZXAgdHJhY2sgdHJhY2sg
b2YKKyAgICAgICAgdGhlIGdyb3VwcyB0aGF0IGN1cnJlbnRseSBleGlzdCBpbiBlYWNoIHByb2Nl
c3MgYW5kIG9ubHkgc2VuZCB1c2VyCisgICAgICAgIGNvbnRlbnQgZHVyaW5nIHBhZ2UgY3JlYXRp
b24gaWYgaXQgaXMgdGhlIGZpcnN0IHRpbWUgYSBwcm9jZXNzIGhhcyBzZWVuCisgICAgICAgIHRo
ZSBwYWdlJ3MgZ3JvdXAuIEkgZGVjaWRlZCB0byBub3QgYWRkIHRoaXMgY29tcGxleGl0eSBmb3Ig
dGhlIHRpbWUKKyAgICAgICAgYmVpbmcsIGJ1dCB3ZSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGl0
IGlmIHdlIGZpbmQgdGhhdCB0aGUgY3VycmVudAorICAgICAgICBhcHByb2FjaCBpbXBhY3RzIHBl
cmZvcm1hbmNlIGZvciBjbGllbnRzIHRoYXQgaGVhdmlseSB1dGlsaXplIHVzZXIKKyAgICAgICAg
Y29udGVudC4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0FycmF5LmNwcDoKKyAgICAgICAg
KFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyk6IEFkZCBhIFdLQXJyYXkgY3JlYXRpb24gZnVu
Y3Rpb24gdGhhdAorICAgICAgICBhZG9wdHMgdGhlIGluY29taW5nIFdLVHlwZVJlZnMgcmF0aGVy
IHRoYW4gcmVmaW5nIHRoZW0uCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQXJyYXkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6IE1vdmUgV0tVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIG91dCBvZgorICAgICAgICBXS0J1bmRsZVByaXZhdGUuaCBzbyBpdCBjYW4gYmUgdXNl
ZCBpbiBXS1BhZ2VHcm91cCwgdG9vLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENG
LmNwcDoKKyAgICAgICAgKFdLVVJMQ3JlYXRlV2l0aENGVVJMKTogUmV0dXJuIDAgZm9yIG51bGwg
Q0ZVUkxSZWZzIGluc3RlYWQgb2YgY3Jhc2hpbmcKKyAgICAgICAgaW5zaWRlIENGVVJMR2V0U3Ry
aW5nKCkuCisgICAgICAgICogU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5KTogQWRkIGEgdGFnIHRvIGRpZmZl
cmVudGlhdGUKKyAgICAgICAgYmV0d2VlbiB0aGUgYWRvcHRpbmcgYW5kIHJlZmluZyBjdG9ycy4K
KyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuaDoKKyAgICAgICAgKFdlYktpdDo6SW1t
dXRhYmxlQXJyYXk6OmNyZWF0ZSk6IENhbGwgdGhlIHJlZmluZyBjdG9yLgorICAgICAgICAoV2Vi
S2l0OjpJbW11dGFibGVBcnJheTo6YWRvcHQpOiBDYWxsIHRoZSBhZG9wdGluZyBjdG9yLgorICAg
ICAgICAqIFNoYXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAo
VXNlckNvbnRlbnRJdGVtTWVzc2FnZUVuY29kZXIpOiBDcmVhdGUgYSBVc2VyTWVzc2FnZUVuY29k
ZXIgZm9yCisgICAgICAgIHNlcmlhbGl6aW5nIFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtJ3Mg
QVBJT2JqZWN0cy4KKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRlbnRJdGVtTWVzc2FnZUVuY29k
ZXI6OlVzZXJDb250ZW50SXRlbU1lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ckNvbnRlbnRJdGVtTWVzc2FnZUVuY29kZXI6OmVuY29kZSk6CisgICAgICAgIChVc2VyQ29udGVu
dEl0ZW1NZXNzYWdlRGVjb2Rlcik6IENyZWF0ZSBhIFVzZXJNZXNzYWdlRW5jb2RlciBmb3IKKyAg
ICAgICAgZGVzZXJpYWxpemluZyBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSdzIEFQSU9iamVj
dHMuCisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50SXRlbU1lc3NhZ2VEZWNvZGVyOjpVc2Vy
Q29udGVudEl0ZW1NZXNzYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50
SXRlbU1lc3NhZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVu
dENvbnRhaW5lcjo6SXRlbTo6SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OmVuY29kZVN0cmluZ0Fy
cmF5KTogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBlbmNvZGluZworICAgICAgICBJbW11dGFi
bGVBcnJheXMgb2YgV2ViU3RyaW5ncy4KKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250
YWluZXI6Okl0ZW06OmVuY29kZSk6IEVuY29kZSB0aGUgaXRlbSdzCisgICAgICAgIHByb3BlcnRp
ZXMgdXNpbmcgVXNlckNvbnRlbnRJdGVtTWVzc2FnZUVuY29kZXIuCisgICAgICAgIChXZWJLaXQ6
OmRlY29kZVN0cmluZ0FycmF5KTogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBkZWNvZGluZwor
ICAgICAgICBJbW11dGFibGVBcnJheXMgb2YgV2ViU3RyaW5ncy4KKyAgICAgICAgKFdlYktpdDo6
VXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OmRlY29kZSk6IERlY29kZSB0aGUgaXRlbSdzCisg
ICAgICAgIHByb3BlcnRpZXMgdXNpbmcgVXNlckNvbnRlbnRJdGVtTWVzc2FnZURlY29kZXIuCisg
ICAgICAgIChXZWJLaXQ6OnRvU3RyaW5nVmVjdG9yKTogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZv
ciBjb252ZXJ0aW5nIGFuCisgICAgICAgIEltbXV0YWJsZUFycmF5IG9mIFdlYlN0cmluZ3MgdG8g
YSBWZWN0b3Igb2YgU3RyaW5ncy4KKyAgICAgICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250YWlu
ZXI6Okl0ZW06OndoaXRlbGlzdCk6IFVzZSB0b1N0cmluZ1ZlY3RvcigpLgorICAgICAgICAoV2Vi
S2l0OjpVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6YmxhY2tsaXN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjplbmNvZGUpOiBFbmNvZGUgdGhlIFZl
Y3RvciBvZiBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbXMuCisgICAgICAgIChXZWJLaXQ6OlVz
ZXJDb250ZW50Q29udGFpbmVyOjpkZWNvZGUpOiBEZWNvZGUgdGhlIFZlY3RvciBvZiBVc2VyQ29u
dGVudENvbnRhaW5lcjo6SXRlbXMuCisgICAgICAgICogU2hhcmVkL1VzZXJDb250ZW50Q29udGFp
bmVyLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKTogSW5jbHVkZSB1c2VyU3R5
bGVTaGVldHMgd2hlbiBlbmNvZGluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwRGF0
YTo6ZGVjb2RlKTogSW5jbHVkZSB1c2VyU3R5bGVTaGVldHMgd2hlbiBkZWNvZGluZy4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oOgorICAgICAgICAoV2ViUGFnZUdyb3VwRGF0
YSk6IEFkZCBhIFVzZXJDb250ZW50Q29udGFpbmVyIGNhbGxlZCB1c2VyU3R5bGVTaGVldHMKKyAg
ICAgICAgdG8gV2ViUGFnZUdyb3VwRGF0YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlR3JvdXAuY3BwOiBBZGQgdGhlIEMgU1BJIHZlcnNpb24gb2YgdGhlIE9iamVjdGl2ZS1DIEFQ
SS4KKyAgICAgICAgKFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV0tQ
YWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VHcm91cC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3Np
bmdDb250ZXh0R3JvdXAuaDogQWRkIHRoZSBPYmplY3RpdmUtQyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbToKKyAgICAgICAgKGNyZWF0
ZVdLQXJyYXkpOiBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhbiBOU0FycmF5
IG9mIE5TU3RyaW5ncyB0byBhIFdLQXJyYXkgb2YgV0tTdHJpbmdzLgorICAgICAgICAoLVtXS0Jy
b3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OmJhc2VVUkw6d2hpdGVsaXN0OmJs
YWNrbGlzdDptYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICBJbXBsZW1lbnQgdGhlIE9iamVjdGl2
ZS1DIEFQSSBpbiB0ZXJtcyBvZiB0aGUgQyBTUEkuCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250
ZXh0R3JvdXAgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzXSk6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6
OmFkZFVzZXJTdHlsZVNoZWV0KTogQWRkIHRoZSBuZXcgc2hlZXQgdG8gdGhlCisgICAgICAgIGdy
b3VwJ3MgV2ViUGFnZUdyb3VwRGF0YSwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBncm91cCdzIHNo
ZWV0cyBhcmUKKyAgICAgICAgc2VudCB0byBuZXcgd2ViIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOiBEaXR0byBmb3Ig
cmVtb3ZhbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VHcm91cDo6c2VuZFRvQWxsUHJvY2Vzc2VzSW5Hcm91cCk6IEFkZCBhIGhl
bHBlciBtZXNzYWdlCisgICAgICAgIHRoYXQgc2VuZHMgYSBtZXNzYWdlIHRvIGFsbCBwcm9jZXNz
ZXMgdGhhdCBoYXZlIGEgcGFnZSBpbiB0aGUgY3VycmVudAorICAgICAgICBncm91cC4gVGhpcyBp
cyB1c2VkIHRvIGFkZCBuZXcgdXNlciBzaGVldHMgdG8gYWxyZWFkeS1pbml0aWFsaXplZCBwYWdl
CisgICAgICAgIGdyb3VwcyBpbiB0aGUgVUkgcHJvY2Vzc2VzLgorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOiBNb3ZlZAorICAgICAgICBXS1VzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgZnJvbSBoZXJlIHRvIFdLQmFzZS5oLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VHcm91cFByb3h5OjpXZWJQYWdlR3JvdXBQcm94eSk6IEFkZCBlYWNoIHNoZWV0IGluIHRo
ZQorICAgICAgICBXZWJQYWdlR3JvdXBEYXRhIHRvIFdlYkNvcmUncyBwYWdlIGdyb3VwLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXBQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQpOiBBZGQg
dGhlIHNoZWV0IHJlY2VpdmVkCisgICAgICAgIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gV2ViQ29y
ZSdzIHBhZ2UgZ3JvdXAuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cFByb3h5OjpyZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHMpOiBSZW1vdmUgYWxsCisgICAgICAgIHNoZWV0cyBmcm9tIFdl
YkNvcmUncyBwYWdlIGdyb3VwLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
R3JvdXBQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQ
cm94eS5tZXNzYWdlcy5pbjogRGVmaW5lCisgICAgICAgIEFkZFVzZXJTdHlsZVNoZWV0IGFuZCBS
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMsIHR3byBtZXNzYWdlcyBzZW50IGZyb20KKyAgICAgICAg
dGhlIFVJIHByb2Nlc3MgdG8gYSB3ZWIgcHJvY2VzcydzIFdlYlBhZ2VHcm91cFByb3h5LgorCiAy
MDEyLTEwLTA0ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+
CiAKICAgICAgICAgW1F0XSBGaXggdGhlIHRzdF9RUXVpY2tXZWJWaWV3OjpzY3JvbGxSZXF1ZXN0
IGF1dG8gdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBhOGQ3YmIzNzAzZGE0N2QyMDZhMzU0
MmZlNGIyYjE1OGViOTMzMDRhLi40ZTQ1M2U3OTEyMjRjYTIzMzdhZTNiMDljOGZmYzQyZDEyYTdm
ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTUyLDYgKzE1Miw3IEBAIFNFVChXZWJLaXQy
X1NPVVJDRVMKICAgICBTaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCiAgICAgU2hhcmVkL1N1cmZh
Y2VVcGRhdGVJbmZvLmNwcAogICAgIFNoYXJlZC9VcGRhdGVJbmZvLmNwcAorICAgIFNoYXJlZC9V
c2VyQ29udGVudENvbnRhaW5lci5jcHAKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAK
ICAgICBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKICAgICBTaGFyZWQvV2ViQmF0
dGVyeVN0YXR1cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDI1NDMyMDMw
ZmU0NjY0M2VhZjI4NjMwYTJjNjMyNTllNjgzOTRkNDIuLmEwNjgxZjljNmE1NzE0MDk0NTA3M2Vj
ZGRlNmI5NDQzZmZhODI1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQx
LDYgKzQ0MSw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L1VzZXJNZXNzYWdlQ29kZXJzLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZv
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1VwZGF0ZUluZm8uaCBcCisJU291cmNlL1dl
YktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcCBcCisJU291cmNlL1dlYktpdDIv
U2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9W
aXNpdGVkTGlua1RhYmxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5r
VGFibGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAppbmRleCA2Y2E5YWYy
NzNjZDkxMjQzY2NiYmM0ODQ1NjBiODIzOTBlY2UyNDcwLi41YmYzNWUzYzNlZGY3MDQ1ZDJlOGZh
OGZlYjcyOTgyOTNiNDZmMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXku
Y3BwCkBAIC00Miw2ICs0MiwxMiBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVm
KiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICByZXR1cm4gdG9BUEkoYXJyYXku
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKK1dLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZUFkb3B0
aW5nVmFsdWVzKFdLVHlwZVJlZiogdmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpCit7Cisg
ICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBhcnJheSA9IEltbXV0YWJsZUFycmF5OjphZG9wdChy
ZWludGVycHJldF9jYXN0PEFQSU9iamVjdCoqPihjb25zdF9jYXN0PHZvaWQqKj4odmFsdWVzKSks
IG51bWJlck9mVmFsdWVzKTsKKyAgICByZXR1cm4gdG9BUEkoYXJyYXkucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7Cit9CisKIFdLVHlwZVJlZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBh
cnJheVJlZiwgc2l6ZV90IGluZGV4KQogewogICAgIHJldHVybiB0b0ltcGwoYXJyYXlSZWYpLT5h
dChpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJh
eS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuaAppbmRleCBkYTQ1NjBh
MGE0MjdhOTI3NzE5OWFlODAwNmVjZWQ0NzI3NzcyZjg3Li4yNTkwMGYzMTM5ZWQ5MDNjN2FmYTQ3
YzI1YjEwNjQ1MTRiYzA0Njg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmgK
QEAgLTM3LDYgKzM3LDcgQEAgZXh0ZXJuICJDIiB7CiBXS19FWFBPUlQgV0tUeXBlSUQgV0tBcnJh
eUdldFR5cGVJRCgpOwogCiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlKFdLVHlw
ZVJlZiogdmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpOworV0tfRVhQT1JUIFdLQXJyYXlS
ZWYgV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKFdLVHlwZVJlZiogdmFsdWVzLCBzaXplX3Qg
bnVtYmVyT2ZWYWx1ZXMpOwogCiBXS19FWFBPUlQgV0tUeXBlUmVmIFdLQXJyYXlHZXRJdGVtQXRJ
bmRleChXS0FycmF5UmVmIGFycmF5LCBzaXplX3QgaW5kZXgpOwogV0tfRVhQT1JUIHNpemVfdCBX
S0FycmF5R2V0U2l6ZShXS0FycmF5UmVmIGFycmF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaAppbmRleCBhYjZjYTg0Y2RhNTdmOGQ1NDVkODg1N2UxOGM5MTNmNTE2ZTUxNjM1Li5m
NGVhNjA2OTk1ODNkMWY3OWRiOWRmZWU3YmUwZmQ5YjgyZmU5YTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCkBAIC03OSw2ICs3OSwxMiBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1VSTFJlcXVlc3QqIFdLVVJMUmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVVJMUmVzcG9uc2UqIFdLVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250ZW50VVJMUGF0dGVybiogV0tVc2VyQ29udGVudFVSTFBh
dHRlcm5SZWY7CiAKK2VudW0gV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHsKKyAgICBrV0tJ
bmplY3RJbkFsbEZyYW1lcywKKyAgICBrV0tJbmplY3RJblRvcEZyYW1lT25seQorfTsKK3R5cGVk
ZWYgZW51bSBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgV0tVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOworCiAvKiBXZWJLaXQyIG1haW4gQVBJIHR5cGVzICovCiAKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIqIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Yv
V0tVUkxDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAK
aW5kZXggZTFkNGVlN2JiZGFiNDgyMjc0NmJmMWJmN2M0MmFjNDM0OTIzNzVjNC4uNGU0MGJkZjRl
ODBmOTM4OGVhNTMzYWZmNjI0NWFlMTU3OGEwN2NmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZi9XS1VSTENGLmNwcApAQCAtMzgsNiArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCiBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhDRlVSTChDRlVSTFJlZiBjZlVSTCkK
IHsKKyAgICBpZiAoIWNmVVJMKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIFN0cmluZyB1cmxT
dHJpbmcoQ0ZVUkxHZXRTdHJpbmcoY2ZVUkwpKTsKICAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEko
dXJsU3RyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFi
bGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwCmlu
ZGV4IDY3YjJhMzRjNWNkYmVhNGZmZjhmM2FjNjNjOWE2MzU1NzY5NjcxYWMuLjgwYjM4Y2M3NDY1
YTRjNWM4ZDIxNGU3ZTRjMzE4MDk5YTZiN2Q0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9JbW11dGFibGVBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0lt
bXV0YWJsZUFycmF5LmNwcApAQCAtMzIsMTAgKzMyLDE3IEBAIEltbXV0YWJsZUFycmF5OjpJbW11
dGFibGVBcnJheSgpCiB7CiB9CiAKLUltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheShBUElP
YmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSkKK0ltbXV0YWJsZUFycmF5OjpJbW11dGFibGVB
cnJheShJbW11dGFibGVBcnJheTo6QWRvcHRUYWcsIEFQSU9iamVjdCoqIGVudHJpZXMsIHNpemVf
dCBzaXplKQogICAgIDogbV9lbnRyaWVzKHNpemUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCisgICAgICAgIG1fZW50cmllc1tpXSA9IGFkb3B0UmVmKGVudHJpZXNb
aV0pOworfQorCitJbW11dGFibGVBcnJheTo6SW1tdXRhYmxlQXJyYXkoQVBJT2JqZWN0KiogZW50
cmllcywgc2l6ZV90IHNpemUpCis6IG1fZW50cmllcyhzaXplKQoreworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBtX2VudHJpZXNbaV0gPSBlbnRyaWVzW2ld
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXku
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCmluZGV4IGUyNmU0YWE1
ZGM3ODE3ZTJkZmMzOTVhNzQyZjY2OTEwZmRkMTYxNzUuLmQyMjA4Y2RjNGNhZWJmZjM3MTg5ZWFi
NDRiZjI0MzIyZjA3N2YzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11
dGFibGVBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW1tdXRhYmxlQXJy
YXkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBB
UElUeXBlID0gVHlwZUFycmF5OworICAgIGVudW0gQWRvcHRUYWcgeyBBZG9wdCB9OwogCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0ZSgpCiAgICAgewpAQCAtNDcs
NiArNDgsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplKSk7CiAgICAgfQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEltbXV0YWJsZUFycmF5PiBhZG9wdChBUElPYmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1tdXRhYmxlQXJyYXkoQWRv
cHQsIGVudHJpZXMsIHNpemUpKTsKKyAgICB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRh
YmxlQXJyYXk+IGFkb3B0KFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+JiBlbnRyaWVzKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzKSk7
CkBAIC02NCw3ICs2OSw4IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEltbXV0YWJsZUFy
cmF5KCk7Ci0gICAgSW1tdXRhYmxlQXJyYXkoQVBJT2JqZWN0KiogZW50cmllcywgc2l6ZV90IHNp
emUpOworICAgIEltbXV0YWJsZUFycmF5KEFkb3B0VGFnLCBBUElPYmplY3QqKiBlbnRyaWVzLCBz
aXplX3QpOworICAgIEltbXV0YWJsZUFycmF5KEFQSU9iamVjdCoqIGVudHJpZXMsIHNpemVfdCk7
CiAgICAgSW1tdXRhYmxlQXJyYXkoVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4mIGVudHJpZXMp
OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41OTc2NGY3MzBjZDNlYzMwMWNkNTY4YjAxZTA1NGI4OTQyYjMxZjBhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcApA
QCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJVc2VyQ29udGVudENvbnRhaW5lci5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpJdGVt
KCkKK3sKK30KKworVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06Okl0ZW0oUGFzc1JlZlB0cjxX
ZWJTdHJpbmc+IHNvdXJjZSwgUGFzc1JlZlB0cjxXZWJVUkw+IHVybCwgUGFzc1JlZlB0cjxJbW11
dGFibGVBcnJheT4gd2hpdGVsaXN0LCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBibGFja2xp
c3QsIEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBUeXBlIHR5cGUpCisgICAgOiBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3doaXRlbGlzdCh3aGl0ZWxp
c3QpCisgICAgLCBtX2JsYWNrbGlzdChibGFja2xpc3QpCisgICAgLCBtX2luamVjdGVkRnJhbWVz
KGluamVjdGVkRnJhbWVzKQorICAgICwgbV90eXBlKHR5cGUpCit7CisgICAgQVNTRVJUKG1fc291
cmNlKTsKK30KKworc3RhdGljIHZvaWQgZW5jb2RlU3RyaW5nQXJyYXkoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyLCBJbW11dGFibGVBcnJheSogYXJyYXkpCit7CisgICAgQVNTRVJU
KGVuY29kZXIpOworICAgIHVpbnQzMl90IHNpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAw
OworICAgIGVuY29kZXItPmVuY29kZShzaXplKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdlYlN0cmluZyogd2ViU3RyaW5nID0gYXJyYXktPmF0
PFdlYlN0cmluZz4oaSk7CisgICAgICAgIEFTU0VSVCh3ZWJTdHJpbmcpOworICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUod2ViU3RyaW5nLT5zdHJpbmcoKSk7CisgICAgfQorfQorCit2b2lkIFVzZXJD
b250ZW50Q29udGFpbmVyOjpJdGVtOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZShtX3NvdXJjZS0+c3RyaW5nKCkp
OworICAgIGVuY29kZXItPmVuY29kZShtX3VybCA/IG1fdXJsLT5zdHJpbmcoKSA6IFN0cmluZygp
KTsKKyAgICBlbmNvZGVTdHJpbmdBcnJheShlbmNvZGVyLCBtX3doaXRlbGlzdC5nZXQoKSk7Cisg
ICAgZW5jb2RlU3RyaW5nQXJyYXkoZW5jb2RlciwgbV9ibGFja2xpc3QuZ2V0KCkpOworICAgIGVu
Y29kZXItPmVuY29kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbmplY3RlZEZyYW1lcykpOwor
ICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV90eXBlKSk7Cit9CisK
K3N0YXRpYyBib29sIGRlY29kZVN0cmluZ0FycmF5KENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4mIHZlY3RvcikKK3sKKyAgICBBU1NF
UlQoZGVjb2Rlcik7CisgICAgQVNTRVJUKHZlY3Rvci5pc0VtcHR5KCkpOworCisgICAgdWludDMy
X3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShzaXplKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHZl
Y3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoc3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChhZG9wdFJlZihXZWJTdHJpbmc6OmNyZWF0ZShz
dHJpbmcpLmxlYWtSZWYoKSkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSYgaXRlbSkKK3sKKyAgICBB
U1NFUlQoIWl0ZW0ubV9zb3VyY2UpOworICAgIEFTU0VSVCghaXRlbS5tX3VybCk7CisgICAgQVNT
RVJUKCFpdGVtLm1fd2hpdGVsaXN0KTsKKyAgICBBU1NFUlQoIWl0ZW0ubV9ibGFja2xpc3QpOwor
CisgICAgU3RyaW5nIHNvdXJjZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShzb3VyY2UpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaXRlbS5tX3NvdXJjZSA9IGFkb3B0UmVmKFdlYlN0
cmluZzo6Y3JlYXRlKHNvdXJjZSkubGVha1JlZigpKTsKKworICAgIFN0cmluZyB1cmw7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGl0
ZW0ubV91cmwgPSBhZG9wdFJlZihXZWJVUkw6OmNyZWF0ZSh1cmwpLmxlYWtSZWYoKSk7CisKKyAg
ICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3aGl0ZWxpc3Q7CisgICAgaWYgKCFkZWNvZGVT
dHJpbmdBcnJheShkZWNvZGVyLCB3aGl0ZWxpc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaXRlbS5tX3doaXRlbGlzdCA9IGFkb3B0UmVmKEltbXV0YWJsZUFycmF5OjphZG9wdCh3aGl0
ZWxpc3QpLmxlYWtSZWYoKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiBibGFj
a2xpc3Q7CisgICAgaWYgKCFkZWNvZGVTdHJpbmdBcnJheShkZWNvZGVyLCBibGFja2xpc3QpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaXRlbS5tX2JsYWNrbGlzdCA9IGFkb3B0UmVmKElt
bXV0YWJsZUFycmF5OjphZG9wdChibGFja2xpc3QpLmxlYWtSZWYoKSk7CisKKyAgICB1aW50MzJf
dCBpbmplY3RlZEZyYW1lczsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbmplY3RlZEZyYW1l
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpdGVtLm1faW5qZWN0ZWRGcmFtZXMgPSBz
dGF0aWNfY2FzdDxJbmplY3RlZEZyYW1lcz4oaW5qZWN0ZWRGcmFtZXMpOworCisgICAgdWludDMy
X3QgdHlwZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGl0ZW0ubV90eXBlID0gc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0
b1N0cmluZ1ZlY3RvcihJbW11dGFibGVBcnJheSogYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LT5zaXpl
KCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBP
d25QdHI8VmVjdG9yPFN0cmluZz4gPiBzdHJpbmdWZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PFN0cmluZz4oKSk7CisgICAgc3RyaW5nVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNp
emUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdl
YlN0cmluZyogd2ViU3RyaW5nID0gYXJyYXktPmF0PFdlYlN0cmluZz4oaSk7CisgICAgICAgIEFT
U0VSVCh3ZWJTdHJpbmcpOworICAgICAgICBzdHJpbmdWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCh3
ZWJTdHJpbmctPnN0cmluZygpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHN0cmluZ1ZlY3Rv
ci5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBVc2VyQ29udGVu
dENvbnRhaW5lcjo6SXRlbTo6d2hpdGVsaXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9TdHJp
bmdWZWN0b3IobV93aGl0ZWxpc3QuZ2V0KCkpOworfQorCitQYXNzT3duUHRyPFZlY3RvcjxTdHJp
bmc+ID4gVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OmJsYWNrbGlzdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRvU3RyaW5nVmVjdG9yKG1fYmxhY2tsaXN0LmdldCgpKTsKK30KKwordm9pZCBV
c2VyQ29udGVudENvbnRhaW5lcjo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGUobV91c2VyQ29udGVudCk7Cit9CisK
K2Jvb2wgVXNlckNvbnRlbnRDb250YWluZXI6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFVzZXJDb250ZW50Q29udGFpbmVyJiB1c2VyQ29udGVudENvbnRhaW5lcikK
K3sKKyAgICBBU1NFUlQodXNlckNvbnRlbnRDb250YWluZXIubV91c2VyQ29udGVudC5pc0VtcHR5
KCkpOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVzZXJDb250ZW50Q29udGFpbmVyLm1fdXNl
ckNvbnRlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1VzZXJDb250ZW50Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRl
bnRDb250YWluZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGJmMjE1YTMzYmZiOTIxMjBlMGJkYTc0ZjY4MWI1
ZDYxY2FhYmFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJD
b250ZW50Q29udGFpbmVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VXNlckNvbnRlbnRDb250YWluZXJfaAorI2RlZmluZSBVc2VyQ29udGVudENvbnRhaW5lcl9oCisK
KyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2lu
Y2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVy
OworY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgVXNlckNvbnRlbnRDb250YWluZXIgeworcHVibGljOgorICAgIGNsYXNzIEl0ZW0geworICAg
IHB1YmxpYzoKKyAgICAgICAgZW51bSBUeXBlIHsKKyAgICAgICAgICAgIFR5cGVTdHlsZXNoZWV0
LAorICAgICAgICAgICAgVHlwZVNjcmlwdAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAg
ZW51bSBJbmplY3RlZEZyYW1lcyB7CisgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcywKKyAg
ICAgICAgICAgIEluamVjdEluVG9wRnJhbWVPbmx5CisgICAgICAgIH07CisKKyAgICAgICAgSXRl
bSgpOworICAgICAgICBJdGVtKFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBzb3VyY2UsIFBhc3NSZWZQ
dHI8V2ViVVJMPiwgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gd2hpdGVsaXN0LCBQYXNzUmVm
UHRyPEltbXV0YWJsZUFycmF5PiBibGFja2xpc3QsIEluamVjdGVkRnJhbWVzLCBUeXBlKTsKKwor
ICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAg
ICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEl0ZW0m
KTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2UtPnN0cmluZygpOyB9CisgICAgICAgIFdlYkNvcmU6OktVUkwgdXJsKCkgY29u
c3QgeyByZXR1cm4gIW1fdXJsIHx8IG1fdXJsLT5zdHJpbmcoKS5pc0VtcHR5KCkgPyBXZWJDb3Jl
OjpibGFua1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIG1fdXJsLT5zdHJp
bmcoKSk7IH0KKyAgICAgICAgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IHdoaXRlbGlzdCgp
IGNvbnN0OworICAgICAgICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gYmxhY2tsaXN0KCkg
Y29uc3Q7CisgICAgICAgIEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmplY3RlZEZyYW1lczsgfQorICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxXZWJTdHJpbmc+
IG1fc291cmNlOworICAgICAgICBSZWZQdHI8V2ViVVJMPiBtX3VybDsKKyAgICAgICAgUmVmUHRy
PEltbXV0YWJsZUFycmF5PiBtX3doaXRlbGlzdDsKKyAgICAgICAgUmVmUHRyPEltbXV0YWJsZUFy
cmF5PiBtX2JsYWNrbGlzdDsKKyAgICAgICAgSW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1l
czsKKyAgICAgICAgVHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIHZvaWQgZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqLCBVc2VyQ29udGVudENvbnRhaW5lciYpOworICAgIAorICAg
IHZvaWQgYWRkSXRlbShjb25zdCBJdGVtJiBpdGVtKSB7IG1fdXNlckNvbnRlbnQuYXBwZW5kKGl0
ZW0pOyB9CisgICAgdm9pZCByZW1vdmVBbGxJdGVtcygpIHsgbV91c2VyQ29udGVudC5jbGVhcigp
OyB9CisgICAgCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJDb250ZW50
LnNpemUoKTsgfQorICAgIGNvbnN0IEl0ZW0mIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBt
X3VzZXJDb250ZW50LmF0KGkpOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVzZXJDb250ZW50
Q29udGFpbmVyOjpJdGVtPiBtX3VzZXJDb250ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBVc2VyQ29udGVudENvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDEwN2RmMWQxNWNhYTBhNDVmN2Q1YTliZGUw
NTUxODExZTI5YjdmYzYuLjQ4OWMxYzBjYjNjYTYyNzEzYTkwMjg0ZjE3Mzk2OTk2MjJiNTkxODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTMzLDEy
ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdlR3JvdXBEYXRhOjpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogewotICAgIHJl
dHVybiBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oaWRlbnRpZmVyLCBwYWdlR3JvdXBJRCwg
dmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQpKTsKKyAgICBy
ZXR1cm4gZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGlkZW50aWZlciwgcGFnZUdyb3VwSUQs
IHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCB1c2VyU3R5
bGVTaGVldHMpKTsKIH0KIAogYm9vbCBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQogewotICAg
IHJldHVybiBkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGRhdGEuaWRlbnRpZmVyLCBkYXRh
LnBhZ2VHcm91cElELCBkYXRhLnZpc2libGVUb0luamVjdGVkQnVuZGxlLCBkYXRhLnZpc2libGVU
b0hpc3RvcnlDbGllbnQpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91
dChkYXRhLmlkZW50aWZlciwgZGF0YS5wYWdlR3JvdXBJRCwgZGF0YS52aXNpYmxlVG9JbmplY3Rl
ZEJ1bmRsZSwgZGF0YS52aXNpYmxlVG9IaXN0b3J5Q2xpZW50LCBkYXRhLnVzZXJTdHlsZVNoZWV0
cykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UGFnZUdyb3VwRGF0YS5oCmluZGV4IDM2ZjZmZTE5YjUxMGI4N2Y4ZjM2MTYyYjE4MDVjMTRiNzY5
ZjZkYTkuLmQ5N2U5ZDA1NjliMzk3YzE3YjI0OGQ3MzFmZWU4ZTM5YjFlNGVmYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMjYsNiArMjYsOCBAQAogI2lm
bmRlZiBXZWJQYWdlR3JvdXBEYXRhX2gKICNkZWZpbmUgV2ViUGFnZUdyb3VwRGF0YV9oCiAKKyNp
bmNsdWRlICJVc2VyQ29udGVudENvbnRhaW5lci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewpA
QCAtNDMsNiArNDUsNyBAQCBzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YSB7CiAgICAgdWludDY0X3Qg
cGFnZUdyb3VwSUQ7CiAgICAgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsKICAgICBib29s
IHZpc2libGVUb0hpc3RvcnlDbGllbnQ7CisgICAgVXNlckNvbnRlbnRDb250YWluZXIgdXNlclN0
eWxlU2hlZXRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCA0
ZjM5MzA3NTNjYWZjMThjMDAwN2FkN2NhMWJmNDg4ZWU2MTRiOTM2Li5lMzZjNTI4YTNmYTY2ZGM4
ZjBlZjFiNzcyMDhjZmEyOWRkOGE2MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTk2LDYgKzk2LDcgQEAg
SEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1N0cmluZ1BhaXJWZWN0b3IuaCBcCiAgICAgU2hhcmVk
L1N1cmZhY2VVcGRhdGVJbmZvLmggXAogICAgIFNoYXJlZC9VcGRhdGVJbmZvLmggXAorICAgIFNo
YXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5oIFwKICAgICBTaGFyZWQvVXNlck1lc3NhZ2VDb2Rl
cnMuaCBcCiAgICAgU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuaCBcCiAgICAgU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIFwKQEAgLTQ1Miw2ICs0NTMsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBTaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwIFwKICAgICBTaGFyZWQvU3VyZmFjZVVwZGF0ZUlu
Zm8uY3BwIFwKICAgICBTaGFyZWQvVXBkYXRlSW5mby5jcHAgXAorICAgIFNoYXJlZC9Vc2VyQ29u
dGVudENvbnRhaW5lci5jcHAgXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCiAg
ICAgU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKICAgICBTaGFyZWQvV2ViQmF0
dGVyeVN0YXR1cy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VHcm91cC5jcHAKaW5kZXggOGE0ZDg2YTA1Mzc4YjU0MzQyZDBlYzJkYjg4YzhlOTllNDk2ODYw
YS4uOTliNzgzYzljMjViZTBkNmUzZDdiMTk2ZDRjMjU3NTlmMjc3YTNkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCkBAIC01NywzICs1Nywx
NiBAQCBXS1ByZWZlcmVuY2VzUmVmIFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZUdyb3Vw
UmVmKS0+cHJlZmVyZW5jZXMoKSk7CiB9CisKK3ZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVT
aGVldChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwg
V0tVUkxSZWYgYmFzZVVSTCwgV0tBcnJheVJlZiB3aGl0ZWxpc3QsIFdLQXJyYXlSZWYgYmxhY2ts
aXN0LCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCit7CisgICAg
aWYgKCFzb3VyY2VSZWYpCisgICAgICAgIHJldHVybjsKKworICAgIHRvSW1wbChwYWdlR3JvdXBS
ZWYpLT5hZGRVc2VyU3R5bGVTaGVldChVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSh0b0ltcGwo
c291cmNlUmVmKSwgdG9JbXBsKGJhc2VVUkwpLCB0b0ltcGwod2hpdGVsaXN0KSwgdG9JbXBsKGJs
YWNrbGlzdCksIHN0YXRpY19jYXN0PFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpJbmplY3Rl
ZEZyYW1lcz4oaW5qZWN0ZWRGcmFtZXMpLCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6VHlw
ZVN0eWxlc2hlZXQpKTsKK30KKwordm9pZCBXS1BhZ2VHcm91cFJlbW92ZUFsbFVzZXJTdHlsZVNo
ZWV0cyhXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAgdG9JbXBsKHBhZ2VHcm91
cFJlZiktPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaAppbmRleCA3MDVkZjA4M2U3YTRlNGE1MDU1Zjc5
MzllYmJhOWJkNzRmNjljMDhkLi4xMjgwMjQxYzg1MDc5ZTUxNDZkZTFmZGE2MWM2NzRjNWNlOWZj
MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaApA
QCAtNDAsNiArNDAsOSBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQYWdlR3JvdXBDb3B5SWRl
bnRpZmllcihXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOwogCiBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VHcm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlcyk7CiBXS19FWFBPUlQgV0tQcmVmZXJlbmNlc1JlZiBXS1BhZ2VH
cm91cEdldFByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CisgICAgCitXS19F
WFBPUlQgdm9pZCBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0KFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiBiYXNlVVJMLCBXS0FycmF5UmVm
IHdoaXRlbGlzdCwgV0tBcnJheVJlZiBibGFja2xpc3QsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VHcm91cFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyhXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250
ZXh0R3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdD
b250ZXh0R3JvdXAuaAppbmRleCBmMzQyOGZjOTNiMzNjZjExYmI2ZTkzZTBjODI1MjNjMjYzNTI1
OGZlLi5mMjZjOTUyYzA2MGMzNjlhNmM3ODhjZGU2MDljYTU1YmEyODI5MjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRl
eHRHcm91cC5oCkBAIC0zNiw2ICszNiwxMSBAQCBXS19FWFBPUlQKIAogLSAoaWQpaW5pdFdpdGhJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXI7CiAKKy8qIFVzZXIgQ29udGVudCAqLwor
CistICh2b2lkKWFkZFVzZXJTdHlsZVNoZWV0OihOU1N0cmluZyAqKXNvdXJjZSBiYXNlVVJMOihO
U1VSTCAqKWJhc2VVUkwgd2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0IGJsYWNrbGlzdDoo
TlNBcnJheSAqKWJsYWNrbGlzdCBtYWluRnJhbWVPbmx5OihCT09MKW1haW5GcmFtZU9ubHk7Cist
ICh2b2lkKXJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0czsKKwogCiAvKiBTZXR0aW5ncyAqLwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRHcm91cC5tbQppbmRleCAzMzhkMzkwY2E4MzMyYjhkOTJjZDU0NWQ5MWMyZjQ4Y2Fi
YzE2MWMxLi44N2NmZmQwZTczNmU4YjE5MmQ1ZDY3OWMyZDhmNWU5NmJkNDc4NmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdy
b3VwLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdD
b250ZXh0R3JvdXAubW0KQEAgLTI3LDEwICsyNywxNCBAQAogI2ltcG9ydCAiV0tCcm93c2luZ0Nv
bnRleHRHcm91cC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmgi
CiAKKyNpbXBvcnQgIldLQXJyYXkuaCIKICNpbXBvcnQgIldLUGFnZUdyb3VwLmgiCiAjaW1wb3J0
ICJXS1ByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXS1JldGFpblB0ci5oIgogI2ltcG9ydCAiV0tT
dHJpbmdDRi5oIgorI2ltcG9ydCAiV0tVUkwuaCIKKyNpbXBvcnQgIldLVVJMQ0YuaCIKKyNpbXBv
cnQgPHd0Zi9WZWN0b3IuaD4KIAogQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwRGF0
YSA6IE5TT2JqZWN0IHsKIEBwdWJsaWMKQEAgLTgxLDYgKzg1LDQzIEBACiAgICAgV0tQcmVmZXJl
bmNlc1NldFBsdWdpbnNFbmFibGVkKFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoc2VsZi5fcGFn
ZUdyb3VwUmVmKSwgYWxsb3dzUGx1Z0lucyk7CiB9CiAKK3N0YXRpYyBXS0FycmF5UmVmIGNyZWF0
ZVdLQXJyYXkoTlNBcnJheSAqYXJyYXkpCit7CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJh
eSBjb3VudF07CisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiBXS0FycmF5UmVm
KCk7CisKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiBzdHJpbmdWZWN0b3I7CisgICAgc3RyaW5nVmVj
dG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWQgZW50cnkgPSBbYXJyYXkgb2JqZWN0
QXRJbmRleDppXTsKKyAgICAgICAgaWYgKFtlbnRyeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQorICAgICAgICAgICAgc3RyaW5nVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChXS1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpZW50cnkpKTsKKyAgICAgICAgICAgIAor
ICAgIH0KKworICAgIHJldHVybiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoc3RyaW5nVmVj
dG9yLmRhdGEoKSwgc3RyaW5nVmVjdG9yLnNpemUoKSk7Cit9CisKKy0odm9pZClhZGRVc2VyU3R5
bGVTaGVldDooTlNTdHJpbmcgKilzb3VyY2UgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHdoaXRl
bGlzdDooTlNBcnJheSAqKXdoaXRlbGlzdCBibGFja2xpc3Q6KE5TQXJyYXkgKilibGFja2xpc3Qg
bWFpbkZyYW1lT25seTooQk9PTCltYWluRnJhbWVPbmx5Cit7CisgICAgaWYgKCFzb3VyY2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NvdXJjZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNvdXJjZSkp
OworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a0Jhc2VVUkwgPSBhZG9wdFdLKFdLVVJMQ3Jl
YXRlV2l0aENGVVJMKChDRlVSTFJlZiliYXNlVVJMKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJh
eVJlZj4gd2tXaGl0ZWxpc3QgPSBhZG9wdFdLKGNyZWF0ZVdLQXJyYXkod2hpdGVsaXN0KSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tCbGFja2xpc3QgPSBhZG9wdFdLKGNyZWF0ZVdL
QXJyYXkoYmxhY2tsaXN0KSk7CisgICAgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVj
dGVkRnJhbWVzID0gbWFpbkZyYW1lT25seSA/IGtXS0luamVjdEluVG9wRnJhbWVPbmx5IDoga1dL
SW5qZWN0SW5BbGxGcmFtZXM7CisKKyAgICBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0KHNl
bGYuX3BhZ2VHcm91cFJlZiwgd2tTb3VyY2UuZ2V0KCksIHdrQmFzZVVSTC5nZXQoKSwgd2tXaGl0
ZWxpc3QuZ2V0KCksIHdrQmxhY2tsaXN0LmdldCgpLCBpbmplY3RlZEZyYW1lcyk7Cit9CisKKy0g
KHZvaWQpcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzCit7CisgICAgV0tQYWdlR3JvdXBSZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoc2VsZi5fcGFnZUdyb3VwUmVmKTsKK30KKwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRHcm91cCAoSW50ZXJuYWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCmluZGV4IDcyNTg4ZDRkN2YxYjk5ZTcyMzFh
MzRhOWY3NTE5NWE4NzQ4NzVkNjIuLjczMGRmNzdjZTI3NzEyNWFhOTgxNjQ4ZjM4YTNiNGU1YTRm
NTc3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3Vw
LmgiCiAKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpAQCAtMTI3LDUgKzEyOCwxNyBAQCB2b2lkIFdlYlBhZ2VHcm91cDo6cHJl
ZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAgICAgICBwYWdlLT5wcmVmZXJlbmNlc0RpZENoYW5nZSgp
OwogICAgIH0KIH0KKyAgICAKK3ZvaWQgV2ViUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChj
b25zdCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSYgc3R5bGVTaGVldCkKK3sKKyAgICBtX2Rh
dGEudXNlclN0eWxlU2hlZXRzLmFkZEl0ZW0oc3R5bGVTaGVldCk7CisgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzSW5Hcm91cChNZXNzYWdlczo6V2ViUGFnZUdyb3VwUHJveHk6OkFkZFVzZXJTdHlsZVNo
ZWV0KHN0eWxlU2hlZXQpLCBtX2RhdGEucGFnZUdyb3VwSUQpOworfQorCit2b2lkIFdlYlBhZ2VH
cm91cDo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sKKyAgICBtX2RhdGEudXNlclN0eWxl
U2hlZXRzLnJlbW92ZUFsbEl0ZW1zKCk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzSW5Hcm91cChN
ZXNzYWdlczo6V2ViUGFnZUdyb3VwUHJveHk6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpLCBt
X2RhdGEucGFnZUdyb3VwSUQpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAppbmRleCBjY2MxNGJkOTEwYTE3ZTYwYzQxYWYx
ZDE2ZDYxNTA1NmM4MGFlMzZiLi5kNzUyZmU1YmJkZGExOWY0MTc1OGU0OTIwODFiNjJkNTgxMTA3
NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCkBAIC0yOCw2ICsy
OCw4IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBE
YXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogCkBAIC01NiwxNiArNTgsMzQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMo
V2ViUHJlZmVyZW5jZXMqKTsKICAgICBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSBjb25z
dDsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCk7CisgICAgCisgICAgdm9pZCBhZGRV
c2VyU3R5bGVTaGVldChjb25zdCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSYgc3R5bGVTaGVl
dCk7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKIAogcHJpdmF0ZToKICAg
ICBXZWJQYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlLCBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQpOwogCiAgICAgdmlydHVh
bCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWVzc2FnZVR5cGU+IHZvaWQgc2VuZFRvQWxsUHJvY2Vzc2VzSW5Hcm91cChj
b25zdCBNZXNzYWdlVHlwZSYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogCiAgICAgV2ViUGFn
ZUdyb3VwRGF0YSBtX2RhdGE7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IG1f
cHJlZmVyZW5jZXM7CiAgICAgSGFzaFNldDxXZWJQYWdlUHJveHkqPiBtX3BhZ2VzOwogfTsKKyAg
ICAKK3RlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2VUeXBlPiBpbmxpbmUgdm9pZCBXZWJQYWdlR3Jv
dXA6OnNlbmRUb0FsbFByb2Nlc3Nlc0luR3JvdXAoY29uc3QgTWVzc2FnZVR5cGUmIG1lc3NhZ2Us
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkq
PiBwcm9jZXNzZXNTZWVuOworICAgIGZvciAoSGFzaFNldDxXZWJQYWdlUHJveHkqPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3BhZ2VzLmJlZ2luKCksIGVuZCA9IG1fcGFnZXMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSA9
ICgqaXQpLT5wcm9jZXNzKCk7CisgICAgICAgIEFTU0VSVCh3ZWJQcm9jZXNzUHJveHkpOworICAg
ICAgICBpZiAoIXByb2Nlc3Nlc1NlZW4uYWRkKHdlYlByb2Nlc3NQcm94eSkuaXNOZXdFbnRyeSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LT5jYW5T
ZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LT5zZW5kKG1lc3NhZ2Us
IGRlc3RpbmF0aW9uSUQpOworICAgIH0KK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0ZmFkMTg0MWE4ZWQ3MWIyMGEyNzVhMzNmYzE3MTQ5MDQwZjFiZTYxLi41YzM5MGRhNWM5YmUy
MDY3MDVjN2Y3YTBiNTAyMGUzOGIzZjBiNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTAsNiArMjUwLDggQEAKIAkJMUNB
OEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThC
OTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
ICovOyB9OwogCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQx
Mjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLzsgfTsKKwkJMjkxMjE3MDcx
NjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MTIxNzA1MTYxQ0U3MzYwMDU3RDQ1
MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi87IH07CisJCTI5MTIxNzA4MTYxQ0U3MzYw
MDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkxMjE3MDYxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJD
b250ZW50Q29udGFpbmVyLmggKi87IH07CiAJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBT
dHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5NkJEODVCMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCAqLzsg
fTsKIAkJMjk2QkQ4NUUxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NkJEODVDMTUwMTlC
QzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5
NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNENTVBODEyOEUyOTRGMDAxMzND
ODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oICovOyB9OwpAQCAtMTMxMSwxMyAr
MTMxMywxNSBAQAogCQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNw
ZWN0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDMx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDQx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTEyMTcwNTE2MUNFNzM2MDA1N0Q0NTEgLyogVXNl
ckNvbnRlbnRDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVXNlckNvbnRlbnRDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyOTEyMTcwNjE2MUNFNzM2MDA1N0Q0NTEgLyogVXNlckNvbnRlbnRDb250YWluZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRDb250YWluZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk2QkQ4NUIxNTAxOUJDMzAwNzFGNDI0IC8qIFN0
cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk2QkQ4NUMxNTAxOUJD
MzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNENTVB
OTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RDU1REVFMTYxQkY4
NzgwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQYWdl
R3JvdXBQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjlE
NTVERUYxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBhZ2VHcm91cFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjlENTVERjAxNjFCRjlG
MTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gV2Vi
UGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
OUQ1NURFRjE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUdyb3Vw
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
OUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVC
OSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1
OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQzBDNDkxNDZEREM4QTAwMTZDOTExIC8qIFdLTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOb3Rp
ZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU1NCw2
ICsyNTU4LDggQEAKIAkJCQlCQzkwQTFEMDEyMkRENTVFMDBDQzhDNTAgLyogV2ViVVJMUmVzcG9u
c2UuaCAqLywKIAkJCQlGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmggKi8sCiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVs
RXZlbnQuY3BwICovLAorCQkJCTI5MTIxNzA1MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVu
dENvbnRhaW5lci5jcHAgKi8sCisJCQkJMjkxMjE3MDYxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJD
b250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFNoYXJlZDsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MzM4LDYgKzQzNDQsNyBAQAogCQkJCTFBM0VFRDBGMTYx
QTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyOTEyMTcwODE2MUNFNzM2MDA1N0Q0NTEgLyog
VXNlckNvbnRlbnRDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTE5Nyw2ICs1MjA0LDcg
QEAKIAkJCQlCQzk4OUQ4MTE2MUE3RTVEMDAwRDQ2RDMgLyogV0tXZWJQcm9jZXNzUGx1Z0luLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzRUVEMEUxNjFBNTM1NDAwQUVCNEY1IC8qIE1lc3NhZ2VS
ZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUQ1NURGMTE2MUJGOUYxMDAzMUEy
RTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMjkxMjE3MDcxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKaW5kZXggZjAz
MmM2MjIyYTgxMjNlODU0NGM4Mjc3YmNjYTRhZTNjOGE0MmNmMS4uZTUzYjIyYWNjYjM5MTBiM2U2
YTNhZGM4OWZiNmVmOGRhZTIwNjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5o
CkBAIC00MiwxMiArNDIsNiBAQCBlbnVtIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgewogfTsK
IHR5cGVkZWYgZW51bSBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIFdLVXNlclNjcmlwdEluamVj
dGlvblRpbWU7CiAKLWVudW0gV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHsKLSAgICBrV0tJ
bmplY3RJbkFsbEZyYW1lcywKLSAgICBrV0tJbmplY3RJblRvcEZyYW1lT25seQotfTsKLXR5cGVk
ZWYgZW51bSBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgV0tVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOwotCiAvLyBUZXN0UnVubmVyIG9ubHkgU1BJCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZVNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKFdLQnVuZGxlUmVmIGJ1bmRsZSwgYm9vbCBzaG91
bGRUcmFja1Zpc2l0ZWRMaW5rcyk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFsd2F5c0Fj
Y2VwdENvb2tpZXMoV0tCdW5kbGVSZWYgYnVuZGxlLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCmluZGV4
IDhhODc3NjIzMTMxM2U5MWRlZTg0ZThjMGQ0OWI1YThiNWQ5OGJlYWUuLmE5MzE4Nzg3ODk4NTk3
M2RlNDc0MjVlMDgyYjViODRmZDliZDE0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtMjgsNiArMjgs
OCBAQAogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VHcm91cC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDQsMTYgKzQ2LDI4
IEBAIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVh
dGUoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYKIFdlYlBhZ2VHcm91cFByb3h5Ojp+V2ViUGFnZUdy
b3VwUHJveHkoKQogewogfQotICAgIAorCiB2b2lkIFdlYlBhZ2VHcm91cFByb3h5OjpkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNz
YWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKIHsK
ICAgICBkaWRSZWNlaXZlV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3Nh
Z2VJRCwgYXJndW1lbnRzKTsKIH0KKyAgICAKK1dlYlBhZ2VHcm91cFByb3h5OjpXZWJQYWdlR3Jv
dXBQcm94eShjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQorICAgIDogbV9kYXRhKGRhdGEp
CisgICAgLCBtX3BhZ2VHcm91cChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cChtX2RhdGEu
aWRlbnRpZmVyKSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEudXNlclN0eWxl
U2hlZXRzLnNpemUoKTsgKytpKQorICAgICAgICBhZGRVc2VyU3R5bGVTaGVldChkYXRhLnVzZXJT
dHlsZVNoZWV0cy5hdChpKSk7Cit9CisKK3ZvaWQgV2ViUGFnZUdyb3VwUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KGNvbnN0IFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtJiBzdHlsZVNoZWV0KQor
eworICAgIG1fcGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoV2ViQ29yZTo6bWFp
blRocmVhZE5vcm1hbFdvcmxkKCksIHN0eWxlU2hlZXQuc291cmNlKCksIHN0eWxlU2hlZXQudXJs
KCksIHN0eWxlU2hlZXQud2hpdGVsaXN0KCksIHN0eWxlU2hlZXQuYmxhY2tsaXN0KCksIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+KHN0eWxlU2hlZXQuaW5q
ZWN0ZWRGcmFtZXMoKSkpOworfQogCi12b2lkIFdlYlBhZ2VHcm91cFByb3h5OjpkaWRSZWNlaXZl
V2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopCit2b2lkIFdlYlBhZ2VHcm91cFBy
b3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQogewotICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIFdlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluIGNvbnRhaW5zIG1lc3NhZ2Vz
LAotICAgIC8vIGluIHdoaWNoIGNhc2UgdGhpcyBtZXRob2Qgd2lsbCBiZSBhdXRvLWdlbmVyYXRl
ZC4KKyAgICBtX3BhZ2VHcm91cC0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKFdlYkNv
cmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdy
b3VwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3Jv
dXBQcm94eS5oCmluZGV4IDlhOTg0NDdhMGIyZTA0NmY0MGJiMzgzYjBlMWYzMjJiNDU4YzFiMjYu
LjQxYmU1MDYyZGY5ZjFkZjJjNDlkMjU0YzQyNmIxM2ZjNGM5Njk4ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oCkBA
IC0zNiw2ICszNiwxMCBAQCBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgTWVzc2FnZUlEOwogfQog
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQYWdlR3JvdXA7Cit9CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgewpA
QCAtNTMsMTYgKzU3LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciopOwogCiBwcml2YXRlOgotICAgIFdlYlBhZ2VHcm91cFByb3h5KGNvbnN0IFdlYlBh
Z2VHcm91cERhdGEmIGRhdGEpCi0gICAgICAgIDogbV9kYXRhKGRhdGEpCi0gICAgewotICAgIH0K
KyAgICBXZWJQYWdlR3JvdXBQcm94eShjb25zdCBXZWJQYWdlR3JvdXBEYXRhJik7CiAKICAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KICAgICAKICAgICB2
b2lkIGRpZFJlY2VpdmVXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAg
CisgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldChjb25zdCBVc2VyQ29udGVudENvbnRhaW5lcjo6
SXRlbSYgc3R5bGVTaGVldCk7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsK
IAogICAgIFdlYlBhZ2VHcm91cERhdGEgbV9kYXRhOworICAgIFdlYkNvcmU6OlBhZ2VHcm91cCog
bV9wYWdlR3JvdXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA0ZDc5MzEwY2EzOTg0MTVhMDNlOWExOTIxYzA2ODYyOWY2MTll
YWM3Li42YjVhYzE4Njg2NmM0Y2Y0ZDk0YjBjOWIzZmMzM2Y4Y2U0Njc3MmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VH
cm91cFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw0ICsyMSw2IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VHcm91cFByb3h5IHsKKyAgICBBZGRVc2VyU3R5bGVTaGVldChX
ZWJLaXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtIHN0eWxlU2hlZXQpOworICAgIFJlbW92
ZUFsbFVzZXJTdHlsZVNoZWV0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIudmNwcm9qIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCmluZGV4
IGM3NmVjMTc4NmI2ZGMxODU2YTUwYzdlYzcyM2UwMTQwNWEyYmQ2ZDAuLjJjYzI1Y2ZhMTYxYjU2
ZDk3OTdkMThhM2U4MWZhMGZjNjdiY2JmYmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oK
QEAgLTU4Nyw2ICs1ODcsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXFVzZXJDb250ZW50Q29udGFpbmVyLmNwcCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFVzZXJDb250
ZW50Q29udGFpbmVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFNoYXJlZFxVc2VyTWVzc2FnZUNvZGVycy5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1MTg0
NjAyZTA0YTFiNzkxM2FjZDEyNTk0NDI4OGYyZGQxODkzMjRjLi43N2UwYTJmMmM2MTU0NTQ5NTJk
MDJmN2E4M2JlYWEwYjViOGIyNzEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTAtMDQgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXQyXSBDcmVhdGUgYW4gQVBJIGZv
ciBhZGRpbmcgYW5kIHJlbW92aW5nIHVzZXIgc3R5bGVzaGVldHMgZnJvbSBhIHBhZ2UgZ3JvdXAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDMyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRocmVl
IG5ldyBBUEkgdGVzdHM6CisKKyAgICAgICAgLSBUZXN0IGFkZGluZyBhIHVzZXIgc3R5bGVzaGVl
dCBiZWZvcmUgYSBwYWdlIGlzIGNyZWF0ZWQuIFRoaXMgdGVzdHMKKyAgICAgICAgdGhlIGNvZGUg
cGF0aCB3aGVyZSB0aGUgc2hlZXQgaXMgc2VudCB0byB0aGUgd2ViIHByb2Nlc3MgYXMgcGFydCBv
ZgorICAgICAgICB0aGUgbmV3IHBhZ2UncyBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLgorICAg
ICAgICAtIFRlc3QgYWRkaW5nIGEgdXNlciBzdHlsZXNoZWV0IGFmdGVyIGEgcGFnZSBpcyBjcmVh
dGVkLiBUaGlzIHRlc3RzIHRoZQorICAgICAgICBjb2RlIHBhdGNoIHdoZXJlIHRoZSBzaGVldCBp
cyBzZW50IGFzIGEgc2VwYXJhdGUgbWVzc2FnZSB0byBhbGwKKyAgICAgICAgcHJvY2Vzc2VzIGNv
bnRhaW5pbmcgdGhlIGdpdmVuIHBhZ2UgZ3JvdXAuCisgICAgICAgIC0gVGVzdCByZW1vdmluZyBh
bGwgdXNlciBzdHlsZXNoZWV0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mk9iakMvVXNlckNvbnRlbnRUZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
VXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpdKToK
KyAgICAgICAgKC1bVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXJEaWRGaW5pc2hMb2FkOl0pOgorICAgICAgICAoZXhwZWN0U2NyaXB0VmFsdWUpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvV0tCcm93c2luZ0NvbnRl
eHRHcm91cFRlc3QubW06CisKIDIwMTItMTAtMDQgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxh
cGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUgaW5zcGVjdG9yIGJ5IGRl
ZmF1bHQgaW4gR3RrTGF1bmNoZXIvTWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZTE0NGY1ZjM3MTA0OGQ2ZGIxMWM1YTI3NDk5ZWU0MzFiMWUyYTA4Yi4uYmNkY2Q0YzQ1MTZl
ZGUxNGJiNTg0YmNkM2MzMTU0OGM5ZDdmNmEzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTMxLDYgKzMxLDcgQEAKIAkJMjZERjVBNjMxNUEyQTI3RTAwMzY4OUMyIC8qIENhbmNlbExvYWRG
cm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkRGNUE2MTE1QTJBMjJCMDAzNjg5QzIgLyogQ2Fu
Y2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQkyNkYxQjQ0NDE1
Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjFCNDQyMTVDQTQzNEYwMEQxRTRCRiAvKiBBdG9t
aWNTdHJpbmcuY3BwICovOyB9OwogCQkyNkYxQjQ0NTE1Q0E0MzRGMDBEMUU0QkYgLyogU3RyaW5n
SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
NkYxQjQ0MzE1Q0E0MzRGMDBEMUU0QkYgLyogU3RyaW5nSW1wbC5jcHAgKi87IH07CisJCTI5NDNC
RTg2MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTQzQkU4NDE2MURGRUI4MDA5OTlFM0Qg
LyogVXNlckNvbnRlbnRUZXN0Lm1tICovOyB9OwogCQkzMzNCOUNFMjEyNzdGMjMxMDBGRUZDRTMg
LyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0I5Q0UxMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1w
dHlVc2VyQWdlbnQuY3BwICovOyB9OwogCQkzM0JFNUFGNTEzN0I1QTZDMDA3MDU4MTMgLyogTW91
c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzM0JFNUFGNDEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFz
aC5jcHAgKi87IH07CiAJCTMzQkU1QUY5MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRl
ckNyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzM0JFNUFGODEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9C
dW5kbGUuY3BwICovOyB9OwpAQCAtMjY2LDYgKzI2Nyw3IEBACiAJCTI2REY1QTYxMTVBMkEyMkIw
MDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RjFCNDQyMTVDQTQzNEYwMEQx
RTRCRiAvKiBBdG9taWNTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQXRvbWljU3RyaW5nLmNwcDsgcGF0aCA9IFdURi9BdG9taWNTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkYxQjQ0MzE1Q0E0MzRGMDBEMUU0QkYgLyogU3Ry
aW5nSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHJpbmdJ
bXBsLmNwcDsgcGF0aCA9IFdURi9TdHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMjk0M0JFODQxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50VGVzdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFVzZXJDb250ZW50VGVzdC5t
bTsgcGF0aCA9IFdlYktpdDJPYmpDL1VzZXJDb250ZW50VGVzdC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVz
ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50
RW1wdHlVc2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0JFNUFG
NDEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNl
TW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUyOSw2ICs1MzEsNyBAQAogCQlCQzNDNEM2RjE0NTc1QjFEMDAyNUZCNjIg
LyogV2ViS2l0MiBPYmplY3RpdmUtQyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMjk0M0JFODQxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50VGVz
dC5tbSAqLywKIAkJCQlCQzNDNEM3RDE0NTg3QUE2MDAyNUZCNjIgLyogV0tCcm93c2luZ0NvbnRl
eHRHcm91cFRlc3QubW0gKi8sCiAJCQkJQkMzQzRDNzAxNDU3NUI2QTAwMjVGQjYyIC8qIFdLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdC5tbSAqLywKIAkJCSk7CkBAIC05ODcsNiArOTkw
LDcgQEAKIAkJCQlCQzkwOTk5NDEyNTZBQ0YxMDAwODM3NTYgLyogV0tTdHJpbmdKU1N0cmluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjVBRjU1MDE1RDFFNDhBMDBCMENCNEEgLyogV1RGU3Ry
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMTg3Nzg5MTVFRUM1NzcwMEE5Q0NFMyAvKiBO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMjk0M0JFODYxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50VGVzdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
T2JqQy9Vc2VyQ29udGVudFRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJPYmpDL1VzZXJDb250ZW50VGVzdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2Y2ZTVlZWU2NTg4ZTc1MThk
NDgxM2U5YThhODMxNDYzNjU5MDEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW0KQEAgLTAsMCArMSwxNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKwor
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pT
UmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgor
I2ltcG9ydCA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQyL1dlYktpdDIuaD4KKworCitzdGF0aWMgYm9vbCB0ZXN0RmluaXNoZWQg
PSBmYWxzZTsKK3N0YXRpYyBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPGJvZHkgc3R5bGU9J2Jh
Y2tncm91bmQtY29sb3I6IHJlZCc+IjsKK3N0YXRpYyBOU1N0cmluZyAqdXNlclN0eWxlU2hlZXQg
PSBAImJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiAhaW1wb3J0YW50OyB9IjsKK3N0YXRp
YyBjb25zdCBjaGFyKiBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSAid2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1j
b2xvcicpIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBncmVlbkluUkdCID0gInJnYigwLCAxMjgsIDAp
IjsKK3N0YXRpYyBjb25zdCBjaGFyKiByZWRJblJHQiA9ICJyZ2IoMjU1LCAwLCAwKSI7CisKKwor
dHlwZWRlZiB2b2lkICheT25Mb2FkQmxvY2spKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
KTsKKworQGludGVyZmFjZSBVc2VyQ29udGVudFRlc3RMb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8
V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+Cit7Cit9CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBPbkxvYWRCbG9jayBvbkxvYWRCbG9jazsKKworLSAoaWQpaW5pdFdpdGhCbG9j
a1RvUnVuT25Mb2FkOihPbkxvYWRCbG9jaylibG9jazsKKworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlCisKK0BzeW50aGVzaXplIG9uTG9hZEJsb2Nr
ID0gX29uTG9hZEJsb2NrOworCistIChpZClpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6KE9uTG9h
ZEJsb2NrKWJsb2NrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgCisgICAgc2VsZi5vbkxvYWRCbG9jayA9IGJsb2NrOworICAgIHJl
dHVybiBzZWxmOworfQorCistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRGaW5p
c2hMb2FkOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIKK3sKKyAgICBpZiAo
X29uTG9hZEJsb2NrKQorICAgICAgICBfb25Mb2FkQmxvY2soc2VuZGVyKTsKK30KKworQGVuZAor
CituYW1lc3BhY2UgeworICAgIGNsYXNzIFdlYktpdDJVc2VyQ29udGVudFRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdLUHJvY2Vzc0dyb3VwICpw
cm9jZXNzR3JvdXA7CisgICAgICAgIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKmJyb3dzaW5nQ29u
dGV4dEdyb3VwOworCisgICAgICAgIFdlYktpdDJVc2VyQ29udGVudFRlc3QoKQorICAgICAgICAg
ICAgOiBwcm9jZXNzR3JvdXAobmlsKQorICAgICAgICAgICAgLCBicm93c2luZ0NvbnRleHRHcm91
cChuaWwpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2
b2lkIFNldFVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvY2Vzc0dyb3VwID0gW1tXS1By
b2Nlc3NHcm91cCBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBicm93c2luZ0NvbnRleHRHcm91
cCA9IFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAi
VXNlckNvbnRlbnRJZGVudGlmaWVyIl07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIFticm93c2luZ0Nv
bnRleHRHcm91cCByZWxlYXNlXTsKKyAgICAgICAgICAgIFtwcm9jZXNzR3JvdXAgcmVsZWFzZV07
CisgICAgICAgIH0KKyAgICB9OworfSAvLyBuYW1lc3BhY2UKKworc3RhdGljIHZvaWQgZXhwZWN0
U2NyaXB0VmFsdWUoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlKQoreworICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBzY3JpcHRDb250ZXh0ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOworICAgIAorICAgIEpT
VmFsdWVSZWYgc2NyaXB0VmFsdWUgPSBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZURlc2VyaWFsaXpl
KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgc2NyaXB0Q29udGV4dCwgMCk7CisgICAgRVhQRUNUX1RS
VUUoSlNWYWx1ZUlzU3RyaW5nKHNjcmlwdENvbnRleHQsIHNjcmlwdFZhbHVlKSk7CisgICAgCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdFN0cmluZyhBZG9wdCwgSlNWYWx1ZVRv
U3RyaW5nQ29weShzY3JpcHRDb250ZXh0LCBzY3JpcHRWYWx1ZSwgMCkpOworICAgIEVYUEVDVF9U
UlVFKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc2NyaXB0U3RyaW5nLmdldCgpLCBleHBl
Y3RlZFZhbHVlKSk7CisgICAgCisgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShzY3JpcHRDb250
ZXh0KTsKK30KKworVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNo
ZWV0QmVmb3JlQ3JlYXRpbmdWaWV3KQoreworICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAg
IFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5bGVTaGVldCBi
YXNlVVJMOm5pbCB3aGl0ZWxpc3Q6bmlsIGJsYWNrbGlzdDpuaWwgbWFpbkZyYW1lT25seTpZRVNd
OworICAgIAorICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cCBi
cm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07CisgICAgd2tWaWV3LmJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tVc2VyQ29udGVudFRlc3RM
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KSk7CisgICAgICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZV9iKHdrVmlldy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeS5n
ZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IFdLRXJyb3JSZWYgZXJyb3IpIHsKKyAgICAgICAgICAgIGV4cGVjdFNjcmlwdFZhbHVlKHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgZ3JlZW5JblJHQik7CisgICAgICAgICAgICB0ZXN0RmluaXNoZWQg
PSB0cnVlOworICAgICAgICB9KTsKKyAgICB9XTsKKyAgICAKKyAgICBbd2tWaWV3LmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07
CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQor
CitURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNy
ZWF0aW5nVmlldykKK3sKKyAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICAKKyAgICBXS1Zp
ZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3Jv
dXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
KnNlbmRlcikgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYmFja2dyb3VuZENv
bG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91
bmRDb2xvclNjcmlwdCkpOworICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVf
Yih3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9y
KSB7CisgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IGdyZWVuSW5SR0IpOworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAg
fSk7CisgICAgfV07CisgICAgCisgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTdHls
ZVNoZWV0OnVzZXJTdHlsZVNoZWV0IGJhc2VVUkw6bmlsIHdoaXRlbGlzdDpuaWwgYmxhY2tsaXN0
Om5pbCBtYWluRnJhbWVPbmx5OllFU107CisgICAgCisgICAgW3drVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCitURVNUX0Yo
V2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQoreworICAg
IHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2Vy
U3R5bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCB3aGl0ZWxpc3Q6bmlsIGJsYWNr
bGlzdDpuaWwgbWFpbkZyYW1lT25seTpZRVNdOworICAgIAorICAgIFdLVmlldyAqd2tWaWV3ID0g
W1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
cHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0Nv
bnRleHRHcm91cF07CisgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERl
bGVnYXRlID0gW1tVc2VyQ29udGVudFRlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Cisg
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0
KSk7CisgICAgICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKHdrVmlldy5wYWdl
UmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeS5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKKyAgICAgICAg
ICAgIGV4cGVjdFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmVkSW5SR0IpOwor
ICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfV07Cisg
ICAgCisgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c107
CisgICAgCisgICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3Ry
aW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="179854"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>