<?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>137005</bug_id>
          
          <creation_ts>2014-09-22 09:45:44 -0700</creation_ts>
          <short_desc>Split ResourceHandle in an abstract class and a network-specific class</short_desc>
          <delta_ts>2016-06-21 07:53:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036549</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-09-22 09:45:44 -0700</bug_when>
    <thetext>Following on discussions that happened in https://bugs.webkit.org/show_bug.cgi?id=109199, we may want to split ResourceHandle in two classes.
- A first abstract class making the interface with existing loaders through ResourceHandleClient
- A second class (NetworkResourceHandle e.g.) that may derive from the first class to implement the actual loading through CF, soup, curl.
Once done, BlobResourceHandle should be moved to that the first abstract class, as well as data URL handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036697</commentid>
    <comment_count>1</comment_count>
      <attachid>238527</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-09-23 04:28:02 -0700</bug_when>
    <thetext>Created attachment 238527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037404</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-25 22:14:14 -0700</bug_when>
    <thetext>I think the lower level class should retain the name ResourceHandle and the higher level class is the one that should have a new name. The discussion in bug 109199 seems to plan for that, and I don’t see any discussion of doing it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037440</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-09-26 00:45:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I think the lower level class should retain the name ResourceHandle and the higher level class is the one that should have a new name. The discussion in bug 109199 seems to plan for that, and I don’t see any discussion of doing it this way.

The number of edits between the two options seems roughly the same.
But the nature of edits is a bit different.

Introducing a new name for the abstract class requires some limited changes in the HTTP backends but has impact on other WebCore areas, like ResourceHandleClient(s), loaders, download managers.

Renaming ResourceHandle to NetworkResourceHandle has mostly an impact on HTTP backends. The current patch is probably failing to do all the necessary edits for the CURL backend, hence win compilation failure. If there are other bindings elsewhere, it may be disruptive as well.

In terms of style, ResourceHandle is already an abstract name.
It also makes sense for NetworkResourceLoader to instantiate NetworkResourceHandle.
But I am open to try it the other way. Any name suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037839</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-28 18:04:43 -0700</bug_when>
    <thetext>Maciej designed and named the ResourceHandle class. Maciej, could you comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037842</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-28 18:05:38 -0700</bug_when>
    <thetext>I guess we should think about whether “resource handle” and “network resource handle” make it clear what the difference is between the two classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039204</commentid>
    <comment_count>6</comment_count>
      <attachid>239204</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-10-03 07:20:42 -0700</bug_when>
    <thetext>Created attachment 239204
Updated CURL binding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039216</commentid>
    <comment_count>7</comment_count>
      <attachid>239205</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-10-03 09:01:20 -0700</bug_when>
    <thetext>Created attachment 239205
Added missing cf declaration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039246</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-10-03 10:11:12 -0700</bug_when>
    <thetext>The current patch introduces a number of fixme that I can carry on.
Moving BlobResourceHandle from NetworkResourceHandle to ResourceHandle is a two lines change that does not break any layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045733</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-03 07:47:28 -0800</bug_when>
    <thetext>After discussion, it seems to make sense that the networking process handles all URLS, not only HTTP URLs as I initially thought.

This weakens a bit the idea of using NetworkResourceHandle as name for HTTP-specific resource handles as proposed by the current patch.

I still think it makes sense to split ResourceHandle though, so as to nicely handle data/blob urls.

Any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045765</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-03 10:01:58 -0800</bug_when>
    <thetext>Maybe Antti has thoughts on this. He’s been commenting a lot on network process architecture lately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046046</commentid>
    <comment_count>11</comment_count>
      <attachid>239205</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-04 05:32:57 -0800</bug_when>
    <thetext>Comment on attachment 239205
Added missing cf declaration

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

&gt; Source/WebCore/ChangeLog:10
&gt; +
&gt; +        Moved all network specific code from ResourceHandle to NetworkResourceHandle.
&gt; +        This triggers renaming in the network code for all bindings.
&gt; +        ResourceHandleClient API remains unchanged. 

Some &quot;why&quot; would be good.

&gt; Source/WebCore/platform/network/ResourceHandle.h:108
&gt; +    // To get access to start and platform protected routines.

Could you describe what the next steps after this patch would be? It is not entirely clear to me what the end state is going to be. For example this doesn&apos;t really make ResourceHandle abstract, there is still functionality here.

&gt; Source/WebCore/platform/network/ResourceHandle.h:109
&gt; +    friend NetworkResourceHandle;

Why friend?

NetworkFoo naming pattern has been used for classes belonging to WK2 network process. It is probably not the right name for what I understand is the platform implementation of an abstract base.

&gt; Source/WebCore/platform/network/ResourceHandle.h:131
&gt; +    virtual void clearAuthentication() { };

Unnecessary ; here and in many other places. 

Wonder why style bot is not complaining?

&gt; Source/WebCore/platform/network/ResourceHandle.h:172
&gt; +    virtual bool isScheduledToFail() {return false;};

Wrong spacing.

&gt; Source/WebCore/platform/network/ResourceHandle.h:175
&gt; +    ResourceHandleClient *m_client;

* placement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046055</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-04 06:07:00 -0800</bug_when>
    <thetext>Thanks for the review.
Please see inline.

(In reply to comment #11)
&gt; Comment on attachment 239205 [details]
&gt; Added missing cf declaration
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=239205&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +
&gt; &gt; +        Moved all network specific code from ResourceHandle to NetworkResourceHandle.
&gt; &gt; +        This triggers renaming in the network code for all bindings.
&gt; &gt; +        ResourceHandleClient API remains unchanged. 
&gt; 
&gt; Some &quot;why&quot; would be good.

Right, I could add that the target is to have a common class that would be specialized for specific handling: blob, data and network-HTTP would all have their specialized class deriving from this abstract class.

&gt; &gt; Source/WebCore/platform/network/ResourceHandle.h:108
&gt; &gt; +    // To get access to start and platform protected routines.
&gt; 
&gt; Could you describe what the next steps after this patch would be? It is not
&gt; entirely clear to me what the end state is going to be. For example this
&gt; doesn&apos;t really make ResourceHandle abstract, there is still functionality
&gt; here.

This patch is a first step towards proper separation.
Considering the amount of code to change due to renaming, I thought it would be best to just minimize the code logic changes.

Additional patches would follow to continue the refactoring, like removing the network-specific methods (see fixme in ResourceHandle.h line 139).

After that, or in parallel, support for data URL would be added, that would solve current issues with CORS and will improve efficiency (at least for the soup backend, that would remove some unnecessary memory allocations/copies).

Another few-lines patch would be to have BlobResourceHandle deriving directly from the abstract ResourceHandle.

Another potential area (not currently in scope of what I plan to do) would be to improve readability of the current ResourceHandle: the support of various HTTP backend makes the code a bit uneasy to read.

Does that plan sound reasonnable to you?

&gt; &gt; Source/WebCore/platform/network/ResourceHandle.h:109
&gt; &gt; +    friend NetworkResourceHandle;
&gt; 
&gt; Why friend?

I do not remember exactly why I added it.
Further patches should anyway remove that relationship.

&gt; NetworkFoo naming pattern has been used for classes belonging to WK2 network
&gt; process. It is probably not the right name for what I understand is the
&gt; platform implementation of an abstract base.

I guess HTTPResourceHandle is probably too specific as well.
What about BackendResourceHandle?

&gt; &gt; Source/WebCore/platform/network/ResourceHandle.h:131
&gt; &gt; +    virtual void clearAuthentication() { };
&gt; 
&gt; Unnecessary ; here and in many other places. 

OK

&gt; Wonder why style bot is not complaining?
&gt; 
&gt; &gt; Source/WebCore/platform/network/ResourceHandle.h:172
&gt; &gt; +    virtual bool isScheduledToFail() {return false;};
&gt; 
&gt; Wrong spacing.

OK

&gt; &gt; Source/WebCore/platform/network/ResourceHandle.h:175
&gt; &gt; +    ResourceHandleClient *m_client;
&gt; 
&gt; * placement

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047507</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-10 02:13:22 -0800</bug_when>
    <thetext>So might the plan be something along these lines?

- make ResourceHandle fully abstract
- make BlobResourceHandle not be a ResourceHandle (not sure what the factoring would be?)
- rename ResourceHandle to something more informative (PlatformNetworkConnection?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047543</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-10 09:14:22 -0800</bug_when>
    <thetext>&gt; - make ResourceHandle fully abstract

Not sure what the benefit of that would be, but also don&apos;t see any downside immediately.

&gt; - make BlobResourceHandle not be a ResourceHandle (not sure what the
&gt; factoring would be?)

Subclassing regular ResourceHandle and overriding some of its methods is definitely a horrible design.

&gt; - rename ResourceHandle to something more informative
&gt; (PlatformNetworkConnection?)

Renaming may be appropriate, but it is definitely not a &quot;network connection&quot;. This class handles authentication and redirects, which involve multiple connections.

Something like NetworkTask or NetworkLoadingTask may be more appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047608</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-10 13:04:36 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; - make ResourceHandle fully abstract
&gt; 
&gt; Not sure what the benefit of that would be, but also don&apos;t see any downside
&gt; immediately.

Hmm. Currently ResourceHandle

- is virtual (but the only subclass is BlobResourceHandle)
- has abstract client interface (ResourceHandleClient)
- has piles of platform #ifs in the header
- has generic .cpp defining some methods
- has platform specific .cpps defining other methods
- owns ResourceHandleInternal which itself has piles of inlined platform specific #ifs

It is hard to know where to even start.

I suppose the best way to start untangling this would actually be to first make it non-virtual. That is a matter of getting rid of the BlobResourceHandle but this should be done without adding even more abstraction. Blob loading would then move to higher level (somewhere around ResourceLoader).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048138</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-12 05:10:39 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; &gt; - make ResourceHandle fully abstract
&gt; &gt; 
&gt; &gt; Not sure what the benefit of that would be, but also don&apos;t see any downside
&gt; &gt; immediately.
&gt; 
&gt; Hmm. Currently ResourceHandle
&gt; 
&gt; - is virtual (but the only subclass is BlobResourceHandle)
&gt; - has abstract client interface (ResourceHandleClient)
&gt; - has piles of platform #ifs in the header
&gt; - has generic .cpp defining some methods
&gt; - has platform specific .cpps defining other methods
&gt; - owns ResourceHandleInternal which itself has piles of inlined platform
&gt; specific #ifs
&gt; 
&gt; It is hard to know where to even start.
&gt; 
&gt; I suppose the best way to start untangling this would actually be to first
&gt; make it non-virtual. That is a matter of getting rid of the
&gt; BlobResourceHandle but this should be done without adding even more
&gt; abstraction. Blob loading would then move to higher level (somewhere around
&gt; ResourceLoader).

Yes, having an abstract ResourceHandle would allow to split platform specific code into subclasses and make things much cleaner.

Starting with data URLs is probably simpler and would validate how loading should happen when handled within WebProcess/ResourceLoader.

What I am not clear is whether we want to remove ResourceLoader::m_handle or not in the long term.

If so, handling of data/blob URL loading should be handled by explicit data/blob function call within Web/ResourceLoadScheduler (more or less following archive resource loading).

If not, handling of data/blob URL could happen by instantiating within WebProcess a subclass of ResourceHandle specialized for data/blob URLs.
WebResourceLoadScheduler would then only need to start the resourceloader for data/blob URLs. AIUI, this is close to how QuickLook URLs are loaded.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238527</attachid>
            <date>2014-09-23 04:28:02 -0700</date>
            <delta_ts>2014-10-03 07:20:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137005-20140923132759.patch</filename>
            <type>text/plain</type>
            <size>100474</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU4ZGU1YWUyYTc2OThh
ZmU1ZTljYWI0ZDg1ZDczNTQ0YmZmODAzNC4uNTRiNDc5YTllNDI1YzRhYmFmNTdlNDRiYjg2ZTQw
YTIxNmE2Nzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNCBAQAorMjAxNC0wOS0yMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFNwbGl0
IFJlc291cmNlSGFuZGxlIGluIGFuIGFic3RyYWN0IGNsYXNzIGFuZCBhIG5ldHdvcmstc3BlY2lm
aWMgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNzAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVkIGFsbCBuZXR3b3JrIHNwZWNpZmljIGNvZGUgZnJvbSBSZXNvdXJjZUhhbmRsZSB0byBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGUuCisgICAgICAgIFRoaXMgdHJpZ2dlcnMgcmVuYW1pbmcgaW4g
dGhlIG5ldHdvcmsgY29kZSBmb3IgYWxsIGJpbmRpbmdzLgorICAgICAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCBBUEkgcmVtYWlucyB1bmNoYW5nZWQuIAorCisgICAgICAgIEFkZGVkIG5ldyBtZXRo
b2QgaXNTY2hlZHVsZWRUb0ZhaWwgdG8gYWJzdHJhY3Qgc29tZSBSZXNvdXJjZUhhbmRsZSBjb2Rl
LgorICAgICAgICBUaGlzIHBhdGNoIHByZXBhcmVzIEJsb2JSZXNvdXJjZUhhbmRsZSBtaWdyYXRp
b24gZnJvbSBOZXR3b3JrUmVzb3VyY2VIYW5kbGUgdG8gUmVzb3VyY2VIYW5kbGUuCisKKyAgICAg
ICAgRXhpc3RpbmcgdGVzdHMgc2hvdWxkIGNvdmVyIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWU6OmNhblJ1bk1vZGFsTm93KTogUmVzb3VyY2VIYW5kbGUgdG8gTmV0d29ya1Jl
c291cmNlSGFuZGxlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291
cmNlSGFuZGxlKTogRGl0dG8uIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
RmFpbHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmlzU2No
ZWR1bGVkVG9GYWlsKTogSW5zZXJ0ZWQgdG8gbWluaW1pemUgY29kZSBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZpcnN0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsYXN0SFRUUE1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Omhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2xlYXJBdXRo
ZW50aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNo
b3VsZENvbnRlbnRTbmlmZik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOiBBZGRlZCBuZXcgTmV0d29ya1Jlc291cmNlSGFu
ZGxlIGNsYXNzIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oOiBSZXNvdXJjZUhhbmRsZSB0byBOZXR3b3JrUmVzb3VyY2VIYW5k
bGUuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhh
bmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0b3JhZ2VTZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VDb25u
ZWN0aW9uRm9yRG93bmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlI
VFRQU0NlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6fk5ldHdvcmtSZXNv
dXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0Fu
eUhUVFBTQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZv
cm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENoYWxsZW5nZVJlamVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUmVz
b3VyY2VIYW5kbGVJT1MubW06IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNV
UkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWwp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERl
ZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpz
Y2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjptYWtlRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzeW5jaHJvbm91
c0xvYWRSdW5Mb29wTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0Rh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDb2xsZWN0
c1RpbWluZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbTogRGl0dG8uCisgICAgICAg
ICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZl
UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6On5OZXR3b3JrUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpj
YW5jZWxsZWRPckNsaWVudGxlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
SGFuZGxlOjplbnN1cmVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdvdEhlYWRlcnND
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc3RhcnRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnNob3VsZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZG9SZWRpcmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZWRpcmVjdFNraXBDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjp3cm90ZUJv
ZHlEYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVVuaWdub3JlZFRMU0Vycm9ycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdHJlYW1Qb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNv
dXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVT
b3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNlbmRQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0
aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEln
bm9yZVNTTEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNp
c3RlbnRTdG9yZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6Y29udGludWVEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVz
dFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OndhaXRpbmdUb1NlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVxdWVzdFRpbWVvdXRDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6YXV0aGVudGljYXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6cmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93
aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUludGVybmV0SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25SZWRp
cmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25SZXF1ZXN0Q29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6b25SZWRpcmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Om9uUmVxdWVzdENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpmaWxlTG9hZFRpbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c2V0U3luY2hyb25vdXNJbnRlcm5ldEhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyk6CisKIDIwMTQtMDktMTUg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NT
UyBHcmlkIExheW91dF0gRG8gbm90IGdyb3cgdHJhY2tzIHdoZW4gdGhlIGdyb3d0aCBmYWN0b3Ig
aXMgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDNlNDBkMmE2MzZkNDM4N2ZjZDgxNGEwM2RkYzRjOTE5
MTg5NWRjODUuLjg5ZWE0MDk3OTA5YzFiY2QyNmNkYjk3NGZmZmI1ODQzNTI2NWExNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wOS0yMyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFNwbGl0IFJlc291cmNlSGFu
ZGxlIGluIGFuIGFic3RyYWN0IGNsYXNzIGFuZCBhIG5ldHdvcmstc3BlY2lmaWMgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzAwNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOl0pOiBSZW5hbWVkIFJlc291cmNlSGFuZGxlIHRvIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZS4KKwogMjAxNC0wOS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEdlbmVyYXRlIEVsZW1lbnQgY2FzdGluZyBoZWxwZXIgZnVuY3Rpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggZGU0NmNkZTQwOWRkNjU4MmQ5ZTRiOTdiMWIzNmMyNzFlNzJkZWM3NS4u
YjkzYTA0Y2Q4NDdhMWNkYjBmNTMwMDg0NDEyZjBiZmMzZTJlZTZlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE0LTA5LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CisKKyAgICAgICAgU3BsaXQgUmVzb3VyY2VIYW5kbGUgaW4gYW4gYWJzdHJh
Y3QgY2xhc3MgYW5kIGEgbmV0d29yay1zcGVjaWZpYyBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJ
Z25vcmVUTFNFcnJvcnMpOiBSZW5hbWVkIFJlc291cmNlSGFuZGxlIHRvIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNI
VFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6IERpdHRvCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3Vw
L1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0SWdu
b3JlVExTRXJyb3JzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6IERpdHRvLgorCiAyMDE0LTA5LTIyICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBV
SSBkZWxlZ2F0ZSBjYWxsYmFjayB3aGVuIHdpbmRvdy5jbG9zZSgpIGlzIGNhbGxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBhZjBkNWFiNTkxMGY4ZjMxYjhkMzAwOWM4NTg0MmE4Y2E3NTNmNzMx
Li4xNzZmNmJlNDVhM2E3OTM2ZjM4OGEyMmJmOWMxZGIyY2M1MGVmNjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMzgyLDExICszODIsOSBAQCBfX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVy
RDFFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckQyRXYKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VIYW5kbGUxMmZpcnN0UmVxdWVzdEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxl
MTZzZXREZWZlcnNMb2FkaW5nRWIKLV9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNl
Q29udGVudFNuaWZmaW5nRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyM2NvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pON1dlYkNvcmUxNFJl
c291cmNlSGFuZGxlMjVsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5RVBOU18xN05ldHdvcmtpbmdD
b250ZXh0RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNfMTdTdG9yZWRDcmVkZW50aWFsc0VSTlNf
MTNSZXNvdXJjZUVycm9yRVJOU18xNlJlc291cmNlUmVzcG9uc2VFUk4zV1RGNlZlY3RvckljTG0w
RU5TQl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTI2
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VFdgotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRs
ZTI2c3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGVFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhh
bmRsZTQ1Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRWIKIF9f
Wk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGU2Y3JlYXRlRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFUE5TXzIwUmVzb3VyY2VIYW5kbGVDbGllbnRFYmIKIF9f
Wk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9yRXYKQEAgLTkwNCw2ICs5
MDIsOCBAQCBfX1pON1dlYkNvcmUyMURpc3BsYXlSZWZyZXNoTW9uaXRvckQyRXYKIF9fWk43V2Vi
Q29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMTJSZWxpZWZMb2dnZXIxNnNfbG9nZ2luZ0VuYWJs
ZWRFCiBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjEzcmVsZWFzZU1lbW9yeUVi
CiBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjdpbnN0YWxsRXYKK19fWk43V2Vi
Q29yZTIxTmV0d29ya1Jlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmluZ0V2CitfX1pO
N1dlYkNvcmUyMU5ldHdvcmtSZXNvdXJjZUhhbmRsZTI2c3luY2hyb25vdXNMb2FkUnVuTG9vcE1v
ZGVFdgogX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24yMWRlZmF1bHRTdG9yYWdl
U2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI1c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4
Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAppbmRleCBlYTQwNzljNjc0ZmU1ZTNmZDJmNjgwYWM2NTMzNGQ4NTQ1MDVmNzVhLi4z
NThmYTQ0N2ZmM2YzOGRkYzk4NTBlM2NiYWJiMzFjMDJmOGY5ZWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgYm9vbCBDaHJvbWU6OmNhblJ1bk1vZGFsTm93KCkg
Y29uc3QKIHsKICAgICAvLyBJZiBsb2FkcyBhcmUgYmxvY2tlZCwgd2UgY2FuJ3QgcnVuIG1vZGFs
IGJlY2F1c2UgdGhlIGNvbnRlbnRzCiAgICAgLy8gb2YgdGhlIG1vZGFsIGRpYWxvZyB3aWxsIG5l
dmVyIHNob3cgdXAhCi0gICAgcmV0dXJuIGNhblJ1bk1vZGFsKCkgJiYgIVJlc291cmNlSGFuZGxl
Ojpsb2Fkc0Jsb2NrZWQoKQorICAgIHJldHVybiBjYW5SdW5Nb2RhbCgpICYmICFOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgpCiAgICAgICAgICAgICYmIGNhblJ1bk1vZGFsSWZE
dXJpbmdQYWdlRGlzbWlzc2FsKG1fcGFnZSwgQ2hyb21lQ2xpZW50OjpIVE1MRGlhbG9nLCBTdHJp
bmcoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCBjNDk0ZTUyY2RhOGIyNzAwM2RjYTUzZjU1NTky
OWZiYzRjMmRmZmI5Li5lMjBmMzBkYjM5MDRjNDk3OTI5NWZiODZhMzk4MWRhODQ5ZDc1ODdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXMK
IH0KIAogQmxvYlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqIGJs
b2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xp
ZW50KiBjbGllbnQsIGJvb2wgYXN5bmMpCi0gICAgOiBSZXNvdXJjZUhhbmRsZSgwLCByZXF1ZXN0
LCBjbGllbnQsIGZhbHNlLCBmYWxzZSkKKyAgICA6IE5ldHdvcmtSZXNvdXJjZUhhbmRsZSgwLCBy
ZXF1ZXN0LCBjbGllbnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fYmxvYkRhdGEoYmxvYkRhdGEp
CiAgICAgLCBtX2FzeW5jKGFzeW5jKQogICAgICwgbV9lcnJvckNvZGUoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCmluZGV4
IDczMmZmNzkwNDUzOWQ0ZDhmODA0YzI3ZWEwNDY2ODM2ZjBhNDliMWQuLmExMjNmZWQwYjI2Y2I2
OGM4OGRlOGRmZmE2NmY1YWE2MGRhYzczM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaApAQCAtNDYsNyArNDYsOCBAQCBj
bGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIHN0cnVj
dCBCbG9iRGF0YUl0ZW07CiAKLWNsYXNzIEJsb2JSZXNvdXJjZUhhbmRsZSBmaW5hbCA6IHB1Ymxp
YyBGaWxlU3RyZWFtQ2xpZW50LCBwdWJsaWMgUmVzb3VyY2VIYW5kbGUgIHsKKy8vIEZJWE1FOiBC
bG9iUmVzb3VyY2VIYW5kbGUgc2hvdWxkIGRlcml2ZSBmcm9tIFJlc291cmNlSGFuZGxlCitjbGFz
cyBCbG9iUmVzb3VyY2VIYW5kbGUgZmluYWwgOiBwdWJsaWMgRmlsZVN0cmVhbUNsaWVudCwgcHVi
bGljIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSAgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gY3JlYXRlQXN5bmMoQmxvYkRhdGEqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDAxYzdmNzJj
MjIxZjEyM2Q5NzgyYTI1MDMwNWViZmYyMWZjYmUzNmQuLjBlYjVlNWM3NDM0ODAzMTU1MDNlZDE2
NmQzYWI2OTQxZTZjMTIxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC03MCw4ICs3MCw5IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJvdG9jCiAgICAgYnVpbHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXAo
KS5hZGQocHJvdG9jb2wsIGxvYWRlcik7CiB9CiAKLVJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhh
bmRsZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29sIGRlZmVyc0xvYWRpbmcs
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQotICAgIDogZChhZG9wdFB0cihuZXcgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbCh0aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRp
bmcsIHNob3VsZENvbnRlbnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51
cmwoKSkpKSkKK05ldHdvcmtSZXNvdXJjZUhhbmRsZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBz
aG91bGRDb250ZW50U25pZmYpCisgICAgOiBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQp
CisgICAgLCBkKGFkb3B0UHRyKG5ldyBSZXNvdXJjZUhhbmRsZUludGVybmFsKHRoaXMsIGNvbnRl
eHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmICYm
IHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSkpKQogewogICAgIGlmICghcmVx
dWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsKICAgICAgICAgc2NoZWR1bGVGYWlsdXJlKEludmFsaWRV
UkxGYWlsdXJlKTsKQEAgLTkxLDkgKzkyLDkgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4g
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY28KICAg
ICBpZiAocHJvdG9jb2xNYXBJdGVtICE9IGJ1aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9y
TWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBwcm90b2NvbE1hcEl0ZW0tPnZhbHVlKHJlcXVl
c3QsIGNsaWVudCk7CiAKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG5ld0hhbmRsZShhZG9w
dFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNM
b2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpKSk7CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBOZXR3b3JrUmVzb3VyY2VIYW5kbGUoY29u
dGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYp
KSk7CiAKLSAgICBpZiAobmV3SGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5v
RmFpbHVyZSkKKyAgICBpZiAobmV3SGFuZGxlLT5pc1NjaGVkdWxlZFRvRmFpbCgpKQogICAgICAg
ICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPnN0YXJ0
KCkpCkBAIC0xMDIsMTMgKzEwMywxOCBAQCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZUZhaWx1cmUoRmFpbHVy
ZVR5cGUgdHlwZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZUZhaWx1cmUo
RmFpbHVyZVR5cGUgdHlwZSkKIHsKICAgICBkLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlID0gdHlw
ZTsKICAgICBkLT5tX2ZhaWx1cmVUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZpcmVkKFRpbWVyPFJlc291cmNlSGFuZGxlPiYpCiti
b29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6aXNTY2hlZHVsZWRUb0ZhaWwoKQoreworICAgIHJl
dHVybiBkLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZTsKK30KKwordm9pZCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZpcmVkKFRpbWVyPE5ldHdvcmtSZXNv
dXJjZUhhbmRsZT4mKQogewogICAgIGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTEzOSw2MCArMTQ1LDUwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29udGV4
dCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci19
Ci0KLVJlc291cmNlSGFuZGxlQ2xpZW50KiBSZXNvdXJjZUhhbmRsZTo6Y2xpZW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZC0+bV9jbGllbnQ7Ci19Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNl
dENsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQotewotICAgIGQtPm1fY2xpZW50
ID0gY2xpZW50OworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnRleHQsIHJlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzLCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENG
TkVUV09SSykgJiYgIVVTRShTT1VQKQogLy8gUmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBhc3lu
YyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KLXZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGJvb2wpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KICNlbmRpZgogI2VuZGlmCiAKLVJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VI
YW5kbGU6OmZpcnN0UmVxdWVzdCgpCitSZXNvdXJjZVJlcXVlc3QmIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6Zmlyc3RSZXF1ZXN0KCkKIHsKICAgICByZXR1cm4gZC0+bV9maXJzdFJlcXVlc3Q7CiB9
CiAKLU5ldHdvcmtpbmdDb250ZXh0KiBSZXNvdXJjZUhhbmRsZTo6Y29udGV4dCgpIGNvbnN0CitO
ZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250ZXh0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gZC0+bV9jb250ZXh0LmdldCgpOwogfQogCi1jb25zdCBTdHJpbmcmIFJl
c291cmNlSGFuZGxlOjpsYXN0SFRUUE1ldGhvZCgpIGNvbnN0Citjb25zdCBTdHJpbmcmIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6bGFzdEhUVFBNZXRob2QoKSBjb25zdAogewogICAgIHJldHVybiBk
LT5tX2xhc3RIVFRQTWV0aG9kOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpoYXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0Citib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6aGFz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdAogewogICAgIHJldHVybiAhZC0+bV9jdXJy
ZW50V2ViQ2hhbGxlbmdlLmlzTnVsbCgpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjbGVh
ckF1dGhlbnRpY2F0aW9uKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjbGVhckF1dGhl
bnRpY2F0aW9uKCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBkLT5tX2N1cnJlbnRNYWND
aGFsbGVuZ2UgPSBuaWw7CkBAIC0yMDAsMTIgKzE5NiwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpjbGVhckF1dGhlbnRpY2F0aW9uKCkKICAgICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UubnVs
bGlmeSgpOwogfQogICAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZigp
IGNvbnN0Citib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9zaG91bGRDb250ZW50U25pZmY7CiB9CiAKLWJvb2wg
UmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChjb25zdCBVUkwmIHVybCkKK2Jv
b2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZVUkwoY29uc3QgVVJM
JiB1cmwpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKHNob3VsZEZvcmNlQ29udGVu
dFNuaWZmaW5nKQpAQCAtMjE1LDEyICsyMTEsMTIgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hv
dWxkQ29udGVudFNuaWZmVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiAhdXJsLnByb3Rv
Y29sSXMoImZpbGUiKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Zm9yY2VDb250ZW50U25p
ZmZpbmcoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW5n
KCkKIHsKICAgICBzaG91bGRGb3JjZUNvbnRlbnRTbmlmZmluZyA9IHRydWU7CiB9CiAKLXZvaWQg
UmVzb3VyY2VIYW5kbGU6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKIHsKICAgICBM
T0coTmV0d29yaywgIkhhbmRsZSAlcCBzZXREZWZlcnNMb2FkaW5nKCVzKSIsIHRoaXMsIGRlZmVy
cyA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZTIyZGZkOWM5OTZkODJmYjlmOTVlMzY5NjRj
N2U0NWI3MzgyYzg2OC4uMzMyMTVmZWMwNDY4NWQ0YjNiZDdhYzc4NzZlNGIzMzU3YTg4NmJjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHku
aCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtOTEsNiArOTIsNyBAQCBjbGFzcyBD
cmVkZW50aWFsOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JraW5nQ29u
dGV4dDsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKQEAg
LTEwMiwxNiArMTA0LDc0IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIFRpbWVyOwogCi1jbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlc291cmNlSGFuZGxlPgorY2xhc3MgUmVzb3VyY2VIYW5kbGU6IHB1YmxpYyBSZWZD
b3VudGVkPFJlc291cmNlSGFuZGxlPiAgeworICAgIGZyaWVuZCBOZXR3b3JrUmVzb3VyY2VIYW5k
bGU7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3Vy
Y2VIYW5kbGU+IGNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3Vs
ZENvbnRlbnRTbmlmZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFZlY3RvcjxjaGFyPiYgZGF0YSk7CisKKyAgICB0eXBlZGVmIFBhc3NSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0
aW5Db25zdHJ1Y3Rvcik7CisKKyAgICB0eXBlZGVmIHZvaWQgKCpCdWlsdGluU3luY2hyb25vdXNM
b2FkZXIpKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVk
Q3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNo
YXI+JiBkYXRhKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xv
YWRlcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGluU3luY2hyb25vdXNMb2Fk
ZXIpOworCisgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKSB7IH07CisgICAgdmlydHVhbCB2
b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwo
KSB7IH07CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgeyB9
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IH07CisKKyAgICB2aXJ0dWFsIFJlc291cmNlUmVx
dWVzdCYgZmlyc3RSZXF1ZXN0KCkgeyByZXR1cm4gbV9maXJzdFJlcXVlc3Q7IH07CisgICAgLy8g
VGhlIGNsaWVudCBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBubyBjYWxsYmFja3Mgd2lsbCBiZSBt
YWRlLgorICAgIHZpcnR1YWwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50OyB9OworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUmVzb3VyY2VI
YW5kbGVDbGllbnQgKmNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfTsKKworICAgIHZpcnR1
YWwgdm9pZCBjbGVhckF1dGhlbnRpY2F0aW9uKCkgeyB9OworCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpIHsgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpIHsgfTsKKyNlbmRpZgor
CisjaWYgVVNFKENGTkVUV09SSykKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJldGFpblB0
cjxDRlVSTENvbm5lY3Rpb25SZWY+IHJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKSB7IHJl
dHVybiBudWxscHRyOyB9OworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShD
Rk5FVFdPUkspCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBOU1VSTENvbm5lY3Rpb24gKmNv
bm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9OworI2VuZGlmCisgICAgLy8gQ2Fs
bGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25z
ZUFzeW5jKCkuCisjaWYgVVNFKENGTkVUV09SSykKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSB7
IH07CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlND
YWNoZWRVUkxSZXNwb25zZSAqKSB7IH07CisjZW5kaWYKKworCisjaWYgVVNFKFBST1RFQ1RJT05f
U1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3lu
YygpLgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCkgeyB9OworI2VuZGlmCisKK3Byb3RlY3Rl
ZDoKKyAgICBSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJlcXVlc3QgJmZpcnN0UmVxdWVz
dCwgUmVzb3VyY2VIYW5kbGVDbGllbnQgKmNsaWVudCk6IG1fZmlyc3RSZXF1ZXN0KGZpcnN0UmVx
dWVzdCksIG1fY2xpZW50KGNsaWVudCkgeyB9OyAKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY2hlZHVs
ZWRUb0ZhaWwoKSB7cmV0dXJuIGZhbHNlO307CisgICAgCisgICAgUmVzb3VyY2VSZXF1ZXN0IG1f
Zmlyc3RSZXF1ZXN0OworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50ICptX2NsaWVudDsKK307CisK
Ky8vIEZJWE1FOiBtb3ZlIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSBpbiBpdHMgb3duIGhlYWRlciBm
aWxlCitjbGFzcyBOZXR3b3JrUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGUK
ICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVT
RShTT1VQKQogICAgICwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50CiAjZW5kaWYKICAgICB7
CisgICAgZnJpZW5kIFJlc291cmNlSGFuZGxlOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wg
ZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5OZXR3b3JrUmVzb3VyY2VIYW5kbGUoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwpAQCAtMTgz
LDcgKzI0Myw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShXSU5JTkVUKQogICAgIHZvaWQgc2V0U3lu
Y2hyb25vdXNJbnRlcm5ldEhhbmRsZShISU5URVJORVQpOwotICAgIHZvaWQgZmlsZUxvYWRUaW1l
cihUaW1lcjxSZXNvdXJjZUhhbmRsZT4qKTsKKyAgICB2b2lkIGZpbGVMb2FkVGltZXIoVGltZXI8
TmV0d29ya1Jlc291cmNlSGFuZGxlPiopOwogICAgIHZvaWQgb25SZWRpcmVjdCgpOwogICAgIGJv
b2wgb25SZXF1ZXN0Q29tcGxldGUoKTsKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBpbnRlcm5l
dFN0YXR1c0NhbGxiYWNrKEhJTlRFUk5FVCwgRFdPUkRfUFRSLCBEV09SRCwgTFBWT0lELCBEV09S
RCk7CkBAIC0yMTMsMTAgKzI3Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQXV0aGVudGlj
YXRpb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAKLSAg
ICAvLyBUaGUgY2xpZW50IG1heSBiZSAwLCBpbiB3aGljaCBjYXNlIG5vIGNhbGxiYWNrcyB3aWxs
IGJlIG1hZGUuCi0gICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCgpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50Kik7Ci0K
ICAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxT
ZW5kUmVxdWVzdEFzeW5jKCkuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtMjM3LDExICsyOTMsMTEg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERlZmVyc0xv
YWRpbmcoYm9vbCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QmIGZpcnN0
UmVxdWVzdCgpOworCiAgICAgY29uc3QgU3RyaW5nJiBsYXN0SFRUUE1ldGhvZCgpIGNvbnN0Owog
Ci0gICAgdm9pZCBmYWlsdXJlVGltZXJGaXJlZChUaW1lcjxSZXNvdXJjZUhhbmRsZT4mKTsKKyAg
ICB2b2lkIGZhaWx1cmVUaW1lckZpcmVkKFRpbWVyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4mKTsK
IAogICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAKQEAgLTI1NSwxNSAr
MzExLDEyIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCiAg
ICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zyb21O
U1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKLQotICAgIHR5cGVk
ZWYgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gKCpCdWlsdGluQ29uc3RydWN0b3IpKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCk7
Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3IoY29uc3QgQXRvbWlj
U3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9yKTsKLQotICAgIHR5cGVkZWYgdm9p
ZCAoKkJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcikoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJlc291
cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2ws
IEJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcik7Ci0KIHByb3RlY3RlZDoKLSAgICBSZXNvdXJjZUhh
bmRsZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
SGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlm
Zik7CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGRlZmVyc0xvYWRp
bmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKTsKKworICAgIGJvb2wgaXNTY2hlZHVsZWRUb0Zh
aWwoKTsKKyAgICBib29sIHN0YXJ0KCk7CisgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1Mb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIEZhaWx1cmVUeXBl
IHsKQEAgLTI3Niw4ICszMjksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZUZhaWx1
cmUoRmFpbHVyZVR5cGUpOwogCi0gICAgYm9vbCBzdGFydCgpOwotICAgIHN0YXRpYyB2b2lkIHBs
YXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgKaW5kZXggZWZjNWM3YzdlNjVkZmQwNTFkNjU4NGNkODc4ODFkYjUyMzZk
Nzc2MC4uMWJmYzVjNjdmZjY3YmZhMzNjNzZjYjI3ZWQwMjgzZWExNWU1ZjdhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgKQEAgLTcxLDEwICs3MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKIAorICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgcmVu
YW1lZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCBhbmQgbWFkZSBjb25zaXN0ZW50IHdp
dGggUmVzb3VyY2VIYW5kbGUgbmV3IGZpZWxzIChjbGllbnQgYW5kIGZpcnN0UmVxdWVzdCkKICAg
ICBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbChSZXNvdXJjZUhhbmRs
ZSogbG9hZGVyLCBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29sIGRlZmVyc0xv
YWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorICAgICAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogbG9hZGVyLCBOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNs
aWVudCAqY2xpZW50LCBib29sIGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZm
KQogICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAgICAgICAgICwgbV9jbGll
bnQoY2xpZW50KQogICAgICAgICAgICAgLCBtX2ZpcnN0UmVxdWVzdChyZXF1ZXN0KQpAQCAtODYs
NyArODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fY3VycmVudFJl
cXVlc3QocmVxdWVzdCkKICNlbmRpZgogI2lmIFVTRShXSU5JTkVUKQotICAgICAgICAgICAgLCBt
X2ZpbGVMb2FkVGltZXIobG9hZGVyLCAmUmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGltZXIpCisg
ICAgICAgICAgICAsIG1fZmlsZUxvYWRUaW1lcihsb2FkZXIsICZOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OmZpbGVMb2FkVGltZXIpCiAgICAgICAgICAgICAsIG1faW50ZXJuZXRIYW5kbGUoMCkKICAg
ICAgICAgICAgICwgbV9jb25uZWN0SGFuZGxlKDApCiAgICAgICAgICAgICAsIG1fcmVxdWVzdEhh
bmRsZSgwKQpAQCAtMTE3LDggKzExOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgICwgbV9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9j
dXJyZW50TWFjQ2hhbGxlbmdlKG5pbCkKICNlbmRpZgotICAgICAgICAgICAgLCBtX3NjaGVkdWxl
ZEZhaWx1cmVUeXBlKFJlc291cmNlSGFuZGxlOjpOb0ZhaWx1cmUpCi0gICAgICAgICAgICAsIG1f
ZmFpbHVyZVRpbWVyKGxvYWRlciwgJlJlc291cmNlSGFuZGxlOjpmYWlsdXJlVGltZXJGaXJlZCkK
KyAgICAgICAgICAgICwgbV9zY2hlZHVsZWRGYWlsdXJlVHlwZShOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6Ok5vRmFpbHVyZSkKKyAgICAgICAgICAgICwgbV9mYWlsdXJlVGltZXIobG9hZGVyLCAmTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpmYWlsdXJlVGltZXJGaXJlZCkKICAgICAgICAgewogICAgICAg
ICAgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51cmwoKTsKICAgICAgICAgICAg
IG1fdXNlciA9IHVybC51c2VyKCk7CkBAIC0yMTksOCArMjIwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogI2VuZGlmCiAKICAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgbV9jdXJyZW50
V2ViQ2hhbGxlbmdlOwotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6RmFpbHVyZVR5cGUgbV9zY2hl
ZHVsZWRGYWlsdXJlVHlwZTsKLSAgICAgICAgVGltZXI8UmVzb3VyY2VIYW5kbGU+IG1fZmFpbHVy
ZVRpbWVyOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OkZhaWx1cmVUeXBlIG1fc2No
ZWR1bGVkRmFpbHVyZVR5cGU7CisgICAgICAgIFRpbWVyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4g
bV9mYWlsdXJlVGltZXI7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAKaW5kZXggNmM2ZmQ0YTI3ZTc2ZjEyZTQxNWJkZjc5N2RkNGFmOTE4ODUyYTgy
OC4uYTVkOTI2MjAzNDNkMjI0ZGVkYmNkN2U4YTZmYTExNjI0OTEwNzVhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwCkBAIC0xMTEsMTIgKzExMSwxMiBAQCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiAgICAgfQogfQogCi1SZXNvdXJjZUhhbmRsZTo6flJl
c291cmNlSGFuZGxlKCkKK05ldHdvcmtSZXNvdXJjZUhhbmRsZTo6fk5ldHdvcmtSZXNvdXJjZUhh
bmRsZSgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIERlc3Ryb3lpbmcgam9iICVwICgl
cykiLCB0aGlzLCBkLT5tX2ZpcnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hl
ZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50
UHJvcGVydGllcykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5l
Y3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlvbmFy
eVJlZiBjbGllbnRQcm9wZXJ0aWVzKQogewogICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkg
fHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0cCBjYW4g
b25seSBiZSBwYXNzZWQgaW4gVVJMLCB0aGUgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGRlbGVnYXRlIGNhbGwgd29uJ3QgYmUgbWFkZS4KQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVm
PiBzc2xQcm9wczsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBzc2xQcm9wcyA9IGFkb3B0Q0Yo
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGZpcnN0
UmVxdWVzdCgpKSk7CisgICAgc3NsUHJvcHMgPSBhZG9wdENGKE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoZmlyc3RSZXF1ZXN0KCkpKTsK
ICNlbHNlCiAgICAgaWYgKGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmNvbnRhaW5z
KGZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKS5sb3dlcigpKSkgewogICAgICAgICBzc2xQcm9w
cyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJv
b2wKICAgICBkLT5tX2Nvbm5lY3Rpb24gPSBhZG9wdENGKENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdp
dGhQcm9wZXJ0aWVzKDAsIHJlcXVlc3QuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxDb25u
ZWN0aW9uQ2xpZW50Kj4oJmNsaWVudCksIHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpKSk7CiB9
CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzdGFydCgpCiB7CiAgICAgaWYgKCFkLT5tX2NvbnRleHQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKIHsKICAgICBpZiAoZC0+bV9jb25uZWN0
aW9uKSB7CiAgICAgICAgIENGVVJMQ29ubmVjdGlvbkNhbmNlbChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCkpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAg
ICAgfQogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
CiB7CiAgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9
IHVybC51c2VyKCk7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMK
ICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CiAgICAg
aWYgKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkKICAgICAgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAg
IGVsc2UgewpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAg
fQogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgp
Citib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
KQogewogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSgpIik7CiAgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSB0aGlzLT5jbGll
bnQoKSkgewpAQCAtMzIyLDcgKzMyMiw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSIpOwogICAgIEFTU0VSVChkLT5tX2N1cnJlbnRX
ZWJDaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsCiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQot
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK2Jvb2wgTmV0d29ya1Jl
c291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewogICAgIGlmIChSZXNvdXJjZUhh
bmRsZUNsaWVudCogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsKICAgICAgICAgaWYgKGNsaWVu
dC0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBSZXNvdXJj
ZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UKIH0KICNlbmRpZgogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENy
ZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3Qg
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNl
aXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwg
Y29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gcmVjZWl2ZWRDcmVkZW50aWFsKCkiKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwo
KSk7CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVk
ZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICBjbGVh
ckF1dGhlbnRpY2F0aW9uKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlKQogewogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoKSIpOwogICAgIEFTU0VSVCghY2hhbGxl
bmdlLmlzTnVsbCgpKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGlj
YQogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxs
ZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIExPRyhOZXR3
b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZENhbmNlbGxhdGlvbigpIik7CiAgICAgaWYgKGNoYWxsZW5n
ZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW4KICAgICAgICAgY2xpZW50KCktPnJlY2VpdmVkQ2FuY2VsbGF0aW9u
KHRoaXMsIGNoYWxsZW5nZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVx
dWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVz
dFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKQogewogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZFJlcXVlc3RU
b1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKSIpOwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVs
bCgpKTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJl
cXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpbwogICAgIGNs
ZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIExPRyhO
ZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbigpIik7CiAgICAgQVNT
RVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtNDk4LDMwICs0OTgsMzAgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGMKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CiB9CiAKLUNGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgUmVzb3VyY2VIYW5kbGU6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK0NG
VVJMU3RvcmFnZVNlc3Npb25SZWYgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCk7CiB9CiAK
LUNGVVJMQ29ubmVjdGlvblJlZiBSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbigpIGNvbnN0CitD
RlVSTENvbm5lY3Rpb25SZWYgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb25uZWN0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZC0+bV9jb25uZWN0aW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8
Q0ZVUkxDb25uZWN0aW9uUmVmPiBSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZUNvbm5lY3Rpb25Gb3JE
b3dubG9hZCgpCitSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVmPiBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKQogewogICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSBKb2IgJXAgcmVsZWFzaW5nIGNvbm5lY3Rpb24gJXAgZm9yIGRvd25sb2FkIiwg
dGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKICAgICByZXR1cm4gV1RGOjptb3ZlKGQtPm1f
Y29ubmVjdGlvbik7CiB9CiAKLUNGU3RyaW5nUmVmIFJlc291cmNlSGFuZGxlOjpzeW5jaHJvbm91
c0xvYWRSdW5Mb29wTW9kZSgpCitDRlN0cmluZ1JlZiBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN5
bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCkKIHsKICAgICByZXR1cm4gQ0ZTVFIoIldlYkNvcmVT
eW5jaHJvbm91c0xvYWRlclJ1bkxvb3BNb2RlIik7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBz
dG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxz
IHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBMT0coTmV0d29yaywgIlJl
c291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6JXMgYWxsb3dT
dG9yZWRDcmVkZW50aWFsczoldSIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgc3RvcmVkQ3JlZGVudGlhbHMpOworICAgIExPRyhOZXR3b3JrLCAiTmV0d29ya1Jlc291cmNl
SGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6JXMgYWxsb3dTdG9yZWRD
cmVkZW50aWFsczoldSIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3Rv
cmVkQ3JlZGVudGlhbHMpOwogCiAgICAgQVNTRVJUKCFyZXF1ZXN0LmlzRW1wdHkoKSk7CiAKQEAg
LTUzMSw3ICs1MzEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgIE93blB0cjxTeW5j
aHJvbm91c0xvYWRlckNsaWVudD4gY2xpZW50ID0gU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmNy
ZWF0ZSgpOwogICAgIGNsaWVudC0+c2V0QWxsb3dTdG9yZWRDcmVkZW50aWFscyhzdG9yZWRDcmVk
ZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKIAotICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlKGNvbnRleHQsIHJl
cXVlc3QsIGNsaWVudC5nZXQoKSwgZmFsc2UgLypkZWZlcnNMb2FkaW5nKi8sIHRydWUgLypzaG91
bGRDb250ZW50U25pZmYqLykpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhh
bmRsZSA9IGFkb3B0UmVmKG5ldyBOZXR3b3JrUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVz
dCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENv
bnRlbnRTbmlmZiovKSk7CiAKICAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOwogCkBAIC01NDAsNyArNTQw
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGhhbmRsZS0+Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKHN0b3JlZENyZWRlbnRpYWxzID09IEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZV
UkwocmVxdWVzdC51cmwoKSksCisgICAgaGFuZGxlLT5jcmVhdGVDRlVSTENvbm5lY3Rpb24oc3Rv
cmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscywgTmV0d29ya1Jlc291cmNl
SGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksCiAgICAgICAgIFNj
aGVkdWxpbmdCZWhhdmlvcjo6U3luY2hyb25vdXMsIGhhbmRsZS0+Y2xpZW50KCktPmNvbm5lY3Rp
b25Qcm9wZXJ0aWVzKGhhbmRsZS5nZXQoKSkuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9u
U2NoZWR1bGVXaXRoUnVuTG9vcChoYW5kbGUtPmNvbm5lY3Rpb24oKSwgQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpLCBzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgpKTsKQEAgLTU2MCwxNyArNTYwLDE3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShOZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgZGF0YS5zd2FwKGNsaWVudC0+bXV0YWJs
ZURhdGEoKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQ
U0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3Qp
CiB7CiAgICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuYWRkKGhvc3QubG93ZXIo
KSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0
IFN0cmluZyYgaG9zdCwgQ0ZEYXRhUmVmIGNlcnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYgY2Vy
dCkKIHsKICAgICBjbGllbnRDZXJ0cygpLnNldChob3N0Lmxvd2VyKCksIGNlcnQpOwogfQogCi12
b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJv
b2wgZGVmZXJzKQogewogICAgIGlmICghZC0+bV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC01ODEsMTMgKzU4MSwxMyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERl
ZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgICAgIENGVVJMQ29ubmVjdGlvblJlc3VtZShk
LT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpsb2Fkc0Js
b2NrZWQoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFJlc291cmNl
SGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIENGUnVuTG9vcFJl
ZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7CiAgICAgaWYgKCFydW5Mb29wKQpAQCAtNjAwLDcg
KzYwMCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFp
cikKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGVQ
YWlyJiBwYWlyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1
bGVQYWlyJiBwYWlyKQogewogICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29w
KCk7CiAgICAgaWYgKCFydW5Mb29wKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB9CiAjZW5kaWYKIAotY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25z
dAorY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRS
ZXF1ZXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jdXJyZW50UmVxdWVzdDsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0
UmVzdWx0LmlzTnVsbCgpKQpAQCAtNjIzLDE5ICs2MjMsMTkgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChy
ZXF1ZXN0UmVzdWx0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkpOwogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogewogICAgIGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlLT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCiAj
aWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNh
bkF1dGhlbnRpY2F0ZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiB7
CiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOwogfQogI2VuZGlmCiAKLXZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdp
bGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAg
ZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UocmVzcG9u
c2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggYTA3Y2Q4YjFk
Mzg1NzUzZDYwZjExOGNmMDYwMGNiNDYyMzI2MzFjYS4uYjYwNDdmYTNmZjg5NzY4NzFhYmJiZmIy
MGVhODFhYTlkYzY4MmJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBA
IC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZShSZXNvdXJjZUhhbmRsZSog
aGFuZGxlKQorUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICA6IFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoaGFuZGxlKQogICAgICwgbV9xdWV1ZShkaXNwYXRj
aF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJDb3JlL0NGTmV0d29yayIsIERJU1BBVENIX1FV
RVVFX1NFUklBTCkpCiAgICAgLCBtX3NlbWFwaG9yZShkaXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRl
KDApKQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgICAg
IAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7
CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25u
ZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9h
ZFRpbWluZygpKTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9u
VGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCmluZGV4IDE1ZDhmYTA4YTg5M2M2ODU1ZTg3M2M5ZWI5ZTExYzJj
MTc5N2RhMWQuLjAyMGUxN2I1ZDEzYmU2NDBhYzNlY2RmOWUwOGU0Y2JkNGFmNWFkMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhh
bmRsZSogaGFuZGxlKQorU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUo
TmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAgICAgOiBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlKGhhbmRsZSkKIHsKIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMQwogICAgIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VS
ZXNwb25zZShjZlJlc3BvbnNlKTsKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBSZXNvdXJj
ZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbiwgcmVzb3VyY2VSZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSk7CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpn
ZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291
cmNlTG9hZFRpbWluZygpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGUyOTYzZWE0Y2M1YTI3YWNmMGI3NDVl
MDI5MTI2NWMxZGZhMWMxMjAuLmUyMDg0MDRkYjhiZjgwZmJhMzQ1ZjJjZjJiNzlhYjk3NGQ2N2Vj
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC05NiwxMiArOTYsMTIgQEAgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQogICAgICAgICBjdXJsX3Ns
aXN0X2ZyZWVfYWxsKG1fY3VzdG9tSGVhZGVycyk7CiB9CiAKLVJlc291cmNlSGFuZGxlOjp+UmVz
b3VyY2VIYW5kbGUoKQorTmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFu
ZGxlKCkKIHsKICAgICBjYW5jZWwoKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQo
KQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIHsKICAgICAvLyBUaGUgZnJh
bWUgY291bGQgYmUgbnVsbCBpZiB0aGUgUmVzb3VyY2VIYW5kbGUgaXMgbm90IGFzc29jaWF0ZWQg
dG8gYW55CiAgICAgLy8gRnJhbWUsIGUuZy4gaWYgd2UgYXJlIGRvd25sb2FkaW5nIGEgZmlsZS4K
QEAgLTExNSwxNyArMTE1LDE3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogewogICAgIFJlc291cmNlSGFuZGxlTWFuYWdl
cjo6c2hhcmVkSW5zdGFuY2UoKS0+Y2FuY2VsKHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3Qp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0KQogewogICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNh
dGVIb3N0cyhob3N0Lmxvd2VyKCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDbGll
bnRDZXJ0aWZpY2F0ZUluZm8oY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGNlcnRp
ZmljYXRlLCBjb25zdCBTdHJpbmcmIGtleSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpz
ZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8oY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcm
IGNlcnRpZmljYXRlLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBpZiAoZmlsZUV4aXN0cyhj
ZXJ0aWZpY2F0ZSkpCiAgICAgICAgIGFkZEFsbG93ZWRDbGllbnRDZXJ0aWZpY2F0ZShob3N0LCBj
ZXJ0aWZpY2F0ZSwga2V5KTsKQEAgLTE0MiwxMyArMTQyLDEzIEBAIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4gPiYgY2xpZW50Q2VydHMoKQogICAgIHJldHVybiBj
ZXJ0czsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoY29u
c3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYgY2VydCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIENGRGF0YVJlZiBj
ZXJ0KQogewogICAgIGNsaWVudENlcnRzKCkuc2V0KGhvc3QubG93ZXIoKSwgY2VydCk7CiB9CiAj
ZW5kaWYKIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJv
b2wgZGVmZXJzKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJz
TG9hZGluZyhib29sIGRlZmVycykKIHsKICAgICBpZiAoIWQtPm1faGFuZGxlKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjYsMjEgKzE2NiwyMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9y
bVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgfQogfQogCi1ib29sIFJlc291cmNl
SGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmxvYWRz
QmxvY2tlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKK2Jv
b2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7
CiAgICAgcmV0dXJuICghY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKHRoaXMpKSAmJiBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4m
IGRhdGEpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFy
PiYgZGF0YSkKIHsKICAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgc3luY0xvYWRlcjsKLSAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhh
bmRsZShjb250ZXh0LCByZXF1ZXN0LCAmc3luY0xvYWRlciwgdHJ1ZSwgZmFsc2UpKTsKKyAgICBS
ZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgTmV0d29y
a1Jlc291cmNlSGFuZGxlKGNvbnRleHQsIHJlcXVlc3QsICZzeW5jTG9hZGVyLCB0cnVlLCBmYWxz
ZSkpOwogCiAgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKiBtYW5hZ2VyID0gUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXgKICAgICByZXNwb25zZSA9IHN5bmNMb2FkZXIucmVzb3VyY2VSZXNw
b25zZSgpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBpZiAo
IWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIENy
ZWRlbnRpYWwgY3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNp
c3RlbmNlTm9uZSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwK
ICAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlz
LCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBpZiAoY2hhbGxl
bmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYy
LDcgKzI2Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgY2xlYXJBdXRoZW50aWNh
dGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxs
ZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxs
ZW5nZSkKIHsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9u
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgaWYgKGNo
YWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybjsKQEAg
LTI4MiwxMiArMjgyLDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0
aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuCiAgICAgICAgIGNsaWVu
dCgpLT5yZWNlaXZlZENhbmNlbGxhdGlvbih0aGlzLCBjaGFsbGVuZ2UpOwogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENo
YWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCmluZGV4IDY2N2I5YjE4NjY3
NDQwZGViZmVmZGExODA1Yjg0Y2I1NDc4NGM1NzkuLmMzNGFjZDM5NDMyNTk5MGY0NWMzN2M4Nzgz
OTkzOTg4NDJkMjkyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCkBAIC0xNyw3ICsxNyw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK0NGTXV0YWJsZURpY3Rpb25h
cnlSZWYgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJM
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgTlNTdHJpbmcg
Kmhvc3QgPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKICAgICBOU0FycmF5ICpjZXJ0QXJyYXkgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCmluZGV4IDc2NDU0ZGE5ZDI0ZTBmYjY1Yjg3NDQ2NTBmOTA4YjcxMDBl
ZTY5NDQuLjU3OTNlOGNjZGZlNzYzZjI4NTZkYWJhNjFlOGVhNTVhY2YyZmFkNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJl
c291cmNlSGFuZGxlSW50ZXJuYWwoKQogewogfQogCi1SZXNvdXJjZUhhbmRsZTo6flJlc291cmNl
SGFuZGxlKCkKK05ldHdvcmtSZXNvdXJjZUhhbmRsZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSgp
CiB7CiAgICAgcmVsZWFzZURlbGVnYXRlKCk7CiAgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdl
LnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KDApOwpAQCAtMTM5LDkgKzEzOSw5IEBAIHN0YXRpYyBi
b29sIHN5bmNocm9ub3VzV2lsbFNlbmRSZXF1ZXN0RW5hYmxlZCgpCiAjZW5kaWYKIAogI2lmICFQ
TEFURk9STShJT1MpCi12b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24o
aWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxk
Q29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0
ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IpCiAjZWxzZQotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9u
UHJvcGVydGllcykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5l
Y3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wg
c2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9y
LCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKQogI2VuZGlmCiB7CiAjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWwKICAgICBkLT5tX2Nvbm5lY3Rpb24gPSBhZG9wdE5TKFtbTlNVUkxDb25uZWN0aW9uIGFsbG9j
XSBfaW5pdFdpdGhSZXF1ZXN0Om5zUmVxdWVzdCBkZWxlZ2F0ZTpkZWxlZ2F0ZSB1c2VzQ2FjaGU6
dXNlc0NhY2hlIG1heENvbnRlbnRMZW5ndGg6MCBzdGFydEltbWVkaWF0ZWx5Ok5PIGNvbm5lY3Rp
b25Qcm9wZXJ0aWVzOnByb3BlcnR5RGljdGlvbmFyeV0pOwogfQogCi1ib29sIFJlc291cmNlSGFu
ZGxlOjpzdGFydCgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogewogICAg
IGlmICghZC0+bV9jb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDgsMTMgKzI0
OCwxMyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbigKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6Om1h
a2VEZWxlZ2F0ZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSksCisgICAgICAgIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSwK
ICAgICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsCiAgICAgICAgIGQtPm1fc2hvdWxk
Q29udGVudFNuaWZmIHx8IGQtPm1fY29udGV4dC0+bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5h
YmxlZCgpLAogICAgICAgICBTY2hlZHVsaW5nQmVoYXZpb3I6OkFzeW5jaHJvbm91cyk7CiAjZWxz
ZQogICAgIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbigKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6Om1h
a2VEZWxlZ2F0ZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSksCisgICAgICAgIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSwK
ICAgICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsCiAgICAgICAgIGQtPm1fc2hvdWxk
Q29udGVudFNuaWZmIHx8IGQtPm1fY29udGV4dC0+bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5h
YmxlZCgpLAogICAgICAgICBTY2hlZHVsaW5nQmVoYXZpb3I6OkFzeW5jaHJvbm91cywKQEAgLTMw
NSw3ICszMDUsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgY2Fu
Y2VsIGNvbm5lY3Rpb24gJXAiLCB0aGlzLCBkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogCkBAIC0z
MTYsNyArMzE2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKICAgICBbZC0+bV9j
b25uZWN0aW9uLmdldCgpIGNhbmNlbF07CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRm
b3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiB7CiAgICAgaWYgKGQt
Pm1fY29ubmVjdGlvbikKICAgICAgICAgd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxsYmFj
a3MoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBkZWZlcnMpOwpAQCAtMzI0LDcgKzMyNCw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
IAogI2lmIFBMQVRGT1JNKE1BQykKIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2No
ZWR1bGVQYWlyJiBwYWlyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNj
aGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5zUnVu
TG9vcCgpOwogICAgIGlmICghcnVuTG9vcCkKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgfQogfQogCi12b2lk
IFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAg
ICBpZiAoTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKSkKICAgICAgICAgW2Qt
Pm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2Rl
OihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIAogI2VuZGlmCiAKLWlk
IFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSkKK2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKIApA
QCAtMzYzLDE0ICszNjMsMTQgQEAgaWQgUmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZShib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogICAgIHJldHVybiBkLT5tX2RlbGVnYXRlLmdl
dCgpOwogfQogCi1pZCBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQoraWQgTmV0d29ya1Jlc291
cmNlSGFuZGxlOjpkZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKCFkLT5tX2RlbGVnYXRlKQogICAgICAg
ICByZXR1cm4gbWFrZURlbGVnYXRlKGZhbHNlKTsKICAgICByZXR1cm4gZC0+bV9kZWxlZ2F0ZS5n
ZXQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZURlbGVnYXRlKCkKK3ZvaWQg
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWxlYXNlRGVsZWdhdGUoKQogewogICAgIGlmICghZC0+
bV9kZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzc4LDMxICszNzgsMzEgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cmVsZWFzZURlbGVnYXRlKCkKICAgICBkLT5tX2RlbGVnYXRlID0gbmls
OwogfQogCi1OU1VSTENvbm5lY3Rpb24gKlJlc291cmNlSGFuZGxlOjpjb25uZWN0aW9uKCkgY29u
c3QKK05TVVJMQ29ubmVjdGlvbiAqTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb25uZWN0aW9uKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jb25uZWN0aW9uLmdldCgpOwogfQogICAgIAotYm9v
bCBSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpsb2Fkc0Jsb2NrZWQoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0ZTdHJpbmdS
ZWYgUmVzb3VyY2VIYW5kbGU6OnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCkKK0NGU3RyaW5n
UmVmIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKQog
ewogICAgIHJldHVybiBDRlNUUigiV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGUi
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0
YSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBk
YXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJl
c291cmNlU3luY2hyb25vdXNseTolQCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVz
dC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIHN0b3JlZENyZWRlbnRpYWxzKTsK
KyAgICBMT0coTmV0d29yaywgIk5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5OiVAIGFsbG93U3RvcmVkQ3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0
Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgc3RvcmVkQ3JlZGVudGlhbHMpOwog
CiAgICAgQVNTRVJUKCFyZXF1ZXN0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgT3duUHRyPFN5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50PiBjbGllbnQgPSBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6Y3Jl
YXRlKCk7CiAgICAgY2xpZW50LT5zZXRBbGxvd1N0b3JlZENyZWRlbnRpYWxzKHN0b3JlZENyZWRl
bnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogCi0gICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVx
dWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3Vs
ZENvbnRlbnRTbmlmZiovKSk7CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4gaGFu
ZGxlID0gYWRvcHRSZWYobmV3IE5ldHdvcmtSZXNvdXJjZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0
LCBjbGllbnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9hZGluZyovLCB0cnVlIC8qc2hvdWxkQ29u
dGVudFNuaWZmKi8pKTsKIAogICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKQEAgLTQ0Myw3ICs0NDMs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgIGRhdGEuc3dhcChjbGllbnQtPm11dGFi
bGVEYXRhKCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpCiB7CiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKIApAQCAt
NTAzLDcgKzUwMyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgfQogfQogCi12b2lk
IFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VS
VChjbGllbnQoKSk7CiAgICAgQVNTRVJUKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7
CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIFsoaWQpZGVsZWdh
dGUoKSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRh
dGVIVFRQQm9keSldOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKQogewogICAgIEFTU0VSVChjbGllbnQoKSk7CiAgICAgQVNTRVJUKGNsaWVu
dCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CkBAIC01MjMsMTMgKzUyMywxMyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgW2RlbGVnYXRl
KCkgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VdOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxl
OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewogICAgIEFTU0VSVCghY2xpZW50KCkt
PnVzZXNBc3luY0NhbGxiYWNrcygpKTsKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCkt
PnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fY3VycmVudE1hY0NoYWxsZW5nZSk7
CiAgICAgQVNTRVJUKGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZS5pc051bGwoKSk7CkBAIC02MDYs
NyArNjA2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICAgICAgY2xpZW50KCktPmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBkLT5tX2N1cnJlbnRXZWJDaGFs
bGVuZ2UpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgQVNTRVJU
KGQtPm1fY3VycmVudE1hY0NoYWxsZW5nZSk7CiAgICAgQVNTRVJUKGQtPm1fY3VycmVudE1hY0No
YWxsZW5nZSA9PSBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKQEAg
LTYxNyw3ICs2MTcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZQogfQogCiAjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBw
cm90ZWN0aW9uU3BhY2UpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
b25TcGFjZSkKIHsKICAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKSB7CiAg
ICAgICAgIGlmIChjbGllbnQoKSkKQEAgLTYyOSw3ICs2MjksNyBAQCBib29sIFJlc291cmNlSGFu
ZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZQogICAgICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodGhpcywgcHJvdGVjdGlvblNwYWNlKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGJvb2wgcmVzdWx0KQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRp
bnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKIHsK
ICAgICBBU1NFUlQoY2xpZW50KCkpOwogICAgIEFTU0VSVChjbGllbnQoKS0+dXNlc0FzeW5jQ2Fs
bGJhY2tzKCkpOwpAQCAtNjM4LDcgKzYzOCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRp
bnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKIH0K
ICNlbmRpZgogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKIHsKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZENy
ZWRlbnRpYWwiLCB0aGlzKTsKIApAQCAtNjY3LDcgKzY2Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwiLCB0aGlz
KTsKIApAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhCiAgICAgY2xl
YXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENh
bmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5k
bGUgJXAgcmVjZWl2ZWRDYW5jZWxsYXRpb24iLCB0aGlzKTsKIApAQCAtNjkxLDcgKzY5MSw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuCiAgICAgICAgIGNsaWVudCgpLT5yZWNlaXZlZENhbmNl
bGxhdGlvbih0aGlzLCBjaGFsbGVuZ2UpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZl
ZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmciLCB0aGlzKTsKIApAQCAtNzA0LDcgKzcw
NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1
bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigp
OwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAg
cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24iLCB0aGlzKTsKIApAQCAtNzE3LDcgKzcxNyw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKnJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiB7CiAg
ICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBBU1NFUlQoY2xpZW50KCktPnVzZXNBc3luY0NhbGxi
YWNrcygpKTsKQEAgLTcyOSw3ICs3MjksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51
ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogICAgIAog
I2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29u
bmVjdGlvblRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBSZXNvdXJjZUxvYWRU
aW1pbmcmIHRpbWluZykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9u
VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEsIFJlc291cmNlTG9hZFRpbWluZyYg
dGltaW5nKQogewogICAgIGlmICghdGltaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzU1
LDcgKzc1NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRh
KE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgUmVzb3VyY2VMCiAgICAgdGltaW5nLnJlc3BvbnNl
U3RhcnQgPSByZXNwb25zZVN0YXJ0IDw9IDAgPyAwIDogKHJlc3BvbnNlU3RhcnQgLSByZWZlcmVu
Y2VTdGFydCkgKiAxMDAwOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDb2xsZWN0c1Rp
bWluZ0RhdGEoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldENvbGxlY3RzVGltaW5n
RGF0YSgpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlz
cGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewpAQCAtNzY1LDE0ICs3NjUsMTQgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6c2V0Q29sbGVjdHNUaW1pbmdEYXRhKCkKIAogI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVS
TENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxD
b25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQogewog
ICAgIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKChfX2JyaWRnZSBOU0RpY3Rpb25hcnkqKShhZG9w
dENGKF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCkpLCB0
aW1pbmcpOwogfQogICAgIAogI2Vsc2UKICAgICAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENv
bm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3VyY2VM
b2FkVGltaW5nJiB0aW1pbmcpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVj
dGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRU
aW1pbmcmIHRpbWluZykKIHsKICAgICBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShbY29ubmVjdGlv
biBfdGltaW5nRGF0YV0sIHRpbWluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLmgKaW5kZXggNGY0MTU1ZWFmZDk0NWIxYjg2MmQyOWNlODk2ZGNhZGNkYTFjNDI2
Ni4uNzdhYjU4MzNiNDMxMGYzMmRhNTczODljZDczNWIyMmY0ZWZhNThmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaApAQCAtMjksMTMgKzI5LDEzIEBACiAjaWYg
IVVTRShDRk5FVFdPUkspCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlSGFu
ZGxlOworY2xhc3MgTmV0d29ya1Jlc291cmNlSGFuZGxlOwogfQogCiBAaW50ZXJmYWNlIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVs
ZWdhdGU+IHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CisgICAgV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKIH0KLS0gKGlkKWluaXRXaXRo
SGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOworLSAoaWQpaW5pdFdpdGhI
YW5kbGU6KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZSopaGFuZGxlOwogLSAodm9pZClk
ZXRhY2hIYW5kbGU7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLm1tCmluZGV4IDNhM2M2ODNhNTIzMzdhNjAwM2I0ZmE2NWQ2ZmUxYzY5YmQwOGZjMDAuLjkw
ODk0YzY1YTYyOGJmYzZmYjIxMTQyZTFhNjY2OGEzYzhkZTZhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQpAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUKIAotLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFJlc291cmNlSGFuZGxlKiloYW5kbGUK
Ky0gKGlkKWluaXRXaXRoSGFuZGxlOihOZXR3b3JrUmVzb3VyY2VIYW5kbGUqKWhhbmRsZQogewog
ICAgIHNlbGYgPSBbc2VsZiBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC0xNzIsNyArMTcyLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNvdXJjZVJlc3BvbnNlKHIpOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFJlc291cmNl
SGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3Bv
bnNlLnJlc291cmNlTG9hZFRpbWluZygpKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Omdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rpb24sIHJlc291cmNlUmVzcG9uc2UucmVzb3Vy
Y2VMb2FkVGltaW5nKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLmgKaW5kZXggZTc0MGFhNTliZWQ2M2JhYjkwNzZmMDc5M2FiM2QwM2Rl
MDAyYjA1MS4uNTU2NWU3ZWJhMmNlOGI0OTkzMzA3MDc5ZGM3NjJiMGUyNzJmZDI4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLmgKQEAgLTMyLDExICszMiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBOZXR3
b3JrUmVzb3VyY2VIYW5kbGU7CiB9CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVn
YXRlPiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOworICAgIFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CiAKICAgICAvLyBTeW5jaHJvbm91
cyBkZWxlZ2F0ZXMgb24gb3BlcmF0aW9uIHF1ZXVlIHdhaXQgdW50aWwgbWFpbiB0aHJlYWQgc2Vu
ZHMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLgogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV90IG1f
c2VtYXBob3JlOwpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBC
T09MIG1fYm9vbFJlc3VsdDsKIH0KIAotLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiloYW5kbGU7CistIChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlSGFuZGxlKiloYW5kbGU7CiAtICh2b2lkKWRldGFjaEhhbmRsZTsKIC0gKHZv
aWQpY29udGludWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3Q7CiAt
ICh2b2lkKWNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDky
OGQ0MTczZDgyMTNiODcyYjVhNGRmNTgxNTdjODFkZmVjODA4OTguLjJlYTdjZGIxZTAzZWI2YjEw
YzJkMWNjODRiNTc2NTFhOGYxNzg2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTQ3LDcgKzQ3LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUKIAotLSAoaWQpaW5pdFdpdGhIYW5k
bGU6KFJlc291cmNlSGFuZGxlKiloYW5kbGUKKy0gKGlkKWluaXRXaXRoSGFuZGxlOihOZXR3b3Jr
UmVzb3VyY2VIYW5kbGUqKWhhbmRsZQogewogICAgIHNlbGYgPSBbc2VsZiBpbml0XTsKICAgICBp
ZiAoIXNlbGYpCkBAIC0yMTQsNyArMjE0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAg
ICAgICAgIAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uocik7CiAj
aWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0
aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpKTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGlt
aW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygp
KTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcAppbmRleCBkMTA4NTBkNjI1OWRlMTRmNjBlMzRlYTM4ZWU3ZDQ4ZWM0
ZWI2MmYxLi45NDczNGU3ZmRiOGY3NjE3M2NkNDllMzg0MzllNWExNTdkNjhiMzhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcApAQCAtMjI3LDE1ICsyMjcsMTUgQEAgcHJpdmF0ZToKICAgICBIYXNo
U2V0PFN0cmluZz4gbV9jZXJ0aWZpY2F0ZXM7CiB9OwogCi1zdGF0aWMgYm9vbCBjcmVhdGVTb3Vw
UmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGlzSFRUUEZhbWlseVJlcXVlc3QpOwotc3RhdGljIHZvaWQgY2xlYW51
cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiwgYm9vbCBpc0Rlc3Ryb3lpbmcg
PSBmYWxzZSk7CitzdGF0aWMgYm9vbCBjcmVhdGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5k
bGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBp
c0hUVFBGYW1pbHlSZXF1ZXN0KTsKK3N0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJh
dGlvbihOZXR3b3JrUmVzb3VyY2VIYW5kbGUqLCBib29sIGlzRGVzdHJveWluZyA9IGZhbHNlKTsK
IHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCos
IGdwb2ludGVyKTsKIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVz
dWx0KiwgZ3BvaW50ZXIpOwogc3RhdGljIGdib29sZWFuIHJlcXVlc3RUaW1lb3V0Q2FsbGJhY2so
dm9pZCopOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogc3RhdGljIGludCAgbWlsaXNlY29uZHNT
aW5jZVJlcXVlc3QoZG91YmxlIHJlcXVlc3RUaW1lKTsKICNlbmRpZgotc3RhdGljIHZvaWQgY29u
dGludWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSopOworc3RhdGljIHZv
aWQgY29udGludWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUq
KTsKIAogc3RhdGljIGJvb2wgZ0lnbm9yZVNTTEVycm9ycyA9IGZhbHNlOwogCkBAIC0yNjMsNyAr
MjYzLDcgQEAgc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uRnJvbUNvbnRleHQoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
c291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKIH0KIAotUmVzb3VyY2VIYW5kbGU6
On5SZXNvdXJjZUhhbmRsZSgpCitOZXR3b3JrUmVzb3VyY2VIYW5kbGU6On5OZXR3b3JrUmVzb3Vy
Y2VIYW5kbGUoKQogewogICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbih0aGlzLCB0cnVl
KTsKIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCBTb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbDo6c291cFNlc3Npb24oKQogICAgIHJldHVybiBzZXNzaW9uRnJvbUNvbnRleHQobV9jb250
ZXh0LmdldCgpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsbGVkT3JDbGllbnRs
ZXNzKCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWxsZWRPckNsaWVudGxlc3Mo
KQogewogICAgIGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgxLDcg
KzI4MSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpCiAg
ICAgcmV0dXJuIGdldEludGVybmFsKCktPm1fY2FuY2VsbGVkOwogfQogCi12b2lkIFJlc291cmNl
SGFuZGxlOjplbnN1cmVSZWFkQnVmZmVyKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpl
bnN1cmVSZWFkQnVmZmVyKCkKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0
SW50ZXJuYWwoKTsKIApAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBib29sIGlzQXV0aGVudGlj
YXRpb25GYWlsdXJlU3RhdHVzQ29kZShpbnQgaHR0cFN0YXR1c0NvZGUpCiAKIHN0YXRpYyB2b2lk
IGdvdEhlYWRlcnNDYWxsYmFjayhTb3VwTWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSkK
IHsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5k
bGUqPihkYXRhKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19j
YXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogICAgIGlmICghaGFuZGxlIHx8IGhh
bmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzMx
LDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIGdvdEhlYWRlcnNDYWxsYmFjayhTb3VwTWVzc2FnZSog
bWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSkKICAgICBkLT5tX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3Vw
TWVzc2FnZShtZXNzYWdlKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlBdXRoZW50aWNhdGlvblRv
UmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgcmVkaXJlY3QpCitzdGF0aWMgdm9pZCBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0
KE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgcmVkaXJlY3QpCiB7CiAgICAgLy8gbV91c2VyL21fcGFzcyBhcmUgY3JlZGVudGlhbHMg
Z2l2ZW4gbWFudWFsbHksIGZvciBpbnN0YW5jZSwgYnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8g
WE1MSHR0cFJlcXVlc3Qub3BlbigpLgogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIHZvaWQgYXBw
bHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJj
ZVJlcXVlc3QKIC8vIFRoaXMgaGFwcGVucyB3aGVuIGxpYnNvdXAgaGFuZGxlcyBIVFRQIGF1dGhl
bnRpY2F0aW9uLgogc3RhdGljIHZvaWQgcmVzdGFydGVkQ2FsbGJhY2soU291cE1lc3NhZ2UqLCBn
cG9pbnRlciBkYXRhKQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7CiAgICAgaWYg
KCFoYW5kbGUgfHwgaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIHZvaWQgcmVzdGFydGVkQ2FsbGJhY2so
U291cE1lc3NhZ2UqLCBncG9pbnRlciBkYXRhKQogfQogI2VuZGlmCiAKLXN0YXRpYyBib29sIHNo
b3VsZFJlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCitzdGF0aWMgYm9vbCBzaG91bGRS
ZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKIHsKICAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogICAgIFNvdXBNZXNzYWdl
KiBtZXNzYWdlID0gZC0+bV9zb3VwTWVzc2FnZS5nZXQoKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBVUkwm
IG5ld1VSTCwgYm9vbCBjcm9zc09yaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZv
aWQgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVy
V2lsbFNlbmRSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gd2lsbFNlbmRSZXF1ZXN0IG1pZ2h0IGNh
bmNlbCB0aGUgbG9hZC4KICAgICBpZiAoaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3MoKSkK
QEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUgogICAgIGhhbmRsZS0+
c2VuZFBlbmRpbmdSZXF1ZXN0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRvUmVkaXJlY3QoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSkKK3N0YXRpYyB2b2lkIGRvUmVkaXJlY3QoTmV0d29ya1Jlc291cmNl
SGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRs
ZS0+Z2V0SW50ZXJuYWwoKTsKICAgICBzdGF0aWMgY29uc3QgaW50IG1heFJlZGlyZWN0cyA9IDIw
OwpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyB2b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSkKIAogc3RhdGljIHZvaWQgcmVkaXJlY3RTa2lwQ2FsbGJhY2soR09iamVjdCos
IEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgUmVmUHRy
PFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRh
dGEpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19j
YXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2Fu
Y2VsbGVkT3JDbGllbnRsZXNzKCkpIHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0
aW9uKGhhbmRsZS5nZXQoKSk7CkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIHZvaWQgcmVkaXJl
Y3RTa2lwQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2lu
dGVyIGQKIAogc3RhdGljIHZvaWQgd3JvdGVCb2R5RGF0YUNhbGxiYWNrKFNvdXBNZXNzYWdlKiwg
U291cEJ1ZmZlciogYnVmZmVyLCBncG9pbnRlciBkYXRhKQogewotICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAg
ICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3
b3JrUmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIHZvaWQgd3JvdGVCb2R5RGF0YUNhbGxi
YWNrKFNvdXBNZXNzYWdlKiwgU291cEJ1ZmZlciogYnVmZmVyLCBncG9pbnRlciBkYXQKICAgICBo
YW5kbGUtPmNsaWVudCgpLT5kaWRTZW5kRGF0YShoYW5kbGUuZ2V0KCksIGQtPm1fYm9keURhdGFT
ZW50LCBkLT5tX2JvZHlTaXplKTsKIH0KIAotc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0
T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgaXNEZXN0cm95aW5nKQorc3Rh
dGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluZykKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVy
bmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogCkBAIC01NjksNyArNTY5LDcgQEAgc3Rh
dGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGJvb2wgaXNEZXN0cm95aW4KICAgICAgICAgaGFuZGxlLT5kZXJlZigpOwogfQogCi1zdGF0
aWMgYm9vbCBoYW5kbGVVbmlnbm9yZWRUTFNFcnJvcnMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkK
K3N0YXRpYyBib29sIGhhbmRsZVVuaWdub3JlZFRMU0Vycm9ycyhOZXR3b3JrUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSkKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5n
ZXRJbnRlcm5hbCgpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gZC0+
bV9yZXNwb25zZTsKQEAgLTU5MCw3ICs1OTAsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVVbmlnbm9y
ZWRUTFNFcnJvcnMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc2l6ZV90IFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RyZWFtUG9zaXRpb24oKSBjb25zdAor
c2l6ZV90IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFN0cmVhbVBvc2l0aW9uKCkgY29u
c3QKIHsKICAgICBHSW5wdXRTdHJlYW0qIGJhc2VTdHJlYW0gPSBkLT5tX2lucHV0U3RyZWFtLmdl
dCgpOwogICAgIHdoaWxlICghR19JU19TRUVLQUJMRShiYXNlU3RyZWFtKSAmJiBHX0lTX0ZJTFRF
Ul9JTlBVVF9TVFJFQU0oYmFzZVN0cmVhbSkpCkBAIC02MDQsNyArNjA0LDcgQEAgc2l6ZV90IFJl
c291cmNlSGFuZGxlOjpjdXJyZW50U3RyZWFtUG9zaXRpb24oKSBjb25zdAogCiBzdGF0aWMgdm9p
ZCBuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2soR09iamVjdCogLypzb3VyY2UqLywg
R0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFJlc291
cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwor
ICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2VsbGVk
T3JDbGllbnRsZXNzKCkpIHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhh
bmRsZS5nZXQoKSk7CkBAIC02NDUsNyArNjQ1LDcgQEAgc3RhdGljIHZvaWQgbmV4dE11bHRpcGFy
dFJlc3BvbnNlUGFydENhbGxiYWNrKEdPYmplY3QqIC8qc291cmNlKi8sIEdBc3luY1Jlc3VsdCoK
IAogc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBo
YW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlZlB0cjxO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZSo+KGRhdGEpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpIHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7
CkBAIC03MTIsNyArNzEyLDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2Jq
ZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUpCitzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxl
ZE9yQ2xpZW50bGVzcygpKSB7CiAgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbiho
YW5kbGUpOwpAQCAtODI4LDE0ICs4MjgsMTQgQEAgc3RhdGljIGludCBtaWxpc2Vjb25kc1NpbmNl
UmVxdWVzdChkb3VibGUgcmVxdWVzdFRpbWUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
KG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gcmVxdWVzdFRpbWUpICogMTAwMC4wKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KCkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QoKQogewogICAgIGdldEludGVybmFsKCkt
Pm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkucmVxdWVzdFN0YXJ0ID0gbWlsaXNlY29u
ZHNTaW5jZVJlcXVlc3QobV9yZXF1ZXN0VGltZSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5ldHdvcmtF
dmVudENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgR1NvY2tldENsaWVudEV2ZW50IGV2ZW50LCBHSU9T
dHJlYW0qLCBncG9pbnRlciBkYXRhKQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7
CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtODg2LDcgKzg4Niw3IEBA
IHN0YXRpYyB2b2lkIG5ldHdvcmtFdmVudENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgR1NvY2tldENs
aWVudEV2ZW50IGV2ZW50LCBHSU9TdHJlCiB9CiAjZW5kaWYKIAotc3RhdGljIGJvb2wgY3JlYXRl
U291cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3N0YXRpYyBib29sIGNyZWF0ZVNvdXBNZXNz
YWdlRm9ySGFuZGxlQW5kUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChoYW5kbGUpOwogCkBA
IC05NDQsNyArOTQ0LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVB
bmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFIKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxl
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Ym9vbCBpc0hUVFBGYW1pbHlSZXF1ZXN0KQorc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RB
bmRNZXNzYWdlRm9ySGFuZGxlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgaXNIVFRQRmFtaWx5UmVxdWVzdCkKIHsKICAg
ICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogCkBA
IC05NzAsNyArOTcwLDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdl
Rm9ySGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFIKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQorYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnN0YXJ0KCkKIHsKICAgICBBU1NFUlQoIWQtPm1fc291cE1lc3NhZ2UpOwogCkBA
IC0xMDA0LDcgKzEwMDQsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNlbmRQZW5kaW5nUmVxdWVzdCgp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2VuZFBlbmRpbmdSZXF1ZXN0KCkKIHsKICNp
ZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICBtX3JlcXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CkBAIC0xMDI0LDcgKzEwMjQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpzZW5kUGVuZGluZ1JlcXVlc3QoKQogICAgIHNvdXBfcmVxdWVzdF9zZW5kX2FzeW5jKGQtPm1f
c291cFJlcXVlc3QuZ2V0KCksIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHNlbmRSZXF1ZXN0Q2Fs
bGJhY2ssIHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAgZC0+bV9jYW5jZWxsZWQgPSB0
cnVlOwogICAgIGlmIChkLT5tX3NvdXBNZXNzYWdlKQpAQCAtMTAzMywyMiArMTAzMywyMiBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNl
bChkLT5tX2NhbmNlbGxhYmxlLmdldCgpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKIHsKICAgICByZXR1cm4gKCFjbGllbnQoKSB8fCBj
bGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcykpICYmIGZpcnN0UmVxdWVz
dCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKICAgICBhbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlSG9zdHMoKS5hZGQoaG9zdC5sb3dlcigpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
c2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBHVGxzQ2VydGlmaWNhdGUq
IGNlcnRpZmljYXRlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRp
ZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkK
IHsKICAgICBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5hZGQoaG9zdC5sb3dlcigpLCBIb3N0VExTQ2Vy
dGlmaWNhdGVTZXQoKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChjZXJ0aWZpY2F0ZSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhib29sIGlnbm9yZVNTTEVycm9y
cykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBp
Z25vcmVTU0xFcnJvcnMpCiB7CiAgICAgZ0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9y
czsKIH0KQEAgLTEwNTYsMTEgKzEwNTYsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0SWdu
b3JlU1NMRXJyb3JzKGJvb2wgaWdub3JlU1NMRXJyb3JzKQogI2lmIFBMQVRGT1JNKEdUSykKIHZv
aWQgZ2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmVDYWxsYmFjayhjb25zdCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsLCB2b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFJlc291cmNl
SGFuZGxlKj4oZGF0YSktPmNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNyZWRlbnRpYWwpOworICAgIHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRh
dGEpLT5jb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjcmVkZW50aWFs
KTsKIH0KICNlbmRpZgogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsRnJvbVBl
cnNpc3RlbnRTdG9yYWdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRp
YWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2N1cnJlbnRXZWJD
aGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVu
Z2UgPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2U7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBDcmVkZW50aWFsJgogICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UpCiB7CiAgICAgQVNTRVJUKGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZS5pc051bGwo
KSk7CiAKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAg
Y29udGludWVEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ3JlZGVudGlhbCgpKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7
CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIGlmIChjaGFsbGVuZ2UgIT0g
ZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNv
bnN0IEF1dGhlbnRpY2EKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewog
ICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQt
Pm1fY3VycmVudFdlYkNoYWxsZW5nZSkKQEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAg
ICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+
bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQpAQCAtMTE5NCwxNyArMTE5NCwxNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbgogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFs
bGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgYm9vbCB3YWl0aW5nVG9TZW5kUmVxdWVz
dChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorc3RhdGljIGJvb2wgd2FpdGluZ1RvU2VuZFJlcXVl
c3QoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBj
aGVjayBmb3IgZC0+bV9zb3VwUmVxdWVzdCBiZWNhdXNlIHRoZSByZXF1ZXN0IG1heSBoYXZlIHJh
aXNlZCBhIGZhaWx1cmUKICAgICAvLyAoZm9yIGV4YW1wbGUgaW52YWxpZCBVUkxzKS4gV2UgY2Fu
bm90ICBzaW1wbHkgY2hlY2sgZm9yIGQtPm1fc2NoZWR1bGVkRmFpbHVyZSBiZWNhdXNlCkBAIC0x
MjEyLDcgKzEyMTIsNyBAQCBzdGF0aWMgYm9vbCB3YWl0aW5nVG9TZW5kUmVxdWVzdChSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlKQogICAgIHJldHVybiBoYW5kbGUtPmdldEludGVybmFsKCktPm1fc291
cFJlcXVlc3QgJiYgIWhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9jYW5jZWxsYWJsZTsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJz
TG9hZGluZykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xv
YWRpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQogewogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxl
c3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI0MSwxMiArMTI0MSwxMiBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQog
ICAgIH0KIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKK2Jvb2wgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkK
K3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJy
b3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRh
KQogewogICAgIEFTU0VSVCghbG9hZGluZ1N5bmNocm9ub3VzUmVxdWVzdCk7CiAgICAgaWYgKGxv
YWRpbmdTeW5jaHJvbm91c1JlcXVlc3QpIC8vIEluIHByYWN0aWNlIHRoaXMgY2Fubm90IGhhcHBl
biwgYnV0IGlmIGZvciBzb21lIHJlYXNvbiBpdCBkb2VzLApAQCAtMTI1OCw3ICsxMjU4LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXgKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgdGhl
IHJlcXVlc3QgaGFzIGFscmVhZHkgZmFpbGVkLCBkbyBub3QgcnVuIHRoZSBtYWluIGxvb3AsIG9y
IGVsc2Ugd2UnbGwgYmxvY2sgaW5kZWZpbml0ZWx5LgotICAgIGlmIChoYW5kbGUtPmQtPm1fc2No
ZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKQorICAgIGlmIChoYW5kbGUtPmlzU2NoZWR1
bGVkVG9GYWlsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN5bmNMb2FkZXIucnVuKCk7CkBA
IC0xMjY2LDcgKzEyNjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogCiBzdGF0aWMgdm9p
ZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2lu
dGVyIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNf
Y2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VI
YW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEp
OwogCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpIHsKICAgICAgICAg
Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CkBAIC0xMzI3LDE0ICsx
MzI3LDE0IEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0
KiBhc3luY1Jlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgZC0+bV9jYW5jZWxsYWJsZS5n
ZXQoKSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChjbGllbnQoKSk7
CiAgICAgQVNTRVJUKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CiAgICAgY29udGlu
dWVBZnRlcldpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0KTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsKICAgICBBU1NFUlQoY2xp
ZW50KCkpOwogICAgIEFTU0VSVChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOwpAQCAt
MTM0Myw3ICsxMzQzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UoKQogCiBzdGF0aWMgZ2Jvb2xlYW4gcmVxdWVzdFRpbWVvdXRDYWxsYmFjayhncG9p
bnRlciBkYXRhKQogewotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGlj
X2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNl
SGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihkYXRh
KTsKICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VF
cnJvcjo6dGltZW91dEVycm9yKGhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9maXJzdFJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkpKTsKICAgICBoYW5kbGUtPmNhbmNlbCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IDUzYzkyOGY0Nzk3NzYyZDE4MDU2YmU1NjI3ZWZjMWI4ZWYxNGEyYjMuLjE5
MWM4NTA4ODk0MjdjODRhMGE2MjU3YWQxNmM1MDQ0M2Q1NWMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCkBAIC03NSw3ICs3NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Np
b24+IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRm9yU291cFNlc3Npb24oU291CiAKIHN0YXRp
YyB2b2lkIGF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVz
c2FnZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcp
CiB7Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhh
bmRsZSIpKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0
aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVD
VChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBoYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291cEF1dGgsIHJldHJ5
aW5nLCBoYW5kbGUuZ2V0KCkpKTsKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgYXV0aGVu
dGljYXRlQ2FsbGJhY2soU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIHN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydGVk
Q2FsbGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBTb2Nr
ZXQqLCBncG9pbnRlcikKIHsKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0
YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qoc291
cE1lc3NhZ2UpLCAiaGFuZGxlIikpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+
IGhhbmRsZSA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGdfb2JqZWN0X2dl
dF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIpKTsKICAgICBpZiAoIWhhbmRs
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGhhbmRsZS0+ZGlkU3RhcnRSZXF1ZXN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRs
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhh
bmRsZVdpbi5jcHAKaW5kZXggYTFhNmQ1MTk1MmYzMjFjZWQ0MDRjNjVjZDc3ZmRiMmZkMWI3NmMx
Ni4uZDNjYjQ4MjMyMDg0YzJlYmNhZWMxODA0Y2ZlODZhNGE2MWJkOGJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxl
V2luLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgaW5saW5lIEhJTlRFUk5FVCBjcmVhdGVJ
bnRlcm5ldEhhbmRsZShjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBhc3luYwogICAgIEhJ
TlRFUk5FVCBpbnRlcm5ldEhhbmRsZSA9IEludGVybmV0T3BlblcodXNlckFnZW50U3RyaW5nLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBJTlRFUk5FVF9PUEVOX1RZUEVf
UFJFQ09ORklHLCAwLCAwLCBhc3luY2hyb25vdXMgPyBJTlRFUk5FVF9GTEFHX0FTWU5DIDogMCk7
CiAKICAgICBpZiAoYXN5bmNocm9ub3VzKQotICAgICAgICBJbnRlcm5ldFNldFN0YXR1c0NhbGxi
YWNrKGludGVybmV0SGFuZGxlLCAmUmVzb3VyY2VIYW5kbGU6OmludGVybmV0U3RhdHVzQ2FsbGJh
Y2spOworICAgICAgICBJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrKGludGVybmV0SGFuZGxlLCAm
TmV0d29ya1Jlc291cmNlSGFuZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNrKTsKIAogICAgIHJl
dHVybiBpbnRlcm5ldEhhbmRsZTsKIH0KQEAgLTEzNSwyNiArMTM1LDI2IEBAIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKIH0KIAotUmVzb3VyY2VI
YW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCitOZXR3b3JrUmVzb3VyY2VIYW5kbGU6On5OZXR3b3Jr
UmVzb3VyY2VIYW5kbGUoKQogewogfQogCiBzdGF0aWMgdm9pZCBjYWxsT25SZWRpcmVjdCh2b2lk
KiBjb250ZXh0KQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxS
ZXNvdXJjZUhhbmRsZSo+KGNvbnRleHQpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oY29udGV4dCk7CiAgICAg
aGFuZGxlLT5vblJlZGlyZWN0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGNhbGxPblJlcXVlc3RDb21w
bGV0ZSh2b2lkKiBjb250ZXh0KQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0
aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnRleHQpOworICAgIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oY29udGV4
dCk7CiAgICAgaGFuZGxlLT5vblJlcXVlc3RDb21wbGV0ZSgpOwogfQogCi12b2lkIFJlc291cmNl
SGFuZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNrKEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSwg
RFdPUkRfUFRSIGNvbnRleHQsIERXT1JEIGludGVybmV0U3RhdHVzLAordm9pZCBOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmludGVybmV0U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVUIGludGVybmV0SGFu
ZGxlLCBEV09SRF9QVFIgY29udGV4dCwgRFdPUkQgaW50ZXJuZXRTdGF0dXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCBzdGF0dXNJ
bmZvcm1hdGlvbiwgRFdPUkQgc3RhdHVzSW5mb3JtYXRpb25MZW5ndGgpCiB7Ci0gICAgUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb250
ZXh0KTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oY29udGV4dCk7CiAKICAgICBzd2l0Y2ggKGludGVy
bmV0U3RhdHVzKSB7CiAgICAgY2FzZSBJTlRFUk5FVF9TVEFUVVNfUkVESVJFQ1Q6CkBAIC0xNzEs
NyArMTcxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aW50ZXJuZXRTdGF0dXNDYWxsYmFjayhI
SU5URVJORVQgaW50ZXJuZXRIYW5kbGUsIERXT1JEX1BUUgogICAgIH0KIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6b25SZWRpcmVjdCgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6b25S
ZWRpcmVjdCgpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBmaXJzdFJlcXVl
c3QoKTsKICAgICBuZXdSZXF1ZXN0LnNldFVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCBkLT5tX3Jl
ZGlyZWN0VXJsKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6b25S
ZWRpcmVjdCgpCiAgICAgICAgIHJlc291cmNlSGFuZGxlQ2xpZW50LT53aWxsU2VuZFJlcXVlc3Qo
dGhpcywgbmV3UmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpv
blJlcXVlc3RDb21wbGV0ZSgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6b25SZXF1ZXN0
Q29tcGxldGUoKQogewogICAgIGlmICghZC0+bV9pbnRlcm5ldEhhbmRsZSkgeyAvLyAwIGlmIGNh
bmNlbGVkLgogICAgICAgICBkZXJlZigpOyAvLyBiYWxhbmNlcyByZWYgaW4gc3RhcnQKQEAgLTI2
NCw3ICsyNjQsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpvblJlcXVlc3RDb21wbGV0ZSgpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCitib29s
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogewogICAgIGlmIChmaXJzdFJlcXVlc3Qo
KS51cmwoKS5pc0xvY2FsRmlsZSgpIHx8IGZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNE
YXRhKCkpIHsKICAgICAgICAgcmVmKCk7IC8vIGJhbGFuY2VkIGJ5IGRlcmVmIGluIGZpbGVMb2Fk
VGltZXIKQEAgLTM1Myw5ICszNTMsOSBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGltZXIo
VGltZXI8UmVzb3VyY2VIYW5kbGU+KikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpmaWxl
TG9hZFRpbWVyKFRpbWVyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4qKQogewotICAgIFJlZlB0cjxS
ZXNvdXJjZUhhbmRsZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU+IHByb3RlY3Rvcih0aGlzKTsKICAgICBkZXJlZigpOyAvLyBiYWxhbmNlcyByZWYg
aW4gc3RhcnQKIAogICAgIGlmIChmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgp
KSB7CkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZmlsZUxvYWRUaW1l
cihUaW1lcjxSZXNvdXJjZUhhbmRsZT4qKQogICAgIGNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5n
KHRoaXMsIDApOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAgaWYgKGQtPm1fcmVxdWVzdEhhbmRs
ZSkgewogICAgICAgICBkLT5tX2ludGVybmV0SGFuZGxlID0gMDsKQEAgLTQxMywxOCArNDEzLDE4
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgICAgIGQtPm1fZmlsZUxvYWRU
aW1lci5zdG9wKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291
cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8
Y2hhcj4mIGRhdGEpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxz
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3Rv
cjxjaGFyPiYgZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RvcmVkQ3JlZGVudGlhbHMpOwog
CiAgICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyIHN5bmNMb2FkZXIoZXJyb3IsIHJlc3BvbnNl
LCBkYXRhLCByZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7Ci0gICAgUmVzb3VyY2VIYW5kbGUgaGFu
ZGxlKGNvbnRleHQsIHJlcXVlc3QsICZzeW5jTG9hZGVyLCB0cnVlLCBmYWxzZSk7CisgICAgTmV0
d29ya1Jlc291cmNlSGFuZGxlIGhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCAmc3luY0xvYWRlciwg
dHJ1ZSwgZmFsc2UpOwogCiAgICAgaGFuZGxlLnNldFN5bmNocm9ub3VzSW50ZXJuZXRIYW5kbGUo
c3luY0xvYWRlci5pbnRlcm5ldEhhbmRsZSgpKTsKICAgICBoYW5kbGUuc3RhcnQoKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0U3luY2hyb25vdXNJbnRlcm5ldEhhbmRsZShISU5URVJO
RVQgaW50ZXJuZXRIYW5kbGUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0U3luY2hy
b25vdXNJbnRlcm5ldEhhbmRsZShISU5URVJORVQgaW50ZXJuZXRIYW5kbGUpCiB7CiAgICAgZC0+
bV9pbnRlcm5ldEhhbmRsZSA9IGludGVybmV0SGFuZGxlOwogICAgIGQtPm1fbG9hZFN5bmNocm9u
b3VzbHkgPSB0cnVlOwpAQCAtNDM1LDEyICs0MzUsMTIgQEAgdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5k
bGU6OmxvYWRzQmxvY2tlZCgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9j
a2VkKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDZlZGMwNzBkNGE5YjNl
NWE3ZjliNTBlYWM2NDRlM2UzMzE2Y2U5OC4uOGUzMDhhYTBmNzE3ODA2ZTZiM2UzMTRmMDAwZWQ3
NTFjMDg0MDI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTAyOSw3
ICsxMDI5LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklm
TmVjZXNzYXJ5KCkKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKCFXZWJLaXRMaW5rZWRP
bk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9DT05URU5UX1NOSUZGSU5HX0ZP
Ul9GSUxFX1VSTFMpKQotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6Zm9yY2VDb250ZW50U25pZmZp
bmcoKTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpmb3JjZUNvbnRlbnRTbmlmZmlu
ZygpOwogI2VuZGlmCiAKICNpZiBVU0UoR0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCAxYmI4
MzUyYjRhNTVhZTE1NDgxM2ExMmExY2I3MTE5NGQ5YmFhMWQxLi5hNjZjZDM4OThiY2MzMTE3MjAz
NjdkZGZlZGY3ODk0ZTY3Y2RkMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjQsMTIgKzEy
NCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJv
cnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiB7Ci0gICAgUmVzb3VyY2VIYW5kbGU6OnNldElnbm9y
ZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c2V0SWdub3JlU1NMRXJyb3JzKGlnbm9yZVRMU0Vycm9ycyk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBDZXJ0aWZp
Y2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIFJl
c291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShob3N0LCBjZXJ0aWZpY2F0ZUluZm8u
Y2VydGlmaWNhdGUoKSk7CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0
aWZpY2F0ZShob3N0LCBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKHVpbnQzMl90IGNhY2hlc1Rv
Q2xlYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJv
Y2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NT
b3VwLmNwcAppbmRleCAwYWFhMzVjYjVhZDgyZjM3OWQ2NTYxMzk1ZmIyZTg0YjM0NTA4MTU2Li5k
YjI4YTk0OWRkNGRkODFhZjg4ZWFlNGEwODlmYTdkMWQ5MzA2NjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTE4OSwxMyAr
MTg5LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogdm9pZCBXZWJQ
cm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiB7CiAgICAg
QVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOworICAgIFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGlnbm9yZVRMU0Vycm9ycyk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25z
dCBTdHJpbmcmIGhvc3QpCiB7CiAgICAgQVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0g
ICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGhvc3QsIGNl
cnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKKyAgICBXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGhvc3QsIGNlcnRpZmljYXRlSW5mby5jZXJ0
aWZpY2F0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239204</attachid>
            <date>2014-10-03 07:20:42 -0700</date>
            <delta_ts>2014-10-03 09:01:11 -0700</delta_ts>
            <desc>Updated CURL binding</desc>
            <filename>bug-137005-20141003162042.patch</filename>
            <type>text/plain</type>
            <size>128992</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiZThiZjRjMmY1N2M2
OTMyOGE4NDc2OTBjOGFlOWEzMDk5NWNmNi4uMGQ3ODE2YmQ5Yzc2M2NlZGU3Mjg0ZDQwZTkxMjU1
MWZhODJiZWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNCBAQAorMjAxNC0wOS0yMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFNwbGl0
IFJlc291cmNlSGFuZGxlIGluIGFuIGFic3RyYWN0IGNsYXNzIGFuZCBhIG5ldHdvcmstc3BlY2lm
aWMgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNzAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVkIGFsbCBuZXR3b3JrIHNwZWNpZmljIGNvZGUgZnJvbSBSZXNvdXJjZUhhbmRsZSB0byBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGUuCisgICAgICAgIFRoaXMgdHJpZ2dlcnMgcmVuYW1pbmcgaW4g
dGhlIG5ldHdvcmsgY29kZSBmb3IgYWxsIGJpbmRpbmdzLgorICAgICAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCBBUEkgcmVtYWlucyB1bmNoYW5nZWQuIAorCisgICAgICAgIEFkZGVkIG5ldyBtZXRo
b2QgaXNTY2hlZHVsZWRUb0ZhaWwgdG8gYWJzdHJhY3Qgc29tZSBSZXNvdXJjZUhhbmRsZSBjb2Rl
LgorICAgICAgICBUaGlzIHBhdGNoIHByZXBhcmVzIEJsb2JSZXNvdXJjZUhhbmRsZSBtaWdyYXRp
b24gZnJvbSBOZXR3b3JrUmVzb3VyY2VIYW5kbGUgdG8gUmVzb3VyY2VIYW5kbGUuCisKKyAgICAg
ICAgRXhpc3RpbmcgdGVzdHMgc2hvdWxkIGNvdmVyIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWU6OmNhblJ1bk1vZGFsTm93KTogUmVzb3VyY2VIYW5kbGUgdG8gTmV0d29ya1Jl
c291cmNlSGFuZGxlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291
cmNlSGFuZGxlKTogRGl0dG8uIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
RmFpbHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmlzU2No
ZWR1bGVkVG9GYWlsKTogSW5zZXJ0ZWQgdG8gbWluaW1pemUgY29kZSBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZpcnN0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsYXN0SFRUUE1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Omhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2xlYXJBdXRo
ZW50aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNo
b3VsZENvbnRlbnRTbmlmZik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOiBBZGRlZCBuZXcgTmV0d29ya1Jlc291cmNlSGFu
ZGxlIGNsYXNzIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oOiBSZXNvdXJjZUhhbmRsZSB0byBOZXR3b3JrUmVzb3VyY2VIYW5k
bGUuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhh
bmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0b3JhZ2VTZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VDb25u
ZWN0aW9uRm9yRG93bmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlI
VFRQU0NlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6fk5ldHdvcmtSZXNv
dXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0Fu
eUhUVFBTQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZv
cm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENoYWxsZW5nZVJlamVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUmVz
b3VyY2VIYW5kbGVJT1MubW06IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNV
UkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWwp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERl
ZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpz
Y2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjptYWtlRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzeW5jaHJvbm91
c0xvYWRSdW5Mb29wTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0Rh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDb2xsZWN0
c1RpbWluZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbTogRGl0dG8uCisgICAgICAg
ICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZl
UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6On5OZXR3b3JrUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpj
YW5jZWxsZWRPckNsaWVudGxlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
SGFuZGxlOjplbnN1cmVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdvdEhlYWRlcnND
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc3RhcnRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnNob3VsZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZG9SZWRpcmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZWRpcmVjdFNraXBDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjp3cm90ZUJv
ZHlEYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVVuaWdub3JlZFRMU0Vycm9ycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdHJlYW1Qb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNv
dXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVT
b3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNlbmRQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0
aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEln
bm9yZVNTTEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNp
c3RlbnRTdG9yZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6Y29udGludWVEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVz
dFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OndhaXRpbmdUb1NlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVxdWVzdFRpbWVvdXRDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6YXV0aGVudGljYXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6cmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93
aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUludGVybmV0SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25SZWRp
cmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25SZXF1ZXN0Q29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6b25SZWRpcmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Om9uUmVxdWVzdENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpmaWxlTG9hZFRpbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c2V0U3luY2hyb25vdXNJbnRlcm5ldEhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyk6CisKIDIwMTQtMDktMzAg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQ1NTIEpJ
VDogRW5hYmxlIG11bHRpcGxlIHN0YWNrIHJlZmVyZW5jZXMgYWxsb2NhdGlvbiBieSBhbGxvY2F0
ZVVuaW5pdGlhbGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4ZjkyNWQxMTUxNmQxMzIxMThjY2Mx
ZDQxZWIwMzQxOWM1Yjk2ZjQzLi5kYWE0MmI0ZDBjMmUzNGUyYmYyNGQ1NjkxODI2NGQ3Y2Q2OWY5
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDktMjMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBTcGxpdCBS
ZXNvdXJjZUhhbmRsZSBpbiBhbiBhYnN0cmFjdCBjbGFzcyBhbmQgYSBuZXR3b3JrLXNwZWNpZmlj
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzcwMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKTogUmVuYW1lZCBSZXNvdXJjZUhhbmRsZSB0
byBOZXR3b3JrUmVzb3VyY2VIYW5kbGUuCisKIDIwMTQtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBF
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWMxMzQ0NzVlYTU3M2UwNjMwY2U4OGE0Yzg1NTNmMTEzYzIz
ZWQ0YS4uYTUyY2UyMGEzODc0MjJmNWQyMGQwNzllOTUzZTU5NDg5OTA5NGIzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA5LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgU3BsaXQgUmVzb3VyY2VIYW5kbGUgaW4gYW4g
YWJzdHJhY3QgY2xhc3MgYW5kIGEgbmV0d29yay1zcGVjaWZpYyBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpzZXRJZ25vcmVUTFNFcnJvcnMpOiBSZW5hbWVkIFJlc291cmNlSGFuZGxlIHRvIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6IERpdHRvCisgICAgICAgICogV2ViUHJvY2Vz
cy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
c2V0SWdub3JlVExTRXJyb3JzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6IERpdHRvLgorCiAyMDE0LTA5
LTMwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF0gUmVuYW1lIFRFU1RfVEhFTUVfRElSIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDk0M2MzMTE5NzkyZDEyZmY3ZTQxNjczZjk4ZGM5ZDMwZmY0YmRiMTMuLjU4ODYzZTUwZjY0N2Ix
YThhNzNiMjdiODZlMjg0MTIxMWMxMWFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zODIs
MTEgKzM4Miw5IEBAIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMUV2CiBfX1pON1dlYkNv
cmUxNFJlc291cmNlQnVmZmVyRDJFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEyZmly
c3RSZXF1ZXN0RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxNnNldERlZmVyc0xvYWRp
bmdFYgotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTIwZm9yY2VDb250ZW50U25pZmZpbmdF
dgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTIzY29udGludWVXaWxsU2VuZFJlcXVlc3RF
UktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyNWxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHlFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU18xNVJl
c291cmNlUmVxdWVzdEVOU18xN1N0b3JlZENyZWRlbnRpYWxzRVJOU18xM1Jlc291cmNlRXJyb3JF
Uk5TXzE2UmVzb3VyY2VSZXNwb25zZUVSTjNXVEY2VmVjdG9ySWNMbTBFTlNCXzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjZjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZUV2Ci1fX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjZzeW5jaHJvbm91c0xv
YWRSdW5Mb29wTW9kZUV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlNDVjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VFYgogX19aTjdXZWJDb3JlMTRSZXNv
dXJjZUhhbmRsZTZjcmVhdGVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU18xNVJlc291cmNl
UmVxdWVzdEVQTlNfMjBSZXNvdXJjZUhhbmRsZUNsaWVudEViYgogX19aTjdXZWJDb3JlMTRSZXNv
dXJjZUxvYWRlcjE0Y2FuY2VsbGVkRXJyb3JFdgpAQCAtOTA2LDYgKzkwNCw4IEBAIF9fWk43V2Vi
Q29yZTIxRGlzcGxheVJlZnJlc2hNb25pdG9yRDJFdgogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVz
c3VyZUhhbmRsZXIxMlJlbGllZkxvZ2dlcjE2c19sb2dnaW5nRW5hYmxlZEUKIF9fWk43V2ViQ29y
ZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMTNyZWxlYXNlTWVtb3J5RWIKIF9fWk43V2ViQ29yZTIx
TWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgorX19aTjdXZWJDb3JlMjFOZXR3b3JrUmVz
b3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKK19fWk43V2ViQ29yZTIxTmV0d29y
a1Jlc291cmNlSGFuZGxlMjZzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZUV2CiBfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjIxZGVmYXVsdFN0b3JhZ2VTZXNzaW9uRXYKIF9fWk43
V2ViQ29yZTIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uMjVzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
RXYKIF9fWk43V2ViQ29yZTIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uMjhjcmVhdGVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGJh
M2I3NzlhM2IyZjU3ZmRhMjZkNmZmMGIxZjI2MzM5ZTU5NGFkNWUuLmUzZmY4M2U5OGEzMmU4MWE5
MjMwNWFlNjBmNTJkM2YzYzAxMTM4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTIyOCw3
ICsyMjgsNyBAQCBib29sIENocm9tZTo6Y2FuUnVuTW9kYWxOb3coKSBjb25zdAogewogICAgIC8v
IElmIGxvYWRzIGFyZSBibG9ja2VkLCB3ZSBjYW4ndCBydW4gbW9kYWwgYmVjYXVzZSB0aGUgY29u
dGVudHMKICAgICAvLyBvZiB0aGUgbW9kYWwgZGlhbG9nIHdpbGwgbmV2ZXIgc2hvdyB1cCEKLSAg
ICByZXR1cm4gY2FuUnVuTW9kYWwoKSAmJiAhUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgp
CisgICAgcmV0dXJuIGNhblJ1bk1vZGFsKCkgJiYgIU5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9h
ZHNCbG9ja2VkKCkKICAgICAgICAgICAgJiYgY2FuUnVuTW9kYWxJZkR1cmluZ1BhZ2VEaXNtaXNz
YWwobV9wYWdlLCBDaHJvbWVDbGllbnQ6OkhUTUxEaWFsb2csIFN0cmluZygpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCmluZGV4IGM0OTRlNTJjZGE4YjI3MDAzZGNhNTNmNTU1OTI5ZmJjNGMyZGZmYjkuLmUy
MGYzMGRiMzkwNGM0OTc5Mjk1ZmI4NmEzOTgxZGE4NDlkNzU4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlcwogfQogCiBCbG9iUmVzb3Vy
Y2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9v
bCBhc3luYykKLSAgICA6IFJlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwgZmFsc2Us
IGZhbHNlKQorICAgIDogTmV0d29ya1Jlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwg
ZmFsc2UsIGZhbHNlKQogICAgICwgbV9ibG9iRGF0YShibG9iRGF0YSkKICAgICAsIG1fYXN5bmMo
YXN5bmMpCiAgICAgLCBtX2Vycm9yQ29kZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKaW5kZXggNzMyZmY3OTA0NTM5ZDRk
OGY4MDRjMjdlYTA0NjY4MzZmMGE0OWIxZC4uYTEyM2ZlZDBiMjZjYjY4Yzg4ZGU4ZGZmYTY2ZjVh
YTYwZGFjNzMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZXNvdXJjZUhhbmRsZS5oCkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IEJsb2JEYXRhSXRlbTsK
IAotY2xhc3MgQmxvYlJlc291cmNlSGFuZGxlIGZpbmFsIDogcHVibGljIEZpbGVTdHJlYW1DbGll
bnQsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZSAgeworLy8gRklYTUU6IEJsb2JSZXNvdXJjZUhhbmRs
ZSBzaG91bGQgZGVyaXZlIGZyb20gUmVzb3VyY2VIYW5kbGUKK2NsYXNzIEJsb2JSZXNvdXJjZUhh
bmRsZSBmaW5hbCA6IHB1YmxpYyBGaWxlU3RyZWFtQ2xpZW50LCBwdWJsaWMgTmV0d29ya1Jlc291
cmNlSGFuZGxlICB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYlJlc291cmNl
SGFuZGxlPiBjcmVhdGVBc3luYyhCbG9iRGF0YSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJl
c291cmNlSGFuZGxlQ2xpZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggMDFjN2Y3MmMyMjFmMTIzZDk3ODJhMjUw
MzA1ZWJmZjIxZmNiZTM2ZC4uYjFhMWE0ZDBjMzQzYzc0MTliZjAxN2I3N2MwNjgzMDYzYTkyOTYx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKQEAgLTcwLDggKzcwLDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJC
dWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2MKICAgICBi
dWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCgpLmFkZChwcm90b2NvbCwg
bG9hZGVyKTsKIH0KIAotUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
SGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250
ZW50U25pZmYpCi0gICAgOiBkKGFkb3B0UHRyKG5ldyBSZXNvdXJjZUhhbmRsZUludGVybmFsKHRo
aXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVu
dFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSkpKQorTmV0d29y
a1Jlc291cmNlSGFuZGxlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVD
bGllbnQqIGNsaWVudCwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZikKKyAgICA6IFJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudCkKKyAgICAsIGQoYWRvcHRQ
dHIobmV3IFJlc291cmNlSGFuZGxlSW50ZXJuYWwodGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xp
ZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNu
aWZmVVJMKHJlcXVlc3QudXJsKCkpKSkpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFs
aWQoKSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpAQCAt
OTEsOSArOTIsOSBAQCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIGlmIChwcm90b2NvbE1h
cEl0ZW0gIT0gYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHByb3RvY29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAot
ICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJj
ZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENv
bnRlbnRTbmlmZikpKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBuZXdIYW5k
bGUoYWRvcHRSZWYobmV3IE5ldHdvcmtSZXNvdXJjZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBj
bGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKIAotICAgIGlmIChu
ZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKQorICAgIGlm
IChuZXdIYW5kbGUtPmlzU2NoZWR1bGVkVG9GYWlsKCkpCiAgICAgICAgIHJldHVybiBuZXdIYW5k
bGUucmVsZWFzZSgpOwogCiAgICAgaWYgKG5ld0hhbmRsZS0+c3RhcnQoKSkKQEAgLTEwMiwxMyAr
MTAzLDE4IEBAIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IFJlc291cmNlSGFuZGxlOjpjcmVh
dGUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlRmFpbHVyZShGYWlsdXJlVHlwZSB0eXBlKQorYm9v
bCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmlzU2NoZWR1bGVkVG9GYWlsKCkKK3sKKyAgICByZXR1
cm4gZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmU7Cit9CisKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZUZhaWx1cmUoRmFpbHVyZVR5cGUgdHlwZSkKIHsK
ICAgICBkLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlID0gdHlwZTsKICAgICBkLT5tX2ZhaWx1cmVU
aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVU
aW1lckZpcmVkKFRpbWVyPFJlc291cmNlSGFuZGxlPiYpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6ZmFpbHVyZVRpbWVyRmlyZWQoVGltZXI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiYpCiB7
CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM5LDYwICsxNDUsNjAg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb250ZXh0LCByZXF1ZXN0LCBzdG9y
ZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb250ZXh0LCByZXF1
ZXN0LCBzdG9yZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0KIAogUmVz
b3VyY2VIYW5kbGVDbGllbnQqIFJlc291cmNlSGFuZGxlOjpjbGllbnQoKSBjb25zdAogewotICAg
IHJldHVybiBkLT5tX2NsaWVudDsKKyAgICByZXR1cm4gbV9jbGllbnQ7CiB9CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnNldENsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQogewot
ICAgIGQtPm1fY2xpZW50ID0gY2xpZW50OworICAgIG1fY2xpZW50ID0gY2xpZW50OwogfQogCiAj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQogLy8g
UmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxh
dGZvcm1zIHlldC4KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKICNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KICNlbmRpZgogI2VuZGlm
CiAKLVJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmZpcnN0UmVxdWVzdCgpCitSZXNv
dXJjZVJlcXVlc3QmIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Zmlyc3RSZXF1ZXN0KCkKIHsKICAg
ICByZXR1cm4gZC0+bV9maXJzdFJlcXVlc3Q7CiB9CiAKLU5ldHdvcmtpbmdDb250ZXh0KiBSZXNv
dXJjZUhhbmRsZTo6Y29udGV4dCgpIGNvbnN0CitOZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1Jl
c291cmNlSGFuZGxlOjpjb250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jb250ZXh0
LmdldCgpOwogfQogCi1jb25zdCBTdHJpbmcmIFJlc291cmNlSGFuZGxlOjpsYXN0SFRUUE1ldGhv
ZCgpIGNvbnN0Citjb25zdCBTdHJpbmcmIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bGFzdEhUVFBN
ZXRob2QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2xhc3RIVFRQTWV0aG9kOwogfQogCi1i
b29sIFJlc291cmNlSGFuZGxlOjpoYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0Citi
b29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBj
b25zdAogewogICAgIHJldHVybiAhZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlLmlzTnVsbCgpOwog
fQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRpY2F0aW9uKCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRpY2F0aW9uKCkKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgPSBuaWw7CkBAIC0yMDAsMTIg
KzIwNiwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRpY2F0aW9uKCkKICAg
ICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UubnVsbGlmeSgpOwogfQogICAKLWJvb2wgUmVzb3Vy
Y2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZigpIGNvbnN0Citib29sIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9z
aG91bGRDb250ZW50U25pZmY7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRl
bnRTbmlmZlVSTChjb25zdCBVUkwmIHVybCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpz
aG91bGRDb250ZW50U25pZmZVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKHNob3VsZEZvcmNlQ29udGVudFNuaWZmaW5nKQpAQCAtMjE1LDEyICsyMjEs
MTIgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKGNvbnN0IFVS
TCYgdXJsKQogICAgIHJldHVybiAhdXJsLnByb3RvY29sSXMoImZpbGUiKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Zm9yY2VDb250ZW50U25pZmZpbmcoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW5nKCkKIHsKICAgICBzaG91bGRGb3JjZUNvbnRl
bnRTbmlmZmluZyA9IHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldERlZmVyc0xv
YWRpbmcoYm9vbCBkZWZlcnMpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJz
TG9hZGluZyhib29sIGRlZmVycykKIHsKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBzZXRE
ZWZlcnNMb2FkaW5nKCVzKSIsIHRoaXMsIGRlZmVycyA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5k
ZXggZTIyZGZkOWM5OTZkODJmYjlmOTVlMzY5NjRjN2U0NWI3MzgyYzg2OC4uN2YyMzE0M2U5ZTcz
NGZjNzA3Nzc3ZjVhODU4MzhlZDYzOTM2Nzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZVR5cGVzLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIApAQCAtOTEsNiArOTIsNyBAQCBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKQEAgLTEwMiwxNiArMTA0LDgxIEBAIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRpbWVyOwogCi1jbGFz
cyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPgorY2xh
c3MgUmVzb3VyY2VIYW5kbGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiAgewor
ICAgIC8vIFRvIGdldCBhY2Nlc3MgdG8gc3RhcnQgYW5kIHBsYXRmb3JtIHByb3RlY3RlZCByb3V0
aW5lcy4KKyAgICBmcmllbmQgTmV0d29ya1Jlc291cmNlSGFuZGxlOworcHVibGljOgorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNs
aWVudCosIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFs
cywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
OworCisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25z
dHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNs
aWVudCogY2xpZW50KTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rv
cihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGluQ29uc3RydWN0b3IpOworCisg
ICAgdHlwZWRlZiB2b2lkICgqQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKShOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJj
ZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CisgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm90b2NvbCwgQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKTsKKworICAgIHZpcnR1YWwg
flJlc291cmNlSGFuZGxlKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5n
KGJvb2wpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9OworICAgIHZpcnR1YWwg
dm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHsgfTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JikgeyB9OworCisgICAgdmlydHVhbCBSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVzdCgp
IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9OworICAgIC8vIFRoZSBjbGllbnQgbWF5IGJlIDAs
IGluIHdoaWNoIGNhc2Ugbm8gY2FsbGJhY2tzIHdpbGwgYmUgbWFkZS4KKyAgICB2aXJ0dWFsIFJl
c291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJBdXRoZW50aWNhdGlvbigpIHsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBh
aXImKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIm
KSB7IH07CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBNb3ZlIG1vc3Qgb2YgdGhlc2UgbmV0d29y
ay1zcGVjaWZpYyBtZXRob2RzIHRvIE5ldHdvcmtSZXNvdXJjZUhhbmRsZQorI2lmIFVTRShDVVJM
KSB8fCBVU0UoU09VUCkKKyAgICB2aXJ0dWFsIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGdldElu
dGVybmFsKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyNpZiBVU0UoQ0ZORVRXT1JL
KQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJl
Zj4gcmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpIHsgcmV0dXJuIG51bGxwdHI7IH07Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH07CisjZW5kaWYKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8g
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoKS4KKyNpZiBVU0Uo
Q0ZORVRXT1JLKQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZVdpbGxD
YWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIHsgfTsKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICop
IHsgfTsKKyNlbmRpZgorCisKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNL
KQorICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKCkuCisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShib29sKSB7IH07CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIFJlc291cmNlSGFu
ZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCAmZmlyc3RSZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNs
aWVudCAqY2xpZW50KTogbV9maXJzdFJlcXVlc3QoZmlyc3RSZXF1ZXN0KSwgbV9jbGllbnQoY2xp
ZW50KSB7IH07IAorICAgIHZpcnR1YWwgYm9vbCBpc1NjaGVkdWxlZFRvRmFpbCgpIHtyZXR1cm4g
ZmFsc2U7fTsKKyAgICAKKyAgICBSZXNvdXJjZVJlcXVlc3QgbV9maXJzdFJlcXVlc3Q7CisgICAg
UmVzb3VyY2VIYW5kbGVDbGllbnQgKm1fY2xpZW50OworfTsKKworLy8gRklYTUU6IG1vdmUgTmV0
d29ya1Jlc291cmNlSGFuZGxlIGluIGl0cyBvd24gaGVhZGVyIGZpbGUKK2NsYXNzIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZQogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgLCBwdWJs
aWMgQXV0aGVudGljYXRpb25DbGllbnQKICNlbmRpZgogICAgIHsKKyAgICBmcmllbmQgUmVzb3Vy
Y2VIYW5kbGU7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29s
IHNob3VsZENvbnRlbnRTbmlmZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNw
b25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5SZXNvdXJjZUhhbmRsZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfk5ldHdvcmtS
ZXNvdXJjZUhhbmRsZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUksp
CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xODMsNyArMjUwLDcgQEAgcHVibGlj
OgogCiAjaWYgVVNFKFdJTklORVQpCiAgICAgdm9pZCBzZXRTeW5jaHJvbm91c0ludGVybmV0SGFu
ZGxlKEhJTlRFUk5FVCk7Ci0gICAgdm9pZCBmaWxlTG9hZFRpbWVyKFRpbWVyPFJlc291cmNlSGFu
ZGxlPiopOworICAgIHZvaWQgZmlsZUxvYWRUaW1lcihUaW1lcjxOZXR3b3JrUmVzb3VyY2VIYW5k
bGU+Kik7CiAgICAgdm9pZCBvblJlZGlyZWN0KCk7CiAgICAgYm9vbCBvblJlcXVlc3RDb21wbGV0
ZSgpOwogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGludGVybmV0U3RhdHVzQ2FsbGJhY2soSElO
VEVSTkVULCBEV09SRF9QVFIsIERXT1JELCBMUFZPSUQsIERXT1JEKTsKQEAgLTIxMywxMCArMjgw
LDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKIAotICAgIC8vIFRoZSBjbGllbnQgbWF5
IGJlIDAsIGluIHdoaWNoIGNhc2Ugbm8gY2FsbGJhY2tzIHdpbGwgYmUgbWFkZS4KLSAgICBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsKLQogICAgIC8vIENhbGxlZCBpbiBy
ZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoKS4K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogCkBAIC0yNDEsNyArMzA0LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdCYgZmlyc3RSZXF1ZXN0KCk7CiAgICAgY29uc3QgU3Ry
aW5nJiBsYXN0SFRUUE1ldGhvZCgpIGNvbnN0OwogCi0gICAgdm9pZCBmYWlsdXJlVGltZXJGaXJl
ZChUaW1lcjxSZXNvdXJjZUhhbmRsZT4mKTsKKyAgICB2b2lkIGZhaWx1cmVUaW1lckZpcmVkKFRp
bWVyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4mKTsKIAogICAgIE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CiAKQEAgLTI1NSwxNSArMzE4LDEzIEBAIHB1YmxpYzoKICNpZiBQTEFU
Rk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCiAgICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAjZW5kaWYKK3Byb3RlY3RlZDoKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUo
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRs
ZUNsaWVudCosIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwog
Ci0gICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1
Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCogY2xpZW50KTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihj
b25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGluQ29uc3RydWN0b3IpOworICAgIGJv
b2wgaXNTY2hlZHVsZWRUb0ZhaWwoKTsKIAotICAgIHR5cGVkZWYgdm9pZCAoKkJ1aWx0aW5TeW5j
aHJvbm91c0xvYWRlcikoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBW
ZWN0b3I8Y2hhcj4mIGRhdGEpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpblN5bmNo
cm9ub3VzTG9hZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5TeW5jaHJv
bm91c0xvYWRlcik7Ci0KLXByb3RlY3RlZDoKLSAgICBSZXNvdXJjZUhhbmRsZShOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50Kiwg
Ym9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CisgICAgYm9vbCBz
dGFydCgpOworICAgIHN0YXRpYyB2b2lkIHBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRl
bnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYg
ZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBGYWlsdXJlVHlwZSB7CkBAIC0yNzYsOCArMzM3
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2NoZWR1bGVGYWlsdXJlKEZhaWx1cmVUeXBlKTsK
IAotICAgIGJvb2wgc3RhcnQoKTsKLSAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBW
ZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9u
Q2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhl
bnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmlu
ZGV4IGVmYzVjN2M3ZTY1ZGZkMDUxZDY1ODRjZDg3ODgxZGI1MjM2ZDc3NjAuLjM5OTdlMDk3YTY4
NGYyNWVmYjJmMDE5ZDhmYjg1MTEwNzJhYTZkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC03MSwx
MCArNzEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUmVzb3VyY2VIYW5k
bGVDbGllbnQ7CiAKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIHJlbmFtZWQgTmV0d29ya1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwgYW5kIG1hZGUgY29uc2lzdGVudCB3aXRoIFJlc291cmNlSGFuZGxl
IG5ldyBmaWVsZHMgKGNsaWVudCBhbmQgZmlyc3RSZXF1ZXN0KQogICAgIGNsYXNzIFJlc291cmNl
SGFuZGxlSW50ZXJuYWwgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUhh
bmRsZUludGVybmFsKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAg
ICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKFJlc291cmNlSGFuZGxlKiBsb2FkZXIsIE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91
bGRDb250ZW50U25pZmYpCisgICAgICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwoTmV0d29ya1Jl
c291cmNlSGFuZGxlKiBsb2FkZXIsIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50ICpjbGllbnQsIGJv
b2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCiAgICAgICAgICAgICA6
IG1fY29udGV4dChjb250ZXh0KQogICAgICAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAg
ICAgICAgICAsIG1fZmlyc3RSZXF1ZXN0KHJlcXVlc3QpCkBAIC04Niw3ICs4Nyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9jdXJyZW50UmVxdWVzdChyZXF1ZXN0KQog
I2VuZGlmCiAjaWYgVVNFKFdJTklORVQpCi0gICAgICAgICAgICAsIG1fZmlsZUxvYWRUaW1lcihs
b2FkZXIsICZSZXNvdXJjZUhhbmRsZTo6ZmlsZUxvYWRUaW1lcikKKyAgICAgICAgICAgICwgbV9m
aWxlTG9hZFRpbWVyKGxvYWRlciwgJk5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZmlsZUxvYWRUaW1l
cikKICAgICAgICAgICAgICwgbV9pbnRlcm5ldEhhbmRsZSgwKQogICAgICAgICAgICAgLCBtX2Nv
bm5lY3RIYW5kbGUoMCkKICAgICAgICAgICAgICwgbV9yZXF1ZXN0SGFuZGxlKDApCkBAIC0xMTcs
OCArMTE4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX25lZWRzU2l0
ZVNwZWNpZmljUXVpcmtzKGZhbHNlKQogICAgICAgICAgICAgLCBtX2N1cnJlbnRNYWNDaGFsbGVu
Z2UobmlsKQogI2VuZGlmCi0gICAgICAgICAgICAsIG1fc2NoZWR1bGVkRmFpbHVyZVR5cGUoUmVz
b3VyY2VIYW5kbGU6Ok5vRmFpbHVyZSkKLSAgICAgICAgICAgICwgbV9mYWlsdXJlVGltZXIobG9h
ZGVyLCAmUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZpcmVkKQorICAgICAgICAgICAgLCBt
X3NjaGVkdWxlZEZhaWx1cmVUeXBlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Tm9GYWlsdXJlKQor
ICAgICAgICAgICAgLCBtX2ZhaWx1cmVUaW1lcihsb2FkZXIsICZOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OmZhaWx1cmVUaW1lckZpcmVkKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBVUkwm
IHVybCA9IG1fZmlyc3RSZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAgbV91c2VyID0gdXJsLnVz
ZXIoKTsKQEAgLTIxOSw4ICsyMjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAog
ICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBtX2N1cnJlbnRXZWJDaGFsbGVuZ2U7Ci0g
ICAgICAgIFJlc291cmNlSGFuZGxlOjpGYWlsdXJlVHlwZSBtX3NjaGVkdWxlZEZhaWx1cmVUeXBl
OwotICAgICAgICBUaW1lcjxSZXNvdXJjZUhhbmRsZT4gbV9mYWlsdXJlVGltZXI7CisgICAgICAg
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6RmFpbHVyZVR5cGUgbV9zY2hlZHVsZWRGYWlsdXJlVHlw
ZTsKKyAgICAgICAgVGltZXI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBtX2ZhaWx1cmVUaW1lcjsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRl
eCA2YzZmZDRhMjdlNzZmMTJlNDE1YmRmNzk3ZGQ0YWY5MTg4NTJhODI4Li5hNWQ5MjYyMDM0M2Qy
MjRkZWRiY2Q3ZThhNmZhMTE2MjQ5MTA3NWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTEx
MSwxMiArMTExLDEyIEBAIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUlu
dGVybmFsKCkKICAgICB9CiB9CiAKLVJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQor
TmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFuZGxlKCkKIHsKICAgICBM
T0coTmV0d29yaywgIkNGTmV0IC0gRGVzdHJveWluZyBqb2IgJXAgKCVzKSIsIHRoaXMsIGQtPm1f
Zmlyc3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBz
Y2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlvbmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGlu
Z0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3Bl
cnRpZXMpCiB7CiAgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlz
RW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkgewogICAgICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBp
biBVUkwsIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZGVsZWdhdGUgY2Fs
bCB3b24ndCBiZSBtYWRlLgpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBi
b29sCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3BzOwogCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHNzbFByb3BzID0gYWRvcHRDRihSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoZmlyc3RSZXF1ZXN0KCkpKTsKKyAg
ICBzc2xQcm9wcyA9IGFkb3B0Q0YoTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9w
ZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChmaXJzdFJlcXVlc3QoKSkpOwogI2Vsc2UKICAgICBpZiAo
YWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoZmlyc3RSZXF1ZXN0KCku
dXJsKCkuaG9zdCgpLmxvd2VyKCkpKSB7CiAgICAgICAgIHNzbFByb3BzID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5l
Y3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIGQtPm1fY29u
bmVjdGlvbiA9IGFkb3B0Q0YoQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoMCwg
cmVxdWVzdC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxDRlVSTENvbm5lY3Rpb25DbGllbnQqPigm
Y2xpZW50KSwgcHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCkpKTsKIH0KIAotYm9vbCBSZXNvdXJj
ZUhhbmRsZTo6c3RhcnQoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIHsK
ICAgICBpZiAoIWQtPm1fY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYzLDcg
KzI2Myw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNl
SGFuZGxlOjpjYW5jZWwoKQogewogICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uQ2FuY2VsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CkBAIC0yNzEsNyAr
MjcxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKICAgICB9CiB9CiAKLXZvaWQg
UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBjb25zdCBV
UkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKQEAg
LTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgICAgICB9CiAgICAg
fQogCi0gICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0
d29ya1Jlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKICAgICBpZiAoY2xpZW50KCktPnVz
ZXNBc3luY0NhbGxiYWNrcygpKQogICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5
bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgZWxzZSB7CkBAIC0zMTIs
NyArMzEyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICB9CiB9CiAKLWJvb2wgUmVz
b3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKK2Jvb2wgTmV0d29ya1Jl
c291cmNlSGFuZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7CiAgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkiKTsKICAgICBpZiAo
UmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7CkBAIC0zMjIs
NyArMzIyLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVu
Z2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpIik7CiAgICAgQVNTRVJUKGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZS5pc051
bGwoKSk7CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKIH0KIAog
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1ib29sIFJlc291cmNlSGFu
ZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNl
JiBwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGll
bnQgPSB0aGlzLT5jbGllbnQoKSkgewogICAgICAgICBpZiAoY2xpZW50LT51c2VzQXN5bmNDYWxs
YmFja3MoKSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZQogfQog
I2VuZGlmCiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogewogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZENyZWRl
bnRpYWwoKSIpOwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKQEAgLTQ0OSw3ICs0
NDksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgIGNsZWFyQXV0aGVudGljYXRpb24o
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
CiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVX
aXRob3V0Q3JlZGVudGlhbCgpIik7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwpA
QCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhCiAgICAgY2xlYXJBdXRo
ZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxh
dGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKCkiKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSkKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bgogICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24odGhpcywgY2hhbGxlbmdl
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAg
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRI
YW5kbGluZygpIik7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtNDg1LDcg
KzQ4NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURl
ZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgY2xlYXJBdXRoZW50aWNhdGlv
bigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAt
IHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKCkiKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5p
c051bGwoKSk7CkBAIC00OTgsMzAgKzQ5OCwzMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYwog
ICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBS
ZXNvdXJjZUhhbmRsZTo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAorQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKTsKIH0KIAotQ0ZVUkxDb25uZWN0aW9u
UmVmIFJlc291cmNlSGFuZGxlOjpjb25uZWN0aW9uKCkgY29uc3QKK0NGVVJMQ29ubmVjdGlvblJl
ZiBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbm5lY3Rpb24oKSBjb25zdAogewogICAgIHJldHVy
biBkLT5tX2Nvbm5lY3Rpb24uZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25S
ZWY+IFJlc291cmNlSGFuZGxlOjpyZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCkKK1JldGFp
blB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZUNv
bm5lY3Rpb25Gb3JEb3dubG9hZCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIEpvYiAl
cCByZWxlYXNpbmcgY29ubmVjdGlvbiAlcCBmb3IgZG93bmxvYWQiLCB0aGlzLCBkLT5tX2Nvbm5l
Y3Rpb24uZ2V0KCkpOwogICAgIHJldHVybiBXVEY6Om1vdmUoZC0+bV9jb25uZWN0aW9uKTsKIH0K
IAotQ0ZTdHJpbmdSZWYgUmVzb3VyY2VIYW5kbGU6OnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2Rl
KCkKK0NGU3RyaW5nUmVmIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3luY2hyb25vdXNMb2FkUnVu
TG9vcE1vZGUoKQogewogICAgIHJldHVybiBDRlNUUigiV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVy
UnVuTG9vcE1vZGUiKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxz
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3Rv
cjxjaGFyPiYgZGF0YSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlh
bHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVj
dG9yPGNoYXI+JiBkYXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseTolcyBhbGxvd1N0b3JlZENyZWRlbnRpYWxz
OiV1IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdG9yZWRDcmVkZW50
aWFscyk7CisgICAgTE9HKE5ldHdvcmssICJOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3Jt
TG9hZFJlc291cmNlU3luY2hyb25vdXNseTolcyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1Iiwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdG9yZWRDcmVkZW50aWFscyk7
CiAKICAgICBBU1NFUlQoIXJlcXVlc3QuaXNFbXB0eSgpKTsKIApAQCAtNTMxLDcgKzUzMSw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgT3duUHRyPFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50PiBjbGllbnQgPSBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6Y3JlYXRlKCk7CiAgICAgY2xp
ZW50LT5zZXRBbGxvd1N0b3JlZENyZWRlbnRpYWxzKHN0b3JlZENyZWRlbnRpYWxzID09IEFsbG93
U3RvcmVkQ3JlZGVudGlhbHMpOwogCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUg
PSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgY2xpZW50Lmdl
dCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiov
KSk7CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYo
bmV3IE5ldHdvcmtSZXNvdXJjZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQuZ2V0KCks
IGZhbHNlIC8qZGVmZXJzTG9hZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNuaWZmKi8pKTsK
IAogICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKQEAgLTU0MCw3ICs1NDAsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlLT5jcmVh
dGVDRlVSTENvbm5lY3Rpb24oc3RvcmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50
aWFscywgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgp
KSwKKyAgICBoYW5kbGUtPmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihzdG9yZWRDcmVkZW50aWFscyA9
PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNob3VsZENv
bnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwKICAgICAgICAgU2NoZWR1bGluZ0JlaGF2aW9y
OjpTeW5jaHJvbm91cywgaGFuZGxlLT5jbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRpZXMoaGFu
ZGxlLmdldCgpKS5nZXQoKSk7CiAKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5M
b29wKGhhbmRsZS0+Y29ubmVjdGlvbigpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHN5bmNocm9u
b3VzTG9hZFJ1bkxvb3BNb2RlKCkpOwpAQCAtNTYwLDE3ICs1NjAsMTcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXgKICAgICBkYXRhLnN3YXAoY2xpZW50LT5tdXRhYmxlRGF0YSgpKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29u
c3QgU3RyaW5nJiBob3N0KQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxv
d3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKICAgICBhbGxvd3NB
bnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKS5hZGQoaG9zdC5sb3dlcigpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBD
RkRhdGFSZWYgY2VydCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0
aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIENGRGF0YVJlZiBjZXJ0KQogewogICAgIGNsaWVu
dENlcnRzKCkuc2V0KGhvc3QubG93ZXIoKSwgY2VydCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5k
bGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKK3ZvaWQgTmV0d29ya1Jl
c291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiB7CiAg
ICAgaWYgKCFkLT5tX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTU4MSwxMyArNTgx
LDEzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29s
IGRlZmVycykKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uUmVzdW1lKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgpCitib29sIE5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKIHsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
KFNjaGVkdWxlUGFpciYgcGFpcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVs
ZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWly
LnJ1bkxvb3AoKTsKICAgICBpZiAoIXJ1bkxvb3ApCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIH0KIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7
CiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKICAgICBpZiAoIXJ1
bkxvb3ApCkBAIC02MTAsMTIgKzYxMCwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVk
dWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIH0KICNlbmRpZgogCi1jb25zdCBSZXNvdXJjZVJlcXVl
c3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0Citjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAog
ewogICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3RSZXN1bHQuaXNOdWxsKCkp
CkBAIC02MjMsMTkgKzYyMywxOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgZC0+bV9jb25u
ZWN0aW9uRGVsZWdhdGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3RSZXN1bHQuY2ZV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiB7CiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRlKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSkKIHsKICAgICBkLT5tX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGNhbkF1dGhlbnRpY2F0ZSk7CiB9CiAjZW5kaWYKIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNl
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA3MTQ0
OGNmYjA5ZGM0MTYwMjk5NDc3MzZjMjk4ZmJmYjdjZmQ1NmZhLi5jNTY2NDUxYzNjYmUyYjNiZTJh
MDgwYmU4ZmZlMjFiOGRlNGVkMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCitS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgIDog
bV9oYW5kbGUoaGFuZGxlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuaAppbmRleCA1MDZjNWRjOWY3MDU4ZjQzNDRkN2VjZTY2OTFhY2U0ZmVm
M2NiNGMxLi45MDE3ZjllOWY5ZTYyMTc2ZDgxYjg1ZjY4MGNjYjZlNzBjODFmNmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApAQCAtMzksNyAr
MzksNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIAogY2xhc3MgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSopOworICAgIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKik7
CiAgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSgpOwog
CiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IG1ha2VDb25uZWN0aW9uQ2xpZW50KCkgY29u
c3Q7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYgLy8gVVNFKE5FVFdPUktfQ0ZE
QVRBX0FSUkFZX0NBTExCQUNLKQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVzb3VyY2VIYW5kbGUqIG1f
aGFuZGxlOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBtX29yaWdpbmFsU2NoZW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggYTA3Y2Q4YjFkMzg1NzUzZDYwZjExOGNmMDYwMGNiNDYy
MzI2MzFjYS4uYjYwNDdmYTNmZjg5NzY4NzFhYmJiZmIyMGVhODFhYTlkYzY4MmJlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZShOZXR3b3JrUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSkKICAgICA6IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUoaGFuZGxlKQogICAgICwgbV9xdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBs
ZS5XZWJDb3JlL0NGTmV0d29yayIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpCiAgICAgLCBtX3Nl
bWFwaG9yZShkaXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRlKDApKQpAQCAtMTQwLDcgKzE0MCw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgICAgIAogICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcp
Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0
aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKTsKKyAgICAgICAgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCBy
ZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuaAppbmRleCBmY2U1NWM4NjBjNWUxZmFiYmFkZDZlOThjNjNmYjAzZjJlMDkyZmUxLi4xZWJi
ZTg3NDkzZDMxMWEyNzVlYTE5NmU2OTI0OGNmMjMyYWRiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSB7
CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZShSZXNvdXJjZUhhbmRsZSopOworICAgIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUoTmV0d29ya1Jlc291cmNlSGFuZGxl
Kik7CiAgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCmluZGV4
IDE1ZDhmYTA4YTg5M2M2ODU1ZTg3M2M5ZWI5ZTExYzJjMTc5N2RhMWQuLjAyMGUxN2I1ZDEzYmU2
NDBhYzNlY2RmOWUwOGU0Y2JkNGFmNWFkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBo
YW5kbGUpCiAgICAgOiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKGhhbmRs
ZSkKIHsKIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQwogICAg
IAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKICNp
ZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRp
bWluZ0RhdGEoY29ubmVjdGlvbiwgcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmco
KSk7CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShj
b25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApp
bmRleCA4YzExYzcxY2E0NmM0ZjRlNWVlMTIxYTAxYWRjODhlNzZjZjlhZDJjLi45Y2ZkZTQwZTA3
NDVlMjU4NTVkZDUzMDAyZTdkN2QxOTUwNWE5YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKik7Cisg
ICAgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKE5ldHdv
cmtSZXNvdXJjZUhhbmRsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENG
RGF0YVJlZiwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IGNiNDE4
NGY2MzdlOTUwZDE0YzViZWM1OTk1NjJkYmFmNmFiMDNkMmQuLjFlNjE5ZTYzMTk2MDUzMDE4NTAz
ZGFmZWUwYTY1ZjI3ZDUxNWQ4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNDYsNyArNDYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShj
b25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyaW5nJiBjYWNo
ZURpcikKK0N1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwg
TmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCiAgICAg
OiBtX2hlYWRlckZpbGVuYW1lKGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZW5hbWUoY2Fj
aGVEaXIpCiAgICAgLCBtX2NvbnRlbnRGaWxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCkBA
IC0xMDgsNyArMTA4LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZUNhY2hlZERhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
Q3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCitib29s
IEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpv
YikKIHsKICAgICBBU1NFUlQoam9iLT5jbGllbnQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggODQ1YTIx
ODg2YTlhMjRkNWUzYmNhZjUwNDU5MmIyY2UwZGZlM2RhZS4uYTRlNzBiYTYzNzU3OGM4YzA4MjYx
MWE0MTMzZjlkMzY3NTdjMmU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybENhY2hlRW50cnkgewogCiBwdWJsaWM6Ci0gICAgQ3Vy
bENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0
IFN0cmluZyYgY2FjaGVEaXIpOworICAgIEN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyaW5nJiBjYWNoZURpcik7CiAg
ICAgfkN1cmxDYWNoZUVudHJ5KCk7CiAKICAgICBib29sIGlzQ2FjaGVkKCk7CkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycygpIHsgcmV0
dXJuIG1fcmVxdWVzdEhlYWRlcnM7IH0KIAogICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90KTsKLSAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFu
ZGxlKik7CisgICAgYm9vbCByZWFkQ2FjaGVkRGF0YShOZXR3b3JrUmVzb3VyY2VIYW5kbGUqKTsK
IAogICAgIGJvb2wgc2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2Um
KTsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9v
bCk7CiAKLSAgICBjb25zdCBSZXNvdXJjZUhhbmRsZSogZ2V0Sm9iKCkgY29uc3QgeyByZXR1cm4g
bV9qb2I7IH0KKyAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGdldEpvYigpIGNvbnN0
IHsgcmV0dXJuIG1fam9iOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fYmFzZW5hbWU7CkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX2NhY2hlZFJl
c3BvbnNlOwogICAgIEhUVFBIZWFkZXJNYXAgbV9yZXF1ZXN0SGVhZGVyczsKIAotICAgIFJlc291
cmNlSGFuZGxlKiBtX2pvYjsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIG1fam9iOwogCiAg
ICAgdm9pZCBnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpOwogICAgIGJv
b2wgbG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBWZWN0b3I8Y2hhcj4m
IGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZjZlM2EyNDIwY2UwYWVhNzg3OWQ4ODgw
YWI0MTE1NzA3YWEwNDE2Yy4uZWE3YTM0NzlmMTg0ZWMzMzRjNTM4OTk3MDdmZmVlZjAxMGVmOTFh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgQ3VybENhY2hl
TWFuYWdlcjo6bWFrZVJvb21Gb3JOZXdFbnRyeSgpCiAgICAgfQogfQogCi12b2lkIEN1cmxDYWNo
ZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYgam9iLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSYgam9iLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI3LDcg
KzIyNyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9uc2UmCiAgICAgICAgIGludmFsaWRhdGVDYWNo
ZUVudHJ5KHVybCk7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSYgam9iKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRGaW5pc2hM
b2FkaW5nKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSYgam9iKQogewogICAgIGlmIChtX2Rpc2FibGVk
KQogICAgICAgICByZXR1cm47CkBAIC0yNjcsNyArMjY3LDcgQEAgYm9vbCBDdXJsQ2FjaGVNYW5h
Z2VyOjpnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYgcmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKE5ldHdvcmtSZXNv
dXJjZUhhbmRsZSYgam9iLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBp
ZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzE5LDE0ICszMTksMTQgQEAgdm9p
ZCBDdXJsQ2FjaGVNYW5hZ2VyOjppbnZhbGlkYXRlQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVy
bCkKICAgICBtX0xSVUVudHJ5TGlzdC5yZW1vdmUodXJsKTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVN
YW5hZ2VyOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlICZqb2IpCit2b2lkIEN1cmxDYWNoZU1hbmFn
ZXI6OmRpZEZhaWwoTmV0d29ya1Jlc291cmNlSGFuZGxlICZqb2IpCiB7CiAgICAgY29uc3QgU3Ry
aW5nJiB1cmwgPSBqb2IuZmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCk7CiAKICAgICBpbnZh
bGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnJlYWRD
YWNoZWREYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6cmVhZENhY2hlZERh
dGEoY29uc3QgU3RyaW5nJiB1cmwsIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmgKaW5kZXggZjU5Y2Y0ZTNhOGQwNmJlOTJiYzI1MTFmOThmZjNhNGQ3
MDAzZDQwYy4uMzBlZGE5YjQ3ZjVjMTNlM2E4MzA3NDIwNjZmZDFjOTlhZDE2OWMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5oCkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgogICAgIEhUVFBIZWFkZXJNYXAm
IHJlcXVlc3RIZWFkZXJzKGNvbnN0IFN0cmluZyYpOyAvLyBMb2FkIGhlYWRlcnMKICAgICBib29s
IGdldENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYsIFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29u
c3QgY2hhciosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQotICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSYpOwotICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSYsIFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoTmV0d29ya1Jlc291cmNlSGFuZGxlJik7CisgICAgdm9pZCBkaWRGYWlsKE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSYpOwogCiBwcml2YXRlOgogICAgIEN1cmxDYWNoZU1hbmFnZXIo
KTsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2F2ZVJlc3BvbnNlSGVh
ZGVycyhjb25zdCBTdHJpbmcmLCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnZhbGlk
YXRlQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlYWRDYWNoZWREYXRhKGNv
bnN0IFN0cmluZyYsIFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZv
aWQgcmVhZENhY2hlZERhdGEoY29uc3QgU3RyaW5nJiwgTmV0d29ya1Jlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXNwb25zZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL011bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCA5N2E4ZDRh
OTZmYTBjNjQ1N2Y4MjY5NjhjZGZhMzI3ZDZkYzM0MDgxLi43ZTkwNGQ2MzJhOWM1NzRlOThmN2Y3
ZWI3YmE5OWUyZTZhZjE2NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBNdWx0
aXBhcnRIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBTdHJpbmcm
IGJvdW5kYXJ5KQorUGFzc093blB0cjxNdWx0aXBhcnRIYW5kbGU+IE11bHRpcGFydEhhbmRsZTo6
Y3JlYXRlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBTdHJpbmcmIGJvdW5k
YXJ5KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTXVsdGlwYXJ0SGFuZGxlKGhhbmRsZSwg
Ym91bmRhcnkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9NdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9NdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YWI4NTYyNDU4NzMxZGFhNTU4ZWM3MjY0
ZmZlYmRmY2E3NDNlOWQwLi4zMjEwMzhlZDA2NzQ5ZWQ4Nzc3OWRkMDMzYWFhNzk0MGRkNDkzMjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTXVsdGlw
YXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL011
bHRpcGFydEhhbmRsZS5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTXVsdGlwYXJ0SGFuZGxlIHsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PE11bHRpcGFydEhhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFN0
cmluZyYgYm91bmRhcnkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE11bHRpcGFydEhhbmRsZT4g
Y3JlYXRlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRp
YyBib29sIGV4dHJhY3RCb3VuZGFyeShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBTdHJpbmcm
IGJvdW5kYXJ5KTsKIAotICAgIE11bHRpcGFydEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBTdHJpbmcmIGJvdW5kYXJ5KQorICAgIE11bHRpcGFydEhhbmRsZShOZXR3b3JrUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSkKICAgICAgICAgOiBt
X3Jlc291cmNlSGFuZGxlKGhhbmRsZSkKICAgICAgICAgLCBtX2JvdW5kYXJ5KCItLSIgKyBib3Vu
ZGFyeSkKICAgICAgICAgLCBtX2JvdW5kYXJ5TGVuZ3RoKG1fYm91bmRhcnkubGVuZ3RoKCkpCkBA
IC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZUhlYWRlcnNJZlBvc3NpYmxl
KCk7CiAgICAgYm9vbCBwcm9jZXNzQ29udGVudCgpOwogCi0gICAgUmVzb3VyY2VIYW5kbGUqIG1f
cmVzb3VyY2VIYW5kbGU7CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlKiBtX3Jlc291cmNlSGFu
ZGxlOwogICAgIFN0cmluZyBtX2JvdW5kYXJ5OwogICAgIHNpemVfdCBtX2JvdW5kYXJ5TGVuZ3Ro
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGUyOTYzZWE0Y2M1YTI3YWNmMGI3NDVlMDI5
MTI2NWMxZGZhMWMxMjAuLmUyMDg0MDRkYjhiZjgwZmJhMzQ1ZjJjZjJiNzlhYjk3NGQ2N2VjZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC05NiwxMiArOTYsMTIgQEAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQogICAgICAgICBjdXJsX3NsaXN0
X2ZyZWVfYWxsKG1fY3VzdG9tSGVhZGVycyk7CiB9CiAKLVJlc291cmNlSGFuZGxlOjp+UmVzb3Vy
Y2VIYW5kbGUoKQorTmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFuZGxl
KCkKIHsKICAgICBjYW5jZWwoKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQor
Ym9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIHsKICAgICAvLyBUaGUgZnJhbWUg
Y291bGQgYmUgbnVsbCBpZiB0aGUgUmVzb3VyY2VIYW5kbGUgaXMgbm90IGFzc29jaWF0ZWQgdG8g
YW55CiAgICAgLy8gRnJhbWUsIGUuZy4gaWYgd2UgYXJlIGRvd25sb2FkaW5nIGEgZmlsZS4KQEAg
LTExNSwxNyArMTE1LDE3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogewogICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6
c2hhcmVkSW5zdGFuY2UoKS0+Y2FuY2VsKHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
OjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNh
dGUoY29uc3QgU3RyaW5nJiBob3N0KQogewogICAgIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVI
b3N0cyhob3N0Lmxvd2VyKCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRD
ZXJ0aWZpY2F0ZUluZm8oY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGNlcnRpZmlj
YXRlLCBjb25zdCBTdHJpbmcmIGtleSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRD
bGllbnRDZXJ0aWZpY2F0ZUluZm8oY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGNl
cnRpZmljYXRlLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBpZiAoZmlsZUV4aXN0cyhjZXJ0
aWZpY2F0ZSkpCiAgICAgICAgIGFkZEFsbG93ZWRDbGllbnRDZXJ0aWZpY2F0ZShob3N0LCBjZXJ0
aWZpY2F0ZSwga2V5KTsKQEAgLTE0MiwxMyArMTQyLDEzIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmlu
ZywgUmV0YWluUHRyPENGRGF0YVJlZj4gPiYgY2xpZW50Q2VydHMoKQogICAgIHJldHVybiBjZXJ0
czsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3Qg
U3RyaW5nJiBob3N0LCBDRkRhdGFSZWYgY2VydCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxl
OjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIENGRGF0YVJlZiBjZXJ0
KQogewogICAgIGNsaWVudENlcnRzKCkuc2V0KGhvc3QubG93ZXIoKSwgY2VydCk7CiB9CiAjZW5k
aWYKIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wg
ZGVmZXJzKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9h
ZGluZyhib29sIGRlZmVycykKIHsKICAgICBpZiAoIWQtPm1faGFuZGxlKQogICAgICAgICByZXR1
cm47CkBAIC0xNjYsMjEgKzE2NiwyMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNl
dERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgfQogfQogCi1ib29sIFJlc291cmNlSGFu
ZGxlOjpsb2Fkc0Jsb2NrZWQoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxv
Y2tlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKK2Jvb2wg
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7CiAg
ICAgcmV0dXJuICghY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKHRoaXMpKSAmJiBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hy
b25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRh
dGEpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYg
ZGF0YSkKIHsKICAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgc3luY0xvYWRlcjsKLSAgICBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRs
ZShjb250ZXh0LCByZXF1ZXN0LCAmc3luY0xvYWRlciwgdHJ1ZSwgZmFsc2UpKTsKKyAgICBSZWZQ
dHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgTmV0d29ya1Jl
c291cmNlSGFuZGxlKGNvbnRleHQsIHJlcXVlc3QsICZzeW5jTG9hZGVyLCB0cnVlLCBmYWxzZSkp
OwogCiAgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKiBtYW5hZ2VyID0gUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXgKICAgICByZXNwb25zZSA9IHN5bmNMb2FkZXIucmVzb3VyY2VSZXNwb25z
ZSgpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQg
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBpZiAoIWQt
Pm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIENyZWRl
bnRpYWwgY3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAg
ICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBk
LT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwg
Y29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxs
ZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBpZiAoY2hhbGxlbmdl
ICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYyLDcg
KzI2Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgY2xlYXJBdXRoZW50aWNhdGlv
bigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKIHsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNh
CiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgaWYgKGNoYWxs
ZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI4
MiwxMiArMjgyLDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9u
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuCiAgICAgICAgIGNsaWVudCgp
LT5yZWNlaXZlZENhbmNlbGxhdGlvbih0aGlzLCBjaGFsbGVuZ2UpOwogfQogCi12b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJl
Y2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxs
ZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCiB7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IDVk
MzcyZDEwZjU1ZjA3MWMwNjI4NzhkZTAwZDM0ZmY0ZDY3ODgzZTguLmNjMDI2MzQ2MTkxZGI2MmI5
MmRhOTk2YjZjNWMyNmQ1MjM1NThlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBA
IC0xODgsNyArMTg4LDcgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlV2ViVGltaW5nSW5mb3JtYXRp
b25zKFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQpCiAKIHN0YXRpYyBpbnQgc29ja29wdGZ1bmN0
aW9uKHZvaWQqIGRhdGEsIGN1cmxfc29ja2V0X3QgLypjdXJsZmQqLywgY3VybHNvY2t0eXBlIC8q
cHVycG9zZSovKQogewotICAgIFJlc291cmNlSGFuZGxlKiBqb2IgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGRhdGEpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9iID0gc3Rh
dGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7CiAgICAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKIAogICAgIGlmIChkLT5tX3Jlc3Bv
bnNlLnJlc291cmNlTG9hZFRpbWluZygpKQpAQCAtMjkxLDcgKzI5MSw3IEBAIFJlc291cmNlSGFu
ZGxlTWFuYWdlciogUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpCiAgICAg
cmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCi1zdGF0aWMgdm9pZCBoYW5kbGVMb2NhbFJlY2Vp
dmVSZXNwb25zZSAoQ1VSTCogaGFuZGxlLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkKQorc3RhdGljIHZvaWQgaGFuZGxlTG9jYWxSZWNlaXZlUmVzcG9uc2Uo
Q1VSTCogaGFuZGxlLCBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCogZCkKIHsKICAgICAvLyBzaW5jZSB0aGUgY29kZSBpbiBoZWFkZXJDYWxsYmFjayB3
aWxsIG5vdCBoYXZlIHJ1biBmb3IgbG9jYWwgZmlsZXMKICAgICAvLyB0aGUgY29kZSB0byBzZXQg
dGhlIFVSTCBhbmQgZmlyZSBkaWRSZWNlaXZlUmVzcG9uc2UgaXMgbmV2ZXIgcnVuLApAQCAtMzEx
LDcgKzMxMSw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUxvY2FsUmVjZWl2ZVJlc3BvbnNlIChDVVJM
KiBoYW5kbGUsIFJlc291cmNlSGFuZGxlKiBqb2IsIFJlc291CiAvLyBjYWxsZWQgd2l0aCBkYXRh
IGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNr
CiBzdGF0aWMgc2l6ZV90IHdyaXRlQ2FsbGJhY2sodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6
ZV90IG5tZW1iLCB2b2lkKiBkYXRhKQogewotICAgIFJlc291cmNlSGFuZGxlKiBqb2IgPSBzdGF0
aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZSogam9iID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7CiAgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKICAgICBpZiAo
ZC0+bV9jYW5jZWxsZWQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHN0
YXRpYyBib29sIGdldFByb3RlY3Rpb25TcGFjZShDVVJMKiBoLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUHJvdGVjCiAgKi8KIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2so
Y2hhciogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBkYXRhKQogewotICAg
IFJlc291cmNlSGFuZGxlKiBqb2IgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEp
OworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9iID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jl
c291cmNlSGFuZGxlKj4oZGF0YSk7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpv
Yi0+Z2V0SW50ZXJuYWwoKTsKICAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2soY2hh
ciogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBkYXRhKQogKi8KIHNpemVf
dCByZWFkQ2FsbGJhY2sodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lk
KiBkYXRhKQogewotICAgIFJlc291cmNlSGFuZGxlKiBqb2IgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGRhdGEpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9iID0gc3RhdGlj
X2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7CiAgICAgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKIAogICAgIGlmIChkLT5tX2NhbmNlbGxl
ZCkKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxv
YWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qCiAgICAgICAgIC8v
IGZpbmQgdGhlIG5vZGUgd2hpY2ggaGFzIHNhbWUgZC0+bV9oYW5kbGUgYXMgY29tcGxldGVkIHRy
YW5zZmVyCiAgICAgICAgIENVUkwqIGhhbmRsZSA9IG1zZy0+ZWFzeV9oYW5kbGU7CiAgICAgICAg
IEFTU0VSVChoYW5kbGUpOwotICAgICAgICBSZXNvdXJjZUhhbmRsZSogam9iID0gMDsKKyAgICAg
ICAgTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IgPSAwOwogICAgICAgICBDVVJMY29kZSBlcnIg
PSBjdXJsX2Vhc3lfZ2V0aW5mbyhoYW5kbGUsIENVUkxJTkZPX1BSSVZBVEUsICZqb2IpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGVyciwgQ1VSTEVfT0sgPT0gZXJyKTsKICAgICAgICAgQVNTRVJU
KGpvYik7CkBAIC03NDcsNyArNzQ3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNl
dFByb3h5SW5mbyhjb25zdCBTdHJpbmcmIGhvc3QsCiAgICAgfQogfQogCi12b2lkIFJlc291cmNl
SGFuZGxlTWFuYWdlcjo6cmVtb3ZlRnJvbUN1cmwoUmVzb3VyY2VIYW5kbGUqIGpvYikKK3ZvaWQg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpyZW1vdmVGcm9tQ3VybChOZXR3b3JrUmVzb3VyY2VIYW5k
bGUqIGpvYikKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRl
cm5hbCgpOwogICAgIEFTU0VSVChkLT5tX2hhbmRsZSk7CkBAIC03NjAsNyArNzYwLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnJlbW92ZUZyb21DdXJsKFJlc291cmNlSGFuZGxlKiBq
b2IpCiAgICAgam9iLT5kZXJlZigpOwogfQogCi1zdGF0aWMgaW5saW5lIHNpemVfdCBnZXRGb3Jt
RWxlbWVudHNDb3VudChSZXNvdXJjZUhhbmRsZSogam9iKQorc3RhdGljIGlubGluZSBzaXplX3Qg
Z2V0Rm9ybUVsZW1lbnRzQ291bnQoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAg
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCkuaHR0cEJvZHko
KTsKIApAQCAtNzc0LDcgKzc3NCw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGdldEZvcm1FbGVt
ZW50c0NvdW50KFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAgcmV0dXJuIGZvcm1EYXRhLT5lbGVt
ZW50cygpLnNpemUoKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0dXBGb3JtRGF0YShSZXNvdXJjZUhh
bmRsZSogam9iLCBDVVJMb3B0aW9uIHNpemVPcHRpb24sIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVh
ZGVycykKK3N0YXRpYyB2b2lkIHNldHVwRm9ybURhdGEoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBq
b2IsIENVUkxvcHRpb24gc2l6ZU9wdGlvbiwgc3RydWN0IGN1cmxfc2xpc3QqKiBoZWFkZXJzKQog
ewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7CiAg
ICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPmZpcnN0UmVxdWVzdCgp
Lmh0dHBCb2R5KCktPmVsZW1lbnRzKCk7CkBAIC04MjgsNyArODI4LDcgQEAgc3RhdGljIHZvaWQg
c2V0dXBGb3JtRGF0YShSZXNvdXJjZUhhbmRsZSogam9iLCBDVVJMb3B0aW9uIHNpemVPcHRpb24s
IHN0cnVjdCBjdXIKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1JF
QUREQVRBLCBqb2IpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0dXBQVVQo
UmVzb3VyY2VIYW5kbGUqIGpvYiwgc3RydWN0IGN1cmxfc2xpc3QqKiBoZWFkZXJzKQordm9pZCBS
ZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUFVUKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9i
LCBzdHJ1Y3QgY3VybF9zbGlzdCoqIGhlYWRlcnMpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX1VQTE9BRCwgVFJVRSk7CkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUFVUKFJlc291cmNlSGFuZGxlKiBqb2IsIHN0cnVj
dCBjdXJsX3NsaXN0KiogaGUKICAgICBzZXR1cEZvcm1EYXRhKGpvYiwgQ1VSTE9QVF9JTkZJTEVT
SVpFX0xBUkdFLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNl
dHVwUE9TVChSZXNvdXJjZUhhbmRsZSogam9iLCBzdHJ1Y3QgY3VybF9zbGlzdCoqIGhlYWRlcnMp
Cit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0dXBQT1NUKE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSogam9iLCBzdHJ1Y3QgY3VybF9zbGlzdCoqIGhlYWRlcnMpCiB7CiAgICAgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKICAgICBjdXJsX2Vhc3lfc2V0
b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1QsIFRSVUUpOwpAQCAtODY3LDcgKzg2Nyw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqIGpv
Yiwgc3RydWN0IGN1cmxfc2xpc3QqKiBoCiAgICAgc2V0dXBGb3JtRGF0YShqb2IsIENVUkxPUFRf
UE9TVEZJRUxEU0laRV9MQVJHRSwgaGVhZGVycyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyOjphZGQoUmVzb3VyY2VIYW5kbGUqIGpvYikKK3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjphZGQoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgLy8gd2UgY2FuIGJl
IGNhbGxlZCBmcm9tIHdpdGhpbiBjdXJsLCBzbyB0byBhdm9pZCByZS1lbnRyYW5jeSBpc3N1ZXMK
ICAgICAvLyBzY2hlZHVsZSB0aGlzIGpvYiB0byBiZSBhZGRlZCB0aGUgbmV4dCB0aW1lIHdlIGVu
dGVyIGN1cmwgZG93bmxvYWQgbG9vcApAQCAtODc3LDcgKzg3Nyw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyOjphZGQoUmVzb3VyY2VIYW5kbGUqIGpvYikKICAgICAgICAgbV9kb3dubG9h
ZFRpbWVyLnN0YXJ0T25lU2hvdChwb2xsVGltZVNlY29uZHMpOwogfQogCi1ib29sIFJlc291cmNl
SGFuZGxlTWFuYWdlcjo6cmVtb3ZlU2NoZWR1bGVkSm9iKFJlc291cmNlSGFuZGxlKiBqb2IpCiti
b29sIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6cmVtb3ZlU2NoZWR1bGVkSm9iKE5ldHdvcmtSZXNv
dXJjZUhhbmRsZSogam9iKQogewogICAgIGludCBzaXplID0gbV9yZXNvdXJjZUhhbmRsZUxpc3Qu
c2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CkBAIC04OTYsNyAr
ODk2LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0U2NoZWR1bGVkSm9icygp
CiAKICAgICBib29sIHN0YXJ0ZWQgPSBmYWxzZTsKICAgICB3aGlsZSAoIW1fcmVzb3VyY2VIYW5k
bGVMaXN0LmlzRW1wdHkoKSAmJiBtX3J1bm5pbmdKb2JzIDwgbWF4UnVubmluZ0pvYnMpIHsKLSAg
ICAgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IG1fcmVzb3VyY2VIYW5kbGVMaXN0WzBdOworICAg
ICAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiA9IG1fcmVzb3VyY2VIYW5kbGVMaXN0WzBd
OwogICAgICAgICBtX3Jlc291cmNlSGFuZGxlTGlzdC5yZW1vdmUoMCk7CiAgICAgICAgIHN0YXJ0
Sm9iKGpvYik7CiAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwpAQCAtOTA0LDcgKzkwNCw3IEBAIGJv
b2wgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydFNjaGVkdWxlZEpvYnMoKQogICAgIHJldHVy
biBzdGFydGVkOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZGlzcGF0Y2hTeW5j
aHJvbm91c0pvYihSZXNvdXJjZUhhbmRsZSogam9iKQordm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmRpc3BhdGNoU3luY2hyb25vdXNKb2IoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7
CiAgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOwogCkBAIC05NDEsNyAr
OTQxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRpc3BhdGNoU3luY2hyb25vdXNK
b2IoUmVzb3VyY2VIYW5kbGUqIGpvYikKICAgICBjdXJsX2Vhc3lfY2xlYW51cChoYW5kbGUtPm1f
aGFuZGxlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlc291
cmNlSGFuZGxlKiBqb2IpCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c3RhcnRKb2IoTmV0
d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVx
dWVzdCgpLnVybCgpOwogCkBAIC05NjUsNyArOTY1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1h
bmFnZXI6OnN0YXJ0Sm9iKFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAgfQogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlTWFuYWdlcjo6YXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFJlc291cmNl
SGFuZGxlTWFuYWdlcjo6YXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIC8vIG1f
dXNlci9tX3Bhc3MgYXJlIGNyZWRlbnRpYWxzIGdpdmVuIG1hbnVhbGx5LCBmb3IgaW5zdGFuY2Us
IGJ5IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIFhNTEh0dHBSZXF1ZXN0Lm9wZW4oKS4KICAgICBS
ZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwpAQCAtMTAw
MSw3ICsxMDAxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFwcGx5QXV0aGVudGlj
YXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwKICAgICBjdXJsX2Vhc3lfc2V0
b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1VTRVJQV0QsIHVzZXJwYXNzLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShSZXNv
dXJjZUhhbmRsZSogam9iKQordm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmluaXRpYWxpemVI
YW5kbGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBhbGxvd2VkUHJvdG9jb2xzID0gQ1VSTFBST1RPX0ZJTEUgfCBDVVJMUFJPVE9fRlRQIHwgQ1VS
TFBST1RPX0ZUUFMgfCBDVVJMUFJPVE9fSFRUUCB8IENVUkxQUk9UT19IVFRQUzsKICAgICBVUkwg
dXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKQEAgLTExNjQsNyArMTE2NCw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0Q29va2llU2Vzc2lvbigpCiAgICAgY3VybF9l
YXN5X2NsZWFudXAoY3VybCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpjYW5j
ZWwoUmVzb3VyY2VIYW5kbGUqIGpvYikKK3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpjYW5j
ZWwoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgaWYgKHJlbW92ZVNjaGVkdWxl
ZEpvYihqb2IpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgKaW5kZXgg
MTUyZmFjNThiMTljOGU0YThlN2Y5ZTVlMGRmYzdlYTRlNDllOTVjNi4uN2FkNmMwN2MyY2Q2YmQy
M2M1OGQ4MWYzYzI3M2UwNzVjODQxNWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaApAQCAt
NDQsNiArNDQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE5ldHdvcmtSZXNv
dXJjZUhhbmRsZTsKKwogY2xhc3MgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyIHsKIHB1YmxpYzoKICAg
ICBlbnVtIFByb3h5VHlwZSB7CkBAIC01NCwxOCArNTYsMTggQEAgcHVibGljOgogICAgICAgICBT
b2NrczVIb3N0bmFtZSA9IENVUkxQUk9YWV9TT0NLUzVfSE9TVE5BTUUKICAgICB9OwogICAgIHN0
YXRpYyBSZXNvdXJjZUhhbmRsZU1hbmFnZXIqIHNoYXJlZEluc3RhbmNlKCk7Ci0gICAgdm9pZCBh
ZGQoUmVzb3VyY2VIYW5kbGUqKTsKLSAgICB2b2lkIGNhbmNlbChSZXNvdXJjZUhhbmRsZSopOwor
ICAgIHZvaWQgYWRkKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSopOworICAgIHZvaWQgY2FuY2VsKE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSopOwogCiAgICAgQ1VSTFNIKiBnZXRDdXJsU2hhcmVIYW5kbGUo
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29va2llSmFyRmlsZU5hbWUoY29uc3QgY2hhciogY29v
a2llSmFyRmlsZU5hbWUpOwogICAgIGNvbnN0IGNoYXIqIGdldENvb2tpZUphckZpbGVOYW1lKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIGRpc3BhdGNoU3luY2hyb25vdXNKb2IoUmVzb3VyY2VIYW5kbGUq
KTsKKyAgICB2b2lkIGRpc3BhdGNoU3luY2hyb25vdXNKb2IoTmV0d29ya1Jlc291cmNlSGFuZGxl
Kik7CiAKLSAgICB2b2lkIHNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSosIHN0cnVjdCBjdXJsX3Ns
aXN0KiopOwotICAgIHZvaWQgc2V0dXBQVVQoUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9z
bGlzdCoqKTsKKyAgICB2b2lkIHNldHVwUE9TVChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqLCBzdHJ1
Y3QgY3VybF9zbGlzdCoqKTsKKyAgICB2b2lkIHNldHVwUFVUKE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZSosIHN0cnVjdCBjdXJsX3NsaXN0KiopOwogCiAgICAgdm9pZCBzZXRQcm94eUluZm8oY29uc3Qg
U3RyaW5nJiBob3N0ID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBw
b3J0ID0gMCwKQEAgLTc3LDEzICs3OSwxMyBAQCBwcml2YXRlOgogICAgIFJlc291cmNlSGFuZGxl
TWFuYWdlcigpOwogICAgIH5SZXNvdXJjZUhhbmRsZU1hbmFnZXIoKTsKICAgICB2b2lkIGRvd25s
b2FkVGltZXJDYWxsYmFjayhUaW1lcjxSZXNvdXJjZUhhbmRsZU1hbmFnZXI+Kik7Ci0gICAgdm9p
ZCByZW1vdmVGcm9tQ3VybChSZXNvdXJjZUhhbmRsZSopOwotICAgIGJvb2wgcmVtb3ZlU2NoZWR1
bGVkSm9iKFJlc291cmNlSGFuZGxlKik7Ci0gICAgdm9pZCBzdGFydEpvYihSZXNvdXJjZUhhbmRs
ZSopOworICAgIHZvaWQgcmVtb3ZlRnJvbUN1cmwoTmV0d29ya1Jlc291cmNlSGFuZGxlKik7Cisg
ICAgYm9vbCByZW1vdmVTY2hlZHVsZWRKb2IoTmV0d29ya1Jlc291cmNlSGFuZGxlKik7CisgICAg
dm9pZCBzdGFydEpvYihOZXR3b3JrUmVzb3VyY2VIYW5kbGUqKTsKICAgICBib29sIHN0YXJ0U2No
ZWR1bGVkSm9icygpOwotICAgIHZvaWQgYXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgYXBwbHlBdXRoZW50aWNh
dGlvblRvUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmKTsK
IAotICAgIHZvaWQgaW5pdGlhbGl6ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSopOworICAgIHZvaWQg
aW5pdGlhbGl6ZUhhbmRsZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUqKTsKIAogICAgIHZvaWQgaW5p
dENvb2tpZVNlc3Npb24oKTsKIApAQCAtOTIsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIENVUkxT
SCogbV9jdXJsU2hhcmVIYW5kbGU7CiAgICAgY2hhciogbV9jb29raWVKYXJGaWxlTmFtZTsKICAg
ICBjaGFyIG1fY3VybEVycm9yQnVmZmVyW0NVUkxfRVJST1JfU0laRV07Ci0gICAgVmVjdG9yPFJl
c291cmNlSGFuZGxlKj4gbV9yZXNvdXJjZUhhbmRsZUxpc3Q7CisgICAgVmVjdG9yPE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZSo+IG1fcmVzb3VyY2VIYW5kbGVMaXN0OwogICAgIGNvbnN0IENTdHJpbmcg
bV9jZXJ0aWZpY2F0ZVBhdGg7CiAgICAgaW50IG1fcnVubmluZ0pvYnM7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCmluZGV4
IGI0NjJmODk3N2ZkMzc4ZjZiNTgyMWIzOTVhNzZmMDE0OTA2ZGJjZjQuLjI2NTBiMTQ5MjY0YWI0
YWQ5YThhNzdjOWQ4MDhjNGQxOTE0N2MzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9TU0xIYW5kbGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
YWRkQWxsb3dlZENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3Ry
aW5nJiBjZXJ0aWZpY2F0ZSwKICAgICBhbGxvd2VkQ2xpZW50SG9zdHMuc2V0KGhvc3QubG93ZXIo
KSwgY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgc2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSkKK3ZvaWQgc2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoTmV0d29ya1Jl
c291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgU3RyaW5nIGhvc3QgPSBoYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnVybCgpLmhvc3QoKTsKICAgICBIYXNoTWFwPFN0cmluZywgY2xpZW50Q2VydGlm
aWNhdGU+OjppdGVyYXRvciBpdCA9IGFsbG93ZWRDbGllbnRIb3N0cy5maW5kKGhvc3QubG93ZXIo
KSk7CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIGludCBjZXJ0VmVyaWZ5Q2FsbGJhY2soaW50
IG9rLCBYNTA5X1NUT1JFX0NUWCogY3R4KQogCiAgICAgU1NMKiBzc2wgPSByZWludGVycHJldF9j
YXN0PFNTTCo+KFg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKGN0eCwgU1NMX2dldF9leF9kYXRh
X1g1MDlfU1RPUkVfQ1RYX2lkeCgpKSk7CiAgICAgU1NMX0NUWCogc3NsY3R4ID0gU1NMX2dldF9T
U0xfQ1RYKHNzbCk7Ci0gICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UmVzb3VyY2VIYW5kbGUqPihTU0xfQ1RYX2dldF9hcHBfZGF0YShzc2xjdHgpKTsKKyAgICBOZXR3
b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TmV0d29ya1Jlc291cmNl
SGFuZGxlKj4oU1NMX0NUWF9nZXRfYXBwX2RhdGEoc3NsY3R4KSk7CiAgICAgU3RyaW5nIGhvc3Qg
PSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKTsKICAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOwogCkBAIC0yMjIsNyArMjIyLDcgQEAgc3Rh
dGljIENVUkxjb2RlIHNzbGN0eGZ1bihDVVJMKiBjdXJsLCB2b2lkKiBzc2xjdHgsIHZvaWQqIHBh
cm0pCiAgICAgcmV0dXJuIENVUkxFX09LOwogfQogCi12b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3ZvaWQgc2V0U1NMVmVyaWZ5T3B0aW9ucyhOZXR3b3Jr
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBk
ID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfU1NMX0NUWF9EQVRBLCBoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oCmluZGV4IDBhNTg0N2RlMDIzMDU2MWIy
OTJkODJlY2I5ZDg4NjMxNjQzZjEzZjIuLjY2MmY1MTRlNzUxYzk4NDU4NzYxZGM4NTEyMjIzZjk2
YzgzZjQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9TU0xIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U1NMSGFuZGxlLmgKQEAgLTQ2LDggKzQ2LDggQEAgdHlwZWRlZiBlbnVtIHsKIHZvaWQgYWRkQWxs
b3dlZENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOwogdm9pZCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoY29uc3QgU3Ry
aW5nJik7CiBib29sIHNzbElnbm9yZUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7Ci12b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMoUmVzb3VyY2VIYW5kbGUqKTsK
LXZvaWQgc2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoUmVzb3VyY2VIYW5kbGUqKTsKK3ZvaWQgc2V0
U1NMVmVyaWZ5T3B0aW9ucyhOZXR3b3JrUmVzb3VyY2VIYW5kbGUqKTsKK3ZvaWQgc2V0U1NMQ2xp
ZW50Q2VydGlmaWNhdGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKik7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCBjZmU2MDNj
ZmQxMTA5NDc1Yjk5OGJiMjc2YzY3MGRjYTA2Yjk4NDRkLi4zMmQwNTE1MTM2NTE2N2IxMTZmMzMw
NDllMGVmNjBhNzAwMmMwZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9RdWlja0xvb2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaApAQCAtODIsOSArODIsOSBAQCBXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhOU1N0cmluZyAqZmlsZU5hbWUp
OwogY2xhc3MgUXVpY2tMb29rSGFuZGxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWlj
a0xvb2tIYW5kbGUpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBOU1VSTENvbm5lY3Rpb24gKiwgTlNV
UkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxR
dWlja0xvb2tIYW5kbGU+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUqLCBOU1VSTENvbm5l
Y3Rpb24gKiwgTlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7CiAjaWYgVVNFKENGTkVUV09S
SykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJl
c291cmNlSGFuZGxlKiwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxR
dWlja0xvb2tIYW5kbGU+IGNyZWF0ZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVm
KTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVp
Y2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXIqLCBOU1VSTFJlc3BvbnNlICopOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5RdWlja0xvb2tIYW5kbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRleCA4Zjg0OWUzODJmNjU4
NzRhZDc4ZDg2OGVjZmRkODY2YzdmNWU5MGVmLi5mODA0YzQyNjBjYzMxNGE2Nzc4ODQ4NWQzMzk1
MTAwN2QzMDQ1NzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvUXVpY2tMb29rLm1tCkBAIC00NTcsNyArNDU3LDcgQEAgUXVpY2tMb29rSGFuZGxlOjpRdWlj
a0xvb2tIYW5kbGUoTlNVUkwgKmZpcnN0UmVxdWVzdFVSTCwgTlNVUkxDb25uZWN0aW9uICpjb25u
ZWMKICAgICBMT0coTmV0d29yaywgIlF1aWNrTG9va0hhbmRsZTo6UXVpY2tMb29rSGFuZGxlKCkg
LSBwcmV2aWV3RmlsZU5hbWU6ICVzIiwgW21fY29udmVydGVyIHByZXZpZXdGaWxlTmFtZV0pOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNy
ZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24s
IE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UsIGlkIGRlbGVnYXRlKQorc3RkOjp1bmlxdWVfcHRy
PFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoTmV0d29ya1Jlc291cmNl
SGFuZGxlKiBoYW5kbGUsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxSZXNwb25z
ZSAqbnNSZXNwb25zZSwgaWQgZGVsZWdhdGUpCiB7CiAgICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhh
bmRsZSk7CiAgICAgaWYgKCFoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmRlcHJlY2F0ZWRJc01haW5S
ZXNvdXJjZVJlcXVlc3QoKSB8fCAhW1dlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVU
eXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0Oltuc1Jlc3BvbnNlIE1JTUVUeXBlXV0pCkBAIC00Njks
NyArNDY5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFu
ZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwKIH0KIAogI2lmIFVTRShDRk5FVFdP
UkspCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNy
ZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJl
ZiBjZlJlc3BvbnNlKQorc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29r
SGFuZGxlOjpjcmVhdGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUsIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSogY29ubmVjdGlvbkRlbGVnYXRl
LCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX0FSRyhoYW5kbGUs
IGhhbmRsZSk7CiAgICAgaWYgKCFoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmRlcHJlY2F0ZWRJc01h
aW5SZXNvdXJjZVJlcXVlc3QoKSB8fCAhW1dlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1J
TUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNGVVJMUmVzcG9uc2VHZXRN
SU1FVHlwZShjZlJlc3BvbnNlKV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCmluZGV4IDY2N2I5YjE4NjY3NDQw
ZGViZmVmZGExODA1Yjg0Y2I1NDc4NGM1NzkuLmMzNGFjZDM5NDMyNTk5MGY0NWMzN2M4NzgzOTkz
OTg4NDJkMjkyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCkBAIC0xNyw3ICsxNyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNGTXV0YWJsZURpY3Rp
b25hcnlSZWYgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK0NGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgTlNTdHJpbmcgKmhv
c3QgPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKICAgICBOU0FycmF5ICpjZXJ0QXJyYXkgPSBbTlNV
UkxSZXF1ZXN0IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCmluZGV4IDc2NDU0ZGE5ZDI0ZTBmYjY1Yjg3NDQ2NTBmOTA4YjcxMDBlZTY5
NDQuLjU3OTNlOGNjZGZlNzYzZjI4NTZkYWJhNjFlOGVhNTVhY2YyZmFkNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQogewogfQogCi1SZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFu
ZGxlKCkKK05ldHdvcmtSZXNvdXJjZUhhbmRsZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSgpCiB7
CiAgICAgcmVsZWFzZURlbGVnYXRlKCk7CiAgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlLnNl
dEF1dGhlbnRpY2F0aW9uQ2xpZW50KDApOwpAQCAtMTM5LDkgKzEzOSw5IEBAIHN0YXRpYyBib29s
IHN5bmNocm9ub3VzV2lsbFNlbmRSZXF1ZXN0RW5hYmxlZCgpCiAjZW5kaWYKIAogI2lmICFQTEFU
Rk9STShJT1MpCi12b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQg
ZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29u
dGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwg
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYs
IFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IpCiAjZWxzZQotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGlu
Z0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uUHJv
cGVydGllcykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rp
b24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hv
dWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yLCBO
U0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKQogI2VuZGlmCiB7CiAjaWYgRU5BQkxF
KFdFQl9USU1JTkcpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWwK
ICAgICBkLT5tX2Nvbm5lY3Rpb24gPSBhZG9wdE5TKFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBf
aW5pdFdpdGhSZXF1ZXN0Om5zUmVxdWVzdCBkZWxlZ2F0ZTpkZWxlZ2F0ZSB1c2VzQ2FjaGU6dXNl
c0NhY2hlIG1heENvbnRlbnRMZW5ndGg6MCBzdGFydEltbWVkaWF0ZWx5Ok5PIGNvbm5lY3Rpb25Q
cm9wZXJ0aWVzOnByb3BlcnR5RGljdGlvbmFyeV0pOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxl
OjpzdGFydCgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogewogICAgIGlm
ICghZC0+bV9jb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDgsMTMgKzI0OCwx
MyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbigKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6Om1ha2VE
ZWxlZ2F0ZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSksCisgICAgICAgIE5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSwKICAg
ICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsCiAgICAgICAgIGQtPm1fc2hvdWxkQ29u
dGVudFNuaWZmIHx8IGQtPm1fY29udGV4dC0+bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCgpLAogICAgICAgICBTY2hlZHVsaW5nQmVoYXZpb3I6OkFzeW5jaHJvbm91cyk7CiAjZWxzZQog
ICAgIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbigKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6Om1ha2VE
ZWxlZ2F0ZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSksCisgICAgICAgIE5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSwKICAg
ICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsCiAgICAgICAgIGQtPm1fc2hvdWxkQ29u
dGVudFNuaWZmIHx8IGQtPm1fY29udGV4dC0+bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCgpLAogICAgICAgICBTY2hlZHVsaW5nQmVoYXZpb3I6OkFzeW5jaHJvbm91cywKQEAgLTMwNSw3
ICszMDUsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgY2FuY2Vs
IGNvbm5lY3Rpb24gJXAiLCB0aGlzLCBkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogCkBAIC0zMTYs
NyArMzE2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKICAgICBbZC0+bV9jb25u
ZWN0aW9uLmdldCgpIGNhbmNlbF07CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3Jt
U2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxl
OjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiB7CiAgICAgaWYgKGQtPm1f
Y29ubmVjdGlvbikKICAgICAgICAgd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxsYmFja3Mo
ZC0+bV9jb25uZWN0aW9uLmdldCgpLCBkZWZlcnMpOwpAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKIAog
I2lmIFBMQVRGT1JNKE1BQykKIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1
bGVQYWlyJiBwYWlyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVk
dWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5zUnVuTG9v
cCgpOwogICAgIGlmICghcnVuTG9vcCkKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgfQogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKK3ZvaWQgTmV0d29y
a1Jlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBp
ZiAoTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKSkKICAgICAgICAgW2QtPm1f
Y29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihO
U1N0cmluZyAqKXBhaXIubW9kZSgpXTsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIAogI2VuZGlmCiAKLWlkIFJl
c291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSkKK2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKIApAQCAt
MzYzLDE0ICszNjMsMTQgQEAgaWQgUmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZShib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogICAgIHJldHVybiBkLT5tX2RlbGVnYXRlLmdldCgp
OwogfQogCi1pZCBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQoraWQgTmV0d29ya1Jlc291cmNl
SGFuZGxlOjpkZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKCFkLT5tX2RlbGVnYXRlKQogICAgICAgICBy
ZXR1cm4gbWFrZURlbGVnYXRlKGZhbHNlKTsKICAgICByZXR1cm4gZC0+bV9kZWxlZ2F0ZS5nZXQo
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZURlbGVnYXRlKCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpyZWxlYXNlRGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9k
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzc4LDMxICszNzgsMzEgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVsZWFzZURlbGVnYXRlKCkKICAgICBkLT5tX2RlbGVnYXRlID0gbmlsOwog
fQogCi1OU1VSTENvbm5lY3Rpb24gKlJlc291cmNlSGFuZGxlOjpjb25uZWN0aW9uKCkgY29uc3QK
K05TVVJMQ29ubmVjdGlvbiAqTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb25uZWN0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZC0+bV9jb25uZWN0aW9uLmdldCgpOwogfQogICAgIAotYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxl
Ojpsb2Fkc0Jsb2NrZWQoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0ZTdHJpbmdSZWYg
UmVzb3VyY2VIYW5kbGU6OnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCkKK0NGU3RyaW5nUmVm
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKQogewog
ICAgIHJldHVybiBDRlNUUigiV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGUiKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkK
K3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJy
b3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRh
KQogewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291
cmNlU3luY2hyb25vdXNseTolQCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC5u
c1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIHN0b3JlZENyZWRlbnRpYWxzKTsKKyAg
ICBMT0coTmV0d29yaywgIk5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5OiVAIGFsbG93U3RvcmVkQ3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0Lm5z
VVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgc3RvcmVkQ3JlZGVudGlhbHMpOwogCiAg
ICAgQVNTRVJUKCFyZXF1ZXN0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgT3duUHRyPFN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50PiBjbGllbnQgPSBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6Y3JlYXRl
KCk7CiAgICAgY2xpZW50LT5zZXRBbGxvd1N0b3JlZENyZWRlbnRpYWxzKHN0b3JlZENyZWRlbnRp
YWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogCi0gICAgUmVmUHRyPFJlc291cmNlSGFu
ZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVz
dCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENv
bnRlbnRTbmlmZiovKSk7CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4gaGFuZGxl
ID0gYWRvcHRSZWYobmV3IE5ldHdvcmtSZXNvdXJjZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBj
bGllbnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9hZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVu
dFNuaWZmKi8pKTsKIAogICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKQEAgLTQ0Myw3ICs0NDMsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgIGRhdGEuc3dhcChjbGllbnQtPm11dGFibGVE
YXRhKCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpCiB7CiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKIApAQCAtNTAz
LDcgKzUwMyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgfQogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChj
bGllbnQoKSk7CiAgICAgQVNTRVJUKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CkBA
IC01MTUsNyArNTE1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIFsoaWQpZGVsZWdhdGUo
KSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVI
VFRQQm9keSldOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UoKQogewogICAgIEFTU0VSVChjbGllbnQoKSk7CiAgICAgQVNTRVJUKGNsaWVudCgp
LT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CkBAIC01MjMsMTMgKzUyMywxMyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgW2RlbGVnYXRlKCkg
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VdOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewogICAgIEFTU0VSVCghY2xpZW50KCktPnVz
ZXNBc3luY0NhbGxiYWNrcygpKTsKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPnNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGNoYWxsZW5nZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fY3VycmVudE1hY0NoYWxsZW5nZSk7CiAg
ICAgQVNTRVJUKGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZS5pc051bGwoKSk7CkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICAgICAgY2xpZW50KCktPmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBkLT5tX2N1cnJlbnRXZWJDaGFsbGVu
Z2UpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgQVNTRVJUKGQt
Pm1fY3VycmVudE1hY0NoYWxsZW5nZSk7CiAgICAgQVNTRVJUKGQtPm1fY3VycmVudE1hY0NoYWxs
ZW5nZSA9PSBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKQEAgLTYx
Nyw3ICs2MTcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZQogfQogCiAjaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90
ZWN0aW9uU3BhY2UpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25T
cGFjZSkKIHsKICAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKSB7CiAgICAg
ICAgIGlmIChjbGllbnQoKSkKQEAgLTYyOSw3ICs2MjksNyBAQCBib29sIFJlc291cmNlSGFuZGxl
OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZQogICAgICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodGhpcywgcHJvdGVjdGlvblNwYWNlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGJvb2wgcmVzdWx0KQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKIHsKICAg
ICBBU1NFUlQoY2xpZW50KCkpOwogICAgIEFTU0VSVChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJh
Y2tzKCkpOwpAQCAtNjM4LDcgKzYzOCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKIH0KICNl
bmRpZgogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkKIHsKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZENyZWRl
bnRpYWwiLCB0aGlzKTsKIApAQCAtNjY3LDcgKzY2Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxl
OjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBMT0coTmV0d29yaywgIkhhbmRs
ZSAlcCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwiLCB0aGlzKTsK
IApAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVz
dFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhCiAgICAgY2xlYXJB
dXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNl
bGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUg
JXAgcmVjZWl2ZWRDYW5jZWxsYXRpb24iLCB0aGlzKTsKIApAQCAtNjkxLDcgKzY5MSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuCiAgICAgICAgIGNsaWVudCgpLT5yZWNlaXZlZENhbmNlbGxh
dGlvbih0aGlzLCBjaGFsbGVuZ2UpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJl
cXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSkKIHsKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCByZWNlaXZlZFJl
cXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmciLCB0aGlzKTsKIApAQCAtNzA0LDcgKzcwNCw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRI
YW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwog
fQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVj
ZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24iLCB0aGlzKTsKIApAQCAtNzE3LDcgKzcxNyw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12
b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKnJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
V2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiB7CiAgICAg
QVNTRVJUKGNsaWVudCgpKTsKICAgICBBU1NFUlQoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNr
cygpKTsKQEAgLTcyOSw3ICs3MjksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdp
bGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogICAgIAogI2lm
IEVOQUJMRShXRUJfVElNSU5HKQogICAgIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVj
dGlvblRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBSZXNvdXJjZUxvYWRUaW1p
bmcmIHRpbWluZykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGlt
aW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEsIFJlc291cmNlTG9hZFRpbWluZyYgdGlt
aW5nKQogewogICAgIGlmICghdGltaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzU1LDcg
Kzc1NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5T
RGljdGlvbmFyeSAqdGltaW5nRGF0YSwgUmVzb3VyY2VMCiAgICAgdGltaW5nLnJlc3BvbnNlU3Rh
cnQgPSByZXNwb25zZVN0YXJ0IDw9IDAgPyAwIDogKHJlc3BvbnNlU3RhcnQgLSByZWZlcmVuY2VT
dGFydCkgKiAxMDAwOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDb2xsZWN0c1RpbWlu
Z0RhdGEoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldENvbGxlY3RzVGltaW5nRGF0
YSgpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0
Y2hfb25jZSgmb25jZVRva2VuLCBeewpAQCAtNzY1LDE0ICs3NjUsMTQgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2V0Q29sbGVjdHNUaW1pbmdEYXRhKCkKIAogI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENv
bm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25u
ZWN0aW9uUmVmIGNvbm5lY3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQogewogICAg
IGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKChfX2JyaWRnZSBOU0RpY3Rpb25hcnkqKShhZG9wdENG
KF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCkpLCB0aW1p
bmcpOwogfQogICAgIAogI2Vsc2UKICAgICAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5l
Y3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3VyY2VMb2Fk
VGltaW5nJiB0aW1pbmcpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlv
blRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRUaW1p
bmcmIHRpbWluZykKIHsKICAgICBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShbY29ubmVjdGlvbiBf
dGltaW5nRGF0YV0sIHRpbWluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlLmgKaW5kZXggNGY0MTU1ZWFmZDk0NWIxYjg2MmQyOWNlODk2ZGNhZGNkYTFjNDI2Ni4u
NzdhYjU4MzNiNDMxMGYzMmRhNTczODljZDczNWIyMmY0ZWZhNThmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaApAQCAtMjksMTMgKzI5LDEzIEBACiAjaWYgIVVT
RShDRk5FVFdPUkspCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlSGFuZGxl
OworY2xhc3MgTmV0d29ya1Jlc291cmNlSGFuZGxlOwogfQogCiBAaW50ZXJmYWNlIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdh
dGU+IHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CisgICAgV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKIH0KLS0gKGlkKWluaXRXaXRoSGFu
ZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOworLSAoaWQpaW5pdFdpdGhIYW5k
bGU6KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZSopaGFuZGxlOwogLSAodm9pZClkZXRh
Y2hIYW5kbGU7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
Lm1tCmluZGV4IDNhM2M2ODNhNTIzMzdhNjAwM2I0ZmE2NWQ2ZmUxYzY5YmQwOGZjMDAuLjkwODk0
YzY1YTYyOGJmYzZmYjIxMTQyZTFhNjY2OGEzYzhkZTZhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQpAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUKIAotLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFJlc291cmNlSGFuZGxlKiloYW5kbGUKKy0g
KGlkKWluaXRXaXRoSGFuZGxlOihOZXR3b3JrUmVzb3VyY2VIYW5kbGUqKWhhbmRsZQogewogICAg
IHNlbGYgPSBbc2VsZiBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC0xNzIsNyArMTcyLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNv
dXJjZVJlc3BvbnNlKHIpOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIFJlc291cmNlSGFu
ZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNl
LnJlc291cmNlTG9hZFRpbWluZygpKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmdldENv
bm5lY3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rpb24sIHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VM
b2FkVGltaW5nKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLmgKaW5kZXggZTc0MGFhNTliZWQ2M2JhYjkwNzZmMDc5M2FiM2QwM2RlMDAy
YjA1MS4uNTU2NWU3ZWJhMmNlOGI0OTkzMzA3MDc5ZGM3NjJiMGUyNzJmZDI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLmgKQEAgLTMyLDExICszMiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU7CiB9CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
PiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOworICAgIFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CiAKICAgICAvLyBTeW5jaHJvbm91cyBk
ZWxlZ2F0ZXMgb24gb3BlcmF0aW9uIHF1ZXVlIHdhaXQgdW50aWwgbWFpbiB0aHJlYWQgc2VuZHMg
YW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLgogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV90IG1fc2Vt
YXBob3JlOwpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBCT09M
IG1fYm9vbFJlc3VsdDsKIH0KIAotLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiloYW5kbGU7CistIChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlKiloYW5kbGU7CiAtICh2b2lkKWRldGFjaEhhbmRsZTsKIC0gKHZvaWQp
Y29udGludWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3Q7CiAtICh2
b2lkKWNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDkyOGQ0
MTczZDgyMTNiODcyYjVhNGRmNTgxNTdjODFkZmVjODA4OTguLjJlYTdjZGIxZTAzZWI2YjEwYzJk
MWNjODRiNTc2NTFhOGYxNzg2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTQ3LDcgKzQ3LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUKIAotLSAoaWQpaW5pdFdpdGhIYW5kbGU6
KFJlc291cmNlSGFuZGxlKiloYW5kbGUKKy0gKGlkKWluaXRXaXRoSGFuZGxlOihOZXR3b3JrUmVz
b3VyY2VIYW5kbGUqKWhhbmRsZQogewogICAgIHNlbGYgPSBbc2VsZiBpbml0XTsKICAgICBpZiAo
IXNlbGYpCkBAIC0yMTQsNyArMjE0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAg
ICAgIAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uocik7CiAjaWYg
RU5BQkxFKFdFQl9USU1JTkcpCi0gICAgICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9u
VGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpKTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5n
RGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKTsK
ICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcAppbmRleCBkMTA4NTBkNjI1OWRlMTRmNjBlMzRlYTM4ZWU3ZDQ4ZWM0ZWI2
MmYxLi45NDczNGU3ZmRiOGY3NjE3M2NkNDllMzg0MzllNWExNTdkNjhiMzhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcApAQCAtMjI3LDE1ICsyMjcsMTUgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9jZXJ0aWZpY2F0ZXM7CiB9OwogCi1zdGF0aWMgYm9vbCBjcmVhdGVTb3VwUmVx
dWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBib29sIGlzSFRUUEZhbWlseVJlcXVlc3QpOwotc3RhdGljIHZvaWQgY2xlYW51cFNv
dXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiwgYm9vbCBpc0Rlc3Ryb3lpbmcgPSBm
YWxzZSk7CitzdGF0aWMgYm9vbCBjcmVhdGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUo
TmV0d29ya1Jlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBpc0hU
VFBGYW1pbHlSZXF1ZXN0KTsKK3N0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlv
bihOZXR3b3JrUmVzb3VyY2VIYW5kbGUqLCBib29sIGlzRGVzdHJveWluZyA9IGZhbHNlKTsKIHN0
YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdw
b2ludGVyKTsKIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0
KiwgZ3BvaW50ZXIpOwogc3RhdGljIGdib29sZWFuIHJlcXVlc3RUaW1lb3V0Q2FsbGJhY2sodm9p
ZCopOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogc3RhdGljIGludCAgbWlsaXNlY29uZHNTaW5j
ZVJlcXVlc3QoZG91YmxlIHJlcXVlc3RUaW1lKTsKICNlbmRpZgotc3RhdGljIHZvaWQgY29udGlu
dWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSopOworc3RhdGljIHZvaWQg
Y29udGludWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUqKTsK
IAogc3RhdGljIGJvb2wgZ0lnbm9yZVNTTEVycm9ycyA9IGZhbHNlOwogCkBAIC0yNjMsNyArMjYz
LDcgQEAgc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uRnJvbUNvbnRleHQoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuc291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKIH0KIAotUmVzb3VyY2VIYW5kbGU6On5S
ZXNvdXJjZUhhbmRsZSgpCitOZXR3b3JrUmVzb3VyY2VIYW5kbGU6On5OZXR3b3JrUmVzb3VyY2VI
YW5kbGUoKQogewogICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbih0aGlzLCB0cnVlKTsK
IH0KQEAgLTI3Myw3ICsyNzMsNyBAQCBTb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6c291cFNlc3Npb24oKQogICAgIHJldHVybiBzZXNzaW9uRnJvbUNvbnRleHQobV9jb250ZXh0
LmdldCgpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWxsZWRPckNsaWVudGxlc3MoKQog
ewogICAgIGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgxLDcgKzI4
MSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpCiAgICAg
cmV0dXJuIGdldEludGVybmFsKCktPm1fY2FuY2VsbGVkOwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjplbnN1cmVSZWFkQnVmZmVyKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjplbnN1
cmVSZWFkQnVmZmVyKCkKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50
ZXJuYWwoKTsKIApAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBib29sIGlzQXV0aGVudGljYXRp
b25GYWlsdXJlU3RhdHVzQ29kZShpbnQgaHR0cFN0YXR1c0NvZGUpCiAKIHN0YXRpYyB2b2lkIGdv
dEhlYWRlcnNDYWxsYmFjayhTb3VwTWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSkKIHsK
LSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUq
PihkYXRhKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0
PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogICAgIGlmICghaGFuZGxlIHx8IGhhbmRs
ZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzMxLDcg
KzMzMSw3IEBAIHN0YXRpYyB2b2lkIGdvdEhlYWRlcnNDYWxsYmFjayhTb3VwTWVzc2FnZSogbWVz
c2FnZSwgZ3BvaW50ZXIgZGF0YSkKICAgICBkLT5tX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVz
c2FnZShtZXNzYWdlKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlBdXRoZW50aWNhdGlvblRvUmVx
dWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgcmVkaXJlY3QpCitzdGF0aWMgdm9pZCBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgcmVkaXJlY3QpCiB7CiAgICAgLy8gbV91c2VyL21fcGFzcyBhcmUgY3JlZGVudGlhbHMgZ2l2
ZW4gbWFudWFsbHksIGZvciBpbnN0YW5jZSwgYnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gWE1M
SHR0cFJlcXVlc3Qub3BlbigpLgogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5k
bGUtPmdldEludGVybmFsKCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlB
dXRoZW50aWNhdGlvblRvUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJl
cXVlc3QKIC8vIFRoaXMgaGFwcGVucyB3aGVuIGxpYnNvdXAgaGFuZGxlcyBIVFRQIGF1dGhlbnRp
Y2F0aW9uLgogc3RhdGljIHZvaWQgcmVzdGFydGVkQ2FsbGJhY2soU291cE1lc3NhZ2UqLCBncG9p
bnRlciBkYXRhKQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxS
ZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxl
ID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7CiAgICAgaWYgKCFo
YW5kbGUgfHwgaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIHZvaWQgcmVzdGFydGVkQ2FsbGJhY2soU291
cE1lc3NhZ2UqLCBncG9pbnRlciBkYXRhKQogfQogI2VuZGlmCiAKLXN0YXRpYyBib29sIHNob3Vs
ZFJlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCitzdGF0aWMgYm9vbCBzaG91bGRSZWRp
cmVjdChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKIHsKICAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogICAgIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlID0gZC0+bV9zb3VwTWVzc2FnZS5nZXQoKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBVUkwmIG5l
d1VSTCwgYm9vbCBjcm9zc09yaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQg
Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2ls
bFNlbmRSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gd2lsbFNlbmRSZXF1ZXN0IG1pZ2h0IGNhbmNl
bCB0aGUgbG9hZC4KICAgICBpZiAoaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKQEAg
LTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUgogICAgIGhhbmRsZS0+c2Vu
ZFBlbmRpbmdSZXF1ZXN0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSkKK3N0YXRpYyB2b2lkIGRvUmVkaXJlY3QoTmV0d29ya1Jlc291cmNlSGFu
ZGxlKiBoYW5kbGUpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+
Z2V0SW50ZXJuYWwoKTsKICAgICBzdGF0aWMgY29uc3QgaW50IG1heFJlZGlyZWN0cyA9IDIwOwpA
QCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyB2b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSkKIAogc3RhdGljIHZvaWQgcmVkaXJlY3RTa2lwQ2FsbGJhY2soR09iamVjdCosIEdB
c3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFJl
c291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEp
OworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0
PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2Vs
bGVkT3JDbGllbnRsZXNzKCkpIHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9u
KGhhbmRsZS5nZXQoKSk7CkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIHZvaWQgcmVkaXJlY3RT
a2lwQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVy
IGQKIAogc3RhdGljIHZvaWQgd3JvdGVCb2R5RGF0YUNhbGxiYWNrKFNvdXBNZXNzYWdlKiwgU291
cEJ1ZmZlciogYnVmZmVyLCBncG9pbnRlciBkYXRhKQogewotICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBS
ZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3b3Jr
UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIHZvaWQgd3JvdGVCb2R5RGF0YUNhbGxiYWNr
KFNvdXBNZXNzYWdlKiwgU291cEJ1ZmZlciogYnVmZmVyLCBncG9pbnRlciBkYXQKICAgICBoYW5k
bGUtPmNsaWVudCgpLT5kaWRTZW5kRGF0YShoYW5kbGUuZ2V0KCksIGQtPm1fYm9keURhdGFTZW50
LCBkLT5tX2JvZHlTaXplKTsKIH0KIAotc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3Bl
cmF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgaXNEZXN0cm95aW5nKQorc3RhdGlj
IHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBib29sIGlzRGVzdHJveWluZykKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFs
KiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogCkBAIC01NjksNyArNTY5LDcgQEAgc3RhdGlj
IHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGJvb2wgaXNEZXN0cm95aW4KICAgICAgICAgaGFuZGxlLT5kZXJlZigpOwogfQogCi1zdGF0aWMg
Ym9vbCBoYW5kbGVVbmlnbm9yZWRUTFNFcnJvcnMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3N0
YXRpYyBib29sIGhhbmRsZVVuaWdub3JlZFRMU0Vycm9ycyhOZXR3b3JrUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSkKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJ
bnRlcm5hbCgpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gZC0+bV9y
ZXNwb25zZTsKQEAgLTU5MCw3ICs1OTAsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVVbmlnbm9yZWRU
TFNFcnJvcnMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c2l6ZV90IFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RyZWFtUG9zaXRpb24oKSBjb25zdAorc2l6
ZV90IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFN0cmVhbVBvc2l0aW9uKCkgY29uc3QK
IHsKICAgICBHSW5wdXRTdHJlYW0qIGJhc2VTdHJlYW0gPSBkLT5tX2lucHV0U3RyZWFtLmdldCgp
OwogICAgIHdoaWxlICghR19JU19TRUVLQUJMRShiYXNlU3RyZWFtKSAmJiBHX0lTX0ZJTFRFUl9J
TlBVVF9TVFJFQU0oYmFzZVN0cmVhbSkpCkBAIC02MDQsNyArNjA0LDcgQEAgc2l6ZV90IFJlc291
cmNlSGFuZGxlOjpjdXJyZW50U3RyZWFtUG9zaXRpb24oKSBjb25zdAogCiBzdGF0aWMgdm9pZCBu
ZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2soR09iamVjdCogLypzb3VyY2UqLywgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAg
IFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PE5ldHdv
cmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2VsbGVkT3JD
bGllbnRsZXNzKCkpIHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRs
ZS5nZXQoKSk7CkBAIC02NDUsNyArNjQ1LDcgQEAgc3RhdGljIHZvaWQgbmV4dE11bHRpcGFydFJl
c3BvbnNlUGFydENhbGxiYWNrKEdPYmplY3QqIC8qc291cmNlKi8sIEdBc3luY1Jlc3VsdCoKIAog
c3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5k
bGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlZlB0cjxOZXR3
b3JrUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSo+KGRhdGEpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkp
IHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CkBA
IC03MTIsNyArNzEyLDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0
KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUpCitzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHdv
cmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9y
Q2xpZW50bGVzcygpKSB7CiAgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5k
bGUpOwpAQCAtODI4LDE0ICs4MjgsMTQgQEAgc3RhdGljIGludCBtaWxpc2Vjb25kc1NpbmNlUmVx
dWVzdChkb3VibGUgcmVxdWVzdFRpbWUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oKG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gcmVxdWVzdFRpbWUpICogMTAwMC4wKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KCkKK3ZvaWQgTmV0d29ya1Jl
c291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QoKQogewogICAgIGdldEludGVybmFsKCktPm1f
cmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkucmVxdWVzdFN0YXJ0ID0gbWlsaXNlY29uZHNT
aW5jZVJlcXVlc3QobV9yZXF1ZXN0VGltZSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5ldHdvcmtFdmVu
dENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgR1NvY2tldENsaWVudEV2ZW50IGV2ZW50LCBHSU9TdHJl
YW0qLCBncG9pbnRlciBkYXRhKQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0
aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7CiAg
ICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtODg2LDcgKzg4Niw3IEBAIHN0
YXRpYyB2b2lkIG5ldHdvcmtFdmVudENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgR1NvY2tldENsaWVu
dEV2ZW50IGV2ZW50LCBHSU9TdHJlCiB9CiAjZW5kaWYKIAotc3RhdGljIGJvb2wgY3JlYXRlU291
cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3N0YXRpYyBib29sIGNyZWF0ZVNvdXBNZXNzYWdl
Rm9ySGFuZGxlQW5kUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChoYW5kbGUpOwogCkBAIC05
NDQsNyArOTQ0LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVBbmRS
ZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFIKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9v
bCBpc0hUVFBGYW1pbHlSZXF1ZXN0KQorc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RBbmRN
ZXNzYWdlRm9ySGFuZGxlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgaXNIVFRQRmFtaWx5UmVxdWVzdCkKIHsKICAgICBS
ZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogCkBAIC05
NzAsNyArOTcwLDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9y
SGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFIKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OnN0YXJ0KCkKIHsKICAgICBBU1NFUlQoIWQtPm1fc291cE1lc3NhZ2UpOwogCkBAIC0x
MDA0LDcgKzEwMDQsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNlbmRQZW5kaW5nUmVxdWVzdCgpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2VuZFBlbmRpbmdSZXF1ZXN0KCkKIHsKICNpZiBF
TkFCTEUoV0VCX1RJTUlORykKICAgICBtX3JlcXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7CkBAIC0xMDI0LDcgKzEwMjQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpz
ZW5kUGVuZGluZ1JlcXVlc3QoKQogICAgIHNvdXBfcmVxdWVzdF9zZW5kX2FzeW5jKGQtPm1fc291
cFJlcXVlc3QuZ2V0KCksIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHNlbmRSZXF1ZXN0Q2FsbGJh
Y2ssIHRoaXMpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAgZC0+bV9jYW5jZWxsZWQgPSB0cnVl
OwogICAgIGlmIChkLT5tX3NvdXBNZXNzYWdlKQpAQCAtMTAzMywyMiArMTAzMywyMiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChk
LT5tX2NhbmNlbGxhYmxlLmdldCgpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKIHsKICAgICByZXR1cm4gKCFjbGllbnQoKSB8fCBjbGll
bnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcykpICYmIGZpcnN0UmVxdWVzdCgp
LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0KQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKICAgICBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRl
SG9zdHMoKS5hZGQoaG9zdC5sb3dlcigpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0
Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBHVGxzQ2VydGlmaWNhdGUqIGNl
cnRpZmljYXRlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmlj
YXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKIHsK
ICAgICBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5hZGQoaG9zdC5sb3dlcigpLCBIb3N0VExTQ2VydGlm
aWNhdGVTZXQoKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChjZXJ0aWZpY2F0ZSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhib29sIGlnbm9yZVNTTEVycm9ycykK
K3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25v
cmVTU0xFcnJvcnMpCiB7CiAgICAgZ0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9yczsK
IH0KQEAgLTEwNTYsMTEgKzEwNTYsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3Jl
U1NMRXJyb3JzKGJvb2wgaWdub3JlU1NMRXJyb3JzKQogI2lmIFBMQVRGT1JNKEdUSykKIHZvaWQg
Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmVDYWxsYmFjayhjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsLCB2b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFJlc291cmNlSGFu
ZGxlKj4oZGF0YSktPmNvbnRpbnVlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNy
ZWRlbnRpYWwpOworICAgIHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEp
LT5jb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjcmVkZW50aWFsKTsK
IH0KICNlbmRpZgogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsRnJvbVBlcnNp
c3RlbnRTdG9yYWdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWxG
cm9tUGVyc2lzdGVudFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2N1cnJlbnRXZWJDaGFs
bGVuZ2UuaXNOdWxsKCkpOwogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Ug
PSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2U7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBDcmVkZW50aWFsJgogICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpCiB7CiAgICAgQVNTRVJUKGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZS5pc051bGwoKSk7
CiAKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgY29u
dGludWVEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ3JlZGVudGlhbCgpKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAg
ICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+
bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0
IEF1dGhlbnRpY2EKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAg
IEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1f
Y3VycmVudFdlYkNoYWxsZW5nZSkKQEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAg
QVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9j
dXJyZW50V2ViQ2hhbGxlbmdlKQpAQCAtMTE5NCwxNyArMTE5NCwxNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbgogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNl
aXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVu
Z2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgYm9vbCB3YWl0aW5nVG9TZW5kUmVxdWVzdChS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorc3RhdGljIGJvb2wgd2FpdGluZ1RvU2VuZFJlcXVlc3Qo
TmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBjaGVj
ayBmb3IgZC0+bV9zb3VwUmVxdWVzdCBiZWNhdXNlIHRoZSByZXF1ZXN0IG1heSBoYXZlIHJhaXNl
ZCBhIGZhaWx1cmUKICAgICAvLyAoZm9yIGV4YW1wbGUgaW52YWxpZCBVUkxzKS4gV2UgY2Fubm90
ICBzaW1wbHkgY2hlY2sgZm9yIGQtPm1fc2NoZWR1bGVkRmFpbHVyZSBiZWNhdXNlCkBAIC0xMjEy
LDcgKzEyMTIsNyBAQCBzdGF0aWMgYm9vbCB3YWl0aW5nVG9TZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSogaGFuZGxlKQogICAgIHJldHVybiBoYW5kbGUtPmdldEludGVybmFsKCktPm1fc291cFJl
cXVlc3QgJiYgIWhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9jYW5jZWxsYWJsZTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzTG9h
ZGluZykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRp
bmcoYm9vbCBkZWZlcnNMb2FkaW5nKQogewogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI0MSwxMiArMTI0MSwxMiBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQogICAg
IH0KIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKK2Jvb2wgTmV0d29y
a1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3Im
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQog
ewogICAgIEFTU0VSVCghbG9hZGluZ1N5bmNocm9ub3VzUmVxdWVzdCk7CiAgICAgaWYgKGxvYWRp
bmdTeW5jaHJvbm91c1JlcXVlc3QpIC8vIEluIHByYWN0aWNlIHRoaXMgY2Fubm90IGhhcHBlbiwg
YnV0IGlmIGZvciBzb21lIHJlYXNvbiBpdCBkb2VzLApAQCAtMTI1OCw3ICsxMjU4LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXgKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgdGhlIHJl
cXVlc3QgaGFzIGFscmVhZHkgZmFpbGVkLCBkbyBub3QgcnVuIHRoZSBtYWluIGxvb3AsIG9yIGVs
c2Ugd2UnbGwgYmxvY2sgaW5kZWZpbml0ZWx5LgotICAgIGlmIChoYW5kbGUtPmQtPm1fc2NoZWR1
bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKQorICAgIGlmIChoYW5kbGUtPmlzU2NoZWR1bGVk
VG9GYWlsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN5bmNMb2FkZXIucnVuKCk7CkBAIC0x
MjY2LDcgKzEyNjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogCiBzdGF0aWMgdm9pZCBy
ZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVy
IGRhdGEpCiB7Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5k
bGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwog
CiAgICAgaWYgKGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpIHsKICAgICAgICAgY2xl
YW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CkBAIC0xMzI3LDE0ICsxMzI3
LDE0IEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBh
c3luY1Jlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgZC0+bV9jYW5jZWxsYWJsZS5nZXQo
KSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChjbGllbnQoKSk7CiAg
ICAgQVNTRVJUKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CiAgICAgY29udGludWVB
ZnRlcldpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhh
bmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsKICAgICBBU1NFUlQoY2xpZW50
KCkpOwogICAgIEFTU0VSVChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOwpAQCAtMTM0
Myw3ICsxMzQzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKQogCiBzdGF0aWMgZ2Jvb2xlYW4gcmVxdWVzdFRpbWVvdXRDYWxsYmFjayhncG9pbnRl
ciBkYXRhKQogewotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nh
c3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFu
ZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihkYXRhKTsK
ICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJv
cjo6dGltZW91dEVycm9yKGhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9maXJzdFJlcXVlc3QudXJs
KCkuc3RyaW5nKCkpKTsKICAgICBoYW5kbGUtPmNhbmNlbCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IDUzYzkyOGY0Nzk3NzYyZDE4MDU2YmU1NjI3ZWZjMWI4ZWYxNGEyYjMuLjE5MWM4
NTA4ODk0MjdjODRhMGE2MjU3YWQxNmM1MDQ0M2Q1NWMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRm9yU291cFNlc3Npb24oU291CiAKIHN0YXRpYyB2
b2lkIGF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCiB7
Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRs
ZSIpKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChz
b3VwTWVzc2FnZSksICJoYW5kbGUiKSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICBoYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291cEF1dGgsIHJldHJ5aW5n
LCBoYW5kbGUuZ2V0KCkpKTsKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgYXV0aGVudGlj
YXRlQ2FsbGJhY2soU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2Fn
ZSwKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIHN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydGVkQ2Fs
bGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBTb2NrZXQq
LCBncG9pbnRlcikKIHsKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRp
Y19jYXN0PFJlc291cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qoc291cE1l
c3NhZ2UpLCAiaGFuZGxlIikpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhh
bmRsZSA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9k
YXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIpKTsKICAgICBpZiAoIWhhbmRsZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGhhbmRsZS0+ZGlkU3RhcnRSZXF1ZXN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRs
ZVdpbi5jcHAKaW5kZXggYTFhNmQ1MTk1MmYzMjFjZWQ0MDRjNjVjZDc3ZmRiMmZkMWI3NmMxNi4u
ZDNjYjQ4MjMyMDg0YzJlYmNhZWMxODA0Y2ZlODZhNGE2MWJkOGJkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2lu
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgaW5saW5lIEhJTlRFUk5FVCBjcmVhdGVJbnRl
cm5ldEhhbmRsZShjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBhc3luYwogICAgIEhJTlRF
Uk5FVCBpbnRlcm5ldEhhbmRsZSA9IEludGVybmV0T3BlblcodXNlckFnZW50U3RyaW5nLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBJTlRFUk5FVF9PUEVOX1RZUEVfUFJF
Q09ORklHLCAwLCAwLCBhc3luY2hyb25vdXMgPyBJTlRFUk5FVF9GTEFHX0FTWU5DIDogMCk7CiAK
ICAgICBpZiAoYXN5bmNocm9ub3VzKQotICAgICAgICBJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNr
KGludGVybmV0SGFuZGxlLCAmUmVzb3VyY2VIYW5kbGU6OmludGVybmV0U3RhdHVzQ2FsbGJhY2sp
OworICAgICAgICBJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrKGludGVybmV0SGFuZGxlLCAmTmV0
d29ya1Jlc291cmNlSGFuZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNrKTsKIAogICAgIHJldHVy
biBpbnRlcm5ldEhhbmRsZTsKIH0KQEAgLTEzNSwyNiArMTM1LDI2IEBAIFJlc291cmNlSGFuZGxl
SW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKIH0KIAotUmVzb3VyY2VIYW5k
bGU6On5SZXNvdXJjZUhhbmRsZSgpCitOZXR3b3JrUmVzb3VyY2VIYW5kbGU6On5OZXR3b3JrUmVz
b3VyY2VIYW5kbGUoKQogewogfQogCiBzdGF0aWMgdm9pZCBjYWxsT25SZWRpcmVjdCh2b2lkKiBj
b250ZXh0KQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGNvbnRleHQpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxl
ID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oY29udGV4dCk7CiAgICAgaGFu
ZGxlLT5vblJlZGlyZWN0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGNhbGxPblJlcXVlc3RDb21wbGV0
ZSh2b2lkKiBjb250ZXh0KQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNf
Y2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnRleHQpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oY29udGV4dCk7
CiAgICAgaGFuZGxlLT5vblJlcXVlc3RDb21wbGV0ZSgpOwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNrKEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSwgRFdP
UkRfUFRSIGNvbnRleHQsIERXT1JEIGludGVybmV0U3RhdHVzLAordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmludGVybmV0U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVUIGludGVybmV0SGFuZGxl
LCBEV09SRF9QVFIgY29udGV4dCwgRFdPUkQgaW50ZXJuZXRTdGF0dXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCBzdGF0dXNJbmZv
cm1hdGlvbiwgRFdPUkQgc3RhdHVzSW5mb3JtYXRpb25MZW5ndGgpCiB7Ci0gICAgUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb250ZXh0
KTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oY29udGV4dCk7CiAKICAgICBzd2l0Y2ggKGludGVybmV0
U3RhdHVzKSB7CiAgICAgY2FzZSBJTlRFUk5FVF9TVEFUVVNfUkVESVJFQ1Q6CkBAIC0xNzEsNyAr
MTcxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aW50ZXJuZXRTdGF0dXNDYWxsYmFjayhISU5U
RVJORVQgaW50ZXJuZXRIYW5kbGUsIERXT1JEX1BUUgogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6b25SZWRpcmVjdCgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6b25SZWRp
cmVjdCgpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBmaXJzdFJlcXVlc3Qo
KTsKICAgICBuZXdSZXF1ZXN0LnNldFVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCBkLT5tX3JlZGly
ZWN0VXJsKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6b25SZWRp
cmVjdCgpCiAgICAgICAgIHJlc291cmNlSGFuZGxlQ2xpZW50LT53aWxsU2VuZFJlcXVlc3QodGhp
cywgbmV3UmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpvblJl
cXVlc3RDb21wbGV0ZSgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6b25SZXF1ZXN0Q29t
cGxldGUoKQogewogICAgIGlmICghZC0+bV9pbnRlcm5ldEhhbmRsZSkgeyAvLyAwIGlmIGNhbmNl
bGVkLgogICAgICAgICBkZXJlZigpOyAvLyBiYWxhbmNlcyByZWYgaW4gc3RhcnQKQEAgLTI2NCw3
ICsyNjQsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpvblJlcXVlc3RDb21wbGV0ZSgpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCitib29sIE5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogewogICAgIGlmIChmaXJzdFJlcXVlc3QoKS51
cmwoKS5pc0xvY2FsRmlsZSgpIHx8IGZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNEYXRh
KCkpIHsKICAgICAgICAgcmVmKCk7IC8vIGJhbGFuY2VkIGJ5IGRlcmVmIGluIGZpbGVMb2FkVGlt
ZXIKQEAgLTM1Myw5ICszNTMsOSBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGltZXIoVGlt
ZXI8UmVzb3VyY2VIYW5kbGU+KikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpmaWxlTG9h
ZFRpbWVyKFRpbWVyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4qKQogewotICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VI
YW5kbGU+IHByb3RlY3Rvcih0aGlzKTsKICAgICBkZXJlZigpOyAvLyBiYWxhbmNlcyByZWYgaW4g
c3RhcnQKIAogICAgIGlmIChmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7
CkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZmlsZUxvYWRUaW1lcihU
aW1lcjxSZXNvdXJjZUhhbmRsZT4qKQogICAgIGNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5nKHRo
aXMsIDApOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7CiAgICAgaWYgKGQtPm1fcmVxdWVzdEhhbmRsZSkg
ewogICAgICAgICBkLT5tX2ludGVybmV0SGFuZGxlID0gMDsKQEAgLTQxMywxOCArNDEzLDE4IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgICAgIGQtPm1fZmlsZUxvYWRUaW1l
ci5zdG9wKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNl
U3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hh
cj4mIGRhdGEpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3Rvcjxj
aGFyPiYgZGF0YSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RvcmVkQ3JlZGVudGlhbHMpOwogCiAg
ICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyIHN5bmNMb2FkZXIoZXJyb3IsIHJlc3BvbnNlLCBk
YXRhLCByZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7Ci0gICAgUmVzb3VyY2VIYW5kbGUgaGFuZGxl
KGNvbnRleHQsIHJlcXVlc3QsICZzeW5jTG9hZGVyLCB0cnVlLCBmYWxzZSk7CisgICAgTmV0d29y
a1Jlc291cmNlSGFuZGxlIGhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCAmc3luY0xvYWRlciwgdHJ1
ZSwgZmFsc2UpOwogCiAgICAgaGFuZGxlLnNldFN5bmNocm9ub3VzSW50ZXJuZXRIYW5kbGUoc3lu
Y0xvYWRlci5pbnRlcm5ldEhhbmRsZSgpKTsKICAgICBoYW5kbGUuc3RhcnQoKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6c2V0U3luY2hyb25vdXNJbnRlcm5ldEhhbmRsZShISU5URVJORVQg
aW50ZXJuZXRIYW5kbGUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0U3luY2hyb25v
dXNJbnRlcm5ldEhhbmRsZShISU5URVJORVQgaW50ZXJuZXRIYW5kbGUpCiB7CiAgICAgZC0+bV9p
bnRlcm5ldEhhbmRsZSA9IGludGVybmV0SGFuZGxlOwogICAgIGQtPm1fbG9hZFN5bmNocm9ub3Vz
bHkgPSB0cnVlOwpAQCAtNDM1LDEyICs0MzUsMTIgQEAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBT
dHJpbmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6
OmxvYWRzQmxvY2tlZCgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2Vk
KCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRm
b3JtU2V0RGVmZXJzTG9hZGluZyhib29sKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDZlZGMwNzBkNGE5YjNlNWE3
ZjliNTBlYWM2NDRlM2UzMzE2Y2U5OC4uOGUzMDhhYTBmNzE3ODA2ZTZiM2UzMTRmMDAwZWQ3NTFj
MDg0MDI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTAyOSw3ICsx
MDI5LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVj
ZXNzYXJ5KCkKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKCFXZWJLaXRMaW5rZWRPbk9y
QWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9DT05URU5UX1NOSUZGSU5HX0ZPUl9G
SUxFX1VSTFMpKQotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6Zm9yY2VDb250ZW50U25pZmZpbmco
KTsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpmb3JjZUNvbnRlbnRTbmlmZmluZygp
OwogI2VuZGlmCiAKICNpZiBVU0UoR0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcAppbmRleCBhMzY4MGUxMGRlNjVjZThmMThiNDE3YzRlOTlmMGRjMzYyYTJm
ODYwLi40NTI4ODI5YTQ2MzUzNzU2ZTk2MTJjOWM0YzYzYzc4NGJkYmFiM2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0VmFsdWUo
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEFs
bG93c0FueUhUVFBTQ2VydGlmaWNhdGUodm9pZCkKIHsKLSAgICBSZXNvdXJjZUhhbmRsZTo6c2V0
SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUobV9yZXF1ZXN0LnVybCgpLmhvc3QoKSk7Cisg
ICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0
ZShtX3JlcXVlc3QudXJsKCkuaG9zdCgpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzcz
LDcgKzM3Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OnNldENsaWVudENlcnRpZmljYXRlKC8qIFtpbl0gKi8KIAogICAgIFBDQ0VSVF9DT05URVhU
IGNlcnRDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxQQ0NFUlRfQ09OVEVYVD4oY2VydCk7CiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2VydERhdGEgPSBXZWJDb3JlOjpjb3B5Q2VydGlmaWNh
dGVUb0RhdGEoY2VydENvbnRleHQpOwotICAgIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0
aWZpY2F0ZShtX3JlcXVlc3QudXJsKCkuaG9zdCgpLCBjZXJ0RGF0YS5nZXQoKSk7CisgICAgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShtX3JlcXVlc3QudXJsKCku
aG9zdCgpLCBjZXJ0RGF0YS5nZXQoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcAppbmRleCAxYmI4MzUyYjRhNTVhZTE1NDgxM2ExMmExY2I3MTE5NGQ5YmFhMWQxLi5h
NjZjZDM4OThiY2MzMTE3MjAzNjdkZGZlZGY3ODk0ZTY3Y2RkMzYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwCkBAIC0xMjQsMTIgKzEyNCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNl
dENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiB7Ci0gICAgUmVzb3Vy
Y2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOworICAgIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGlnbm9yZVRMU0Vycm9ycyk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9y
SG9zdChjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5n
JiBob3N0KQogewotICAgIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShob3N0
LCBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7CisgICAgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShob3N0LCBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNh
dGUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5z
KHVpbnQzMl90IGNhY2hlc1RvQ2xlYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAppbmRleCAwYWFhMzVjYjVhZDgyZjM3OWQ2NTYxMzk1
ZmIyZTg0YjM0NTA4MTU2Li5kYjI4YTk0OWRkNGRkODFhZjg4ZWFlNGEwODlmYTdkMWQ5MzA2Njcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291
cC5jcHAKQEAgLTE4OSwxMyArMTg5LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1UZXJt
aW5hdGUoKQogdm9pZCBXZWJQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVU
TFNFcnJvcnMpCiB7CiAgICAgQVNTRVJUKCF1c2VzTmV0d29ya1Byb2Nlc3MoKSk7Ci0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMp
OworICAgIFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3Jz
KGlnbm9yZVRMU0Vycm9ycyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hU
VFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7CiAgICAgQVNTRVJUKCF1c2VzTmV0
d29ya1Byb2Nlc3MoKSk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENl
cnRpZmljYXRlKGhvc3QsIGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKKyAgICBXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGhvc3QsIGNl
cnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239205</attachid>
            <date>2014-10-03 09:01:20 -0700</date>
            <delta_ts>2016-06-21 07:53:28 -0700</delta_ts>
            <desc>Added missing cf declaration</desc>
            <filename>bug-137005-20141003180120.patch</filename>
            <type>text/plain</type>
            <size>129146</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiZThiZjRjMmY1N2M2
OTMyOGE4NDc2OTBjOGFlOWEzMDk5NWNmNi4uMGQ3ODE2YmQ5Yzc2M2NlZGU3Mjg0ZDQwZTkxMjU1
MWZhODJiZWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNCBAQAorMjAxNC0wOS0yMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFNwbGl0
IFJlc291cmNlSGFuZGxlIGluIGFuIGFic3RyYWN0IGNsYXNzIGFuZCBhIG5ldHdvcmstc3BlY2lm
aWMgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNzAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVkIGFsbCBuZXR3b3JrIHNwZWNpZmljIGNvZGUgZnJvbSBSZXNvdXJjZUhhbmRsZSB0byBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGUuCisgICAgICAgIFRoaXMgdHJpZ2dlcnMgcmVuYW1pbmcgaW4g
dGhlIG5ldHdvcmsgY29kZSBmb3IgYWxsIGJpbmRpbmdzLgorICAgICAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCBBUEkgcmVtYWlucyB1bmNoYW5nZWQuIAorCisgICAgICAgIEFkZGVkIG5ldyBtZXRo
b2QgaXNTY2hlZHVsZWRUb0ZhaWwgdG8gYWJzdHJhY3Qgc29tZSBSZXNvdXJjZUhhbmRsZSBjb2Rl
LgorICAgICAgICBUaGlzIHBhdGNoIHByZXBhcmVzIEJsb2JSZXNvdXJjZUhhbmRsZSBtaWdyYXRp
b24gZnJvbSBOZXR3b3JrUmVzb3VyY2VIYW5kbGUgdG8gUmVzb3VyY2VIYW5kbGUuCisKKyAgICAg
ICAgRXhpc3RpbmcgdGVzdHMgc2hvdWxkIGNvdmVyIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWU6OmNhblJ1bk1vZGFsTm93KTogUmVzb3VyY2VIYW5kbGUgdG8gTmV0d29ya1Jl
c291cmNlSGFuZGxlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291
cmNlSGFuZGxlKTogRGl0dG8uIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
RmFpbHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmlzU2No
ZWR1bGVkVG9GYWlsKTogSW5zZXJ0ZWQgdG8gbWluaW1pemUgY29kZSBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZpcnN0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsYXN0SFRUUE1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Omhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2xlYXJBdXRo
ZW50aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNo
b3VsZENvbnRlbnRTbmlmZik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOiBBZGRlZCBuZXcgTmV0d29ya1Jlc291cmNlSGFu
ZGxlIGNsYXNzIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oOiBSZXNvdXJjZUhhbmRsZSB0byBOZXR3b3JrUmVzb3VyY2VIYW5k
bGUuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhh
bmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0b3JhZ2VTZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VDb25u
ZWN0aW9uRm9yRG93bmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlI
VFRQU0NlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6fk5ldHdvcmtSZXNv
dXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0Fu
eUhUVFBTQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZv
cm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENoYWxsZW5nZVJlamVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUmVz
b3VyY2VIYW5kbGVJT1MubW06IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNV
UkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWwp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERl
ZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpz
Y2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjptYWtlRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzeW5jaHJvbm91
c0xvYWRSdW5Mb29wTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0Rh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDb2xsZWN0
c1RpbWluZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbTogRGl0dG8uCisgICAgICAg
ICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZl
UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6On5OZXR3b3JrUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpj
YW5jZWxsZWRPckNsaWVudGxlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
SGFuZGxlOjplbnN1cmVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdvdEhlYWRlcnND
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc3RhcnRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnNob3VsZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZG9SZWRpcmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZWRpcmVjdFNraXBDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjp3cm90ZUJv
ZHlEYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVVuaWdub3JlZFRMU0Vycm9ycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdHJlYW1Qb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpjb250aW51ZUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNv
dXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVT
b3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNlbmRQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0
aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEln
bm9yZVNTTEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNp
c3RlbnRTdG9yZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6Y29udGludWVEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVz
dFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OndhaXRpbmdUb1NlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVxdWVzdFRpbWVvdXRDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6YXV0aGVudGljYXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6cmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93
aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUludGVybmV0SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25SZWRp
cmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25SZXF1ZXN0Q29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6b25SZWRpcmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Om9uUmVxdWVzdENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlSGFuZGxlOjpmaWxlTG9hZFRpbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
c2V0U3luY2hyb25vdXNJbnRlcm5ldEhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyk6CisKIDIwMTQtMDktMzAg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQ1NTIEpJ
VDogRW5hYmxlIG11bHRpcGxlIHN0YWNrIHJlZmVyZW5jZXMgYWxsb2NhdGlvbiBieSBhbGxvY2F0
ZVVuaW5pdGlhbGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4ZjkyNWQxMTUxNmQxMzIxMThjY2Mx
ZDQxZWIwMzQxOWM1Yjk2ZjQzLi5kYWE0MmI0ZDBjMmUzNGUyYmYyNGQ1NjkxODI2NGQ3Y2Q2OWY5
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDktMjMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBTcGxpdCBS
ZXNvdXJjZUhhbmRsZSBpbiBhbiBhYnN0cmFjdCBjbGFzcyBhbmQgYSBuZXR3b3JrLXNwZWNpZmlj
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzcwMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKTogUmVuYW1lZCBSZXNvdXJjZUhhbmRsZSB0
byBOZXR3b3JrUmVzb3VyY2VIYW5kbGUuCisKIDIwMTQtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBF
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWMxMzQ0NzVlYTU3M2UwNjMwY2U4OGE0Yzg1NTNmMTEzYzIz
ZWQ0YS4uYTUyY2UyMGEzODc0MjJmNWQyMGQwNzllOTUzZTU5NDg5OTA5NGIzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA5LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgU3BsaXQgUmVzb3VyY2VIYW5kbGUgaW4gYW4g
YWJzdHJhY3QgY2xhc3MgYW5kIGEgbmV0d29yay1zcGVjaWZpYyBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpzZXRJZ25vcmVUTFNFcnJvcnMpOiBSZW5hbWVkIFJlc291cmNlSGFuZGxlIHRvIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6IERpdHRvCisgICAgICAgICogV2ViUHJvY2Vz
cy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
c2V0SWdub3JlVExTRXJyb3JzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6IERpdHRvLgorCiAyMDE0LTA5
LTMwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF0gUmVuYW1lIFRFU1RfVEhFTUVfRElSIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDk0M2MzMTE5NzkyZDEyZmY3ZTQxNjczZjk4ZGM5ZDMwZmY0YmRiMTMuLjU4ODYzZTUwZjY0N2Ix
YThhNzNiMjdiODZlMjg0MTIxMWMxMWFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zODIs
MTEgKzM4Miw5IEBAIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMUV2CiBfX1pON1dlYkNv
cmUxNFJlc291cmNlQnVmZmVyRDJFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEyZmly
c3RSZXF1ZXN0RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxNnNldERlZmVyc0xvYWRp
bmdFYgotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTIwZm9yY2VDb250ZW50U25pZmZpbmdF
dgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTIzY29udGludWVXaWxsU2VuZFJlcXVlc3RF
UktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyNWxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHlFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU18xNVJl
c291cmNlUmVxdWVzdEVOU18xN1N0b3JlZENyZWRlbnRpYWxzRVJOU18xM1Jlc291cmNlRXJyb3JF
Uk5TXzE2UmVzb3VyY2VSZXNwb25zZUVSTjNXVEY2VmVjdG9ySWNMbTBFTlNCXzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjZjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZUV2Ci1fX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjZzeW5jaHJvbm91c0xv
YWRSdW5Mb29wTW9kZUV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlNDVjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VFYgogX19aTjdXZWJDb3JlMTRSZXNv
dXJjZUhhbmRsZTZjcmVhdGVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU18xNVJlc291cmNl
UmVxdWVzdEVQTlNfMjBSZXNvdXJjZUhhbmRsZUNsaWVudEViYgogX19aTjdXZWJDb3JlMTRSZXNv
dXJjZUxvYWRlcjE0Y2FuY2VsbGVkRXJyb3JFdgpAQCAtOTA2LDYgKzkwNCw4IEBAIF9fWk43V2Vi
Q29yZTIxRGlzcGxheVJlZnJlc2hNb25pdG9yRDJFdgogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVz
c3VyZUhhbmRsZXIxMlJlbGllZkxvZ2dlcjE2c19sb2dnaW5nRW5hYmxlZEUKIF9fWk43V2ViQ29y
ZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMTNyZWxlYXNlTWVtb3J5RWIKIF9fWk43V2ViQ29yZTIx
TWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgorX19aTjdXZWJDb3JlMjFOZXR3b3JrUmVz
b3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKK19fWk43V2ViQ29yZTIxTmV0d29y
a1Jlc291cmNlSGFuZGxlMjZzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZUV2CiBfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjIxZGVmYXVsdFN0b3JhZ2VTZXNzaW9uRXYKIF9fWk43
V2ViQ29yZTIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uMjVzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
RXYKIF9fWk43V2ViQ29yZTIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uMjhjcmVhdGVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGJh
M2I3NzlhM2IyZjU3ZmRhMjZkNmZmMGIxZjI2MzM5ZTU5NGFkNWUuLmUzZmY4M2U5OGEzMmU4MWE5
MjMwNWFlNjBmNTJkM2YzYzAxMTM4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTIyOCw3
ICsyMjgsNyBAQCBib29sIENocm9tZTo6Y2FuUnVuTW9kYWxOb3coKSBjb25zdAogewogICAgIC8v
IElmIGxvYWRzIGFyZSBibG9ja2VkLCB3ZSBjYW4ndCBydW4gbW9kYWwgYmVjYXVzZSB0aGUgY29u
dGVudHMKICAgICAvLyBvZiB0aGUgbW9kYWwgZGlhbG9nIHdpbGwgbmV2ZXIgc2hvdyB1cCEKLSAg
ICByZXR1cm4gY2FuUnVuTW9kYWwoKSAmJiAhUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgp
CisgICAgcmV0dXJuIGNhblJ1bk1vZGFsKCkgJiYgIU5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9h
ZHNCbG9ja2VkKCkKICAgICAgICAgICAgJiYgY2FuUnVuTW9kYWxJZkR1cmluZ1BhZ2VEaXNtaXNz
YWwobV9wYWdlLCBDaHJvbWVDbGllbnQ6OkhUTUxEaWFsb2csIFN0cmluZygpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCmluZGV4IGM0OTRlNTJjZGE4YjI3MDAzZGNhNTNmNTU1OTI5ZmJjNGMyZGZmYjkuLmUy
MGYzMGRiMzkwNGM0OTc5Mjk1ZmI4NmEzOTgxZGE4NDlkNzU4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlcwogfQogCiBCbG9iUmVzb3Vy
Y2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9v
bCBhc3luYykKLSAgICA6IFJlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwgZmFsc2Us
IGZhbHNlKQorICAgIDogTmV0d29ya1Jlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwg
ZmFsc2UsIGZhbHNlKQogICAgICwgbV9ibG9iRGF0YShibG9iRGF0YSkKICAgICAsIG1fYXN5bmMo
YXN5bmMpCiAgICAgLCBtX2Vycm9yQ29kZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKaW5kZXggNzMyZmY3OTA0NTM5ZDRk
OGY4MDRjMjdlYTA0NjY4MzZmMGE0OWIxZC4uYTEyM2ZlZDBiMjZjYjY4Yzg4ZGU4ZGZmYTY2ZjVh
YTYwZGFjNzMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZXNvdXJjZUhhbmRsZS5oCkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IEJsb2JEYXRhSXRlbTsK
IAotY2xhc3MgQmxvYlJlc291cmNlSGFuZGxlIGZpbmFsIDogcHVibGljIEZpbGVTdHJlYW1DbGll
bnQsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZSAgeworLy8gRklYTUU6IEJsb2JSZXNvdXJjZUhhbmRs
ZSBzaG91bGQgZGVyaXZlIGZyb20gUmVzb3VyY2VIYW5kbGUKK2NsYXNzIEJsb2JSZXNvdXJjZUhh
bmRsZSBmaW5hbCA6IHB1YmxpYyBGaWxlU3RyZWFtQ2xpZW50LCBwdWJsaWMgTmV0d29ya1Jlc291
cmNlSGFuZGxlICB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYlJlc291cmNl
SGFuZGxlPiBjcmVhdGVBc3luYyhCbG9iRGF0YSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJl
c291cmNlSGFuZGxlQ2xpZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggMDFjN2Y3MmMyMjFmMTIzZDk3ODJhMjUw
MzA1ZWJmZjIxZmNiZTM2ZC4uYjFhMWE0ZDBjMzQzYzc0MTliZjAxN2I3N2MwNjgzMDYzYTkyOTYx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKQEAgLTcwLDggKzcwLDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJC
dWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2MKICAgICBi
dWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCgpLmFkZChwcm90b2NvbCwg
bG9hZGVyKTsKIH0KIAotUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
SGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250
ZW50U25pZmYpCi0gICAgOiBkKGFkb3B0UHRyKG5ldyBSZXNvdXJjZUhhbmRsZUludGVybmFsKHRo
aXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVu
dFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSkpKQorTmV0d29y
a1Jlc291cmNlSGFuZGxlOjpOZXR3b3JrUmVzb3VyY2VIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVD
bGllbnQqIGNsaWVudCwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZikKKyAgICA6IFJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudCkKKyAgICAsIGQoYWRvcHRQ
dHIobmV3IFJlc291cmNlSGFuZGxlSW50ZXJuYWwodGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xp
ZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNu
aWZmVVJMKHJlcXVlc3QudXJsKCkpKSkpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFs
aWQoKSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpAQCAt
OTEsOSArOTIsOSBAQCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIGlmIChwcm90b2NvbE1h
cEl0ZW0gIT0gYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHByb3RvY29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAot
ICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJj
ZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENv
bnRlbnRTbmlmZikpKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBuZXdIYW5k
bGUoYWRvcHRSZWYobmV3IE5ldHdvcmtSZXNvdXJjZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBj
bGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKIAotICAgIGlmIChu
ZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKQorICAgIGlm
IChuZXdIYW5kbGUtPmlzU2NoZWR1bGVkVG9GYWlsKCkpCiAgICAgICAgIHJldHVybiBuZXdIYW5k
bGUucmVsZWFzZSgpOwogCiAgICAgaWYgKG5ld0hhbmRsZS0+c3RhcnQoKSkKQEAgLTEwMiwxMyAr
MTAzLDE4IEBAIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IFJlc291cmNlSGFuZGxlOjpjcmVh
dGUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlRmFpbHVyZShGYWlsdXJlVHlwZSB0eXBlKQorYm9v
bCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmlzU2NoZWR1bGVkVG9GYWlsKCkKK3sKKyAgICByZXR1
cm4gZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmU7Cit9CisKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZUZhaWx1cmUoRmFpbHVyZVR5cGUgdHlwZSkKIHsK
ICAgICBkLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlID0gdHlwZTsKICAgICBkLT5tX2ZhaWx1cmVU
aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVU
aW1lckZpcmVkKFRpbWVyPFJlc291cmNlSGFuZGxlPiYpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6ZmFpbHVyZVRpbWVyRmlyZWQoVGltZXI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiYpCiB7
CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM5LDYwICsxNDUsNjAg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb250ZXh0LCByZXF1ZXN0LCBzdG9y
ZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb250ZXh0LCByZXF1
ZXN0LCBzdG9yZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0KIAogUmVz
b3VyY2VIYW5kbGVDbGllbnQqIFJlc291cmNlSGFuZGxlOjpjbGllbnQoKSBjb25zdAogewotICAg
IHJldHVybiBkLT5tX2NsaWVudDsKKyAgICByZXR1cm4gbV9jbGllbnQ7CiB9CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnNldENsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQogewot
ICAgIGQtPm1fY2xpZW50ID0gY2xpZW50OworICAgIG1fY2xpZW50ID0gY2xpZW50OwogfQogCiAj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQogLy8g
UmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxh
dGZvcm1zIHlldC4KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKICNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KICNlbmRpZgogI2VuZGlm
CiAKLVJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmZpcnN0UmVxdWVzdCgpCitSZXNv
dXJjZVJlcXVlc3QmIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Zmlyc3RSZXF1ZXN0KCkKIHsKICAg
ICByZXR1cm4gZC0+bV9maXJzdFJlcXVlc3Q7CiB9CiAKLU5ldHdvcmtpbmdDb250ZXh0KiBSZXNv
dXJjZUhhbmRsZTo6Y29udGV4dCgpIGNvbnN0CitOZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1Jl
c291cmNlSGFuZGxlOjpjb250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jb250ZXh0
LmdldCgpOwogfQogCi1jb25zdCBTdHJpbmcmIFJlc291cmNlSGFuZGxlOjpsYXN0SFRUUE1ldGhv
ZCgpIGNvbnN0Citjb25zdCBTdHJpbmcmIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bGFzdEhUVFBN
ZXRob2QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2xhc3RIVFRQTWV0aG9kOwogfQogCi1i
b29sIFJlc291cmNlSGFuZGxlOjpoYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0Citi
b29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBj
b25zdAogewogICAgIHJldHVybiAhZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlLmlzTnVsbCgpOwog
fQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRpY2F0aW9uKCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRpY2F0aW9uKCkKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgPSBuaWw7CkBAIC0yMDAsMTIg
KzIwNiwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRpY2F0aW9uKCkKICAg
ICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UubnVsbGlmeSgpOwogfQogICAKLWJvb2wgUmVzb3Vy
Y2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZigpIGNvbnN0Citib29sIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9z
aG91bGRDb250ZW50U25pZmY7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRl
bnRTbmlmZlVSTChjb25zdCBVUkwmIHVybCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpz
aG91bGRDb250ZW50U25pZmZVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKHNob3VsZEZvcmNlQ29udGVudFNuaWZmaW5nKQpAQCAtMjE1LDEyICsyMjEs
MTIgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKGNvbnN0IFVS
TCYgdXJsKQogICAgIHJldHVybiAhdXJsLnByb3RvY29sSXMoImZpbGUiKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Zm9yY2VDb250ZW50U25pZmZpbmcoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW5nKCkKIHsKICAgICBzaG91bGRGb3JjZUNvbnRl
bnRTbmlmZmluZyA9IHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldERlZmVyc0xv
YWRpbmcoYm9vbCBkZWZlcnMpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJz
TG9hZGluZyhib29sIGRlZmVycykKIHsKICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBzZXRE
ZWZlcnNMb2FkaW5nKCVzKSIsIHRoaXMsIGRlZmVycyA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5k
ZXggZTIyZGZkOWM5OTZkODJmYjlmOTVlMzY5NjRjN2U0NWI3MzgyYzg2OC4uMzgyNmMxZTJiODQ2
OGU1MDMxMWM0YzNlOTM5MmFjNmYyNjIxZjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZVR5cGVzLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIApAQCAtOTEsNiArOTIsNyBAQCBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKQEAgLTEwMiwxNiArMTA0LDg2IEBAIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRpbWVyOwogCi1jbGFz
cyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPgorY2xh
c3MgUmVzb3VyY2VIYW5kbGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiAgewor
ICAgIC8vIFRvIGdldCBhY2Nlc3MgdG8gc3RhcnQgYW5kIHBsYXRmb3JtIHByb3RlY3RlZCByb3V0
aW5lcy4KKyAgICBmcmllbmQgTmV0d29ya1Jlc291cmNlSGFuZGxlOworcHVibGljOgorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNs
aWVudCosIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFs
cywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
OworCisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25z
dHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNs
aWVudCogY2xpZW50KTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rv
cihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGluQ29uc3RydWN0b3IpOworCisg
ICAgdHlwZWRlZiB2b2lkICgqQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKShOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJj
ZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CisgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm90b2NvbCwgQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKTsKKworICAgIHZpcnR1YWwg
flJlc291cmNlSGFuZGxlKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5n
KGJvb2wpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9OworICAgIHZpcnR1YWwg
dm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHsgfTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JikgeyB9OworCisgICAgdmlydHVhbCBSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVzdCgp
IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9OworICAgIC8vIFRoZSBjbGllbnQgbWF5IGJlIDAs
IGluIHdoaWNoIGNhc2Ugbm8gY2FsbGJhY2tzIHdpbGwgYmUgbWFkZS4KKyAgICB2aXJ0dWFsIFJl
c291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJBdXRoZW50aWNhdGlvbigpIHsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBh
aXImKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIm
KSB7IH07CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBNb3ZlIG1vc3Qgb2YgdGhlc2UgbmV0d29y
ay1zcGVjaWZpYyBtZXRob2RzIHRvIE5ldHdvcmtSZXNvdXJjZUhhbmRsZQorI2lmIFVTRShDVVJM
KSB8fCBVU0UoU09VUCkKKyAgICB2aXJ0dWFsIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGdldElu
dGVybmFsKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyNpZiBVU0UoQ0ZORVRXT1JL
KQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJl
Zj4gcmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpIHsgcmV0dXJuIG51bGxwdHI7IH07Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH07CisjZW5kaWYKKworI2lmIFVTRShDRk5FVFdPUkspCisgICAgQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Owor
I2VuZGlmCisKKyAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoKS4KKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpIHsgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
VVNFKENGTkVUV09SSykKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY29udGludWVX
aWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICopIHsgfTsKKyNlbmRpZgorCisK
KyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgIC8vIENhbGxlZCBp
biByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKCkuCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKSB7IH07
CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIFJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCAmZmlyc3RSZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCAqY2xpZW50KTogbV9m
aXJzdFJlcXVlc3QoZmlyc3RSZXF1ZXN0KSwgbV9jbGllbnQoY2xpZW50KSB7IH07IAorICAgIHZp
cnR1YWwgYm9vbCBpc1NjaGVkdWxlZFRvRmFpbCgpIHtyZXR1cm4gZmFsc2U7fTsKKyAgICAKKyAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9maXJzdFJlcXVlc3Q7CisgICAgUmVzb3VyY2VIYW5kbGVDbGll
bnQgKm1fY2xpZW50OworfTsKKworLy8gRklYTUU6IG1vdmUgTmV0d29ya1Jlc291cmNlSGFuZGxl
IGluIGl0cyBvd24gaGVhZGVyIGZpbGUKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSA6IHB1
YmxpYyBSZXNvdXJjZUhhbmRsZQogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JL
KSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgLCBwdWJsaWMgQXV0aGVudGljYXRpb25D
bGllbnQKICNlbmRpZgogICAgIHsKKyAgICBmcmllbmQgUmVzb3VyY2VIYW5kbGU7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNy
ZWF0ZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
SGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlm
Zik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25v
dXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENy
ZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFy
PiYgZGF0YSk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfk5ldHdvcmtSZXNvdXJjZUhhbmRsZSgpOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7CkBAIC0xODMsNyArMjU1LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFdJTklO
RVQpCiAgICAgdm9pZCBzZXRTeW5jaHJvbm91c0ludGVybmV0SGFuZGxlKEhJTlRFUk5FVCk7Ci0g
ICAgdm9pZCBmaWxlTG9hZFRpbWVyKFRpbWVyPFJlc291cmNlSGFuZGxlPiopOworICAgIHZvaWQg
ZmlsZUxvYWRUaW1lcihUaW1lcjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+Kik7CiAgICAgdm9pZCBv
blJlZGlyZWN0KCk7CiAgICAgYm9vbCBvblJlcXVlc3RDb21wbGV0ZSgpOwogICAgIHN0YXRpYyB2
b2lkIENBTExCQUNLIGludGVybmV0U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVULCBEV09SRF9QVFIs
IERXT1JELCBMUFZPSUQsIERXT1JEKTsKQEAgLTIxMywxMCArMjg1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBjYW5jZWwoKTsKIAotICAgIC8vIFRoZSBjbGllbnQgbWF5IGJlIDAsIGluIHdoaWNoIGNh
c2Ugbm8gY2FsbGJhY2tzIHdpbGwgYmUgbWFkZS4KLSAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCog
Y2xpZW50KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqKTsKLQogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoKS4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
CkBAIC0yNDEsNyArMzA5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNl
UmVxdWVzdCYgZmlyc3RSZXF1ZXN0KCk7CiAgICAgY29uc3QgU3RyaW5nJiBsYXN0SFRUUE1ldGhv
ZCgpIGNvbnN0OwogCi0gICAgdm9pZCBmYWlsdXJlVGltZXJGaXJlZChUaW1lcjxSZXNvdXJjZUhh
bmRsZT4mKTsKKyAgICB2b2lkIGZhaWx1cmVUaW1lckZpcmVkKFRpbWVyPE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZT4mKTsKIAogICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAK
QEAgLTI1NSwxNSArMzIzLDEzIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpICYmIFVTRShD
Rk5FVFdPUkspCiAgICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJv
cGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYK
K3Byb3RlY3RlZDoKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgZGVm
ZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwogCi0gICAgdHlwZWRlZiBQYXNz
UmVmUHRyPFJlc291cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKLSAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcm
IHByb3RvY29sLCBCdWlsdGluQ29uc3RydWN0b3IpOwotCi0gICAgdHlwZWRlZiB2b2lkICgqQnVp
bHRpblN5bmNocm9ub3VzTG9hZGVyKShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNw
b25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWls
dGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRp
blN5bmNocm9ub3VzTG9hZGVyKTsKKyAgICBib29sIGlzU2NoZWR1bGVkVG9GYWlsKCk7CiAKLXBy
b3RlY3RlZDoKLSAgICBSZXNvdXJjZUhhbmRsZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5n
LCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CisgICAgYm9vbCBzdGFydCgpOworICAgIHN0YXRp
YyB2b2lkIHBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVy
cm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKIHByaXZhdGU6
CiAgICAgZW51bSBGYWlsdXJlVHlwZSB7CkBAIC0yNzYsOCArMzQyLDYgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2NoZWR1bGVGYWlsdXJlKEZhaWx1cmVUeXBlKTsKIAotICAgIGJvb2wgc3RhcnQo
KTsKLSAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFs
cywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
OwogCiAgICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUg
eyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkg
b3ZlcnJpZGUgeyBkZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IGVmYzVjN2M3ZTY1ZGZk
MDUxZDY1ODRjZDg3ODgxZGI1MjM2ZDc3NjAuLjM5OTdlMDk3YTY4NGYyNWVmYjJmMDE5ZDhmYjg1
MTEwNzJhYTZkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC03MSwxMCArNzEsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiAKKyAgICAv
LyBGSVhNRTogU2hvdWxkIGJlIHJlbmFtZWQgTmV0d29ya1Jlc291cmNlSGFuZGxlSW50ZXJuYWwg
YW5kIG1hZGUgY29uc2lzdGVudCB3aXRoIFJlc291cmNlSGFuZGxlIG5ldyBmaWVsZHMgKGNsaWVu
dCBhbmQgZmlyc3RSZXF1ZXN0KQogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlSW50ZXJuYWwgewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUhhbmRsZUludGVybmFsKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKFJlc291cmNlSGFuZGxlKiBsb2FkZXIsIE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50
KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCisg
ICAgICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBsb2Fk
ZXIsIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50ICpjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYpCiAgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0
KQogICAgICAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgICAgICAgICAsIG1fZmlyc3RS
ZXF1ZXN0KHJlcXVlc3QpCkBAIC04Niw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgICwgbV9jdXJyZW50UmVxdWVzdChyZXF1ZXN0KQogI2VuZGlmCiAjaWYgVVNFKFdJ
TklORVQpCi0gICAgICAgICAgICAsIG1fZmlsZUxvYWRUaW1lcihsb2FkZXIsICZSZXNvdXJjZUhh
bmRsZTo6ZmlsZUxvYWRUaW1lcikKKyAgICAgICAgICAgICwgbV9maWxlTG9hZFRpbWVyKGxvYWRl
ciwgJk5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZmlsZUxvYWRUaW1lcikKICAgICAgICAgICAgICwg
bV9pbnRlcm5ldEhhbmRsZSgwKQogICAgICAgICAgICAgLCBtX2Nvbm5lY3RIYW5kbGUoMCkKICAg
ICAgICAgICAgICwgbV9yZXF1ZXN0SGFuZGxlKDApCkBAIC0xMTcsOCArMTE4LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGZh
bHNlKQogICAgICAgICAgICAgLCBtX2N1cnJlbnRNYWNDaGFsbGVuZ2UobmlsKQogI2VuZGlmCi0g
ICAgICAgICAgICAsIG1fc2NoZWR1bGVkRmFpbHVyZVR5cGUoUmVzb3VyY2VIYW5kbGU6Ok5vRmFp
bHVyZSkKLSAgICAgICAgICAgICwgbV9mYWlsdXJlVGltZXIobG9hZGVyLCAmUmVzb3VyY2VIYW5k
bGU6OmZhaWx1cmVUaW1lckZpcmVkKQorICAgICAgICAgICAgLCBtX3NjaGVkdWxlZEZhaWx1cmVU
eXBlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Tm9GYWlsdXJlKQorICAgICAgICAgICAgLCBtX2Zh
aWx1cmVUaW1lcihsb2FkZXIsICZOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZp
cmVkKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBVUkwmIHVybCA9IG1fZmlyc3RSZXF1
ZXN0LnVybCgpOwogICAgICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKQEAgLTIxOSw4ICsy
MjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBtX2N1cnJlbnRXZWJDaGFsbGVuZ2U7Ci0gICAgICAgIFJlc291cmNlSGFu
ZGxlOjpGYWlsdXJlVHlwZSBtX3NjaGVkdWxlZEZhaWx1cmVUeXBlOwotICAgICAgICBUaW1lcjxS
ZXNvdXJjZUhhbmRsZT4gbV9mYWlsdXJlVGltZXI7CisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6RmFpbHVyZVR5cGUgbV9zY2hlZHVsZWRGYWlsdXJlVHlwZTsKKyAgICAgICAgVGltZXI8
TmV0d29ya1Jlc291cmNlSGFuZGxlPiBtX2ZhaWx1cmVUaW1lcjsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCA2YzZmZDRhMjdlNzZmMTJl
NDE1YmRmNzk3ZGQ0YWY5MTg4NTJhODI4Li5hNWQ5MjYyMDM0M2QyMjRkZWRiY2Q3ZThhNmZhMTE2
MjQ5MTA3NWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTExMSwxMiArMTExLDEyIEBAIFJl
c291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKICAgICB9CiB9
CiAKLVJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQorTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjp+TmV0d29ya1Jlc291cmNlSGFuZGxlKCkKIHsKICAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gRGVzdHJveWluZyBqb2IgJXAgKCVzKSIsIHRoaXMsIGQtPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjcmVh
dGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBz
aG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3Is
IENGRGljdGlvbmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKQordm9pZCBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yIHNjaGVkdWxp
bmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpCiB7CiAgICAgaWYg
KCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0
UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAvLyBD
cmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgpA
QCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVj
dGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAgUmV0YWluUHRy
PENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3BzOwogCiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgIHNzbFByb3BzID0gYWRvcHRDRihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlU1NMUHJvcGVydGll
c0Zyb21OU1VSTFJlcXVlc3QoZmlyc3RSZXF1ZXN0KCkpKTsKKyAgICBzc2xQcm9wcyA9IGFkb3B0
Q0YoTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVx
dWVzdChmaXJzdFJlcXVlc3QoKSkpOwogI2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0
aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpLmxvd2Vy
KCkpKSB7CiAgICAgICAgIHNzbFByb3BzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKQEAgLTIzNSw3ICsyMzUsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIGQtPm1fY29ubmVjdGlvbiA9IGFkb3B0Q0Yo
Q0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoMCwgcmVxdWVzdC5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxDRlVSTENvbm5lY3Rpb25DbGllbnQqPigmY2xpZW50KSwgcHJvcGVydGll
c0RpY3Rpb25hcnkuZ2V0KCkpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQor
Ym9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIHsKICAgICBpZiAoIWQtPm1fY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y2FuY2VsKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWwoKQog
ewogICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uQ2Fu
Y2VsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y2FuY2VsKCkKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3Qu
dXJsKCk7CiAgICAgZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmPFJlc291
cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0d29ya1Jlc291cmNlSGFuZGxl
PiBwcm90ZWN0KCp0aGlzKTsKICAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygp
KQogICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgZWxzZSB7CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXMKICAgICB9CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkiKTsKICAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGll
bnQqIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7CkBAIC0zMjIsNyArMzIyLDcgQEAgYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIik7CiAg
ICAgQVNTRVJUKGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZS5pc051bGwoKSk7CkBAIC0zOTUsNyAr
Mzk1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKIH0KIAogI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1ib29sIFJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2Up
CiB7CiAgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkgewogICAgICAgICBpZiAoY2xpZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKQEAgLTQwNyw3
ICs0MDcsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZQogfQogI2VuZGlmCiAKLXZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewog
ICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZENyZWRlbnRpYWwoKSIpOwogICAgIEFT
U0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZQogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdv
cmssICJDRk5ldCAtIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCgp
Iik7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtNDYyLDcgKzQ2Miw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbChjb25zdCBBdXRoZW50aWNhCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHJlY2VpdmVkQ2FuY2VsbGF0aW9u
KCkiKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKQEAg
LTQ3Miw3ICs0NzIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbgogICAgICAgICBjbGllbnQo
KS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24odGhpcywgY2hhbGxlbmdlKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJD
Rk5ldCAtIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZygpIik7CiAgICAg
QVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25z
dCBBdXRoZW50aWNhdGlvCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJl
Y2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHJlY2VpdmVkQ2hhbGxlbmdl
UmVqZWN0aW9uKCkiKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CkBAIC00OTgs
MzAgKzQ5OCwzMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVj
dGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYwogICAgIGNsZWFyQXV0aGVudGlj
YXRpb24oKTsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBSZXNvdXJjZUhhbmRsZTo6c3Rv
cmFnZVNlc3Npb24oKSBjb25zdAorQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKTsKIH0KIAotQ0ZVUkxDb25uZWN0aW9uUmVmIFJlc291cmNlSGFuZGxl
Ojpjb25uZWN0aW9uKCkgY29uc3QKK0NGVVJMQ29ubmVjdGlvblJlZiBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OmNvbm5lY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCk7CiB9CiAKLVJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IFJlc291cmNlSGFuZGxl
OjpyZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCkKK1JldGFpblB0cjxDRlVSTENvbm5lY3Rp
b25SZWY+IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9h
ZCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIEpvYiAlcCByZWxlYXNpbmcgY29ubmVj
dGlvbiAlcCBmb3IgZG93bmxvYWQiLCB0aGlzLCBkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogICAg
IHJldHVybiBXVEY6Om1vdmUoZC0+bV9jb25uZWN0aW9uKTsKIH0KIAotQ0ZTdHJpbmdSZWYgUmVz
b3VyY2VIYW5kbGU6OnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCkKK0NGU3RyaW5nUmVmIE5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6c3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKQogewogICAg
IHJldHVybiBDRlNUUigiV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGUiKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3Im
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQog
ewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNl
U3luY2hyb25vdXNseTolcyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdG9yZWRDcmVkZW50aWFscyk7CisgICAgTE9HKE5l
dHdvcmssICJOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hy
b25vdXNseTolcyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBzdG9yZWRDcmVkZW50aWFscyk7CiAKICAgICBBU1NFUlQoIXJl
cXVlc3QuaXNFbXB0eSgpKTsKIApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4CiAgICAgT3duUHRyPFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50PiBjbGllbnQgPSBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6Y3JlYXRlKCk7CiAgICAgY2xpZW50LT5zZXRBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzKHN0b3JlZENyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMp
OwogCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVz
b3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVy
c0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CisgICAgUmVmUHRyPE5l
dHdvcmtSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9h
ZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNuaWZmKi8pKTsKIAogICAgIGhhbmRsZS0+ZC0+
bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNz
aW9uKCk7CiAKQEAgLTU0MCw3ICs1NDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9y
bUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlLT5jcmVhdGVDRlVSTENvbm5lY3Rpb24o
c3RvcmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VIYW5k
bGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwKKyAgICBoYW5kbGUtPmNy
ZWF0ZUNGVVJMQ29ubmVjdGlvbihzdG9yZWRDcmVkZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRl
bnRpYWxzLCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1
ZXN0LnVybCgpKSwKICAgICAgICAgU2NoZWR1bGluZ0JlaGF2aW9yOjpTeW5jaHJvbm91cywgaGFu
ZGxlLT5jbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRpZXMoaGFuZGxlLmdldCgpKS5nZXQoKSk7
CiAKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGhhbmRsZS0+Y29ubmVj
dGlvbigpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2Rl
KCkpOwpAQCAtNTYwLDE3ICs1NjAsMTcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1M
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXgKICAgICBk
YXRhLnN3YXAoY2xpZW50LT5tdXRhYmxlRGF0YSgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0KQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKICAgICBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRl
SG9zdHMoKS5hZGQoaG9zdC5sb3dlcigpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0
Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYgY2VydCkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJp
bmcmIGhvc3QsIENGRGF0YVJlZiBjZXJ0KQogewogICAgIGNsaWVudENlcnRzKCkuc2V0KGhvc3Qu
bG93ZXIoKSwgY2VydCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVm
ZXJzTG9hZGluZyhib29sIGRlZmVycykKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0
Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiB7CiAgICAgaWYgKCFkLT5tX2Nvbm5l
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTU4MSwxMyArNTgxLDEzIEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uUmVzdW1lKGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CiB9CiAKLWJvb2wg
UmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6bG9hZHNCbG9ja2VkKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFp
cikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBh
aXIpCiB7CiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKICAgICBp
ZiAoIXJ1bkxvb3ApCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKICAgICBpZiAoIXJ1bkxvb3ApCkBAIC02MTAsMTIg
KzYxMCwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYg
cGFpcikKIH0KICNlbmRpZgogCi1jb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxl
OjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0Citjb25zdCBSZXNvdXJjZVJlcXVlc3QmIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5t
X2N1cnJlbnRSZXF1ZXN0OwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0UmVzdWx0ID0gcmVx
dWVzdDsKICAgICBpZiAoIXJlcXVlc3RSZXN1bHQuaXNOdWxsKCkpCkBAIC02MjMsMTkgKzYyMywx
OSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3RSZXN1bHQuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhU
VFBCb2R5KSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpCiB7CiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKCk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRlKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShi
b29sIGNhbkF1dGhlbnRpY2F0ZSkKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0
ZSk7CiB9CiAjZW5kaWYKIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiByZXNwb25zZSkKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+Y29udGludWVX
aWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA3MTQ0OGNmYjA5ZGM0MTYwMjk5NDc3
MzZjMjk4ZmJmYjdjZmQ1NmZhLi5jNTY2NDUxYzNjYmUyYjNiZTJhMDgwYmU4ZmZlMjFiOGRlNGVk
MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCitSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
KE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgIDogbV9oYW5kbGUoaGFuZGxlKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApp
bmRleCA1MDZjNWRjOWY3MDU4ZjQzNDRkN2VjZTY2OTFhY2U0ZmVmM2NiNGMxLi5jZmViOWVjMDMx
YTIwYjQwYjA1YjQ3MDM2MjMwYjIwMDEyZDZkYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBOZXR3b3JrUmVz
b3VyY2VIYW5kbGU7CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZT4gewogcHVibGljOgotICAgIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSopOwogICAgIHZpcnR1YWwgflJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUoKTsKIAogICAgIENGVVJMQ29ubmVj
dGlvbkNsaWVudF9WNiBtYWtlQ29ubmVjdGlvbkNsaWVudCgpIGNvbnN0OwpAQCAtOTIsNyArOTIs
NyBAQCBwcml2YXRlOgogI2VuZGlmIC8vIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFD
SykKIAogcHJvdGVjdGVkOgotICAgIFJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKKyAgICBOZXR3
b3JrUmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
bV9vcmlnaW5hbFNjaGVtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CmluZGV4IGEwN2NkOGIxZDM4NTc1M2Q2MGYxMThjZjA2MDBjYjQ2MjMyNjMxY2EuLmI2MDQ3ZmEz
ZmY4OTc2ODcxYWJiYmZiMjBlYTgxYWE5ZGM2ODJiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcApAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAg
ICAgOiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKGhhbmRsZSkKICAgICAs
IG1fcXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViQ29yZS9DRk5ldHdv
cmsiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQogICAgICwgbV9zZW1hcGhvcmUoZGlzcGF0Y2hf
c2VtYXBob3JlX2NyZWF0ZSgwKSkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVS
ZXNwb25zZQogICAgICAgICAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3Bv
bnNlKGNmUmVzcG9uc2UpOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgICAgICBSZXNvdXJj
ZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbiwgcmVzb3VyY2VSZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSk7CisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbiwgcmVzb3VyY2VSZXNwb25zZS5y
ZXNvdXJjZUxvYWRUaW1pbmcoKSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgKaW5kZXggZmNlNTVj
ODYwYzVlMWZhYmJhZGQ2ZTk4YzYzZmIwM2YyZTA5MmZlMS4uMWViYmU4NzQ5M2QzMTFhMjc1ZWEx
OTZlNjkyNDhjZjIzMmFkYjM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlIGZpbmFsIDogcHVibGlj
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUgewogcHVibGljOgotICAgIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUoUmVz
b3VyY2VIYW5kbGUqKTsKKyAgICBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSopOwogICAgIHZpcnR1YWwg
flJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUo
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCAxNWQ4ZmEwOGE4OTNjNjg1
NWU4NzNjOWViOWUxMWMyYzE3OTdkYTFkLi4wMjBlMTdiNWQxM2JlNjQwYWMzZWNkZjllMDhlNGNi
ZDRhZjVhZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCkBAIC01NSw3ICs1NSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgIDogUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShoYW5kbGUpCiB7CiB9CkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZShDRlVSTEMKICAgICAKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7CiAjaWYgRU5BQkxFKFdFQl9USU1J
TkcpCi0gICAgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rp
b24sIHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpOworICAgIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbiwgcmVzb3Vy
Y2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKaW5kZXggOGMxMWM3MWNhNDZj
NGY0ZTVlZTEyMWEwMWFkYzg4ZTc2Y2Y5YWQyYy4uOWNmZGU0MGUwNzQ1ZTI1ODU1ZGQ1MzAwMmU3
ZDdkMTk1MDVhOWM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlIGZpbmFsIDogcHVibGljIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUgewogcHVibGljOgotICAgIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSopOworICAgIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUq
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYsIENGSW5kZXgg
b3JpZ2luYWxMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBjYjQxODRmNjM3ZTk1MGQxNGM1YmVj
NTk5NTYyZGJhZjZhYjAzZDJkLi4xZTYxOWU2MzE5NjA1MzAxODUwM2RhZmVlMGE2NWYyN2Q1MTVk
OGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmws
IFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCitDdXJsQ2FjaGVF
bnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKQogICAgIDogbV9oZWFkZXJGaWxlbmFt
ZShjYWNoZURpcikKICAgICAsIG1fY29udGVudEZpbGVuYW1lKGNhY2hlRGlyKQogICAgICwgbV9j
b250ZW50RmlsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQpAQCAtMTA4LDcgKzEwOCw3IEBA
IGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEN1cmxDYWNoZUVudHJ5Ojpy
ZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSogam9iKQorYm9vbCBDdXJsQ2FjaGVFbnRyeTo6
cmVhZENhY2hlZERhdGEoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgQVNTRVJU
KGpvYi0+Y2xpZW50KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDg0NWEyMTg4NmE5YTI0ZDVlM2JjYWY1
MDQ1OTJiMmNlMGRmZTNkYWUuLmE0ZTcwYmE2Mzc1NzhjOGMwODI2MTFhNDEzM2Y5ZDM2NzU3YzJl
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEN1cmxDYWNoZUVudHJ5IHsKIAogcHVibGljOgotICAgIEN1cmxDYWNoZUVudHJ5KGNvbnN0
IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGly
KTsKKyAgICBDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgTmV0d29ya1Jlc291cmNl
SGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOwogICAgIH5DdXJsQ2FjaGVFbnRy
eSgpOwogCiAgICAgYm9vbCBpc0NhY2hlZCgpOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMoKSB7IHJldHVybiBtX3JlcXVlc3RIZWFk
ZXJzOyB9CiAKICAgICBib29sIHNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCk7Ci0gICAgYm9vbCByZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSopOworICAgIGJvb2wg
cmVhZENhY2hlZERhdGEoTmV0d29ya1Jlc291cmNlSGFuZGxlKik7CiAKICAgICBib29sIHNhdmVS
ZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2V0UmVz
cG9uc2VGcm9tQ2FjaGVkSGVhZGVycyhSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wpOwogCi0gICAgY29uc3Qg
UmVzb3VyY2VIYW5kbGUqIGdldEpvYigpIGNvbnN0IHsgcmV0dXJuIG1fam9iOyB9CisgICAgY29u
c3QgTmV0d29ya1Jlc291cmNlSGFuZGxlKiBnZXRKb2IoKSBjb25zdCB7IHJldHVybiBtX2pvYjsg
fQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2Jhc2VuYW1lOwpAQCAtODAsNyArODAsNyBAQCBw
cml2YXRlOgogICAgIFJlc291cmNlUmVzcG9uc2UgbV9jYWNoZWRSZXNwb25zZTsKICAgICBIVFRQ
SGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAKLSAgICBSZXNvdXJjZUhhbmRsZSogbV9qb2I7
CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlKiBtX2pvYjsKIAogICAgIHZvaWQgZ2VuZXJhdGVC
YXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKTsKICAgICBib29sIGxvYWRGaWxlVG9CdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBidWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IGY2ZTNhMjQyMGNlMGFlYTc4NzlkODg4MGFiNDExNTcwN2FhMDQxNmMu
LmVhN2EzNDc5ZjE4NGVjMzM0YzUzODk5NzA3ZmZlZWYwMTBlZjkxYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6Om1ha2VSb29t
Rm9yTmV3RW50cnkoKQogICAgIH0KIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZShOZXR3b3JrUmVz
b3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYg
KG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEN1
cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYgam9iLCBS
ZXNvdXJjZVJlc3BvbnNlJgogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogfQog
Ci12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUm
IGpvYikKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrUmVz
b3VyY2VIYW5kbGUmIGpvYikKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVz
cG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlJiBqb2IsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShOZXR3b3JrUmVzb3VyY2VIYW5kbGUmIGpvYiwg
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTMxOSwxNCArMzE5LDE0IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdl
cjo6aW52YWxpZGF0ZUNhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgbV9MUlVFbnRy
eUxpc3QucmVtb3ZlKHVybCk7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkRmFpbChS
ZXNvdXJjZUhhbmRsZSAmam9iKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRGYWlsKE5ldHdv
cmtSZXNvdXJjZUhhbmRsZSAmam9iKQogewogICAgIGNvbnN0IFN0cmluZyYgdXJsID0gam9iLmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpOwogCiAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnko
dXJsKTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpyZWFkQ2FjaGVkRGF0YShjb25zdCBT
dHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnJlYWRDYWNoZWREYXRhKGNvbnN0IFN0cmluZyYg
dXJsLCBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5o
CmluZGV4IGY1OWNmNGUzYThkMDZiZTkyYmMyNTExZjk4ZmYzYTRkNzAwM2Q0MGMuLjMwZWRhOWI0
N2Y1YzEzZTNhODMwNzQyMDY2ZmQxYzk5YWQxNjljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDks
MTAgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyhj
b25zdCBTdHJpbmcmKTsgLy8gTG9hZCBoZWFkZXJzCiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25z
ZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3Qp
OyAvLyBTYXZlIGRhdGEKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUm
KTsKLSAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXR3b3JrUmVzb3VyY2VIYW5kbGUmLCBjb25zdCBjaGFy
Kiwgc2l6ZV90KTsgLy8gU2F2ZSBkYXRhCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHdv
cmtSZXNvdXJjZUhhbmRsZSYpOworICAgIHZvaWQgZGlkRmFpbChOZXR3b3JrUmVzb3VyY2VIYW5k
bGUmKTsKIAogcHJpdmF0ZToKICAgICBDdXJsQ2FjaGVNYW5hZ2VyKCk7CkBAIC03NCw3ICs3NCw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgU3RyaW5n
JiwgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRW50cnkoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCByZWFkQ2FjaGVkRGF0YShjb25zdCBTdHJpbmcmLCBSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIHJlYWRDYWNoZWREYXRh
KGNvbnN0IFN0cmluZyYsIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2Um
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9NdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL011bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggOTdhOGQ0YTk2ZmEwYzY0NTdmODI2OTY4
Y2RmYTMyN2Q2ZGMzNDA4MS4uN2U5MDRkNjMyYTljNTc0ZTk4ZjdmN2ViN2JhOTllMmU2YWYxNjU4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL011bHRp
cGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L011bHRpcGFydEhhbmRsZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzT3duUHRyPE11bHRpcGFydEhhbmRsZT4gTXVsdGlwYXJ0SGFuZGxlOjpjcmVh
dGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSkKK1Bhc3NP
d25QdHI8TXVsdGlwYXJ0SGFuZGxlPiBNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZShOZXR3b3JrUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSkKIHsKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IE11bHRpcGFydEhhbmRsZShoYW5kbGUsIGJvdW5kYXJ5KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTXVsdGlwYXJ0
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTXVsdGlwYXJ0
SGFuZGxlLmgKaW5kZXggOWFiODU2MjQ1ODczMWRhYTU1OGVjNzI2NGZmZWJkZmNhNzQzZTlkMC4u
MzIxMDM4ZWQwNjc0OWVkODc3NzlkZDAzM2FhYTc5NDBkZDQ5MzIwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL011bHRpcGFydEhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9NdWx0aXBhcnRIYW5kbGUuaApA
QCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE11bHRpcGFydEhh
bmRsZSB7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNdWx0aXBhcnRIYW5kbGU+
IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBTdHJpbmcmIGJvdW5kYXJ5KTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxNdWx0aXBhcnRIYW5kbGU+IGNyZWF0ZShOZXR3b3JrUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBleHRyYWN0Qm91
bmRhcnkoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgU3RyaW5nJiBib3VuZGFyeSk7CiAKLSAg
ICBNdWx0aXBhcnRIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBi
b3VuZGFyeSkKKyAgICBNdWx0aXBhcnRIYW5kbGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFN0cmluZyYgYm91bmRhcnkpCiAgICAgICAgIDogbV9yZXNvdXJjZUhhbmRsZSho
YW5kbGUpCiAgICAgICAgICwgbV9ib3VuZGFyeSgiLS0iICsgYm91bmRhcnkpCiAgICAgICAgICwg
bV9ib3VuZGFyeUxlbmd0aChtX2JvdW5kYXJ5Lmxlbmd0aCgpKQpAQCAtNzIsNyArNzIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgcGFyc2VIZWFkZXJzSWZQb3NzaWJsZSgpOwogICAgIGJvb2wgcHJv
Y2Vzc0NvbnRlbnQoKTsKIAotICAgIFJlc291cmNlSGFuZGxlKiBtX3Jlc291cmNlSGFuZGxlOwor
ICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogbV9yZXNvdXJjZUhhbmRsZTsKICAgICBTdHJpbmcg
bV9ib3VuZGFyeTsKICAgICBzaXplX3QgbV9ib3VuZGFyeUxlbmd0aDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcAppbmRleCBlMjk2M2VhNGNjNWEyN2FjZjBiNzQ1ZTAyOTEyNjVjMWRmYTFjMTIwLi5l
MjA4NDA0ZGI4YmY4MGZiYTM0NWYyY2YyYjc5YWI5NzRkNjdlY2Q5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcApAQCAtOTYsMTIgKzk2LDEyIEBAIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNv
dXJjZUhhbmRsZUludGVybmFsKCkKICAgICAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChtX2N1c3Rv
bUhlYWRlcnMpOwogfQogCi1SZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKK05ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6fk5ldHdvcmtSZXNvdXJjZUhhbmRsZSgpCiB7CiAgICAgY2FuY2Vs
KCk7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKK2Jvb2wgTmV0d29ya1Jlc291
cmNlSGFuZGxlOjpzdGFydCgpCiB7CiAgICAgLy8gVGhlIGZyYW1lIGNvdWxkIGJlIG51bGwgaWYg
dGhlIFJlc291cmNlSGFuZGxlIGlzIG5vdCBhc3NvY2lhdGVkIHRvIGFueQogICAgIC8vIEZyYW1l
LCBlLmcuIGlmIHdlIGFyZSBkb3dubG9hZGluZyBhIGZpbGUuCkBAIC0xMTUsMTcgKzExNSwxNyBA
QCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
Y2FuY2VsKCkKIHsKICAgICBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNoYXJlZEluc3RhbmNlKCkt
PmNhbmNlbCh0aGlzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0Fu
eUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0KQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYg
aG9zdCkKIHsKICAgICBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoaG9zdC5sb3dlcigp
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGVJbmZvKGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBjZXJ0aWZpY2F0ZSwgY29uc3QgU3RyaW5n
JiBrZXkpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGVJ
bmZvKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBjZXJ0aWZpY2F0ZSwgY29uc3Qg
U3RyaW5nJiBrZXkpCiB7CiAgICAgaWYgKGZpbGVFeGlzdHMoY2VydGlmaWNhdGUpKQogICAgICAg
ICBhZGRBbGxvd2VkQ2xpZW50Q2VydGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGUsIGtleSk7CkBA
IC0xNDIsMTMgKzE0MiwxMyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRh
dGFSZWY+ID4mIGNsaWVudENlcnRzKCkKICAgICByZXR1cm4gY2VydHM7CiB9CiAKLXZvaWQgUmVz
b3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgQ0ZE
YXRhUmVmIGNlcnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlm
aWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYgY2VydCkKIHsKICAgICBjbGllbnRD
ZXJ0cygpLnNldChob3N0Lmxvd2VyKCksIGNlcnQpOwogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMp
CiB7CiAgICAgaWYgKCFkLT5tX2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY2LDIxICsx
NjYsMjEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJv
b2wgZGVmZXJzKQogICAgIH0KIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2Vk
KCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlc291cmNlSGFu
ZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewogICAgIHJldHVybiAoIWNsaWVu
dCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKSkgJiYgZmly
c3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpOwogfQogCi12b2lkIFJl
c291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVk
Q3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9y
ZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgV2Vi
Q29yZVN5bmNocm9ub3VzTG9hZGVyIHN5bmNMb2FkZXI7Ci0gICAgUmVmUHRyPFJlc291cmNlSGFu
ZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVz
dCwgJnN5bmNMb2FkZXIsIHRydWUsIGZhbHNlKSk7CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IE5ldHdvcmtSZXNvdXJjZUhhbmRsZShjb250
ZXh0LCByZXF1ZXN0LCAmc3luY0xvYWRlciwgdHJ1ZSwgZmFsc2UpKTsKIAogICAgIFJlc291cmNl
SGFuZGxlTWFuYWdlciogbWFuYWdlciA9IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5z
dGFuY2UoKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRm
b3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAg
ICAgcmVzcG9uc2UgPSBzeW5jTG9hZGVyLnJlc291cmNlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhh
bmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkg
JiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwo
ZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwpAQCAtMjM5
LDcgKzIzOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgICAgIGNsaWVudCgpLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgZC0+bV9jdXJyZW50V2ViQ2hh
bGxlbmdlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRX
ZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNoYWxsZW5nZQogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFs
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFs
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgaWYgKGNo
YWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybjsKQEAg
LTI3Myw3ICsyNzMsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYQogICAgIGNsZWFyQXV0aGVu
dGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJy
ZW50V2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm47CkBAIC0yODIsMTIgKzI4MiwxMiBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY2hhbGxlbgogICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWRDYW5jZWxs
YXRpb24odGhpcywgY2hhbGxlbmdlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1Bl
cmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCA1ZDM3MmQxMGY1NWYwNzFjMDYy
ODc4ZGUwMGQzNGZmNGQ2Nzg4M2U4Li5jYzAyNjM0NjE5MWRiNjJiOTJkYTk5NmI2YzVjMjZkNTIz
NTU4ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBA
IHN0YXRpYyB2b2lkIGNhbGN1bGF0ZVdlYlRpbWluZ0luZm9ybWF0aW9ucyhSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkKQogCiBzdGF0aWMgaW50IHNvY2tvcHRmdW5jdGlvbih2b2lkKiBkYXRhLCBj
dXJsX3NvY2tldF90IC8qY3VybGZkKi8sIGN1cmxzb2NrdHlwZSAvKnB1cnBvc2UqLykKIHsKLSAg
ICBSZXNvdXJjZUhhbmRsZSogam9iID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRh
KTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBq
b2ItPmdldEludGVybmFsKCk7CiAKICAgICBpZiAoZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRU
aW1pbmcoKSkKQEAgLTI5MSw3ICsyOTEsNyBAQCBSZXNvdXJjZUhhbmRsZU1hbmFnZXIqIFJlc291
cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKQogICAgIHJldHVybiBzaGFyZWRJbnN0
YW5jZTsKIH0KIAotc3RhdGljIHZvaWQgaGFuZGxlTG9jYWxSZWNlaXZlUmVzcG9uc2UgKENVUkwq
IGhhbmRsZSwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCkK
K3N0YXRpYyB2b2lkIGhhbmRsZUxvY2FsUmVjZWl2ZVJlc3BvbnNlKENVUkwqIGhhbmRsZSwgTmV0
d29ya1Jlc291cmNlSGFuZGxlKiBqb2IsIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQpCiB7CiAg
ICAgLy8gc2luY2UgdGhlIGNvZGUgaW4gaGVhZGVyQ2FsbGJhY2sgd2lsbCBub3QgaGF2ZSBydW4g
Zm9yIGxvY2FsIGZpbGVzCiAgICAgLy8gdGhlIGNvZGUgdG8gc2V0IHRoZSBVUkwgYW5kIGZpcmUg
ZGlkUmVjZWl2ZVJlc3BvbnNlIGlzIG5ldmVyIHJ1biwKQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0
aWMgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVSZXNwb25zZSAoQ1VSTCogaGFuZGxlLCBSZXNvdXJj
ZUhhbmRsZSogam9iLCBSZXNvdQogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVy
cyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogc3RhdGljIHNpemVfdCB3
cml0ZUNhbGxiYWNrKHZvaWQqIHB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCog
ZGF0YSkKIHsKLSAgICBSZXNvdXJjZUhhbmRsZSogam9iID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VI
YW5kbGUqPihkYXRhKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19j
YXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogICAgIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7CiAgICAgaWYgKGQtPm1fY2FuY2VsbGVkKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBzdGF0aWMgYm9vbCBnZXRQcm90
ZWN0aW9uU3BhY2UoQ1VSTCogaCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBy
b3RlYwogICovCiBzdGF0aWMgc2l6ZV90IGhlYWRlckNhbGxiYWNrKGNoYXIqIHB0ciwgc2l6ZV90
IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCogZGF0YSkKIHsKLSAgICBSZXNvdXJjZUhhbmRsZSog
am9iID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBOZXR3b3JrUmVz
b3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRh
dGEpOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7
CiAgICAgaWYgKGQtPm1fY2FuY2VsbGVkKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU5Niw3ICs1
OTYsNyBAQCBzdGF0aWMgc2l6ZV90IGhlYWRlckNhbGxiYWNrKGNoYXIqIHB0ciwgc2l6ZV90IHNp
emUsIHNpemVfdCBubWVtYiwgdm9pZCogZGF0YSkKICovCiBzaXplX3QgcmVhZENhbGxiYWNrKHZv
aWQqIHB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCogZGF0YSkKIHsKLSAgICBS
ZXNvdXJjZUhhbmRsZSogam9iID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsK
KyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PE5ldHdvcmtSZXNv
dXJjZUhhbmRsZSo+KGRhdGEpOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2It
PmdldEludGVybmFsKCk7CiAKICAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCkBAIC02NjgsNyArNjY4
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayhU
aW1lcjxSZXNvdXJjZUhhbmRsZU1hbmFnZXI+KgogICAgICAgICAvLyBmaW5kIHRoZSBub2RlIHdo
aWNoIGhhcyBzYW1lIGQtPm1faGFuZGxlIGFzIGNvbXBsZXRlZCB0cmFuc2ZlcgogICAgICAgICBD
VVJMKiBoYW5kbGUgPSBtc2ctPmVhc3lfaGFuZGxlOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsK
LSAgICAgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IDA7CisgICAgICAgIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZSogam9iID0gMDsKICAgICAgICAgQ1VSTGNvZGUgZXJyID0gY3VybF9lYXN5X2dldGlu
Zm8oaGFuZGxlLCBDVVJMSU5GT19QUklWQVRFLCAmam9iKTsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChlcnIsIENVUkxFX09LID09IGVycik7CiAgICAgICAgIEFTU0VSVChqb2IpOwpAQCAtNzQ3LDcg
Kzc0Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXRQcm94eUluZm8oY29uc3Qg
U3RyaW5nJiBob3N0LAogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnJl
bW92ZUZyb21DdXJsKFJlc291cmNlSGFuZGxlKiBqb2IpCit2b2lkIFJlc291cmNlSGFuZGxlTWFu
YWdlcjo6cmVtb3ZlRnJvbUN1cmwoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKICAgICBBU1NF
UlQoZC0+bV9oYW5kbGUpOwpAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyOjpyZW1vdmVGcm9tQ3VybChSZXNvdXJjZUhhbmRsZSogam9iKQogICAgIGpvYi0+ZGVy
ZWYoKTsKIH0KIAotc3RhdGljIGlubGluZSBzaXplX3QgZ2V0Rm9ybUVsZW1lbnRzQ291bnQoUmVz
b3VyY2VIYW5kbGUqIGpvYikKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGdldEZvcm1FbGVtZW50c0Nv
dW50KE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9iKQogewogICAgIFJlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CiAKQEAgLTc3NCw3ICs3
NzQsNyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBnZXRGb3JtRWxlbWVudHNDb3VudChSZXNvdXJj
ZUhhbmRsZSogam9iKQogICAgIHJldHVybiBmb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIHNldHVwRm9ybURhdGEoUmVzb3VyY2VIYW5kbGUqIGpvYiwgQ1VSTG9w
dGlvbiBzaXplT3B0aW9uLCBzdHJ1Y3QgY3VybF9zbGlzdCoqIGhlYWRlcnMpCitzdGF0aWMgdm9p
ZCBzZXR1cEZvcm1EYXRhKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9iLCBDVVJMb3B0aW9uIHNp
emVPcHRpb24sIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVhZGVycykKIHsKICAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOwogICAgIFZlY3RvcjxGb3JtRGF0
YUVsZW1lbnQ+IGVsZW1lbnRzID0gam9iLT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpLT5lbGVt
ZW50cygpOwpAQCAtODI4LDcgKzgyOCw3IEBAIHN0YXRpYyB2b2lkIHNldHVwRm9ybURhdGEoUmVz
b3VyY2VIYW5kbGUqIGpvYiwgQ1VSTG9wdGlvbiBzaXplT3B0aW9uLCBzdHJ1Y3QgY3VyCiAgICAg
Y3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9SRUFEREFUQSwgam9iKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUFVUKFJlc291cmNlSGFuZGxlKiBq
b2IsIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVhZGVycykKK3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjpzZXR1cFBVVChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiwgc3RydWN0IGN1cmxfc2xp
c3QqKiBoZWFkZXJzKQogewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdl
dEludGVybmFsKCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9V
UExPQUQsIFRSVUUpOwpAQCAtODQ0LDcgKzg0NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjpzZXR1cFBVVChSZXNvdXJjZUhhbmRsZSogam9iLCBzdHJ1Y3QgY3VybF9zbGlzdCoqIGhl
CiAgICAgc2V0dXBGb3JtRGF0YShqb2IsIENVUkxPUFRfSU5GSUxFU0laRV9MQVJHRSwgaGVhZGVy
cyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1QoUmVzb3VyY2VI
YW5kbGUqIGpvYiwgc3RydWN0IGN1cmxfc2xpc3QqKiBoZWFkZXJzKQordm9pZCBSZXNvdXJjZUhh
bmRsZU1hbmFnZXI6OnNldHVwUE9TVChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYiwgc3RydWN0
IGN1cmxfc2xpc3QqKiBoZWFkZXJzKQogewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQg
PSBqb2ItPmdldEludGVybmFsKCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9QT1NULCBUUlVFKTsKQEAgLTg2Nyw3ICs4NjcsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlTWFuYWdlcjo6c2V0dXBQT1NUKFJlc291cmNlSGFuZGxlKiBqb2IsIHN0cnVjdCBjdXJsX3Ns
aXN0KiogaAogICAgIHNldHVwRm9ybURhdGEoam9iLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFS
R0UsIGhlYWRlcnMpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6YWRkKFJlc291
cmNlSGFuZGxlKiBqb2IpCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6YWRkKE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZSogam9iKQogewogICAgIC8vIHdlIGNhbiBiZSBjYWxsZWQgZnJvbSB3aXRo
aW4gY3VybCwgc28gdG8gYXZvaWQgcmUtZW50cmFuY3kgaXNzdWVzCiAgICAgLy8gc2NoZWR1bGUg
dGhpcyBqb2IgdG8gYmUgYWRkZWQgdGhlIG5leHQgdGltZSB3ZSBlbnRlciBjdXJsIGRvd25sb2Fk
IGxvb3AKQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6YWRk
KFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAgICAgIG1fZG93bmxvYWRUaW1lci5zdGFydE9uZVNo
b3QocG9sbFRpbWVTZWNvbmRzKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnJl
bW92ZVNjaGVkdWxlZEpvYihSZXNvdXJjZUhhbmRsZSogam9iKQorYm9vbCBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OnJlbW92ZVNjaGVkdWxlZEpvYihOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGpvYikK
IHsKICAgICBpbnQgc2l6ZSA9IG1fcmVzb3VyY2VIYW5kbGVMaXN0LnNpemUoKTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewpAQCAtODk2LDcgKzg5Niw3IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydFNjaGVkdWxlZEpvYnMoKQogCiAgICAgYm9vbCBzdGFy
dGVkID0gZmFsc2U7CiAgICAgd2hpbGUgKCFtX3Jlc291cmNlSGFuZGxlTGlzdC5pc0VtcHR5KCkg
JiYgbV9ydW5uaW5nSm9icyA8IG1heFJ1bm5pbmdKb2JzKSB7Ci0gICAgICAgIFJlc291cmNlSGFu
ZGxlKiBqb2IgPSBtX3Jlc291cmNlSGFuZGxlTGlzdFswXTsKKyAgICAgICAgTmV0d29ya1Jlc291
cmNlSGFuZGxlKiBqb2IgPSBtX3Jlc291cmNlSGFuZGxlTGlzdFswXTsKICAgICAgICAgbV9yZXNv
dXJjZUhhbmRsZUxpc3QucmVtb3ZlKDApOwogICAgICAgICBzdGFydEpvYihqb2IpOwogICAgICAg
ICBzdGFydGVkID0gdHJ1ZTsKQEAgLTkwNCw3ICs5MDQsNyBAQCBib29sIFJlc291cmNlSGFuZGxl
TWFuYWdlcjo6c3RhcnRTY2hlZHVsZWRKb2JzKCkKICAgICByZXR1cm4gc3RhcnRlZDsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRpc3BhdGNoU3luY2hyb25vdXNKb2IoUmVzb3Vy
Y2VIYW5kbGUqIGpvYikKK3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkaXNwYXRjaFN5bmNo
cm9ub3VzSm9iKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogam9iKQogewogICAgIFVSTCBrdXJsID0g
am9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIApAQCAtOTQxLDcgKzk0MSw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyOjpkaXNwYXRjaFN5bmNocm9ub3VzSm9iKFJlc291cmNlSGFuZGxl
KiBqb2IpCiAgICAgY3VybF9lYXN5X2NsZWFudXAoaGFuZGxlLT5tX2hhbmRsZSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYihSZXNvdXJjZUhhbmRsZSogam9iKQor
dm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZSogam9iKQogewogICAgIFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIApA
QCAtOTY1LDcgKzk2NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYihS
ZXNvdXJjZUhhbmRsZSogam9iKQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFw
cGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUs
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBtX3VzZXIvbV9wYXNzIGFyZSBj
cmVkZW50aWFscyBnaXZlbiBtYW51YWxseSwgZm9yIGluc3RhbmNlLCBieSB0aGUgYXJndW1lbnRz
IHBhc3NlZCB0byBYTUxIdHRwUmVxdWVzdC5vcGVuKCkuCiAgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsCiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9VU0VSUFdELCB1c2VycGFzcy51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGpvYikK
K3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKE5ldHdvcmtSZXNv
dXJjZUhhbmRsZSogam9iKQogewogICAgIHN0YXRpYyBjb25zdCBpbnQgYWxsb3dlZFByb3RvY29s
cyA9IENVUkxQUk9UT19GSUxFIHwgQ1VSTFBST1RPX0ZUUCB8IENVUkxQUk9UT19GVFBTIHwgQ1VS
TFBST1RPX0hUVFAgfCBDVVJMUFJPVE9fSFRUUFM7CiAgICAgVVJMIHVybCA9IGpvYi0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCk7CkBAIC0xMTY0LDcgKzExNjQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
TWFuYWdlcjo6aW5pdENvb2tpZVNlc3Npb24oKQogICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwp
OwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6Y2FuY2VsKFJlc291cmNlSGFuZGxl
KiBqb2IpCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6Y2FuY2VsKE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZSogam9iKQogewogICAgIGlmIChyZW1vdmVTY2hlZHVsZWRKb2Ioam9iKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oCmluZGV4IDE1MmZhYzU4YjE5YzhlNGE4
ZTdmOWU1ZTBkZmM3ZWE0ZTQ5ZTk1YzYuLjdhZDZjMDdjMmNkNmJkMjNjNThkODFmM2MyNzNlMDc1
Yzg0MTViNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgKQEAgLTQ0LDYgKzQ0LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBOZXR3b3JrUmVzb3VyY2VIYW5kbGU7CisKIGNs
YXNzIFJlc291cmNlSGFuZGxlTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgZW51bSBQcm94eVR5cGUg
ewpAQCAtNTQsMTggKzU2LDE4IEBAIHB1YmxpYzoKICAgICAgICAgU29ja3M1SG9zdG5hbWUgPSBD
VVJMUFJPWFlfU09DS1M1X0hPU1ROQU1FCiAgICAgfTsKICAgICBzdGF0aWMgUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyKiBzaGFyZWRJbnN0YW5jZSgpOwotICAgIHZvaWQgYWRkKFJlc291cmNlSGFuZGxl
Kik7Ci0gICAgdm9pZCBjYW5jZWwoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICB2b2lkIGFkZChOZXR3
b3JrUmVzb3VyY2VIYW5kbGUqKTsKKyAgICB2b2lkIGNhbmNlbChOZXR3b3JrUmVzb3VyY2VIYW5k
bGUqKTsKIAogICAgIENVUkxTSCogZ2V0Q3VybFNoYXJlSGFuZGxlKCkgY29uc3Q7CiAKICAgICB2
b2lkIHNldENvb2tpZUphckZpbGVOYW1lKGNvbnN0IGNoYXIqIGNvb2tpZUphckZpbGVOYW1lKTsK
ICAgICBjb25zdCBjaGFyKiBnZXRDb29raWVKYXJGaWxlTmFtZSgpIGNvbnN0OwogCi0gICAgdm9p
ZCBkaXNwYXRjaFN5bmNocm9ub3VzSm9iKFJlc291cmNlSGFuZGxlKik7CisgICAgdm9pZCBkaXNw
YXRjaFN5bmNocm9ub3VzSm9iKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSopOwogCi0gICAgdm9pZCBz
ZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9zbGlzdCoqKTsKLSAgICB2b2lk
IHNldHVwUFVUKFJlc291cmNlSGFuZGxlKiwgc3RydWN0IGN1cmxfc2xpc3QqKik7CisgICAgdm9p
ZCBzZXR1cFBPU1QoTmV0d29ya1Jlc291cmNlSGFuZGxlKiwgc3RydWN0IGN1cmxfc2xpc3QqKik7
CisgICAgdm9pZCBzZXR1cFBVVChOZXR3b3JrUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9z
bGlzdCoqKTsKIAogICAgIHZvaWQgc2V0UHJveHlJbmZvKGNvbnN0IFN0cmluZyYgaG9zdCA9ICIi
LAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG9ydCA9IDAsCkBAIC03Nywx
MyArNzksMTMgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUhhbmRsZU1hbmFnZXIoKTsKICAgICB+
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyKCk7CiAgICAgdm9pZCBkb3dubG9hZFRpbWVyQ2FsbGJhY2so
VGltZXI8UmVzb3VyY2VIYW5kbGVNYW5hZ2VyPiopOwotICAgIHZvaWQgcmVtb3ZlRnJvbUN1cmwo
UmVzb3VyY2VIYW5kbGUqKTsKLSAgICBib29sIHJlbW92ZVNjaGVkdWxlZEpvYihSZXNvdXJjZUhh
bmRsZSopOwotICAgIHZvaWQgc3RhcnRKb2IoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICB2b2lkIHJl
bW92ZUZyb21DdXJsKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSopOworICAgIGJvb2wgcmVtb3ZlU2No
ZWR1bGVkSm9iKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSopOworICAgIHZvaWQgc3RhcnRKb2IoTmV0
d29ya1Jlc291cmNlSGFuZGxlKik7CiAgICAgYm9vbCBzdGFydFNjaGVkdWxlZEpvYnMoKTsKLSAg
ICB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoTmV0
d29ya1Jlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICB2b2lkIGluaXRp
YWxpemVIYW5kbGUoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICB2b2lkIGluaXRpYWxpemVIYW5kbGUo
TmV0d29ya1Jlc291cmNlSGFuZGxlKik7CiAKICAgICB2b2lkIGluaXRDb29raWVTZXNzaW9uKCk7
CiAKQEAgLTkyLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBDVVJMU0gqIG1fY3VybFNoYXJlSGFu
ZGxlOwogICAgIGNoYXIqIG1fY29va2llSmFyRmlsZU5hbWU7CiAgICAgY2hhciBtX2N1cmxFcnJv
ckJ1ZmZlcltDVVJMX0VSUk9SX1NJWkVdOwotICAgIFZlY3RvcjxSZXNvdXJjZUhhbmRsZSo+IG1f
cmVzb3VyY2VIYW5kbGVMaXN0OworICAgIFZlY3RvcjxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPiBt
X3Jlc291cmNlSGFuZGxlTGlzdDsKICAgICBjb25zdCBDU3RyaW5nIG1fY2VydGlmaWNhdGVQYXRo
OwogICAgIGludCBtX3J1bm5pbmdKb2JzOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmNwcAppbmRleCBiNDYyZjg5NzdmZDM3OGY2
YjU4MjFiMzk1YTc2ZjAxNDkwNmRiY2Y0Li4yNjUwYjE0OTI2NGFiNGFkOWE4YTc3YzlkODA4YzRk
MTkxNDdjMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU1NMSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU1NMSGFuZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIGFkZEFsbG93ZWRDbGllbnRD
ZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgY2VydGlmaWNhdGUs
CiAgICAgYWxsb3dlZENsaWVudEhvc3RzLnNldChob3N0Lmxvd2VyKCksIGNsaWVudEluZm8pOwog
fQogCi12b2lkIHNldFNTTENsaWVudENlcnRpZmljYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUp
Cit2b2lkIHNldFNTTENsaWVudENlcnRpZmljYXRlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlKQogewogICAgIFN0cmluZyBob3N0ID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5o
b3N0KCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGNsaWVudENlcnRpZmljYXRlPjo6aXRlcmF0b3Ig
aXQgPSBhbGxvd2VkQ2xpZW50SG9zdHMuZmluZChob3N0Lmxvd2VyKCkpOwpAQCAtMTkxLDcgKzE5
MSw3IEBAIHN0YXRpYyBpbnQgY2VydFZlcmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9D
VFgqIGN0eCkKIAogICAgIFNTTCogc3NsID0gcmVpbnRlcnByZXRfY2FzdDxTU0wqPihYNTA5X1NU
T1JFX0NUWF9nZXRfZXhfZGF0YShjdHgsIFNTTF9nZXRfZXhfZGF0YV9YNTA5X1NUT1JFX0NUWF9p
ZHgoKSkpOwogICAgIFNTTF9DVFgqIHNzbGN0eCA9IFNTTF9nZXRfU1NMX0NUWChzc2wpOwotICAg
IFJlc291cmNlSGFuZGxlKiBqb2IgPSByZWludGVycHJldF9jYXN0PFJlc291cmNlSGFuZGxlKj4o
U1NMX0NUWF9nZXRfYXBwX2RhdGEoc3NsY3R4KSk7CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxl
KiBqb2IgPSByZWludGVycHJldF9jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KFNTTF9DVFhf
Z2V0X2FwcF9kYXRhKHNzbGN0eCkpOwogICAgIFN0cmluZyBob3N0ID0gam9iLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5ob3N0KCk7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+
Z2V0SW50ZXJuYWwoKTsKIApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBDVVJMY29kZSBzc2xj
dHhmdW4oQ1VSTCogY3VybCwgdm9pZCogc3NsY3R4LCB2b2lkKiBwYXJtKQogICAgIHJldHVybiBD
VVJMRV9PSzsKIH0KIAotdm9pZCBzZXRTU0xWZXJpZnlPcHRpb25zKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUpCit2b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBo
YW5kbGUpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50
ZXJuYWwoKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1NTTF9D
VFhfREFUQSwgaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9TU0xIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9TU0xIYW5kbGUuaAppbmRleCAwYTU4NDdkZTAyMzA1NjFiMjkyZDgyZWNiOWQ4ODYzMTY0
M2YxM2YyLi42NjJmNTE0ZTc1MWM5ODQ1ODc2MWRjODUxMjIyM2Y5NmM4M2Y0M2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU1NMSGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5oCkBAIC00
Niw4ICs0Niw4IEBAIHR5cGVkZWYgZW51bSB7CiB2b2lkIGFkZEFsbG93ZWRDbGllbnRDZXJ0aWZp
Y2F0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQg
YWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKGNvbnN0IFN0cmluZyYpOwogYm9vbCBzc2xJ
Z25vcmVIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotdm9p
ZCBzZXRTU0xWZXJpZnlPcHRpb25zKFJlc291cmNlSGFuZGxlKik7Ci12b2lkIHNldFNTTENsaWVu
dENlcnRpZmljYXRlKFJlc291cmNlSGFuZGxlKik7Cit2b2lkIHNldFNTTFZlcmlmeU9wdGlvbnMo
TmV0d29ya1Jlc291cmNlSGFuZGxlKik7Cit2b2lkIHNldFNTTENsaWVudENlcnRpZmljYXRlKE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSopOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKaW5kZXggY2ZlNjAzY2ZkMTEwOTQ3NWI5OThiYjI3
NmM2NzBkY2EwNmI5ODQ0ZC4uMzJkMDUxNTEzNjUxNjdiMTE2ZjMzMDQ5ZTBlZjYwYTcwMDJjMGVl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
LmgKQEAgLTgyLDkgKzgyLDkgQEAgV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmNyZWF0ZVRlbXBv
cmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJpbmcgKmZpbGVOYW1lKTsKIGNsYXNzIFF1aWNrTG9v
a0hhbmRsZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUXVpY2tMb29rSGFuZGxlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRl
KFJlc291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQg
ZGVsZWdhdGUpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBj
cmVhdGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVz
cG9uc2UgKiwgaWQgZGVsZWdhdGUpOwogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVz
cG9uc2VSZWYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBj
cmVhdGUoTmV0d29ya1Jlc291cmNlSGFuZGxlKiwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3Jl
YXRlKFJlc291cmNlTG9hZGVyKiwgTlNVUkxSZXNwb25zZSAqKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+UXVpY2tMb29rSGFuZGxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2subW0KaW5kZXggOGY4NDllMzgyZjY1ODc0YWQ3OGQ4NjhlY2ZkZDg2
NmM3ZjVlOTBlZi4uZjgwNGM0MjYwY2MzMTRhNjc3ODg0ODVkMzM5NTEwMDdkMzA0NTcyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQpA
QCAtNDU3LDcgKzQ1Nyw3IEBAIFF1aWNrTG9va0hhbmRsZTo6UXVpY2tMb29rSGFuZGxlKE5TVVJM
ICpmaXJzdFJlcXVlc3RVUkwsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjCiAgICAgTE9HKE5ldHdv
cmssICJRdWlja0xvb2tIYW5kbGU6OlF1aWNrTG9va0hhbmRsZSgpIC0gcHJldmlld0ZpbGVOYW1l
OiAlcyIsIFttX2NvbnZlcnRlciBwcmV2aWV3RmlsZU5hbWVdKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOU1VSTFJlc3BvbnNlICpu
c1Jlc3BvbnNlLCBpZCBkZWxlZ2F0ZSkKK3N0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+
IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBO
U1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UsIGlk
IGRlbGVnYXRlKQogewogICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwogICAgIGlmICgh
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS5kZXByZWNhdGVkSXNNYWluUmVzb3VyY2VSZXF1ZXN0KCkg
fHwgIVtXZWJDb3JlOjpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWlu
c09iamVjdDpbbnNSZXNwb25zZSBNSU1FVHlwZV1dKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsCiB9CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotc3RkOjp1bmlxdWVf
cHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlKiBjb25uZWN0aW9uRGVsZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKK3N0
ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJl
ZiBjZlJlc3BvbnNlKQogewogICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwogICAgIGlm
ICghaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5kZXByZWNhdGVkSXNNYWluUmVzb3VyY2VSZXF1ZXN0
KCkgfHwgIVtXZWJDb3JlOjpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250
YWluc09iamVjdDooTlNTdHJpbmcgKilDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25z
ZSldKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVz
b3VyY2VIYW5kbGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9S
ZXNvdXJjZUhhbmRsZUlPUy5tbQppbmRleCA2NjdiOWIxODY2NzQ0MGRlYmZlZmRhMTgwNWI4NGNi
NTQ3ODRjNTc5Li5jMzRhY2QzOTQzMjU5OTBmNDVjMzdjODc4Mzk5Mzk4ODQyZDI5MjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRs
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJj
ZUhhbmRsZUlPUy5tbQpAQCAtMTcsNyArMTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRk11dGFibGVEaWN0aW9uYXJ5UmVmIFJlc291cmNl
SGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitDRk11dGFibGVEaWN0aW9uYXJ5UmVmIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwo
KS5ob3N0KCk7CiAgICAgTlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRl
eCA3NjQ1NGRhOWQyNGUwZmI2NWI4NzQ0NjUwZjkwOGI3MTAwZWU2OTQ0Li41NzkzZThjY2RmZTc2
M2YyODU2ZGFiYTYxZThlYTU1YWNmMmZhZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtMTIyLDcg
KzEyMiw3IEBAIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFs
KCkKIHsKIH0KIAotUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCitOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6On5OZXR3b3JrUmVzb3VyY2VIYW5kbGUoKQogewogICAgIHJlbGVhc2VEZWxl
Z2F0ZSgpOwogICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZS5zZXRBdXRoZW50aWNhdGlvbkNs
aWVudCgwKTsKQEAgLTEzOSw5ICsxMzksOSBAQCBzdGF0aWMgYm9vbCBzeW5jaHJvbm91c1dpbGxT
ZW5kUmVxdWVzdEVuYWJsZWQoKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZp
b3Igc2NoZWR1bGluZ0JlaGF2aW9yKQogI2Vsc2UKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVs
aW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblByb3BlcnRpZXMpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwg
U2NoZWR1bGluZ0JlaGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25u
ZWN0aW9uUHJvcGVydGllcykKICNlbmRpZgogewogI2lmIEVOQUJMRShXRUJfVElNSU5HKQpAQCAt
MjI3LDcgKzIyNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlv
bihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAgICAgZC0+bV9jb25uZWN0
aW9uID0gYWRvcHROUyhbW05TVVJMQ29ubmVjdGlvbiBhbGxvY10gX2luaXRXaXRoUmVxdWVzdDpu
c1JlcXVlc3QgZGVsZWdhdGU6ZGVsZWdhdGUgdXNlc0NhY2hlOnVzZXNDYWNoZSBtYXhDb250ZW50
TGVuZ3RoOjAgc3RhcnRJbW1lZGlhdGVseTpOTyBjb25uZWN0aW9uUHJvcGVydGllczpwcm9wZXJ0
eURpY3Rpb25hcnldKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQorYm9vbCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIHsKICAgICBpZiAoIWQtPm1fY29udGV4dCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ4LDEzICsyNDgsMTMgQEAgYm9vbCBSZXNvdXJj
ZUhhbmRsZTo6c3RhcnQoKQogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBjcmVhdGVOU1VSTENv
bm5lY3Rpb24oCi0gICAgICAgIFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UpLAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Om1ha2VE
ZWxlZ2F0ZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSksCiAgICAgICAgIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlLAogICAgICAgICBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZiB8fCBkLT5t
X2NvbnRleHQtPmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSwKICAgICAgICAgU2No
ZWR1bGluZ0JlaGF2aW9yOjpBc3luY2hyb25vdXMpOwogI2Vsc2UKICAgICBjcmVhdGVOU1VSTENv
bm5lY3Rpb24oCi0gICAgICAgIFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UpLAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Om1ha2VE
ZWxlZ2F0ZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSksCiAgICAgICAgIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlLAogICAgICAgICBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZiB8fCBkLT5t
X2NvbnRleHQtPmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSwKICAgICAgICAgU2No
ZWR1bGluZ0JlaGF2aW9yOjpBc3luY2hyb25vdXMsCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y2FuY2VsKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjYW5jZWwo
KQogewogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGNhbmNlbCBjb25uZWN0aW9uICVwIiwg
dGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgW2QtPm1fY29ubmVjdGlvbi5nZXQoKSBjYW5j
ZWxdOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmco
Ym9vbCBkZWZlcnMpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZl
cnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogewogICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHdrU2V0TlNVUkxDb25uZWN0aW9uRGVmZXJzQ2FsbGJhY2tzKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgZGVmZXJzKTsKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpw
bGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAKICNpZiBQTEFURk9STShNQUMp
CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKK3Zv
aWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7
CiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKTsKICAgICBpZiAoIXJ1
bkxvb3ApCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUo
U2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5z
Y2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgaWYgKE5TUnVuTG9vcCAqcnVu
TG9vcCA9IHBhaXIubnNSdW5Mb29wKCkpCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkg
dW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1v
ZGUoKV07CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVs
ZShTY2hlZHVsZVBhaXImIHBhaXIpCiAKICNlbmRpZgogCi1pZCBSZXNvdXJjZUhhbmRsZTo6bWFr
ZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCitpZCBOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZShib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KQogewogICAgIEFTU0VSVCghZC0+bV9kZWxlZ2F0ZSk7CiAKQEAgLTM2MywxNCArMzYzLDE0IEBA
IGlkIFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSkKICAgICByZXR1cm4gZC0+bV9kZWxlZ2F0ZS5nZXQoKTsKIH0KIAotaWQgUmVzb3Vy
Y2VIYW5kbGU6OmRlbGVnYXRlKCkKK2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUo
KQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG1ha2VEZWxlZ2F0
ZShmYWxzZSk7CiAgICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlbGVhc2VEZWxlZ2F0ZSgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6cmVsZWFzZURlbGVnYXRlKCkKIHsKICAgICBpZiAoIWQtPm1fZGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKQEAgLTM3OCwzMSArMzc4LDMxIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlbGVh
c2VEZWxlZ2F0ZSgpCiAgICAgZC0+bV9kZWxlZ2F0ZSA9IG5pbDsKIH0KIAotTlNVUkxDb25uZWN0
aW9uICpSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbigpIGNvbnN0CitOU1VSTENvbm5lY3Rpb24g
Kk5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGQtPm1fY29ubmVjdGlvbi5nZXQoKTsKIH0KICAgICAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6Omxv
YWRzQmxvY2tlZCgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkK
IHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNGU3RyaW5nUmVmIFJlc291cmNlSGFuZGxlOjpz
eW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgpCitDRlN0cmluZ1JlZiBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCkKIHsKICAgICByZXR1cm4gQ0ZTVFIo
IldlYkNvcmVTeW5jaHJvbm91c0xvYWRlclJ1bkxvb3BNb2RlIik7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVk
ZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENy
ZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBMT0coTmV0
d29yaywgIlJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6
JUAgYWxsb3dTdG9yZWRDcmVkZW50aWFsczoldSIsIHJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90
VXBkYXRlSFRUUEJvZHkpLCBzdG9yZWRDcmVkZW50aWFscyk7CisgICAgTE9HKE5ldHdvcmssICJO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseTol
QCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSksIHN0b3JlZENyZWRlbnRpYWxzKTsKIAogICAgIEFTU0VSVCghcmVxdWVz
dC5pc0VtcHR5KCkpOwogICAgIAogICAgIE93blB0cjxTeW5jaHJvbm91c0xvYWRlckNsaWVudD4g
Y2xpZW50ID0gU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmNyZWF0ZSgpOwogICAgIGNsaWVudC0+
c2V0QWxsb3dTdG9yZWRDcmVkZW50aWFscyhzdG9yZWRDcmVkZW50aWFscyA9PSBBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzKTsKIAotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRv
cHRSZWYobmV3IFJlc291cmNlSGFuZGxlKGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudC5nZXQoKSwg
ZmFsc2UgLypkZWZlcnNMb2FkaW5nKi8sIHRydWUgLypzaG91bGRDb250ZW50U25pZmYqLykpOwor
ICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxz
ZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKICAg
ICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
LnBsYXRmb3JtU2Vzc2lvbigpOwogCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXgKICAgICBkYXRhLnN3YXAoY2xpZW50LT5tdXRhYmxlRGF0YSgpKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIEFTU0VS
VCghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7CiAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoY2xpZW50KCkpOwogICAgIEFT
U0VSVChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOwpAQCAtNTE1LDcgKzUxNSw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxsU2Vu
ZFJlcXVlc3Q6bmV3UmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpXTsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsKICAg
ICBBU1NFUlQoY2xpZW50KCkpOwogICAgIEFTU0VSVChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJh
Y2tzKCkpOwpAQCAtNTIzLDEzICs1MjMsMTMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIFtkZWxlZ2F0ZSgpIGNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlXTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKCkKIHsKICAgICBBU1NFUlQoIWNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3Mo
KSk7CiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSh0aGlzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVu
Z2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAg
ICAgQVNTRVJUKCFkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UpOwogICAgIEFTU0VSVChkLT5tX2N1
cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsCiAgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UodGhpcywgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIEFTU0VSVChkLT5tX2N1cnJlbnRNYWNDaGFs
bGVuZ2UpOwogICAgIEFTU0VSVChkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgPT0gY2hhbGxlbmdl
Lm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CkBAIC02MTcsNyArNjE3LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGUKIH0KIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCi1ib29sIFJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQorYm9v
bCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgaWYg
KGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkgewogICAgICAgICBpZiAoY2xpZW50KCkp
CkBAIC02MjksNyArNjI5LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UKICAgICAgICAgcmV0
dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3Vs
dCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgp
KTsKICAgICBBU1NFUlQoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKTsKQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCiB9CiAjZW5kaWYKIAotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAg
ICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRDcmVkZW50aWFsIiwgdGhpcyk7CiAK
QEAgLTY2Nyw3ICs2NjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgIGNsZWFyQXV0
aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRSZXF1
ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsIiwgdGhpcyk7CiAKQEAgLTY4MCw3ICs2ODAs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYQogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKQogewogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJlY2VpdmVkQ2FuY2Vs
bGF0aW9uIiwgdGhpcyk7CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbgogICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24odGhpcywgY2hhbGxl
bmdlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7
CiAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVm
YXVsdEhhbmRsaW5nIiwgdGhpcyk7CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0
aGVudGljYXRpbwogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQogewogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJlY2VpdmVkQ2hhbGxlbmdlUmVq
ZWN0aW9uIiwgdGhpcyk7CiAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgYwogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25z
ZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNl
KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogewogICAgIEFTU0VSVChjbGllbnQoKSk7
CiAgICAgQVNTRVJUKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CkBAIC03MjksNyAr
NzI5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShO
U0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSkKICAgICAKICNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKICAgICAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5T
RGljdGlvbmFyeSAqdGltaW5nRGF0YSwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNEaWN0aW9u
YXJ5ICp0aW1pbmdEYXRhLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKIHsKICAgICBpZiAo
IXRpbWluZ0RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWlu
Z0RhdGEsIFJlc291cmNlTAogICAgIHRpbWluZy5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFy
dCA8PSAwID8gMCA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q29sbGVjdHNUaW1pbmdEYXRhKCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDb2xsZWN0c1RpbWluZ0RhdGEoKQogewogICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKQEAgLTc2NSwxNCArNzY1LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENvbGxl
Y3RzVGltaW5nRGF0YSgpCiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5l
Y3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQordm9pZCBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0
aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKIHsKICAgICBnZXRDb25uZWN0aW9uVGlt
aW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5KikoYWRvcHRDRihfQ0ZVUkxDb25uZWN0aW9u
Q29weVRpbWluZ0RhdGEoY29ubmVjdGlvbikpLmdldCgpKSwgdGltaW5nKTsKIH0KICAgICAKICNl
bHNlCiAgICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShO
U1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJM
Q29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAg
ICAgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1p
bmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCmluZGV4IDRm
NDE1NWVhZmQ5NDViMWI4NjJkMjljZTg5NmRjYWRjZGExYzQyNjYuLjc3YWI1ODMzYjQzMTBmMzJk
YTU3Mzg5Y2Q3MzViMjJmNGVmYTU4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLmgKQEAgLTI5LDEzICsyOSwxMyBAQAogI2lmICFVU0UoQ0ZORVRXT1JLKQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSZXNvdXJjZUhhbmRsZTsKK2NsYXNzIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTsKIH0KIAogQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOworICAgIFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZUhhbmRsZSogbV9oYW5kbGU7CiB9Ci0tIChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqKWhhbmRsZTsKKy0gKGlkKWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VIYW5kbGUqKWhhbmRsZTsKIC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQppbmRleCAzYTNjNjgz
YTUyMzM3YTYwMDNiNGZhNjVkNmZlMWM2OWJkMDhmYzAwLi45MDg5NGM2NWE2MjhiZmM2ZmIyMTE0
MmUxYTY2NjhhM2M4ZGU2YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlCiAKLS0gKGlkKWlu
aXRXaXRoSGFuZGxlOihSZXNvdXJjZUhhbmRsZSopaGFuZGxlCistIChpZClpbml0V2l0aEhhbmRs
ZTooTmV0d29ya1Jlc291cmNlSGFuZGxlKiloYW5kbGUKIHsKICAgICBzZWxmID0gW3NlbGYgaW5p
dF07CiAgICAgaWYgKCFzZWxmKQpAQCAtMTcyLDcgKzE3Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogICAgIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShyKTsK
ICNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlv
blRpbWluZ0RhdGEoY29ubmVjdGlvbiwgcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1p
bmcoKSk7CisgICAgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0
YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCmlu
ZGV4IGU3NDBhYTU5YmVkNjNiYWI5MDc2ZjA3OTNhYjNkMDNkZTAwMmIwNTEuLjU1NjVlN2ViYTJj
ZThiNDk5MzMwNzA3OWRjNzYyYjBlMjcyZmQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC0zMiwxMSAr
MzIsMTEgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIFJlc291cmNlSGFuZGxlOworY2xhc3MgTmV0d29ya1Jlc291cmNlSGFuZGxlOwog
fQogCiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gewotICAgIFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKKyAgICBXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VI
YW5kbGUqIG1faGFuZGxlOwogCiAgICAgLy8gU3luY2hyb25vdXMgZGVsZWdhdGVzIG9uIG9wZXJh
dGlvbiBxdWV1ZSB3YWl0IHVudGlsIG1haW4gdGhyZWFkIHNlbmRzIGFuIGFzeW5jaHJvbm91cyBy
ZXNwb25zZS4KICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfdCBtX3NlbWFwaG9yZTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgQk9PTCBtX2Jvb2xSZXN1bHQ7CiB9
CiAKLS0gKGlkKWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxl
OworLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZUhhbmRsZSop
aGFuZGxlOwogLSAodm9pZClkZXRhY2hIYW5kbGU7CiAtICh2b2lkKWNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiluZXdSZXF1ZXN0OwogLSAodm9pZCljb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCA5MjhkNDE3M2Q4MjEzYjg3MmI1YTRk
ZjU4MTU3YzgxZGZlYzgwODk4Li4yZWE3Y2RiMWUwM2ViNmIxMGMyZDFjYzg0YjU3NjUxYThmMTc4
NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlCiAKLS0gKGlkKWluaXRXaXRoSGFuZGxlOihSZXNvdXJjZUhhbmRsZSop
aGFuZGxlCistIChpZClpbml0V2l0aEhhbmRsZTooTmV0d29ya1Jlc291cmNlSGFuZGxlKiloYW5k
bGUKIHsKICAgICBzZWxmID0gW3NlbGYgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtMjE0LDcg
KzIxNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgICAgICAKICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKHIpOwogI2lmIEVOQUJMRShXRUJfVElNSU5H
KQotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVj
dGlvbiwgcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSk7CisgICAgICAgIE5l
dHdvcmtSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbiwg
cmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSk7CiAjZWxzZQogICAgICAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5k
ZXggZDEwODUwZDYyNTlkZTE0ZjYwZTM0ZWEzOGVlN2Q0OGVjNGViNjJmMS4uOTQ3MzRlN2ZkYjhm
NzYxNzNjZDQ5ZTM4NDM5ZTVhMTU3ZDY4YjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAg
LTIyNywxNSArMjI3LDE1IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fY2VydGlm
aWNhdGVzOwogfTsKIAotc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9y
SGFuZGxlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBpc0hU
VFBGYW1pbHlSZXF1ZXN0KTsKLXN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlv
bihSZXNvdXJjZUhhbmRsZSosIGJvb2wgaXNEZXN0cm95aW5nID0gZmFsc2UpOworc3RhdGljIGJv
b2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgaXNIVFRQRmFtaWx5UmVxdWVzdCk7
CitzdGF0aWMgdm9pZCBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oTmV0d29ya1Jlc291cmNl
SGFuZGxlKiwgYm9vbCBpc0Rlc3Ryb3lpbmcgPSBmYWxzZSk7CiBzdGF0aWMgdm9pZCBzZW5kUmVx
dWVzdENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlcik7CiBzdGF0aWMg
dm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyKTsKIHN0
YXRpYyBnYm9vbGVhbiByZXF1ZXN0VGltZW91dENhbGxiYWNrKHZvaWQqKTsKICNpZiBFTkFCTEUo
V0VCX1RJTUlORykKIHN0YXRpYyBpbnQgIG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGRvdWJsZSBy
ZXF1ZXN0VGltZSk7CiAjZW5kaWYKLXN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJEaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqKTsKK3N0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJEaWRS
ZWNlaXZlUmVzcG9uc2UoTmV0d29ya1Jlc291cmNlSGFuZGxlKik7CiAKIHN0YXRpYyBib29sIGdJ
Z25vcmVTU0xFcnJvcnMgPSBmYWxzZTsKIApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyBTb3Vw
U2Vzc2lvbiogc2Vzc2lvbkZyb21Db250ZXh0KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQog
ICAgIHJldHVybiBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnNvdXBOZXR3b3JrU2Vzc2lvbigp
LnNvdXBTZXNzaW9uKCk7CiB9CiAKLVJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQor
TmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFuZGxlKCkKIHsKICAgICBj
bGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24odGhpcywgdHJ1ZSk7CiB9CkBAIC0yNzMsNyArMjcz
LDcgQEAgU291cFNlc3Npb24qIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OnNvdXBTZXNzaW9uKCkK
ICAgICByZXR1cm4gc2Vzc2lvbkZyb21Db250ZXh0KG1fY29udGV4dC5nZXQoKSk7CiB9CiAKLWJv
b2wgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpCitib29sIE5ldHdvcmtS
ZXNvdXJjZUhhbmRsZTo6Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkKIHsKICAgICBpZiAoIWNsaWVu
dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFJlc291
cmNlSGFuZGxlOjpjYW5jZWxsZWRPckNsaWVudGxlc3MoKQogICAgIHJldHVybiBnZXRJbnRlcm5h
bCgpLT5tX2NhbmNlbGxlZDsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZW5zdXJlUmVhZEJ1
ZmZlcigpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZW5zdXJlUmVhZEJ1ZmZlcigpCiB7
CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFsKCk7CiAKQEAgLTMw
OCw3ICszMDgsNyBAQCBzdGF0aWMgYm9vbCBpc0F1dGhlbnRpY2F0aW9uRmFpbHVyZVN0YXR1c0Nv
ZGUoaW50IGh0dHBTdGF0dXNDb2RlKQogCiBzdGF0aWMgdm9pZCBnb3RIZWFkZXJzQ2FsbGJhY2so
U291cE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgTmV0
d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VI
YW5kbGUqPihkYXRhKTsKICAgICBpZiAoIWhhbmRsZSB8fCBoYW5kbGUtPmNhbmNlbGxlZE9yQ2xp
ZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMg
dm9pZCBnb3RIZWFkZXJzQ2FsbGJhY2soU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRh
dGEpCiAgICAgZC0+bV9yZXNwb25zZS51cGRhdGVGcm9tU291cE1lc3NhZ2UobWVzc2FnZSk7CiB9
CiAKLXN0YXRpYyB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHJlZGlyZWN0KQorc3Rh
dGljIHZvaWQgYXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHJlZGlyZWN0KQogewog
ICAgIC8vIG1fdXNlci9tX3Bhc3MgYXJlIGNyZWRlbnRpYWxzIGdpdmVuIG1hbnVhbGx5LCBmb3Ig
aW5zdGFuY2UsIGJ5IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIFhNTEh0dHBSZXF1ZXN0Lm9wZW4o
KS4KICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgp
OwpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1Jl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0CiAvLyBUaGlzIGhh
cHBlbnMgd2hlbiBsaWJzb3VwIGhhbmRsZXMgSFRUUCBhdXRoZW50aWNhdGlvbi4KIHN0YXRpYyB2
b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgZ3BvaW50ZXIgZGF0YSkKIHsKLSAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihk
YXRhKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogICAgIGlmICghaGFuZGxlIHx8IGhhbmRsZS0+
Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzg0LDcgKzM4
NCw3IEBAIHN0YXRpYyB2b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgZ3BvaW50
ZXIgZGF0YSkKIH0KICNlbmRpZgogCi1zdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdChSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlKQorc3RhdGljIGJvb2wgc2hvdWxkUmVkaXJlY3QoTmV0d29ya1Jlc291
cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhh
bmRsZS0+Z2V0SW50ZXJuYWwoKTsKICAgICBTb3VwTWVzc2FnZSogbWVzc2FnZSA9IGQtPm1fc291
cE1lc3NhZ2UuZ2V0KCk7CkBAIC00MjMsNyArNDIzLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVk
aXJlY3RBc0dFVChTb3VwTWVzc2FnZSogbWVzc2FnZSwgVVJMJiBuZXdVUkwsIGJvb2wgY3Jvc3NP
cmkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQorc3RhdGljIHZvaWQgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChOZXR3
b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogewogICAgIC8vIHdpbGxTZW5kUmVxdWVzdCBtaWdodCBjYW5jZWwgdGhlIGxvYWQuCiAgICAg
aWYgKGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCkBAIC00NDIsNyArNDQyLDcgQEAg
c3RhdGljIHZvaWQgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZVIKICAgICBoYW5kbGUtPnNlbmRQZW5kaW5nUmVxdWVzdCgp
OwogfQogCi1zdGF0aWMgdm9pZCBkb1JlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCitz
dGF0aWMgdm9pZCBkb1JlZGlyZWN0KE5ldHdvcmtSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewog
ICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CiAg
ICAgc3RhdGljIGNvbnN0IGludCBtYXhSZWRpcmVjdHMgPSAyMDsKQEAgLTUwMSw3ICs1MDEsNyBA
QCBzdGF0aWMgdm9pZCBkb1JlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAKIHN0YXRp
YyB2b2lkIHJlZGlyZWN0U2tpcENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5j
UmVzdWx0LCBncG9pbnRlciBkYXRhKQogewotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFu
ZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZWZQdHI8TmV0
d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VI
YW5kbGUqPihkYXRhKTsKIAogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9yQ2xpZW50bGVzcygp
KSB7CiAgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOwpA
QCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0U2tpcENhbGxiYWNrKEdPYmpl
Y3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkCiAKIHN0YXRpYyB2b2lk
IHdyb3RlQm9keURhdGFDYWxsYmFjayhTb3VwTWVzc2FnZSosIFNvdXBCdWZmZXIqIGJ1ZmZlciwg
Z3BvaW50ZXIgZGF0YSkKIHsKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0
YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVmUHRyPE5ldHdvcmtSZXNv
dXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4o
ZGF0YSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTQzLDcgKzU0
Myw3IEBAIHN0YXRpYyB2b2lkIHdyb3RlQm9keURhdGFDYWxsYmFjayhTb3VwTWVzc2FnZSosIFNv
dXBCdWZmZXIqIGJ1ZmZlciwgZ3BvaW50ZXIgZGF0CiAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlk
U2VuZERhdGEoaGFuZGxlLmdldCgpLCBkLT5tX2JvZHlEYXRhU2VudCwgZC0+bV9ib2R5U2l6ZSk7
CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluZykKK3N0YXRpYyB2b2lkIGNsZWFudXBTb3Vw
UmVxdWVzdE9wZXJhdGlvbihOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rl
c3Ryb3lpbmcpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0
SW50ZXJuYWwoKTsKIApAQCAtNTY5LDcgKzU2OSw3IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBTb3Vw
UmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWlu
CiAgICAgICAgIGhhbmRsZS0+ZGVyZWYoKTsKIH0KIAotc3RhdGljIGJvb2wgaGFuZGxlVW5pZ25v
cmVkVExTRXJyb3JzKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCitzdGF0aWMgYm9vbCBoYW5kbGVV
bmlnbm9yZWRUTFNFcnJvcnMoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSA9IGQtPm1fcmVzcG9uc2U7CkBAIC01OTAs
NyArNTkwLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlVW5pZ25vcmVkVExTRXJyb3JzKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBSZXNvdXJjZUhh
bmRsZTo6Y3VycmVudFN0cmVhbVBvc2l0aW9uKCkgY29uc3QKK3NpemVfdCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OmN1cnJlbnRTdHJlYW1Qb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgR0lucHV0U3Ry
ZWFtKiBiYXNlU3RyZWFtID0gZC0+bV9pbnB1dFN0cmVhbS5nZXQoKTsKICAgICB3aGlsZSAoIUdf
SVNfU0VFS0FCTEUoYmFzZVN0cmVhbSkgJiYgR19JU19GSUxURVJfSU5QVVRfU1RSRUFNKGJhc2VT
dHJlYW0pKQpAQCAtNjA0LDcgKzYwNCw3IEBAIHNpemVfdCBSZXNvdXJjZUhhbmRsZTo6Y3VycmVu
dFN0cmVhbVBvc2l0aW9uKCkgY29uc3QKIAogc3RhdGljIHZvaWQgbmV4dE11bHRpcGFydFJlc3Bv
bnNlUGFydENhbGxiYWNrKEdPYmplY3QqIC8qc291cmNlKi8sIEdBc3luY1Jlc3VsdCogcmVzdWx0
LCBncG9pbnRlciBkYXRhKQogewotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0g
c3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jl
c291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUq
PihkYXRhKTsKIAogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKSB7CiAg
ICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOwpAQCAtNjQ1
LDcgKzY0NSw3IEBAIHN0YXRpYyB2b2lkIG5leHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFj
ayhHT2JqZWN0KiAvKnNvdXJjZSovLCBHQXN5bmNSZXN1bHQqCiAKIHN0YXRpYyB2b2lkIHNlbmRS
ZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciBk
YXRhKQogewotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8
UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxl
PiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKIAog
ICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKSB7CiAgICAgICAgIGNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOwpAQCAtNzEyLDcgKzcxMiw3IEBA
IHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29udGludWVB
ZnRlckRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorc3RhdGljIHZv
aWQgY29udGludWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShOZXR3b3JrUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSkKIHsKICAgICBpZiAoaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3MoKSkgewog
ICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlKTsKQEAgLTgyOCwxNCAr
ODI4LDE0IEBAIHN0YXRpYyBpbnQgbWlsaXNlY29uZHNTaW5jZVJlcXVlc3QoZG91YmxlIHJlcXVl
c3RUaW1lKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KChtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKSAtIHJlcXVlc3RUaW1lKSAqIDEwMDAuMCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VI
YW5kbGU6OmRpZFN0YXJ0UmVxdWVzdCgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZGlk
U3RhcnRSZXF1ZXN0KCkKIHsKICAgICBnZXRJbnRlcm5hbCgpLT5tX3Jlc3BvbnNlLnJlc291cmNl
TG9hZFRpbWluZygpLnJlcXVlc3RTdGFydCA9IG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KG1fcmVx
dWVzdFRpbWUpOwogfQogCiBzdGF0aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxsYmFjayhTb3VwTWVz
c2FnZSosIEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwgR0lPU3RyZWFtKiwgZ3BvaW50ZXIgZGF0
YSkKIHsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VI
YW5kbGUqPihkYXRhKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRp
Y19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwogICAgIGlmICghaGFuZGxlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTg4Niw3ICs4ODYsNyBAQCBzdGF0aWMgdm9pZCBuZXR3b3Jr
RXZlbnRDYWxsYmFjayhTb3VwTWVzc2FnZSosIEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwgR0lP
U3RyZQogfQogI2VuZGlmCiAKLXN0YXRpYyBib29sIGNyZWF0ZVNvdXBNZXNzYWdlRm9ySGFuZGxl
QW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCitzdGF0aWMgYm9vbCBjcmVhdGVTb3VwTWVzc2FnZUZvckhhbmRsZUFuZFJlcXVl
c3QoTmV0d29ya1Jlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKICAgICBBU1NFUlQoaGFuZGxlKTsKIApAQCAtOTQ0LDcgKzk0NCw3IEBAIHN0
YXRpYyBib29sIGNyZWF0ZVNvdXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBSCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29s
IGNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgaXNIVFRQRmFtaWx5UmVx
dWVzdCkKK3N0YXRpYyBib29sIGNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZShO
ZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBib29sIGlzSFRUUEZhbWlseVJlcXVlc3QpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKIApAQCAtOTcwLDcgKzk3MCw3IEBAIHN0
YXRpYyBib29sIGNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZShSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBSCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVzb3Vy
Y2VIYW5kbGU6OnN0YXJ0KCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzdGFydCgpCiB7
CiAgICAgQVNTRVJUKCFkLT5tX3NvdXBNZXNzYWdlKTsKIApAQCAtMTAwNCw3ICsxMDA0LDcgQEAg
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFJlc291cmNlSGFuZGxlOjpzZW5kUGVuZGluZ1JlcXVlc3QoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VIYW5kbGU6OnNlbmRQZW5kaW5nUmVxdWVzdCgpCiB7CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcp
CiAgICAgbV9yZXF1ZXN0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpAQCAt
MTAyNCw3ICsxMDI0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2VuZFBlbmRpbmdSZXF1ZXN0
KCkKICAgICBzb3VwX3JlcXVlc3Rfc2VuZF9hc3luYyhkLT5tX3NvdXBSZXF1ZXN0LmdldCgpLCBk
LT5tX2NhbmNlbGxhYmxlLmdldCgpLCBzZW5kUmVxdWVzdENhbGxiYWNrLCB0aGlzKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxl
OjpjYW5jZWwoKQogewogICAgIGQtPm1fY2FuY2VsbGVkID0gdHJ1ZTsKICAgICBpZiAoZC0+bV9z
b3VwTWVzc2FnZSkKQEAgLTEwMzMsMjIgKzEwMzMsMjIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y2FuY2VsKCkKICAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoZC0+bV9jYW5jZWxsYWJsZS5n
ZXQoKSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSgpCiB7CiAgICAgcmV0dXJuICghY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKHRoaXMpKSAmJiBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NB
bnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKK3ZvaWQgTmV0d29ya1Jlc291
cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
IGhvc3QpCiB7CiAgICAgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuYWRkKGhvc3Qu
bG93ZXIoKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRl
KGNvbnN0IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKK3ZvaWQg
TmV0d29ya1Jlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
IGhvc3QsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCiB7CiAgICAgY2xpZW50Q2VydGlm
aWNhdGVzKCkuYWRkKGhvc3QubG93ZXIoKSwgSG9zdFRMU0NlcnRpZmljYXRlU2V0KCkpLml0ZXJh
dG9yLT52YWx1ZS5hZGQoY2VydGlmaWNhdGUpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpz
ZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25vcmVTU0xFcnJvcnMpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGJvb2wgaWdub3JlU1NMRXJyb3JzKQogewog
ICAgIGdJZ25vcmVTU0xFcnJvcnMgPSBpZ25vcmVTU0xFcnJvcnM7CiB9CkBAIC0xMDU2LDExICsx
MDU2LDExIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhib29sIGln
bm9yZVNTTEVycm9ycykKICNpZiBQTEFURk9STShHVEspCiB2b2lkIGdldENyZWRlbnRpYWxGcm9t
UGVyc2lzdGVudFN0b3JlQ2FsbGJhY2soY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgdm9p
ZCogZGF0YSkKIHsKLSAgICBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpLT5jb250
aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjcmVkZW50aWFsKTsKKyAgICBz
dGF0aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihkYXRhKS0+Y29udGludWVEaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY3JlZGVudGlhbCk7CiB9CiAjZW5kaWYKIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZSkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRTdG9y
YWdlKQogewogICAgIEFTU0VSVCghZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlLmlzTnVsbCgpKTsK
ICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlID0gZC0+bV9jdXJyZW50V2Vi
Q2hhbGxlbmdlOwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQ3JlZGVudGlhbCYK
ICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMsIGNo
YWxsZW5nZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIEFT
U0VSVChkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpOwogCkBAIC0xMTI3LDcgKzEx
MjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbAogICAgIGNvbnRpbnVlRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENyZWRlbnRpYWwoKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIEFTU0VSVCghY2hhbGxl
bmdlLmlzTnVsbCgpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxs
ZW5nZSkKQEAgLTExMzcsNyArMTEzNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVk
UmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhCiAgICAg
Y2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBBU1NFUlQoIWNoYWxsZW5n
ZS5pc051bGwoKSk7CiAgICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVu
Z2UpCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENy
ZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgIGNs
ZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
YW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIEFTU0VSVCghY2hhbGxlbmdl
LmlzTnVsbCgpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5n
ZSkKQEAgLTExOTQsMTcgKzExOTQsMTcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
YW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW4KICAgICBj
bGVhckF1dGhlbnRpY2F0aW9uKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVk
UmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJm
b3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotc3RhdGljIGJvb2wgd2FpdGluZ1RvU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSkKK3N0YXRpYyBib29sIHdhaXRpbmdUb1NlbmRSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSogaGFuZGxlKQogewogICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGQtPm1fc291cFJl
cXVlc3QgYmVjYXVzZSB0aGUgcmVxdWVzdCBtYXkgaGF2ZSByYWlzZWQgYSBmYWlsdXJlCiAgICAg
Ly8gKGZvciBleGFtcGxlIGludmFsaWQgVVJMcykuIFdlIGNhbm5vdCAgc2ltcGx5IGNoZWNrIGZv
ciBkLT5tX3NjaGVkdWxlZEZhaWx1cmUgYmVjYXVzZQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgc3Rh
dGljIGJvb2wgd2FpdGluZ1RvU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAg
ICByZXR1cm4gaGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5tX3NvdXBSZXF1ZXN0ICYmICFoYW5kbGUt
PmdldEludGVybmFsKCktPm1fY2FuY2VsbGFibGU7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVyc0xvYWRpbmcpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzTG9h
ZGluZykKIHsKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEyNDEsMTIgKzEyNDEsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1T
ZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzTG9hZGluZykKICAgICB9CiB9CiAKLWJvb2wgUmVz
b3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgpCitib29sIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6
bG9hZHNCbG9ja2VkKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVzb3VyY2VI
YW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50
aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRl
bnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIWxv
YWRpbmdTeW5jaHJvbm91c1JlcXVlc3QpOwogICAgIGlmIChsb2FkaW5nU3luY2hyb25vdXNSZXF1
ZXN0KSAvLyBJbiBwcmFjdGljZSB0aGlzIGNhbm5vdCBoYXBwZW4sIGJ1dCBpZiBmb3Igc29tZSBy
ZWFzb24gaXQgZG9lcywKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoZSByZXF1ZXN0IGhhcyBhbHJlYWR5
IGZhaWxlZCwgZG8gbm90IHJ1biB0aGUgbWFpbiBsb29wLCBvciBlbHNlIHdlJ2xsIGJsb2NrIGlu
ZGVmaW5pdGVseS4KLSAgICBpZiAoaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9
IE5vRmFpbHVyZSkKKyAgICBpZiAoaGFuZGxlLT5pc1NjaGVkdWxlZFRvRmFpbCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBzeW5jTG9hZGVyLnJ1bigpOwpAQCAtMTI2Niw3ICsxMjY2LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXgKIAogc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmpl
Y3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYXRhKQogewotICAgIFJl
ZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUq
PihkYXRhKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0
aWNfY2FzdDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKIAogICAgIGlmIChoYW5kbGUt
PmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKSB7CiAgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9w
ZXJhdGlvbihoYW5kbGUuZ2V0KCkpOwpAQCAtMTMyNywxNCArMTMyNywxNCBAQCBzdGF0aWMgdm9p
ZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2lu
dGVyIGRhdGEpCiAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFjaywg
aGFuZGxlLmdldCgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3b3JrUmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoY2xpZW50KCkpOwogICAgIEFTU0VSVChjbGllbnQo
KS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOwogICAgIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVl
c3QodGhpcywgcmVxdWVzdCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBBU1NFUlQo
Y2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKTsKQEAgLTEzNDMsNyArMTM0Myw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIAogc3RhdGlj
IGdib29sZWFuIHJlcXVlc3RUaW1lb3V0Q2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKIHsKLSAgICBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxl
Kj4oZGF0YSk7CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3Rh
dGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlSGFuZGxlKj4oZGF0YSk7CiAgICAgaGFuZGxlLT5jbGll
bnQoKS0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvciho
YW5kbGUtPmdldEludGVybmFsKCktPm1fZmlyc3RSZXF1ZXN0LnVybCgpLnN0cmluZygpKSk7CiAg
ICAgaGFuZGxlLT5jYW5jZWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA1M2M5Mjhm
NDc5Nzc2MmQxODA1NmJlNTYyN2VmYzFiOGVmMTRhMmIzLi4xOTFjODUwODg5NDI3Yzg0YTBhNjI1
N2FkMTZjNTA0NDNkNTVjMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPiBTb3VwTmV0d29ya1Nlc3Np
b246OmNyZWF0ZUZvclNvdXBTZXNzaW9uKFNvdQogCiBzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVD
YWxsYmFjayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBT
b3VwQXV0aCogc291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQogewotICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVj
dF9nZXRfZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7CisgICAgUmVmUHRy
PE5ldHdvcmtSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291
cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAiaGFu
ZGxlIikpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm47CiAgICAgaGFuZGxlLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
c2Vzc2lvbiwgc291cE1lc3NhZ2UsIHNvdXBBdXRoLCByZXRyeWluZywgaGFuZGxlLmdldCgpKSk7
CkBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyB2b2lkIGF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBT
ZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAjaWYgRU5BQkxFKFdF
Ql9USU1JTkcpCiBzdGF0aWMgdm9pZCByZXF1ZXN0U3RhcnRlZENhbGxiYWNrKFNvdXBTZXNzaW9u
KiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwU29ja2V0KiwgZ3BvaW50ZXIpCiB7Ci0g
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIp
KTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxOZXR3b3JrUmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChzb3Vw
TWVzc2FnZSksICJoYW5kbGUiKSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICBoYW5kbGUtPmRpZFN0YXJ0UmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCmluZGV4IGEx
YTZkNTE5NTJmMzIxY2VkNDA0YzY1Y2Q3N2ZkYjJmZDFiNzZjMTYuLmQzY2I0ODIzMjA4NGMyZWJj
YWVjMTgwNGNmZTg2YTRhNjFiZDhiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgc3RhdGljIGlubGluZSBISU5URVJORVQgY3JlYXRlSW50ZXJuZXRIYW5kbGUoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgYXN5bmMKICAgICBISU5URVJORVQgaW50ZXJuZXRIYW5k
bGUgPSBJbnRlcm5ldE9wZW5XKHVzZXJBZ2VudFN0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSwgSU5URVJORVRfT1BFTl9UWVBFX1BSRUNPTkZJRywgMCwgMCwgYXN5
bmNocm9ub3VzID8gSU5URVJORVRfRkxBR19BU1lOQyA6IDApOwogCiAgICAgaWYgKGFzeW5jaHJv
bm91cykKLSAgICAgICAgSW50ZXJuZXRTZXRTdGF0dXNDYWxsYmFjayhpbnRlcm5ldEhhbmRsZSwg
JlJlc291cmNlSGFuZGxlOjppbnRlcm5ldFN0YXR1c0NhbGxiYWNrKTsKKyAgICAgICAgSW50ZXJu
ZXRTZXRTdGF0dXNDYWxsYmFjayhpbnRlcm5ldEhhbmRsZSwgJk5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6aW50ZXJuZXRTdGF0dXNDYWxsYmFjayk7CiAKICAgICByZXR1cm4gaW50ZXJuZXRIYW5kbGU7
CiB9CkBAIC0xMzUsMjYgKzEzNSwyNiBAQCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCgpCiB7CiB9CiAKLVJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5k
bGUoKQorTmV0d29ya1Jlc291cmNlSGFuZGxlOjp+TmV0d29ya1Jlc291cmNlSGFuZGxlKCkKIHsK
IH0KIAogc3RhdGljIHZvaWQgY2FsbE9uUmVkaXJlY3Qodm9pZCogY29udGV4dCkKIHsKLSAgICBS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb250
ZXh0KTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PE5l
dHdvcmtSZXNvdXJjZUhhbmRsZSo+KGNvbnRleHQpOwogICAgIGhhbmRsZS0+b25SZWRpcmVjdCgp
OwogfQogCiBzdGF0aWMgdm9pZCBjYWxsT25SZXF1ZXN0Q29tcGxldGUodm9pZCogY29udGV4dCkK
IHsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5k
bGUqPihjb250ZXh0KTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRp
Y19jYXN0PE5ldHdvcmtSZXNvdXJjZUhhbmRsZSo+KGNvbnRleHQpOwogICAgIGhhbmRsZS0+b25S
ZXF1ZXN0Q29tcGxldGUoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6aW50ZXJuZXRTdGF0
dXNDYWxsYmFjayhISU5URVJORVQgaW50ZXJuZXRIYW5kbGUsIERXT1JEX1BUUiBjb250ZXh0LCBE
V09SRCBpbnRlcm5ldFN0YXR1cywKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjppbnRlcm5l
dFN0YXR1c0NhbGxiYWNrKEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSwgRFdPUkRfUFRSIGNvbnRl
eHQsIERXT1JEIGludGVybmV0U3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMUFZPSUQgc3RhdHVzSW5mb3JtYXRpb24sIERXT1JEIHN0
YXR1c0luZm9ybWF0aW9uTGVuZ3RoKQogewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBy
ZWludGVycHJldF9jYXN0PFJlc291cmNlSGFuZGxlKj4oY29udGV4dCk7CisgICAgTmV0d29ya1Jl
c291cmNlSGFuZGxlKiBoYW5kbGUgPSByZWludGVycHJldF9jYXN0PE5ldHdvcmtSZXNvdXJjZUhh
bmRsZSo+KGNvbnRleHQpOwogCiAgICAgc3dpdGNoIChpbnRlcm5ldFN0YXR1cykgewogICAgIGNh
c2UgSU5URVJORVRfU1RBVFVTX1JFRElSRUNUOgpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmludGVybmV0U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVUIGludGVybmV0SGFu
ZGxlLCBEV09SRF9QVFIKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6Om9uUmVkaXJl
Y3QoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Om9uUmVkaXJlY3QoKQogewogICAgIFJl
c291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCk7CiAgICAgbmV3UmVxdWVz
dC5zZXRVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZC0+bV9yZWRpcmVjdFVybCkpOwpAQCAtMTgy
LDcgKzE4Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6Om9uUmVkaXJlY3QoKQogICAgICAgICBy
ZXNvdXJjZUhhbmRsZUNsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIG5ld1JlcXVlc3QsIHJl
c3BvbnNlKTsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6b25SZXF1ZXN0Q29tcGxldGUoKQor
Ym9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6Om9uUmVxdWVzdENvbXBsZXRlKCkKIHsKICAgICBp
ZiAoIWQtPm1faW50ZXJuZXRIYW5kbGUpIHsgLy8gMCBpZiBjYW5jZWxlZC4KICAgICAgICAgZGVy
ZWYoKTsgLy8gYmFsYW5jZXMgcmVmIGluIHN0YXJ0CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6b25SZXF1ZXN0Q29tcGxldGUoKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KCkKIHsKICAgICBpZiAoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaXNMb2NhbEZpbGUo
KSB8fCBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7CiAgICAgICAgIHJl
ZigpOyAvLyBiYWxhbmNlZCBieSBkZXJlZiBpbiBmaWxlTG9hZFRpbWVyCkBAIC0zNTMsOSArMzUz
LDkgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlOjpmaWxlTG9hZFRpbWVyKFRpbWVyPFJlc291cmNlSGFuZGxl
PiopCit2b2lkIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6ZmlsZUxvYWRUaW1lcihUaW1lcjxOZXR3
b3JrUmVzb3VyY2VIYW5kbGU+KikKIHsKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHByb3Rl
Y3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlSGFuZGxlPiBwcm90ZWN0b3Io
dGhpcyk7CiAgICAgZGVyZWYoKTsgLy8gYmFsYW5jZXMgcmVmIGluIHN0YXJ0CiAKICAgICBpZiAo
Zmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0RhdGEoKSkgewpAQCAtNDAzLDcgKzQwMyw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGltZXIoVGltZXI8UmVzb3VyY2VIYW5k
bGU+KikKICAgICBjbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyh0aGlzLCAwKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpj
YW5jZWwoKQogewogICAgIGlmIChkLT5tX3JlcXVlc3RIYW5kbGUpIHsKICAgICAgICAgZC0+bV9p
bnRlcm5ldEhhbmRsZSA9IDA7CkBAIC00MTMsMTggKzQxMywxOCBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjYW5jZWwoKQogICAgICAgICBkLT5tX2ZpbGVMb2FkVGltZXIuc3RvcCgpOwogfQogCi12
b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
U3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0b3JlZENyZWRlbnRpYWxzKTsKIAogICAgIFdlYkNvcmVTeW5jaHJv
bm91c0xvYWRlciBzeW5jTG9hZGVyKGVycm9yLCByZXNwb25zZSwgZGF0YSwgcmVxdWVzdC5odHRw
VXNlckFnZW50KCkpOwotICAgIFJlc291cmNlSGFuZGxlIGhhbmRsZShjb250ZXh0LCByZXF1ZXN0
LCAmc3luY0xvYWRlciwgdHJ1ZSwgZmFsc2UpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZSBo
YW5kbGUoY29udGV4dCwgcmVxdWVzdCwgJnN5bmNMb2FkZXIsIHRydWUsIGZhbHNlKTsKIAogICAg
IGhhbmRsZS5zZXRTeW5jaHJvbm91c0ludGVybmV0SGFuZGxlKHN5bmNMb2FkZXIuaW50ZXJuZXRI
YW5kbGUoKSk7CiAgICAgaGFuZGxlLnN0YXJ0KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6
OnNldFN5bmNocm9ub3VzSW50ZXJuZXRIYW5kbGUoSElOVEVSTkVUIGludGVybmV0SGFuZGxlKQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldFN5bmNocm9ub3VzSW50ZXJuZXRIYW5kbGUo
SElOVEVSTkVUIGludGVybmV0SGFuZGxlKQogewogICAgIGQtPm1faW50ZXJuZXRIYW5kbGUgPSBp
bnRlcm5ldEhhbmRsZTsKICAgICBkLT5tX2xvYWRTeW5jaHJvbm91c2x5ID0gdHJ1ZTsKQEAgLTQz
NSwxMiArNDM1LDEyIEBAIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQor
Ym9vbCBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCgpCiB7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRp
bmcoYm9vbCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xv
YWRpbmcoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IGQ2ZWRjMDcwZDRhOWIzZTVhN2Y5YjUwZWFjNjQ0ZTNlMzMx
NmNlOTguLjhlMzA4YWEwZjcxNzgwNmU2YjNlMzE0ZjAwMGVkNzUxYzA4NDAyNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEwMjksNyArMTAyOSw3IEBAIHN0YXRpYyB2
b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAKICNpZiAh
UExBVEZPUk0oSU9TKQogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJT
VF9WRVJTSU9OX1dJVEhPVVRfQ09OVEVOVF9TTklGRklOR19GT1JfRklMRV9VUkxTKSkKLSAgICAg
ICAgUmVzb3VyY2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW5nKCk7CisgICAgICAgIE5ldHdv
cmtSZXNvdXJjZUhhbmRsZTo6Zm9yY2VDb250ZW50U25pZmZpbmcoKTsKICNlbmRpZgogCiAjaWYg
VVNFKEdMSUIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5k
ZXggYTM2ODBlMTBkZTY1Y2U4ZjE4YjQxN2M0ZTk5ZjBkYzM2MmEyZjg2MC4uNDUyODgyOWE0NjM1
Mzc1NmU5NjEyYzljNGM2M2M3ODRiZGJhYjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11
dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldFZhbHVlKAogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKHZvaWQpCiB7Ci0gICAgUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQ
U0NlcnRpZmljYXRlKG1fcmVxdWVzdC51cmwoKS5ob3N0KCkpOworICAgIE5ldHdvcmtSZXNvdXJj
ZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUobV9yZXF1ZXN0LnVybCgp
Lmhvc3QoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRDbGllbnRDZXJ0
aWZpY2F0ZSgvKiBbaW5dICovCiAKICAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0Q29udGV4dCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UENDRVJUX0NPTlRFWFQ+KGNlcnQpOwogICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNlcnREYXRhID0gV2ViQ29yZTo6Y29weUNlcnRpZmljYXRlVG9EYXRhKGNlcnRDb250
ZXh0KTsKLSAgICBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUobV9yZXF1ZXN0
LnVybCgpLmhvc3QoKSwgY2VydERhdGEuZ2V0KCkpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRs
ZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUobV9yZXF1ZXN0LnVybCgpLmhvc3QoKSwgY2VydERhdGEu
Z2V0KCkpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggMWJi
ODM1MmI0YTU1YWUxNTQ4MTNhMTJhMWNiNzExOTRkOWJhYTFkMS4uYTY2Y2QzODk4YmNjMzExNzIw
MzY3ZGRmZWRmNzg5NGU2N2NkZDM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTI0LDEyICsx
MjQsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hl
TW9kZWwgY2FjaGVNb2RlbCkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJy
b3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewotICAgIFJlc291cmNlSGFuZGxlOjpzZXRJZ25v
cmVTU0xFcnJvcnMoaWdub3JlVExTRXJyb3JzKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VIYW5kbGU6
OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBS
ZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGVJbmZv
LmNlcnRpZmljYXRlKCkpOworICAgIE5ldHdvcmtSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2Vy
dGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlRm9yQWxsT3JpZ2lucyh1aW50MzJfdCBjYWNoZXNU
b0NsZWFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
U291cC5jcHAKaW5kZXggMGFhYTM1Y2I1YWQ4MmYzNzlkNjU2MTM5NWZiMmU4NGIzNDUwODE1Ni4u
ZGIyOGE5NDlkZDRkZDgxYWY4OGVhZTRhMDg5ZmE3ZDFkOTMwNjY3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC0xODksMTMg
KzE4OSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHZvaWQgV2Vi
UHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogewogICAg
IEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwotICAgIFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoaWdub3JlVExTRXJyb3JzKTsKKyAgICBXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9y
SG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29u
c3QgU3RyaW5nJiBob3N0KQogewogICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwot
ICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShob3N0LCBj
ZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7CisgICAgV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZShob3N0LCBjZXJ0aWZpY2F0ZUluZm8uY2Vy
dGlmaWNhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="263912"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="263913"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>