<?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>93990</bug_id>
          
          <creation_ts>2012-08-14 10:15:41 -0700</creation_ts>
          <short_desc>Delete Frame::domWindow() and Frame::existingDOMWindow()</short_desc>
          <delta_ts>2012-08-14 17:35:38 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>695103</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 10:15:41 -0700</bug_when>
    <thetext>Delete Frame::domWindow() and Frame::existingDOMWindow()
Requested by abarth on #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695346</commentid>
    <comment_count>1</comment_count>
      <attachid>158406</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 13:45:09 -0700</bug_when>
    <thetext>Created attachment 158406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695366</commentid>
    <comment_count>2</comment_count>
      <attachid>158406</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 14:02:09 -0700</bug_when>
    <thetext>Comment on attachment 158406
Patch

Attachment 158406 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13488778</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695370</commentid>
    <comment_count>3</comment_count>
      <attachid>158406</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-14 14:03:21 -0700</bug_when>
    <thetext>Comment on attachment 158406
Patch

Attachment 158406 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13493789</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695374</commentid>
    <comment_count>4</comment_count>
      <attachid>158406</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-14 14:08:45 -0700</bug_when>
    <thetext>Comment on attachment 158406
Patch

You borks it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695375</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 14:09:23 -0700</bug_when>
    <thetext>Yeah, I need to fight the EWS for a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695415</commentid>
    <comment_count>6</comment_count>
      <attachid>158418</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 14:43:30 -0700</bug_when>
    <thetext>Created attachment 158418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695419</commentid>
    <comment_count>7</comment_count>
      <attachid>158418</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-14 14:55:49 -0700</bug_when>
    <thetext>Comment on attachment 158418
Patch

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

Looks reasonable.

&gt; Source/WebCore/bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp:59
&gt; +        return v8::Undefined();

I think you mean v8Undefined. :)

&gt; Source/WebCore/bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp:61
&gt; +    if (!document-&gt;frame())
&gt; +        return v8::Undefined(); // FIXME: How could Frame be null here?

Seems like this would be possible from JS, no? Grab the content document of a frame, then disconnect the frameset from the document (removeChild it), and then try and grab a named property on teh frameset?

&gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:199
&gt; +    if (document-&gt;frame())

do you wnat to check frame here?

&gt; Source/WebCore/xml/XSLStyleSheetLibxslt.cpp:148
&gt; +    if (ownerDocument()-&gt;frame())

Do you want to check frame here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695426</commentid>
    <comment_count>8</comment_count>
      <attachid>158418</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 15:02:04 -0700</bug_when>
    <thetext>Comment on attachment 158418
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp:59
&gt;&gt; +        return v8::Undefined();
&gt; 
&gt; I think you mean v8Undefined. :)

Shoot me now.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp:61
&gt;&gt; +        return v8::Undefined(); // FIXME: How could Frame be null here?
&gt; 
&gt; Seems like this would be possible from JS, no? Grab the content document of a frame, then disconnect the frameset from the document (removeChild it), and then try and grab a named property on teh frameset?

Yes, you&apos;re right.

&gt;&gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:199
&gt;&gt; +    if (document-&gt;frame())
&gt; 
&gt; do you wnat to check frame here?

I think checking document-&gt;domWindow() for 0 is equivalent, but I wanted to make this change as mechanical as possible.

&gt;&gt; Source/WebCore/xml/XSLStyleSheetLibxslt.cpp:148
&gt;&gt; +    if (ownerDocument()-&gt;frame())
&gt; 
&gt; Do you want to check frame here?

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695440</commentid>
    <comment_count>9</comment_count>
      <attachid>158422</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 15:23:01 -0700</bug_when>
    <thetext>Created attachment 158422
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695441</commentid>
    <comment_count>10</comment_count>
      <attachid>158423</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 15:24:13 -0700</bug_when>
    <thetext>Created attachment 158423
For landing once EWS cycle green</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695445</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 15:34:09 -0700</bug_when>
    <thetext>Committed r125615: &lt;http://trac.webkit.org/changeset/125615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695563</commentid>
    <comment_count>12</comment_count>
      <attachid>158423</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-08-14 17:04:50 -0700</bug_when>
    <thetext>Comment on attachment 158423
For landing once EWS cycle green

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

&gt; Source/WebCore/bindings/js/JSEventListener.cpp:-95
&gt; -        // The window must still be active in its frame. See &lt;https://bugs.webkit.org/show_bug.cgi?id=21921&gt;.
&gt; -        // FIXME: A better fix for this may be to change DOMWindow::frame() to not return a frame the detached window used to be in.

What made this comment obsolete?

&gt; Source/WebCore/loader/DocumentLoader.cpp:425
&gt; -    if (DOMWindow* window = m_frame-&gt;existingDOMWindow())
&gt; +    if (DOMWindow* window = m_frame-&gt;document()-&gt;domWindow())

Can domWindow ever return null? Why null check?

&gt; Source/WebCore/loader/FrameLoader.cpp:467
&gt; -        if (DOMWindow* window = m_frame-&gt;existingDOMWindow()) {
&gt; +        if (DOMWindow* window = m_frame-&gt;document()-&gt;domWindow()) {

Can domWindow ever return null? Why null check?

&gt; Source/WebCore/loader/FrameLoader.cpp:1905
&gt; -        if (DOMWindow* window = m_frame-&gt;existingDOMWindow()) {
&gt; +        if (DOMWindow* window = m_frame-&gt;document()-&gt;domWindow()) {

Can domWindow ever return null? Why null check?

&gt; Source/WebCore/loader/FrameLoader.cpp:2697
&gt; -    DOMWindow* domWindow = m_frame-&gt;existingDOMWindow();
&gt; +    DOMWindow* domWindow = m_frame-&gt;document()-&gt;domWindow();

Can domWindow ever return null? Why null check?

&gt; Source/WebCore/page/Frame.h:-133
&gt; -        DOMWindow* existingDOMWindow() { return domWindow(); }

Did we lose an optimization at some point earlier in this work where we’d avoid creating a DOMWindow in some cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695586</commentid>
    <comment_count>13</comment_count>
      <attachid>158423</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-14 17:35:38 -0700</bug_when>
    <thetext>Comment on attachment 158423
For landing once EWS cycle green

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

&gt;&gt; Source/WebCore/bindings/js/JSEventListener.cpp:-95
&gt;&gt; -        // FIXME: A better fix for this may be to change DOMWindow::frame() to not return a frame the detached window used to be in.
&gt; 
&gt; What made this comment obsolete?

This FIXME is redundant with the FIXME comment above DOMWindow::isCurrentlyDisplayedInFrame.  Now that this code calls isCurrentlyDisplayedInFrame, I thought we didn&apos;t need the FIXME comment here.

&gt;&gt; Source/WebCore/loader/DocumentLoader.cpp:425
&gt;&gt; +    if (DOMWindow* window = m_frame-&gt;document()-&gt;domWindow())
&gt; 
&gt; Can domWindow ever return null? Why null check?

Document::domWindow() can return 0 for document that were never active in a Frame (e.g., a Document created by XMLHttpRequest).  In this instance, we&apos;re getting the Document from a Frame, so it&apos;s obviously active in that frame.  I&apos;ve filed Bug 94052 about removing these extra null checks.

&gt;&gt; Source/WebCore/page/Frame.h:-133
&gt;&gt; -        DOMWindow* existingDOMWindow() { return domWindow(); }
&gt; 
&gt; Did we lose an optimization at some point earlier in this work where we’d avoid creating a DOMWindow in some cases?

I don&apos;t think so.  As far as I can tell, every active Document ended up with a DOMWindow.  For example, FrameLoader::clear ends up creating one.  It&apos;s possible that we could have avoided creating the DOMWindow before we had a split window.  I&apos;m not as familiar with how things worked then.

DOMWindow is actually a pretty light object.  It&apos;s just a bunch of 0 RefPtrs that get filled in lazily.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158406</attachid>
            <date>2012-08-14 13:45:09 -0700</date>
            <delta_ts>2012-08-14 14:43:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93990-20120814134447.patch</filename>
            <type>text/plain</type>
            <size>87759</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmMTY3MjNmY2IwMjBi
ZjhmNzIxMjg4Mzg2M2UyYmM0NjkzODVjNy4uMTljY2NkNGJmN2JkZjgwNDI3NzM1MTkyOTAyZDQ1
Mzk3ZmE4MjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMCBAQAogMjAxMi0wOC0xNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9t
V2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBqdXN0IGNhbGwg
dGhyb3VnaCB0byBkb2N1bWVudCgpLT5kb21XaW5kb3coKS4gVGhpcworICAgICAgICBwYXRjaCB1
cGRhdGVzIHRoZSBjYWxsZXJzIHNvIGl0J3MgY2xlYXJlciB3aGF0J3MgZ29pbmcgb24uCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50RXJyb3JN
ZXNzYWdlRm9yRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNEb2N1bWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbToKKyAgICAgICAgKGNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJ
c29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvclNldHRlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByaW50
TmF2aWdhdGlvbkVycm9yTWVzc2FnZSk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6CisgICAgICAg
ICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0
ZUFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAq
IGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlRnJh
bWVEZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNv
bnRhaW5pbmdUaGlzRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3cpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cHJpbnRXYXJuaW5n
VG9Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFn
ZUlkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6
OmJlZ2luKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpkaWRPcGVuVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVj
a0lmRGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpcmVCZWZv
cmVVbmxvYWRFdmVudCk6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZl
c3RSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2VsZik6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnRvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6OkRPTVdpbmRvd1Byb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZy
b21QYWdlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKEZyYW1lKToKKyAgICAgICAgKiBw
YWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZXBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYXRpb246OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERp
c3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2gpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVwb3J0TWVzc2FnZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hl
ZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3Ry
aW5nKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUTWVzc2FnZUhhbmRsZXI6OmhhbmRsZU1lc3NhZ2Up
OgorCisyMDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAg
ICAgRE9NV2luZG93Ojpkb2N1bWVudCgpIHNob3VsZCBub3QgcmVhY2ggdGhyb3VnaCBGcmFtZQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NDAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggN2Y5YWIzZDM1NzVmZWFkYmMwYmE5YmFm
MmE5YzQ4N2UwNjkwYTJhMS4uZWJkMTM3MWM0YjFlYWRjMTdlNzM1NjNlMjFjN2M3OWM4YjMxMDk1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUg
RnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcmlnaW5T
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6cnVuSmF2
YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6
OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJs
YWNrQmVycnk6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50QmxhY2tCZXJyeTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OnJlcXVlc3RXZWJHTFBlcm1pc3Npb24p
OgorCiAyMDEyLTA4LTE0ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNv
bS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU29tZSBjYWxsYmFjayBvZiBTZWxlY3Qgb25j
aGFuZ2UgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhjYjljODEz
N2YyMTk3NTM2ZjFjNDAxYThiZWFkNDZiZWE4YmUwNzcuLmI0ZTA0YzRmMDFmNjM0YWM5YmNhN2I4
MDE1MWI0OWZiZTMxNjcyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5k
b3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9TdG9yYWdlQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJv
eHk6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBzcmMv
V2ViRE9NTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRE9NTWVzc2FnZUV2
ZW50Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpwZXJmb3JtYW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lSW1wbDo6dW5sb2FkTGlzdGVuZXJDb3VudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
SW1wbDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZGlz
cGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUltcGw6OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorCiAy
MDEyLTA4LTE0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
SW5kZXhlZERCOiBQYXNzIGN1cnNvciBjb250aW51ZSByZXN1bHRzIGJhY2sgaW4gY2FsbGJhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBiNzdlZjM2MTI2MjEzMzQ3MjY3ZDAyMjJlNzNkYzQ0OTg2ZDBh
MDlmLi4yMjJmMjg3MmY4ZWE4YWYwYjhkMDU2OGY5M2FjNTdiNjM5ZWUwMjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFt
ZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRFdmVu
dENvdW50KToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFt
ZV9pbnRlbnRfZGVsaXZlcik6CisKIDIwMTItMDgtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSByZWxlYXNlIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6bV9wbHVnaW5XaWRnZXQgcmVmcHRyIHVwb24gUGx1Z2luIERvY3VtZW50IGRldGFjaC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAyMzliY2IwZjhlZWMxNWU5MDU0OWY5ZTY1NzI2YmViY2QyNWZh
ZWM5Li4zYjVmZTg4NTQ3YTRiNGZjMmZmMTU1NzRmNDJjNTRhNzgyM2EzNTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFt
ZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldFBlbmRpbmdVbmxvYWRF
dmVudENvdW50KToKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpt
X3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDkzMTdiZDJmNzI2YmZlOGE4ZGI0ZDI5MzRiNzM1ZWViOWRkNTAxMGMuLjU4
YWJhNzhjZjVmYmZhOGQ3NDYxOTQxZDNmYjdiMGMwMDE2NzE2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlz
dGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BlbmRp
bmdGcmFtZVVubG9hZEV2ZW50Q291bnRdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NhY2hlYWJp
bGl0eURpY3Rpb25hcnldKToKKwogMjAxMi0wOC0wOSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
YmxvYi11cmwtaW4taWZyYW1lLmh0bWwgZmFpbHMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDFj
YjFhYWU2NmU5MTBkMTExNzZmYTBhYjgwZjM5Zjc4ZDU4MmIyY2EuLjcxNjYwZDZmZjIyYTQ1MjNj
N2QwYTQ3YzhiNDZkNzc4Mzk2ZDBkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBE
ZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorCiAyMDEyLTA4
LTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAg
ICBbUXRdIEZpeCBmYWlsaW5nIHRzdF9RV2ViUGFnZTo6ZmluZFRleHQgdW5pdCB0ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggOGViYThiZjE2M2FmYjkwMWQzMjBjZmQ4MjQ4Yzg0YzBmYTU4Yjg5YS4u
ZmQzMzM1NDU5MTZmNjc4MzcxNjQ5YjYyYzY1ZGIwNzZkMmRlMTVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRGVsZXRlIEZyYW1lOjpkb21XaW5kb3coKSBhbmQgRnJhbWU6OmV4
aXN0aW5nRE9NV2luZG93KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzOTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6RE9NV2luZG93KToK
KyAgICAgICAgKFdlYkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KToKKwogMjAx
Mi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZw
dHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY0ZWMyMWUxZGM3
ZmUyNTliYWIzMWVhZDg2ODExNDI3MGY1ZjYyNzEuLjhjZTI3MzYxYjNmYzJiMTliYWMyNDg4Nzcy
NTExODgyMDQ0YjljZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xNCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIERlbGV0ZSBGcmFtZTo6
ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KToKKwogMjAxMi0w
OC0xNCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIFVwZGF0ZUF0bGFzIGlzIHdhc3RpbmcgbWVtb3J5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAxNTUwZjk5YTkzMmM5ZjkzMGNj
NmJkMGIwMjgyMjgyYjIzNTBjYzgwLi41OWY1NWFlY2ZhY2FlNjJiZWY3MTA0NmFkN2MwNWEyYWVl
ZWNlNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
QEAgLTIyNCw3ICsyMjQsNyBAQCBib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3Rh
dGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgYm9vbCByZXN1bHQgPSBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCBmcmFtZSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKTsKICAgICAv
LyBGSVhNRTogVGhlIGZvbGxvd2luZyBsaW5lIG9mIGNvZGUgc2hvdWxkIG1vdmUgc29tZXdoZXJl
IHRoYXQgaXQgY2FuIGJlIHNoYXJlZCB3aXRoIGltbWVkaWF0ZWx5UmVwb3J0VW5zYWZlQWNjZXNz
VG8uCi0gICAgbWVzc2FnZSA9IGZyYW1lLT5kb21XaW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NF
cnJvck1lc3NhZ2UoYWN0aXZlRE9NV2luZG93KGV4ZWMpKTsKKyAgICBtZXNzYWdlID0gZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShh
Y3RpdmVET01XaW5kb3coZXhlYykpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7Cisg
ICAgZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZShtZXNz
YWdlKTsKIH0KIAogSlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggYjZkZTE2MjI1
MWQxMTQzN2JmOGI2YzNhNjBjMWJlM2Y0N2Q1ZWMzYS4uNjQ3YjQ0NjFlYWU0MGFiNDViYjYyNWVi
YzliZjI3ZmU0NWFkNDlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50Ojps
b2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwogCi0gICAgTG9jYXRpb24qIGxvY2F0aW9uID0gZnJhbWUtPmRvbVdp
bmRvdygpLT5sb2NhdGlvbigpOworICAgIExvY2F0aW9uKiBsb2NhdGlvbiA9IGZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKS0+bG9jYXRpb24oKTsKICAgICBpZiAoSlNET01XcmFwcGVyKiB3
cmFwcGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uKSkK
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBKU0RvY3Vt
ZW50OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoTG9jYXRp
b24qIGxvY2F0aW9uID0gZnJhbWUtPmRvbVdpbmRvdygpLT5sb2NhdGlvbigpKQorICAgIGlmIChM
b2NhdGlvbiogbG9jYXRpb24gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0
aW9uKCkpCiAgICAgICAgIGxvY2F0aW9uLT5zZXRIcmVmKHVzdHJpbmdUb1N0cmluZyhsb2NhdGlv
blN0cmluZyksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApp
bmRleCAwYTU1N2Y3ZDRhNGFmZmIzZmZjMjNhYTVhNDk4Y2Y1YmIwYzNjNzhhLi43NzllOGQ3Mzlk
NTM2OTMzYjY2N2Y2NDIyZDQ1YWU0YmIzMzc3ODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTg1LDE4ICs4NSwxMiBAQCB2b2lkIEpT
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dAogICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBGcmFtZSogZnJhbWUgPSAwOwogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGZyYW1lID0gd2luZG93LT5pbXBs
KCktPmZyYW1lKCk7Ci0gICAgICAgIGlmICghZnJhbWUpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIC8vIFRoZSB3aW5kb3cgbXVzdCBzdGlsbCBiZSBhY3RpdmUgaW4gaXRzIGZyYW1lLiBT
ZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkyMT4uCi0gICAg
ICAgIC8vIEZJWE1FOiBBIGJldHRlciBmaXggZm9yIHRoaXMgbWF5IGJlIHRvIGNoYW5nZSBET01X
aW5kb3c6OmZyYW1lKCkgdG8gbm90IHJldHVybiBhIGZyYW1lIHRoZSBkZXRhY2hlZCB3aW5kb3cg
dXNlZCB0byBiZSBpbi4KLSAgICAgICAgaWYgKGZyYW1lLT5kb21XaW5kb3coKSAhPSB3aW5kb3ct
PmltcGwoKSkKKyAgICAgICAgaWYgKCF3aW5kb3ctPmltcGwoKS0+aXNDdXJyZW50bHlEaXNwbGF5
ZWRJbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC8vIEZJWE1FOiBJcyB0
aGlzIGNoZWNrIG5lZWRlZCBmb3Igb3RoZXIgY29udGV4dHM/Ci0gICAgICAgIFNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdCA9IGZyYW1lLT5zY3JpcHQoKTsKKyAgICAgICAgU2NyaXB0Q29udHJvbGxl
ciogc2NyaXB0ID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCktPnNjcmlwdCgpOwogICAgICAgICBp
ZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IHNj
cmlwdC0+aXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRl
eCA5Y2Y0ZTk5Y2VhM2FlM2E3OTU0MmJkYjM2MDUyZGIxNDczNDFkZDMzLi5hNjlhZjM5MWJmNDJi
ZTY0NWFlNGUxMWNiMzc3M2VjNDdiZmFiNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAg
dm9pZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUqIGZyYW1lKQogICAgICAg
ICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IG1fd2luZG93cy5nZXQod29ybGQpLmdldCgpKQog
ICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ctPmdsb2JhbERhdGEoKSwg
d2luZG93KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2lu
ZG93KGZyYW1lLT5kb21XaW5kb3coKSk7CisgICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2lu
ZG93KGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7CiAKICAgICAgICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICAgICAgICAgIHNjcmlwdENvbnRy
b2xsZXItPmF0dGFjaERlYnVnZ2VyKHdpbmRvd1NoZWxsLCBwYWdlLT5kZWJ1Z2dlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NzljMTI3NDVmZTY1YTk5MTNjNmU5YmZmMTEyN2JiNmI2NGNjZDJiNi4uOWZhODU0MjQ0Yjg5ZmJh
MGY3YTUyZGI4NDU3Mjg1MjcxNjJkZTVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBKU0RPTVdpbmRv
d1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29y
bGQqIHdvcmxkKQogewogICAgIEFTU0VSVCghbV93aW5kb3dTaGVsbHMuY29udGFpbnMod29ybGQp
KTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0
cnVjdHVyZSgqd29ybGQtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU0RP
TVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCgqd29ybGQtPmdsb2JhbERhdGEoKSwgSlNET01XaW5k
b3dTaGVsbDo6Y3JlYXRlKG1fZnJhbWUtPmRvbVdpbmRvdygpLCBzdHJ1Y3R1cmUsIHdvcmxkKSk7
CisgICAgU3Ryb25nPEpTRE9NV2luZG93U2hlbGw+IHdpbmRvd1NoZWxsKCp3b3JsZC0+Z2xvYmFs
RGF0YSgpLCBKU0RPTVdpbmRvd1NoZWxsOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCksIHN0cnVjdHVyZSwgd29ybGQpKTsKICAgICBTdHJvbmc8SlNET01XaW5kb3dTaGVs
bD4gd2luZG93U2hlbGwyKHdpbmRvd1NoZWxsKTsKICAgICBtX3dpbmRvd1NoZWxscy5hZGQod29y
bGQsIHdpbmRvd1NoZWxsKTsKICAgICB3b3JsZC0+ZGlkQ3JlYXRlV2luZG93U2hlbGwodGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmll
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCmlu
ZGV4IDBiNzlhYTljOTdkY2VmNWU1ZmNmNGVjMTBhYzk4MGNmZTVkZDI2NDkuLmZlMjgxZDU5OGI1
YTAxYTZjNGY3ZTBjZDMxN2E3ODRhOWYzMDljZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCkBAIC03Miw3ICs3Miw3IEBAIFdlYkNvcmU6
OkRPTVdpbmRvdyogY29yZShET01BYnN0cmFjdFZpZXcgKndyYXBwZXIpCiAgICAgICAgIHJldHVy
biAwOwogICAgIGlmICghd3JhcHBlci0+X2ludGVybmFsKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpGcmFtZSo+KHdyYXBwZXItPl9pbnRl
cm5hbCktPmRvbVdpbmRvdygpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkZyYW1lKj4od3JhcHBlci0+X2ludGVybmFsKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiB9
CiAKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkRPTVdpbmRvdyogdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCmluZGV4IGY2YjlmMWE0ZmIxNjM0
ZWRhODUzMDEyY2M0NWQzNTJhZjdkMDY2MDkuLmMwMDA4MmQ2Y2Y0YTE0MzA3ZWI4MmY0MGE0NDMz
MzQ3MzcyYzZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3Bw
CkBAIC02Myw4ICs2Myw4IEBAIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFY4TlBPYmplY3RWZWN0b3I+
IFY4TlBPYmplY3RNYXA7CiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4
dChOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QpCiB7CiAgICAgVjhOUE9iamVjdCogb2JqZWN0
ID0gcmVpbnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4obnBPYmplY3QpOwotICAgIERPTVdpbmRv
dyogZG9tV2luZG93ID0gb2JqZWN0LT5yb290T2JqZWN0OwotICAgIGlmICghZG9tV2luZG93IHx8
ICFkb21XaW5kb3ctPmZyYW1lKCkgfHwgZG9tV2luZG93ICE9IGRvbVdpbmRvdy0+ZnJhbWUoKS0+
ZG9tV2luZG93KCkpCisgICAgRE9NV2luZG93KiB3aW5kb3cgPSBvYmplY3QtPnJvb3RPYmplY3Q7
CisgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1l
KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CiAgICAgcmV0dXJu
IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQob2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAK
aW5kZXggYmE3NWUzYjZiODc1OTRmZWJmMmU0YTFhNjc1NTQxNGVhYjJmYzYzNC4uMDY5MmUzZDJi
OWI4MmQzODk2Yzk1OTI2MjlmMzUyNzQ5YTczYzBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0
aWMgTlBPYmplY3QqIGNyZWF0ZVNjcmlwdE9iamVjdChGcmFtZSogZnJhbWUpCiAgICAgICAgIHJl
dHVybiBjcmVhdGVOb1NjcmlwdE9iamVjdCgpOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNj
b3BlKHY4Q29udGV4dCk7Ci0gICAgRE9NV2luZG93KiB3aW5kb3cgPSBmcmFtZS0+ZG9tV2luZG93
KCk7CisgICAgRE9NV2luZG93KiB3aW5kb3cgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdsb2JhbCA9IHRvVjgod2luZG93KTsKICAg
ICBBU1NFUlQoZ2xvYmFsLT5Jc09iamVjdCgpKTsKICAgICByZXR1cm4gbnBDcmVhdGVWOFNjcmlw
dE9iamVjdCgwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGdsb2JhbCksIHdpbmRvdyk7
CkBAIC00NjgsNyArNDY4LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNj
cmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQKICAgICAgICAgcmV0
dXJuIGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3Bl
KHY4Q29udGV4dCk7CiAKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRvbVdpbmRv
dygpOworICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cGx1Z2luID0gdG9WOChzdGF0aWNf
Y2FzdDxIVE1MRW1iZWRFbGVtZW50Kj4ocGx1Z2luKSk7CiAgICAgaWYgKCF2OHBsdWdpbi0+SXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDJlM2Y2
Y2M2Njk3YjhhNzE1ZTc3NWJhM2E1ZGRmZjJlZjgwNWM1ZmIuLmU4N2RjN2QyMmYxMjJkM2ZiODkz
OGM3NTAwZTMzNDZkNWYwYzUxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgYm9vbCBWOERPTVdpbmRv
d1NoZWxsOjppbml0Q29udGV4dElmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmICghaW5zdGFsbERPTVdpbmRvdyh2OENvbnRleHQsIG1fZnJhbWUtPmRvbVdp
bmRvdygpKSkgeworICAgIGlmICghaW5zdGFsbERPTVdpbmRvdyh2OENvbnRleHQsIG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSkgewogICAgICAgICBkaXNwb3NlQ29udGV4dEhhbmRs
ZXMoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcAppbmRleCBhNjAwMTM5OTUxMmNiNDM2
YzYyYzQ1NDRmMTJiMmE0Mzg3YjdjMmRmLi4xMGFhZGJhNjI1Nzk4OTMxN2Q2ZWQ5ZDM5Njg5ODk3
YTU2YjM4MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xh
dGVkQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRl
ZENvbnRleHQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIFY4SXNvbGF0ZWRDb250ZXh0OjpWOElzb2xh
dGVkQ29udGV4dChWOFByb3h5KiBwcm94eSwgaW50IGV4dGVuc2lvbkdyb3VwLCBpbnQgd29yCiAg
ICAgbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBn
byBhd2F5IG9uY2Ugd2UgaGF2ZSBhIHdpbmRvd1NoZWxsIGZvciB0aGUgaXNvbGF0ZWQgd29ybGQu
Ci0gICAgcHJveHktPndpbmRvd1NoZWxsKCktPmluc3RhbGxET01XaW5kb3cobV9jb250ZXh0LT5n
ZXQoKSwgbV9mcmFtZS0+ZG9tV2luZG93KCkpOworICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT5p
bnN0YWxsRE9NV2luZG93KG1fY29udGV4dC0+Z2V0KCksIG1fZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpKTsKIAogICAgIC8vIFVzaW5nIHRoZSBkZWZhdWx0IHNlY3VyaXR5IHRva2VuIG1l
YW5zIHRoYXQgdGhlIGNhbkFjY2VzcyBpcyBhbHdheXMKICAgICAvLyBjYWxsZWQsIHdoaWNoIGlz
IHNsb3cuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IGU0Yjc1YTdk
OWI2NzZiOTg2Y2M2NzlkODAzY2I2MGExMzJlNDVhZjEuLjI1YTM2MDZhOTI4ZTc4YWVlNmRiMGU0
Nzk0ZTFlM2UyZjg1OWY1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
CkBAIC0zNjcsOSArMzY3LDggQEAgRE9NV2luZG93KiBWOFByb3h5OjpyZXRyaWV2ZVdpbmRvdyh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogRnJhbWUqIFY4UHJveHk6OnJldHJpZXZl
RnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKIHsKICAgICBET01XaW5kb3cq
IHdpbmRvdyA9IHJldHJpZXZlV2luZG93KGNvbnRleHQpOwotICAgIEZyYW1lKiBmcmFtZSA9IHdp
bmRvdy0+ZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmRvbVdpbmRvdygpID09IHdp
bmRvdykKLSAgICAgICAgcmV0dXJuIGZyYW1lOworICAgIGlmICh3aW5kb3ctPmlzQ3VycmVudGx5
RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gd2luZG93LT5mcmFtZSgpOwogICAg
IC8vIFdlIHJldHVybiAwIGhlcmUgYmVjYXVzZSB8Y29udGV4dHwgaXMgZGV0YWNoZWQgZnJvbSB0
aGUgRnJhbWUuICBJZiB3ZQogICAgIC8vIGRpZCByZXR1cm4gfGZyYW1lfCB3ZSBjb3VsZCBnZXQg
aW4gdHJvdWJsZSBiZWNhdXNlIHRoZSBmcmFtZSBjb3VsZCBiZQogICAgIC8vIG5hdmlnYXRlZCB0
byBhbm90aGVyIHNlY3VyaXR5IG9yaWdpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDljNDIxZmI2NGE0
NGM0YzJiNjQyOGE0OTYyMGZmMTU2ODMxNDMwMzcuLmI4YWE0ZmFjZTk2YjdlZTk5MTgzZjVmMTk0
ZjcxODRkN2FhMGVlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQz
Ml90IGluZGV4LCBjb25zdCB2CiAKICAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5z
Y29wZWRDaGlsZChpbmRleCk7CiAgICAgaWYgKGNoaWxkKQotICAgICAgICByZXR1cm4gdG9WOChj
aGlsZC0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRv
VjgoY2hpbGQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAK
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTUwMiw3ICs1MDIsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbQogICAgIEF0b21pY1N0cmluZyBwcm9wTmFtZSA9IHRvV2ViQ29yZUF0
b21pY1N0cmluZyhuYW1lKTsKICAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5zY29w
ZWRDaGlsZChwcm9wTmFtZSk7CiAgICAgaWYgKGNoaWxkKQotICAgICAgICByZXR1cm4gdG9WOChj
aGlsZC0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRv
VjgoY2hpbGQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAK
ICAgICAvLyBTZWFyY2ggSURMIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBwcm90b3R5cGUKICAg
ICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5KG5hbWUpLklzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggYjJkODFlODRjMmQ3NWQ5MjI0OTY5
ODRhMTZhMTg0NGZiYTFmN2MzNi4uNzYxM2ExNGIxMTU2OTAxOTVjZmZkNDVjMWExYjE2NWNmNzg0
MWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9j
dW1lbnRMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAg
ICByZXR1cm4gdjg6Ok51bGwoaW5mby5HZXRJc29sYXRlKCkpOwogCi0gICAgRE9NV2luZG93KiB3
aW5kb3cgPSBkb2N1bWVudC0+ZnJhbWUoKS0+ZG9tV2luZG93KCk7CisgICAgRE9NV2luZG93KiB3
aW5kb3cgPSBkb2N1bWVudC0+ZG9tV2luZG93KCk7CiAgICAgcmV0dXJuIHRvVjgod2luZG93LT5s
b2NhdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKQEAgLTYwLDcgKzYwLDcgQEAgdm9p
ZCBWOERvY3VtZW50Ojpsb2NhdGlvbkFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djgKICAgICBpZiAoIWZpcnN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBET01XaW5kb3cqIHdpbmRvdyA9IGRvY3VtZW50LT5mcmFtZSgpLT5kb21XaW5kb3coKTsK
KyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGRvY3VtZW50LT5kb21XaW5kb3coKTsKICAgICBpZiAo
TG9jYXRpb24qIGxvY2F0aW9uID0gd2luZG93LT5sb2NhdGlvbigpKQogICAgICAgICBsb2NhdGlv
bi0+c2V0SHJlZih0b1dlYkNvcmVTdHJpbmcodmFsdWUpLCBhY3RpdmUsIGZpcnN0KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9j
dW1lbnRDdXN0b20uY3BwCmluZGV4IDMyN2M2NGJmNmVmODc1MGJjYjQzNDlkYzk5MWRjZTM3ZDY5
MDI1ZTEuLmZlMmU1YzJiM2I3MGU3ZWJiNTRmNGUxZjIwNDZjNmVmOGYwY2Y0NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkoSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbgog
ICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMtPml0ZW0oMCk7CiAgICAgICAgIEZyYW1lKiBmcmFt
ZSA9IDA7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFn
KSAmJiAoZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250
ZW50RnJhbWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCks
IGlzb2xhdGUpOworICAgICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLCBpc29sYXRlKTsKIAogICAgICAgICByZXR1cm4gdG9WOChub2RlLCBpc29sYXRl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDUyOTQwOTk2
MWY0YmM4MWMxMThmMjFhYjZiZGIxMjNjMjU0MjgzMDIuLmYyNjFmZWQ4OWFhMzBkMGQyYjA2YTAx
NGNmNGE0N2IwNzVjNmY4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkBA
IC01MCwxNCArNTAsMTYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZyYW1lU2V0RWxl
bWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlMKICAgICBJTkNfU1RBVFMo
IkRPTS5IVE1MRnJhbWVTZXRFbGVtZW50Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBIVE1M
RnJhbWVTZXRFbGVtZW50KiBpbXAgPSBWOEhUTUxGcmFtZVNldEVsZW1lbnQ6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIE5vZGUqIGZyYW1lTm9kZSA9IGltcC0+Y2hpbGRyZW4oKS0+bmFt
ZWRJdGVtKHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSk7Ci0gICAgaWYgKGZyYW1lTm9kZSAm
JiBmcmFtZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmcmFtZVRhZykpIHsKLSAgICAgICAg
RG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnQqPihmcmFtZU5vZGUp
LT5jb250ZW50RG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKCFkb2MpCi0gICAgICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jLT5mcmFt
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvbVdpbmRvdygpLCBpbmZvLkdl
dElzb2xhdGUoKSk7Ci0gICAgfQotICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIGlmICgh
ZnJhbWVOb2RlKQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICBpZiAoIWZyYW1l
Tm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lVGFnKSkKKyAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZy
YW1lRWxlbWVudCo+KGZyYW1lTm9kZSktPmNvbnRlbnREb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgaWYgKCFkb2N1bWVu
dC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsgLy8gRklYTUU6IEhv
dyBjb3VsZCBGcmFtZSBiZSBudWxsIGhlcmU/CisgICAgcmV0dXJuIHRvVjgoZG9jdW1lbnQtPmRv
bVdpbmRvdygpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDllOGUzMmU0Njc0MzliMzg5YWIxN2UxN2Fk
ODliZWIzY2Y2OGE0YmYuLmEzNGNkMWEwYTFjNjQ3YzUxODdjMDQ2ZGVkMWNkNDA2MjFlMDVmYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lk
IHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIGFj
dGl2ZVVSTCkKICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSArICIgZnJvbSBmcmFtZSB3aXRoIFVSTCAiICsgYWN0aXZlVVJMLnN0cmluZygpICsg
Ii5cbiI7CiAKICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHByaW50IHRvIHRoZSBjb25zb2xlIG9m
IHRoZSBkb2N1bWVudCBwZXJmb3JtaW5nIHRoZSBuYXZpZ2F0aW9uIGluc3RlYWQ/Ci0gICAgZnJh
bWUtPmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQog
CiBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+KiBkb2N1bWVudHNUaGF0TmVlZFN0eWxlUmVjYWxj
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IGRjMjJl
NmUxZjFmZDRkMGYwMjBkZDYwNzU1ZGE5M2IwNjEwMmRlYmEuLjRkYTkwNTAyOWEwNDk2ZWJlNjBi
NzA5ZTcwMTcwNmY5MTE5NTkyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcApAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERv
Y3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zCiAgICAg
aWYgKCFyZXBsYWNlbWVudDIuaXNOdWxsKCkpCiAgICAgICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJl
cGxhY2VtZW50MiIsIHJlcGxhY2VtZW50Mik7CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIHZp
ZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwoZXJyb3JDb2RlKSwgbWVzc2FnZSwgZG9jdW1lbnQtPnVy
bCgpLnN0cmluZygpLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSk7CisgICAgZG9jdW1lbnQt
PmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCB2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKGVycm9yQ29kZSksIG1lc3Nh
Z2UsIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSwgcGFyc2VyTGluZU51bWJlcihkb2N1bWVudCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBkNGEwZTQzYjdlYTA5
OGM2YjhmZWIzOTU2MTkzMTEyNTEzNzBkYTllLi41ZGNmYmQzODNiYThhY2IwZWY0YjIxZmVhOTcy
ZWU4OTE4NTg5MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCBib29sIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFZlYwogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAg
ICAgICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAotICAgIFJlZlB0cjxU
ZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS0+
ZG9tV2luZG93KCksIHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgUmVmUHRyPFRl
eHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihtX2ZyYW1lLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAg
ICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDIwYjZhZjk2NzM4
YTY2NTI5ZWQ4MDZiNGIwNDU3ZDM3NTdmMDllYTMuLmIzMDdmNDZmNjQ4OTk2YmQyZGI5YjFhNWIw
ZTIyY2EyNzIzNGY4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM0Niw3ICsz
NDYsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3Rp
bmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0
dXJuOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVu
dChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKG1fZnJhbWUtPmRvbVdpbmRvdygp
LCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSwgZWMpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKG1fZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSwgZWMpOwogfQogCiB2
b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
cGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlKQpAQCAt
MzU1LDcgKzM1NSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wKICAgICBpZiAoIXRhcmdldCkK
ICAgICAgICAgcmV0dXJuOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHRhcmdldC0+
ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUobV9mcmFtZS0+
ZG9tV2luZG93KCksIHBhc3RpbmdGcmFnbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKSwg
ZWMpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdt
ZW50UGFzdGUobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHBhc3RpbmdGcmFnbWVu
dCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKSwgZWMpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFz
dGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKQEAgLTEzNjMsNyArMTM2Myw3IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENvbXBvc2l0aW9u
TW9kZSBtb2RlKQogICAgIC8vIHRoZSBET00gRXZlbnQgc3BlY2lmaWNhdGlvbi4KICAgICBOb2Rl
KiB0YXJnZXQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwogICAgIGlmICh0
YXJnZXQpIHsKLSAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50ID0gQ29tcG9z
aXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBtX2Zy
YW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgIFJlZlB0cjxDb21wb3NpdGlvbkV2ZW50
PiBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRp
b25lbmRFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpOwogICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KGV2ZW50LCBlYyk7CiAgICAgfQpAQCAtMTQyNiwxNCArMTQyNiwxNCBAQCB2b2lkIEVkaXRvcjo6
c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRp
b25VbmRlcmxpbgogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0
YXJ0IGV2ZW50IG9ubHkgd2hlbiB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0
aGlzCiAgICAgICAgICAgICAvLyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9u
IG5vZGUgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIG1fZnJh
bWUtPmRvbVdpbmRvdygpLCB0ZXh0KSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3Np
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIG1f
ZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlv
bnN0YXJ0RXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSk7Cisg
ICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLCB0ZXh0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIG1fZnJh
bWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQpOworICAg
ICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRl
eHQpOwogICAgICAgICB9CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBp
ZiAoZXZlbnQuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggOGMz
NzllYjI0YTMxZTQxMDJhZDgxOWNiOWRlN2UwMTg5Yzk5MTgyYy4uZTdlZWJkYzQzNzQyYzU1ZjE0
MTExZWNkMmUyMTRhOGUwYmNhNDY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNw
cApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1lRGVj
aXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAgIFBDTE9HKCIgICAt
RnJhbWUgaXMgSFRUUFMsIGFuZCBjYWNoZSBjb250cm9sIHByb2hpYml0cyBjYWNoaW5nIG9yIHN0
b3JpbmciKTsKICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElzSHR0cHNBbmRDYWNoZUNv
bnRyb2xsZWQ7CiAgICAgfQotICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkgJiYgZnJhbWUtPmRv
bVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKSB7
CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSAmJiBmcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRF
dmVudCkpIHsKICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgYW4gdW5sb2FkIGV2ZW50IGxp
c3RlbmVyIik7CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNVbmxvYWRMaXN0ZW5l
cjsKICAgICB9CkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFn
ZUNvbnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICAmJiAhKGRvY3VtZW50
TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnN1
YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgJiYgKCFmcmFt
ZUxvYWRlci0+c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkgfHwgZnJhbWUtPnBh
Z2UoKS0+c2V0dGluZ3MoKS0+cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKCkpCiAgICAgICAgICYm
ICghZG9jdW1lbnQtPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAhZG9jdW1lbnRM
b2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKQotICAgICAg
ICAmJiAoIWZyYW1lLT5kb21XaW5kb3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVu
dExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQorICAgICAgICAmJiAoIWRvY3Vt
ZW50LT5kb21XaW5kb3coKSB8fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgICAgICYmICFEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQp
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA5YjJh
NTkxNWM0N2NjOWIwN2UwYTQ4YmU0ZGQzZTZlMzFkY2I2ZDlhLi43YzNiYjYxYjFkZmVlNGZlMWUw
OGRhNmI2OGQzZjJmNTk0MTA5MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRl
SW50ZXJhY3RpdmVseShFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gV2Fy
biBhYm91dCBhbGwgb2YgdW5mb2N1c2FibGUgY29udHJvbHMuCi0gICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSkg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5oYW5kbGVkSW52YWxpZENvbnRy
b2xzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIHVu
aGFuZGxlZEFzc29jaWF0ZWRFbGVtZW50ID0gdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzW2ldLmdl
dCgpOwogICAgICAgICAgICAgSFRNTEVsZW1lbnQqIHVuaGFuZGxlZCA9IHRvSFRNTEVsZW1lbnQo
dW5oYW5kbGVkQXNzb2NpYXRlZEVsZW1lbnQpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIGJvb2wgSFRN
TEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQqIGV2ZW50KQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UoIkFuIGludmFs
aWQgZm9ybSBjb250cm9sIHdpdGggbmFtZT0nJW5hbWUnIGlzIG5vdCBmb2N1c2FibGUuIik7CiAg
ICAgICAgICAgICBtZXNzYWdlLnJlcGxhY2UoIiVuYW1lIiwgdW5oYW5kbGVkQXNzb2NpYXRlZEVs
ZW1lbnQtPm5hbWUoKSk7Ci0gICAgICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUo
KS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBtZXNzYWdlLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAg
ICAgICBkb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2Us
IGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5j
cHAKaW5kZXggNmI3MDY2MDJkNDdiMzhhYTlkNmNjYTM5ODRjOTc2NTE3MjhhYzc0MS4uNTYwZjM4
Yjk2NzljYTIyN2M0NjI2NjBmOWI0ZjI5Y2ZkYWQwZDZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAtNzMsNyArNzMsNyBAQCBEb2N1bWVu
dCogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogCiBET01X
aW5kb3cqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvbVdpbmRvdygpIDog
MDsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCkgOiAwOwogfQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0
U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDFlZTYyMTVmZDAz
MmNkYjVlMTkxODg5MzU0N2RkMGIwNDhjZTMyYWMuLjM0YTBlNTdiNWRmZWFlMzQ0MzhlYmJlZjgw
Y2M5YjFlMTg2YzMzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTE2OSwxMyArNTE2OSwxNCBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKICAgICBpZiAoIWNhbnZhcygpKQogICAgICAgICByZXR1cm47CisgICAgLy8g
RklYTUU6IFRoaXMgZ2lhbnQgY2FzY2FkZSBvZiBudWxsIGNoZWNrcyBzZWVtcyBhIGJpdCBwYXJh
bm9pZC4KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjYW52YXMoKS0+ZG9jdW1lbnQoKTsKICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIERP
TVdpbmRvdyogd2luZG93ID0gZnJhbWUtPmRvbVdpbmRvdygpOworICAgIERPTVdpbmRvdyogd2lu
ZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAgIGlmICghd2luZG93KQogICAgICAgICBy
ZXR1cm47CiAgICAgQ29uc29sZSogY29uc29sZSA9IHdpbmRvdy0+Y29uc29sZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAppbmRleCA5Mzk5OWQxZmJiMGJhNjgxOTZlMmU1OWE4OTdiYjkwZmJmZTc4ZTQ3Li45MGEwYTll
NjA5MGUwYzJjMzlkNzg2OWY0MDJkNDMyYjNhMmJmNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTU2LDcg
KzE1Niw3IEBAIFN0cmluZyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTdG9y
YWdlKiBzdG9yYWdlKQogICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBGcmFtZSogZnJhbWUgPSBz
dG9yYWdlLT5mcmFtZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgaXNM
b2NhbFN0b3JhZ2UgPSAoZnJhbWUtPmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoZWMpID09IHN0
b3JhZ2UgJiYgIWVjKTsKKyAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gKGZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+bG9jYWxTdG9yYWdlKGVjKSA9PSBzdG9yYWdlICYmICFlYyk7CiAg
ICAgcmV0dXJuIHN0b3JhZ2VJZChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
aXNMb2NhbFN0b3JhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAppbmRleCAzMmZmMjhjMzIyNTMwNGViYjYxMDRjYjczMDBhNDJmNDdiZGM0MjU1Li5iYzc0
NDQwMmY1YmIxNzYwMmNiZTI5MGJmMTNjYzg4YzA5OGM5ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
dGhpcyA9PSBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsKIAotICAgIGlm
IChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpCisgICAg
aWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkp
CiAgICAgICAgIHdpbmRvdy0+ZmluaXNoZWRMb2FkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IDE0YjZmNDM1OTk2NmM1MzAzYmM3NTljMTgx
ZmZiOTNkNzViZDdkODEuLmQ3YjViNDg4N2RjYWJmYzlmNWIyMTZjMmVkNDg2ZmI5MzczZTdjNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5j
ZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93CiAgICAgfQogCiAgICAgLy8gRklYTUU6IERP
TVdpbmRvdyBzaG91bGQgZ2V0IHRoZSBVUkwgZnJvbSB0aGUgZG9jdW1lbnQgaXRzZWxmLgotICAg
IG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRVUkwoZG9jdW1lbnQtPnVybCgpKTsKKyAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0VVJMKGRvY3VtZW50LT51cmwoKSk7CiAK
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkQmVnaW5Eb2N1bWVudChkaXNwYXRjaCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNjMDQ1YzJiMDEyMWMwMDY1MmJi
ZDhlZmQwOWJiYWQ1NDA3ODcyODcuLjU2MmI0ZGMxZDkwODIyOTY5N2IzMjkzOTIyZDZiMTU2MjY4
MjNmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzU3LDEwICsz
NTcsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3kg
dW5sb2FkRXZlbnRQb2xpY3kpCiAgICAgICAgICAgICAgICAgTm9kZSogY3VycmVudEZvY3VzZWRO
b2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKICAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudEZvY3VzZWROb2RlKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rm9j
dXNlZE5vZGUtPmFib3V0VG9VbmxvYWQoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+
ZG9tV2luZG93KCkgJiYgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gTm9E
aXNtaXNzYWwpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkgJiYgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gTm9EaXNt
aXNzYWwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHVubG9hZEV2ZW50UG9saWN5ID09IFVu
bG9hZEV2ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZUhpZGVEaXNtaXNz
YWw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZGlzcGF0
Y2hFdmVudChQYWdlVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBhZ2VoaWRl
RXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpLCBtX2ZyYW1lLT5kb2N1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkucGFnZWhpZGVFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUo
KSksIG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiB1bmxvYWRFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CkBAIC0zNzMs
MTAgKzM3MywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBv
bGljeSB1bmxvYWRFdmVudFBvbGljeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1
bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nLT5tYXJrVW5sb2FkRXZlbnRTdGFy
dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5k
aXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWluZy0+bWFya1VubG9hZEV2ZW50RW5k
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudCh1bmxvYWRFdmVudCwg
bV9mcmFtZS0+ZG9tV2luZG93KCktPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVu
bG9hZEV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX3BhZ2VEaXNtaXNzYWxFdmVudEJl
aW5nRGlzcGF0Y2hlZCA9IE5vRGlzbWlzc2FsOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIGJvb2wgRnJh
bWVMb2FkZXI6OmRpZE9wZW5VUkwoKQogICAgIC8vIGl0cyBmcmFtZSBpcyBub3QgaW4gYSBjb25z
aXN0ZW50IHN0YXRlIGZvciByZW5kZXJpbmcsIHNvIGF2b2lkIHNldEpTU3RhdHVzQmFyVGV4dAog
ICAgIC8vIHNpbmNlIGl0IG1heSBjYXVzZSBjbGllbnRzIHRvIGF0dGVtcHQgdG8gcmVuZGVyIHRo
ZSBmcmFtZS4KICAgICBpZiAoIW1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9j
dW1lbnQoKSkgewotICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5leGlz
dGluZ0RPTVdpbmRvdygpKSB7CisgICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSB7CiAgICAgICAgICAgICB3aW5kb3ctPnNldFN0
YXR1cyhTdHJpbmcoKSk7CiAgICAgICAgICAgICB3aW5kb3ctPnNldERlZmF1bHRTdGF0dXMoU3Ry
aW5nKCkpOwogICAgICAgICB9CkBAIC04ODYsNyArODg2LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6
Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNv
bnN0IEsKICAgICBTdHJpbmcgbWVzc2FnZSA9IChhbGxvd2VkID8gZW1wdHlTdHJpbmcoKSA6ICJb
YmxvY2tlZF0gIikgKyAiVGhlIHBhZ2UgYXQgIiArCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpICsgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9tICIg
KyB1cmwuc3RyaW5nKCkgKyAiLlxuIjsKICAgICAgICAgCi0gICAgbV9mcmFtZS0+ZG9tV2luZG93
KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIAogICAgIGlm
IChhbGxvd2VkKQogICAgICAgICBtX2NsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
OwpAQCAtOTA0LDcgKzkwNCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNoZWNrSWZSdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmCiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSAoYWxsb3dlZCA/IGVtcHR5U3RyaW5nKCkgOiAiW2Jsb2NrZWRdICIpICsgIlRo
ZSBwYWdlIGF0ICIgKwogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KSArICIgcmFuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiICsgdXJsLnN0cmluZygpICsgIi5cbiI7
CiAgICAgICAgCi0gICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xl
KCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5n
TWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIAogICAgIGlmIChhbGxvd2VkKQogICAgICAgICBtX2Ns
aWVudC0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KGNvbnRleHQsIHVybCk7CkBAIC0xMzcxLDcgKzEz
NzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vdCBhbGxvd2Vk
IHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6ICIgKyB1cmwpOworICAgIGZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm90IGFsbG93ZWQgdG8gbG9hZCBsb2Nh
bCByZXNvdXJjZTogIiArIHVybCk7CiB9CiAKIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVM
b2FkZXI6OmluaXRpYWxSZXF1ZXN0KCkgY29uc3QKQEAgLTE5MDIsNyArMTkwMiw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAgICAgCiAgICAgLy8g
RGVsZXRlIG9sZCBzdGF0dXMgYmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3RpdmF0ZWQgb24g
bGFzdCBVUkwpLgogICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMo
Tm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7Ci0gICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRv
dyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKERPTVdpbmRv
dyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpIHsKICAgICAgICAg
ICAgIHdpbmRvdy0+c2V0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0
RGVmYXVsdFN0YXR1cyhTdHJpbmcoKSk7CiAgICAgICAgIH0KQEAgLTE5NTAsNyArMTk1MCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAg
ICBtX2ZyYW1lLT5zZXREb2N1bWVudChkb2N1bWVudCk7CiAgICAgZG9jdW1lbnQtPmRvbVdpbmRv
dygpLT5yZXN1bWVGcm9tUGFnZUNhY2hlKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0
IGJlIG5lY2Vzc2FyeSBub3cgdGhhdCBEb2N1bWVudCBvd25zIHRoZSBET01XaW5kb3cuCi0gICAg
bV9mcmFtZS0+ZG9tV2luZG93KCktPnNldFVSTChkb2N1bWVudC0+dXJsKCkpOworICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRVUkwoZG9jdW1lbnQtPnVybCgpKTsKIAog
ICAgIHVwZGF0ZUZpcnN0UGFydHlGb3JDb29raWVzKCk7CiAKQEAgLTI2OTQsNyArMjY5NCw3IEBA
IGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6Zmly
ZUJlZm9yZVVubG9hZEV2ZW50KENocm9tZSogY2hyb21lKQogewotICAgIERPTVdpbmRvdyogZG9t
V2luZG93ID0gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIGRv
bVdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9t
V2luZG93KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NGFhM2FmYzExMjc2MGI3NjE1N2VmNjFhM2Jk
MjAwMTdmNDRhMGE3Li4wYjA2NWRkODMzYzA4ZGZmOTk1ZDRiNzA4MDRlYTkyY2E0MTE3Nzg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcApAQCAtMzY3
LDcgKzM2Nyw3IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKICAgICAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigp
LT5zaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb250ZW50LCByLnVybCgpKSkg
ewogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyWEZy
YW1lT3B0aW9uc0RlbmllZChtX2ZyYW1lLmdldCgpLCBkb2N1bWVudExvYWRlcigpLCBpZGVudGlm
aWVyKCksIHIpOwogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNv
bGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZGlzcGxheSBkb2N1bWVudCBiZWNhdXNlIGRpc3BsYXkg
Zm9yYmlkZGVuIGJ5IFgtRnJhbWUtT3B0aW9ucy5cbiIpKTsKLSAgICAgICAgICAgIG1fZnJhbWUt
PmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKKyAgICAgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNv
bnNvbGVNZXNzYWdlKTsKIAogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDJkZmUzNGNhYzJiYjEyZTg4NjUxZDMyODQ1OGE1Njcw
MzEwZGQ1ZTYuLmI0ZjE0NzMyM2IyMmU3MTQzYWEzYzQ3MmYwMmE3Y2Y3NjY1MDZlYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmFib3J0KEZyYW1lKiBmcmFtZSkKICAgICBpZiAobV9jb21wbGV0aW9uVHlwZSAhPSBOb25l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBUaXBNZXNzYWdl
TGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLiIp
OworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFRpcE1lc3NhZ2VMZXZlbCwg
IkFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQuIik7CiAgICAg
Y2FjaGVVcGRhdGVGYWlsZWQoKTsKIH0KIApAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgUmVzCiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAh
PSAyIHx8IHJlc3BvbnNlLnVybCgpICE9IG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkpIHsKICAgICAgICAgaWYgKCh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpF
eHBsaWNpdCkgfHwgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKSkg
ewotICAgICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIG1fY3VycmVudEhh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkgKyAKKyAgICAgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNh
dGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyBtX2N1cnJlbnRIYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpICsgCiAgICAgICAgICAgICAgICAgKChyZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIpID8gIiBjb3VsZCBub3QgYmUgZmV0Y2hlZC4i
IDogIiB3YXMgcmVkaXJlY3RlZC4iKSk7CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgY2FjaGVV
cGRhdGVGYWlsZWQoKSBjYW4gY2F1c2UgdGhlIGNhY2hlIGdyb3VwIHRvIGJlIGRlbGV0ZWQuCiAg
ICAgICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwpAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBicmVhayBlYXJsaWVy
IGFuZCBwcmV2ZW50IHJlZG93bmxvYWRpbmcgb24gbGF0ZXIgcGFnZSBsb2Fkcz8KICAgICBpZiAo
bV9vcmlnaW5RdW90YUV4Y2VlZGVkUHJldmlvdXNseSAmJiBtX2F2YWlsYWJsZVNwYWNlSW5RdW90
YSA8IG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSkgewogICAg
ICAgICBtX2N1cnJlbnRSZXNvdXJjZSA9IDA7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygp
LT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBi
ZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2Fj
aGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSBzaXplIHF1b3RhIHdhcyBleGNlZWRlZC4iKTsKICAg
ICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY3
Myw3ICs2NzMsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJgogICAgIG1fcGVuZGluZ0VudHJp
ZXMucmVtb3ZlKHVybCk7CiAKICAgICBpZiAoKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkV4cGxpY2l0KSB8fCAodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFsbGJh
Y2spKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyB1cmwuc3RyaW5n
KCkgKyAiIGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUg
dXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgdXJsLnN0cmluZygpICsgIiBjb3VsZCBub3QgYmUg
ZmV0Y2hlZC4iKTsKICAgICAgICAgLy8gTm90ZSB0aGF0IGNhY2hlVXBkYXRlRmFpbGVkKCkgY2Fu
IGNhdXNlIHRoZSBjYWNoZSBncm91cCB0byBiZSBkZWxldGVkLgogICAgICAgICBjYWNoZVVwZGF0
ZUZhaWxlZCgpOwogICAgIH0gZWxzZSB7CkBAIC03MDIsMTMgKzcwMiwxMyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSAvIDEwMCAhPSAyKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3Qg
YmUgZmV0Y2hlZC4iKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkt
PmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5v
dCBiZSBmZXRjaGVkLiIpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLnVybCgpICE9IG1fbWFuaWZlc3RIYW5k
bGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygp
LT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBu
b3QgYmUgZmV0Y2hlZCwgYmVjYXVzZSBhIHJlZGlyZWN0aW9uIHdhcyBhdHRlbXB0ZWQuIik7Cisg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1l
c3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hlZCwgYmVj
YXVzZSBhIHJlZGlyZWN0aW9uIHdhcyBhdHRlbXB0ZWQuIik7CiAgICAgICAgIGNhY2hlVXBkYXRl
RmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03MjgsNyArNzI4LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAKICAg
ICBpZiAoIWlzVXBncmFkZUF0dGVtcHQgJiYgIW1fbWFuaWZlc3RSZXNvdXJjZSkgewogICAgICAg
ICAvLyBUaGUgc2VydmVyIHJldHVybmVkIDMwNCBOb3QgTW9kaWZpZWQgZXZlbiB0aG91Z2ggd2Ug
ZGlkbid0IHNlbmQgYSBjb25kaXRpb25hbCByZXF1ZXN0LgotICAgICAgICBtX2ZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3Qg
Y291bGQgbm90IGJlIGZldGNoZWQgYmVjYXVzZSBvZiBhbiB1bmV4cGVjdGVkIDMwNCBOb3QgTW9k
aWZpZWQgc2VydmVyIHJlc3BvbnNlLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZl
c3QgY291bGQgbm90IGJlIGZldGNoZWQgYmVjYXVzZSBvZiBhbiB1bmV4cGVjdGVkIDMwNCBOb3Qg
TW9kaWZpZWQgc2VydmVyIHJlc3BvbnNlLiIpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgIE1hbmlmZXN0
IG1hbmlmZXN0OwogICAgIGlmICghcGFyc2VNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlm
ZXN0UmVzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS0+
c2l6ZSgpLCBtYW5pZmVzdCkpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0
aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNv
biBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgotICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3co
KS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQg
bm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyIpOworICAg
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBp
dCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyIpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAgICAgICAgICAg
ICAgIC8vIFdlIHJhbiBvdXQgb2Ygc3BhY2UgZm9yIHRoaXMgb3JpZ2luLiBGYWxsIGRvd24gdG8g
dGhlIG5vcm1hbCBlcnJvciBoYW5kbGluZwogICAgICAgICAgICAgICAgIC8vIGFmdGVyIHJlY29y
ZGluZyB0aGlzIHN0YXRlLgogICAgICAgICAgICAgICAgIG1fb3JpZ2luUXVvdGFFeGNlZWRlZFBy
ZXZpb3VzbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNh
dXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIpOworICAgICAgICAgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlv
biBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmFpbHVyZVJlYXNvbiA9PSBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6VG90YWxRdW90YVJlYWNoZWQgJiYgIW1fY2FsbGVkUmVhY2hl
ZE1heEFwcENhY2hlU2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjlmZmI5MjhmZjQ1ZTFlN2YyZmY0ZmI2
YTQ4MjVhZTUyOGQ3ZDZkMC4uN2I1NjQ2NTM4NjY2YzNmZTQxYTM1YmZiMDA2MzgyYTk4YWIzMzk4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICAg
ICAgbWVzc2FnZSA9ICJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0cmluZygp
ICsgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIgKyBtX2RvY3VtZW50LT51cmwoKS5zdHJpbmcoKSAr
ICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7CiAKICAgICAv
LyBGSVhNRTogcHJvdmlkZSBsaW5lIG51bWJlciBhbmQgc291cmNlIFVSTC4KLSAgICBmcmFtZSgp
LT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKKyAgICBmcmFtZSgp
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsK
IH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBl
bmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggM2U2MTAwM2E1OWU5MTBmYzBm
MGUwYjgwZjY4ZDUxMjZkMWU2ZTVjYS4uZDM2MjNkZDFjZGMyZjkzYWM1NzhiZGJiZmU5NTEwYzBl
YTlkNmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNTk0LDcgKzU5NCw3IEBA
IHZvaWQgRE9NV2luZG93OjpjbGVhckRPTVdpbmRvd1Byb3BlcnRpZXMoKQogCiBib29sIERPTVdp
bmRvdzo6aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9mcmFtZSAmJiBtX2ZyYW1lLT5kb21XaW5kb3coKSA9PSB0aGlzOworICAgIHJldHVybiBtX2Zy
YW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpID09IHRoaXM7CiB9CiAKICNp
ZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgRE9NV2lu
ZG93KiBET01XaW5kb3c6OnNlbGYoKSBjb25zdAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJu
IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogfQogCiBET01XaW5kb3cqIERPTVdp
bmRvdzo6b3BlbmVyKCkgY29uc3QKQEAgLTEyNzIsNyArMTI3Miw3IEBAIERPTVdpbmRvdyogRE9N
V2luZG93OjpvcGVuZXIoKSBjb25zdAogICAgIGlmICghb3BlbmVyKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHJldHVybiBvcGVuZXItPmRvbVdpbmRvdygpOworICAgIHJldHVybiBvcGVuZXIt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogfQogCiBET01XaW5kb3cqIERPTVdpbmRvdzo6cGFy
ZW50KCkgY29uc3QKQEAgLTEyODIsOSArMTI4Miw5IEBAIERPTVdpbmRvdyogRE9NV2luZG93Ojpw
YXJlbnQoKSBjb25zdAogCiAgICAgRnJhbWUqIHBhcmVudCA9IG1fZnJhbWUtPnRyZWUoKS0+cGFy
ZW50KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgcmV0dXJuIHBhcmVudC0+ZG9tV2luZG93
KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogCi0g
ICAgcmV0dXJuIG1fZnJhbWUtPmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKTsKIH0KIAogRE9NV2luZG93KiBET01XaW5kb3c6OnRvcCgpIGNv
bnN0CkBAIC0xMjk2LDcgKzEyOTYsNyBAQCBET01XaW5kb3cqIERPTVdpbmRvdzo6dG9wKCkgY29u
c3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fZnJh
bWUtPnRyZWUoKS0+dG9wKCktPmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT50cmVl
KCktPnRvcCgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKIH0KIAogRG9jdW1lbnQqIERPTVdp
bmRvdzo6ZG9jdW1lbnQoKSBjb25zdApAQCAtMTgyMywxMSArMTgyMywxMSBAQCBGcmFtZSogRE9N
V2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZnJhbQogICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+c2V0T3BlbmVyKG9wZW5lckZy
YW1lKTsKICAgICBuZXdGcmFtZS0+cGFnZSgpLT5zZXRPcGVuZWRCeURPTSgpOwogCi0gICAgaWYg
KG5ld0ZyYW1lLT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5k
b3csIGNvbXBsZXRlZFVSTCkpCisgICAgaWYgKG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkp
CiAgICAgICAgIHJldHVybiBuZXdGcmFtZTsKIAogICAgIGlmIChmdW5jdGlvbikKLSAgICAgICAg
ZnVuY3Rpb24obmV3RnJhbWUtPmRvbVdpbmRvdygpLCBmdW5jdGlvbkNvbnRleHQpOworICAgICAg
ICBmdW5jdGlvbihuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGZ1bmN0aW9uQ29u
dGV4dCk7CiAKICAgICBpZiAoY3JlYXRlZCkKICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5j
aGFuZ2VMb2NhdGlvbihhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVS
TCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSk7CkBAIC0xODc1LDExICsxODc1LDExIEBAIFBhc3NS
ZWZQdHI8RE9NV2luZG93PiBET01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IEF0b21pY1N0cmluCiAKICAgICAgICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZy
YW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCi0gICAgICAgIGlmICh0
YXJnZXRGcmFtZS0+ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoYWN0aXZlV2lu
ZG93LCBjb21wbGV0ZWRVUkwpKQotICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb21X
aW5kb3coKTsKKyAgICAgICAgaWYgKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkpCisg
ICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwog
CiAgICAgICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHRh
cmdldEZyYW1lLT5kb21XaW5kb3coKTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAKICAgICAgICAgLy8gRm9yIHdoYXRldmVyIHJlYXNv
biwgRmlyZWZveCB1c2VzIHRoZSBmaXJzdCB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGFjdGl2ZSB3
aW5kb3cgdG8KICAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBvdXRnb2luZyByZWZlcnJlci4gV2Ug
cmVwbGljYXRlIHRoYXQgYmVoYXZpb3IgaGVyZS4KQEAgLTE4OTAsNyArMTg5MCw3IEBAIFBhc3NS
ZWZQdHI8RE9NV2luZG93PiBET01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IEF0b21pY1N0cmluCiAgICAgICAgICAgICBmaXJzdEZyYW1lLT5sb2FkZXIoKS0+b3V0
Z29pbmdSZWZlcnJlcigpLAogICAgICAgICAgICAgbG9ja0hpc3RvcnksCiAgICAgICAgICAgICBm
YWxzZSk7Ci0gICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZG9tV2luZG93KCk7CisgICAgICAg
IHJldHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgfQogCiAg
ICAgV2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMod2luZG93RmVhdHVyZXNTdHJpbmcpOwpA
QCAtMTkwNCw3ICsxOTA0LDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Bl
bihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KICAgICB3aW5kb3dG
ZWF0dXJlcy53aWR0aCA9IHdpbmRvd1JlY3Qud2lkdGgoKTsKIAogICAgIEZyYW1lKiByZXN1bHQg
PSBjcmVhdGVXaW5kb3codXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzLCBhY3Rp
dmVXaW5kb3csIGZpcnN0RnJhbWUsIG1fZnJhbWUpOwotICAgIHJldHVybiByZXN1bHQgPyByZXN1
bHQtPmRvbVdpbmRvdygpIDogMDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSA6IDA7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFs
b2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNT
dHJpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCmluZGV4IGFk
MDQ2OTgwNmY5N2NmMDQ5ZGVkZTkxNmVmOGY1OWUyOWE2NzAxOGQuLjZmMTA5ZjFlZDhmYzE0ODM3
MjBlN2E5NTA0MjdhZGRkM2E0NTIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93UHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
UHJvcGVydHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVy
dHkuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNyArNDEsNyBA
QCBET01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZyYW1lKQogICAg
IC8vIFNlZSBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBmb3IgdGhl
IHJlY2lwZS4KICAgICAvLyBXZSBzaG91bGQgZml4IHRoYXQuICA8cmRhcjovL3Byb2JsZW0vMTE1
NjcxMzI+CiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9hc3NvY2lhdGVkRE9NV2luZG93
ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7CisgICAgICAgIG1fYXNzb2NpYXRlZERPTVdpbmRvdyA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgICAgICBtX2Fzc29jaWF0ZWRE
T01XaW5kb3ctPnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7CiAgICAgfQogfQpAQCAtNzAsNyArNzEs
NyBAQCB2b2lkIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUo
RnJhbWUqIGZyYW1lKQogICAgIC8vIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gaXRzIEZyYW1lIGlu
IHRoZSBmaXJzdCBwbGFjZSBhbmQgaXQgc2hvdWxkIHN0aWxsIGhhdmUgYW4gYXNzb2NpYXRlZCBE
T01XaW5kb3cuCiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICBBU1NFUlQoIW1fZnJhbWUpOwotICAg
IEFTU0VSVChmcmFtZS0+ZG9tV2luZG93KCkgPT0gbV9hc3NvY2lhdGVkRE9NV2luZG93KTsKKyAg
ICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpID09IG1fYXNzb2NpYXRlZERP
TVdpbmRvdyk7CiAKICAgICBtX2ZyYW1lID0gZnJhbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCmluZGV4IGI4MjA1NzUxYjQ0NzJmYzNiN2ZjOTNkZGQ4ZDdmZmEyM2E5
MGM4YmMuLmM3NDRjMTg5ZWJkYmY0ZjBhNDBiOGE5OWQ4ZTc5YTI1ZGIwYTZkNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFt
ZSwgRHJhZ0RhdGEqIGRyYWcKICAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS0+ZHJhZ0NhcmV0Q29u
dHJvbGxlcigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpID8gIiIgOiBkcmFnRGF0YS0+YXNQ
bGFpblRleHQoaW5uZXJGcmFtZSk7CiAgICAgTm9kZSogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRp
dG9yKCktPmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkt
PmNhcmV0UG9zaXRpb24oKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJu
IHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFt
ZS0+ZG9tV2luZG93KCksIHRleHQpLCBlYyk7CisgICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCksIHRleHQpLCBlYyk7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRl
RWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDQ4NmQ0YmZjZGI5ZGM3MGYyOWY1MGEzOTlhYmY5MTdmNjAyMGY2MDcuLjNkZmZi
OWZhNGY2ZDBlMTA1YTc0ZGI2ODFhNmM0ZjE3Y2RmZDEwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTMyOTIsNyArMzI5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5n
RXZlCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAg
dmlldy0+cmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOwogCi0gICAgUmVmUHRyPFRleHRFdmVu
dD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCwg
aW5wdXRUeXBlKTsKKyAgICBSZWZQdHI8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3Jl
YXRlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOwog
ICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDM4YmVhNzUwNThiOGQwZDJj
OTAyOGJmZDM0NDcwZTk3NjIwZGNhODUuLjJhYmMxZmQ5ZGMxZTk5ZGY0MjBlN2I3M2IxZDY5ZTI1
MmIzNWNlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02ODAsMTIgKzY4MCw2IEBAIHZvaWQg
RnJhbWU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9sb2FkZXIpOwogfQog
Ci1ET01XaW5kb3cqIEZyYW1lOjpkb21XaW5kb3coKSBjb25zdAotewotICAgIEFTU0VSVChtX2Rv
Yy0+ZG9tV2luZG93KCkpOwotICAgIHJldHVybiBtX2RvYy0+ZG9tV2luZG93KCk7Ci19Ci0KIHZv
aWQgRnJhbWU6OndpbGxEZXRhY2hQYWdlKCkKIHsKICAgICBpZiAoRnJhbWUqIHBhcmVudCA9IHRy
ZWUoKS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMzBlNmQ1Y2Q3ZWMyZDRjZmY0MTli
ZDhkMzI2NTI4NTViZGJiZjJkMy4uM2E1Mjk1NmE0NTNiOGNhNjI1NDYzMjljMTkwN2JhODkzYTky
ODcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTI4LDEwICsxMjgsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGJvb2wgc2hv
d0RlYnVnSW5mbyA9IGZhbHNlKSBjb25zdDsKIAotICAgICAgICAvLyBGSVhNRTogQ2FsbGVycyBz
aG91bGQgdXNlIGRvY3VtZW50KCktPmRvbVdpbmRvdygpIGRpcmVjdGx5LgotICAgICAgICBET01X
aW5kb3cqIGRvbVdpbmRvdygpIGNvbnN0OwotICAgICAgICBET01XaW5kb3cqIGV4aXN0aW5nRE9N
V2luZG93KCkgeyByZXR1cm4gZG9tV2luZG93KCk7IH0KLQogICAgICAgICBzdGF0aWMgRnJhbWUq
IGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCopOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0
aW5ncygpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRl
eCBkZjZlYThkZjU0MmI4NWQ5M2M3ZDFlNmRjNTM5NGYwOGY1YjA2NWY4Li5kNDRlZmY5MzFiNmQ4
MDdjYjkxYmU1ZTAxNjk1ZTA3ZjJhMTkzNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApA
QCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgTG9jYXRpb246OnJlcGxhY2UoY29uc3QgU3RyaW5nJiB1
cmwsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpCiAgICAgaWYgKCFtX2Zy
YW1lKQogICAgICAgICByZXR1cm47CiAgICAgLy8gTm90ZTogV2UgY2FsbCBET01XaW5kb3c6OnNl
dExvY2F0aW9uIGRpcmVjdGx5IGhlcmUgYmVjYXVzZSByZXBsYWNlKCkgYWx3YXlzIG9wZXJhdGVz
IG9uIHRoZSBjdXJyZW50IGZyYW1lLgotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2Nh
dGlvbih1cmwsIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIExvY2tIaXN0b3J5QW5kQmFja0Zv
cndhcmRMaXN0KTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0TG9j
YXRpb24odXJsLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCBMb2NrSGlzdG9yeUFuZEJhY2tG
b3J3YXJkTGlzdCk7CiB9CiAKIHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5kb3cqIGFjdGl2
ZVdpbmRvdykKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2lu
ZG93KiBhY3RpdmVXaW5kb3cpCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgY3Jv
c3Mtb3JpZ2luIHNlY3VyaXR5IGNoZWNrIGlzIHZhbHVhYmxlLgogICAgIC8vIFdlIGFsbG93IG9u
ZSBwYWdlIHRvIGNoYW5nZSB0aGUgbG9jYXRpb24gb2YgYW5vdGhlci4gV2h5IGJsb2NrIGF0dGVt
cHRzIHRvIHJlbG9hZD8KICAgICAvLyBPdGhlciBsb2NhdGlvbiBvcGVyYXRpb25zIHNpbXBseSBi
bG9jayB1c2Ugb2YgSmF2YVNjcmlwdCBVUkxzIGNyb3NzIG9yaWdpbi4KLSAgICBET01XaW5kb3cq
IHRhcmdldFdpbmRvdyA9IG1fZnJhbWUtPmRvbVdpbmRvdygpOworICAgIERPTVdpbmRvdyogdGFy
Z2V0V2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFh
Y3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXRXaW5kb3ctPnNl
Y3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHRhcmdldFdpbmRvdy0+cHJpbnRFcnJvck1lc3Nh
Z2UodGFyZ2V0V2luZG93LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVXaW5k
b3cpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgTG9jYXRpb246
OnNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywg
RE9NV2luZG93CiAgICAgRnJhbWUqIGZyYW1lID0gbV9mcmFtZS0+bG9hZGVyKCktPmZpbmRGcmFt
ZUZvck5hdmlnYXRpb24oU3RyaW5nKCksIGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKSk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+c2V0
TG9jYXRpb24odXJsLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKKyAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybCwgYWN0aXZlV2luZG93LCBmaXJz
dFdpbmRvdyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDdjYjM2OGIyOWFm
YmI3YmVlYWE0N2U0N2NlNjg1ZmM2Zjk3MWI2NGYuLmQ0NTAyMTA2ZWU2YzllYmI0ZjFlNjM2YTZm
NDU4NmM1MTliYTVhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLAogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgU3Rv
cmFnZSogc3RvcmFnZSA9IGZyYW1lc1tpXS0+ZG9tV2luZG93KCktPnNlc3Npb25TdG9yYWdlKGVj
KTsKKyAgICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZXNbaV0tPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5zZXNzaW9uU3RvcmFnZShlYyk7CiAgICAgICAgICAgICBpZiAoIWVjKQog
ICAgICAgICAgICAgICAgIGZyYW1lc1tpXS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50
KFN0b3JhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHN0b3JhZ2Up
KTsKICAgICAgICAgfQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLAog
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgU3RvcmFnZSog
c3RvcmFnZSA9IGZyYW1lc1tpXS0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZShlYyk7CisgICAg
ICAgICAgICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWVzW2ldLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKS0+bG9jYWxTdG9yYWdlKGVjKTsKICAgICAgICAgICAgIGlmICghZWMpCiAgICAgICAgICAg
ICAgICAgZnJhbWVzW2ldLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFnZUV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3
VmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgc3RvcmFnZSkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4
IDE1MmNlOGJiNzU5YzFlYzY0MzNmZGE4ZDU3ODc2NjE4NTAzZmMyNjcuLmNhYzFhZWEwN2UwOTBk
NzRlMjVlYTM0NjAwOWYyNWM3ZDQ2ODBlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0xOTYsOCArMTk2LDggQEAgc3RhdGljIGludCBwYXJz
ZXJMaW5lTnVtYmVyKERvY3VtZW50KiBkb2N1bWVudCkKIAogc3RhdGljIHZvaWQgcmVwb3J0TWVz
c2FnZShEb2N1bWVudCogZG9jdW1lbnQsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkK
LSAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGRvY3VtZW50LT5kb2N1
bWVudFVSSSgpLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSk7CisgICAgaWYgKGRvY3VtZW50
LT5mcmFtZSgpKQorICAgICAgICBkb2N1bWVudC0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgbWVzc2FnZSwg
ZG9jdW1lbnQtPmRvY3VtZW50VVJJKCksIHBhcnNlckxpbmVOdW1iZXIoZG9jdW1lbnQpKTsKIH0K
IAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRM
aWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAK
aW5kZXggYTE4YjdiMTY3MGUzNTQ5OGFkYjI1MmI2MjM1YzY3NjI1OGU1MTgyMi4uMGI4MzQwY2Q5
NWNhZWJlZmY4ZTE4MWY1YTEzNWY5MWNjMGVjMzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0xNDUsOCArMTQ1LDggQEAgYm9vbCBYU0xTdHls
ZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBtX3N0eWxlc2hl
ZXREb2NUYWtlbiA9IGZhbHNlOwogCiAgICAgQ29uc29sZSogY29uc29sZSA9IDA7Ci0gICAgaWYg
KEZyYW1lKiBmcmFtZSA9IG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgY29uc29s
ZSA9IGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpOworICAgIGlmIChvd25lckRvY3VtZW50
KCktPmZyYW1lKCkpCisgICAgICAgIGNvbnNvbGUgPSBvd25lckRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5jb25zb2xlKCk7CiAKICAgICBYTUxEb2N1bWVudFBhcnNlclNjb3BlIHNjb3BlKGNhY2hl
ZFJlc291cmNlTG9hZGVyKCksIFhTTFRQcm9jZXNzb3I6OmdlbmVyaWNFcnJvckZ1bmMsIFhTTFRQ
cm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jLCBjb25zb2xlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggMDc2YTg1MmQwNmQ4MzcxMDM3NjIyNjQ1
YjAxMTk0NTJlY2JlMjRkNC4uZTIxYzgyN2MyNWRiYzVlZmQzMWJlNzA1ZjlmMzZmNTJkZTU0ODI0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0x
MzgsOCArMTM4LDggQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENo
YXIqIHVyaSwKICAgICAgICAgfQogCiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUgPSAwOwotICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCkt
Pm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnNvbGUgPSBmcmFtZS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKKyAgICAgICAgaWYgKGdsb2JhbFByb2Nlc3Nvci0+eHNs
U3R5bGVzaGVldCgpLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgICAgICBjb25z
b2xlID0gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVu
Yyhjb25zb2xlLCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAgICAgIHhtbFNl
dEdlbmVyaWNFcnJvckZ1bmMoY29uc29sZSwgWFNMVFByb2Nlc3Nvcjo6Z2VuZXJpY0Vycm9yRnVu
Yyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAKaW5kZXggYzBhYjRkNjkz
MTdkNWMzMWMzNmNiNGFhMDNkYmU3MDZjMTUzYTk5OC4uYTY3YzVmZGU3NmZjYzU2OGNlM2M0YzY4
YzYxMDYwZDQwYmI5MzEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAK
QEAgLTgzLDkgKzgzLDggQEAgdm9pZCBYU0xUTWVzc2FnZUhhbmRsZXI6OmhhbmRsZU1lc3NhZ2Uo
UXRNc2dUeXBlIHR5cGUsIGNvbnN0IFFTdHJpbmcmIGRlc2NyaXB0aW8KICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgQ29uc29sZSogY29uc29sZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmRv
bVdpbmRvdygpLT5jb25zb2xlKCk7Ci0gICAgY29uc29sZS0+YWRkTWVzc2FnZShYTUxNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgc291cmNlTG9jYXRpb24udXJpKCkudG9TdHJpbmcoKSwgc291cmNlTG9jYXRp
b24ubGluZSgpKTsKKyAgICBDb25zb2xlKiBjb25zb2xlID0gbV9kb2N1bWVudC0+ZG9tV2luZG93
KCktPmNvbnNvbGUoKTsKKyAgICBjb25zb2xlLT5hZGRNZXNzYWdlKFhNTE1lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgZGVzY3JpcHRpb24sIHNvdXJjZUxvY2F0aW9uLnVyaSgp
LnRvU3RyaW5nKCksIHNvdXJjZUxvY2F0aW9uLmxpbmUoKSk7CiB9CiAKIGNsYXNzIFhTTFRVcmlS
ZXNvbHZlciA6IHB1YmxpYyBRQWJzdHJhY3RVcmlSZXNvbHZlciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJy
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggYjBkYWU2MDk3N2Y0Mzk3Y2FmNWY4NWEyMWNlMDUxYWIy
YWM4MGEyNC4uMDhjMTFkZDM5MjQwY2QzNWI0YTNiZGViNjQyZjE3NjZkMDJmMzBhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtNzgsMTIgKzc4LDkgQEAgdXNpbmcg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIENTdHJpbmcgZnJhbWVPcmlnaW4oRnJhbWUqIGZyYW1lKQorc3RhdGlj
IENTdHJpbmcgdG9PcmlnaW5TdHJpbmcoRnJhbWUqIGZyYW1lKQogewotICAgIERPTVdpbmRvdyog
d2luZG93ID0gZnJhbWUtPmRvbVdpbmRvdygpOwotICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4g
PSB3aW5kb3ctPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IG9y
aWdpbi0+dG9TdHJpbmcoKS5sYXRpbjEoKTsKLSAgICByZXR1cm4gbGF0aW5PcmlnaW47CisgICAg
cmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmxh
dGluMSgpOwogfQogCiBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpDaHJvbWVDbGllbnRCbGFja0Jl
cnJ5KFdlYlBhZ2VQcml2YXRlKiBwYWdlUHJpdmF0ZSkKQEAgLTExMSw3ICsxMDgsNyBAQCB2b2lk
IENocm9tZUNsaWVudEJsYWNrQmVycnk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgbWVzcwogI2VuZGlmCiAKICAgICBUaW1lckJhc2U6OmZpcmVUaW1lcnNJ
bk5lc3RlZEV2ZW50TG9vcCgpOwotICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSBmcmFtZU9yaWdp
bihmcmFtZSk7CisgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3RyaW5nKGZyYW1l
KTsKICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KG1l
c3NhZ2UuY2hhcmFjdGVycygpLCBtZXNzYWdlLmxlbmd0aCgpLCBsYXRpbk9yaWdpbi5kYXRhKCks
IGxhdGluT3JpZ2luLmxlbmd0aCgpKTsKIH0KIApAQCAtMTIzLDcgKzEyMCw3IEBAIGJvb2wgQ2hy
b21lQ2xpZW50QmxhY2tCZXJyeTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIG1lCiAjZW5kaWYKIAogICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVz
dGVkRXZlbnRMb29wKCk7Ci0gICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZyYW1lT3JpZ2luKGZy
YW1lKTsKKyAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gdG9PcmlnaW5TdHJpbmcoZnJhbWUpOwog
ICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+cnVuSmF2YVNjcmlwdENvbmZp
cm0obWVzc2FnZS5jaGFyYWN0ZXJzKCksIG1lc3NhZ2UubGVuZ3RoKCksIGxhdGluT3JpZ2luLmRh
dGEoKSwgbGF0aW5PcmlnaW4ubGVuZ3RoKCkpOwogfQogCkBAIC0xMzcsNyArMTM0LDcgQEAgYm9v
bCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBtZXMKICNlbmRpZgogCiAgICAgVGltZXJCYXNlOjpmaXJlVGltZXJz
SW5OZXN0ZWRFdmVudExvb3AoKTsKLSAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gZnJhbWVPcmln
aW4oZnJhbWUpOworICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSB0b09yaWdpblN0cmluZyhmcmFt
ZSk7CiAgICAgV2ViU3RyaW5nIGNsaWVudFJlc3VsdDsKICAgICBpZiAobV93ZWJQYWdlUHJpdmF0
ZS0+bV9jbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQobWVzc2FnZS5jaGFyYWN0ZXJzKCksIG1l
c3NhZ2UubGVuZ3RoKCksIGRlZmF1bHRWYWx1ZS5jaGFyYWN0ZXJzKCksIGRlZmF1bHRWYWx1ZS5s
ZW5ndGgoKSwgbGF0aW5PcmlnaW4uZGF0YSgpLCBsYXRpbk9yaWdpbi5sZW5ndGgoKSwgY2xpZW50
UmVzdWx0KSkgewogICAgICAgICByZXN1bHQgPSBjbGllbnRSZXN1bHQ7CkBAIC0zODYsNyArMzgz
LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLAogI2VuZGlmCiAKICAgICBUaW1lckJhc2U6OmZp
cmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwotICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSBm
cmFtZU9yaWdpbihmcmFtZSk7CisgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3Ry
aW5nKGZyYW1lKTsKICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPnJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbChtZXNzYWdlLmNoYXJhY3RlcnMoKSwgbWVzc2FnZS5sZW5n
dGgoKSwgbGF0aW5PcmlnaW4uZGF0YSgpLCBsYXRpbk9yaWdpbi5sZW5ndGgoKSk7CiB9CiAKQEAg
LTc2OCw3ICs3NjUsNyBAQCB2b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OmZ1bGxTY3JlZW5S
ZW5kZXJlckNoYW5nZWQoUmVuZGVyQm94KiBmdWxsU2NyZWVuUmVuZAogdm9pZCBDaHJvbWVDbGll
bnRCbGFja0JlcnJ5OjpyZXF1ZXN0V2ViR0xQZXJtaXNzaW9uKEZyYW1lKiBmcmFtZSkKIHsKICAg
ICBpZiAoZnJhbWUpIHsKLSAgICAgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZyYW1lT3JpZ2lu
KGZyYW1lKTsKKyAgICAgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3RyaW5nKGZy
YW1lKTsKICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPnJlcXVlc3RXZWJHTFBl
cm1pc3Npb24obGF0aW5PcmlnaW4uZGF0YSgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCmluZGV4IDcyMmU4MGY1MzJjMWRk
ZTZiMGFiODI3NDJkMmViNzAzYzZlYzcxNjEuLmVmYTBjOTA5OGZlZWVkZDIxNzdmNmFlM2RmNGJh
ZGJmMmMyZjE3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3Jh
Z2VBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VB
cmVhUHJveHkuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVByb3h5Ojpk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3VwLCBjb25zdCBTdHIK
ICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAtPnBhZ2VzKCk7CiAg
ICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdpbigp
OyBpdCAhPSBwYWdlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KCkpIHsKLSAgICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZS0+ZG9tV2lu
ZG93KCktPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCk7CisgICAgICAgICAgICBTdG9yYWdlKiBzdG9y
YWdlID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5vcHRpb25hbExvY2FsU3RvcmFn
ZSgpOwogICAgICAgICAgICAgaWYgKHN0b3JhZ2UgJiYgZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSAmJiAhaXNFdmVudFNvdXJjZShzdG9y
YWdlLCBzb3VyY2VBcmVhSW5zdGFuY2UpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHBhZ2VVUkwsIHN0b3JhZ2Up
KTsKICAgICAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFQcm94eTo6
ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3VwLCBjb25zdCBT
CiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0g
ICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZS0+ZG9tV2luZG93KCktPm9wdGlvbmFsU2Vz
c2lvblN0b3JhZ2UoKTsKKyAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+b3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpOwogICAgICAgICBpZiAo
c3RvcmFnZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2Vj
dXJpdHlPcmlnaW4pICYmICFpc0V2ZW50U291cmNlKHN0b3JhZ2UsIHNvdXJjZUFyZWFJbnN0YW5j
ZSkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50KFN0
b3JhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCBwYWdlVVJMLCBzdG9yYWdlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTU1lc3NhZ2VFdmVudC5jcHAKaW5kZXggNTNlYTQzY2Ux
M2Q5MzgzYjk2OGRlODY4ZjM1YzIwNzBkYjg4ZDZhMy4uMDZjZjY2ZmM1NTkzM2RmMTZhNjgwNDg5
YTc1ODI3MDNhNjU1Nzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRE9NTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJET01NZXNzYWdlRXZlbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRE9N
TWVzc2FnZUV2ZW50LmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKQEAgLTU1LDcgKzU2
LDcgQEAgdm9pZCBXZWJET01NZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgV2Vi
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwKICAgICBBU1NFUlQoaXNNZXNzYWdlRXZlbnQo
KSk7CiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSAwOwogICAgIGlmIChzb3VyY2VGcmFtZSkKLSAg
ICAgICAgd2luZG93ID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViRnJhbWVJbXBsKj4oc291cmNlRnJh
bWUpLT5mcmFtZSgpLT5kb21XaW5kb3coKTsKKyAgICAgICAgd2luZG93ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViRnJhbWVJbXBsKj4oc291cmNlRnJhbWUpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7CiAgICAgdW53
cmFwPE1lc3NhZ2VFdmVudD4oKS0+aW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIG1lc3NhZ2VEYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCB3aW5kb3csIHBvcnRz
LnJlbGVhc2UoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAppbmRleCA2N2Q4MWFkZGE1YWFjZmE5OGVmYmRmOGE0ZGU0OTUwNjg2Njc4Y2NhLi5hMWYz
ZWFiNzVhOWQxNjBhNzVmOThiZmMxNTEzOTRmYTdiNmM5Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTgwOSwxMCArODA5LDEwIEBAIFdlYkFu
aW1hdGlvbkNvbnRyb2xsZXIqIFdlYkZyYW1lSW1wbDo6YW5pbWF0aW9uQ29udHJvbGxlcigpCiAK
IFdlYlBlcmZvcm1hbmNlIFdlYkZyYW1lSW1wbDo6cGVyZm9ybWFuY2UoKSBjb25zdAogewotICAg
IGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+ZG9tV2luZG93KCkpCisgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm4gV2ViUGVyZm9ybWFuY2UoKTsKIAotICAgIHJldHVybiBXZWJQZXJm
b3JtYW5jZShtX2ZyYW1lLT5kb21XaW5kb3coKS0+cGVyZm9ybWFuY2UoKSk7CisgICAgcmV0dXJu
IFdlYlBlcmZvcm1hbmNlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZXJmb3Jt
YW5jZSgpKTsKIH0KIAogTlBPYmplY3QqIFdlYkZyYW1lSW1wbDo6d2luZG93T2JqZWN0KCkgY29u
c3QKQEAgLTg4Nyw3ICs4ODcsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29u
c29sZShjb25zdCBXZWJDb25zb2xlTWVzc2FnZSYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGZyYW1lKCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
T3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgd2ViQ29yZU1lc3NhZ2VMZXZlbCwg
bWVzc2FnZS50ZXh0KTsKKyAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIHdl
YkNvcmVNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UudGV4dCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBs
Ojpjb2xsZWN0R2FyYmFnZSgpCkBAIC0xMTgwLDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lSW1w
bDo6Y29tbWl0RG9jdW1lbnREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAK
IHVuc2lnbmVkIFdlYkZyYW1lSW1wbDo6dW5sb2FkTGlzdGVuZXJDb3VudCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGZyYW1lKCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5l
cnMoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRp
bmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiBib29sIFdlYkZyYW1lSW1wbDo6aXNQcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdApAQCAtMTk1NiwzNCArMTk1NiwyOSBAQCB2b2lkIFdl
YkZyYW1lSW1wbDo6c2VuZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnQoaW50IG9yaWVudGF0aW9uKQog
CiB2b2lkIFdlYkZyYW1lSW1wbDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJTdHJpbmcmIGV2
ZW50VHlwZSwgV2ViRE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
IHsKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRvbVdpbmRvdygpOwotCi0gICAg
RXZlbnRMaXN0ZW5lcldyYXBwZXIqIGxpc3RlbmVyV3JhcHBlciA9Ci0gICAgICAgIGxpc3RlbmVy
LT5jcmVhdGVFdmVudExpc3RlbmVyV3JhcHBlcihldmVudFR5cGUsIHVzZUNhcHR1cmUsIHdpbmRv
dyk7Ci0KLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIGFkb3B0UmVmKGxpc3RlbmVyV3JhcHBlciksIHVzZUNhcHR1cmUpOworICAgIERPTVdpbmRv
dyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgRXZlbnRM
aXN0ZW5lcldyYXBwZXIqIGxpc3RlbmVyV3JhcHBlciA9IGxpc3RlbmVyLT5jcmVhdGVFdmVudExp
c3RlbmVyV3JhcHBlcihldmVudFR5cGUsIHVzZUNhcHR1cmUsIHdpbmRvdyk7CisgICAgd2luZG93
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgYWRvcHRSZWYobGlzdGVuZXJXcmFwcGVyKSwg
dXNlQ2FwdHVyZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IFdlYlN0cmluZyYgZXZlbnRUeXBlLCBXZWJET01FdmVudExpc3RlbmVyKiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+
ZG9tV2luZG93KCk7Ci0KLSAgICBFdmVudExpc3RlbmVyV3JhcHBlciogbGlzdGVuZXJXcmFwcGVy
ID0KLSAgICAgICAgbGlzdGVuZXItPmdldEV2ZW50TGlzdGVuZXJXcmFwcGVyKGV2ZW50VHlwZSwg
dXNlQ2FwdHVyZSwgd2luZG93KTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpOworICAgIEV2ZW50TGlzdGVuZXJXcmFwcGVyKiBsaXN0ZW5l
cldyYXBwZXIgPSBsaXN0ZW5lci0+Z2V0RXZlbnRMaXN0ZW5lcldyYXBwZXIoZXZlbnRUeXBlLCB1
c2VDYXB0dXJlLCB3aW5kb3cpOwogICAgIHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyV3JhcHBlciwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVJ
bXBsOjpkaXNwYXRjaEV2ZW50KGNvbnN0IFdlYkRPTUV2ZW50JiBldmVudCkKIHsKICAgICBBU1NF
UlQoIWV2ZW50LmlzTnVsbCgpKTsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9tV2luZG93KCktPmRp
c3BhdGNoRXZlbnQoZXZlbnQpOworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpk
aXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhjb25zdCBXZWJTZWN1cml0eU9yaWdp
biYgaW50ZW5kZWRUYXJnZXRPcmlnaW4sIGNvbnN0IFdlYkRPTUV2ZW50JiBldmVudCkKIHsKICAg
ICBBU1NFUlQoIWV2ZW50LmlzTnVsbCgpKTsKICAgICAvLyBQYXNzIGFuIGVtcHR5IGNhbGwgc3Rh
Y2ssIHNpbmNlIHdlIGRvbid0IGhhdmUgdGhlIG9uZSBmcm9tIHRoZSBvdGhlciBwcm9jZXNzLgot
ICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5D
aGVjayhpbnRlbmRlZFRhcmdldE9yaWdpbi5nZXQoKSwgZXZlbnQsIDApOworICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5D
aGVjayhpbnRlbmRlZFRhcmdldE9yaWdpbi5nZXQoKSwgZXZlbnQsIDApOwogfQogCiBpbnQgV2Vi
RnJhbWVJbXBsOjpmaW5kTWF0Y2hNYXJrZXJzVmVyc2lvbigpIGNvbnN0CkBAIC0yMTkwLDExICsy
MTg1LDExIEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpkZWxpdmVySW50ZW50KGNvbnN0IFdlYkludGVu
dCYgaW50ZW50LCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBCiAgICAgICAgICAgICAoKmNoYW5uZWxz
KVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheSA9IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCoobV9mcmFtZS0+ZG9tV2luZG93KCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheSA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZVBvcnRzKCoobV9mcmFtZS0+ZG9jdW1lbnQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7
CiAKICAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVy
ZWRJbnRlbnQ6OmNyZWF0ZShtX2ZyYW1lLCBjbGllbnQucmVsZWFzZSgpLCBpbnRlbnQuYWN0aW9u
KCksIGludGVudC50eXBlKCksIGludGVudERhdGEsIHBvcnRBcnJheS5yZWxlYXNlKCksIHdlYmNv
cmVJbnRlbnQtPmV4dHJhcygpKTsKIAotICAgIERPTVdpbmRvd0ludGVudHM6OmZyb20obV9mcmFt
ZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworICAg
IERPTVdpbmRvd0ludGVudHM6OmZyb20obV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkp
LT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKaW5kZXggMThm
NWRlMjBhNWUwZmZhZDEyYTA3MjE3ODUwYjFmZmQ4ZTgwODBjMS4uZTg1MzI2NzdkN2ZmYmE1NmJm
NGU3ZjZjMjYyYjYyNmEzMGNkY2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKQEAgLTE5OCw4ICsxOTgsNyBAQCBib29sIFdlYlBhZ2VQ
b3B1cEltcGw6OmluaXRQYWdlKCkKICAgICBtX3BvcHVwQ2xpZW50LT53cml0ZURvY3VtZW50KCp3
cml0ZXIpOwogICAgIHdyaXRlci0+ZW5kKCk7CiAKLSAgICBBU1NFUlQoZnJhbWUtPmV4aXN0aW5n
RE9NV2luZG93KCkpOwotICAgIERPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFsbChmcmFtZS0+ZXhp
c3RpbmdET01XaW5kb3coKSwgbV9wb3B1cENsaWVudCk7CisgICAgRE9NV2luZG93UGFnZVBvcHVw
OjppbnN0YWxsKGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgbV9wb3B1cENsaWVudCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDRi
ODA0ZGQ2Mjc1MjJlZmEyYjM0ZTg2MTA5NjcwZjU1MGE2ODNkOGIuLjk2YTU3OTFlZTJhOWYwNjU0
MTFkMjk4NGFiMGE0ZjgyYTFmYThkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAt
MjI1LDcgKzIyNSw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwYXVzZVRyYW5z
aXRpb24oRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyCiB1bnNpZ25lZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRFdmVudENvdW50KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSkKIHsKICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gRVdLUHJp
dmF0ZTo6Y29yZUZyYW1lKGV3a0ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5kb21XaW5k
b3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgICAgIHJldHVybiBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygp
OwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IGU4ZmVjNmQ2MzE3MzY4ZGE2MWU2ZDUzMTQ3OTM4MDlhNjYxZmQzNDEuLjcyMzFiNTQ5ZGQ5NWZk
MjM0MDIxYzJiM2M5YzY4Yzg1Y2UzMWMwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCkBAIC03NjYsMTIgKzc2NiwxMiBAQCB2b2lkIGV3a19mcmFtZV9pbnRlbnRfZGVsaXZlcihj
b25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19JbnRlbnQqIGV3a19pbnRlbgogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdDaGFubmVscy0+c2l6ZSgpOyArK2kpCiAgICAg
ICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IG9yaWdDaGFubmVscy0+YXQoaSkucmVsZWFzZSgpOwog
ICAgIH0KLSAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBXZWJD
b3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvbVdp
bmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCBjaGFubmVscy5yZWxlYXNlKCkpOwor
ICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCooc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKSks
IGNoYW5uZWxzLnJlbGVhc2UoKSk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6RGVsaXZlcmVkSW50
ZW50Q2xpZW50PiBkdW1teUNsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6RGVsaXZlcmVkSW50
ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBXZWJDb3JlOjpEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZShz
bWFydERhdGEtPmZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudC0+YWN0aW9uKCks
IGludGVudC0+dHlwZSgpLCBpbnRlbnQtPmRhdGEoKSwgcG9ydHMucmVsZWFzZSgpLCBpbnRlbnQt
PmV4dHJhcygpKTsKIAotICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20oc21hcnRE
YXRhLT5mcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNl
KCkpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20oc21hcnREYXRhLT5mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxl
YXNlKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDAwZmVi
YzhiN2MyYTE0NDY0YjZlNDkzYWQ4OWQ4OTBkNWMxMmZlMDcuLmM3NmRjZTlmNmY2YjI0M2NkZGRh
YzZkNjIyZGIyYjI2YTY5MDA0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMjc5
LDcgKzI3OSw3IEBAIGd1aW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0UGVuZGluZ1Vu
bG9hZEV2ZW50Q291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lCiB7CiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIDApOwogCi0gICAgcmV0dXJuIGNv
cmUoZnJhbWUpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7Cisg
ICAgcmV0dXJuIGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1Vu
bG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpwYXVzZUFuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUs
IGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KaW5kZXggMGFkMGVjYTI1NGQxNjIyMjlkYWI4MmQzNWZlMDM4M2UzNTEwOGUz
Ny4uOTJmOWUwYmI2MTY2ZWNkNzJjMDQ5ZjNlZDM3MjIxMGNlZTIwODhlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05MDYsNyArOTA2LDcgQEAgc3RhdGljIGlubGlu
ZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0g
KHVuc2lnbmVkKV9wZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50CiB7Ci0gICAgcmV0dXJuIF9w
cml2YXRlLT5jb3JlRnJhbWUtPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5l
cnMoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIFdl
YkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAo
ZnJhbWVMb2FkZXItPnN1YmZyYW1lTG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lucygpKQogICAgICAg
ICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JLZXk6
V2ViRnJhbWVIYXNQbHVnaW5zXTsKICAgICAKLSAgICBpZiAoRE9NV2luZG93KiBkb21XaW5kb3cg
PSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb21XaW5kb3coKSkgeworICAgIGlmIChET01XaW5kb3cq
IGRvbVdpbmRvdyA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
KSB7CiAgICAgICAgIGlmIChkb21XaW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS51bmxvYWRFdmVudCkpCiAgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JLZXk6V2ViRnJhbWVIYXNVbmxvYWRMaXN0ZW5lcl07CiAg
ICAgICAgIGlmIChkb21XaW5kb3ctPm9wdGlvbmFsQXBwbGljYXRpb25DYWNoZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAKaW5kZXggYTE3MDMzNjI1NGQwMGE4OTA5YTM4NzA4OGViZTk2Yjc0NTI0NTk5Ny4uYmNm
MDcyZDY1YjU2NGZmMWVkNWFiNmFkNTEyOTQ2MTg0MDkxYjA2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBA
IC01MDMsNyArNTAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZp
bmlzaERvY3VtZW50TG9hZCgpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChtX2ZyYW1lKSkpOwogCiAgICAgaWYgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuKSB7
Ci0gICAgICAgIGludCB1bmxvYWRFdmVudENvdW50ID0gbV9mcmFtZS0+ZG9tV2luZG93KCktPnBl
bmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAgICAgICBpbnQgdW5sb2FkRXZlbnRDb3Vu
dCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRM
aXN0ZW5lcnMoKTsKICAgICAgICAgaWYgKHVubG9hZEV2ZW50Q291bnQpCiAgICAgICAgICAgICBw
cmludGYoIiVzIC0gaGFzICV1IG9udW5sb2FkIGhhbmRsZXIocylcbiIsIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCB1bmxvYWRFdmVudENv
dW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggZmY1NjBjNjdiOTJhZmIyY2E3
MzJiOWM5NzY5MGYxNWMzNzU3YTUzMS4uZDE4ODBjZjNmYzZiYjk1ZDFhNTk1NTc0Nzk0MzAxNGQ5
N2I5MDBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIEhSRVNV
TFQgV2ViRnJhbWU6OkRPTVdpbmRvdygvKiBbcmV0dmFsXVtvdXRdICovIElET01XaW5kb3cqKiB3
aW5kb3cpCiAgICAgKndpbmRvdyA9IDA7CiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUodGhpcykpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZVdpbmRvdyA9
IGNvcmVGcmFtZS0+ZG9tV2luZG93KCkpCisgICAgICAgIGlmIChXZWJDb3JlOjpET01XaW5kb3cq
IGNvcmVXaW5kb3cgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKQogICAgICAg
ICAgICAgKndpbmRvdyA9IDo6RE9NV2luZG93OjpjcmVhdGVJbnN0YW5jZShjb3JlV2luZG93KTsK
ICAgICB9CiAKQEAgLTk4OSw3ICs5ODksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KAogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+ZG9t
V2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAgICpyZXN1bHQgPSBj
b3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0
ZW5lcnMoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjM2ZmMwMjM4ZmVhZDNlYWNmNmFjMTMy
YzkwYzk1MDg4OTk0Yzk1NC4uMTkyNDNiZWUwM2U0NzI2Y2EwYmI3YTk4MWQ4YjMwODQzYjlkZTUx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChjb25zdCBJ
bnRlbnREYXRhJiBpbnRlbnREYXRhKQogICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2
ZXJlZEludGVudCA9IERlbGl2ZXJlZEludGVudDo6Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNs
aWVudC5yZWxlYXNlKCksIGludGVudERhdGEuYWN0aW9uLCBpbnRlbnREYXRhLnR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIGR1bW15UG9y
dHMucmVsZWFzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudERhdGEuZXh0cmFzKTsKLSAgICBXZWJD
b3JlOjpET01XaW5kb3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb21XaW5kb3coKSktPmRl
bGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CisgICAgV2ViQ29yZTo6RE9NV2luZG93
SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxp
dmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ5Myw3ICs0
OTMsNyBAQCB1bnNpZ25lZCBXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkgY29uc3QKICAg
ICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX2Nv
cmVGcmFtZS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAg
IHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxv
YWRFdmVudExpc3RlbmVycygpOwogfQogCiBib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdM
aW5rKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158418</attachid>
            <date>2012-08-14 14:43:30 -0700</date>
            <delta_ts>2012-08-14 15:11:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93990-20120814144309.patch</filename>
            <type>text/plain</type>
            <size>89807</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmMTY3MjNmY2IwMjBi
ZjhmNzIxMjg4Mzg2M2UyYmM0NjkzODVjNy4uMTljY2NkNGJmN2JkZjgwNDI3NzM1MTkyOTAyZDQ1
Mzk3ZmE4MjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMCBAQAogMjAxMi0wOC0xNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9t
V2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBqdXN0IGNhbGwg
dGhyb3VnaCB0byBkb2N1bWVudCgpLT5kb21XaW5kb3coKS4gVGhpcworICAgICAgICBwYXRjaCB1
cGRhdGVzIHRoZSBjYWxsZXJzIHNvIGl0J3MgY2xlYXJlciB3aGF0J3MgZ29pbmcgb24uCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50RXJyb3JN
ZXNzYWdlRm9yRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNEb2N1bWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbToKKyAgICAgICAgKGNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJ
c29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvclNldHRlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByaW50
TmF2aWdhdGlvbkVycm9yTWVzc2FnZSk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6CisgICAgICAg
ICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0
ZUFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAq
IGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlRnJh
bWVEZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNv
bnRhaW5pbmdUaGlzRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3cpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cHJpbnRXYXJuaW5n
VG9Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFn
ZUlkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6
OmJlZ2luKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpkaWRPcGVuVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVj
a0lmRGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpcmVCZWZv
cmVVbmxvYWRFdmVudCk6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZl
c3RSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2VsZik6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnRvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6OkRPTVdpbmRvd1Byb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZy
b21QYWdlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKEZyYW1lKToKKyAgICAgICAgKiBw
YWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZXBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYXRpb246OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERp
c3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2gpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVwb3J0TWVzc2FnZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hl
ZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3Ry
aW5nKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUTWVzc2FnZUhhbmRsZXI6OmhhbmRsZU1lc3NhZ2Up
OgorCisyMDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAg
ICAgRE9NV2luZG93Ojpkb2N1bWVudCgpIHNob3VsZCBub3QgcmVhY2ggdGhyb3VnaCBGcmFtZQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NDAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggN2Y5YWIzZDM1NzVmZWFkYmMwYmE5YmFm
MmE5YzQ4N2UwNjkwYTJhMS4uZWJkMTM3MWM0YjFlYWRjMTdlNzM1NjNlMjFjN2M3OWM4YjMxMDk1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUg
RnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcmlnaW5T
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6cnVuSmF2
YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6
OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJs
YWNrQmVycnk6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50QmxhY2tCZXJyeTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OnJlcXVlc3RXZWJHTFBlcm1pc3Npb24p
OgorCiAyMDEyLTA4LTE0ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNv
bS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU29tZSBjYWxsYmFjayBvZiBTZWxlY3Qgb25j
aGFuZ2UgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhjYjljODEz
N2YyMTk3NTM2ZjFjNDAxYThiZWFkNDZiZWE4YmUwNzcuLmI0ZTA0YzRmMDFmNjM0YWM5YmNhN2I4
MDE1MWI0OWZiZTMxNjcyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5k
b3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9TdG9yYWdlQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJv
eHk6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBzcmMv
V2ViRE9NTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRE9NTWVzc2FnZUV2
ZW50Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpwZXJmb3JtYW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lSW1wbDo6dW5sb2FkTGlzdGVuZXJDb3VudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
SW1wbDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZGlz
cGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUltcGw6OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorCiAy
MDEyLTA4LTE0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
SW5kZXhlZERCOiBQYXNzIGN1cnNvciBjb250aW51ZSByZXN1bHRzIGJhY2sgaW4gY2FsbGJhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBiNzdlZjM2MTI2MjEzMzQ3MjY3ZDAyMjJlNzNkYzQ0OTg2ZDBh
MDlmLi4yMjJmMjg3MmY4ZWE4YWYwYjhkMDU2OGY5M2FjNTdiNjM5ZWUwMjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFt
ZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRFdmVu
dENvdW50KToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFt
ZV9pbnRlbnRfZGVsaXZlcik6CisKIDIwMTItMDgtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSByZWxlYXNlIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6bV9wbHVnaW5XaWRnZXQgcmVmcHRyIHVwb24gUGx1Z2luIERvY3VtZW50IGRldGFjaC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAyMzliY2IwZjhlZWMxNWU5MDU0OWY5ZTY1NzI2YmViY2QyNWZh
ZWM5Li4zYjVmZTg4NTQ3YTRiNGZjMmZmMTU1NzRmNDJjNTRhNzgyM2EzNTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFt
ZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldFBlbmRpbmdVbmxvYWRF
dmVudENvdW50KToKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpt
X3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDkzMTdiZDJmNzI2YmZlOGE4ZGI0ZDI5MzRiNzM1ZWViOWRkNTAxMGMuLjU4
YWJhNzhjZjVmYmZhOGQ3NDYxOTQxZDNmYjdiMGMwMDE2NzE2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlz
dGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BlbmRp
bmdGcmFtZVVubG9hZEV2ZW50Q291bnRdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NhY2hlYWJp
bGl0eURpY3Rpb25hcnldKToKKwogMjAxMi0wOC0wOSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
YmxvYi11cmwtaW4taWZyYW1lLmh0bWwgZmFpbHMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDFj
YjFhYWU2NmU5MTBkMTExNzZmYTBhYjgwZjM5Zjc4ZDU4MmIyY2EuLjcxNjYwZDZmZjIyYTQ1MjNj
N2QwYTQ3YzhiNDZkNzc4Mzk2ZDBkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBE
ZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorCiAyMDEyLTA4
LTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAg
ICBbUXRdIEZpeCBmYWlsaW5nIHRzdF9RV2ViUGFnZTo6ZmluZFRleHQgdW5pdCB0ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggOGViYThiZjE2M2FmYjkwMWQzMjBjZmQ4MjQ4Yzg0YzBmYTU4Yjg5YS4u
ZmQzMzM1NDU5MTZmNjc4MzcxNjQ5YjYyYzY1ZGIwNzZkMmRlMTVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRGVsZXRlIEZyYW1lOjpkb21XaW5kb3coKSBhbmQgRnJhbWU6OmV4
aXN0aW5nRE9NV2luZG93KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzOTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6RE9NV2luZG93KToK
KyAgICAgICAgKFdlYkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KToKKwogMjAx
Mi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZw
dHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY0ZWMyMWUxZGM3
ZmUyNTliYWIzMWVhZDg2ODExNDI3MGY1ZjYyNzEuLjhjZTI3MzYxYjNmYzJiMTliYWMyNDg4Nzcy
NTExODgyMDQ0YjljZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xNCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIERlbGV0ZSBGcmFtZTo6
ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KToKKwogMjAxMi0w
OC0xNCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIFVwZGF0ZUF0bGFzIGlzIHdhc3RpbmcgbWVtb3J5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDA2OTY1ZmVjODE5ZTRiMDk3NDkwYjRlYWEwMDNlZDUyOWM3NThhZDQuLmM3N2Ez
ZDMxOTJhMTZhMDQ1YjhhZDQyMWJiZmE1MTljZDMwMTg1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0xMjk0LDcgKzEyOTQsNiBAQCBfX1pOSzdXZWJDb3JlNUZyYW1lMTZmcmFtZVNjYWxlRmFj
dG9yRXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUxOGRvY3VtZW50VHlwZVN0cmluZ0V2CiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3Ry
aW5nRQogX19aTks3V2ViQ29yZTVGcmFtZThzZXR0aW5nc0V2Ci1fX1pOSzdXZWJDb3JlNUZyYW1l
OWRvbVdpbmRvd0V2CiBfX1pOSzdXZWJDb3JlNVJhbmdlMTFzdGFydE9mZnNldEVSaQogX19aTks3
V2ViQ29yZTVSYW5nZTEyZW5kQ29udGFpbmVyRVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlMTJwYXN0
TGFzdE5vZGVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
aW5kZXggMTU1MGY5OWE5MzJjOWY5MzBjYzZiZDBiMDI4MjI4MmIyMzUwY2M4MC4uNTlmNTVhZWNm
YWNhZTYyYmVmNzEwNDZhZDdjMDVhMmFlZWVjZTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBGcmFtZSogZnJhbWUsIFN0cmluZyYg
bWVzc2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgcmVzdWx0ID0gQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUsIERvTm90UmVw
b3J0U2VjdXJpdHlFcnJvcik7CiAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgbGluZSBvZiBj
b2RlIHNob3VsZCBtb3ZlIHNvbWV3aGVyZSB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBpbW1l
ZGlhdGVseVJlcG9ydFVuc2FmZUFjY2Vzc1RvLgotICAgIG1lc3NhZ2UgPSBmcmFtZS0+ZG9tV2lu
ZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZURPTVdpbmRvdyhleGVj
KSk7CisgICAgbWVzc2FnZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y3Jvc3NE
b21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlRE9NV2luZG93KGV4ZWMpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBwcmludEVycm9yTWVzc2Fn
ZUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPnByaW50
RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+cHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKIEpTVmFsdWUgb2JqZWN0VG9TdHJp
bmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggYmIzZDc5MTI1YTFhNzcwY2IxOWRlOGIwZmViMjNjMGQzYjk5ZDIz
OC4uMmQ3NWFjMDhjYjdhODVmYzA0OWFlNGI3ZWUzZjAzNjQwOGE0NDEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtOTksMTIg
Kzk5LDEyIEBAIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByCiAKIHN0YXRpYyBKU1ZhbHVlIGNoaWxk
RnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29w
ZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2lu
ZG93KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4KQogewotICAgIHJldHVybiB0b0pTKGV4
ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJh
bWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCktPmRvbVdpbmRvdygpKTsKKyAgICByZXR1
cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5p
bXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaW5kZXgpLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4
IGI2ZGUxNjIyNTFkMTE0MzdiZjhiNmMzYTYwYzFiZTNmNDdkNWVjM2EuLjY0N2I0NDYxZWFlNDBh
YjQ1YmI2MjVlYmM5YmYyN2ZlNDVhZDQ5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNE
b2N1bWVudDo6bG9jYXRpb24oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIExvY2F0aW9uKiBsb2NhdGlvbiA9IGZy
YW1lLT5kb21XaW5kb3coKS0+bG9jYXRpb24oKTsKKyAgICBMb2NhdGlvbiogbG9jYXRpb24gPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCk7CiAgICAgaWYgKEpTRE9N
V3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBs
b2NhdGlvbikpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCkBAIC03Myw3ICs3Myw3IEBAIHZv
aWQgSlNEb2N1bWVudDo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9IGZyYW1lLT5kb21XaW5kb3coKS0+bG9jYXRpb24oKSkK
KyAgICBpZiAoTG9jYXRpb24qIGxvY2F0aW9uID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5sb2NhdGlvbigpKQogICAgICAgICBsb2NhdGlvbi0+c2V0SHJlZih1c3RyaW5nVG9TdHJp
bmcobG9jYXRpb25TdHJpbmcpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93
KGV4ZWMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggMGE1NTdmN2Q0YTRhZmZiM2ZmYzIzYWE1YTQ5OGNmNWJiMGMzYzc4YS4u
Nzc5ZThkNzM5ZDUzNjkzM2I2NjdmNjQyMmQ0NWFlNGJiMzM3Nzg1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC04NSwxOCArODUsMTIg
QEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZyYW1lID0gMDsKICAgICBpZiAoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cg
PSBqc0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwotICAgICAgICBmcmFtZSA9IHdp
bmRvdy0+aW1wbCgpLT5mcmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAvLyBUaGUgd2luZG93IG11c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0
cyBmcmFtZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5
MjE+LgotICAgICAgICAvLyBGSVhNRTogQSBiZXR0ZXIgZml4IGZvciB0aGlzIG1heSBiZSB0byBj
aGFuZ2UgRE9NV2luZG93OjpmcmFtZSgpIHRvIG5vdCByZXR1cm4gYSBmcmFtZSB0aGUgZGV0YWNo
ZWQgd2luZG93IHVzZWQgdG8gYmUgaW4uCi0gICAgICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkg
IT0gd2luZG93LT5pbXBsKCkpCisgICAgICAgIGlmICghd2luZG93LT5pbXBsKCktPmlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBG
SVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPwotICAgICAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgICAgIFNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdCA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgpLT5zY3JpcHQoKTsK
ICAgICAgICAgaWYgKCFzY3JpcHQtPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2Ny
aXB0KSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5jcHAKaW5kZXggOWNmNGU5OWNlYTNhZTNhNzk1NDJiZGIzNjA1MmRiMTQ3MzQxZGQzMy4uYTY5
YWYzOTFiZjQyYmU2NDVhZTRlMTFjYjM3NzNlYzQ3YmZhYjZkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFt
ZSkKICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxk
KS5nZXQoKSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT5nbG9i
YWxEYXRhKCksIHdpbmRvdyk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgd2luZG93U2hl
bGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9tV2luZG93KCkpOworICAgICAgICAgICAgd2luZG93U2hl
bGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwogCiAgICAgICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgICAgICAgICBz
Y3JpcHRDb250cm9sbGVyLT5hdHRhY2hEZWJ1Z2dlcih3aW5kb3dTaGVsbCwgcGFnZS0+ZGVidWdn
ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDc5YzEyNzQ1ZmU2NWE5OTEzYzZlOWJmZjExMjdiYjZiNjRjY2QyYjYuLjlmYTg1
NDI0NGI4OWZiYTBmN2E1MmRiODQ1NzI4NTI3MTYyZGU1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAg
SlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAgICBBU1NFUlQoIW1fd2luZG93U2hlbGxzLmNvbnRh
aW5zKHdvcmxkKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1NoZWxs
OjpjcmVhdGVTdHJ1Y3R1cmUoKndvcmxkLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKLSAgICBT
dHJvbmc8SlNET01XaW5kb3dTaGVsbD4gd2luZG93U2hlbGwoKndvcmxkLT5nbG9iYWxEYXRhKCks
IEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZShtX2ZyYW1lLT5kb21XaW5kb3coKSwgc3RydWN0dXJl
LCB3b3JsZCkpOworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCgqd29y
bGQtPmdsb2JhbERhdGEoKSwgSlNET01XaW5kb3dTaGVsbDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLCBzdHJ1Y3R1cmUsIHdvcmxkKSk7CiAgICAgU3Ryb25nPEpTRE9N
V2luZG93U2hlbGw+IHdpbmRvd1NoZWxsMih3aW5kb3dTaGVsbCk7CiAgICAgbV93aW5kb3dTaGVs
bHMuYWRkKHdvcmxkLCB3aW5kb3dTaGVsbCk7CiAgICAgd29ybGQtPmRpZENyZWF0ZVdpbmRvd1No
ZWxsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01B
YnN0cmFjdFZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0
Vmlldy5tbQppbmRleCAwYjc5YWE5Yzk3ZGNlZjVlNWZjZjRlYzEwYWM5ODBjZmU1ZGQyNjQ5Li5k
MmQzZGQ1OGRmMzYyMjcyZjU0MzU0OWVlNzVjODYyN2E2NWJiOWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQpAQCAtNTAsNyArNTAsNyBA
QAogewogICAgIGlmICghX2ludGVybmFsKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBraXQoSU1QTC0+ZG9tV2luZG93KCktPmRvY3VtZW50KCkpOworICAgIHJldHVybiBraXQoSU1Q
TC0+ZG9jdW1lbnQoKSk7CiB9CiAKIEBlbmQKQEAgLTcyLDcgKzcyLDcgQEAgV2ViQ29yZTo6RE9N
V2luZG93KiBjb3JlKERPTUFic3RyYWN0VmlldyAqd3JhcHBlcikKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgaWYgKCF3cmFwcGVyLT5faW50ZXJuYWwpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkZyYW1lKj4od3JhcHBlci0+X2ludGVybmFs
KS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RnJh
bWUqPih3cmFwcGVyLT5faW50ZXJuYWwpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKIH0KIAog
RE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9NV2luZG93KiB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggZjZiOWYxYTRmYjE2MzRlZGE4
NTMwMTJjYzQ1ZDM1MmFmN2QwNjYwOS4uYzAwMDgyZDZjZjRhMTQzMDdlYjgyZjQwYTQ0MzMzNDcz
NzJjNmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKQEAg
LTYzLDggKzYzLDggQEAgdHlwZWRlZiBIYXNoTWFwPGludCwgVjhOUE9iamVjdFZlY3Rvcj4gVjhO
UE9iamVjdE1hcDsKIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KE5Q
UCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCkKIHsKICAgICBWOE5QT2JqZWN0KiBvYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihucE9iamVjdCk7Ci0gICAgRE9NV2luZG93KiBk
b21XaW5kb3cgPSBvYmplY3QtPnJvb3RPYmplY3Q7Ci0gICAgaWYgKCFkb21XaW5kb3cgfHwgIWRv
bVdpbmRvdy0+ZnJhbWUoKSB8fCBkb21XaW5kb3cgIT0gZG9tV2luZG93LT5mcmFtZSgpLT5kb21X
aW5kb3coKSkKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IG9iamVjdC0+cm9vdE9iamVjdDsKKyAg
ICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKICAgICByZXR1cm4gVjhQ
cm94eTo6bWFpbldvcmxkQ29udGV4dChvYmplY3QtPnJvb3RPYmplY3QtPmZyYW1lKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCBiYTc1ZTNiNmI4NzU5NGZlYmYyZTRhMWE2NzU1NDE0ZWFiMmZjNjM0Li4wNjkyZTNkMmI5Yjgy
ZDM4OTZjOTU5MjYyOWYzNTI3NDlhNzNjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBO
UE9iamVjdCogY3JlYXRlU2NyaXB0T2JqZWN0KEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUo
djhDb250ZXh0KTsKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IGZyYW1lLT5kb21XaW5kb3coKTsK
KyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2xvYmFsID0gdG9WOCh3aW5kb3cpOwogICAgIEFT
U0VSVChnbG9iYWwtPklzT2JqZWN0KCkpOwogICAgIHJldHVybiBucENyZWF0ZVY4U2NyaXB0T2Jq
ZWN0KDAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZ2xvYmFsKSwgd2luZG93KTsKQEAg
LTQ2OCw3ICs0NjgsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0
T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1MUGx1Z0luRWxlbWVudAogICAgICAgICByZXR1cm4g
Y3JlYXRlTm9TY3JpcHRPYmplY3QoKTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhD
b250ZXh0KTsKIAotICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7
CisgICAgRE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhwbHVnaW4gPSB0b1Y4KHN0YXRpY19jYXN0
PEhUTUxFbWJlZEVsZW1lbnQqPihwbHVnaW4pKTsKICAgICBpZiAoIXY4cGx1Z2luLT5Jc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlTm9TY3JpcHRPYmplY3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMmUzZjZjYzY2
OTdiOGE3MTVlNzc1YmEzYTVkZGZmMmVmODA1YzVmYi4uZTg3ZGM3ZDIyZjEyMmQzZmI4OTM4Yzc1
MDBlMzM0NmQ1ZjBjNTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBib29sIFY4RE9NV2luZG93U2hl
bGw6OmluaXRDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKCFpbnN0YWxsRE9NV2luZG93KHY4Q29udGV4dCwgbV9mcmFtZS0+ZG9tV2luZG93
KCkpKSB7CisgICAgaWYgKCFpbnN0YWxsRE9NV2luZG93KHY4Q29udGV4dCwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCkpKSB7CiAgICAgICAgIGRpc3Bvc2VDb250ZXh0SGFuZGxlcygp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCmluZGV4IGE2MDAxMzk5NTEyY2I0MzZjNjJj
NDU0NGYxMmIyYTQzODdiN2MyZGYuLjEwYWFkYmE2MjU3OTg5MzE3ZDZlZDlkMzk2ODk4OTdhNTZi
MzgzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29u
dGV4dC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgVjhJc29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRD
b250ZXh0KFY4UHJveHkqIHByb3h5LCBpbnQgZXh0ZW5zaW9uR3JvdXAsIGludCB3b3IKICAgICBt
X3BlckNvbnRleHREYXRhLT5pbml0KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGdvIGF3
YXkgb25jZSB3ZSBoYXZlIGEgd2luZG93U2hlbGwgZm9yIHRoZSBpc29sYXRlZCB3b3JsZC4KLSAg
ICBwcm94eS0+d2luZG93U2hlbGwoKS0+aW5zdGFsbERPTVdpbmRvdyhtX2NvbnRleHQtPmdldCgp
LCBtX2ZyYW1lLT5kb21XaW5kb3coKSk7CisgICAgcHJveHktPndpbmRvd1NoZWxsKCktPmluc3Rh
bGxET01XaW5kb3cobV9jb250ZXh0LT5nZXQoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpOwogCiAgICAgLy8gVXNpbmcgdGhlIGRlZmF1bHQgc2VjdXJpdHkgdG9rZW4gbWVhbnMg
dGhhdCB0aGUgY2FuQWNjZXNzIGlzIGFsd2F5cwogICAgIC8vIGNhbGxlZCwgd2hpY2ggaXMgc2xv
dy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZTRiNzVhN2Q5YjY3
NmI5ODZjYzY3OWQ4MDNjYjYwYTEzMmU0NWFmMS4uMjVhMzYwNmE5MjhlNzhhZWU2ZGIwZTQ3OTRl
MWUzZTJmODU5ZjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAg
LTM2Nyw5ICszNjcsOCBAQCBET01XaW5kb3cqIFY4UHJveHk6OnJldHJpZXZlV2luZG93KHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiBGcmFtZSogVjhQcm94eTo6cmV0cmlldmVGcmFt
ZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIERPTVdpbmRvdyogd2lu
ZG93ID0gcmV0cmlldmVXaW5kb3coY29udGV4dCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gd2luZG93
LT5mcmFtZSgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZG9tV2luZG93KCkgPT0gd2luZG93
KQotICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgaWYgKHdpbmRvdy0+aXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCisgICAgICAgIHJldHVybiB3aW5kb3ctPmZyYW1lKCk7CiAgICAgLy8g
V2UgcmV0dXJuIDAgaGVyZSBiZWNhdXNlIHxjb250ZXh0fCBpcyBkZXRhY2hlZCBmcm9tIHRoZSBG
cmFtZS4gIElmIHdlCiAgICAgLy8gZGlkIHJldHVybiB8ZnJhbWV8IHdlIGNvdWxkIGdldCBpbiB0
cm91YmxlIGJlY2F1c2UgdGhlIGZyYW1lIGNvdWxkIGJlCiAgICAgLy8gbmF2aWdhdGVkIHRvIGFu
b3RoZXIgc2VjdXJpdHkgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOWM0MjFmYjY0YTQ0YzRj
MmI2NDI4YTQ5NjIwZmYxNTY4MzE0MzAzNy4uYjhhYTRmYWNlOTZiN2VlOTkxODNmNWYxOTRmNzE4
NGQ3YWEwZWVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NzksNyArNDc5LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3Qg
aW5kZXgsIGNvbnN0IHYKIAogICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3Bl
ZENoaWxkKGluZGV4KTsKICAgICBpZiAoY2hpbGQpCi0gICAgICAgIHJldHVybiB0b1Y4KGNoaWxk
LT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChj
aGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtNTAyLDcgKzUwMiw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtCiAgICAgQXRvbWljU3RyaW5nIHByb3BOYW1lID0gdG9XZWJDb3JlQXRvbWlj
U3RyaW5nKG5hbWUpOwogICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3BlZENo
aWxkKHByb3BOYW1lKTsKICAgICBpZiAoY2hpbGQpCi0gICAgICAgIHJldHVybiB0b1Y4KGNoaWxk
LT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChj
aGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAg
IC8vIFNlYXJjaCBJREwgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIHByb3RvdHlwZQogICAgIGlm
ICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHkobmFtZSkuSXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRM
b2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
b2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBiMmQ4MWU4NGMyZDc1ZDkyMjQ5Njk4NGEx
NmExODQ0ZmJhMWY3YzM2Li43NjEzYTE0YjExNTY5MDE5NWNmZmQ0NWMxYTFiMTY1Y2Y3ODQxYjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbgogICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJl
dHVybiB2ODo6TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CiAKLSAgICBET01XaW5kb3cqIHdpbmRv
dyA9IGRvY3VtZW50LT5mcmFtZSgpLT5kb21XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIHdpbmRv
dyA9IGRvY3VtZW50LT5kb21XaW5kb3coKTsKICAgICByZXR1cm4gdG9WOCh3aW5kb3ctPmxvY2F0
aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFY4
RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2OAogICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybjsKIAotICAg
IERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmZyYW1lKCktPmRvbVdpbmRvdygpOworICAg
IERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAgIGlmIChMb2Nh
dGlvbiogbG9jYXRpb24gPSB3aW5kb3ctPmxvY2F0aW9uKCkpCiAgICAgICAgIGxvY2F0aW9uLT5z
ZXRIcmVmKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSksIGFjdGl2ZSwgZmlyc3QpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKaW5kZXggMzI3YzY0YmY2ZWY4NzUwYmNiNDM0OWRjOTkxZGNlMzdkNjkwMjVl
MS4uZmUyZTVjMmIzYjcwZTdlYmI1NGY0ZTFmMjA0NmM2ZWY4ZjBjZjQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxE
b2N1bWVudDo6R2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVuCiAgICAg
ICAgIE5vZGUqIG5vZGUgPSBpdGVtcy0+aXRlbSgwKTsKICAgICAgICAgRnJhbWUqIGZyYW1lID0g
MDsKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpICYm
IChmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSktPmNvbnRlbnRG
cmFtZSgpKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KGZyYW1lLT5kb21XaW5kb3coKSwgaXNv
bGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIGlzb2xhdGUpOwogCiAgICAgICAgIHJldHVybiB0b1Y4KG5vZGUsIGlzb2xhdGUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNTI5NDA5OTYxZjRi
YzgxYzExOGYyMWFiNmJkYjEyM2MyNTQyODMwMi4uZjI2MWZlZDg5YWEzMGQwZDJiMDZhMDE0Y2Y0
YTQ3YjA3NWM2Zjg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTUw
LDE0ICs1MCwxNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgIElOQ19TVEFUUygiRE9N
LkhUTUxGcmFtZVNldEVsZW1lbnQuTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIEhUTUxGcmFt
ZVNldEVsZW1lbnQqIGltcCA9IFY4SFRNTEZyYW1lU2V0RWxlbWVudDo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgTm9kZSogZnJhbWVOb2RlID0gaW1wLT5jaGlsZHJlbigpLT5uYW1lZEl0
ZW0odG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpKTsKLSAgICBpZiAoZnJhbWVOb2RlICYmIGZy
YW1lTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lVGFnKSkgewotICAgICAgICBEb2N1
bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudCo+KGZyYW1lTm9kZSktPmNv
bnRlbnREb2N1bWVudCgpOwotICAgICAgICBpZiAoIWRvYykKLSAgICAgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2MtPmZyYW1lKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKCFmcmFt
ZU5vZGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIGlmICghZnJhbWVOb2Rl
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZnJhbWVUYWcpKQorICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVF
bGVtZW50Kj4oZnJhbWVOb2RlKS0+Y29udGVudERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBpZiAoIWRvY3VtZW50LT5m
cmFtZSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOyAvLyBGSVhNRTogSG93IGNv
dWxkIEZyYW1lIGJlIG51bGwgaGVyZT8KKyAgICByZXR1cm4gdG9WOChkb2N1bWVudC0+ZG9tV2lu
ZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOWU4ZTMyZTQ2NzQzOWIzODlhYjE3ZTE3YWQ4OWJl
YjNjZjY4YTRiZi4uYTM0Y2QxYTBhMWM2NDdjNTE4N2MwNDZkZWQxY2Q0MDYyMWUwNWZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgc3RhdGljIHZvaWQgcHJp
bnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgYWN0aXZl
VVJMKQogICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpICsgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIgKyBhY3RpdmVVUkwuc3RyaW5nKCkgKyAiLlxu
IjsKIAogICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcHJpbnQgdG8gdGhlIGNvbnNvbGUgb2YgdGhl
IGRvY3VtZW50IHBlcmZvcm1pbmcgdGhlIG5hdmlnYXRpb24gaW5zdGVhZD8KLSAgICBmcmFtZS0+
ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOworICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKIHN0
YXRpYyBIYXNoU2V0PERvY3VtZW50Kj4qIGRvY3VtZW50c1RoYXROZWVkU3R5bGVSZWNhbGMgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKaW5kZXggZGMyMmU2ZTFm
MWZkNGQwZjAyMGRkNjA3NTVkYTkzYjA2MTAyZGViYS4uNGRhOTA1MDI5YTA0OTZlYmU2MGI3MDll
NzAxNzA2ZjkxMTk1OTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMu
Y3BwCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1l
bnQqIGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnMKICAgICBpZiAo
IXJlcGxhY2VtZW50Mi5pc051bGwoKSkKICAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFj
ZW1lbnQyIiwgcmVwbGFjZW1lbnQyKTsKIAotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmlld3Bv
cnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCBkb2N1bWVudC0+dXJsKCku
c3RyaW5nKCksIHBhcnNlckxpbmVOdW1iZXIoZG9jdW1lbnQpKTsKKyAgICBkb2N1bWVudC0+ZG9t
V2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwoZXJyb3JDb2RlKSwgbWVzc2FnZSwg
ZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGQ0YTBlNDNiN2VhMDk4YzZi
OGZlYjM5NTYxOTMxMTI1MTM3MGRhOWUuLjVkY2ZiZDM4M2JhOGFjYjBlZjRiMjFmZWE5NzJlZTg5
MTg1ODkyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNzA0LDcgKzcwNCw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgVmVjCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAg
ICAgdmlldy0+cmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOwogCi0gICAgUmVmUHRyPFRleHRF
dmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihtX2ZyYW1lLT5kb21X
aW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBSZWZQdHI8VGV4dEV2
ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIGV2
ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodHJpZ2dlcmluZ0V2ZW50KTsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjBiNmFmOTY3MzhhNjY1
MjllZDgwNmI0YjA0NTdkMzc1N2YwOWVhMy4uYjMwN2Y0NmY2NDg5OTZiZDJkYjliMWE1YjBlMjJj
YTI3MjM0Zjg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzQ2LDcgKzM0Niw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgcGFzdGluZ1Rl
eHQsIGJvb2wgc21hcnRSZXBsYWNlKQogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUobV9mcmFtZS0+ZG9tV2luZG93KCksIHBh
c3RpbmdUZXh0LCBzbWFydFJlcGxhY2UpLCBlYyk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUobV9mcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCksIHBhc3RpbmdUZXh0LCBzbWFydFJlcGxhY2UpLCBlYyk7CiB9CiAKIHZvaWQg
RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0
aW5nRnJhZ21lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpCkBAIC0zNTUs
NyArMzU1LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFnbWVudCwgYm9vbAogICAgIGlmICghdGFyZ2V0KQogICAg
ICAgICByZXR1cm47CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShtX2ZyYW1lLT5kb21X
aW5kb3coKSwgcGFzdGluZ0ZyYWdtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpLCBlYyk7
CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQ
YXN0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgcGFzdGluZ0ZyYWdtZW50LCBz
bWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpLCBlYyk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFz
UGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBFZGl0
b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2Rl
IG1vZGUpCiAgICAgLy8gdGhlIERPTSBFdmVudCBzcGVjaWZpY2F0aW9uLgogICAgIE5vZGUqIHRh
cmdldCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAgICAgaWYgKHRhcmdl
dCkgewotICAgICAgICBSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gZXZlbnQgPSBDb21wb3NpdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIG1fZnJhbWUt
PmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2
ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVu
ZEV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCk7CiAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZl
bnQsIGVjKTsKICAgICB9CkBAIC0xNDI2LDE0ICsxNDI2LDE0IEBAIHZvaWQgRWRpdG9yOjpzZXRD
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVu
ZGVybGluCiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgc2VuZCBhIGNvbXBvc2l0aW9uc3RhcnQg
ZXZlbnQgb25seSB3aGVuIHRoZSBnaXZlbiB0ZXh0IGlzIG5vdCBlbXB0eSBiZWNhdXNlIHRoaXMK
ICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRvZXNuJ3QgY3JlYXRlIGEgY29tcG9zaXRpb24gbm9k
ZSB3aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LgogICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHko
KSkgewotICAgICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uc3RhcnRFdmVudCwgbV9mcmFtZS0+
ZG9tV2luZG93KCksIHRleHQpKTsKLSAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgbV9mcmFt
ZS0+ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uc3Rh
cnRFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpKTsKKyAgICAg
ICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29tcG9zaXRpb251cGRhdGVFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCks
IHRleHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgbV9mcmFtZS0+
ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
b21wb3NpdGlvbmVuZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAg
ICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21w
b3NpdGlvbmVuZEV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCk7
CiAgICAgICAgIH0KICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGlmIChl
dmVudC5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCA4YzM3OWVi
MjRhMzFlNDEwMmFkODE5Y2I5ZGU3ZTAxODljOTkxODJjLi5lN2VlYmRjNDM3NDJjNTVmMTQxMTFl
Y2QyZTIxNGE4ZTBiY2E0NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBA
IC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lv
bihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkKICAgICAgICAgUENMT0coIiAgIC1GcmFt
ZSBpcyBIVFRQUywgYW5kIGNhY2hlIGNvbnRyb2wgcHJvaGliaXRzIGNhY2hpbmcgb3Igc3Rvcmlu
ZyIpOwogICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSXNIdHRwc0FuZENhY2hlQ29udHJv
bGxlZDsKICAgICB9Ci0gICAgaWYgKGZyYW1lLT5kb21XaW5kb3coKSAmJiBmcmFtZS0+ZG9tV2lu
ZG93KCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpIHsKKyAg
ICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpICYmIGZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50
KSkgewogICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBhbiB1bmxvYWQgZXZlbnQgbGlzdGVu
ZXIiKTsKICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc1VubG9hZExpc3RlbmVyOwog
ICAgIH0KQEAgLTM0Myw3ICszNDMsNyBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29u
dGFpbmluZ1RoaXNGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgICYmICEoZG9jdW1lbnRMb2Fk
ZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmICFkb2N1bWVudExvYWRlci0+c3Vic3Rp
dHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKQogICAgICAgICAmJiAoIWZyYW1lTG9h
ZGVyLT5zdWJmcmFtZUxvYWRlcigpLT5jb250YWluc1BsdWdpbnMoKSB8fCBmcmFtZS0+cGFnZSgp
LT5zZXR0aW5ncygpLT5wYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoKSkKICAgICAgICAgJiYgKCFk
b2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSB8fCAoIWRvY3VtZW50TG9hZGVyLT5y
ZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpICYmICFkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSkpCi0gICAgICAgICYm
ICghZnJhbWUtPmRvbVdpbmRvdygpIHx8ICFmcmFtZS0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCisgICAgICAgICYmICghZG9jdW1lbnQt
PmRvbVdpbmRvdygpIHx8ICFkb2N1bWVudC0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAg
ICAgICAgJiYgIURhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhkb2N1bWVudCkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDliMmE1OTE1
YzQ3Y2M5YjA3ZTBhNDhiZTRkZDNlNmUzMWRjYjZkOWEuLjdjM2JiNjFiMWRmZWU0ZmUxZTA4ZGE2
YjY4ZDNmMmY1OTQxMDkwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKQEAgLTI1Miw3ICsyNTIsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRl
cmFjdGl2ZWx5KEV2ZW50KiBldmVudCkKICAgICAgICAgfQogICAgIH0KICAgICAvLyBXYXJuIGFi
b3V0IGFsbCBvZiB1bmZvY3VzYWJsZSBjb250cm9scy4KLSAgICBpZiAoRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgeworICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogdW5oYW5k
bGVkQXNzb2NpYXRlZEVsZW1lbnQgPSB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHNbaV0uZ2V0KCk7
CiAgICAgICAgICAgICBIVE1MRWxlbWVudCogdW5oYW5kbGVkID0gdG9IVE1MRWxlbWVudCh1bmhh
bmRsZWRBc3NvY2lhdGVkRWxlbWVudCk7CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBIVE1MRm9y
bUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseShFdmVudCogZXZlbnQpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSgiQW4gaW52YWxpZCBm
b3JtIGNvbnRyb2wgd2l0aCBuYW1lPSclbmFtZScgaXMgbm90IGZvY3VzYWJsZS4iKTsKICAgICAg
ICAgICAgIG1lc3NhZ2UucmVwbGFjZSgiJW5hbWUiLCB1bmhhbmRsZWRBc3NvY2lhdGVkRWxlbWVu
dC0+bmFtZSgpKTsKLSAgICAgICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5h
ZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAg
IGRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApp
bmRleCA2YjcwNjYwMmQ0N2IzOGFhOWQ2Y2NhMzk4NGM5NzY1MTcyOGFjNzQxLi41NjBmMzhiOTY3
OWNhMjI3YzQ2MjY2MGY5YjRmMjljZmRhZDBkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIERvY3VtZW50KiBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnREb2N1bWVudCgpIGNvbnN0CiAKIERPTVdpbmRv
dyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9tV2luZG93KCkgOiAwOwor
ICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSA6IDA7CiB9CiAKIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRTYW5k
Ym94RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMWVlNjIxNWZkMDMyY2Ri
NWUxOTE4ODkzNTQ3ZGQwYjA0OGNlMzJhYy4uMzRhMGU1N2I1ZGZlYWUzNDQzOGViYmVmODBjYzli
MWUxODZjMzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MTY5LDEzICs1MTY5LDE0IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpwcmludFdhcm5pbmdUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIGlmICghY2FudmFzKCkpCiAgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhN
RTogVGhpcyBnaWFudCBjYXNjYWRlIG9mIG51bGwgY2hlY2tzIHNlZW1zIGEgYml0IHBhcmFub2lk
LgogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNhbnZhcygpLT5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgRE9NV2lu
ZG93KiB3aW5kb3cgPSBmcmFtZS0+ZG9tV2luZG93KCk7CisgICAgRE9NV2luZG93KiB3aW5kb3cg
PSBkb2N1bWVudC0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVy
bjsKICAgICBDb25zb2xlKiBjb25zb2xlID0gd2luZG93LT5jb25zb2xlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmlu
ZGV4IDkzOTk5ZDFmYmIwYmE2ODE5NmUyZTU5YTg5N2JiOTBmYmZlNzhlNDcuLjkwYTBhOWU2MDkw
ZTBjMmMzOWQ3ODY5ZjQwMmQ0MzJiM2EyYmY2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xNTYsNyArMTU2
LDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0b3JhZ2Uq
IHN0b3JhZ2UpCiAgICAgQVNTRVJUKHN0b3JhZ2UpOwogICAgIEZyYW1lKiBmcmFtZSA9IHN0b3Jh
Z2UtPmZyYW1lKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBpc0xvY2Fs
U3RvcmFnZSA9IChmcmFtZS0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZShlYykgPT0gc3RvcmFn
ZSAmJiAhZWMpOworICAgIGJvb2wgaXNMb2NhbFN0b3JhZ2UgPSAoZnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoZWMpID09IHN0b3JhZ2UgJiYgIWVjKTsKICAgICBy
ZXR1cm4gc3RvcmFnZUlkKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBpc0xv
Y2FsU3RvcmFnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CmluZGV4IDMyZmYyOGMzMjI1MzA0ZWJiNjEwNGNiNzMwMGE0MmY0N2JkYzQyNTUuLmJjNzQ0NDAy
ZjViYjE3NjAyY2JlMjkwYmYxM2NjODhjMDk4YzlkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNoZWNrTG9hZENvbXBsZXRlKCkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCh0aGlz
ID09IGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOwogCi0gICAgaWYgKERP
TVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSkKKyAgICBpZiAo
RE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkKICAg
ICAgICAgd2luZG93LT5maW5pc2hlZExvYWRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggMTRiNmY0MzU5OTY2YzUzMDNiYzc1OWMxODFmZmI5
M2Q3NWJkN2Q4MS4uZDdiNWI0ODg3ZGNhYmZjOWY1YjIxNmMyZWQ0ODZmYjkzNzNlN2M3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcg
QEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgS1VSTCYgdXJsUmVmZXJlbmNlLCBi
b29sIGRpc3BhdGNoLCBEb2N1bWVudCogb3cKICAgICB9CiAKICAgICAvLyBGSVhNRTogRE9NV2lu
ZG93IHNob3VsZCBnZXQgdGhlIFVSTCBmcm9tIHRoZSBkb2N1bWVudCBpdHNlbGYuCi0gICAgbV9m
cmFtZS0+ZG9tV2luZG93KCktPnNldFVSTChkb2N1bWVudC0+dXJsKCkpOworICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRVUkwoZG9jdW1lbnQtPnVybCgpKTsKIAogICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5kaWRCZWdpbkRvY3VtZW50KGRpc3BhdGNoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggM2MwNDVjMmIwMTIxYzAwNjUyYmJkOGVm
ZDA5YmJhZDU0MDc4NzI4Ny4uNTYyYjRkYzFkOTA4MjI5Njk3YjMyOTM5MjJkNmIxNTYyNjgyM2Zk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zNTcsMTAgKzM1Nywx
MCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxv
YWRFdmVudFBvbGljeSkKICAgICAgICAgICAgICAgICBOb2RlKiBjdXJyZW50Rm9jdXNlZE5vZGUg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwogICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50Rm9jdXNlZE5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c2Vk
Tm9kZS0+YWJvdXRUb1VubG9hZCgpOwotICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb21X
aW5kb3coKSAmJiBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9PSBOb0Rpc21p
c3NhbCkgeworICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKSAmJiBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9PSBOb0Rpc21pc3Nh
bCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodW5sb2FkRXZlbnRQb2xpY3kgPT0gVW5sb2Fk
RXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPSBQYWdlSGlkZURpc21pc3NhbDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2
ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucGFnZWhpZGVFdmVu
dCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSksIG1fZnJhbWUtPmRvY3VtZW50
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCktPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5wYWdlaGlkZUV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSwg
bV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IHVubG9hZEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKQEAgLTM3MywxMCAr
MzczLDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5
IHVubG9hZEV2ZW50UG9saWN5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50
TG9hZFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRMb2FkZXItPnRpbWluZygpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0aW1pbmctPm5hdmlnYXRpb25TdGFydCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1pbmctPm1hcmtVbmxvYWRFdmVudFN0YXJ0KCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmRpc3Bh
dGNoRXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kb2N1bWVudCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKS0+ZGlzcGF0Y2hFdmVudCh1bmxvYWRFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nLT5tYXJrVW5sb2FkRXZlbnRFbmQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2Fk
RXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkID0gTm9EaXNtaXNzYWw7CkBAIC00NjQsNyArNDY0LDcgQEAgYm9vbCBGcmFtZUxv
YWRlcjo6ZGlkT3BlblVSTCgpCiAgICAgLy8gaXRzIGZyYW1lIGlzIG5vdCBpbiBhIGNvbnNpc3Rl
bnQgc3RhdGUgZm9yIHJlbmRlcmluZywgc28gYXZvaWQgc2V0SlNTdGF0dXNCYXJUZXh0CiAgICAg
Ly8gc2luY2UgaXQgbWF5IGNhdXNlIGNsaWVudHMgdG8gYXR0ZW1wdCB0byByZW5kZXIgdGhlIGZy
YW1lLgogICAgIGlmICghbV9zdGF0ZU1hY2hpbmUuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCgpKSB7Ci0gICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0aW5n
RE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0U3RhdHVz
KFN0cmluZygpKTsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVsdFN0YXR1cyhTdHJpbmco
KSk7CiAgICAgICAgIH0KQEAgLTg4Niw3ICs4ODYsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpjaGVj
a0lmRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3Qg
SwogICAgIFN0cmluZyBtZXNzYWdlID0gKGFsbG93ZWQgPyBlbXB0eVN0cmluZygpIDogIltibG9j
a2VkXSAiKSArICJUaGUgcGFnZSBhdCAiICsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCkgKyAiIGRpc3BsYXllZCBpbnNlY3VyZSBjb250ZW50IGZyb20gIiArIHVy
bC5zdHJpbmcoKSArICIuXG4iOwogICAgICAgICAKLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+
Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
V2FybmluZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgaWYgKGFs
bG93ZWQpCiAgICAgICAgIG1fY2xpZW50LT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CkBA
IC05MDQsNyArOTA0LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29u
dGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYKICAgICBTdHJpbmcgbWVz
c2FnZSA9IChhbGxvd2VkID8gZW1wdHlTdHJpbmcoKSA6ICJbYmxvY2tlZF0gIikgKyAiVGhlIHBh
Z2UgYXQgIiArCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpICsg
IiByYW4gaW5zZWN1cmUgY29udGVudCBmcm9tICIgKyB1cmwuc3RyaW5nKCkgKyAiLlxuIjsKICAg
ICAgICAKLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhU
TUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgbWVz
c2FnZSk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgaWYgKGFsbG93ZWQpCiAgICAgICAgIG1fY2xpZW50
LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQoY29udGV4dCwgdXJsKTsKQEAgLTEzNzEsNyArMTM3MSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm90IGFsbG93ZWQgdG8g
bG9hZCBsb2NhbCByZXNvdXJjZTogIiArIHVybCk7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJOb3QgYWxsb3dlZCB0byBsb2FkIGxvY2FsIHJl
c291cmNlOiAiICsgdXJsKTsKIH0KIAogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBGcmFtZUxvYWRl
cjo6aW5pdGlhbFJlcXVlc3QoKSBjb25zdApAQCAtMTkwMiw3ICsxOTAyLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3JlKCkKICAgICAKICAgICAvLyBEZWxl
dGUgb2xkIHN0YXR1cyBiYXIgbWVzc2FnZXMgKGlmIGl0IF93YXNfIGFjdGl2YXRlZCBvbiBsYXN0
IFVSTCkuCiAgICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKLSAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0g
bV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSkgeworICAgICAgICBpZiAoRE9NV2luZG93KiB3
aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkgewogICAgICAgICAgICAg
d2luZG93LT5zZXRTdGF0dXMoU3RyaW5nKCkpOwogICAgICAgICAgICAgd2luZG93LT5zZXREZWZh
dWx0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgfQpAQCAtMTk1MCw3ICsxOTUwLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgIG1f
ZnJhbWUtPnNldERvY3VtZW50KGRvY3VtZW50KTsKICAgICBkb2N1bWVudC0+ZG9tV2luZG93KCkt
PnJlc3VtZUZyb21QYWdlQ2FjaGUoKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgYmUg
bmVjZXNzYXJ5IG5vdyB0aGF0IERvY3VtZW50IG93bnMgdGhlIERPTVdpbmRvdy4KLSAgICBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+c2V0VVJMKGRvY3VtZW50LT51cmwoKSk7CisgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnNldFVSTChkb2N1bWVudC0+dXJsKCkpOwogCiAgICAg
dXBkYXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKIApAQCAtMjY5NCw3ICsyNjk0LDcgQEAgYm9v
bCBGcmFtZUxvYWRlcjo6c2hvdWxkQ2xvc2UoKQogCiBib29sIEZyYW1lTG9hZGVyOjpmaXJlQmVm
b3JlVW5sb2FkRXZlbnQoQ2hyb21lKiBjaHJvbWUpCiB7Ci0gICAgRE9NV2luZG93KiBkb21XaW5k
b3cgPSBtX2ZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpOworICAgIERPTVdpbmRvdyogZG9tV2lu
ZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFkb21XaW5k
b3cpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDc0YWEzYWZjMTEyNzYwYjc2MTU3ZWY2MWEzYmQyMDAx
N2Y0NGEwYTcuLjBiMDY1ZGQ4MzNjMDhkZmY5OTVkNGI3MDgwNGVhOTJjYTQxMTc3ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNjcsNyAr
MzY3LDcgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByKQogICAgICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPnNo
b3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRlbnQsIHIudXJsKCkpKSB7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVP
cHRpb25zRGVuaWVkKG1fZnJhbWUuZ2V0KCksIGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIo
KSwgcik7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1l
c3NhZ2UsICgiUmVmdXNlZCB0byBkaXNwbGF5IGRvY3VtZW50IGJlY2F1c2UgZGlzcGxheSBmb3Ji
aWRkZW4gYnkgWC1GcmFtZS1PcHRpb25zLlxuIikpOwotICAgICAgICAgICAgbV9mcmFtZS0+ZG9t
V2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOworICAgICAgICAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShK
U01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29s
ZU1lc3NhZ2UpOwogCiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKaW5kZXggMmRmZTM0Y2FjMmJiMTJlODg2NTFkMzI4NDU4YTU2NzAzMTBk
ZDVlNi4uYjRmMTQ3MzIzYjIyZTcxNDNhYTNjNDcyZjAyYTdjZjc2NjUwNmVjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
YWJvcnQoRnJhbWUqIGZyYW1lKQogICAgIGlmIChtX2NvbXBsZXRpb25UeXBlICE9IE5vbmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFRpcE1lc3NhZ2VMZXZl
bCwgIkFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQuIik7Cisg
ICAgZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
T3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgVGlwTWVzc2FnZUxldmVsLCAiQXBw
bGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4iKTsKICAgICBjYWNo
ZVVwZGF0ZUZhaWxlZCgpOwogfQogCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBj
b25zdCBSZXMKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIg
fHwgcmVzcG9uc2UudXJsKCkgIT0gbV9jdXJyZW50SGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwo
KSkgewogICAgICAgICBpZiAoKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkV4cGxp
Y2l0KSB8fCAodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFsbGJhY2spKSB7Ci0g
ICAgICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90
aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBw
bGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgbV9jdXJyZW50SGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSArIAorICAgICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9u
IENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIG1fY3VycmVudEhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkgKyAKICAgICAgICAgICAgICAgICAoKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgLyAxMDAgIT0gMikgPyAiIGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIgOiAi
IHdhcyByZWRpcmVjdGVkLiIpKTsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVwZGF0
ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2FjaGUgZ3JvdXAgdG8gYmUgZGVsZXRlZC4KICAgICAg
ICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgZG91YmxlIGZpbmkKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGJyZWFrIGVhcmxpZXIgYW5k
IHByZXZlbnQgcmVkb3dubG9hZGluZyBvbiBsYXRlciBwYWdlIGxvYWRzPwogICAgIGlmIChtX29y
aWdpblF1b3RhRXhjZWVkZWRQcmV2aW91c2x5ICYmIG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhIDwg
bV9jYWNoZUJlaW5nVXBkYXRlZC0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpKSB7CiAgICAgICAg
IG1fY3VycmVudFJlc291cmNlID0gMDsKLSAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1
c2Ugc2l6ZSBxdW90YSB3YXMgZXhjZWVkZWQuIik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1
cGRhdGUgZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIpOwogICAgICAg
ICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjczLDcg
KzY3Myw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlRXJyb3ImCiAgICAgbV9wZW5kaW5nRW50cmllcy5y
ZW1vdmUodXJsKTsKIAogICAgIGlmICgodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
RXhwbGljaXQpIHx8ICh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGYWxsYmFjaykp
IHsKLSAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShP
dGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFw
cGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIHVybC5zdHJpbmcoKSAr
ICIgY291bGQgbm90IGJlIGZldGNoZWQuIik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRh
dGUgZmFpbGVkLCBiZWNhdXNlICIgKyB1cmwuc3RyaW5nKCkgKyAiIGNvdWxkIG5vdCBiZSBmZXRj
aGVkLiIpOwogICAgICAgICAvLyBOb3RlIHRoYXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1
c2UgdGhlIGNhY2hlIGdyb3VwIHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgIGNhY2hlVXBkYXRlRmFp
bGVkKCk7CiAgICAgfSBlbHNlIHsKQEAgLTcwMiwxMyArNzAyLDEzIEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpIC8gMTAwICE9IDIpIHsKLSAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBm
ZXRjaGVkLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJl
IGZldGNoZWQuIik7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAocmVzcG9uc2UudXJsKCkgIT0gbV9tYW5pZmVzdEhhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpIHsKLSAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBmZXRjaGVkLCBiZWNhdXNlIGEgcmVkaXJlY3Rpb24gd2FzIGF0dGVtcHRlZC4iKTsKKyAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBmZXRjaGVkLCBiZWNhdXNl
IGEgcmVkaXJlY3Rpb24gd2FzIGF0dGVtcHRlZC4iKTsKICAgICAgICAgY2FjaGVVcGRhdGVGYWls
ZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKIAogICAgIGlm
ICghaXNVcGdyYWRlQXR0ZW1wdCAmJiAhbV9tYW5pZmVzdFJlc291cmNlKSB7CiAgICAgICAgIC8v
IFRoZSBzZXJ2ZXIgcmV0dXJuZWQgMzA0IE5vdCBNb2RpZmllZCBldmVuIHRob3VnaCB3ZSBkaWRu
J3Qgc2VuZCBhIGNvbmRpdGlvbmFsIHJlcXVlc3QuCi0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3Vs
ZCBub3QgYmUgZmV0Y2hlZCBiZWNhdXNlIG9mIGFuIHVuZXhwZWN0ZWQgMzA0IE5vdCBNb2RpZmll
ZCBzZXJ2ZXIgcmVzcG9uc2UuIik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBj
b3VsZCBub3QgYmUgZmV0Y2hlZCBiZWNhdXNlIG9mIGFuIHVuZXhwZWN0ZWQgMzA0IE5vdCBNb2Rp
ZmllZCBzZXJ2ZXIgcmVzcG9uc2UuIik7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NTQsNyArNzU0LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgTWFuaWZlc3QgbWFu
aWZlc3Q7CiAgICAgaWYgKCFwYXJzZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RS
ZXNvdXJjZS0+ZGF0YSgpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLT5zaXpl
KCksIG1hbmlmZXN0KSkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcs
IGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZv
ciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCi0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3Qg
YmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Iik7CisgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
T3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJB
cHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0
YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Iik7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAg
Ly8gV2UgcmFuIG91dCBvZiBzcGFjZSBmb3IgdGhpcyBvcmlnaW4uIEZhbGwgZG93biB0byB0aGUg
bm9ybWFsIGVycm9yIGhhbmRsaW5nCiAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgcmVjb3JkaW5n
IHRoaXMgc3RhdGUuCiAgICAgICAgICAgICAgICAgbV9vcmlnaW5RdW90YUV4Y2VlZGVkUHJldmlv
dXNseSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2Ug
c2l6ZSBxdW90YSB3YXMgZXhjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENh
Y2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2Ugc2l6ZSBxdW90YSB3YXMgZXhjZWVkZWQuIik7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChmYWlsdXJlUmVhc29uID09IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpUb3RhbFF1b3RhUmVhY2hlZCAmJiAhbV9jYWxsZWRSZWFjaGVkTWF4
QXBwQ2FjaGVTaXplKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA2OWZmYjkyOGZmNDVlMWU3ZjJmZjRmYjZhNDgy
NWFlNTI4ZDdkNmQwLi43YjU2NDY1Mzg2NjZjM2ZlNDFhMzViZmIwMDYzODJhOThhYjMzOTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgICAgICBt
ZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nKCkgKyAi
IGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIG1fZG9jdW1lbnQtPnVybCgpLnN0cmluZygpICsgIi4g
RG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIjsKIAogICAgIC8vIEZJ
WE1FOiBwcm92aWRlIGxpbmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMLgotICAgIGZyYW1lKCktPmRv
bVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworICAgIGZyYW1lKCktPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOwogfQog
CiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhib29sIGVuYWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAzZTYxMDAzYTU5ZTkxMGZjMGYwZTBi
ODBmNjhkNTEyNmQxZTZlNWNhLi5kMzYyM2RkMWNkYzJmOTNhYzU3OGJkYmJmZTk1MTBjMGVhOWQ2
ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC01OTQsNyArNTk0LDcgQEAgdm9p
ZCBET01XaW5kb3c6OmNsZWFyRE9NV2luZG93UHJvcGVydGllcygpCiAKIGJvb2wgRE9NV2luZG93
Ojppc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX2Zy
YW1lICYmIG1fZnJhbWUtPmRvbVdpbmRvdygpID09IHRoaXM7CisgICAgcmV0dXJuIG1fZnJhbWUg
JiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgPT0gdGhpczsKIH0KIAogI2lmIEVO
QUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBET01XaW5kb3cq
IERPTVdpbmRvdzo6c2VsZigpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiBtX2ZyYW1lLT5kb21XaW5kb3coKTsKKyAgICByZXR1cm4gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiB9CiAKIERPTVdpbmRvdyogRE9NV2luZG93
OjpvcGVuZXIoKSBjb25zdApAQCAtMTI3Miw3ICsxMjcyLDcgQEAgRE9NV2luZG93KiBET01XaW5k
b3c6Om9wZW5lcigpIGNvbnN0CiAgICAgaWYgKCFvcGVuZXIpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgcmV0dXJuIG9wZW5lci0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJuIG9wZW5lci0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCk7CiB9CiAKIERPTVdpbmRvdyogRE9NV2luZG93OjpwYXJlbnQo
KSBjb25zdApAQCAtMTI4Miw5ICsxMjgyLDkgQEAgRE9NV2luZG93KiBET01XaW5kb3c6OnBhcmVu
dCgpIGNvbnN0CiAKICAgICBGcmFtZSogcGFyZW50ID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQo
KTsKICAgICBpZiAocGFyZW50KQotICAgICAgICByZXR1cm4gcGFyZW50LT5kb21XaW5kb3coKTsK
KyAgICAgICAgcmV0dXJuIHBhcmVudC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpOwogfQogCiBET01XaW5kb3cqIERPTVdpbmRvdzo6dG9wKCkgY29uc3QK
QEAgLTEyOTYsNyArMTI5Niw3IEBAIERPTVdpbmRvdyogRE9NV2luZG93Ojp0b3AoKSBjb25zdAog
ICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+
dHJlZSgpLT50b3AoKS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+
dG9wKCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogfQogCiBEb2N1bWVudCogRE9NV2luZG93
Ojpkb2N1bWVudCgpIGNvbnN0CkBAIC0xODIzLDExICsxODIzLDExIEBAIEZyYW1lKiBET01XaW5k
b3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3Ry
aW5nJiBmcmFtCiAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5zZXRPcGVuZXIob3BlbmVyRnJhbWUp
OwogICAgIG5ld0ZyYW1lLT5wYWdlKCktPnNldE9wZW5lZEJ5RE9NKCk7CiAKLSAgICBpZiAobmV3
RnJhbWUtPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywg
Y29tcGxldGVkVVJMKSkKKyAgICBpZiAobmV3RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKICAg
ICAgICAgcmV0dXJuIG5ld0ZyYW1lOwogCiAgICAgaWYgKGZ1bmN0aW9uKQotICAgICAgICBmdW5j
dGlvbihuZXdGcmFtZS0+ZG9tV2luZG93KCksIGZ1bmN0aW9uQ29udGV4dCk7CisgICAgICAgIGZ1
bmN0aW9uKG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgZnVuY3Rpb25Db250ZXh0
KTsKIAogICAgIGlmIChjcmVhdGVkKQogICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCktPmNoYW5n
ZUxvY2F0aW9uKGFjdGl2ZVdpbmRvdy0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMLCBy
ZWZlcnJlciwgZmFsc2UsIGZhbHNlKTsKQEAgLTE4NzUsMTEgKzE4NzUsMTEgQEAgUGFzc1JlZlB0
cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljU3RyaW4KIAogICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGZpcnN0RnJhbWUt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CiAKLSAgICAgICAgaWYgKHRhcmdl
dEZyYW1lLT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3cs
IGNvbXBsZXRlZFVSTCkpCi0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUtPmRvbVdpbmRv
dygpOworICAgICAgICBpZiAodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5p
c0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKKyAgICAg
ICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAKICAg
ICAgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0
RnJhbWUtPmRvbVdpbmRvdygpOworICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKTsKIAogICAgICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBG
aXJlZm94IHVzZXMgdGhlIGZpcnN0IHdpbmRvdyByYXRoZXIgdGhhbiB0aGUgYWN0aXZlIHdpbmRv
dyB0bwogICAgICAgICAvLyBkZXRlcm1pbmUgdGhlIG91dGdvaW5nIHJlZmVycmVyLiBXZSByZXBs
aWNhdGUgdGhhdCBiZWhhdmlvciBoZXJlLgpAQCAtMTg5MCw3ICsxODkwLDcgQEAgUGFzc1JlZlB0
cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljU3RyaW4KICAgICAgICAgICAgIGZpcnN0RnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCksCiAgICAgICAgICAgICBsb2NrSGlzdG9yeSwKICAgICAgICAgICAgIGZhbHNl
KTsKLSAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb21XaW5kb3coKTsKKyAgICAgICAgcmV0
dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICB9CiAKICAgICBX
aW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcyh3aW5kb3dGZWF0dXJlc1N0cmluZyk7CkBAIC0x
OTA0LDcgKzE5MDQsNyBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVuKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogICAgIHdpbmRvd0ZlYXR1
cmVzLndpZHRoID0gd2luZG93UmVjdC53aWR0aCgpOwogCiAgICAgRnJhbWUqIHJlc3VsdCA9IGNy
ZWF0ZVdpbmRvdyh1cmxTdHJpbmcsIGZyYW1lTmFtZSwgd2luZG93RmVhdHVyZXMsIGFjdGl2ZVdp
bmRvdywgZmlyc3RGcmFtZSwgbV9mcmFtZSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC0+
ZG9tV2luZG93KCkgOiAwOworICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpIDogMDsKIH0KIAogdm9pZCBET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmlu
ZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAKaW5kZXggYWQwNDY5
ODA2Zjk3Y2YwNDlkZWRlOTE2ZWY4ZjU5ZTI5YTY3MDE4ZC4uNmYxMDlmMWVkOGZjMTQ4MzcyMGU3
YTk1MDQyN2FkZGQzYTQ1MjA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3dQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9w
ZXJ0eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5o
IgogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw3ICs0MSw3IEBAIERP
TVdpbmRvd1Byb3BlcnR5OjpET01XaW5kb3dQcm9wZXJ0eShGcmFtZSogZnJhbWUpCiAgICAgLy8g
U2VlIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIGZvciB0aGUgcmVj
aXBlLgogICAgIC8vIFdlIHNob3VsZCBmaXggdGhhdC4gIDxyZGFyOi8vcHJvYmxlbS8xMTU2NzEz
Mj4KICAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBtX2Fzc29jaWF0ZWRET01XaW5kb3cgPSBt
X2ZyYW1lLT5kb21XaW5kb3coKTsKKyAgICAgICAgbV9hc3NvY2lhdGVkRE9NV2luZG93ID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgICAgIG1fYXNzb2NpYXRlZERPTVdp
bmRvdy0+cmVnaXN0ZXJQcm9wZXJ0eSh0aGlzKTsKICAgICB9CiB9CkBAIC03MCw3ICs3MSw3IEBA
IHZvaWQgRE9NV2luZG93UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFt
ZSogZnJhbWUpCiAgICAgLy8gYmVlbiBkaXNjb25uZWN0ZWQgZnJvbSBpdHMgRnJhbWUgaW4gdGhl
IGZpcnN0IHBsYWNlIGFuZCBpdCBzaG91bGQgc3RpbGwgaGF2ZSBhbiBhc3NvY2lhdGVkIERPTVdp
bmRvdy4KICAgICBBU1NFUlQoZnJhbWUpOwogICAgIEFTU0VSVCghbV9mcmFtZSk7Ci0gICAgQVNT
RVJUKGZyYW1lLT5kb21XaW5kb3coKSA9PSBtX2Fzc29jaWF0ZWRET01XaW5kb3cpOworICAgIEFT
U0VSVChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgPT0gbV9hc3NvY2lhdGVkRE9NV2lu
ZG93KTsKIAogICAgIG1fZnJhbWUgPSBmcmFtZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggYjgyMDU3NTFiNDQ3MmZjM2I3ZmM5M2RkZDhkN2ZmYTIzYTkwYzhi
Yy4uYzc0NGMxODllYmRiZjRmMGE0MGI4YTk5ZDhlNzlhMjVkYjBhNmQ2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBE
cmFnRGF0YSogZHJhZwogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWlu
VGV4dChpbm5lckZyYW1lKTsKICAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3Io
KS0+ZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2Fy
ZXRQb3NpdGlvbigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICByZXR1cm4gdGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5k
b21XaW5kb3coKSwgdGV4dCksIGVjKTsKKyAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKSwgdGV4dCksIGVjKTsKIH0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0
RHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggNDg2ZDRiZmNkYjlkYzcwZjI5ZjUwYTM5OWFiZjkxN2Y2MDIwZjYwNy4uM2RmZmI5ZmE0
ZjZkMGUxMDVhNzRkYjY4MWE2YzRmMTdjZGZkMTBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMzI5Miw3ICszMjkyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXZlbnQqIHVuZGVybHlpbmdFdmUK
ICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKQogICAgICAgICB2aWV3
LT5yZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7CiAKLSAgICBSZWZQdHI8VGV4dEV2ZW50PiBl
dmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1
dFR5cGUpOworICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGUo
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQsIGlucHV0VHlwZSk7CiAgICAg
ZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMzhiZWE3NTA1OGI4ZDBkMmM5MDI4
YmZkMzQ0NzBlOTc2MjBkY2E4NS4uMmFiYzFmZDlkYzFlOTlkZjQyMGU3YjczYjFkNjllMjUyYjM1
Y2U2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTY4MCwxMiArNjgwLDYgQEAgdm9pZCBGcmFt
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2xvYWRlcik7CiB9CiAKLURP
TVdpbmRvdyogRnJhbWU6OmRvbVdpbmRvdygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fZG9jLT5k
b21XaW5kb3coKSk7Ci0gICAgcmV0dXJuIG1fZG9jLT5kb21XaW5kb3coKTsKLX0KLQogdm9pZCBG
cmFtZTo6d2lsbERldGFjaFBhZ2UoKQogewogICAgIGlmIChGcmFtZSogcGFyZW50ID0gdHJlZSgp
LT5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCAzMGU2ZDVjZDdlYzJkNGNmZjQxOWJkOGQz
MjY1Mjg1NWJkYmJmMmQzLi4zYTUyOTU2YTQ1M2I4Y2E2MjU0NjMyOWMxOTA3YmE4OTNhOTI4NzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xMjgsMTAgKzEyOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoYm9vbCBzaG93RGVi
dWdJbmZvID0gZmFsc2UpIGNvbnN0OwogCi0gICAgICAgIC8vIEZJWE1FOiBDYWxsZXJzIHNob3Vs
ZCB1c2UgZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgZGlyZWN0bHkuCi0gICAgICAgIERPTVdpbmRv
dyogZG9tV2luZG93KCkgY29uc3Q7Ci0gICAgICAgIERPTVdpbmRvdyogZXhpc3RpbmdET01XaW5k
b3coKSB7IHJldHVybiBkb21XaW5kb3coKTsgfQotCiAgICAgICAgIHN0YXRpYyBGcmFtZSogZnJh
bWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0Kik7CiAKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdz
KCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmluZGV4IGRm
NmVhOGRmNTQyYjg1ZDkzYzdkMWU2ZGM1Mzk0ZjA4ZjViMDY1ZjguLmQ0NGVmZjkzMWI2ZDgwN2Ni
OTFiZTVlMDE2OTVlMDdmMmExOTM0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCkBAIC0y
NDEsNyArMjQxLDcgQEAgdm9pZCBMb2NhdGlvbjo6cmVwbGFjZShjb25zdCBTdHJpbmcmIHVybCwg
RE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmkKICAgICBpZiAoIW1fZnJhbWUp
CiAgICAgICAgIHJldHVybjsKICAgICAvLyBOb3RlOiBXZSBjYWxsIERPTVdpbmRvdzo6c2V0TG9j
YXRpb24gZGlyZWN0bHkgaGVyZSBiZWNhdXNlIHJlcGxhY2UoKSBhbHdheXMgb3BlcmF0ZXMgb24g
dGhlIGN1cnJlbnQgZnJhbWUuCi0gICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9u
KHVybCwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgTG9ja0hpc3RvcnlBbmRCYWNrRm9yd2Fy
ZExpc3QpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlv
bih1cmwsIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIExvY2tIaXN0b3J5QW5kQmFja0Zvcndh
cmRMaXN0KTsKIH0KIAogdm9pZCBMb2NhdGlvbjo6cmVsb2FkKERPTVdpbmRvdyogYWN0aXZlV2lu
ZG93KQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5kb3cq
IGFjdGl2ZVdpbmRvdykKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBjcm9zcy1v
cmlnaW4gc2VjdXJpdHkgY2hlY2sgaXMgdmFsdWFibGUuCiAgICAgLy8gV2UgYWxsb3cgb25lIHBh
Z2UgdG8gY2hhbmdlIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyLiBXaHkgYmxvY2sgYXR0ZW1wdHMg
dG8gcmVsb2FkPwogICAgIC8vIE90aGVyIGxvY2F0aW9uIG9wZXJhdGlvbnMgc2ltcGx5IGJsb2Nr
IHVzZSBvZiBKYXZhU2NyaXB0IFVSTHMgY3Jvc3Mgb3JpZ2luLgotICAgIERPTVdpbmRvdyogdGFy
Z2V0V2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7CisgICAgRE9NV2luZG93KiB0YXJnZXRX
aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWFjdGl2
ZVdpbmRvdy0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHRhcmdldFdpbmRvdy0+c2VjdXJp
dHlPcmlnaW4oKSkpIHsKICAgICAgICAgdGFyZ2V0V2luZG93LT5wcmludEVycm9yTWVzc2FnZSh0
YXJnZXRXaW5kb3ctPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZVdpbmRvdykp
OwogICAgICAgICByZXR1cm47CkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0
TG9jYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01X
aW5kb3cKICAgICBGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+ZmluZEZyYW1lRm9y
TmF2aWdhdGlvbihTdHJpbmcoKSwgYWN0aXZlV2luZG93LT5kb2N1bWVudCgpKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2Nh
dGlvbih1cmwsIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOworICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLCBhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggN2NiMzY4YjI5YWZiYjdi
ZWVhYTQ3ZTQ3Y2U2ODVmYzZmOTcxYjY0Zi4uZDQ1MDIxMDZlZTZjOWViYjRmMWU2MzZhNmY0NTg2
YzUxOWJhNWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVu
dERpc3BhdGNoZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUs
CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lcy5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBTdG9yYWdl
KiBzdG9yYWdlID0gZnJhbWVzW2ldLT5kb21XaW5kb3coKS0+c2Vzc2lvblN0b3JhZ2UoZWMpOwor
ICAgICAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lc1tpXS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCktPnNlc3Npb25TdG9yYWdlKGVjKTsKICAgICAgICAgICAgIGlmICghZWMpCiAgICAg
ICAgICAgICAgICAgZnJhbWVzW2ldLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3Rv
cmFnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgc3RvcmFnZSkpOwog
ICAgICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsCiAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lcy5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBTdG9yYWdlKiBzdG9y
YWdlID0gZnJhbWVzW2ldLT5kb21XaW5kb3coKS0+bG9jYWxTdG9yYWdlKGVjKTsKKyAgICAgICAg
ICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZXNbaV0tPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5sb2NhbFN0b3JhZ2UoZWMpOwogICAgICAgICAgICAgaWYgKCFlYykKICAgICAgICAgICAgICAg
ICBmcmFtZXNbaV0tPmRvY3VtZW50KCktPmVucXVldWVXaW5kb3dFdmVudChTdG9yYWdlRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1
ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBzdG9yYWdlKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggMTUy
Y2U4YmI3NTljMWVjNjQzM2ZkYThkNTc4NzY2MTg1MDNmYzI2Ny4uY2FjMWFlYTA3ZTA5MGQ3NGUy
NWVhMzQ2MDA5ZjI1YzdkNDY4MGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTE5Niw4ICsxOTYsOCBAQCBzdGF0aWMgaW50IHBhcnNlckxp
bmVOdW1iZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBzdGF0aWMgdm9pZCByZXBvcnRNZXNzYWdl
KERvY3VtZW50KiBkb2N1bWVudCwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQotICAg
ICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgbWVzc2FnZSwgZG9jdW1lbnQtPmRvY3VtZW50
VVJJKCksIHBhcnNlckxpbmVOdW1iZXIoZG9jdW1lbnQpKTsKKyAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCkpCisgICAgICAgIGRvY3VtZW50LT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIGxldmVsLCBtZXNzYWdlLCBkb2N1
bWVudC0+ZG9jdW1lbnRVUkkoKSwgcGFyc2VyTGluZU51bWJlcihkb2N1bWVudCkpOwogfQogCiB2
b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0V2FybmluZyhjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhz
bHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAppbmRl
eCBhMThiN2IxNjcwZTM1NDk4YWRiMjUyYjYyMzVjNjc2MjU4ZTUxODIyLi4wYjgzNDBjZDk1Y2Fl
YmVmZjhlMTgxZjVhMTM1ZjkxY2MwZWMzNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xT
dHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTE0NSw4ICsxNDUsOCBAQCBib29sIFhTTFN0eWxlU2hl
ZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIG1fc3R5bGVzaGVldERv
Y1Rha2VuID0gZmFsc2U7CiAKICAgICBDb25zb2xlKiBjb25zb2xlID0gMDsKLSAgICBpZiAoRnJh
bWUqIGZyYW1lID0gb3duZXJEb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICBjb25zb2xlID0g
ZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCk7CisgICAgaWYgKG93bmVyRG9jdW1lbnQoKS0+
ZnJhbWUoKSkKKyAgICAgICAgY29uc29sZSA9IG93bmVyRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkt
PmNvbnNvbGUoKTsKIAogICAgIFhNTERvY3VtZW50UGFyc2VyU2NvcGUgc2NvcGUoY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKSwgWFNMVFByb2Nlc3Nvcjo6Z2VuZXJpY0Vycm9yRnVuYywgWFNMVFByb2Nl
c3Nvcjo6cGFyc2VFcnJvckZ1bmMsIGNvbnNvbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCAwNzZhODUyZDA2ZDgzNzEwMzc2MjI2NDViMDEx
OTQ1MmVjYmUyNGQ0Li5lMjFjODI3YzI1ZGJjNWVmZDMxYmU3MDVmOWYzNmY1MmRlNTQ4MjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEzOCw4
ICsxMzgsOCBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciog
dXJpLAogICAgICAgICB9CiAKICAgICAgICAgQ29uc29sZSogY29uc29sZSA9IDA7Ci0gICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBnbG9iYWxQcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3du
ZXJEb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgY29uc29sZSA9IGZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpOworICAgICAgICBpZiAoZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHls
ZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIGNvbnNvbGUg
PSBnbG9iYWxQcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpOwogICAgICAgICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKGNv
bnNvbGUsIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKTsKICAgICAgICAgeG1sU2V0R2Vu
ZXJpY0Vycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vzc29yOjpnZW5lcmljRXJyb3JGdW5jKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcAppbmRleCBjMGFiNGQ2OTMxN2Q1
YzMxYzM2Y2I0YWEwM2RiZTcwNmMxNTNhOTk4Li5hNjdjNWZkZTc2ZmNjNTY4Y2UzYzRjNjhjNjEw
NjBkNDBiYjkzMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
clF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcApAQCAt
ODMsOSArODMsOCBAQCB2b2lkIFhTTFRNZXNzYWdlSGFuZGxlcjo6aGFuZGxlTWVzc2FnZShRdE1z
Z1R5cGUgdHlwZSwgY29uc3QgUVN0cmluZyYgZGVzY3JpcHRpbwogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBDb25zb2xlKiBjb25zb2xlID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+ZG9tV2lu
ZG93KCktPmNvbnNvbGUoKTsKLSAgICBjb25zb2xlLT5hZGRNZXNzYWdlKFhNTE1lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2VMb2NhdGlvbi51cmkoKS50b1N0cmluZygpLCBzb3VyY2VMb2NhdGlvbi5s
aW5lKCkpOworICAgIENvbnNvbGUqIGNvbnNvbGUgPSBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+
Y29uc29sZSgpOworICAgIGNvbnNvbGUtPmFkZE1lc3NhZ2UoWE1MTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIGxldmVsLCBkZXNjcmlwdGlvbiwgc291cmNlTG9jYXRpb24udXJpKCkudG9T
dHJpbmcoKSwgc291cmNlTG9jYXRpb24ubGluZSgpKTsKIH0KIAogY2xhc3MgWFNMVFVyaVJlc29s
dmVyIDogcHVibGljIFFBYnN0cmFjdFVyaVJlc29sdmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRC
bGFja0JlcnJ5LmNwcAppbmRleCBiMGRhZTYwOTc3ZjQzOTdjYWY1Zjg1YTIxY2UwNTFhYjJhYzgw
YTI0Li4wOGMxMWRkMzkyNDBjZDM1YjRhM2JkZWI2NDJmMTc2NmQwMmYzMGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC03OCwxMiArNzgsOSBAQCB1c2luZyBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OldpbmRvdzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgQ1N0cmluZyBmcmFtZU9yaWdpbihGcmFtZSogZnJhbWUpCitzdGF0aWMgQ1N0
cmluZyB0b09yaWdpblN0cmluZyhGcmFtZSogZnJhbWUpCiB7Ci0gICAgRE9NV2luZG93KiB3aW5k
b3cgPSBmcmFtZS0+ZG9tV2luZG93KCk7Ci0gICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdp
bmRvdy0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gb3JpZ2lu
LT50b1N0cmluZygpLmxhdGluMSgpOwotICAgIHJldHVybiBsYXRpbk9yaWdpbjsKKyAgICByZXR1
cm4gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkubGF0aW4x
KCk7CiB9CiAKIENocm9tZUNsaWVudEJsYWNrQmVycnk6OkNocm9tZUNsaWVudEJsYWNrQmVycnko
V2ViUGFnZVByaXZhdGUqIHBhZ2VQcml2YXRlKQpAQCAtMTExLDcgKzEwOCw3IEBAIHZvaWQgQ2hy
b21lQ2xpZW50QmxhY2tCZXJyeTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBtZXNzCiAjZW5kaWYKIAogICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVz
dGVkRXZlbnRMb29wKCk7Ci0gICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZyYW1lT3JpZ2luKGZy
YW1lKTsKKyAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gdG9PcmlnaW5TdHJpbmcoZnJhbWUpOwog
ICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQobWVzc2Fn
ZS5jaGFyYWN0ZXJzKCksIG1lc3NhZ2UubGVuZ3RoKCksIGxhdGluT3JpZ2luLmRhdGEoKSwgbGF0
aW5PcmlnaW4ubGVuZ3RoKCkpOwogfQogCkBAIC0xMjMsNyArMTIwLDcgQEAgYm9vbCBDaHJvbWVD
bGllbnRCbGFja0JlcnJ5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgbWUKICNlbmRpZgogCiAgICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRF
dmVudExvb3AoKTsKLSAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gZnJhbWVPcmlnaW4oZnJhbWUp
OworICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSB0b09yaWdpblN0cmluZyhmcmFtZSk7CiAgICAg
cmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSht
ZXNzYWdlLmNoYXJhY3RlcnMoKSwgbWVzc2FnZS5sZW5ndGgoKSwgbGF0aW5PcmlnaW4uZGF0YSgp
LCBsYXRpbk9yaWdpbi5sZW5ndGgoKSk7CiB9CiAKQEAgLTEzNyw3ICsxMzQsNyBAQCBib29sIENo
cm9tZUNsaWVudEJsYWNrQmVycnk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIG1lcwogI2VuZGlmCiAKICAgICBUaW1lckJhc2U6OmZpcmVUaW1lcnNJbk5l
c3RlZEV2ZW50TG9vcCgpOwotICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSBmcmFtZU9yaWdpbihm
cmFtZSk7CisgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3RyaW5nKGZyYW1lKTsK
ICAgICBXZWJTdHJpbmcgY2xpZW50UmVzdWx0OwogICAgIGlmIChtX3dlYlBhZ2VQcml2YXRlLT5t
X2NsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdChtZXNzYWdlLmNoYXJhY3RlcnMoKSwgbWVzc2Fn
ZS5sZW5ndGgoKSwgZGVmYXVsdFZhbHVlLmNoYXJhY3RlcnMoKSwgZGVmYXVsdFZhbHVlLmxlbmd0
aCgpLCBsYXRpbk9yaWdpbi5kYXRhKCksIGxhdGluT3JpZ2luLmxlbmd0aCgpLCBjbGllbnRSZXN1
bHQpKSB7CiAgICAgICAgIHJlc3VsdCA9IGNsaWVudFJlc3VsdDsKQEAgLTM4Niw3ICszODMsNyBA
QCBib29sIENocm9tZUNsaWVudEJsYWNrQmVycnk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCiAjZW5kaWYKIAogICAgIFRpbWVyQmFzZTo6ZmlyZVRp
bWVyc0luTmVzdGVkRXZlbnRMb29wKCk7Ci0gICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZyYW1l
T3JpZ2luKGZyYW1lKTsKKyAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gdG9PcmlnaW5TdHJpbmco
ZnJhbWUpOwogICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+cnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKG1lc3NhZ2UuY2hhcmFjdGVycygpLCBtZXNzYWdlLmxlbmd0aCgp
LCBsYXRpbk9yaWdpbi5kYXRhKCksIGxhdGluT3JpZ2luLmxlbmd0aCgpKTsKIH0KIApAQCAtNzY4
LDcgKzc2NSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6ZnVsbFNjcmVlblJlbmRl
cmVyQ2hhbmdlZChSZW5kZXJCb3gqIGZ1bGxTY3JlZW5SZW5kCiB2b2lkIENocm9tZUNsaWVudEJs
YWNrQmVycnk6OnJlcXVlc3RXZWJHTFBlcm1pc3Npb24oRnJhbWUqIGZyYW1lKQogewogICAgIGlm
IChmcmFtZSkgewotICAgICAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gZnJhbWVPcmlnaW4oZnJh
bWUpOworICAgICAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gdG9PcmlnaW5TdHJpbmcoZnJhbWUp
OwogICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+cmVxdWVzdFdlYkdMUGVybWlz
c2lvbihsYXRpbk9yaWdpbi5kYXRhKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKaW5kZXggNzIyZTgwZjUzMmMxZGRlNmIw
YWI4Mjc0MmQyZWI3MDNjNmVjNzE2MS4uZWZhMGM5MDk4ZmVlZWRkMjE3N2Y2YWUzZGY0YmFkYmYy
YzJmMTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFy
ZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQ
cm94eS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQoUGFnZUdyb3VwKiBwYWdlR3JvdXAsIGNvbnN0IFN0cgogICAg
IGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC0+cGFnZXMoKTsKICAgICBm
b3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCk7IGl0
ICE9IHBhZ2VzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCpp
dCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5l
eHQoKSkgewotICAgICAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lLT5kb21XaW5kb3co
KS0+b3B0aW9uYWxMb2NhbFN0b3JhZ2UoKTsKKyAgICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2Ug
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCk7
CiAgICAgICAgICAgICBpZiAoc3RvcmFnZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pICYmICFpc0V2ZW50U291cmNlKHN0b3JhZ2Us
IHNvdXJjZUFyZWFJbnN0YW5jZSkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PmVucXVldWVXaW5kb3dFdmVudChTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3Rv
cmFnZUV2ZW50LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcGFnZVVSTCwgc3RvcmFnZSkpOwog
ICAgICAgICB9CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVByb3h5OjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoUGFnZUdyb3VwKiBwYWdlR3JvdXAsIGNvbnN0IFMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAg
ICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lLT5kb21XaW5kb3coKS0+b3B0aW9uYWxTZXNzaW9u
U3RvcmFnZSgpOworICAgICAgICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5vcHRpb25hbFNlc3Npb25TdG9yYWdlKCk7CiAgICAgICAgIGlmIChzdG9y
YWdlICYmIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0
eU9yaWdpbikgJiYgIWlzRXZlbnRTb3VyY2Uoc3RvcmFnZSwgc291cmNlQXJlYUluc3RhbmNlKSkK
ICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFn
ZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwg
bmV3VmFsdWUsIHBhZ2VVUkwsIHN0b3JhZ2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRE9NTWVzc2FnZUV2ZW50LmNwcAppbmRleCA1M2VhNDNjZTEzZDkz
ODNiOTY4ZGU4NjhmMzVjMjA3MGRiODhkNmEzLi4wNmNmNjZmYzU1OTMzZGYxNmE2ODA0ODlhNzU4
MjcwM2E2NTU3NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
T01NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRP
TU1lc3NhZ2VFdmVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJET01NZXNz
YWdlRXZlbnQuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgpAQCAtNTUsNyArNTYsNyBA
QCB2b2lkIFdlYkRPTU1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBXZWJTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLAogICAgIEFTU0VSVChpc01lc3NhZ2VFdmVudCgpKTsK
ICAgICBET01XaW5kb3cqIHdpbmRvdyA9IDA7CiAgICAgaWYgKHNvdXJjZUZyYW1lKQotICAgICAg
ICB3aW5kb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJGcmFtZUltcGwqPihzb3VyY2VGcmFtZSkt
PmZyYW1lKCktPmRvbVdpbmRvdygpOworICAgICAgICB3aW5kb3cgPSBzdGF0aWNfY2FzdDxjb25z
dCBXZWJGcmFtZUltcGwqPihzb3VyY2VGcmFtZSktPmZyYW1lKCktPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpOwogICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0czsKICAgICB1bndyYXA8
TWVzc2FnZUV2ZW50PigpLT5pbml0TWVzc2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgbWVzc2FnZURhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHdpbmRvdywgcG9ydHMucmVs
ZWFzZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
CmluZGV4IDY3ZDgxYWRkYTVhYWNmYTk4ZWZiZGY4YTRkZTQ5NTA2ODY2NzhjY2EuLmExZjNlYWI3
NWE5ZDE2MGE3NWY5OGJmYzE1MTM5NGZhN2I2YzljZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtODA5LDEwICs4MDksMTAgQEAgV2ViQW5pbWF0
aW9uQ29udHJvbGxlciogV2ViRnJhbWVJbXBsOjphbmltYXRpb25Db250cm9sbGVyKCkKIAogV2Vi
UGVyZm9ybWFuY2UgV2ViRnJhbWVJbXBsOjpwZXJmb3JtYW5jZSgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5kb21XaW5kb3coKSkKKyAgICBpZiAoIW1fZnJhbWUpCiAg
ICAgICAgIHJldHVybiBXZWJQZXJmb3JtYW5jZSgpOwogCi0gICAgcmV0dXJuIFdlYlBlcmZvcm1h
bmNlKG1fZnJhbWUtPmRvbVdpbmRvdygpLT5wZXJmb3JtYW5jZSgpKTsKKyAgICByZXR1cm4gV2Vi
UGVyZm9ybWFuY2UobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlcmZvcm1hbmNl
KCkpOwogfQogCiBOUE9iamVjdCogV2ViRnJhbWVJbXBsOjp3aW5kb3dPYmplY3QoKSBjb25zdApA
QCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjphZGRNZXNzYWdlVG9Db25zb2xl
KGNvbnN0IFdlYkNvbnNvbGVNZXNzYWdlJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgZnJhbWUoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhl
ck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCB3ZWJDb3JlTWVzc2FnZUxldmVsLCBtZXNz
YWdlLnRleHQpOworICAgIGZyYW1lKCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xl
KCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgd2ViQ29y
ZU1lc3NhZ2VMZXZlbCwgbWVzc2FnZS50ZXh0KTsKIH0KIAogdm9pZCBXZWJGcmFtZUltcGw6OmNv
bGxlY3RHYXJiYWdlKCkKQEAgLTExODAsNyArMTE4MCw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpj
b21taXREb2N1bWVudERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIAogdW5z
aWduZWQgV2ViRnJhbWVJbXBsOjp1bmxvYWRMaXN0ZW5lckNvdW50KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZnJhbWUoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygp
OworICAgIHJldHVybiBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1Vu
bG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKIGJvb2wgV2ViRnJhbWVJbXBsOjppc1Byb2Nlc3Np
bmdVc2VyR2VzdHVyZSgpIGNvbnN0CkBAIC0xOTU2LDM0ICsxOTU2LDI5IEBAIHZvaWQgV2ViRnJh
bWVJbXBsOjpzZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudChpbnQgb3JpZW50YXRpb24pCiAKIHZv
aWQgV2ViRnJhbWVJbXBsOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IFdlYlN0cmluZyYgZXZlbnRU
eXBlLCBXZWJET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewot
ICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7Ci0KLSAgICBFdmVu
dExpc3RlbmVyV3JhcHBlciogbGlzdGVuZXJXcmFwcGVyID0KLSAgICAgICAgbGlzdGVuZXItPmNy
ZWF0ZUV2ZW50TGlzdGVuZXJXcmFwcGVyKGV2ZW50VHlwZSwgdXNlQ2FwdHVyZSwgd2luZG93KTsK
LQotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
YWRvcHRSZWYobGlzdGVuZXJXcmFwcGVyKSwgdXNlQ2FwdHVyZSk7CisgICAgRE9NV2luZG93KiB3
aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICBFdmVudExpc3Rl
bmVyV3JhcHBlciogbGlzdGVuZXJXcmFwcGVyID0gbGlzdGVuZXItPmNyZWF0ZUV2ZW50TGlzdGVu
ZXJXcmFwcGVyKGV2ZW50VHlwZSwgdXNlQ2FwdHVyZSwgd2luZG93KTsKKyAgICB3aW5kb3ctPmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBhZG9wdFJlZihsaXN0ZW5lcldyYXBwZXIpLCB1c2VD
YXB0dXJlKTsKIH0KIAogdm9pZCBXZWJGcmFtZUltcGw6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgV2ViU3RyaW5nJiBldmVudFR5cGUsIFdlYkRPTUV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgRE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5kb21X
aW5kb3coKTsKLQotICAgIEV2ZW50TGlzdGVuZXJXcmFwcGVyKiBsaXN0ZW5lcldyYXBwZXIgPQot
ICAgICAgICBsaXN0ZW5lci0+Z2V0RXZlbnRMaXN0ZW5lcldyYXBwZXIoZXZlbnRUeXBlLCB1c2VD
YXB0dXJlLCB3aW5kb3cpOworICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCk7CisgICAgRXZlbnRMaXN0ZW5lcldyYXBwZXIqIGxpc3RlbmVyV3Jh
cHBlciA9IGxpc3RlbmVyLT5nZXRFdmVudExpc3RlbmVyV3JhcHBlcihldmVudFR5cGUsIHVzZUNh
cHR1cmUsIHdpbmRvdyk7CiAgICAgd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXJXcmFwcGVyLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBXZWJGcmFtZUltcGw6
OmRpc3BhdGNoRXZlbnQoY29uc3QgV2ViRE9NRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVCgh
ZXZlbnQuaXNOdWxsKCkpOwotICAgIHJldHVybiBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZGlzcGF0
Y2hFdmVudChldmVudCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAogdm9pZCBXZWJGcmFtZUltcGw6OmRpc3Bh
dGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBp
bnRlbmRlZFRhcmdldE9yaWdpbiwgY29uc3QgV2ViRE9NRXZlbnQmIGV2ZW50KQogewogICAgIEFT
U0VSVCghZXZlbnQuaXNOdWxsKCkpOwogICAgIC8vIFBhc3MgYW4gZW1wdHkgY2FsbCBzdGFjaywg
c2luY2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgb25lIGZyb20gdGhlIG90aGVyIHByb2Nlc3MuCi0gICAg
bV9mcmFtZS0+ZG9tV2luZG93KCktPmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNr
KGludGVuZGVkVGFyZ2V0T3JpZ2luLmdldCgpLCBldmVudCwgMCk7CisgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNr
KGludGVuZGVkVGFyZ2V0T3JpZ2luLmdldCgpLCBldmVudCwgMCk7CiB9CiAKIGludCBXZWJGcmFt
ZUltcGw6OmZpbmRNYXRjaE1hcmtlcnNWZXJzaW9uKCkgY29uc3QKQEAgLTIxOTAsMTEgKzIxODUs
MTEgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmRlbGl2ZXJJbnRlbnQoY29uc3QgV2ViSW50ZW50JiBp
bnRlbnQsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEEKICAgICAgICAgICAgICgqY2hhbm5lbHMpW2ld
ID0gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZvcm1DaGFubmVsKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5ID0gV2ViQ29y
ZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKihtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKyAgICBPd25QdHI8
TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5ID0gV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKihtX2ZyYW1lLT5kb2N1bWVudCgpKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKIAog
ICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJlZElu
dGVudDo6Y3JlYXRlKG1fZnJhbWUsIGNsaWVudC5yZWxlYXNlKCksIGludGVudC5hY3Rpb24oKSwg
aW50ZW50LnR5cGUoKSwgaW50ZW50RGF0YSwgcG9ydEFycmF5LnJlbGVhc2UoKSwgd2ViY29yZUlu
dGVudC0+ZXh0cmFzKCkpOwogCi0gICAgRE9NV2luZG93SW50ZW50czo6ZnJvbShtX2ZyYW1lLT5k
b21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CisgICAgRE9N
V2luZG93SW50ZW50czo6ZnJvbShtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSktPmRl
bGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAppbmRleCAxOGY1ZGUy
MGE1ZTBmZmFkMTJhMDcyMTc4NTBiMWZmZDhlODA4MGMxLi5lODUzMjY3N2Q3ZmZiYTU2YmY0ZTdm
NmMyNjJiNjI2YTMwY2RjZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQYWdlUG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYWdlUG9wdXBJbXBsLmNwcApAQCAtMTk4LDggKzE5OCw3IEBAIGJvb2wgV2ViUGFnZVBvcHVw
SW1wbDo6aW5pdFBhZ2UoKQogICAgIG1fcG9wdXBDbGllbnQtPndyaXRlRG9jdW1lbnQoKndyaXRl
cik7CiAgICAgd3JpdGVyLT5lbmQoKTsKIAotICAgIEFTU0VSVChmcmFtZS0+ZXhpc3RpbmdET01X
aW5kb3coKSk7Ci0gICAgRE9NV2luZG93UGFnZVBvcHVwOjppbnN0YWxsKGZyYW1lLT5leGlzdGlu
Z0RPTVdpbmRvdygpLCBtX3BvcHVwQ2xpZW50KTsKKyAgICBET01XaW5kb3dQYWdlUG9wdXA6Omlu
c3RhbGwoZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBtX3BvcHVwQ2xpZW50KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggNGI4MDRk
ZDYyNzUyMmVmYTJiMzRlODYxMDk2NzBmNTUwYTY4M2Q4Yi4uOTZhNTc5MWVlMmE5ZjA2NTQxMWQy
OTg0YWIwYTRmODJhMWZhOGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0yMjUs
NyArMjI1LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBhdXNlVHJhbnNpdGlv
bihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIKIHVuc2lnbmVkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6cGVuZGluZ1VubG9hZEV2ZW50Q291bnQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKQogewogICAgIGlmIChXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBFV0tQcml2YXRl
Ojpjb3JlRnJhbWUoZXdrRnJhbWUpKQotICAgICAgICByZXR1cm4gZnJhbWUtPmRvbVdpbmRvdygp
LT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiAK
ICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggZThm
ZWM2ZDYzMTczNjhkYTYxZTZkNTMxNDc5MzgwOWE2NjFmZDM0MS4uNzIzMWI1NDlkZDk1ZmQyMzQw
MjFjMmIzYzljNjhjODVjZTMxYzA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAK
QEAgLTc2NiwxMiArNzY2LDEyIEBAIHZvaWQgZXdrX2ZyYW1lX2ludGVudF9kZWxpdmVyKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ludGVudCogZXdrX2ludGVuCiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ0NoYW5uZWxzLT5zaXplKCk7ICsraSkKICAgICAgICAg
ICAgICgqY2hhbm5lbHMpW2ldID0gb3JpZ0NoYW5uZWxzLT5hdChpKS5yZWxlYXNlKCk7CiAgICAg
fQotICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCooc21hcnREYXRhLT5mcmFtZS0+ZG9tV2luZG93
KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAg
T3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gV2ViQ29yZTo6TWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKihzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpKSwgY2hh
bm5lbHMucmVsZWFzZSgpKTsKIAogICAgIE93blB0cjxXZWJDb3JlOjpEZWxpdmVyZWRJbnRlbnRD
bGllbnQ+IGR1bW15Q2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpEZWxpdmVyZWRJbnRlbnQ+
IGRlbGl2ZXJlZEludGVudCA9IFdlYkNvcmU6OkRlbGl2ZXJlZEludGVudDo6Y3JlYXRlKHNtYXJ0
RGF0YS0+ZnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50LT5hY3Rpb24oKSwgaW50
ZW50LT50eXBlKCksIGludGVudC0+ZGF0YSgpLCBwb3J0cy5yZWxlYXNlKCksIGludGVudC0+ZXh0
cmFzKCkpOwogCi0gICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShzbWFydERhdGEt
PmZyYW1lLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7
CisgICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2Uo
KSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggMDBmZWJjOGI3
YzJhMTQ0NjRiNmU0OTNhZDg5ZDg5MGQ1YzEyZmUwNy4uYzc2ZGNlOWY2ZjZiMjQzY2RkZGFjNmQ2
MjJkYjJiMjZhNjkwMDQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0yNzksNyAr
Mjc5LDcgQEAgZ3VpbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRQZW5kaW5nVW5sb2Fk
RXZlbnRDb3VudChXZWJLaXRXZWJGcmFtZSogZnJhbWUKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7CiAKLSAgICByZXR1cm4gY29yZShm
cmFtZSktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBy
ZXR1cm4gY29yZShmcmFtZSktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2Fk
RXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBh
dXNlQW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogbmFtZSwgZG91
YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCAwYWQwZWNhMjU0ZDE2MjIyOWRhYjgyZDM1ZmUwMzgzZTM1MTA4ZTM3Li45
MmY5ZTBiYjYxNjZlY2Q3MmMwNDlmM2VkMzcyMjEwY2VlMjA4OGVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTkwNiw3ICs5MDYsNyBAQCBzdGF0aWMgaW5saW5lIFdl
YkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAodW5z
aWduZWQpX3BlbmRpbmdGcmFtZVVubG9hZEV2ZW50Q291bnQKIHsKLSAgICByZXR1cm4gX3ByaXZh
dGUtPmNvcmVGcmFtZS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygp
OworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0
YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmIChmcmFt
ZUxvYWRlci0+c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkpCiAgICAgICAgIFty
ZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJG
cmFtZUhhc1BsdWdpbnNdOwogICAgIAotICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRvdyA9IF9w
cml2YXRlLT5jb3JlRnJhbWUtPmRvbVdpbmRvdygpKSB7CisgICAgaWYgKERPTVdpbmRvdyogZG9t
V2luZG93ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpIHsK
ICAgICAgICAgaWYgKGRvbVdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVu
bG9hZEV2ZW50KSkKICAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJGcmFtZUhhc1VubG9hZExpc3RlbmVyXTsKICAgICAg
ICAgaWYgKGRvbVdpbmRvdy0+b3B0aW9uYWxBcHBsaWNhdGlvbkNhY2hlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAppbmRleCBhMTcwMzM2MjU0ZDAwYTg5MDlhMzg3MDg4ZWJlOTZiNzQ1MjQ1OTk3Li5iY2YwNzJk
NjViNTY0ZmYxZWQ1YWI2YWQ1MTI5NDYxODQwOTFiMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTUw
Myw3ICs1MDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNo
RG9jdW1lbnRMb2FkKCkKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0KG1fZnJhbWUpKSk7CiAKICAgICBpZiAoUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4pIHsKLSAg
ICAgICAgaW50IHVubG9hZEV2ZW50Q291bnQgPSBtX2ZyYW1lLT5kb21XaW5kb3coKS0+cGVuZGlu
Z1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgICAgIGludCB1bmxvYWRFdmVudENvdW50ID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3Rl
bmVycygpOwogICAgICAgICBpZiAodW5sb2FkRXZlbnRDb3VudCkKICAgICAgICAgICAgIHByaW50
ZigiJXMgLSBoYXMgJXUgb251bmxvYWQgaGFuZGxlcihzKVxuIiwgcVByaW50YWJsZShkcnREZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSksIHVubG9hZEV2ZW50Q291bnQp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBmZjU2MGM2N2I5MmFmYjJjYTczMmI5
Yzk3NjkwZjE1YzM3NTdhNTMxLi5kMTg4MGNmM2ZjNmJiOTVkMWE1OTU1NzQ3OTQzMDE0ZDk3Yjkw
MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgSFJFU1VMVCBX
ZWJGcmFtZTo6RE9NV2luZG93KC8qIFtyZXR2YWxdW291dF0gKi8gSURPTVdpbmRvdyoqIHdpbmRv
dykKICAgICAqd2luZG93ID0gMDsKIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZSh0
aGlzKSkgewotICAgICAgICBpZiAoV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlV2luZG93ID0gY29y
ZUZyYW1lLT5kb21XaW5kb3coKSkKKyAgICAgICAgaWYgKFdlYkNvcmU6OkRPTVdpbmRvdyogY29y
ZVdpbmRvdyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCiAgICAgICAgICAg
ICAqd2luZG93ID0gOjpET01XaW5kb3c6OmNyZWF0ZUluc3RhbmNlKGNvcmVXaW5kb3cpOwogICAg
IH0KIApAQCAtOTg5LDcgKzk4OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJh
bWU6OnBlbmRpbmdGcmFtZVVubG9hZEV2ZW50Q291bnQoCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqcmVzdWx0ID0gY29yZUZyYW1lLT5kb21XaW5k
b3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgKnJlc3VsdCA9IGNvcmVG
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVy
cygpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBmMzZmYzAyMzhmZWFkM2VhY2Y2YWMxMzJjOTBj
OTUwODg5OTRjOTU0Li4xOTI0M2JlZTAzZTQ3MjZjYTBiYjdhOTgxZDhiMzA4NDNiOWRlNTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTI1MSw3ICsyNTEsNyBAQCB2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KGNvbnN0IEludGVu
dERhdGEmIGludGVudERhdGEpCiAgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVk
SW50ZW50ID0gRGVsaXZlcmVkSW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50
LnJlbGVhc2UoKSwgaW50ZW50RGF0YS5hY3Rpb24sIGludGVudERhdGEudHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgZHVtbXlQb3J0cy5y
ZWxlYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50RGF0YS5leHRyYXMpOwotICAgIFdlYkNvcmU6
OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpKS0+ZGVsaXZl
cihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKKyAgICBXZWJDb3JlOjpET01XaW5kb3dJbnRl
bnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSktPmRlbGl2ZXIo
ZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CiB9CiAjZW5kaWYKIApAQCAtNDkzLDcgKzQ5Myw3
IEBAIHVuc2lnbmVkIFdlYkZyYW1lOjpwZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdAogICAgIGlm
ICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fY29yZUZy
YW1lLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgcmV0
dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2
ZW50TGlzdGVuZXJzKCk7CiB9CiAKIGJvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmso
Y29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKSBjb25zdAo=
</data>
<flag name="review"
          id="168546"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158422</attachid>
            <date>2012-08-14 15:23:01 -0700</date>
            <delta_ts>2012-08-14 15:23:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93990-20120814152240.patch</filename>
            <type>text/plain</type>
            <size>89763</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmMTY3MjNmY2IwMjBi
ZjhmNzIxMjg4Mzg2M2UyYmM0NjkzODVjNy4uMTljY2NkNGJmN2JkZjgwNDI3NzM1MTkyOTAyZDQ1
Mzk3ZmE4MjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMCBAQAogMjAxMi0wOC0xNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9t
V2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBqdXN0IGNhbGwg
dGhyb3VnaCB0byBkb2N1bWVudCgpLT5kb21XaW5kb3coKS4gVGhpcworICAgICAgICBwYXRjaCB1
cGRhdGVzIHRoZSBjYWxsZXJzIHNvIGl0J3MgY2xlYXJlciB3aGF0J3MgZ29pbmcgb24uCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50RXJyb3JN
ZXNzYWdlRm9yRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNEb2N1bWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbToKKyAgICAgICAgKGNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJ
c29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlRnJhbWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvclNldHRlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByaW50
TmF2aWdhdGlvbkVycm9yTWVzc2FnZSk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6CisgICAgICAg
ICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0
ZUFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAq
IGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlRnJh
bWVEZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNv
bnRhaW5pbmdUaGlzRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3cpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cHJpbnRXYXJuaW5n
VG9Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFn
ZUlkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6
OmJlZ2luKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpkaWRPcGVuVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVj
a0lmRGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpcmVCZWZv
cmVVbmxvYWRFdmVudCk6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZl
c3RSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2VsZik6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnRvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6OkRPTVdpbmRvd1Byb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZy
b21QYWdlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKEZyYW1lKToKKyAgICAgICAgKiBw
YWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZXBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYXRpb246OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERp
c3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2gpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVwb3J0TWVzc2FnZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hl
ZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3Ry
aW5nKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUTWVzc2FnZUhhbmRsZXI6OmhhbmRsZU1lc3NhZ2Up
OgorCisyMDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAg
ICAgRE9NV2luZG93Ojpkb2N1bWVudCgpIHNob3VsZCBub3QgcmVhY2ggdGhyb3VnaCBGcmFtZQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NDAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggN2Y5YWIzZDM1NzVmZWFkYmMwYmE5YmFm
MmE5YzQ4N2UwNjkwYTJhMS4uZWJkMTM3MWM0YjFlYWRjMTdlNzM1NjNlMjFjN2M3OWM4YjMxMDk1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUg
RnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcmlnaW5T
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6cnVuSmF2
YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6
OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJs
YWNrQmVycnk6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50QmxhY2tCZXJyeTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OnJlcXVlc3RXZWJHTFBlcm1pc3Npb24p
OgorCiAyMDEyLTA4LTE0ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNv
bS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU29tZSBjYWxsYmFjayBvZiBTZWxlY3Qgb25j
aGFuZ2UgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhjYjljODEz
N2YyMTk3NTM2ZjFjNDAxYThiZWFkNDZiZWE4YmUwNzcuLmI0ZTA0YzRmMDFmNjM0YWM5YmNhN2I4
MDE1MWI0OWZiZTMxNjcyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5k
b3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9TdG9yYWdlQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJv
eHk6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBzcmMv
V2ViRE9NTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRE9NTWVzc2FnZUV2
ZW50Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpwZXJmb3JtYW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lSW1wbDo6dW5sb2FkTGlzdGVuZXJDb3VudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
SW1wbDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZGlz
cGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUltcGw6OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorCiAy
MDEyLTA4LTE0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
SW5kZXhlZERCOiBQYXNzIGN1cnNvciBjb250aW51ZSByZXN1bHRzIGJhY2sgaW4gY2FsbGJhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBiNzdlZjM2MTI2MjEzMzQ3MjY3ZDAyMjJlNzNkYzQ0OTg2ZDBh
MDlmLi4yMjJmMjg3MmY4ZWE4YWYwYjhkMDU2OGY5M2FjNTdiNjM5ZWUwMjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFt
ZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRFdmVu
dENvdW50KToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFt
ZV9pbnRlbnRfZGVsaXZlcik6CisKIDIwMTItMDgtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSByZWxlYXNlIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6bV9wbHVnaW5XaWRnZXQgcmVmcHRyIHVwb24gUGx1Z2luIERvY3VtZW50IGRldGFjaC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAyMzliY2IwZjhlZWMxNWU5MDU0OWY5ZTY1NzI2YmViY2QyNWZh
ZWM5Li4zYjVmZTg4NTQ3YTRiNGZjMmZmMTU1NzRmNDJjNTRhNzgyM2EzNTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFt
ZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldFBlbmRpbmdVbmxvYWRF
dmVudENvdW50KToKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpt
X3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDkzMTdiZDJmNzI2YmZlOGE4ZGI0ZDI5MzRiNzM1ZWViOWRkNTAxMGMuLjU4
YWJhNzhjZjVmYmZhOGQ3NDYxOTQxZDNmYjdiMGMwMDE2NzE2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlz
dGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BlbmRp
bmdGcmFtZVVubG9hZEV2ZW50Q291bnRdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NhY2hlYWJp
bGl0eURpY3Rpb25hcnldKToKKwogMjAxMi0wOC0wOSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
YmxvYi11cmwtaW4taWZyYW1lLmh0bWwgZmFpbHMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDFj
YjFhYWU2NmU5MTBkMTExNzZmYTBhYjgwZjM5Zjc4ZDU4MmIyY2EuLjcxNjYwZDZmZjIyYTQ1MjNj
N2QwYTQ3YzhiNDZkNzc4Mzk2ZDBkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBE
ZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorCiAyMDEyLTA4
LTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAg
ICBbUXRdIEZpeCBmYWlsaW5nIHRzdF9RV2ViUGFnZTo6ZmluZFRleHQgdW5pdCB0ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggOGViYThiZjE2M2FmYjkwMWQzMjBjZmQ4MjQ4Yzg0YzBmYTU4Yjg5YS4u
ZmQzMzM1NDU5MTZmNjc4MzcxNjQ5YjYyYzY1ZGIwNzZkMmRlMTVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRGVsZXRlIEZyYW1lOjpkb21XaW5kb3coKSBhbmQgRnJhbWU6OmV4
aXN0aW5nRE9NV2luZG93KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzOTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6RE9NV2luZG93KToK
KyAgICAgICAgKFdlYkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KToKKwogMjAx
Mi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZw
dHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY0ZWMyMWUxZGM3
ZmUyNTliYWIzMWVhZDg2ODExNDI3MGY1ZjYyNzEuLjhjZTI3MzYxYjNmYzJiMTliYWMyNDg4Nzcy
NTExODgyMDQ0YjljZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xNCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIERlbGV0ZSBGcmFtZTo6
ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KToKKwogMjAxMi0w
OC0xNCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIFVwZGF0ZUF0bGFzIGlzIHdhc3RpbmcgbWVtb3J5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDA2OTY1ZmVjODE5ZTRiMDk3NDkwYjRlYWEwMDNlZDUyOWM3NThhZDQuLmM3N2Ez
ZDMxOTJhMTZhMDQ1YjhhZDQyMWJiZmE1MTljZDMwMTg1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0xMjk0LDcgKzEyOTQsNiBAQCBfX1pOSzdXZWJDb3JlNUZyYW1lMTZmcmFtZVNjYWxlRmFj
dG9yRXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUxOGRvY3VtZW50VHlwZVN0cmluZ0V2CiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3Ry
aW5nRQogX19aTks3V2ViQ29yZTVGcmFtZThzZXR0aW5nc0V2Ci1fX1pOSzdXZWJDb3JlNUZyYW1l
OWRvbVdpbmRvd0V2CiBfX1pOSzdXZWJDb3JlNVJhbmdlMTFzdGFydE9mZnNldEVSaQogX19aTks3
V2ViQ29yZTVSYW5nZTEyZW5kQ29udGFpbmVyRVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlMTJwYXN0
TGFzdE5vZGVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
aW5kZXggMTU1MGY5OWE5MzJjOWY5MzBjYzZiZDBiMDI4MjI4MmIyMzUwY2M4MC4uNTlmNTVhZWNm
YWNhZTYyYmVmNzEwNDZhZDdjMDVhMmFlZWVjZTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBGcmFtZSogZnJhbWUsIFN0cmluZyYg
bWVzc2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgcmVzdWx0ID0gQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUsIERvTm90UmVw
b3J0U2VjdXJpdHlFcnJvcik7CiAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgbGluZSBvZiBj
b2RlIHNob3VsZCBtb3ZlIHNvbWV3aGVyZSB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBpbW1l
ZGlhdGVseVJlcG9ydFVuc2FmZUFjY2Vzc1RvLgotICAgIG1lc3NhZ2UgPSBmcmFtZS0+ZG9tV2lu
ZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZURPTVdpbmRvdyhleGVj
KSk7CisgICAgbWVzc2FnZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y3Jvc3NE
b21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlRE9NV2luZG93KGV4ZWMpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBwcmludEVycm9yTWVzc2Fn
ZUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPnByaW50
RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+cHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKIEpTVmFsdWUgb2JqZWN0VG9TdHJp
bmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggYmIzZDc5MTI1YTFhNzcwY2IxOWRlOGIwZmViMjNjMGQzYjk5ZDIz
OC4uMmQ3NWFjMDhjYjdhODVmYzA0OWFlNGI3ZWUzZjAzNjQwOGE0NDEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtOTksMTIg
Kzk5LDEyIEBAIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByCiAKIHN0YXRpYyBKU1ZhbHVlIGNoaWxk
RnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29w
ZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2lu
ZG93KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4KQogewotICAgIHJldHVybiB0b0pTKGV4
ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJh
bWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCktPmRvbVdpbmRvdygpKTsKKyAgICByZXR1
cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5p
bXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaW5kZXgpLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4
IGI2ZGUxNjIyNTFkMTE0MzdiZjhiNmMzYTYwYzFiZTNmNDdkNWVjM2EuLjY0N2I0NDYxZWFlNDBh
YjQ1YmI2MjVlYmM5YmYyN2ZlNDVhZDQ5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNE
b2N1bWVudDo6bG9jYXRpb24oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIExvY2F0aW9uKiBsb2NhdGlvbiA9IGZy
YW1lLT5kb21XaW5kb3coKS0+bG9jYXRpb24oKTsKKyAgICBMb2NhdGlvbiogbG9jYXRpb24gPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCk7CiAgICAgaWYgKEpTRE9N
V3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBs
b2NhdGlvbikpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCkBAIC03Myw3ICs3Myw3IEBAIHZv
aWQgSlNEb2N1bWVudDo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9IGZyYW1lLT5kb21XaW5kb3coKS0+bG9jYXRpb24oKSkK
KyAgICBpZiAoTG9jYXRpb24qIGxvY2F0aW9uID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5sb2NhdGlvbigpKQogICAgICAgICBsb2NhdGlvbi0+c2V0SHJlZih1c3RyaW5nVG9TdHJp
bmcobG9jYXRpb25TdHJpbmcpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93
KGV4ZWMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggMGE1NTdmN2Q0YTRhZmZiM2ZmYzIzYWE1YTQ5OGNmNWJiMGMzYzc4YS4u
Nzc5ZThkNzM5ZDUzNjkzM2I2NjdmNjQyMmQ0NWFlNGJiMzM3Nzg1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC04NSwxOCArODUsMTIg
QEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZyYW1lID0gMDsKICAgICBpZiAoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cg
PSBqc0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwotICAgICAgICBmcmFtZSA9IHdp
bmRvdy0+aW1wbCgpLT5mcmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAvLyBUaGUgd2luZG93IG11c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0
cyBmcmFtZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5
MjE+LgotICAgICAgICAvLyBGSVhNRTogQSBiZXR0ZXIgZml4IGZvciB0aGlzIG1heSBiZSB0byBj
aGFuZ2UgRE9NV2luZG93OjpmcmFtZSgpIHRvIG5vdCByZXR1cm4gYSBmcmFtZSB0aGUgZGV0YWNo
ZWQgd2luZG93IHVzZWQgdG8gYmUgaW4uCi0gICAgICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkg
IT0gd2luZG93LT5pbXBsKCkpCisgICAgICAgIGlmICghd2luZG93LT5pbXBsKCktPmlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBG
SVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPwotICAgICAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgICAgIFNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdCA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgpLT5zY3JpcHQoKTsK
ICAgICAgICAgaWYgKCFzY3JpcHQtPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2Ny
aXB0KSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5jcHAKaW5kZXggOWNmNGU5OWNlYTNhZTNhNzk1NDJiZGIzNjA1MmRiMTQ3MzQxZGQzMy4uYTY5
YWYzOTFiZjQyYmU2NDVhZTRlMTFjYjM3NzNlYzQ3YmZhYjZkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFt
ZSkKICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxk
KS5nZXQoKSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT5nbG9i
YWxEYXRhKCksIHdpbmRvdyk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgd2luZG93U2hl
bGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9tV2luZG93KCkpOworICAgICAgICAgICAgd2luZG93U2hl
bGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwogCiAgICAgICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgICAgICAgICBz
Y3JpcHRDb250cm9sbGVyLT5hdHRhY2hEZWJ1Z2dlcih3aW5kb3dTaGVsbCwgcGFnZS0+ZGVidWdn
ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDc5YzEyNzQ1ZmU2NWE5OTEzYzZlOWJmZjExMjdiYjZiNjRjY2QyYjYuLjlmYTg1
NDI0NGI4OWZiYTBmN2E1MmRiODQ1NzI4NTI3MTYyZGU1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAg
SlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAgICBBU1NFUlQoIW1fd2luZG93U2hlbGxzLmNvbnRh
aW5zKHdvcmxkKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1NoZWxs
OjpjcmVhdGVTdHJ1Y3R1cmUoKndvcmxkLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKLSAgICBT
dHJvbmc8SlNET01XaW5kb3dTaGVsbD4gd2luZG93U2hlbGwoKndvcmxkLT5nbG9iYWxEYXRhKCks
IEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZShtX2ZyYW1lLT5kb21XaW5kb3coKSwgc3RydWN0dXJl
LCB3b3JsZCkpOworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCgqd29y
bGQtPmdsb2JhbERhdGEoKSwgSlNET01XaW5kb3dTaGVsbDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLCBzdHJ1Y3R1cmUsIHdvcmxkKSk7CiAgICAgU3Ryb25nPEpTRE9N
V2luZG93U2hlbGw+IHdpbmRvd1NoZWxsMih3aW5kb3dTaGVsbCk7CiAgICAgbV93aW5kb3dTaGVs
bHMuYWRkKHdvcmxkLCB3aW5kb3dTaGVsbCk7CiAgICAgd29ybGQtPmRpZENyZWF0ZVdpbmRvd1No
ZWxsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01B
YnN0cmFjdFZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0
Vmlldy5tbQppbmRleCAwYjc5YWE5Yzk3ZGNlZjVlNWZjZjRlYzEwYWM5ODBjZmU1ZGQyNjQ5Li5k
MmQzZGQ1OGRmMzYyMjcyZjU0MzU0OWVlNzVjODYyN2E2NWJiOWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQpAQCAtNTAsNyArNTAsNyBA
QAogewogICAgIGlmICghX2ludGVybmFsKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBraXQoSU1QTC0+ZG9tV2luZG93KCktPmRvY3VtZW50KCkpOworICAgIHJldHVybiBraXQoSU1Q
TC0+ZG9jdW1lbnQoKSk7CiB9CiAKIEBlbmQKQEAgLTcyLDcgKzcyLDcgQEAgV2ViQ29yZTo6RE9N
V2luZG93KiBjb3JlKERPTUFic3RyYWN0VmlldyAqd3JhcHBlcikKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgaWYgKCF3cmFwcGVyLT5faW50ZXJuYWwpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkZyYW1lKj4od3JhcHBlci0+X2ludGVybmFs
KS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RnJh
bWUqPih3cmFwcGVyLT5faW50ZXJuYWwpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKIH0KIAog
RE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9NV2luZG93KiB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggZjZiOWYxYTRmYjE2MzRlZGE4
NTMwMTJjYzQ1ZDM1MmFmN2QwNjYwOS4uYzAwMDgyZDZjZjRhMTQzMDdlYjgyZjQwYTQ0MzMzNDcz
NzJjNmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKQEAg
LTYzLDggKzYzLDggQEAgdHlwZWRlZiBIYXNoTWFwPGludCwgVjhOUE9iamVjdFZlY3Rvcj4gVjhO
UE9iamVjdE1hcDsKIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KE5Q
UCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCkKIHsKICAgICBWOE5QT2JqZWN0KiBvYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihucE9iamVjdCk7Ci0gICAgRE9NV2luZG93KiBk
b21XaW5kb3cgPSBvYmplY3QtPnJvb3RPYmplY3Q7Ci0gICAgaWYgKCFkb21XaW5kb3cgfHwgIWRv
bVdpbmRvdy0+ZnJhbWUoKSB8fCBkb21XaW5kb3cgIT0gZG9tV2luZG93LT5mcmFtZSgpLT5kb21X
aW5kb3coKSkKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IG9iamVjdC0+cm9vdE9iamVjdDsKKyAg
ICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKICAgICByZXR1cm4gVjhQ
cm94eTo6bWFpbldvcmxkQ29udGV4dChvYmplY3QtPnJvb3RPYmplY3QtPmZyYW1lKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCBiYTc1ZTNiNmI4NzU5NGZlYmYyZTRhMWE2NzU1NDE0ZWFiMmZjNjM0Li4wNjkyZTNkMmI5Yjgy
ZDM4OTZjOTU5MjYyOWYzNTI3NDlhNzNjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBO
UE9iamVjdCogY3JlYXRlU2NyaXB0T2JqZWN0KEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUo
djhDb250ZXh0KTsKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IGZyYW1lLT5kb21XaW5kb3coKTsK
KyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2xvYmFsID0gdG9WOCh3aW5kb3cpOwogICAgIEFT
U0VSVChnbG9iYWwtPklzT2JqZWN0KCkpOwogICAgIHJldHVybiBucENyZWF0ZVY4U2NyaXB0T2Jq
ZWN0KDAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZ2xvYmFsKSwgd2luZG93KTsKQEAg
LTQ2OCw3ICs0NjgsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0
T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1MUGx1Z0luRWxlbWVudAogICAgICAgICByZXR1cm4g
Y3JlYXRlTm9TY3JpcHRPYmplY3QoKTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhD
b250ZXh0KTsKIAotICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7
CisgICAgRE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhwbHVnaW4gPSB0b1Y4KHN0YXRpY19jYXN0
PEhUTUxFbWJlZEVsZW1lbnQqPihwbHVnaW4pKTsKICAgICBpZiAoIXY4cGx1Z2luLT5Jc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlTm9TY3JpcHRPYmplY3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMmUzZjZjYzY2
OTdiOGE3MTVlNzc1YmEzYTVkZGZmMmVmODA1YzVmYi4uZTg3ZGM3ZDIyZjEyMmQzZmI4OTM4Yzc1
MDBlMzM0NmQ1ZjBjNTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBib29sIFY4RE9NV2luZG93U2hl
bGw6OmluaXRDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKCFpbnN0YWxsRE9NV2luZG93KHY4Q29udGV4dCwgbV9mcmFtZS0+ZG9tV2luZG93
KCkpKSB7CisgICAgaWYgKCFpbnN0YWxsRE9NV2luZG93KHY4Q29udGV4dCwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCkpKSB7CiAgICAgICAgIGRpc3Bvc2VDb250ZXh0SGFuZGxlcygp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCmluZGV4IGE2MDAxMzk5NTEyY2I0MzZjNjJj
NDU0NGYxMmIyYTQzODdiN2MyZGYuLjEwYWFkYmE2MjU3OTg5MzE3ZDZlZDlkMzk2ODk4OTdhNTZi
MzgzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29u
dGV4dC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgVjhJc29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRD
b250ZXh0KFY4UHJveHkqIHByb3h5LCBpbnQgZXh0ZW5zaW9uR3JvdXAsIGludCB3b3IKICAgICBt
X3BlckNvbnRleHREYXRhLT5pbml0KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGdvIGF3
YXkgb25jZSB3ZSBoYXZlIGEgd2luZG93U2hlbGwgZm9yIHRoZSBpc29sYXRlZCB3b3JsZC4KLSAg
ICBwcm94eS0+d2luZG93U2hlbGwoKS0+aW5zdGFsbERPTVdpbmRvdyhtX2NvbnRleHQtPmdldCgp
LCBtX2ZyYW1lLT5kb21XaW5kb3coKSk7CisgICAgcHJveHktPndpbmRvd1NoZWxsKCktPmluc3Rh
bGxET01XaW5kb3cobV9jb250ZXh0LT5nZXQoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpOwogCiAgICAgLy8gVXNpbmcgdGhlIGRlZmF1bHQgc2VjdXJpdHkgdG9rZW4gbWVhbnMg
dGhhdCB0aGUgY2FuQWNjZXNzIGlzIGFsd2F5cwogICAgIC8vIGNhbGxlZCwgd2hpY2ggaXMgc2xv
dy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZTRiNzVhN2Q5YjY3
NmI5ODZjYzY3OWQ4MDNjYjYwYTEzMmU0NWFmMS4uMjVhMzYwNmE5MjhlNzhhZWU2ZGIwZTQ3OTRl
MWUzZTJmODU5ZjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAg
LTM2Nyw5ICszNjcsOCBAQCBET01XaW5kb3cqIFY4UHJveHk6OnJldHJpZXZlV2luZG93KHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiBGcmFtZSogVjhQcm94eTo6cmV0cmlldmVGcmFt
ZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIERPTVdpbmRvdyogd2lu
ZG93ID0gcmV0cmlldmVXaW5kb3coY29udGV4dCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gd2luZG93
LT5mcmFtZSgpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZG9tV2luZG93KCkgPT0gd2luZG93
KQotICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgaWYgKHdpbmRvdy0+aXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCisgICAgICAgIHJldHVybiB3aW5kb3ctPmZyYW1lKCk7CiAgICAgLy8g
V2UgcmV0dXJuIDAgaGVyZSBiZWNhdXNlIHxjb250ZXh0fCBpcyBkZXRhY2hlZCBmcm9tIHRoZSBG
cmFtZS4gIElmIHdlCiAgICAgLy8gZGlkIHJldHVybiB8ZnJhbWV8IHdlIGNvdWxkIGdldCBpbiB0
cm91YmxlIGJlY2F1c2UgdGhlIGZyYW1lIGNvdWxkIGJlCiAgICAgLy8gbmF2aWdhdGVkIHRvIGFu
b3RoZXIgc2VjdXJpdHkgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOWM0MjFmYjY0YTQ0YzRj
MmI2NDI4YTQ5NjIwZmYxNTY4MzE0MzAzNy4uYjhhYTRmYWNlOTZiN2VlOTkxODNmNWYxOTRmNzE4
NGQ3YWEwZWVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NzksNyArNDc5LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3Qg
aW5kZXgsIGNvbnN0IHYKIAogICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3Bl
ZENoaWxkKGluZGV4KTsKICAgICBpZiAoY2hpbGQpCi0gICAgICAgIHJldHVybiB0b1Y4KGNoaWxk
LT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChj
aGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtNTAyLDcgKzUwMiw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtCiAgICAgQXRvbWljU3RyaW5nIHByb3BOYW1lID0gdG9XZWJDb3JlQXRvbWlj
U3RyaW5nKG5hbWUpOwogICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3BlZENo
aWxkKHByb3BOYW1lKTsKICAgICBpZiAoY2hpbGQpCi0gICAgICAgIHJldHVybiB0b1Y4KGNoaWxk
LT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChj
aGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAg
IC8vIFNlYXJjaCBJREwgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIHByb3RvdHlwZQogICAgIGlm
ICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHkobmFtZSkuSXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRM
b2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
b2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBiMmQ4MWU4NGMyZDc1ZDkyMjQ5Njk4NGEx
NmExODQ0ZmJhMWY3YzM2Li43NjEzYTE0YjExNTY5MDE5NWNmZmQ0NWMxYTFiMTY1Y2Y3ODQxYjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbgogICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJl
dHVybiB2ODo6TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CiAKLSAgICBET01XaW5kb3cqIHdpbmRv
dyA9IGRvY3VtZW50LT5mcmFtZSgpLT5kb21XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIHdpbmRv
dyA9IGRvY3VtZW50LT5kb21XaW5kb3coKTsKICAgICByZXR1cm4gdG9WOCh3aW5kb3ctPmxvY2F0
aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFY4
RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2OAogICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybjsKIAotICAg
IERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmZyYW1lKCktPmRvbVdpbmRvdygpOworICAg
IERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAgIGlmIChMb2Nh
dGlvbiogbG9jYXRpb24gPSB3aW5kb3ctPmxvY2F0aW9uKCkpCiAgICAgICAgIGxvY2F0aW9uLT5z
ZXRIcmVmKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSksIGFjdGl2ZSwgZmlyc3QpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKaW5kZXggMzI3YzY0YmY2ZWY4NzUwYmNiNDM0OWRjOTkxZGNlMzdkNjkwMjVl
MS4uZmUyZTVjMmIzYjcwZTdlYmI1NGY0ZTFmMjA0NmM2ZWY4ZjBjZjQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxE
b2N1bWVudDo6R2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVuCiAgICAg
ICAgIE5vZGUqIG5vZGUgPSBpdGVtcy0+aXRlbSgwKTsKICAgICAgICAgRnJhbWUqIGZyYW1lID0g
MDsKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpICYm
IChmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSktPmNvbnRlbnRG
cmFtZSgpKSkKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KGZyYW1lLT5kb21XaW5kb3coKSwgaXNv
bGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIGlzb2xhdGUpOwogCiAgICAgICAgIHJldHVybiB0b1Y4KG5vZGUsIGlzb2xhdGUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNTI5NDA5OTYxZjRi
YzgxYzExOGYyMWFiNmJkYjEyM2MyNTQyODMwMi4uMGE5NjkzYWJhMzNiM2ViZGExOTY0NTMxNjQ3
MDEzMzA3OGNmZWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTUw
LDE0ICs1MCwxNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgIElOQ19TVEFUUygiRE9N
LkhUTUxGcmFtZVNldEVsZW1lbnQuTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIEhUTUxGcmFt
ZVNldEVsZW1lbnQqIGltcCA9IFY4SFRNTEZyYW1lU2V0RWxlbWVudDo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgTm9kZSogZnJhbWVOb2RlID0gaW1wLT5jaGlsZHJlbigpLT5uYW1lZEl0
ZW0odG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpKTsKLSAgICBpZiAoZnJhbWVOb2RlICYmIGZy
YW1lTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lVGFnKSkgewotICAgICAgICBEb2N1
bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudCo+KGZyYW1lTm9kZSktPmNv
bnRlbnREb2N1bWVudCgpOwotICAgICAgICBpZiAoIWRvYykKLSAgICAgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2MtPmZyYW1lKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKCFmcmFt
ZU5vZGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIGlmICghZnJhbWVOb2Rl
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZnJhbWVUYWcpKQorICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVF
bGVtZW50Kj4oZnJhbWVOb2RlKS0+Y29udGVudERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKCFkb2N1bWVudC0+ZnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHRvVjgoZG9j
dW1lbnQtPmRvbVdpbmRvdygpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDllOGUzMmU0Njc0MzliMzg5
YWIxN2UxN2FkODliZWIzY2Y2OGE0YmYuLmEzNGNkMWEwYTFjNjQ3YzUxODdjMDQ2ZGVkMWNkNDA2
MjFlMDVmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIHN0
YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIGFjdGl2ZVVSTCkKICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSArICIgZnJvbSBmcmFtZSB3aXRoIFVSTCAiICsgYWN0aXZlVVJMLnN0
cmluZygpICsgIi5cbiI7CiAKICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHByaW50IHRvIHRoZSBj
b25zb2xlIG9mIHRoZSBkb2N1bWVudCBwZXJmb3JtaW5nIHRoZSBuYXZpZ2F0aW9uIGluc3RlYWQ/
Ci0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3Nh
Z2UpOwogfQogCiBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+KiBkb2N1bWVudHNUaGF0TmVlZFN0
eWxlUmVjYWxjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmlu
ZGV4IGRjMjJlNmUxZjFmZDRkMGYwMjBkZDYwNzU1ZGE5M2IwNjEwMmRlYmEuLjRkYTkwNTAyOWEw
NDk2ZWJlNjBiNzA5ZTcwMTcwNmY5MTE5NTkyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdw
b3J0QXJndW1lbnRzLmNwcApAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgcmVwb3J0Vmlld3BvcnRX
YXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBj
b25zCiAgICAgaWYgKCFyZXBsYWNlbWVudDIuaXNOdWxsKCkpCiAgICAgICAgIG1lc3NhZ2UucmVw
bGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxhY2VtZW50Mik7CiAKLSAgICBmcmFtZS0+ZG9tV2lu
ZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwoZXJyb3JDb2RlKSwgbWVzc2FnZSwgZG9j
dW1lbnQtPnVybCgpLnN0cmluZygpLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSk7CisgICAg
ZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCB2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKGVycm9yQ29k
ZSksIG1lc3NhZ2UsIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSwgcGFyc2VyTGluZU51bWJlcihk
b2N1bWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBkNGEw
ZTQzYjdlYTA5OGM2YjhmZWIzOTU2MTkzMTEyNTEzNzBkYTllLi41ZGNmYmQzODNiYThhY2IwZWY0
YjIxZmVhOTcyZWU4OTE4NTg5MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCBib29s
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFZlYwogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52
aWV3KCkpCiAgICAgICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAotICAg
IFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24o
bV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAg
UmVmUHRyPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbiht
X2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDIw
YjZhZjk2NzM4YTY2NTI5ZWQ4MDZiNGIwNDU3ZDM3NTdmMDllYTMuLmIzMDdmNDZmNjQ4OTk2YmQy
ZGI5YjFhNWIwZTIyY2EyNzIzNGY4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTM0Niw3ICszNDYsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJp
bmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKICAgICBpZiAoIXRhcmdldCkKICAg
ICAgICAgcmV0dXJuOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHRhcmdldC0+ZGlz
cGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKG1fZnJhbWUtPmRv
bVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSwgZWMpOworICAgIHRhcmdldC0+
ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSwgZWMp
OwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0
eWxlKQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wKICAgICBpZiAo
IXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUo
bV9mcmFtZS0+ZG9tV2luZG93KCksIHBhc3RpbmdGcmFnbWVudCwgc21hcnRSZXBsYWNlLCBtYXRj
aFN0eWxlKSwgZWMpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0
ZUZvckZyYWdtZW50UGFzdGUobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHBhc3Rp
bmdGcmFnbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKSwgZWMpOwogfQogCiB2b2lkIEVk
aXRvcjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKQEAgLTEzNjMsNyArMTM2Myw3
IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENv
bXBvc2l0aW9uTW9kZSBtb2RlKQogICAgIC8vIHRoZSBET00gRXZlbnQgc3BlY2lmaWNhdGlvbi4K
ICAgICBOb2RlKiB0YXJnZXQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwog
ICAgIGlmICh0YXJnZXQpIHsKLSAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50
ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2
ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgIFJlZlB0cjxDb21wb3Np
dGlvbkV2ZW50PiBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRl
eHQpOwogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KGV2ZW50LCBlYyk7CiAgICAgfQpAQCAtMTQyNiwxNCArMTQyNiwxNCBAQCB2b2lk
IEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21w
b3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hlbiB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkg
YmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAvLyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNv
bXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICgh
dGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQo
Q29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZl
bnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQg
PSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRl
RXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
b21wb3NpdGlvbnN0YXJ0RXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0
ZXh0KSk7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLCB0ZXh0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZXZlbnQgPSBD
b21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZl
bnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICBldmVudCA9
IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVF
dmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRl
eHQpOworICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHRleHQpOwogICAgICAgICB9CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgICAgICBpZiAoZXZlbnQuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAK
aW5kZXggOGMzNzllYjI0YTMxZTQxMDJhZDgxOWNiOWRlN2UwMTg5Yzk5MTgyYy4uZTdlZWJkYzQz
NzQyYzU1ZjE0MTExZWNkMmUyMTRhOGUwYmNhNDY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNo
ZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAgIFBD
TE9HKCIgICAtRnJhbWUgaXMgSFRUUFMsIGFuZCBjYWNoZSBjb250cm9sIHByb2hpYml0cyBjYWNo
aW5nIG9yIHN0b3JpbmciKTsKICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IElzSHR0cHNB
bmRDYWNoZUNvbnRyb2xsZWQ7CiAgICAgfQotICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkgJiYg
ZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2Fk
RXZlbnQpKSB7CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSAmJiBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS51bmxvYWRFdmVudCkpIHsKICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgYW4gdW5sb2Fk
IGV2ZW50IGxpc3RlbmVyIik7CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNVbmxv
YWRMaXN0ZW5lcjsKICAgICB9CkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNh
bkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICAmJiAh
KGRvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhZG9jdW1lbnRM
b2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkKICAgICAgICAg
JiYgKCFmcmFtZUxvYWRlci0+c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkgfHwg
ZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKCkpCiAg
ICAgICAgICYmICghZG9jdW1lbnQtPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1
bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAh
ZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkp
KQotICAgICAgICAmJiAoIWZyYW1lLT5kb21XaW5kb3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygp
LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQorICAgICAgICAm
JiAoIWRvY3VtZW50LT5kb21XaW5kb3coKSB8fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5oYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCiAgICAgICAgICYmICFEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMo
ZG9jdW1lbnQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApp
bmRleCA5YjJhNTkxNWM0N2NjOWIwN2UwYTQ4YmU0ZGQzZTZlMzFkY2I2ZDlhLi43YzNiYjYxYjFk
ZmVlNGZlMWUwOGRhNmI2OGQzZjJmNTk0MTA5MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6
OnZhbGlkYXRlSW50ZXJhY3RpdmVseShFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAg
ICAgLy8gV2FybiBhYm91dCBhbGwgb2YgdW5mb2N1c2FibGUgY29udHJvbHMuCi0gICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQoKS0+
ZnJhbWUoKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5oYW5kbGVkSW52
YWxpZENvbnRyb2xzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqIHVuaGFuZGxlZEFzc29jaWF0ZWRFbGVtZW50ID0gdW5oYW5kbGVkSW52YWxpZENvbnRy
b2xzW2ldLmdldCgpOwogICAgICAgICAgICAgSFRNTEVsZW1lbnQqIHVuaGFuZGxlZCA9IHRvSFRN
TEVsZW1lbnQodW5oYW5kbGVkQXNzb2NpYXRlZEVsZW1lbnQpOwpAQCAtMjYwLDcgKzI2MCw3IEBA
IGJvb2wgSFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQqIGV2ZW50
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2Uo
IkFuIGludmFsaWQgZm9ybSBjb250cm9sIHdpdGggbmFtZT0nJW5hbWUnIGlzIG5vdCBmb2N1c2Fi
bGUuIik7CiAgICAgICAgICAgICBtZXNzYWdlLnJlcGxhY2UoIiVuYW1lIiwgdW5oYW5kbGVkQXNz
b2NpYXRlZEVsZW1lbnQtPm5hbWUoKSk7Ci0gICAgICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCkt
PmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7
CisgICAgICAgICAgICBkb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UsIGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVy
RWxlbWVudC5jcHAKaW5kZXggNmI3MDY2MDJkNDdiMzhhYTlkNmNjYTM5ODRjOTc2NTE3MjhhYzc0
MS4uNTYwZjM4Yjk2NzljYTIyN2M0NjI2NjBmOWI0ZjI5Y2ZkYWQwZDZhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAtNzMsNyArNzMsNyBA
QCBEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25z
dAogCiBET01XaW5kb3cqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvbVdp
bmRvdygpIDogMDsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgOiAwOwogfQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxl
bWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDFl
ZTYyMTVmZDAzMmNkYjVlMTkxODg5MzU0N2RkMGIwNDhjZTMyYWMuLjM0YTBlNTdiNWRmZWFlMzQ0
MzhlYmJlZjgwY2M5YjFlMTg2YzMzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTE2OSwxMyArNTE2OSwxNCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIWNhbnZhcygpKQogICAgICAgICByZXR1cm47
CisgICAgLy8gRklYTUU6IFRoaXMgZ2lhbnQgY2FzY2FkZSBvZiBudWxsIGNoZWNrcyBzZWVtcyBh
IGJpdCBwYXJhbm9pZC4KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjYW52YXMoKS0+ZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZy
YW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwotICAgIERPTVdpbmRvdyogd2luZG93ID0gZnJhbWUtPmRvbVdpbmRvdygpOworICAgIERPTVdp
bmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAgIGlmICghd2luZG93KQog
ICAgICAgICByZXR1cm47CiAgICAgQ29uc29sZSogY29uc29sZSA9IHdpbmRvdy0+Y29uc29sZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAppbmRleCA5Mzk5OWQxZmJiMGJhNjgxOTZlMmU1OWE4OTdiYjkwZmJmZTc4ZTQ3
Li45MGEwYTllNjA5MGUwYzJjMzlkNzg2OWY0MDJkNDMyYjNhMmJmNmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApA
QCAtMTU2LDcgKzE1Niw3IEBAIFN0cmluZyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3Jh
Z2VJZChTdG9yYWdlKiBzdG9yYWdlKQogICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBGcmFtZSog
ZnJhbWUgPSBzdG9yYWdlLT5mcmFtZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGJvb2wgaXNMb2NhbFN0b3JhZ2UgPSAoZnJhbWUtPmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2Uo
ZWMpID09IHN0b3JhZ2UgJiYgIWVjKTsKKyAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gKGZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+bG9jYWxTdG9yYWdlKGVjKSA9PSBzdG9yYWdlICYm
ICFlYyk7CiAgICAgcmV0dXJuIHN0b3JhZ2VJZChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgaXNMb2NhbFN0b3JhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCAzMmZmMjhjMzIyNTMwNGViYjYxMDRjYjczMDBhNDJmNDdiZGM0
MjU1Li5iYzc0NDQwMmY1YmIxNzYwMmNiZTI5MGJmMTNjYzg4YzA5OGM5ZDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZSgpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQodGhpcyA9PSBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsK
IAotICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93
KCkpCisgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpCiAgICAgICAgIHdpbmRvdy0+ZmluaXNoZWRMb2FkaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IDE0YjZmNDM1OTk2NmM1MzAz
YmM3NTljMTgxZmZiOTNkNzViZDdkODEuLmQ3YjViNDg4N2RjYWJmYzlmNWIyMTZjMmVkNDg2ZmI5
MzczZTdjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVy
bFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93CiAgICAgfQogCiAgICAgLy8g
RklYTUU6IERPTVdpbmRvdyBzaG91bGQgZ2V0IHRoZSBVUkwgZnJvbSB0aGUgZG9jdW1lbnQgaXRz
ZWxmLgotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRVUkwoZG9jdW1lbnQtPnVybCgpKTsK
KyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0VVJMKGRvY3VtZW50LT51
cmwoKSk7CiAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkQmVnaW5Eb2N1bWVudChkaXNwYXRj
aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNjMDQ1YzJiMDEy
MWMwMDY1MmJiZDhlZmQwOWJiYWQ1NDA3ODcyODcuLjU2MmI0ZGMxZDkwODIyOTY5N2IzMjkzOTIy
ZDZiMTU2MjY4MjNmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MzU3LDEwICszNTcsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZl
bnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3kpCiAgICAgICAgICAgICAgICAgTm9kZSogY3VycmVu
dEZvY3VzZWROb2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKICAgICAg
ICAgICAgICAgICBpZiAoY3VycmVudEZvY3VzZWROb2RlKQogICAgICAgICAgICAgICAgICAgICBj
dXJyZW50Rm9jdXNlZE5vZGUtPmFib3V0VG9VbmxvYWQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
bV9mcmFtZS0+ZG9tV2luZG93KCkgJiYgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNo
ZWQgPT0gTm9EaXNtaXNzYWwpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCkgJiYgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQg
PT0gTm9EaXNtaXNzYWwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHVubG9hZEV2ZW50UG9s
aWN5ID09IFVubG9hZEV2ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZUhp
ZGVEaXNtaXNzYWw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3co
KS0+ZGlzcGF0Y2hFdmVudChQYWdlVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnBhZ2VoaWRlRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpLCBtX2Zy
YW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkucGFnZWhpZGVFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5Q
YWdlQ2FjaGUoKSksIG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2Fj
aGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiB1bmxvYWRFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7
CkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxv
YWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmco
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGltaW5nLT5uYXZpZ2F0aW9u
U3RhcnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nLT5tYXJrVW5sb2Fk
RXZlbnRTdGFydCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdp
bmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+
ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWluZy0+bWFya1VubG9h
ZEV2ZW50RW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudCh1bmxv
YWRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCktPmRvY3VtZW50KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRj
aEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX3BhZ2VEaXNtaXNz
YWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9IE5vRGlzbWlzc2FsOwpAQCAtNDY0LDcgKzQ2NCw3IEBA
IGJvb2wgRnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwoKQogICAgIC8vIGl0cyBmcmFtZSBpcyBub3Qg
aW4gYSBjb25zaXN0ZW50IHN0YXRlIGZvciByZW5kZXJpbmcsIHNvIGF2b2lkIHNldEpTU3RhdHVz
QmFyVGV4dAogICAgIC8vIHNpbmNlIGl0IG1heSBjYXVzZSBjbGllbnRzIHRvIGF0dGVtcHQgdG8g
cmVuZGVyIHRoZSBmcmFtZS4KICAgICBpZiAoIW1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlh
bEVtcHR5RG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBtX2Zy
YW1lLT5leGlzdGluZ0RPTVdpbmRvdygpKSB7CisgICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRv
dyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSB7CiAgICAgICAgICAgICB3aW5k
b3ctPnNldFN0YXR1cyhTdHJpbmcoKSk7CiAgICAgICAgICAgICB3aW5kb3ctPnNldERlZmF1bHRT
dGF0dXMoU3RyaW5nKCkpOwogICAgICAgICB9CkBAIC04ODYsNyArODg2LDcgQEAgYm9vbCBGcmFt
ZUxvYWRlcjo6Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNv
bnRleHQsIGNvbnN0IEsKICAgICBTdHJpbmcgbWVzc2FnZSA9IChhbGxvd2VkID8gZW1wdHlTdHJp
bmcoKSA6ICJbYmxvY2tlZF0gIikgKyAiVGhlIHBhZ2UgYXQgIiArCiAgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpICsgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVu
dCBmcm9tICIgKyB1cmwuc3RyaW5nKCkgKyAiLlxuIjsKICAgICAgICAgCi0gICAgbV9mcmFtZS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsK
IAogICAgIGlmIChhbGxvd2VkKQogICAgICAgICBtX2NsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJl
Q29udGVudCgpOwpAQCAtOTA0LDcgKzkwNCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNoZWNrSWZS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmCiAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSAoYWxsb3dlZCA/IGVtcHR5U3RyaW5nKCkgOiAiW2Jsb2NrZWRd
ICIpICsgIlRoZSBwYWdlIGF0ICIgKwogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSArICIgcmFuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiICsgdXJsLnN0cmluZygp
ICsgIi5cbiI7CiAgICAgICAgCi0gICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIAogICAgIGlmIChhbGxvd2VkKQogICAg
ICAgICBtX2NsaWVudC0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KGNvbnRleHQsIHVybCk7CkBAIC0x
MzcxLDcgKzEzNzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQo
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5v
dCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6ICIgKyB1cmwpOworICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm90IGFsbG93ZWQgdG8g
bG9hZCBsb2NhbCByZXNvdXJjZTogIiArIHVybCk7CiB9CiAKIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgRnJhbWVMb2FkZXI6OmluaXRpYWxSZXF1ZXN0KCkgY29uc3QKQEAgLTE5MDIsNyArMTkwMiw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAgICAg
CiAgICAgLy8gRGVsZXRlIG9sZCBzdGF0dXMgYmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3Rp
dmF0ZWQgb24gbGFzdCBVUkwpLgogICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0
ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7Ci0gICAgICAgIGlmIChET01XaW5k
b3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYg
KERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpIHsK
ICAgICAgICAgICAgIHdpbmRvdy0+c2V0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgICAgIHdp
bmRvdy0+c2V0RGVmYXVsdFN0YXR1cyhTdHJpbmcoKSk7CiAgICAgICAgIH0KQEAgLTE5NTAsNyAr
MTk1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRG
cmFtZSkKICAgICBtX2ZyYW1lLT5zZXREb2N1bWVudChkb2N1bWVudCk7CiAgICAgZG9jdW1lbnQt
PmRvbVdpbmRvdygpLT5yZXN1bWVGcm9tUGFnZUNhY2hlKCk7CiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBub3cgdGhhdCBEb2N1bWVudCBvd25zIHRoZSBET01XaW5k
b3cuCi0gICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldFVSTChkb2N1bWVudC0+dXJsKCkpOwor
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRVUkwoZG9jdW1lbnQtPnVy
bCgpKTsKIAogICAgIHVwZGF0ZUZpcnN0UGFydHlGb3JDb29raWVzKCk7CiAKQEAgLTI2OTQsNyAr
MjY5NCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkKIAogYm9vbCBGcmFtZUxv
YWRlcjo6ZmlyZUJlZm9yZVVubG9hZEV2ZW50KENocm9tZSogY2hyb21lKQogewotICAgIERPTVdp
bmRvdyogZG9tV2luZG93ID0gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKTsKKyAgICBET01X
aW5kb3cqIGRvbVdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAg
IGlmICghZG9tV2luZG93KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NGFhM2FmYzExMjc2MGI3NjE1
N2VmNjFhM2JkMjAwMTdmNDRhMGE3Li4wYjA2NWRkODMzYzA4ZGZmOTk1ZDRiNzA4MDRlYTkyY2E0
MTE3Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNw
cApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKICAgICAgICAgaWYgKG1fZnJhbWUt
PmxvYWRlcigpLT5zaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb250ZW50LCBy
LnVybCgpKSkgewogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51
ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2ZyYW1lLmdldCgpLCBkb2N1bWVudExvYWRlcigp
LCBpZGVudGlmaWVyKCksIHIpOwogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZGlzcGxheSBkb2N1bWVudCBiZWNhdXNl
IGRpc3BsYXkgZm9yYmlkZGVuIGJ5IFgtRnJhbWUtT3B0aW9ucy5cbiIpKTsKLSAgICAgICAgICAg
IG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsK
KyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCkt
PmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKIAogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDJkZmUzNGNhYzJiYjEyZTg4NjUxZDMy
ODQ1OGE1NjcwMzEwZGQ1ZTYuLmI0ZjE0NzMyM2IyMmU3MTQzYWEzYzQ3MmYwMmE3Y2Y3NjY1MDZl
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmFib3J0KEZyYW1lKiBmcmFtZSkKICAgICBpZiAobV9jb21wbGV0aW9uVHlw
ZSAhPSBOb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBU
aXBNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBh
Ym9ydGVkLiIpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFRpcE1lc3Nh
Z2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQu
Iik7CiAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKIH0KIApAQCAtNTYzLDcgKzU2Myw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgUmVzCiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSAvIDEwMCAhPSAyIHx8IHJlc3BvbnNlLnVybCgpICE9IG1fY3VycmVudEhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkpIHsKICAgICAgICAgaWYgKCh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpFeHBsaWNpdCkgfHwgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZh
bGxiYWNrKSkgewotICAgICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+
YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIG1f
Y3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkgKyAKKyAgICAgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyBtX2N1cnJlbnRI
YW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpICsgCiAgICAgICAgICAgICAgICAg
KChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIpID8gIiBjb3VsZCBub3QgYmUg
ZmV0Y2hlZC4iIDogIiB3YXMgcmVkaXJlY3RlZC4iKSk7CiAgICAgICAgICAgICAvLyBOb3RlIHRo
YXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1c2UgdGhlIGNhY2hlIGdyb3VwIHRvIGJlIGRl
bGV0ZWQuCiAgICAgICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwpAQCAtNjQwLDcgKzY0MCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBicmVh
ayBlYXJsaWVyIGFuZCBwcmV2ZW50IHJlZG93bmxvYWRpbmcgb24gbGF0ZXIgcGFnZSBsb2Fkcz8K
ICAgICBpZiAobV9vcmlnaW5RdW90YUV4Y2VlZGVkUHJldmlvdXNseSAmJiBtX2F2YWlsYWJsZVNw
YWNlSW5RdW90YSA8IG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmVzdGltYXRlZFNpemVJblN0b3JhZ2Uo
KSkgewogICAgICAgICBtX2N1cnJlbnRSZXNvdXJjZSA9IDA7Ci0gICAgICAgIG1fZnJhbWUtPmRv
bVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUg
ZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIpOworICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVy
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGlj
YXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSBzaXplIHF1b3RhIHdhcyBleGNlZWRl
ZC4iKTsKICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJgogICAgIG1fcGVu
ZGluZ0VudHJpZXMucmVtb3ZlKHVybCk7CiAKICAgICBpZiAoKHR5cGUgJiBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkV4cGxpY2l0KSB8fCAodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6RmFsbGJhY2spKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCkt
PmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyB1
cmwuc3RyaW5nKCkgKyAiIGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIpOworICAgICAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRp
b24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgdXJsLnN0cmluZygpICsgIiBjb3Vs
ZCBub3QgYmUgZmV0Y2hlZC4iKTsKICAgICAgICAgLy8gTm90ZSB0aGF0IGNhY2hlVXBkYXRlRmFp
bGVkKCkgY2FuIGNhdXNlIHRoZSBjYWNoZSBncm91cCB0byBiZSBkZWxldGVkLgogICAgICAgICBj
YWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgIH0gZWxzZSB7CkBAIC03MDIsMTMgKzcwMiwxMyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdp
bmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBj
b3VsZCBub3QgYmUgZmV0Y2hlZC4iKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0
IGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLnVybCgpICE9IG1fbWFu
aWZlc3RIYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRv
bVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVz
dCBjb3VsZCBub3QgYmUgZmV0Y2hlZCwgYmVjYXVzZSBhIHJlZGlyZWN0aW9uIHdhcyBhdHRlbXB0
ZWQuIik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xl
KCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0
Y2hlZCwgYmVjYXVzZSBhIHJlZGlyZWN0aW9uIHdhcyBhdHRlbXB0ZWQuIik7CiAgICAgICAgIGNh
Y2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03MjgsNyArNzI4
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVz
dCgpCiAKICAgICBpZiAoIWlzVXBncmFkZUF0dGVtcHQgJiYgIW1fbWFuaWZlc3RSZXNvdXJjZSkg
ewogICAgICAgICAvLyBUaGUgc2VydmVyIHJldHVybmVkIDMwNCBOb3QgTW9kaWZpZWQgZXZlbiB0
aG91Z2ggd2UgZGlkbid0IHNlbmQgYSBjb25kaXRpb25hbCByZXF1ZXN0LgotICAgICAgICBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUg
bWFuaWZlc3QgY291bGQgbm90IGJlIGZldGNoZWQgYmVjYXVzZSBvZiBhbiB1bmV4cGVjdGVkIDMw
NCBOb3QgTW9kaWZpZWQgc2VydmVyIHJlc3BvbnNlLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2Fj
aGUgbWFuaWZlc3QgY291bGQgbm90IGJlIGZldGNoZWQgYmVjYXVzZSBvZiBhbiB1bmV4cGVjdGVk
IDMwNCBOb3QgTW9kaWZpZWQgc2VydmVyIHJlc3BvbnNlLiIpOwogICAgICAgICBjYWNoZVVwZGF0
ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzU0LDcgKzc1NCw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAg
IE1hbmlmZXN0IG1hbmlmZXN0OwogICAgIGlmICghcGFyc2VNYW5pZmVzdChtX21hbmlmZXN0VVJM
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS0+c2l6ZSgpLCBtYW5pZmVzdCkpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgotICAgICAgICBtX2ZyYW1lLT5k
b21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZl
c3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNU
PyIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyIpOwogICAgICAgICBjYWNoZVVw
ZGF0ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTQzLDcgKzk0Myw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAg
ICAgICAgICAgICAgIC8vIFdlIHJhbiBvdXQgb2Ygc3BhY2UgZm9yIHRoaXMgb3JpZ2luLiBGYWxs
IGRvd24gdG8gdGhlIG5vcm1hbCBlcnJvciBoYW5kbGluZwogICAgICAgICAgICAgICAgIC8vIGFm
dGVyIHJlY29yZGluZyB0aGlzIHN0YXRlLgogICAgICAgICAgICAgICAgIG1fb3JpZ2luUXVvdGFF
eGNlZWRlZFByZXZpb3VzbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdp
bmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFp
bGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIpOworICAgICAgICAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
T3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJB
cHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4
Y2VlZGVkLiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmFpbHVyZVJlYXNv
biA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6VG90YWxRdW90YVJlYWNoZWQgJiYgIW1fY2Fs
bGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjlmZmI5MjhmZjQ1ZTFl
N2YyZmY0ZmI2YTQ4MjVhZTUyOGQ3ZDZkMC4uN2I1NjQ2NTM4NjY2YzNmZTQxYTM1YmZiMDA2Mzgy
YTk4YWIzMzk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKICAgICAgICAgbWVzc2FnZSA9ICJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJs
LnN0cmluZygpICsgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIgKyBtX2RvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSArICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7
CiAKICAgICAvLyBGSVhNRTogcHJvdmlkZSBsaW5lIG51bWJlciBhbmQgc291cmNlIFVSTC4KLSAg
ICBmcmFtZSgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKKyAg
ICBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdl
KE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBt
ZXNzYWdlKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFn
ZXMoYm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggM2U2MTAwM2E1
OWU5MTBmYzBmMGUwYjgwZjY4ZDUxMjZkMWU2ZTVjYS4uZDM2MjNkZDFjZGMyZjkzYWM1NzhiZGJi
ZmU5NTEwYzBlYTlkNmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNTk0LDcg
KzU5NCw3IEBAIHZvaWQgRE9NV2luZG93OjpjbGVhckRPTVdpbmRvd1Byb3BlcnRpZXMoKQogCiBi
b29sIERPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9mcmFtZSAmJiBtX2ZyYW1lLT5kb21XaW5kb3coKSA9PSB0aGlzOworICAgIHJl
dHVybiBtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpID09IHRoaXM7
CiB9CiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQpAQCAtMTI2MCw3ICsxMjYwLDcg
QEAgRE9NV2luZG93KiBET01XaW5kb3c6OnNlbGYoKSBjb25zdAogICAgIGlmICghbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9tV2luZG93KCk7Cisg
ICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogfQogCiBET01XaW5k
b3cqIERPTVdpbmRvdzo6b3BlbmVyKCkgY29uc3QKQEAgLTEyNzIsNyArMTI3Miw3IEBAIERPTVdp
bmRvdyogRE9NV2luZG93OjpvcGVuZXIoKSBjb25zdAogICAgIGlmICghb3BlbmVyKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiBvcGVuZXItPmRvbVdpbmRvdygpOworICAgIHJldHVy
biBvcGVuZXItPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogfQogCiBET01XaW5kb3cqIERPTVdp
bmRvdzo6cGFyZW50KCkgY29uc3QKQEAgLTEyODIsOSArMTI4Miw5IEBAIERPTVdpbmRvdyogRE9N
V2luZG93OjpwYXJlbnQoKSBjb25zdAogCiAgICAgRnJhbWUqIHBhcmVudCA9IG1fZnJhbWUtPnRy
ZWUoKS0+cGFyZW50KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgcmV0dXJuIHBhcmVudC0+
ZG9tV2luZG93KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpOwogCi0gICAgcmV0dXJuIG1fZnJhbWUtPmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKIH0KIAogRE9NV2luZG93KiBET01XaW5kb3c6
OnRvcCgpIGNvbnN0CkBAIC0xMjk2LDcgKzEyOTYsNyBAQCBET01XaW5kb3cqIERPTVdpbmRvdzo6
dG9wKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIG1fZnJhbWUtPnRyZWUoKS0+dG9wKCktPmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2Zy
YW1lLT50cmVlKCktPnRvcCgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKIH0KIAogRG9jdW1l
bnQqIERPTVdpbmRvdzo6ZG9jdW1lbnQoKSBjb25zdApAQCAtMTgyMywxMSArMTgyMywxMSBAQCBG
cmFtZSogRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IEF0b21pY1N0cmluZyYgZnJhbQogICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+c2V0T3BlbmVy
KG9wZW5lckZyYW1lKTsKICAgICBuZXdGcmFtZS0+cGFnZSgpLT5zZXRPcGVuZWRCeURPTSgpOwog
Ci0gICAgaWYgKG5ld0ZyYW1lLT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2Vzcyhh
Y3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkpCisgICAgaWYgKG5ld0ZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBs
ZXRlZFVSTCkpCiAgICAgICAgIHJldHVybiBuZXdGcmFtZTsKIAogICAgIGlmIChmdW5jdGlvbikK
LSAgICAgICAgZnVuY3Rpb24obmV3RnJhbWUtPmRvbVdpbmRvdygpLCBmdW5jdGlvbkNvbnRleHQp
OworICAgICAgICBmdW5jdGlvbihuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGZ1
bmN0aW9uQ29udGV4dCk7CiAKICAgICBpZiAoY3JlYXRlZCkKICAgICAgICAgbmV3RnJhbWUtPmxv
YWRlcigpLT5jaGFuZ2VMb2NhdGlvbihhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCksIGNv
bXBsZXRlZFVSTCwgcmVmZXJyZXIsIGZhbHNlLCBmYWxzZSk7CkBAIC0xODc1LDExICsxODc1LDEx
IEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBET01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluCiAKICAgICAgICAgS1VSTCBjb21wbGV0ZWRVUkwg
PSBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCi0gICAg
ICAgIGlmICh0YXJnZXRGcmFtZS0+ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3Mo
YWN0aXZlV2luZG93LCBjb21wbGV0ZWRVUkwpKQotICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5kb21XaW5kb3coKTsKKyAgICAgICAgaWYgKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBsZXRl
ZFVSTCkpCisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpOwogCiAgICAgICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmV0dXJuIHRhcmdldEZyYW1lLT5kb21XaW5kb3coKTsKKyAgICAgICAgICAgIHJldHVybiB0YXJn
ZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAKICAgICAgICAgLy8gRm9yIHdoYXRl
dmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBmaXJzdCB3aW5kb3cgcmF0aGVyIHRoYW4gdGhl
IGFjdGl2ZSB3aW5kb3cgdG8KICAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBvdXRnb2luZyByZWZl
cnJlci4gV2UgcmVwbGljYXRlIHRoYXQgYmVoYXZpb3IgaGVyZS4KQEAgLTE4OTAsNyArMTg5MCw3
IEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBET01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgICAgICAgICBmaXJzdEZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLAogICAgICAgICAgICAgbG9ja0hpc3RvcnksCiAgICAg
ICAgICAgICBmYWxzZSk7Ci0gICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZG9tV2luZG93KCk7
CisgICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAg
ICAgfQogCiAgICAgV2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMod2luZG93RmVhdHVyZXNT
dHJpbmcpOwpAQCAtMTkwNCw3ICsxOTA0LDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdp
bmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KICAg
ICB3aW5kb3dGZWF0dXJlcy53aWR0aCA9IHdpbmRvd1JlY3Qud2lkdGgoKTsKIAogICAgIEZyYW1l
KiByZXN1bHQgPSBjcmVhdGVXaW5kb3codXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1
cmVzLCBhY3RpdmVXaW5kb3csIGZpcnN0RnJhbWUsIG1fZnJhbWUpOwotICAgIHJldHVybiByZXN1
bHQgPyByZXN1bHQtPmRvbVdpbmRvdygpIDogMDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA6IDA7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzaG93
TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9n
RmVhdHVyZXNTdHJpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
d1Byb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
CmluZGV4IGFkMDQ2OTgwNmY5N2NmMDQ5ZGVkZTkxNmVmOGY1OWUyOWE2NzAxOGQuLjZmMTA5ZjFl
ZDhmYzE0ODM3MjBlN2E5NTA0MjdhZGRkM2E0NTIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93UHJvcGVydHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAs
NyArNDEsNyBAQCBET01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZy
YW1lKQogICAgIC8vIFNlZSBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRt
bCBmb3IgdGhlIHJlY2lwZS4KICAgICAvLyBXZSBzaG91bGQgZml4IHRoYXQuICA8cmRhcjovL3By
b2JsZW0vMTE1NjcxMzI+CiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9hc3NvY2lhdGVk
RE9NV2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7CisgICAgICAgIG1fYXNzb2NpYXRlZERP
TVdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgICAgICBtX2Fz
c29jaWF0ZWRET01XaW5kb3ctPnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7CiAgICAgfQogfQpAQCAt
NzAsNyArNzEsNyBAQCB2b2lkIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21Q
YWdlQ2FjaGUoRnJhbWUqIGZyYW1lKQogICAgIC8vIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gaXRz
IEZyYW1lIGluIHRoZSBmaXJzdCBwbGFjZSBhbmQgaXQgc2hvdWxkIHN0aWxsIGhhdmUgYW4gYXNz
b2NpYXRlZCBET01XaW5kb3cuCiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICBBU1NFUlQoIW1fZnJh
bWUpOwotICAgIEFTU0VSVChmcmFtZS0+ZG9tV2luZG93KCkgPT0gbV9hc3NvY2lhdGVkRE9NV2lu
ZG93KTsKKyAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpID09IG1fYXNz
b2NpYXRlZERPTVdpbmRvdyk7CiAKICAgICBtX2ZyYW1lID0gZnJhbWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGI4MjA1NzUxYjQ0NzJmYzNiN2ZjOTNkZGQ4
ZDdmZmEyM2E5MGM4YmMuLmM3NDRjMTg5ZWJkYmY0ZjBhNDBiOGE5OWQ4ZTc5YTI1ZGIwYTZkNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00MjMsNyArNDIzLDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSog
aW5uZXJGcmFtZSwgRHJhZ0RhdGEqIGRyYWcKICAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS0+ZHJh
Z0NhcmV0Q29udHJvbGxlcigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpID8gIiIgOiBkcmFn
RGF0YS0+YXNQbGFpblRleHQoaW5uZXJGcmFtZSk7CiAgICAgTm9kZSogdGFyZ2V0ID0gaW5uZXJG
cmFtZS0+ZWRpdG9yKCktPmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLT5kcmFnQ2FyZXRDb250
cm9sbGVyKCktPmNhcmV0UG9zaXRpb24oKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3Ao
aW5uZXJGcmFtZS0+ZG9tV2luZG93KCksIHRleHQpLCBlYyk7CisgICAgcmV0dXJuIHRhcmdldC0+
ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCksIHRleHQpLCBlYyk7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IDQ4NmQ0YmZjZGI5ZGM3MGYyOWY1MGEzOTlhYmY5MTdmNjAyMGY2
MDcuLjNkZmZiOWZhNGY2ZDBlMTA1YTc0ZGI2ODFhNmM0ZjE3Y2RmZDEwZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMyOTIsNyArMzI5Miw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1
bmRlcmx5aW5nRXZlCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkK
ICAgICAgICAgdmlldy0+cmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOwogCi0gICAgUmVmUHRy
PFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLT5kb21XaW5kb3co
KSwgdGV4dCwgaW5wdXRUeXBlKTsKKyAgICBSZWZQdHI8VGV4dEV2ZW50PiBldmVudCA9IFRleHRF
dmVudDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1
dFR5cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDM4YmVhNzUw
NThiOGQwZDJjOTAyOGJmZDM0NDcwZTk3NjIwZGNhODUuLjJhYmMxZmQ5ZGMxZTk5ZGY0MjBlN2I3
M2IxZDY5ZTI1MmIzNWNlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02ODAsMTIgKzY4MCw2
IEBAIHZvaWQgRnJhbWU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9sb2Fk
ZXIpOwogfQogCi1ET01XaW5kb3cqIEZyYW1lOjpkb21XaW5kb3coKSBjb25zdAotewotICAgIEFT
U0VSVChtX2RvYy0+ZG9tV2luZG93KCkpOwotICAgIHJldHVybiBtX2RvYy0+ZG9tV2luZG93KCk7
Ci19Ci0KIHZvaWQgRnJhbWU6OndpbGxEZXRhY2hQYWdlKCkKIHsKICAgICBpZiAoRnJhbWUqIHBh
cmVudCA9IHRyZWUoKS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMzBlNmQ1Y2Q3ZWMy
ZDRjZmY0MTliZDhkMzI2NTI4NTViZGJiZjJkMy4uM2E1Mjk1NmE0NTNiOGNhNjI1NDYzMjljMTkw
N2JhODkzYTkyODcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTI4LDEwICsxMjgsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0
KGJvb2wgc2hvd0RlYnVnSW5mbyA9IGZhbHNlKSBjb25zdDsKIAotICAgICAgICAvLyBGSVhNRTog
Q2FsbGVycyBzaG91bGQgdXNlIGRvY3VtZW50KCktPmRvbVdpbmRvdygpIGRpcmVjdGx5LgotICAg
ICAgICBET01XaW5kb3cqIGRvbVdpbmRvdygpIGNvbnN0OwotICAgICAgICBET01XaW5kb3cqIGV4
aXN0aW5nRE9NV2luZG93KCkgeyByZXR1cm4gZG9tV2luZG93KCk7IH0KLQogICAgICAgICBzdGF0
aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCopOwogCiAgICAgICAgIFNldHRp
bmdzKiBzZXR0aW5ncygpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmNwcAppbmRleCBkZjZlYThkZjU0MmI4NWQ5M2M3ZDFlNmRjNTM5NGYwOGY1YjA2NWY4Li5kNDRl
ZmY5MzFiNmQ4MDdjYjkxYmU1ZTAxNjk1ZTA3ZjJhMTkzNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgTG9jYXRpb246OnJlcGxhY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW5kb3cqIGZpCiAgICAg
aWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgLy8gTm90ZTogV2UgY2FsbCBET01X
aW5kb3c6OnNldExvY2F0aW9uIGRpcmVjdGx5IGhlcmUgYmVjYXVzZSByZXBsYWNlKCkgYWx3YXlz
IG9wZXJhdGVzIG9uIHRoZSBjdXJyZW50IGZyYW1lLgotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygp
LT5zZXRMb2NhdGlvbih1cmwsIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIExvY2tIaXN0b3J5
QW5kQmFja0ZvcndhcmRMaXN0KTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+c2V0TG9jYXRpb24odXJsLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCBMb2NrSGlzdG9y
eUFuZEJhY2tGb3J3YXJkTGlzdCk7CiB9CiAKIHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5k
b3cqIGFjdGl2ZVdpbmRvdykKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIExvY2F0aW9uOjpyZWxv
YWQoRE9NV2luZG93KiBhY3RpdmVXaW5kb3cpCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFy
IHRoaXMgY3Jvc3Mtb3JpZ2luIHNlY3VyaXR5IGNoZWNrIGlzIHZhbHVhYmxlLgogICAgIC8vIFdl
IGFsbG93IG9uZSBwYWdlIHRvIGNoYW5nZSB0aGUgbG9jYXRpb24gb2YgYW5vdGhlci4gV2h5IGJs
b2NrIGF0dGVtcHRzIHRvIHJlbG9hZD8KICAgICAvLyBPdGhlciBsb2NhdGlvbiBvcGVyYXRpb25z
IHNpbXBseSBibG9jayB1c2Ugb2YgSmF2YVNjcmlwdCBVUkxzIGNyb3NzIG9yaWdpbi4KLSAgICBE
T01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IG1fZnJhbWUtPmRvbVdpbmRvdygpOworICAgIERPTVdp
bmRvdyogdGFyZ2V0V2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAg
ICAgaWYgKCFhY3RpdmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXRX
aW5kb3ctPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHRhcmdldFdpbmRvdy0+cHJpbnRF
cnJvck1lc3NhZ2UodGFyZ2V0V2luZG93LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShh
Y3RpdmVXaW5kb3cpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQg
TG9jYXRpb246OnNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBET01XaW5kb3cqIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93CiAgICAgRnJhbWUqIGZyYW1lID0gbV9mcmFtZS0+bG9hZGVyKCkt
PmZpbmRGcmFtZUZvck5hdmlnYXRpb24oU3RyaW5nKCksIGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQo
KSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5kb21XaW5k
b3coKS0+c2V0TG9jYXRpb24odXJsLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKKyAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybCwgYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDdj
YjM2OGIyOWFmYmI3YmVlYWE0N2U0N2NlNjg1ZmM2Zjk3MWI2NGYuLmQ0NTAyMTA2ZWU2YzllYmI0
ZjFlNjM2YTZmNDU4NmM1MTliYTVhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIG9sZFZhbHVlLAogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lc1tpXS0+ZG9tV2luZG93KCktPnNlc3Npb25T
dG9yYWdlKGVjKTsKKyAgICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZXNbaV0tPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXNzaW9uU3RvcmFnZShlYyk7CiAgICAgICAgICAgICBp
ZiAoIWVjKQogICAgICAgICAgICAgICAgIGZyYW1lc1tpXS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdp
bmRvd0V2ZW50KFN0b3JhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQs
IGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCks
IHN0b3JhZ2UpKTsKICAgICAgICAgfQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLAogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAg
U3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lc1tpXS0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZShl
Yyk7CisgICAgICAgICAgICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWVzW2ldLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+bG9jYWxTdG9yYWdlKGVjKTsKICAgICAgICAgICAgIGlmICghZWMpCiAg
ICAgICAgICAgICAgICAgZnJhbWVzW2ldLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQo
U3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgc3RvcmFnZSkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwCmluZGV4IDE1MmNlOGJiNzU5YzFlYzY0MzNmZGE4ZDU3ODc2NjE4NTAzZmMyNjcuLmNhYzFh
ZWEwN2UwOTBkNzRlMjVlYTM0NjAwOWYyNWM3ZDQ2ODBlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0xOTYsOCArMTk2LDggQEAgc3RhdGlj
IGludCBwYXJzZXJMaW5lTnVtYmVyKERvY3VtZW50KiBkb2N1bWVudCkKIAogc3RhdGljIHZvaWQg
cmVwb3J0TWVzc2FnZShEb2N1bWVudCogZG9jdW1lbnQsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+
ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGRvY3Vt
ZW50LT5kb2N1bWVudFVSSSgpLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSk7CisgICAgaWYg
KGRvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICBkb2N1bWVudC0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwg
bWVzc2FnZSwgZG9jdW1lbnQtPmRvY3VtZW50VVJJKCksIHBhcnNlckxpbmVOdW1iZXIoZG9jdW1l
bnQpKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGli
eHNsdC5jcHAKaW5kZXggYTE4YjdiMTY3MGUzNTQ5OGFkYjI1MmI2MjM1YzY3NjI1OGU1MTgyMi4u
MGI4MzQwY2Q5NWNhZWJlZmY4ZTE4MWY1YTEzNWY5MWNjMGVjMzc4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0xNDUsOCArMTQ1LDggQEAgYm9v
bCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBt
X3N0eWxlc2hlZXREb2NUYWtlbiA9IGZhbHNlOwogCiAgICAgQ29uc29sZSogY29uc29sZSA9IDA7
Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAg
ICAgY29uc29sZSA9IGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpOworICAgIGlmIChvd25l
ckRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIGNvbnNvbGUgPSBvd25lckRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5jb25zb2xlKCk7CiAKICAgICBYTUxEb2N1bWVudFBhcnNlclNjb3BlIHNj
b3BlKGNhY2hlZFJlc291cmNlTG9hZGVyKCksIFhTTFRQcm9jZXNzb3I6OmdlbmVyaWNFcnJvckZ1
bmMsIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jLCBjb25zb2xlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggMDc2YTg1MmQwNmQ4Mzcx
MDM3NjIyNjQ1YjAxMTk0NTJlY2JlMjRkNC4uZTIxYzgyN2MyNWRiYzVlZmQzMWJlNzA1ZjlmMzZm
NTJkZTU0ODI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCkBAIC0xMzgsOCArMTM4LDggQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNv
bnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgfQogCiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUg
PSAwOwotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHls
ZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnNvbGUg
PSBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKKyAgICAgICAgaWYgKGdsb2JhbFByb2Nl
c3Nvci0+eHNsU3R5bGVzaGVldCgpLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAg
ICAgICBjb25zb2xlID0gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPm93bmVyRG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKICAgICAgICAgeG1sU2V0U3RydWN0dXJl
ZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAg
ICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1bmMoY29uc29sZSwgWFNMVFByb2Nlc3Nvcjo6Z2VuZXJp
Y0Vycm9yRnVuYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yUXQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAKaW5kZXgg
YzBhYjRkNjkzMTdkNWMzMWMzNmNiNGFhMDNkYmU3MDZjMTUzYTk5OC4uYTY3YzVmZGU3NmZjYzU2
OGNlM2M0YzY4YzYxMDYwZDQwYmI5MzEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3JRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JRdC5jcHAKQEAgLTgzLDkgKzgzLDggQEAgdm9pZCBYU0xUTWVzc2FnZUhhbmRsZXI6OmhhbmRs
ZU1lc3NhZ2UoUXRNc2dUeXBlIHR5cGUsIGNvbnN0IFFTdHJpbmcmIGRlc2NyaXB0aW8KICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgQ29uc29sZSogY29uc29sZSA9IG1fZG9jdW1lbnQtPmZy
YW1lKCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCk7Ci0gICAgY29uc29sZS0+YWRkTWVzc2FnZShY
TUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIGRlc2NyaXB0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlTG9jYXRpb24udXJpKCkudG9TdHJpbmcoKSwgc291
cmNlTG9jYXRpb24ubGluZSgpKTsKKyAgICBDb25zb2xlKiBjb25zb2xlID0gbV9kb2N1bWVudC0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKKyAgICBjb25zb2xlLT5hZGRNZXNzYWdlKFhNTE1lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgZGVzY3JpcHRpb24sIHNvdXJjZUxvY2F0
aW9uLnVyaSgpLnRvU3RyaW5nKCksIHNvdXJjZUxvY2F0aW9uLmxpbmUoKSk7CiB9CiAKIGNsYXNz
IFhTTFRVcmlSZXNvbHZlciA6IHB1YmxpYyBRQWJzdHJhY3RVcmlSZXNvbHZlciB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggYjBkYWU2MDk3N2Y0Mzk3Y2FmNWY4NWEy
MWNlMDUxYWIyYWM4MGEyNC4uMDhjMTFkZDM5MjQwY2QzNWI0YTNiZGViNjQyZjE3NjZkMDJmMzBh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtNzgsMTIgKzc4LDkg
QEAgdXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENTdHJpbmcgZnJhbWVPcmlnaW4oRnJhbWUqIGZyYW1l
KQorc3RhdGljIENTdHJpbmcgdG9PcmlnaW5TdHJpbmcoRnJhbWUqIGZyYW1lKQogewotICAgIERP
TVdpbmRvdyogd2luZG93ID0gZnJhbWUtPmRvbVdpbmRvdygpOwotICAgIFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4gPSB3aW5kb3ctPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgQ1N0cmluZyBsYXRpbk9y
aWdpbiA9IG9yaWdpbi0+dG9TdHJpbmcoKS5sYXRpbjEoKTsKLSAgICByZXR1cm4gbGF0aW5Pcmln
aW47CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0
cmluZygpLmxhdGluMSgpOwogfQogCiBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpDaHJvbWVDbGll
bnRCbGFja0JlcnJ5KFdlYlBhZ2VQcml2YXRlKiBwYWdlUHJpdmF0ZSkKQEAgLTExMSw3ICsxMDgs
NyBAQCB2b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzcwogI2VuZGlmCiAKICAgICBUaW1lckJhc2U6OmZp
cmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwotICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSBm
cmFtZU9yaWdpbihmcmFtZSk7CisgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3Ry
aW5nKGZyYW1lKTsKICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+cnVuSmF2YVNjcmlw
dEFsZXJ0KG1lc3NhZ2UuY2hhcmFjdGVycygpLCBtZXNzYWdlLmxlbmd0aCgpLCBsYXRpbk9yaWdp
bi5kYXRhKCksIGxhdGluT3JpZ2luLmxlbmd0aCgpKTsKIH0KIApAQCAtMTIzLDcgKzEyMCw3IEBA
IGJvb2wgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lCiAjZW5kaWYKIAogICAgIFRpbWVyQmFzZTo6ZmlyZVRp
bWVyc0luTmVzdGVkRXZlbnRMb29wKCk7Ci0gICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZyYW1l
T3JpZ2luKGZyYW1lKTsKKyAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gdG9PcmlnaW5TdHJpbmco
ZnJhbWUpOwogICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+cnVuSmF2YVNj
cmlwdENvbmZpcm0obWVzc2FnZS5jaGFyYWN0ZXJzKCksIG1lc3NhZ2UubGVuZ3RoKCksIGxhdGlu
T3JpZ2luLmRhdGEoKSwgbGF0aW5PcmlnaW4ubGVuZ3RoKCkpOwogfQogCkBAIC0xMzcsNyArMTM0
LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZy
YW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXMKICNlbmRpZgogCiAgICAgVGltZXJCYXNlOjpm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKLSAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0g
ZnJhbWVPcmlnaW4oZnJhbWUpOworICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSB0b09yaWdpblN0
cmluZyhmcmFtZSk7CiAgICAgV2ViU3RyaW5nIGNsaWVudFJlc3VsdDsKICAgICBpZiAobV93ZWJQ
YWdlUHJpdmF0ZS0+bV9jbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQobWVzc2FnZS5jaGFyYWN0
ZXJzKCksIG1lc3NhZ2UubGVuZ3RoKCksIGRlZmF1bHRWYWx1ZS5jaGFyYWN0ZXJzKCksIGRlZmF1
bHRWYWx1ZS5sZW5ndGgoKSwgbGF0aW5PcmlnaW4uZGF0YSgpLCBsYXRpbk9yaWdpbi5sZW5ndGgo
KSwgY2xpZW50UmVzdWx0KSkgewogICAgICAgICByZXN1bHQgPSBjbGllbnRSZXN1bHQ7CkBAIC0z
ODYsNyArMzgzLDcgQEAgYm9vbCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLAogI2VuZGlmCiAKICAgICBUaW1l
ckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwotICAgIENTdHJpbmcgbGF0aW5P
cmlnaW4gPSBmcmFtZU9yaWdpbihmcmFtZSk7CisgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRv
T3JpZ2luU3RyaW5nKGZyYW1lKTsKICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGll
bnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtZXNzYWdlLmNoYXJhY3RlcnMoKSwgbWVz
c2FnZS5sZW5ndGgoKSwgbGF0aW5PcmlnaW4uZGF0YSgpLCBsYXRpbk9yaWdpbi5sZW5ndGgoKSk7
CiB9CiAKQEAgLTc2OCw3ICs3NjUsNyBAQCB2b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OmZ1
bGxTY3JlZW5SZW5kZXJlckNoYW5nZWQoUmVuZGVyQm94KiBmdWxsU2NyZWVuUmVuZAogdm9pZCBD
aHJvbWVDbGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0V2ViR0xQZXJtaXNzaW9uKEZyYW1lKiBmcmFt
ZSkKIHsKICAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZy
YW1lT3JpZ2luKGZyYW1lKTsKKyAgICAgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2lu
U3RyaW5nKGZyYW1lKTsKICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPnJlcXVl
c3RXZWJHTFBlcm1pc3Npb24obGF0aW5PcmlnaW4uZGF0YSgpKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCmluZGV4IDcyMmU4
MGY1MzJjMWRkZTZiMGFiODI3NDJkMmViNzAzYzZlYzcxNjEuLmVmYTBjOTA5OGZlZWVkZDIxNzdm
NmFlM2RmNGJhZGJmMmMyZjE3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1N0b3JhZ2VBcmVhUHJveHkuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTdG9yYWdlQXJl
YVByb3h5OjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3VwLCBj
b25zdCBTdHIKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAtPnBh
Z2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdl
cy5iZWdpbigpOyBpdCAhPSBwYWdlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFt
ZS0+ZG9tV2luZG93KCktPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCk7CisgICAgICAgICAgICBTdG9y
YWdlKiBzdG9yYWdlID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5vcHRpb25hbExv
Y2FsU3RvcmFnZSgpOwogICAgICAgICAgICAgaWYgKHN0b3JhZ2UgJiYgZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSAmJiAhaXNFdmVudFNv
dXJjZShzdG9yYWdlLCBzb3VyY2VBcmVhSW5zdGFuY2UpKQogICAgICAgICAgICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHBhZ2VVUkws
IHN0b3JhZ2UpKTsKICAgICAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgU3RvcmFnZUFy
ZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3Vw
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFn
ZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKSB7Ci0gICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZS0+ZG9tV2luZG93KCktPm9w
dGlvbmFsU2Vzc2lvblN0b3JhZ2UoKTsKKyAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+b3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpOwogICAg
ICAgICBpZiAoc3RvcmFnZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
ZXF1YWwoc2VjdXJpdHlPcmlnaW4pICYmICFpc0V2ZW50U291cmNlKHN0b3JhZ2UsIHNvdXJjZUFy
ZWFJbnN0YW5jZSkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRv
d0V2ZW50KFN0b3JhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBwYWdlVVJMLCBzdG9yYWdlKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NTWVzc2FnZUV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTU1lc3NhZ2VFdmVudC5jcHAKaW5kZXgg
NTNlYTQzY2UxM2Q5MzgzYjk2OGRlODY4ZjM1YzIwNzBkYjg4ZDZhMy4uMDZjZjY2ZmM1NTkzM2Rm
MTZhNjgwNDg5YTc1ODI3MDNhNjU1Nzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRE9NTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJET01NZXNzYWdlRXZlbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiV2ViRE9NTWVzc2FnZUV2ZW50LmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKQEAg
LTU1LDcgKzU2LDcgQEAgdm9pZCBXZWJET01NZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQo
Y29uc3QgV2ViU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwKICAgICBBU1NFUlQoaXNNZXNz
YWdlRXZlbnQoKSk7CiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSAwOwogICAgIGlmIChzb3VyY2VG
cmFtZSkKLSAgICAgICAgd2luZG93ID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViRnJhbWVJbXBsKj4o
c291cmNlRnJhbWUpLT5mcmFtZSgpLT5kb21XaW5kb3coKTsKKyAgICAgICAgd2luZG93ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViRnJhbWVJbXBsKj4oc291cmNlRnJhbWUpLT5mcmFtZSgpLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7
CiAgICAgdW53cmFwPE1lc3NhZ2VFdmVudD4oKS0+aW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIG1lc3NhZ2VEYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCB3aW5k
b3csIHBvcnRzLnJlbGVhc2UoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmNwcAppbmRleCA2N2Q4MWFkZGE1YWFjZmE5OGVmYmRmOGE0ZGU0OTUwNjg2Njc4
Y2NhLi5hMWYzZWFiNzVhOWQxNjBhNzVmOThiZmMxNTEzOTRmYTdiNmM5Y2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTgwOSwxMCArODA5LDEw
IEBAIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIFdlYkZyYW1lSW1wbDo6YW5pbWF0aW9uQ29udHJv
bGxlcigpCiAKIFdlYlBlcmZvcm1hbmNlIFdlYkZyYW1lSW1wbDo6cGVyZm9ybWFuY2UoKSBjb25z
dAogewotICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+ZG9tV2luZG93KCkpCisgICAgaWYg
KCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gV2ViUGVyZm9ybWFuY2UoKTsKIAotICAgIHJldHVy
biBXZWJQZXJmb3JtYW5jZShtX2ZyYW1lLT5kb21XaW5kb3coKS0+cGVyZm9ybWFuY2UoKSk7Cisg
ICAgcmV0dXJuIFdlYlBlcmZvcm1hbmNlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5wZXJmb3JtYW5jZSgpKTsKIH0KIAogTlBPYmplY3QqIFdlYkZyYW1lSW1wbDo6d2luZG93T2Jq
ZWN0KCkgY29uc3QKQEAgLTg4Nyw3ICs4ODcsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6YWRkTWVz
c2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25zb2xlTWVzc2FnZSYgbWVzc2FnZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGZyYW1lKCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFk
ZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgd2ViQ29yZU1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZS50ZXh0KTsKKyAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIHdlYkNvcmVNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UudGV4dCk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVJbXBsOjpjb2xsZWN0R2FyYmFnZSgpCkBAIC0xMTgwLDcgKzExODAsNyBAQCB2b2lkIFdl
YkZyYW1lSW1wbDo6Y29tbWl0RG9jdW1lbnREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCiAKIHVuc2lnbmVkIFdlYkZyYW1lSW1wbDo6dW5sb2FkTGlzdGVuZXJDb3VudCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lKCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZl
bnRMaXN0ZW5lcnMoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiBib29sIFdlYkZyYW1lSW1w
bDo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdApAQCAtMTk1NiwzNCArMTk1NiwyOSBA
QCB2b2lkIFdlYkZyYW1lSW1wbDo6c2VuZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnQoaW50IG9yaWVu
dGF0aW9uKQogCiB2b2lkIFdlYkZyYW1lSW1wbDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJT
dHJpbmcmIGV2ZW50VHlwZSwgV2ViRE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKIHsKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRvbVdpbmRvdygp
OwotCi0gICAgRXZlbnRMaXN0ZW5lcldyYXBwZXIqIGxpc3RlbmVyV3JhcHBlciA9Ci0gICAgICAg
IGxpc3RlbmVyLT5jcmVhdGVFdmVudExpc3RlbmVyV3JhcHBlcihldmVudFR5cGUsIHVzZUNhcHR1
cmUsIHdpbmRvdyk7Ci0KLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGFkb3B0UmVmKGxpc3RlbmVyV3JhcHBlciksIHVzZUNhcHR1cmUpOworICAg
IERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7Cisg
ICAgRXZlbnRMaXN0ZW5lcldyYXBwZXIqIGxpc3RlbmVyV3JhcHBlciA9IGxpc3RlbmVyLT5jcmVh
dGVFdmVudExpc3RlbmVyV3JhcHBlcihldmVudFR5cGUsIHVzZUNhcHR1cmUsIHdpbmRvdyk7Cisg
ICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgYWRvcHRSZWYobGlzdGVuZXJX
cmFwcGVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IFdlYlN0cmluZyYgZXZlbnRUeXBlLCBXZWJET01FdmVudExpc3RlbmVy
KiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIERPTVdpbmRvdyogd2luZG93ID0g
bV9mcmFtZS0+ZG9tV2luZG93KCk7Ci0KLSAgICBFdmVudExpc3RlbmVyV3JhcHBlciogbGlzdGVu
ZXJXcmFwcGVyID0KLSAgICAgICAgbGlzdGVuZXItPmdldEV2ZW50TGlzdGVuZXJXcmFwcGVyKGV2
ZW50VHlwZSwgdXNlQ2FwdHVyZSwgd2luZG93KTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOworICAgIEV2ZW50TGlzdGVuZXJXcmFwcGVy
KiBsaXN0ZW5lcldyYXBwZXIgPSBsaXN0ZW5lci0+Z2V0RXZlbnRMaXN0ZW5lcldyYXBwZXIoZXZl
bnRUeXBlLCB1c2VDYXB0dXJlLCB3aW5kb3cpOwogICAgIHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyV3JhcHBlciwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wg
V2ViRnJhbWVJbXBsOjpkaXNwYXRjaEV2ZW50KGNvbnN0IFdlYkRPTUV2ZW50JiBldmVudCkKIHsK
ICAgICBBU1NFUlQoIWV2ZW50LmlzTnVsbCgpKTsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9tV2lu
ZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVJbXBsOjpkaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYgaW50ZW5kZWRUYXJnZXRPcmlnaW4sIGNvbnN0IFdlYkRPTUV2ZW50JiBldmVu
dCkKIHsKICAgICBBU1NFUlQoIWV2ZW50LmlzTnVsbCgpKTsKICAgICAvLyBQYXNzIGFuIGVtcHR5
IGNhbGwgc3RhY2ssIHNpbmNlIHdlIGRvbid0IGhhdmUgdGhlIG9uZSBmcm9tIHRoZSBvdGhlciBw
cm9jZXNzLgotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdp
dGhPcmlnaW5DaGVjayhpbnRlbmRlZFRhcmdldE9yaWdpbi5nZXQoKSwgZXZlbnQsIDApOworICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdp
dGhPcmlnaW5DaGVjayhpbnRlbmRlZFRhcmdldE9yaWdpbi5nZXQoKSwgZXZlbnQsIDApOwogfQog
CiBpbnQgV2ViRnJhbWVJbXBsOjpmaW5kTWF0Y2hNYXJrZXJzVmVyc2lvbigpIGNvbnN0CkBAIC0y
MTkwLDExICsyMTg1LDExIEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpkZWxpdmVySW50ZW50KGNvbnN0
IFdlYkludGVudCYgaW50ZW50LCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBCiAgICAgICAgICAgICAo
KmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5l
bCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRB
cnJheSA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCoobV9mcmFtZS0+ZG9t
V2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7
CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheSA9IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKCoobV9mcmFtZS0+ZG9jdW1lbnQoKSksIGNoYW5uZWxzLnJl
bGVhc2UoKSk7CiAKICAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQg
PSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZShtX2ZyYW1lLCBjbGllbnQucmVsZWFzZSgpLCBpbnRl
bnQuYWN0aW9uKCksIGludGVudC50eXBlKCksIGludGVudERhdGEsIHBvcnRBcnJheS5yZWxlYXNl
KCksIHdlYmNvcmVJbnRlbnQtPmV4dHJhcygpKTsKIAotICAgIERPTVdpbmRvd0ludGVudHM6OmZy
b20obV9mcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNl
KCkpOworICAgIERPTVdpbmRvd0ludGVudHM6OmZyb20obV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAK
aW5kZXggMThmNWRlMjBhNWUwZmZhZDEyYTA3MjE3ODUwYjFmZmQ4ZTgwODBjMS4uZTg1MzI2Nzdk
N2ZmYmE1NmJmNGU3ZjZjMjYyYjYyNmEzMGNkY2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKQEAgLTE5OCw4ICsxOTgsNyBAQCBib29s
IFdlYlBhZ2VQb3B1cEltcGw6OmluaXRQYWdlKCkKICAgICBtX3BvcHVwQ2xpZW50LT53cml0ZURv
Y3VtZW50KCp3cml0ZXIpOwogICAgIHdyaXRlci0+ZW5kKCk7CiAKLSAgICBBU1NFUlQoZnJhbWUt
PmV4aXN0aW5nRE9NV2luZG93KCkpOwotICAgIERPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFsbChm
cmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSwgbV9wb3B1cENsaWVudCk7CisgICAgRE9NV2luZG93
UGFnZVBvcHVwOjppbnN0YWxsKGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgbV9wb3B1
cENsaWVudCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CmluZGV4IDRiODA0ZGQ2Mjc1MjJlZmEyYjM0ZTg2MTA5NjcwZjU1MGE2ODNkOGIuLjk2YTU3OTFl
ZTJhOWYwNjU0MTFkMjk4NGFiMGE0ZjgyYTFmYThkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpw
YXVzZVRyYW5zaXRpb24oRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyCiB1bnNpZ25l
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRFdmVudENvdW50KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1l
ID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKGV3a0ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIGZyYW1l
LT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgICAgIHJl
dHVybiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExp
c3RlbmVycygpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCmluZGV4IGU4ZmVjNmQ2MzE3MzY4ZGE2MWU2ZDUzMTQ3OTM4MDlhNjYxZmQzNDEuLjcyMzFi
NTQ5ZGQ5NWZkMjM0MDIxYzJiM2M5YzY4Yzg1Y2UzMWMwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwCkBAIC03NjYsMTIgKzc2NiwxMiBAQCB2b2lkIGV3a19mcmFtZV9pbnRlbnRf
ZGVsaXZlcihjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19JbnRlbnQqIGV3a19pbnRl
bgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdDaGFubmVscy0+c2l6ZSgpOyAr
K2kpCiAgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IG9yaWdDaGFubmVscy0+YXQoaSkucmVs
ZWFzZSgpOwogICAgIH0KLSAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gcG9y
dHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqKHNtYXJ0RGF0YS0+ZnJh
bWUtPmRvbVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCBjaGFubmVscy5yZWxl
YXNlKCkpOworICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCooc21hcnREYXRhLT5mcmFtZS0+ZG9j
dW1lbnQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6RGVs
aXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6RGVs
aXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBXZWJDb3JlOjpEZWxpdmVyZWRJbnRlbnQ6
OmNyZWF0ZShzbWFydERhdGEtPmZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudC0+
YWN0aW9uKCksIGludGVudC0+dHlwZSgpLCBpbnRlbnQtPmRhdGEoKSwgcG9ydHMucmVsZWFzZSgp
LCBpbnRlbnQtPmV4dHJhcygpKTsKIAotICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZy
b20oc21hcnREYXRhLT5mcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVu
dC5yZWxlYXNlKCkpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20oc21hcnRE
YXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZElu
dGVudC5yZWxlYXNlKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmlu
ZGV4IDAwZmViYzhiN2MyYTE0NDY0YjZlNDkzYWQ4OWQ4OTBkNWMxMmZlMDcuLmM3NmRjZTlmNmY2
YjI0M2NkZGRhYzZkNjIyZGIyYjI2YTY5MDA0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cApAQCAtMjc5LDcgKzI3OSw3IEBAIGd1aW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0
UGVuZGluZ1VubG9hZEV2ZW50Q291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIDApOwogCi0gICAg
cmV0dXJuIGNvcmUoZnJhbWUpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVu
ZXJzKCk7CisgICAgcmV0dXJuIGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+
cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpwYXVzZUFuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNo
YXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMGFkMGVjYTI1NGQxNjIyMjlkYWI4MmQzNWZlMDM4
M2UzNTEwOGUzNy4uOTJmOWUwYmI2MTY2ZWNkNzJjMDQ5ZjNlZDM3MjIxMGNlZTIwODhlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05MDYsNyArOTA2LDcgQEAgc3Rh
dGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAKIC0gKHVuc2lnbmVkKV9wZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50CiB7Ci0gICAg
cmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZl
bnRMaXN0ZW5lcnMoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMg
aW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ICAgICBpZiAoZnJhbWVMb2FkZXItPnN1YmZyYW1lTG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lucygp
KQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVT
XSBmb3JLZXk6V2ViRnJhbWVIYXNQbHVnaW5zXTsKICAgICAKLSAgICBpZiAoRE9NV2luZG93KiBk
b21XaW5kb3cgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb21XaW5kb3coKSkgeworICAgIGlmIChE
T01XaW5kb3cqIGRvbVdpbmRvdyA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpKSB7CiAgICAgICAgIGlmIChkb21XaW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCiAgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JLZXk6V2ViRnJhbWVIYXNVbmxvYWRMaXN0
ZW5lcl07CiAgICAgICAgIGlmIChkb21XaW5kb3ctPm9wdGlvbmFsQXBwbGljYXRpb25DYWNoZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAKaW5kZXggYTE3MDMzNjI1NGQwMGE4OTA5YTM4NzA4OGViZTk2Yjc0NTI0
NTk5Ny4uYmNmMDcyZDY1YjU2NGZmMWVkNWFiNmFkNTEyOTQ2MTg0MDkxYjA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwogCiAgICAgaWYgKFFXZWJQYWdlUHJpdmF0ZTo6
ZHJ0UnVuKSB7Ci0gICAgICAgIGludCB1bmxvYWRFdmVudENvdW50ID0gbV9mcmFtZS0+ZG9tV2lu
ZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAgICAgICBpbnQgdW5sb2Fk
RXZlbnRDb3VudCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5s
b2FkRXZlbnRMaXN0ZW5lcnMoKTsKICAgICAgICAgaWYgKHVubG9hZEV2ZW50Q291bnQpCiAgICAg
ICAgICAgICBwcmludGYoIiVzIC0gaGFzICV1IG9udW5sb2FkIGhhbmRsZXIocylcbiIsIHFQcmlu
dGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCB1bmxv
YWRFdmVudENvdW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggZmY1NjBjNjdi
OTJhZmIyY2E3MzJiOWM5NzY5MGYxNWMzNzU3YTUzMS4uZDE4ODBjZjNmYzZiYjk1ZDFhNTk1NTc0
Nzk0MzAxNGQ5N2I5MDBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtNDc4LDcgKzQ3OCw3
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OkRPTVdpbmRvdygvKiBbcmV0dmFsXVtvdXRdICovIElET01X
aW5kb3cqKiB3aW5kb3cpCiAgICAgKndpbmRvdyA9IDA7CiAKICAgICBpZiAoRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUodGhpcykpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OkRPTVdpbmRvdyogY29y
ZVdpbmRvdyA9IGNvcmVGcmFtZS0+ZG9tV2luZG93KCkpCisgICAgICAgIGlmIChXZWJDb3JlOjpE
T01XaW5kb3cqIGNvcmVXaW5kb3cgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
KQogICAgICAgICAgICAgKndpbmRvdyA9IDo6RE9NV2luZG93OjpjcmVhdGVJbnN0YW5jZShjb3Jl
V2luZG93KTsKICAgICB9CiAKQEAgLTk4OSw3ICs5ODksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KAogICAgIGlmICgh
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKnJlc3VsdCA9IGNvcmVG
cmFtZS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAgICpy
ZXN1bHQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2Fk
RXZlbnRMaXN0ZW5lcnMoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjM2ZmMwMjM4ZmVhZDNl
YWNmNmFjMTMyYzkwYzk1MDg4OTk0Yzk1NC4uMTkyNDNiZWUwM2U0NzI2Y2EwYmI3YTk4MWQ4YjMw
ODQzYjlkZTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVu
dChjb25zdCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQogICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRl
bnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJlZEludGVudDo6Y3JlYXRlKG1fY29yZUZyYW1l
LCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudERhdGEuYWN0aW9uLCBpbnRlbnREYXRhLnR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSks
IGR1bW15UG9ydHMucmVsZWFzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudERhdGEuZXh0cmFzKTsK
LSAgICBXZWJDb3JlOjpET01XaW5kb3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb21XaW5k
b3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CisgICAgV2ViQ29yZTo6
RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwogfQogI2VuZGlmCiAKQEAg
LTQ5Myw3ICs0OTMsNyBAQCB1bnNpZ25lZCBXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkg
Y29uc3QKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJl
dHVybiBtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVy
cygpOworICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBl
bmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiBib29sIFdlYkZyYW1lOjphbGxvd3NG
b2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158423</attachid>
            <date>2012-08-14 15:24:13 -0700</date>
            <delta_ts>2012-08-14 17:35:38 -0700</delta_ts>
            <desc>For landing once EWS cycle green</desc>
            <filename>bug-93990-20120814152353.patch</filename>
            <type>text/plain</type>
            <size>89736</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmMTY3MjNmY2IwMjBi
ZjhmNzIxMjg4Mzg2M2UyYmM0NjkzODVjNy4uZTZiMzFjNWNhNmY2NGM2MDc3MGRkZTY0YTM3YTU1
NGJhNGZmOThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMCBAQAogMjAxMi0wOC0xNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9t
V2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBqdXN0IGNhbGwgdGhy
b3VnaCB0byBkb2N1bWVudCgpLT5kb21XaW5kb3coKS4gVGhpcworICAgICAgICBwYXRjaCB1cGRh
dGVzIHRoZSBjYWxsZXJzIHNvIGl0J3MgY2xlYXJlciB3aGF0J3MgZ29pbmcgb24uCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50RXJyb3JNZXNz
YWdlRm9yRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNEb2N1bWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOENv
bnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJc29s
YXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlRnJhbWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvclNldHRlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByaW50TmF2
aWdhdGlvbkVycm9yTWVzc2FnZSk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6CisgICAgICAgICog
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFz
UGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAqIGhp
c3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlRnJhbWVE
ZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRh
aW5pbmdUaGlzRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3cpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cHJpbnRXYXJuaW5nVG9D
b25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlk
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmJl
Z2luKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkaWRPcGVuVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0lm
RGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpcmVCZWZvcmVV
bmxvYWRFdmVudCk6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZlc3RS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZp
bmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNwbGF5
ZWRJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2VsZik6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnRvcCk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6OkRPTVdpbmRvd1Byb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21Q
YWdlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKEZyYW1lKToKKyAgICAgICAgKiBwYWdl
L0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZXBsYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YXRpb246OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERpc3Bh
dGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2gpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVwb3J0TWVzc2FnZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRM
aWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5n
KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYU0xUTWVzc2FnZUhhbmRsZXI6OmhhbmRsZU1lc3NhZ2UpOgor
CisyMDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAg
RE9NV2luZG93Ojpkb2N1bWVudCgpIHNob3VsZCBub3QgcmVhY2ggdGhyb3VnaCBGcmFtZQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NDAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggN2Y5YWIzZDM1NzVmZWFkYmMwYmE5YmFmMmE5
YzQ4N2UwNjkwYTJhMS4uNzAzMTAwMjFlNjhhNzZlM2M3OWIzOTRiYzFiNWE4MGI0NmRiYjYzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgt
MTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJh
bWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcmlnaW5TdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6cnVuSmF2YVNjcmlw
dEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OnJ1bkph
dmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVy
cnk6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
QmxhY2tCZXJyeTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OnJlcXVlc3RXZWJHTFBlcm1pc3Npb24pOgorCiAy
MDEyLTA4LTE0ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4K
IAogICAgICAgICBbQmxhY2tCZXJyeV0gU29tZSBjYWxsYmFjayBvZiBTZWxlY3Qgb25jaGFuZ2Ug
ZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhjYjljODEzN2YyMTk3
NTM2ZjFjNDAxYThiZWFkNDZiZWE4YmUwNzcuLmY4YThhYjMzY2ZhMzM2OTA1MjY1NDI2NzZkMTg5
Nzg1OGRlMTYxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBE
ZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIHNyYy9TdG9yYWdl
QXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94
eTo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViRE9NTWVz
c2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRE9NTWVzc2FnZUV2ZW50Ojppbml0
TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjpwZXJmb3JtYW5jZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6dW5sb2FkTGlzdGVuZXJDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
SW1wbDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZGlz
cGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZGlzcGF0Y2hNZXNz
YWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6
OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorCiAyMDEyLTA4LTE0
ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERC
OiBQYXNzIGN1cnNvciBjb250aW51ZSByZXN1bHRzIGJhY2sgaW4gY2FsbGJhY2sKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwppbmRleCBiNzdlZjM2MTI2MjEzMzQ3MjY3ZDAyMjJlNzNkYzQ0OTg2ZDBhMDlmLi44YTI2
NzgwMjFlNmI4MTU5MmUzYTRhNDY3MDkyMGQxN2NkYWRlZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3Rp
bmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRFdmVudENvdW50KToKKyAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9pbnRlbnRfZGVs
aXZlcik6CisKIDIwMTItMDgtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSByZWxlYXNlIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6bV9wbHVn
aW5XaWRnZXQgcmVmcHRyIHVwb24gUGx1Z2luIERvY3VtZW50IGRldGFjaC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAyMzliY2IwZjhlZWMxNWU5MDU0OWY5ZTY1NzI2YmViY2QyNWZhZWM5Li4yNTg2Njgz
MjI5MDU0OTE0NDQzODU0MzQ3OGExY2EwMTZkYjdlODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdE
T01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldFBlbmRpbmdVbmxvYWRFdmVudENvdW50KToKKwog
MjAxMi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCBy
ZWZwdHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDkz
MTdiZDJmNzI2YmZlOGE4ZGI0ZDI5MzRiNzM1ZWViOWRkNTAxMGMuLmVhZWY4MzFhZmFhMjZjODNm
NzUzYzFiNWNhZDA0ZDNhOTEzYzhlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMi0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IERlbGV0ZSBGcmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BlbmRpbmdGcmFtZVVubG9hZEV2ZW50
Q291bnRdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NhY2hlYWJpbGl0eURpY3Rpb25hcnldKToK
KwogMjAxMi0wOC0wOSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvYmxvYi11cmwtaW4taWZyYW1l
Lmh0bWwgZmFpbHMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDFjYjFhYWU2NmU5MTBkMTExNzZm
YTBhYjgwZjM5Zjc4ZDU4MmIyY2EuLmQyZmY4N2RjMWQ4MjIwYTNiZGViOWFiNTUyMTgwZjUwMDY5
N2U4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMTQgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdp
bmRvdygpIGFuZCBGcmFtZTo6ZXhpc3RpbmdET01XaW5kb3coKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5OTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorCiAyMDEyLTA4LTE0ICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBmYWlsaW5nIHRz
dF9RV2ViUGFnZTo6ZmluZFRleHQgdW5pdCB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggOGViYThi
ZjE2M2FmYjkwMWQzMjBjZmQ4MjQ4Yzg0YzBmYTU4Yjg5YS4uZGJiYjE1NTNlODQ1ZTUxYWY1NTMx
ODkxMWI1MDg1N2Q0OTVlYzQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDEyLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVs
ZXRlIEZyYW1lOjpkb21XaW5kb3coKSBhbmQgRnJhbWU6OmV4aXN0aW5nRE9NV2luZG93KCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTkwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJGcmFtZTo6RE9NV2luZG93KToKKyAgICAgICAgKFdlYkZyYW1lOjpwZW5k
aW5nRnJhbWVVbmxvYWRFdmVudENvdW50KToKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNl
cGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjptX3BsdWdpbldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQg
ZGV0YWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGY0ZWMyMWUxZGM3ZmUyNTliYWIzMWVhZDg2ODExNDI3MGY1
ZjYyNzEuLjVkZGNmMzlmYmRiNTI2YTExOGI3MDFjZTY3OTJkYmQxOTcxNWUxMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpl
eGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
cGVuZGluZ1VubG9hZENvdW50KToKKwogMjAxMi0wOC0xNCAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIFVwZGF0ZUF0bGFzIGlz
IHdhc3RpbmcgbWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDA2OTY1ZmVjODE5ZTRiMDk3
NDkwYjRlYWEwMDNlZDUyOWM3NThhZDQuLmM3N2EzZDMxOTJhMTZhMDQ1YjhhZDQyMWJiZmE1MTlj
ZDMwMTg1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMjk0LDcgKzEyOTQsNiBAQCBfX1pO
SzdXZWJDb3JlNUZyYW1lMTZmcmFtZVNjYWxlRmFjdG9yRXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUx
OGRvY3VtZW50VHlwZVN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMzFkaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTVGcmFtZThz
ZXR0aW5nc0V2Ci1fX1pOSzdXZWJDb3JlNUZyYW1lOWRvbVdpbmRvd0V2CiBfX1pOSzdXZWJDb3Jl
NVJhbmdlMTFzdGFydE9mZnNldEVSaQogX19aTks3V2ViQ29yZTVSYW5nZTEyZW5kQ29udGFpbmVy
RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlMTJwYXN0TGFzdE5vZGVFdgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggMTU1MGY5OWE5MzJjOWY5MzBjYzZi
ZDBiMDI4MjI4MmIyMzUwY2M4MC4uNTlmNTVhZWNmYWNhZTYyYmVmNzEwNDZhZDdjMDVhMmFlZWVj
ZTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBA
IC0yMjQsNyArMjI0LDcgQEAgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoRXhlY1N0YXRl
KiBleGVjLCBGcmFtZSogZnJhbWUsIFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGJvb2wgcmVzdWx0ID0gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUoZXhlYywgZnJhbWUsIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcik7CiAgICAgLy8g
RklYTUU6IFRoZSBmb2xsb3dpbmcgbGluZSBvZiBjb2RlIHNob3VsZCBtb3ZlIHNvbWV3aGVyZSB0
aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBpbW1lZGlhdGVseVJlcG9ydFVuc2FmZUFjY2Vzc1Rv
LgotICAgIG1lc3NhZ2UgPSBmcmFtZS0+ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJy
b3JNZXNzYWdlKGFjdGl2ZURPTVdpbmRvdyhleGVjKSk7CisgICAgbWVzc2FnZSA9IGZyYW1lLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0
aXZlRE9NV2luZG93KGV4ZWMpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMzIsNyAr
MjMyLDcgQEAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsK
LSAgICBmcmFtZS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOworICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1lc3NhZ2UobWVzc2Fn
ZSk7CiB9CiAKIEpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYmIzZDc5MTI1
YTFhNzcwY2IxOWRlOGIwZmViMjNjMGQzYjk5ZDIzOC4uMmQ3NWFjMDhjYjdhODVmYzA0OWFlNGI3
ZWUzZjAzNjQwOGE0NDEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtOTksMTIgKzk5LDEyIEBAIEpTVmFsdWUgbm9uQ2FjaGlu
Z1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByCiAKIHN0YXRpYyBKU1ZhbHVlIGNoaWxkRnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSkt
PmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2luZG93KCkpOworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJh
bWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1
ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVk
IGluZGV4KQogewotICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFz
T2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChp
bmRleCktPmRvbVdpbmRvdygpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8SlNET01X
aW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2Nv
cGVkQ2hpbGQoaW5kZXgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBK
U1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGI2ZGUxNjIyNTFkMTE0MzdiZjhiNmMzYTYw
YzFiZTNmNDdkNWVjM2EuLjY0N2I0NDYxZWFlNDBhYjQ1YmI2MjVlYmM5YmYyN2ZlNDVhZDQ5ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3Bw
CkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNEb2N1bWVudDo6bG9jYXRpb24oRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
IAotICAgIExvY2F0aW9uKiBsb2NhdGlvbiA9IGZyYW1lLT5kb21XaW5kb3coKS0+bG9jYXRpb24o
KTsKKyAgICBMb2NhdGlvbiogbG9jYXRpb24gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCktPmxvY2F0aW9uKCk7CiAgICAgaWYgKEpTRE9NV3JhcHBlciogd3JhcHBlciA9IGdldENhY2hl
ZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbikpCiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgSlNEb2N1bWVudDo6c2V0TG9jYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9IGZy
YW1lLT5kb21XaW5kb3coKS0+bG9jYXRpb24oKSkKKyAgICBpZiAoTG9jYXRpb24qIGxvY2F0aW9u
ID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5sb2NhdGlvbigpKQogICAgICAgICBs
b2NhdGlvbi0+c2V0SHJlZih1c3RyaW5nVG9TdHJpbmcobG9jYXRpb25TdHJpbmcpLCBhY3RpdmVE
T01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMGE1NTdmN2Q0YTRh
ZmZiM2ZmYzIzYWE1YTQ5OGNmNWJiMGMzYzc4YS4uNzc5ZThkNzM5ZDUzNjkzM2I2NjdmNjQyMmQ0
NWFlNGJiMzM3Nzg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCkBAIC04NSwxOCArODUsMTIgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6Omhh
bmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQK
ICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gMDsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7
CiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihnbG9i
YWxPYmplY3QpOwotICAgICAgICBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgpOwotICAg
ICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBUaGUgd2lu
ZG93IG11c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0cyBmcmFtZS4gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+LgotICAgICAgICAvLyBGSVhNRTogQSBi
ZXR0ZXIgZml4IGZvciB0aGlzIG1heSBiZSB0byBjaGFuZ2UgRE9NV2luZG93OjpmcmFtZSgpIHRv
IG5vdCByZXR1cm4gYSBmcmFtZSB0aGUgZGV0YWNoZWQgd2luZG93IHVzZWQgdG8gYmUgaW4uCi0g
ICAgICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkgIT0gd2luZG93LT5pbXBsKCkpCisgICAgICAg
IGlmICghd2luZG93LT5pbXBsKCktPmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQg
Zm9yIG90aGVyIGNvbnRleHRzPwotICAgICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBm
cmFtZS0+c2NyaXB0KCk7CisgICAgICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IHdpbmRv
dy0+aW1wbCgpLT5mcmFtZSgpLT5zY3JpcHQoKTsKICAgICAgICAgaWYgKCFzY3JpcHQtPmNhbkV4
ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKaW5kZXggOWNmNGU5OWNlYTNhZTNh
Nzk1NDJiZGIzNjA1MmRiMTQ3MzQxZGQzMy4uYTY5YWYzOTFiZjQyYmU2NDVhZTRlMTFjYjM3NzNl
YzQ3YmZhYjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWNoZWRGcmFtZURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFtZSkKICAgICAgICAgaWYgKEpTRE9NV2luZG93
KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdvcmxkKS5nZXQoKSkKICAgICAgICAgICAgIHdpbmRv
d1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdyk7CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9tV2lu
ZG93KCkpOworICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhmcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCkpOwogCiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpIHsKICAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5hdHRhY2hEZWJ1
Z2dlcih3aW5kb3dTaGVsbCwgcGFnZS0+ZGVidWdnZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDc5YzEyNzQ1ZmU2NWE5OTEz
YzZlOWJmZjExMjdiYjZiNjRjY2QyYjYuLjlmYTg1NDI0NGI4OWZiYTBmN2E1MmRiODQ1NzI4NTI3
MTYyZGU1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgSlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAg
ICBBU1NFUlQoIW1fd2luZG93U2hlbGxzLmNvbnRhaW5zKHdvcmxkKSk7CiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1NoZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKndvcmxkLT5n
bG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNET01XaW5kb3dTaGVsbD4gd2lu
ZG93U2hlbGwoKndvcmxkLT5nbG9iYWxEYXRhKCksIEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZSht
X2ZyYW1lLT5kb21XaW5kb3coKSwgc3RydWN0dXJlLCB3b3JsZCkpOworICAgIFN0cm9uZzxKU0RP
TVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCgqd29ybGQtPmdsb2JhbERhdGEoKSwgSlNET01XaW5k
b3dTaGVsbDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBzdHJ1Y3R1
cmUsIHdvcmxkKSk7CiAgICAgU3Ryb25nPEpTRE9NV2luZG93U2hlbGw+IHdpbmRvd1NoZWxsMih3
aW5kb3dTaGVsbCk7CiAgICAgbV93aW5kb3dTaGVsbHMuYWRkKHdvcmxkLCB3aW5kb3dTaGVsbCk7
CiAgICAgd29ybGQtPmRpZENyZWF0ZVdpbmRvd1NoZWxsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BYnN0cmFjdFZpZXcubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbQppbmRleCAwYjc5YWE5Yzk3ZGNl
ZjVlNWZjZjRlYzEwYWM5ODBjZmU1ZGQyNjQ5Li5kMmQzZGQ1OGRmMzYyMjcyZjU0MzU0OWVlNzVj
ODYyN2E2NWJiOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUFic3RyYWN0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUFi
c3RyYWN0Vmlldy5tbQpAQCAtNTAsNyArNTAsNyBAQAogewogICAgIGlmICghX2ludGVybmFsKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBraXQoSU1QTC0+ZG9tV2luZG93KCktPmRv
Y3VtZW50KCkpOworICAgIHJldHVybiBraXQoSU1QTC0+ZG9jdW1lbnQoKSk7CiB9CiAKIEBlbmQK
QEAgLTcyLDcgKzcyLDcgQEAgV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKERPTUFic3RyYWN0Vmll
dyAqd3JhcHBlcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCF3cmFwcGVyLT5faW50ZXJu
YWwpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OkZyYW1lKj4od3JhcHBlci0+X2ludGVybmFsKS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RnJhbWUqPih3cmFwcGVyLT5faW50ZXJuYWwpLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKTsKIH0KIAogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29y
ZTo6RE9NV2luZG93KiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHAKaW5kZXggZjZiOWYxYTRmYjE2MzRlZGE4NTMwMTJjYzQ1ZDM1MmFmN2QwNjYwOS4uYzAw
MDgyZDZjZjRhMTQzMDdlYjgyZjQwYTQ0MzMzNDczNzJjNmJhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKQEAgLTYzLDggKzYzLDggQEAgdHlwZWRlZiBIYXNo
TWFwPGludCwgVjhOUE9iamVjdFZlY3Rvcj4gVjhOUE9iamVjdE1hcDsKIHN0YXRpYyB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCkK
IHsKICAgICBWOE5QT2JqZWN0KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmplY3Qq
PihucE9iamVjdCk7Ci0gICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBvYmplY3QtPnJvb3RPYmpl
Y3Q7Ci0gICAgaWYgKCFkb21XaW5kb3cgfHwgIWRvbVdpbmRvdy0+ZnJhbWUoKSB8fCBkb21XaW5k
b3cgIT0gZG9tV2luZG93LT5mcmFtZSgpLT5kb21XaW5kb3coKSkKKyAgICBET01XaW5kb3cqIHdp
bmRvdyA9IG9iamVjdC0+cm9vdE9iamVjdDsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5p
c0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4oKTsKICAgICByZXR1cm4gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChvYmpl
Y3QtPnJvb3RPYmplY3QtPmZyYW1lKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBiYTc1ZTNiNmI4NzU5NGZlYmYyZTRhMWE2
NzU1NDE0ZWFiMmZjNjM0Li4wNjkyZTNkMmI5YjgyZDM4OTZjOTU5MjYyOWYzNTI3NDlhNzNjMGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBOUE9iamVjdCogY3JlYXRlU2NyaXB0T2JqZWN0
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CiAK
ICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKLSAgICBET01XaW5kb3cq
IHdpbmRvdyA9IGZyYW1lLT5kb21XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGZy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Z2xvYmFsID0gdG9WOCh3aW5kb3cpOwogICAgIEFTU0VSVChnbG9iYWwtPklzT2JqZWN0KCkpOwog
ICAgIHJldHVybiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KDAsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoZ2xvYmFsKSwgd2luZG93KTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBOUE9iamVjdCog
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1M
UGx1Z0luRWxlbWVudAogICAgICAgICByZXR1cm4gY3JlYXRlTm9TY3JpcHRPYmplY3QoKTsKICAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKIAotICAgIERPTVdpbmRvdyog
d2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7CisgICAgRE9NV2luZG93KiB3aW5kb3cgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjhwbHVnaW4gPSB0b1Y4KHN0YXRpY19jYXN0PEhUTUxFbWJlZEVsZW1lbnQqPihwbHVnaW4p
KTsKICAgICBpZiAoIXY4cGx1Z2luLT5Jc09iamVjdCgpKQogICAgICAgICByZXR1cm4gY3JlYXRl
Tm9TY3JpcHRPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5jcHAKaW5kZXggMmUzZjZjYzY2OTdiOGE3MTVlNzc1YmEzYTVkZGZmMmVmODA1
YzVmYi4uZTg3ZGM3ZDIyZjEyMmQzZmI4OTM4Yzc1MDBlMzM0NmQ1ZjBjNTFmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTMzNCw3
ICszMzQsNyBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVkZWQoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFpbnN0YWxsRE9NV2luZG93
KHY4Q29udGV4dCwgbV9mcmFtZS0+ZG9tV2luZG93KCkpKSB7CisgICAgaWYgKCFpbnN0YWxsRE9N
V2luZG93KHY4Q29udGV4dCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKSB7CiAg
ICAgICAgIGRpc3Bvc2VDb250ZXh0SGFuZGxlcygpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQu
Y3BwCmluZGV4IGE2MDAxMzk5NTEyY2I0MzZjNjJjNDU0NGYxMmIyYTQzODdiN2MyZGYuLjEwYWFk
YmE2MjU3OTg5MzE3ZDZlZDlkMzk2ODk4OTdhNTZiMzgzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
VjhJc29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KFY4UHJveHkqIHByb3h5LCBpbnQg
ZXh0ZW5zaW9uR3JvdXAsIGludCB3b3IKICAgICBtX3BlckNvbnRleHREYXRhLT5pbml0KCk7CiAK
ICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGdvIGF3YXkgb25jZSB3ZSBoYXZlIGEgd2luZG93U2hl
bGwgZm9yIHRoZSBpc29sYXRlZCB3b3JsZC4KLSAgICBwcm94eS0+d2luZG93U2hlbGwoKS0+aW5z
dGFsbERPTVdpbmRvdyhtX2NvbnRleHQtPmdldCgpLCBtX2ZyYW1lLT5kb21XaW5kb3coKSk7Cisg
ICAgcHJveHktPndpbmRvd1NoZWxsKCktPmluc3RhbGxET01XaW5kb3cobV9jb250ZXh0LT5nZXQo
KSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwogCiAgICAgLy8gVXNpbmcgdGhl
IGRlZmF1bHQgc2VjdXJpdHkgdG9rZW4gbWVhbnMgdGhhdCB0aGUgY2FuQWNjZXNzIGlzIGFsd2F5
cwogICAgIC8vIGNhbGxlZCwgd2hpY2ggaXMgc2xvdy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKaW5kZXggZTRiNzVhN2Q5YjY3NmI5ODZjYzY3OWQ4MDNjYjYwYTEzMmU0NWFm
MS4uMjVhMzYwNmE5MjhlNzhhZWU2ZGIwZTQ3OTRlMWUzZTJmODU5ZjU4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTM2Nyw5ICszNjcsOCBAQCBET01XaW5kb3cq
IFY4UHJveHk6OnJldHJpZXZlV2luZG93KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQp
CiBGcmFtZSogVjhQcm94eTo6cmV0cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
b250ZXh0KQogewogICAgIERPTVdpbmRvdyogd2luZG93ID0gcmV0cmlldmVXaW5kb3coY29udGV4
dCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gd2luZG93LT5mcmFtZSgpOwotICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+ZG9tV2luZG93KCkgPT0gd2luZG93KQotICAgICAgICByZXR1cm4gZnJhbWU7Cisg
ICAgaWYgKHdpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCisgICAgICAgIHJl
dHVybiB3aW5kb3ctPmZyYW1lKCk7CiAgICAgLy8gV2UgcmV0dXJuIDAgaGVyZSBiZWNhdXNlIHxj
b250ZXh0fCBpcyBkZXRhY2hlZCBmcm9tIHRoZSBGcmFtZS4gIElmIHdlCiAgICAgLy8gZGlkIHJl
dHVybiB8ZnJhbWV8IHdlIGNvdWxkIGdldCBpbiB0cm91YmxlIGJlY2F1c2UgdGhlIGZyYW1lIGNv
dWxkIGJlCiAgICAgLy8gbmF2aWdhdGVkIHRvIGFub3RoZXIgc2VjdXJpdHkgb3JpZ2luLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKaW5kZXggOWM0MjFmYjY0YTQ0YzRjMmI2NDI4YTQ5NjIwZmYxNTY4MzE0MzAzNy4u
YjhhYTRmYWNlOTZiN2VlOTkxODNmNWYxOTRmNzE4NGQ3YWEwZWVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CkBAIC00NzksNyArNDc5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpp
bmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHYKIAogICAgIEZyYW1l
KiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3BlZENoaWxkKGluZGV4KTsKICAgICBpZiAoY2hp
bGQpCi0gICAgICAgIHJldHVybiB0b1Y4KGNoaWxkLT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpA
QCAtNTAyLDcgKzUwMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFt
ZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgQXRvbWljU3Ry
aW5nIHByb3BOYW1lID0gdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpOwogICAgIEZyYW1lKiBj
aGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3BlZENoaWxkKHByb3BOYW1lKTsKICAgICBpZiAoY2hp
bGQpCi0gICAgICAgIHJldHVybiB0b1Y4KGNoaWxkLT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAgIC8vIFNlYXJjaCBJREwgZnVuY3Rpb25zIGRl
ZmluZWQgaW4gdGhlIHByb3RvdHlwZQogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5h
bWVkUHJvcGVydHkobmFtZSkuSXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCBiMmQ4MWU4NGMyZDc1ZDkyMjQ5Njk4NGExNmExODQ0ZmJhMWY3YzM2Li43NjEzYTE0YjEx
NTY5MDE5NWNmZmQ0NWMxYTFiMTY1Y2Y3ODQxYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9t
LmNwcApAQCAtNDAsNyArNDAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6
bG9jYXRpb25BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIGlmICgh
ZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbChpbmZvLkdldElzb2xh
dGUoKSk7CiAKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IGRvY3VtZW50LT5mcmFtZSgpLT5kb21X
aW5kb3coKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGRvY3VtZW50LT5kb21XaW5kb3coKTsK
ICAgICByZXR1cm4gdG9WOCh3aW5kb3ctPmxvY2F0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0KIApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2OAogICAgIGlmICgh
Zmlyc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1l
bnQtPmZyYW1lKCktPmRvbVdpbmRvdygpOworICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1l
bnQtPmRvbVdpbmRvdygpOwogICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSB3aW5kb3ctPmxv
Y2F0aW9uKCkpCiAgICAgICAgIGxvY2F0aW9uLT5zZXRIcmVmKHRvV2ViQ29yZVN0cmluZyh2YWx1
ZSksIGFjdGl2ZSwgZmlyc3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMzI3YzY0YmY2
ZWY4NzUwYmNiNDM0OWRjOTkxZGNlMzdkNjkwMjVlMS4uZmUyZTVjMmIzYjcwZTdlYmI1NGY0ZTFm
MjA0NmM2ZWY4ZjBjZjQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC05NCw3ICs5NCw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2V0TmFtZWRQcm9wZXJ0eShI
VE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVuCiAgICAgICAgIE5vZGUqIG5vZGUgPSBpdGVtcy0+aXRl
bSgwKTsKICAgICAgICAgRnJhbWUqIGZyYW1lID0gMDsKICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpICYmIChmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxJ
RnJhbWVFbGVtZW50Kj4obm9kZSktPmNvbnRlbnRGcmFtZSgpKSkKLSAgICAgICAgICAgIHJldHVy
biB0b1Y4KGZyYW1lLT5kb21XaW5kb3coKSwgaXNvbGF0ZSk7CisgICAgICAgICAgICByZXR1cm4g
dG9WOChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGlzb2xhdGUpOwogCiAgICAgICAg
IHJldHVybiB0b1Y4KG5vZGUsIGlzb2xhdGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVu
dEN1c3RvbS5jcHAKaW5kZXggNTI5NDA5OTYxZjRiYzgxYzExOGYyMWFiNmJkYjEyM2MyNTQyODMw
Mi4uMGE5NjkzYWJhMzNiM2ViZGExOTY0NTMxNjQ3MDEzMzA3OGNmZWM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZy
YW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTUwLDE0ICs1MCwxNiBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpM
b2NhbDx2ODo6UwogICAgIElOQ19TVEFUUygiRE9NLkhUTUxGcmFtZVNldEVsZW1lbnQuTmFtZWRQ
cm9wZXJ0eUdldHRlciIpOwogICAgIEhUTUxGcmFtZVNldEVsZW1lbnQqIGltcCA9IFY4SFRNTEZy
YW1lU2V0RWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgTm9kZSogZnJhbWVO
b2RlID0gaW1wLT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0odG9XZWJDb3JlQXRvbWljU3RyaW5nKG5h
bWUpKTsKLSAgICBpZiAoZnJhbWVOb2RlICYmIGZyYW1lTm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmZyYW1lVGFnKSkgewotICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8SFRN
TEZyYW1lRWxlbWVudCo+KGZyYW1lTm9kZSktPmNvbnRlbnREb2N1bWVudCgpOwotICAgICAgICBp
ZiAoIWRvYykKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBkb2MtPmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOChm
cmFtZS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKCFmcmFtZU5vZGUpCisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOworICAgIGlmICghZnJhbWVOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZnJh
bWVUYWcpKQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50Kj4oZnJhbWVOb2RlKS0+Y29udGVu
dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CisgICAgcmV0dXJuIHRvVjgoZG9jdW1lbnQtPmRvbVdpbmRvdygpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDllOGUzMmU0Njc0MzliMzg5YWIxN2UxN2FkODliZWIzY2Y2OGE0YmYuLmEz
NGNkMWEwYTFjNjQ3YzUxODdjMDQ2ZGVkMWNkNDA2MjFlMDVmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVy
cm9yTWVzc2FnZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIGFjdGl2ZVVSTCkKICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSArICIgZnJvbSBm
cmFtZSB3aXRoIFVSTCAiICsgYWN0aXZlVVJMLnN0cmluZygpICsgIi5cbiI7CiAKICAgICAvLyBG
SVhNRTogc2hvdWxkIHdlIHByaW50IHRvIHRoZSBjb25zb2xlIG9mIHRoZSBkb2N1bWVudCBwZXJm
b3JtaW5nIHRoZSBuYXZpZ2F0aW9uIGluc3RlYWQ/Ci0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5w
cmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCiBzdGF0aWMgSGFzaFNldDxE
b2N1bWVudCo+KiBkb2N1bWVudHNUaGF0TmVlZFN0eWxlUmVjYWxjID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IGRjMjJlNmUxZjFmZDRkMGYwMjBkZDYw
NzU1ZGE5M2IwNjEwMmRlYmEuLjRkYTkwNTAyOWEwNDk2ZWJlNjBiNzA5ZTcwMTcwNmY5MTE5NTky
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtMzYzLDcg
KzM2Myw3IEBAIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwg
Vmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zCiAgICAgaWYgKCFyZXBsYWNlbWVudDIu
aXNOdWxsKCkpCiAgICAgICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxh
Y2VtZW50Mik7CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdl
TGV2ZWwoZXJyb3JDb2RlKSwgbWVzc2FnZSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLCBwYXJz
ZXJMaW5lTnVtYmVyKGRvY3VtZW50KSk7CisgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCB2aWV3
cG9ydEVycm9yTWVzc2FnZUxldmVsKGVycm9yQ29kZSksIG1lc3NhZ2UsIGRvY3VtZW50LT51cmwo
KS5zdHJpbmcoKSwgcGFyc2VyTGluZU51bWJlcihkb2N1bWVudCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBkNGEwZTQzYjdlYTA5OGM2YjhmZWIzOTU2MTkzMTEy
NTEzNzBkYTllLi41ZGNmYmQzODNiYThhY2IwZWY0YjIxZmVhOTcyZWU4OTE4NTg5MjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlYwogICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHZpZXctPnJlc2V0
RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAotICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0g
VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQs
IGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgUmVmUHRyPFRleHRFdmVudD4gZXZlbnQgPSBU
ZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJs
eWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDIwYjZhZjk2NzM4YTY2NTI5ZWQ4MDZiNGIwNDU3
ZDM3NTdmMDllYTMuLmIzMDdmNDZmNjQ4OTk2YmQyZGI5YjFhNWIwZTIyY2EyNzIzNGY4OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEVkaXRv
cjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0
UmVwbGFjZSkKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0
ZUZvclBsYWluVGV4dFBhc3RlKG1fZnJhbWUtPmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21h
cnRSZXBsYWNlKSwgZWMpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNy
ZWF0ZUZvclBsYWluVGV4dFBhc3RlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBw
YXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSwgZWMpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVB
c0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LCBi
b29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlKQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZv
aWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBw
YXN0aW5nRnJhZ21lbnQsIGJvb2wKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0
RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUobV9mcmFtZS0+ZG9tV2luZG93KCksIHBhc3Rp
bmdGcmFnbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKSwgZWMpOworICAgIHRhcmdldC0+
ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUobV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHBhc3RpbmdGcmFnbWVudCwgc21hcnRSZXBsYWNlLCBt
YXRjaFN0eWxlKSwgZWMpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFz
c2luZ0RIVE1MKCkKQEAgLTEzNjMsNyArMTM2Myw3IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3Np
dGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENvbXBvc2l0aW9uTW9kZSBtb2RlKQogICAgIC8v
IHRoZSBET00gRXZlbnQgc3BlY2lmaWNhdGlvbi4KICAgICBOb2RlKiB0YXJnZXQgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwogICAgIGlmICh0YXJnZXQpIHsKLSAgICAgICAg
UmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKSwg
dGV4dCk7CisgICAgICAgIFJlZlB0cjxDb21wb3NpdGlvbkV2ZW50PiBldmVudCA9IENvbXBvc2l0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpOwogICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7CiAgICAg
fQpAQCAtMTQyNiwxNCArMTQyNiwxNCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hl
biB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4
dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0
ZXh0KSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygp
LCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIG1fZnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSk7CisgICAgICAgICAgICAgICAgZXZl
bnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBk
YXRlRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLCB0
ZXh0KTsKKyAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCksIHRleHQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBldmVu
dCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRF
dmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICAgICAgICBldmVudCA9
IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVu
dCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpOwogICAgICAgICB9CiAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpZiAoZXZlbnQuZ2V0KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggOGMzNzllYjI0YTMxZTQxMDJhZDgx
OWNiOWRlN2UwMTg5Yzk5MTgyYy4uZTdlZWJkYzQzNzQyYzU1ZjE0MTExZWNkMmUyMTRhOGUwYmNh
NDY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1l
LCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaXMgSFRUUFMsIGFu
ZCBjYWNoZSBjb250cm9sIHByb2hpYml0cyBjYWNoaW5nIG9yIHN0b3JpbmciKTsKICAgICAgICAg
cmVqZWN0UmVhc29ucyB8PSAxIDw8IElzSHR0cHNBbmRDYWNoZUNvbnRyb2xsZWQ7CiAgICAgfQot
ICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkgJiYgZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVu
dExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKSB7CisgICAgaWYgKGZyYW1lLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkt
Pmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpIHsKICAgICAgICAg
UENMT0coIiAgIC1GcmFtZSBoYXMgYW4gdW5sb2FkIGV2ZW50IGxpc3RlbmVyIik7CiAgICAgICAg
IHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNVbmxvYWRMaXN0ZW5lcjsKICAgICB9CkBAIC0zNDMs
NyArMzQzLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJh
bWUoRnJhbWUqIGZyYW1lKQogICAgICAgICAmJiAhKGRvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRl
RGF0YSgpLmlzVmFsaWQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuZmFp
bGluZ1VSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgJiYgKCFmcmFtZUxvYWRlci0+c3ViZnJhbWVM
b2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkgfHwgZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKCkpCiAgICAgICAgICYmICghZG9jdW1lbnQtPnVybCgp
LnByb3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNo
ZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCku
Y2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKQotICAgICAgICAmJiAoIWZyYW1lLT5kb21X
aW5kb3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5h
bWVzKCkudW5sb2FkRXZlbnQpKQorICAgICAgICAmJiAoIWRvY3VtZW50LT5kb21XaW5kb3coKSB8
fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
dW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgICYmICFEYXRh
YmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA5YjJhNTkxNWM0N2NjOWIwN2UwYTQ4
YmU0ZGQzZTZlMzFkY2I2ZDlhLi43YzNiYjYxYjFkZmVlNGZlMWUwOGRhNmI2OGQzZjJmNTk0MTA5
MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yNTIsNyAr
MjUyLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseShFdmVu
dCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gV2FybiBhYm91dCBhbGwgb2YgdW5m
b2N1c2FibGUgY29udHJvbHMuCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZy
YW1lKCkpIHsKKyAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIHVuaGFuZGxlZEFzc29jaWF0ZWRF
bGVtZW50ID0gdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzW2ldLmdldCgpOwogICAgICAgICAgICAg
SFRNTEVsZW1lbnQqIHVuaGFuZGxlZCA9IHRvSFRNTEVsZW1lbnQodW5oYW5kbGVkQXNzb2NpYXRl
ZEVsZW1lbnQpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojp2YWxp
ZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UoIkFuIGludmFsaWQgZm9ybSBjb250cm9sIHdp
dGggbmFtZT0nJW5hbWUnIGlzIG5vdCBmb2N1c2FibGUuIik7CiAgICAgICAgICAgICBtZXNzYWdl
LnJlcGxhY2UoIiVuYW1lIiwgdW5oYW5kbGVkQXNzb2NpYXRlZEVsZW1lbnQtPm5hbWUoKSk7Ci0g
ICAgICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1M
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdl
LCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5k
b21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGRvY3VtZW50KCktPnVybCgp
LnN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNmI3MDY2MDJk
NDdiMzhhYTlkNmNjYTM5ODRjOTc2NTE3MjhhYzc0MS4uNTYwZjM4Yjk2NzljYTIyN2M0NjI2NjBm
OWI0ZjI5Y2ZkYWQwZDZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmNwcApAQCAtNzMsNyArNzMsNyBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3duZXJF
bGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogCiBET01XaW5kb3cqIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVu
dEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvbVdpbmRvdygpIDogMDsKKyAgICByZXR1cm4gbV9j
b250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgOiAw
OwogfQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRi
b3hGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDFlZTYyMTVmZDAzMmNkYjVlMTkxODg5MzU0N2Rk
MGIwNDhjZTMyYWMuLjM0YTBlNTdiNWRmZWFlMzQ0MzhlYmJlZjgwY2M5YjFlMTg2YzMzYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtNTE2OSwxMyArNTE2OSwxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBp
ZiAoIWNhbnZhcygpKQogICAgICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IFRoaXMgZ2lhbnQg
Y2FzY2FkZSBvZiBudWxsIGNoZWNrcyBzZWVtcyBhIGJpdCBwYXJhbm9pZC4KICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBjYW52YXMoKS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIERPTVdpbmRvdyogd2luZG93ID0g
ZnJhbWUtPmRvbVdpbmRvdygpOworICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmRv
bVdpbmRvdygpOwogICAgIGlmICghd2luZG93KQogICAgICAgICByZXR1cm47CiAgICAgQ29uc29s
ZSogY29uc29sZSA9IHdpbmRvdy0+Y29uc29sZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA5Mzk5OWQxZmJi
MGJhNjgxOTZlMmU1OWE4OTdiYjkwZmJmZTc4ZTQ3Li45MGEwYTllNjA5MGUwYzJjMzlkNzg2OWY0
MDJkNDMyYjNhMmJmNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIFN0cmluZyBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTdG9yYWdlKiBzdG9yYWdlKQogICAg
IEFTU0VSVChzdG9yYWdlKTsKICAgICBGcmFtZSogZnJhbWUgPSBzdG9yYWdlLT5mcmFtZSgpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgaXNMb2NhbFN0b3JhZ2UgPSAoZnJh
bWUtPmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoZWMpID09IHN0b3JhZ2UgJiYgIWVjKTsKKyAg
ICBib29sIGlzTG9jYWxTdG9yYWdlID0gKGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+
bG9jYWxTdG9yYWdlKGVjKSA9PSBzdG9yYWdlICYmICFlYyk7CiAgICAgcmV0dXJuIHN0b3JhZ2VJ
ZChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgaXNMb2NhbFN0b3JhZ2UpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzMmZmMjhj
MzIyNTMwNGViYjYxMDRjYjczMDBhNDJmNDdiZGM0MjU1Li5iYzc0NDQwMmY1YmIxNzYwMmNiZTI5
MGJmMTNjYzg4YzA5OGM5ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjaGVja0xvYWRD
b21wbGV0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQodGhpcyA9PSBmcmFtZUxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsKIAotICAgIGlmIChET01XaW5kb3cqIHdpbmRv
dyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpCisgICAgaWYgKERPTVdpbmRvdyogd2lu
ZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCiAgICAgICAgIHdpbmRvdy0+
ZmluaXNoZWRMb2FkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwCmluZGV4IDE0YjZmNDM1OTk2NmM1MzAzYmM3NTljMTgxZmZiOTNkNzViZDdkODEuLmQ3
YjViNDg4N2RjYWJmYzlmNWIyMTZjMmVkNDg2ZmI5MzczZTdjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgRG9jdW1l
bnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwg
RG9jdW1lbnQqIG93CiAgICAgfQogCiAgICAgLy8gRklYTUU6IERPTVdpbmRvdyBzaG91bGQgZ2V0
IHRoZSBVUkwgZnJvbSB0aGUgZG9jdW1lbnQgaXRzZWxmLgotICAgIG1fZnJhbWUtPmRvbVdpbmRv
dygpLT5zZXRVUkwoZG9jdW1lbnQtPnVybCgpKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKS0+c2V0VVJMKGRvY3VtZW50LT51cmwoKSk7CiAKICAgICBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+ZGlkQmVnaW5Eb2N1bWVudChkaXNwYXRjaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IDNjMDQ1YzJiMDEyMWMwMDY1MmJiZDhlZmQwOWJiYWQ1NDA3ODcy
ODcuLjU2MmI0ZGMxZDkwODIyOTY5N2IzMjkzOTIyZDZiMTU2MjY4MjNmZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzU3LDEwICszNTcsMTAgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3kp
CiAgICAgICAgICAgICAgICAgTm9kZSogY3VycmVudEZvY3VzZWROb2RlID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZvY3Vz
ZWROb2RlKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rm9jdXNlZE5vZGUtPmFib3V0VG9V
bmxvYWQoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9tV2luZG93KCkgJiYgbV9w
YWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gTm9EaXNtaXNzYWwpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgJiYgbV9wYWdl
RGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gTm9EaXNtaXNzYWwpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHVubG9hZEV2ZW50UG9saWN5ID09IFVubG9hZEV2ZW50UG9saWN5VW5s
b2FkQW5kUGFnZUhpZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3Nh
bEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZUhpZGVEaXNtaXNzYWw7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChQYWdlVHJhbnNp
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBhZ2VoaWRlRXZlbnQsIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmluUGFnZUNhY2hlKCkpLCBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRj
aEV2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucGFnZWhpZGVF
dmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSksIG1fZnJhbWUtPmRvY3Vt
ZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPEV2ZW50PiB1bmxvYWRFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS51bmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBv
bGljeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRp
bWluZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQodGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGltaW5nLT5tYXJrVW5sb2FkRXZlbnRTdGFydCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9h
ZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNo
RXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWluZy0+bWFya1VubG9hZEV2ZW50RW5kKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5k
b21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudCh1bmxvYWRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93
KCktPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1l
LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9IE5v
RGlzbWlzc2FsOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmRpZE9wZW5V
UkwoKQogICAgIC8vIGl0cyBmcmFtZSBpcyBub3QgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGZvciBy
ZW5kZXJpbmcsIHNvIGF2b2lkIHNldEpTU3RhdHVzQmFyVGV4dAogICAgIC8vIHNpbmNlIGl0IG1h
eSBjYXVzZSBjbGllbnRzIHRvIGF0dGVtcHQgdG8gcmVuZGVyIHRoZSBmcmFtZS4KICAgICBpZiAo
IW1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkgewotICAgICAg
ICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpKSB7
CisgICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpKSB7CiAgICAgICAgICAgICB3aW5kb3ctPnNldFN0YXR1cyhTdHJpbmcoKSk7CiAg
ICAgICAgICAgICB3aW5kb3ctPnNldERlZmF1bHRTdGF0dXMoU3RyaW5nKCkpOwogICAgICAgICB9
CkBAIC04ODYsNyArODg2LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkRpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEsKICAgICBTdHJpbmcg
bWVzc2FnZSA9IChhbGxvd2VkID8gZW1wdHlTdHJpbmcoKSA6ICJbYmxvY2tlZF0gIikgKyAiVGhl
IHBhZ2UgYXQgIiArCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
ICsgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9tICIgKyB1cmwuc3RyaW5nKCkgKyAi
LlxuIjsKICAgICAgICAgCi0gICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRk
TWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBX
YXJuaW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIAogICAgIGlmIChhbGxvd2VkKQogICAgICAg
ICBtX2NsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwpAQCAtOTA0LDcgKzkwNCw3
IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAoYWxsb3dl
ZCA/IGVtcHR5U3RyaW5nKCkgOiAiW2Jsb2NrZWRdICIpICsgIlRoZSBwYWdlIGF0ICIgKwogICAg
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSArICIgcmFuIGluc2VjdXJl
IGNvbnRlbnQgZnJvbSAiICsgdXJsLnN0cmluZygpICsgIi5cbiI7CiAgICAgICAgCi0gICAgbV9m
cmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRN
TE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNz
YWdlKTsKIAogICAgIGlmIChhbGxvd2VkKQogICAgICAgICBtX2NsaWVudC0+ZGlkUnVuSW5zZWN1
cmVDb250ZW50KGNvbnRleHQsIHVybCk7CkBAIC0xMzcxLDcgKzEzNzEsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcm
IHVybCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZG9t
V2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVz
b3VyY2U6ICIgKyB1cmwpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiTm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogIiArIHVy
bCk7CiB9CiAKIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVMb2FkZXI6OmluaXRpYWxSZXF1
ZXN0KCkgY29uc3QKQEAgLTE5MDIsNyArMTkwMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBh
cmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAgICAgCiAgICAgLy8gRGVsZXRlIG9sZCBzdGF0dXMg
YmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3RpdmF0ZWQgb24gbGFzdCBVUkwpLgogICAgIGlm
IChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKSB7Ci0gICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0
aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0U3Rh
dHVzKFN0cmluZygpKTsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVsdFN0YXR1cyhTdHJp
bmcoKSk7CiAgICAgICAgIH0KQEAgLTE5NTAsNyArMTk1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX2ZyYW1lLT5zZXREb2N1
bWVudChkb2N1bWVudCk7CiAgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5yZXN1bWVGcm9tUGFn
ZUNhY2hlKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBub3cg
dGhhdCBEb2N1bWVudCBvd25zIHRoZSBET01XaW5kb3cuCi0gICAgbV9mcmFtZS0+ZG9tV2luZG93
KCktPnNldFVSTChkb2N1bWVudC0+dXJsKCkpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLT5zZXRVUkwoZG9jdW1lbnQtPnVybCgpKTsKIAogICAgIHVwZGF0ZUZpcnN0UGFy
dHlGb3JDb29raWVzKCk7CiAKQEAgLTI2OTQsNyArMjY5NCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OnNob3VsZENsb3NlKCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6ZmlyZUJlZm9yZVVubG9hZEV2ZW50
KENocm9tZSogY2hyb21lKQogewotICAgIERPTVdpbmRvdyogZG9tV2luZG93ID0gbV9mcmFtZS0+
ZXhpc3RpbmdET01XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9tV2luZG93KQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA3NGFhM2FmYzExMjc2MGI3NjE1N2VmNjFhM2JkMjAwMTdmNDRhMGE3Li4wYjA2
NWRkODMzYzA4ZGZmOTk1ZDRiNzA4MDRlYTkyY2E0MTE3Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQg
TWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcikKICAgICAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5zaG91bGRJbnRlcnJ1cHRM
b2FkRm9yWEZyYW1lT3B0aW9ucyhjb250ZW50LCByLnVybCgpKSkgewogICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZCht
X2ZyYW1lLmdldCgpLCBkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIHIpOwogICAgICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVz
ZWQgdG8gZGlzcGxheSBkb2N1bWVudCBiZWNhdXNlIGRpc3BsYXkgZm9yYmlkZGVuIGJ5IFgtRnJh
bWUtT3B0aW9ucy5cbiIpKTsKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKIAog
ICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CmluZGV4IDJkZmUzNGNhYzJiYjEyZTg4NjUxZDMyODQ1OGE1NjcwMzEwZGQ1ZTYuLmI0ZjE0NzMy
M2IyMmU3MTQzYWEzYzQ3MmYwMmE3Y2Y3NjY1MDZlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC00
NjksNyArNDY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KEZyYW1lKiBm
cmFtZSkKICAgICBpZiAobV9jb21wbGV0aW9uVHlwZSAhPSBOb25lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBUaXBNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlv
biBDYWNoZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLiIpOworICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIFRpcE1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hl
IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQuIik7CiAgICAgY2FjaGVVcGRhdGVGYWlsZWQo
KTsKIH0KIApAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAKICAg
ICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyIHx8IHJlc3BvbnNlLnVy
bCgpICE9IG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpIHsKICAgICAgICAg
aWYgKCh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCkgfHwgKHR5cGUg
JiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKSkgewotICAgICAgICAgICAgbV9m
cmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hl
IHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCkgKyAKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUg
ZmFpbGVkLCBiZWNhdXNlICIgKyBtX2N1cnJlbnRIYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgp
LnN0cmluZygpICsgCiAgICAgICAgICAgICAgICAgKChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
IC8gMTAwICE9IDIpID8gIiBjb3VsZCBub3QgYmUgZmV0Y2hlZC4iIDogIiB3YXMgcmVkaXJlY3Rl
ZC4iKSk7CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4g
Y2F1c2UgdGhlIGNhY2hlIGdyb3VwIHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICBjYWNoZVVw
ZGF0ZUZhaWxlZCgpOwpAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5p
CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBicmVhayBlYXJsaWVyIGFuZCBwcmV2ZW50IHJlZG93
bmxvYWRpbmcgb24gbGF0ZXIgcGFnZSBsb2Fkcz8KICAgICBpZiAobV9vcmlnaW5RdW90YUV4Y2Vl
ZGVkUHJldmlvdXNseSAmJiBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSA8IG1fY2FjaGVCZWluZ1Vw
ZGF0ZWQtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSkgewogICAgICAgICBtX2N1cnJlbnRSZXNv
dXJjZSA9IDA7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1l
c3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVvdGEg
d2FzIGV4Y2VlZGVkLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwg
YmVjYXVzZSBzaXplIHF1b3RhIHdhcyBleGNlZWRlZC4iKTsKICAgICAgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBj
b25zdCBSZXNvdXJjZUVycm9yJgogICAgIG1fcGVuZGluZ0VudHJpZXMucmVtb3ZlKHVybCk7CiAK
ICAgICBpZiAoKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkV4cGxpY2l0KSB8fCAo
dHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFsbGJhY2spKSB7Ci0gICAgICAgIG1f
ZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNo
ZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyB1cmwuc3RyaW5nKCkgKyAiIGNvdWxkIG5vdCBi
ZSBmZXRjaGVkLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+
Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVj
YXVzZSAiICsgdXJsLnN0cmluZygpICsgIiBjb3VsZCBub3QgYmUgZmV0Y2hlZC4iKTsKICAgICAg
ICAgLy8gTm90ZSB0aGF0IGNhY2hlVXBkYXRlRmFpbGVkKCkgY2FuIGNhdXNlIHRoZSBjYWNoZSBn
cm91cCB0byBiZSBkZWxldGVkLgogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgIH0g
ZWxzZSB7CkBAIC03MDIsMTMgKzcwMiwxMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcgogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAh
PSAyKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hlZC4iKTsKKyAg
ICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVz
c2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIpOwog
ICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKHJlc3BvbnNlLnVybCgpICE9IG1fbWFuaWZlc3RIYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1l
c3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hlZCwgYmVj
YXVzZSBhIHJlZGlyZWN0aW9uIHdhcyBhdHRlbXB0ZWQuIik7CisgICAgICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBD
YWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hlZCwgYmVjYXVzZSBhIHJlZGlyZWN0aW9u
IHdhcyBhdHRlbXB0ZWQuIik7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAKICAgICBpZiAoIWlzVXBncmFkZUF0
dGVtcHQgJiYgIW1fbWFuaWZlc3RSZXNvdXJjZSkgewogICAgICAgICAvLyBUaGUgc2VydmVyIHJl
dHVybmVkIDMwNCBOb3QgTW9kaWZpZWQgZXZlbiB0aG91Z2ggd2UgZGlkbid0IHNlbmQgYSBjb25k
aXRpb25hbCByZXF1ZXN0LgotICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIGZldGNo
ZWQgYmVjYXVzZSBvZiBhbiB1bmV4cGVjdGVkIDMwNCBOb3QgTW9kaWZpZWQgc2VydmVyIHJlc3Bv
bnNlLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIGZl
dGNoZWQgYmVjYXVzZSBvZiBhbiB1bmV4cGVjdGVkIDMwNCBOb3QgTW9kaWZpZWQgc2VydmVyIHJl
c3BvbnNlLiIpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpk
aWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgIE1hbmlmZXN0IG1hbmlmZXN0OwogICAgIGlm
ICghcGFyc2VNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEo
KS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS0+c2l6ZSgpLCBtYW5pZmVzdCkp
IHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNI
RSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVz
dCB0byBmYWlsLgotICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9l
cyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2Fj
aGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hF
IE1BTklGRVNUPyIpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAgICAgICAgICAgICAgIC8vIFdlIHJhbiBvdXQg
b2Ygc3BhY2UgZm9yIHRoaXMgb3JpZ2luLiBGYWxsIGRvd24gdG8gdGhlIG5vcm1hbCBlcnJvciBo
YW5kbGluZwogICAgICAgICAgICAgICAgIC8vIGFmdGVyIHJlY29yZGluZyB0aGlzIHN0YXRlLgog
ICAgICAgICAgICAgICAgIG1fb3JpZ2luUXVvdGFFeGNlZWRlZFByZXZpb3VzbHkgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2Fz
IGV4Y2VlZGVkLiIpOworICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFp
bGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoZmFpbHVyZVJlYXNvbiA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6VG90YWxRdW90YVJlYWNoZWQgJiYgIW1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggNjlmZmI5MjhmZjQ1ZTFlN2YyZmY0ZmI2YTQ4MjVhZTUyOGQ3ZDZkMC4u
N2I1NjQ2NTM4NjY2YzNmZTQxYTM1YmZiMDA2MzgyYTk4YWIzMzk4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02
MTYsNyArNjE2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5p
ZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICAgICAgbWVzc2FnZSA9ICJVbnNh
ZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0cmluZygpICsgIiBmcm9tIGZyYW1lIHdp
dGggVVJMICIgKyBtX2RvY3VtZW50LT51cmwoKS5zdHJpbmcoKSArICIuIERvbWFpbnMsIHByb3Rv
Y29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7CiAKICAgICAvLyBGSVhNRTogcHJvdmlkZSBs
aW5lIG51bWJlciBhbmQgc291cmNlIFVSTC4KLSAgICBmcmFtZSgpLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKKyAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIH0KIAogdm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggM2U2MTAwM2E1OWU5MTBmYzBmMGUwYjgwZjY4ZDUxMjZkMWU2
ZTVjYS4uZDM2MjNkZDFjZGMyZjkzYWM1NzhiZGJiZmU5NTEwYzBlYTlkNmZjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgRE9NV2luZG93Ojpj
bGVhckRPTVdpbmRvd1Byb3BlcnRpZXMoKQogCiBib29sIERPTVdpbmRvdzo6aXNDdXJyZW50bHlE
aXNwbGF5ZWRJbkZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZSAmJiBtX2ZyYW1l
LT5kb21XaW5kb3coKSA9PSB0aGlzOworICAgIHJldHVybiBtX2ZyYW1lICYmIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpID09IHRoaXM7CiB9CiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJ
T05fRVZFTlRTKQpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgRE9NV2luZG93KiBET01XaW5kb3c6OnNl
bGYoKSBjb25zdAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpOwogfQogCiBET01XaW5kb3cqIERPTVdpbmRvdzo6b3BlbmVyKCkgY29u
c3QKQEAgLTEyNzIsNyArMTI3Miw3IEBAIERPTVdpbmRvdyogRE9NV2luZG93OjpvcGVuZXIoKSBj
b25zdAogICAgIGlmICghb3BlbmVyKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBv
cGVuZXItPmRvbVdpbmRvdygpOworICAgIHJldHVybiBvcGVuZXItPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpOwogfQogCiBET01XaW5kb3cqIERPTVdpbmRvdzo6cGFyZW50KCkgY29uc3QKQEAgLTEy
ODIsOSArMTI4Miw5IEBAIERPTVdpbmRvdyogRE9NV2luZG93OjpwYXJlbnQoKSBjb25zdAogCiAg
ICAgRnJhbWUqIHBhcmVudCA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgaWYgKHBh
cmVudCkKLSAgICAgICAgcmV0dXJuIHBhcmVudC0+ZG9tV2luZG93KCk7CisgICAgICAgIHJldHVy
biBwYXJlbnQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogCi0gICAgcmV0dXJuIG1fZnJhbWUt
PmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KTsKIH0KIAogRE9NV2luZG93KiBET01XaW5kb3c6OnRvcCgpIGNvbnN0CkBAIC0xMjk2LDcgKzEy
OTYsNyBAQCBET01XaW5kb3cqIERPTVdpbmRvdzo6dG9wKCkgY29uc3QKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+dG9wKCkt
PmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT50cmVlKCktPnRvcCgpLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKTsKIH0KIAogRG9jdW1lbnQqIERPTVdpbmRvdzo6ZG9jdW1lbnQoKSBj
b25zdApAQCAtMTgyMywxMSArMTgyMywxMSBAQCBGcmFtZSogRE9NV2luZG93OjpjcmVhdGVXaW5k
b3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbQogICAg
IG5ld0ZyYW1lLT5sb2FkZXIoKS0+c2V0T3BlbmVyKG9wZW5lckZyYW1lKTsKICAgICBuZXdGcmFt
ZS0+cGFnZSgpLT5zZXRPcGVuZWRCeURPTSgpOwogCi0gICAgaWYgKG5ld0ZyYW1lLT5kb21XaW5k
b3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkp
CisgICAgaWYgKG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNj
cmlwdEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkpCiAgICAgICAgIHJldHVybiBu
ZXdGcmFtZTsKIAogICAgIGlmIChmdW5jdGlvbikKLSAgICAgICAgZnVuY3Rpb24obmV3RnJhbWUt
PmRvbVdpbmRvdygpLCBmdW5jdGlvbkNvbnRleHQpOworICAgICAgICBmdW5jdGlvbihuZXdGcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIGZ1bmN0aW9uQ29udGV4dCk7CiAKICAgICBpZiAo
Y3JlYXRlZCkKICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihhY3Rp
dmVXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIGZhbHNl
LCBmYWxzZSk7CkBAIC0xODc1LDExICsxODc1LDExIEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBE
T01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmlu
CiAKICAgICAgICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCi0gICAgICAgIGlmICh0YXJnZXRGcmFtZS0+ZG9tV2lu
ZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoYWN0aXZlV2luZG93LCBjb21wbGV0ZWRVUkwp
KQotICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb21XaW5kb3coKTsKKyAgICAgICAg
aWYgKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlw
dEFjY2VzcyhhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkpCisgICAgICAgICAgICByZXR1cm4g
dGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogCiAgICAgICAgIGlmICh1cmxT
dHJpbmcuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb21XaW5k
b3coKTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCk7CiAKICAgICAgICAgLy8gRm9yIHdoYXRldmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRo
ZSBmaXJzdCB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGFjdGl2ZSB3aW5kb3cgdG8KICAgICAgICAg
Ly8gZGV0ZXJtaW5lIHRoZSBvdXRnb2luZyByZWZlcnJlci4gV2UgcmVwbGljYXRlIHRoYXQgYmVo
YXZpb3IgaGVyZS4KQEAgLTE4OTAsNyArMTg5MCw3IEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBE
T01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmlu
CiAgICAgICAgICAgICBmaXJzdEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLAog
ICAgICAgICAgICAgbG9ja0hpc3RvcnksCiAgICAgICAgICAgICBmYWxzZSk7Ci0gICAgICAgIHJl
dHVybiB0YXJnZXRGcmFtZS0+ZG9tV2luZG93KCk7CisgICAgICAgIHJldHVybiB0YXJnZXRGcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgfQogCiAgICAgV2luZG93RmVhdHVyZXMg
d2luZG93RmVhdHVyZXMod2luZG93RmVhdHVyZXNTdHJpbmcpOwpAQCAtMTkwNCw3ICsxOTA0LDcg
QEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KICAgICB3aW5kb3dGZWF0dXJlcy53aWR0aCA9IHdp
bmRvd1JlY3Qud2lkdGgoKTsKIAogICAgIEZyYW1lKiByZXN1bHQgPSBjcmVhdGVXaW5kb3codXJs
U3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzLCBhY3RpdmVXaW5kb3csIGZpcnN0RnJh
bWUsIG1fZnJhbWUpOwotICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQtPmRvbVdpbmRvdygpIDog
MDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA6
IDA7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCmluZGV4IGFkMDQ2OTgwNmY5N2NmMDQ5ZGVk
ZTkxNmVmOGY1OWUyOWE2NzAxOGQuLjZmMTA5ZjFlZDhmYzE0ODM3MjBlN2E5NTA0MjdhZGRkM2E0
NTIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKIAogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNyArNDEsNyBAQCBET01XaW5kb3dQcm9wZXJ0
eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZyYW1lKQogICAgIC8vIFNlZSBmYXN0L2RvbS9u
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBmb3IgdGhlIHJlY2lwZS4KICAgICAvLyBX
ZSBzaG91bGQgZml4IHRoYXQuICA8cmRhcjovL3Byb2JsZW0vMTE1NjcxMzI+CiAgICAgaWYgKG1f
ZnJhbWUpIHsKLSAgICAgICAgbV9hc3NvY2lhdGVkRE9NV2luZG93ID0gbV9mcmFtZS0+ZG9tV2lu
ZG93KCk7CisgICAgICAgIG1fYXNzb2NpYXRlZERPTVdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpOwogICAgICAgICBtX2Fzc29jaWF0ZWRET01XaW5kb3ctPnJlZ2lzdGVy
UHJvcGVydHkodGhpcyk7CiAgICAgfQogfQpAQCAtNzAsNyArNzEsNyBAQCB2b2lkIERPTVdpbmRv
d1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoRnJhbWUqIGZyYW1lKQogICAg
IC8vIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gaXRzIEZyYW1lIGluIHRoZSBmaXJzdCBwbGFjZSBh
bmQgaXQgc2hvdWxkIHN0aWxsIGhhdmUgYW4gYXNzb2NpYXRlZCBET01XaW5kb3cuCiAgICAgQVNT
RVJUKGZyYW1lKTsKICAgICBBU1NFUlQoIW1fZnJhbWUpOwotICAgIEFTU0VSVChmcmFtZS0+ZG9t
V2luZG93KCkgPT0gbV9hc3NvY2lhdGVkRE9NV2luZG93KTsKKyAgICBBU1NFUlQoZnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpID09IG1fYXNzb2NpYXRlZERPTVdpbmRvdyk7CiAKICAgICBt
X2ZyYW1lID0gZnJhbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IGI4MjA1NzUxYjQ0NzJmYzNiN2ZjOTNkZGQ4ZDdmZmEyM2E5MGM4YmMuLmM3NDRjMTg5ZWJk
YmY0ZjBhNDBiOGE5OWQ4ZTc5YTI1ZGIwYTZkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlz
cGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgRHJhZ0RhdGEqIGRyYWcK
ICAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpID8gIiIgOiBkcmFnRGF0YS0+YXNQbGFpblRleHQoaW5uZXJGcmFt
ZSk7CiAgICAgTm9kZSogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmZpbmRFdmVudFRh
cmdldEZyb20obV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPmNhcmV0UG9zaXRpb24oKSk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9tV2luZG93KCksIHRl
eHQpLCBlYyk7CisgICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNy
ZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpLCBl
Yyk7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEq
IGRyYWdEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQ4NmQ0YmZj
ZGI5ZGM3MGYyOWY1MGEzOTlhYmY5MTdmNjAyMGY2MDcuLjNkZmZiOWZhNGY2ZDBlMTA1YTc0ZGI2
ODFhNmM0ZjE3Y2RmZDEwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAg
LTMyOTIsNyArMzI5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVu
dChjb25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlCiAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgdmlldy0+cmVzZXREZWZlcnJl
ZFJlcGFpbnREZWxheSgpOwogCi0gICAgUmVmUHRyPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZl
bnQ6OmNyZWF0ZShtX2ZyYW1lLT5kb21XaW5kb3coKSwgdGV4dCwgaW5wdXRUeXBlKTsKKyAgICBS
ZWZQdHI8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOwogICAgIGV2ZW50LT5zZXRVbmRl
cmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IDM4YmVhNzUwNThiOGQwZDJjOTAyOGJmZDM0NDcwZTk3NjIw
ZGNhODUuLjJhYmMxZmQ5ZGMxZTk5ZGY0MjBlN2I3M2IxZDY5ZTI1MmIzNWNlNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC02ODAsMTIgKzY4MCw2IEBAIHZvaWQgRnJhbWU6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9sb2FkZXIpOwogfQogCi1ET01XaW5kb3cqIEZyYW1l
Ojpkb21XaW5kb3coKSBjb25zdAotewotICAgIEFTU0VSVChtX2RvYy0+ZG9tV2luZG93KCkpOwot
ICAgIHJldHVybiBtX2RvYy0+ZG9tV2luZG93KCk7Ci19Ci0KIHZvaWQgRnJhbWU6OndpbGxEZXRh
Y2hQYWdlKCkKIHsKICAgICBpZiAoRnJhbWUqIHBhcmVudCA9IHRyZWUoKS0+cGFyZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKaW5kZXggMzBlNmQ1Y2Q3ZWMyZDRjZmY0MTliZDhkMzI2NTI4NTViZGJiZjJk
My4uM2E1Mjk1NmE0NTNiOGNhNjI1NDYzMjljMTkwN2JhODkzYTkyODcyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaApAQCAtMTI4LDEwICsxMjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAog
ICAgICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGJvb2wgc2hvd0RlYnVnSW5mbyA9IGZhbHNl
KSBjb25zdDsKIAotICAgICAgICAvLyBGSVhNRTogQ2FsbGVycyBzaG91bGQgdXNlIGRvY3VtZW50
KCktPmRvbVdpbmRvdygpIGRpcmVjdGx5LgotICAgICAgICBET01XaW5kb3cqIGRvbVdpbmRvdygp
IGNvbnN0OwotICAgICAgICBET01XaW5kb3cqIGV4aXN0aW5nRE9NV2luZG93KCkgeyByZXR1cm4g
ZG9tV2luZG93KCk7IH0KLQogICAgICAgICBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yV2lkZ2V0KGNv
bnN0IFdpZGdldCopOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OyAvLyBj
YW4gYmUgTlVMTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCBkZjZlYThkZjU0MmI4NWQ5
M2M3ZDFlNmRjNTM5NGYwOGY1YjA2NWY4Li5kNDRlZmY5MzFiNmQ4MDdjYjkxYmU1ZTAxNjk1ZTA3
ZjJhMTkzNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBA
IHZvaWQgTG9jYXRpb246OnJlcGxhY2UoY29uc3QgU3RyaW5nJiB1cmwsIERPTVdpbmRvdyogYWN0
aXZlV2luZG93LCBET01XaW5kb3cqIGZpCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm47CiAgICAgLy8gTm90ZTogV2UgY2FsbCBET01XaW5kb3c6OnNldExvY2F0aW9uIGRpcmVjdGx5
IGhlcmUgYmVjYXVzZSByZXBsYWNlKCkgYWx3YXlzIG9wZXJhdGVzIG9uIHRoZSBjdXJyZW50IGZy
YW1lLgotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmwsIGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3csIExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0KTsKKyAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLCBhY3RpdmVX
aW5kb3csIGZpcnN0V2luZG93LCBMb2NrSGlzdG9yeUFuZEJhY2tGb3J3YXJkTGlzdCk7CiB9CiAK
IHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5kb3cqIGFjdGl2ZVdpbmRvdykKQEAgLTI1MSw3
ICsyNTEsNyBAQCB2b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2luZG93KiBhY3RpdmVXaW5kb3cp
CiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgY3Jvc3Mtb3JpZ2luIHNlY3VyaXR5
IGNoZWNrIGlzIHZhbHVhYmxlLgogICAgIC8vIFdlIGFsbG93IG9uZSBwYWdlIHRvIGNoYW5nZSB0
aGUgbG9jYXRpb24gb2YgYW5vdGhlci4gV2h5IGJsb2NrIGF0dGVtcHRzIHRvIHJlbG9hZD8KICAg
ICAvLyBPdGhlciBsb2NhdGlvbiBvcGVyYXRpb25zIHNpbXBseSBibG9jayB1c2Ugb2YgSmF2YVNj
cmlwdCBVUkxzIGNyb3NzIG9yaWdpbi4KLSAgICBET01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IG1f
ZnJhbWUtPmRvbVdpbmRvdygpOworICAgIERPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFhY3RpdmVXaW5kb3ctPnNlY3Vy
aXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXRXaW5kb3ctPnNlY3VyaXR5T3JpZ2luKCkpKSB7
CiAgICAgICAgIHRhcmdldFdpbmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UodGFyZ2V0V2luZG93LT5j
cm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVXaW5kb3cpKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgTG9jYXRpb246OnNldExvY2F0aW9uKGNvbnN0
IFN0cmluZyYgdXJsLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93CiAgICAgRnJh
bWUqIGZyYW1lID0gbV9mcmFtZS0+bG9hZGVyKCktPmZpbmRGcmFtZUZvck5hdmlnYXRpb24oU3Ry
aW5nKCksIGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLCBhY3Rp
dmVXaW5kb3csIGZpcnN0V2luZG93KTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCktPnNldExvY2F0aW9uKHVybCwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDdjYjM2OGIyOWFmYmI3YmVlYWE0N2U0N2NlNjg1
ZmM2Zjk3MWI2NGYuLmQ0NTAyMTA2ZWU2YzllYmI0ZjFlNjM2YTZmNDU4NmM1MTliYTVhZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNw
cApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLAogCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZy
YW1lc1tpXS0+ZG9tV2luZG93KCktPnNlc3Npb25TdG9yYWdlKGVjKTsKKyAgICAgICAgICAgIFN0
b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZXNbaV0tPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXNz
aW9uU3RvcmFnZShlYyk7CiAgICAgICAgICAgICBpZiAoIWVjKQogICAgICAgICAgICAgICAgIGZy
YW1lc1tpXS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50KFN0b3JhZ2VFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBz
b3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHN0b3JhZ2UpKTsKICAgICAgICAgfQpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLAogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lc1tp
XS0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZShlYyk7CisgICAgICAgICAgICBTdG9yYWdlKiBz
dG9yYWdlID0gZnJhbWVzW2ldLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+bG9jYWxTdG9yYWdl
KGVjKTsKICAgICAgICAgICAgIGlmICghZWMpCiAgICAgICAgICAgICAgICAgZnJhbWVzW2ldLT5k
b2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoU3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHNvdXJjZUZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKSwgc3RvcmFnZSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDE1MmNlOGJiNzU5YzFlYzY0
MzNmZGE4ZDU3ODc2NjE4NTAzZmMyNjcuLmNhYzFhZWEwN2UwOTBkNzRlMjVlYTM0NjAwOWYyNWM3
ZDQ2ODBlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwCkBAIC0xOTYsOCArMTk2LDggQEAgc3RhdGljIGludCBwYXJzZXJMaW5lTnVtYmVyKERvY3Vt
ZW50KiBkb2N1bWVudCkKIAogc3RhdGljIHZvaWQgcmVwb3J0TWVzc2FnZShEb2N1bWVudCogZG9j
dW1lbnQsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmRv
bVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGRvY3VtZW50LT5kb2N1bWVudFVSSSgpLCBwYXJzZXJM
aW5lTnVtYmVyKGRvY3VtZW50KSk7CisgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpKQorICAgICAg
ICBkb2N1bWVudC0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgbWVzc2FnZSwgZG9jdW1lbnQtPmRvY3VtZW50
VVJJKCksIHBhcnNlckxpbmVOdW1iZXIoZG9jdW1lbnQpKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggYTE4YjdiMTY3MGUz
NTQ5OGFkYjI1MmI2MjM1YzY3NjI1OGU1MTgyMi4uMGI4MzQwY2Q5NWNhZWJlZmY4ZTE4MWY1YTEz
NWY5MWNjMGVjMzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhz
bHQuY3BwCkBAIC0xNDUsOCArMTQ1LDggQEAgYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBtX3N0eWxlc2hlZXREb2NUYWtlbiA9IGZhbHNl
OwogCiAgICAgQ29uc29sZSogY29uc29sZSA9IDA7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG93
bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgY29uc29sZSA9IGZyYW1lLT5kb21XaW5k
b3coKS0+Y29uc29sZSgpOworICAgIGlmIChvd25lckRvY3VtZW50KCktPmZyYW1lKCkpCisgICAg
ICAgIGNvbnNvbGUgPSBvd25lckRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCk7CiAK
ICAgICBYTUxEb2N1bWVudFBhcnNlclNjb3BlIHNjb3BlKGNhY2hlZFJlc291cmNlTG9hZGVyKCks
IFhTTFRQcm9jZXNzb3I6OmdlbmVyaWNFcnJvckZ1bmMsIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJy
b3JGdW5jLCBjb25zb2xlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKaW5kZXggMDc2YTg1MmQwNmQ4MzcxMDM3NjIyNjQ1YjAxMTk0NTJlY2JlMjRkNC4u
ZTIxYzgyN2MyNWRiYzVlZmQzMWJlNzA1ZjlmMzZmNTJkZTU0ODI0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMzgsOCArMTM4LDggQEAgc3Rh
dGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAg
fQogCiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUgPSAwOwotICAgICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnNvbGUgPSBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKTsKKyAgICAgICAgaWYgKGdsb2JhbFByb2Nlc3Nvci0+eHNsU3R5bGVzaGVldCgpLT5vd25l
ckRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgICAgICBjb25zb2xlID0gZ2xvYmFsUHJvY2Vz
c29yLT54c2xTdHlsZXNoZWV0KCktPm93bmVyRG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKTsKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJv
Y2Vzc29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAgICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1bmMo
Y29uc29sZSwgWFNMVFByb2Nlc3Nvcjo6Z2VuZXJpY0Vycm9yRnVuYyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAKaW5kZXggYzBhYjRkNjkzMTdkNWMzMWMzNmNiNGFhMDNk
YmU3MDZjMTUzYTk5OC4uYTY3YzVmZGU3NmZjYzU2OGNlM2M0YzY4YzYxMDYwZDQwYmI5MzEwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAKQEAgLTgzLDkgKzgzLDggQEAg
dm9pZCBYU0xUTWVzc2FnZUhhbmRsZXI6OmhhbmRsZU1lc3NhZ2UoUXRNc2dUeXBlIHR5cGUsIGNv
bnN0IFFTdHJpbmcmIGRlc2NyaXB0aW8KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgQ29u
c29sZSogY29uc29sZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmRvbVdpbmRvdygpLT5jb25zb2xl
KCk7Ci0gICAgY29uc29sZS0+YWRkTWVzc2FnZShYTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgbGV2ZWwsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
TG9jYXRpb24udXJpKCkudG9TdHJpbmcoKSwgc291cmNlTG9jYXRpb24ubGluZSgpKTsKKyAgICBD
b25zb2xlKiBjb25zb2xlID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKKyAg
ICBjb25zb2xlLT5hZGRNZXNzYWdlKFhNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBs
ZXZlbCwgZGVzY3JpcHRpb24sIHNvdXJjZUxvY2F0aW9uLnVyaSgpLnRvU3RyaW5nKCksIHNvdXJj
ZUxvY2F0aW9uLmxpbmUoKSk7CiB9CiAKIGNsYXNzIFhTTFRVcmlSZXNvbHZlciA6IHB1YmxpYyBR
QWJzdHJhY3RVcmlSZXNvbHZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAK
aW5kZXggYjBkYWU2MDk3N2Y0Mzk3Y2FmNWY4NWEyMWNlMDUxYWIyYWM4MGEyNC4uMDhjMTFkZDM5
MjQwY2QzNWI0YTNiZGViNjQyZjE3NjZkMDJmMzBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRC
bGFja0JlcnJ5LmNwcApAQCAtNzgsMTIgKzc4LDkgQEAgdXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpXaW5kb3c7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENT
dHJpbmcgZnJhbWVPcmlnaW4oRnJhbWUqIGZyYW1lKQorc3RhdGljIENTdHJpbmcgdG9PcmlnaW5T
dHJpbmcoRnJhbWUqIGZyYW1lKQogewotICAgIERPTVdpbmRvdyogd2luZG93ID0gZnJhbWUtPmRv
bVdpbmRvdygpOwotICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3aW5kb3ctPnNlY3VyaXR5
T3JpZ2luKCk7Ci0gICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IG9yaWdpbi0+dG9TdHJpbmcoKS5s
YXRpbjEoKTsKLSAgICByZXR1cm4gbGF0aW5PcmlnaW47CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmxhdGluMSgpOwogfQogCiBDaHJv
bWVDbGllbnRCbGFja0JlcnJ5OjpDaHJvbWVDbGllbnRCbGFja0JlcnJ5KFdlYlBhZ2VQcml2YXRl
KiBwYWdlUHJpdmF0ZSkKQEAgLTExMSw3ICsxMDgsNyBAQCB2b2lkIENocm9tZUNsaWVudEJsYWNr
QmVycnk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVz
cwogI2VuZGlmCiAKICAgICBUaW1lckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgp
OwotICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSBmcmFtZU9yaWdpbihmcmFtZSk7CisgICAgQ1N0
cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3RyaW5nKGZyYW1lKTsKICAgICBtX3dlYlBhZ2VQ
cml2YXRlLT5tX2NsaWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KG1lc3NhZ2UuY2hhcmFjdGVycygp
LCBtZXNzYWdlLmxlbmd0aCgpLCBsYXRpbk9yaWdpbi5kYXRhKCksIGxhdGluT3JpZ2luLmxlbmd0
aCgpKTsKIH0KIApAQCAtMTIzLDcgKzEyMCw3IEBAIGJvb2wgQ2hyb21lQ2xpZW50QmxhY2tCZXJy
eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lCiAj
ZW5kaWYKIAogICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7Ci0g
ICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZyYW1lT3JpZ2luKGZyYW1lKTsKKyAgICBDU3RyaW5n
IGxhdGluT3JpZ2luID0gdG9PcmlnaW5TdHJpbmcoZnJhbWUpOwogICAgIHJldHVybiBtX3dlYlBh
Z2VQcml2YXRlLT5tX2NsaWVudC0+cnVuSmF2YVNjcmlwdENvbmZpcm0obWVzc2FnZS5jaGFyYWN0
ZXJzKCksIG1lc3NhZ2UubGVuZ3RoKCksIGxhdGluT3JpZ2luLmRhdGEoKSwgbGF0aW5PcmlnaW4u
bGVuZ3RoKCkpOwogfQogCkBAIC0xMzcsNyArMTM0LDcgQEAgYm9vbCBDaHJvbWVDbGllbnRCbGFj
a0JlcnJ5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBt
ZXMKICNlbmRpZgogCiAgICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3Ao
KTsKLSAgICBDU3RyaW5nIGxhdGluT3JpZ2luID0gZnJhbWVPcmlnaW4oZnJhbWUpOworICAgIENT
dHJpbmcgbGF0aW5PcmlnaW4gPSB0b09yaWdpblN0cmluZyhmcmFtZSk7CiAgICAgV2ViU3RyaW5n
IGNsaWVudFJlc3VsdDsKICAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPnJ1bkph
dmFTY3JpcHRQcm9tcHQobWVzc2FnZS5jaGFyYWN0ZXJzKCksIG1lc3NhZ2UubGVuZ3RoKCksIGRl
ZmF1bHRWYWx1ZS5jaGFyYWN0ZXJzKCksIGRlZmF1bHRWYWx1ZS5sZW5ndGgoKSwgbGF0aW5Pcmln
aW4uZGF0YSgpLCBsYXRpbk9yaWdpbi5sZW5ndGgoKSwgY2xpZW50UmVzdWx0KSkgewogICAgICAg
ICByZXN1bHQgPSBjbGllbnRSZXN1bHQ7CkBAIC0zODYsNyArMzgzLDcgQEAgYm9vbCBDaHJvbWVD
bGllbnRCbGFja0JlcnJ5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLAogI2VuZGlmCiAKICAgICBUaW1lckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2
ZW50TG9vcCgpOwotICAgIENTdHJpbmcgbGF0aW5PcmlnaW4gPSBmcmFtZU9yaWdpbihmcmFtZSk7
CisgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3RyaW5nKGZyYW1lKTsKICAgICBy
ZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPnJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChtZXNzYWdlLmNoYXJhY3RlcnMoKSwgbWVzc2FnZS5sZW5ndGgoKSwgbGF0aW5PcmlnaW4u
ZGF0YSgpLCBsYXRpbk9yaWdpbi5sZW5ndGgoKSk7CiB9CiAKQEAgLTc2OCw3ICs3NjUsNyBAQCB2
b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OmZ1bGxTY3JlZW5SZW5kZXJlckNoYW5nZWQoUmVu
ZGVyQm94KiBmdWxsU2NyZWVuUmVuZAogdm9pZCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpyZXF1
ZXN0V2ViR0xQZXJtaXNzaW9uKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoZnJhbWUpIHsKLSAg
ICAgICAgQ1N0cmluZyBsYXRpbk9yaWdpbiA9IGZyYW1lT3JpZ2luKGZyYW1lKTsKKyAgICAgICAg
Q1N0cmluZyBsYXRpbk9yaWdpbiA9IHRvT3JpZ2luU3RyaW5nKGZyYW1lKTsKICAgICAgICAgbV93
ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPnJlcXVlc3RXZWJHTFBlcm1pc3Npb24obGF0aW5Pcmln
aW4uZGF0YSgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0
b3JhZ2VBcmVhUHJveHkuY3BwCmluZGV4IDcyMmU4MGY1MzJjMWRkZTZiMGFiODI3NDJkMmViNzAz
YzZlYzcxNjEuLmVmYTBjOTA5OGZlZWVkZDIxNzdmNmFlM2RmNGJhZGJmMmMyZjE3OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCkBAIC0x
MzEsNyArMTMxLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaExvY2FsU3RvcmFn
ZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3VwLCBjb25zdCBTdHIKICAgICBjb25zdCBIYXNoU2V0
PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAtPnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBh
Z2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdpbigpOyBpdCAhPSBwYWdlcy5lbmQo
KTsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAg
ICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBmcmFtZS0+ZG9tV2luZG93KCktPm9wdGlvbmFsTG9j
YWxTdG9yYWdlKCk7CisgICAgICAgICAgICBTdG9yYWdlKiBzdG9yYWdlID0gZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLT5vcHRpb25hbExvY2FsU3RvcmFnZSgpOwogICAgICAgICAgICAg
aWYgKHN0b3JhZ2UgJiYgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFs
KHNlY3VyaXR5T3JpZ2luKSAmJiAhaXNFdmVudFNvdXJjZShzdG9yYWdlLCBzb3VyY2VBcmVhSW5z
dGFuY2UpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93
RXZlbnQoU3RvcmFnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHBhZ2VVUkwsIHN0b3JhZ2UpKTsKICAgICAgICAgfQpAQCAt
MTYwLDcgKzE2MCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlzcGF0Y2hTZXNzaW9uU3Rv
cmFnZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3VwLCBjb25zdCBTCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIFN0b3JhZ2UqIHN0
b3JhZ2UgPSBmcmFtZS0+ZG9tV2luZG93KCktPm9wdGlvbmFsU2Vzc2lvblN0b3JhZ2UoKTsKKyAg
ICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+
b3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpOwogICAgICAgICBpZiAoc3RvcmFnZSAmJiBmcmFtZS0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pICYmICFp
c0V2ZW50U291cmNlKHN0b3JhZ2UsIHNvdXJjZUFyZWFJbnN0YW5jZSkpCiAgICAgICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50KFN0b3JhZ2VFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBwYWdl
VVJMLCBzdG9yYWdlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRE9NTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRPTU1lc3NhZ2VFdmVudC5jcHAKaW5kZXggNTNlYTQzY2UxM2Q5MzgzYjk2OGRlODY4ZjM1
YzIwNzBkYjg4ZDZhMy4uMDZjZjY2ZmM1NTkzM2RmMTZhNjgwNDg5YTc1ODI3MDNhNjU1Nzc4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NTWVzc2FnZUV2ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01NZXNzYWdlRXZlbnQu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRE9NTWVzc2FnZUV2ZW50LmgiCiAK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBXZWJET01N
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwKICAgICBBU1NFUlQoaXNNZXNzYWdlRXZlbnQoKSk7CiAgICAgRE9NV2luZG93
KiB3aW5kb3cgPSAwOwogICAgIGlmIChzb3VyY2VGcmFtZSkKLSAgICAgICAgd2luZG93ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViRnJhbWVJbXBsKj4oc291cmNlRnJhbWUpLT5mcmFtZSgpLT5kb21X
aW5kb3coKTsKKyAgICAgICAgd2luZG93ID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViRnJhbWVJbXBs
Kj4oc291cmNlRnJhbWUpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICBP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7CiAgICAgdW53cmFwPE1lc3NhZ2VFdmVudD4o
KS0+aW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIG1lc3NhZ2VE
YXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCB3aW5kb3csIHBvcnRzLnJlbGVhc2UoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA2N2Q4MWFk
ZGE1YWFjZmE5OGVmYmRmOGE0ZGU0OTUwNjg2Njc4Y2NhLi5hMWYzZWFiNzVhOWQxNjBhNzVmOThi
ZmMxNTEzOTRmYTdiNmM5Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKQEAgLTgwOSwxMCArODA5LDEwIEBAIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIq
IFdlYkZyYW1lSW1wbDo6YW5pbWF0aW9uQ29udHJvbGxlcigpCiAKIFdlYlBlcmZvcm1hbmNlIFdl
YkZyYW1lSW1wbDo6cGVyZm9ybWFuY2UoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSB8fCAh
bV9mcmFtZS0+ZG9tV2luZG93KCkpCisgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4g
V2ViUGVyZm9ybWFuY2UoKTsKIAotICAgIHJldHVybiBXZWJQZXJmb3JtYW5jZShtX2ZyYW1lLT5k
b21XaW5kb3coKS0+cGVyZm9ybWFuY2UoKSk7CisgICAgcmV0dXJuIFdlYlBlcmZvcm1hbmNlKG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZXJmb3JtYW5jZSgpKTsKIH0KIAogTlBP
YmplY3QqIFdlYkZyYW1lSW1wbDo6d2luZG93T2JqZWN0KCkgY29uc3QKQEAgLTg4Nyw3ICs4ODcs
NyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25z
b2xlTWVzc2FnZSYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZyYW1l
KCktPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgd2ViQ29yZU1lc3NhZ2VMZXZlbCwgbWVzc2FnZS50ZXh0KTsKKyAg
ICBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdl
KE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIHdlYkNvcmVNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UudGV4dCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpjb2xsZWN0R2FyYmFnZSgp
CkBAIC0xMTgwLDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6Y29tbWl0RG9jdW1lbnRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAKIHVuc2lnbmVkIFdlYkZyYW1l
SW1wbDo6dW5sb2FkTGlzdGVuZXJDb3VudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lKCkt
PmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICByZXR1cm4g
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3Rl
bmVycygpOwogfQogCiBib29sIFdlYkZyYW1lSW1wbDo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSBjb25zdApAQCAtMTk1NiwzNCArMTk1NiwyOSBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6c2VuZE9y
aWVudGF0aW9uQ2hhbmdlRXZlbnQoaW50IG9yaWVudGF0aW9uKQogCiB2b2lkIFdlYkZyYW1lSW1w
bDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJTdHJpbmcmIGV2ZW50VHlwZSwgV2ViRE9NRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBET01XaW5kb3cq
IHdpbmRvdyA9IG1fZnJhbWUtPmRvbVdpbmRvdygpOwotCi0gICAgRXZlbnRMaXN0ZW5lcldyYXBw
ZXIqIGxpc3RlbmVyV3JhcHBlciA9Ci0gICAgICAgIGxpc3RlbmVyLT5jcmVhdGVFdmVudExpc3Rl
bmVyV3JhcHBlcihldmVudFR5cGUsIHVzZUNhcHR1cmUsIHdpbmRvdyk7Ci0KLSAgICBtX2ZyYW1l
LT5kb21XaW5kb3coKS0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGFkb3B0UmVmKGxpc3Rl
bmVyV3JhcHBlciksIHVzZUNhcHR1cmUpOworICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgRXZlbnRMaXN0ZW5lcldyYXBwZXIqIGxp
c3RlbmVyV3JhcHBlciA9IGxpc3RlbmVyLT5jcmVhdGVFdmVudExpc3RlbmVyV3JhcHBlcihldmVu
dFR5cGUsIHVzZUNhcHR1cmUsIHdpbmRvdyk7CisgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgYWRvcHRSZWYobGlzdGVuZXJXcmFwcGVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVJbXBsOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IFdlYlN0cmluZyYg
ZXZlbnRUeXBlLCBXZWJET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewotICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCk7Ci0KLSAg
ICBFdmVudExpc3RlbmVyV3JhcHBlciogbGlzdGVuZXJXcmFwcGVyID0KLSAgICAgICAgbGlzdGVu
ZXItPmdldEV2ZW50TGlzdGVuZXJXcmFwcGVyKGV2ZW50VHlwZSwgdXNlQ2FwdHVyZSwgd2luZG93
KTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpOworICAgIEV2ZW50TGlzdGVuZXJXcmFwcGVyKiBsaXN0ZW5lcldyYXBwZXIgPSBsaXN0ZW5l
ci0+Z2V0RXZlbnRMaXN0ZW5lcldyYXBwZXIoZXZlbnRUeXBlLCB1c2VDYXB0dXJlLCB3aW5kb3cp
OwogICAgIHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyV3Jh
cHBlciwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVJbXBsOjpkaXNwYXRjaEV2ZW50
KGNvbnN0IFdlYkRPTUV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoIWV2ZW50LmlzTnVsbCgp
KTsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQp
OworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hF
dmVudChldmVudCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpkaXNwYXRjaE1lc3NhZ2VFdmVu
dFdpdGhPcmlnaW5DaGVjayhjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgaW50ZW5kZWRUYXJnZXRP
cmlnaW4sIGNvbnN0IFdlYkRPTUV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoIWV2ZW50Lmlz
TnVsbCgpKTsKICAgICAvLyBQYXNzIGFuIGVtcHR5IGNhbGwgc3RhY2ssIHNpbmNlIHdlIGRvbid0
IGhhdmUgdGhlIG9uZSBmcm9tIHRoZSBvdGhlciBwcm9jZXNzLgotICAgIG1fZnJhbWUtPmRvbVdp
bmRvdygpLT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhpbnRlbmRlZFRhcmdl
dE9yaWdpbi5nZXQoKSwgZXZlbnQsIDApOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhpbnRlbmRlZFRhcmdl
dE9yaWdpbi5nZXQoKSwgZXZlbnQsIDApOwogfQogCiBpbnQgV2ViRnJhbWVJbXBsOjpmaW5kTWF0
Y2hNYXJrZXJzVmVyc2lvbigpIGNvbnN0CkBAIC0yMTkwLDExICsyMTg1LDExIEBAIHZvaWQgV2Vi
RnJhbWVJbXBsOjpkZWxpdmVySW50ZW50KGNvbnN0IFdlYkludGVudCYgaW50ZW50LCBXZWJNZXNz
YWdlUG9ydENoYW5uZWxBCiAgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheSA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
OjplbnRhbmdsZVBvcnRzKCoobV9mcmFtZS0+ZG9tV2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJy
YXk+IHBvcnRBcnJheSA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCoobV9m
cmFtZS0+ZG9jdW1lbnQoKSksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CiAKICAgICBSZWZQdHI8RGVs
aXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZSht
X2ZyYW1lLCBjbGllbnQucmVsZWFzZSgpLCBpbnRlbnQuYWN0aW9uKCksIGludGVudC50eXBlKCks
IGludGVudERhdGEsIHBvcnRBcnJheS5yZWxlYXNlKCksIHdlYmNvcmVJbnRlbnQtPmV4dHJhcygp
KTsKIAotICAgIERPTVdpbmRvd0ludGVudHM6OmZyb20obV9mcmFtZS0+ZG9tV2luZG93KCkpLT5k
ZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworICAgIERPTVdpbmRvd0ludGVudHM6
OmZyb20obV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJl
ZEludGVudC5yZWxlYXNlKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAKaW5kZXggMThmNWRlMjBhNWUwZmZhZDEyYTA3
MjE3ODUwYjFmZmQ4ZTgwODBjMS4uZTg1MzI2NzdkN2ZmYmE1NmJmNGU3ZjZjMjYyYjYyNmEzMGNk
Y2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVw
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1w
bC5jcHAKQEAgLTE5OCw4ICsxOTgsNyBAQCBib29sIFdlYlBhZ2VQb3B1cEltcGw6OmluaXRQYWdl
KCkKICAgICBtX3BvcHVwQ2xpZW50LT53cml0ZURvY3VtZW50KCp3cml0ZXIpOwogICAgIHdyaXRl
ci0+ZW5kKCk7CiAKLSAgICBBU1NFUlQoZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpOwotICAg
IERPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFsbChmcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSwg
bV9wb3B1cENsaWVudCk7CisgICAgRE9NV2luZG93UGFnZVBvcHVwOjppbnN0YWxsKGZyYW1lLT5k
b2N1bWVudCgpLT5kb21XaW5kb3coKSwgbV9wb3B1cENsaWVudCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDRiODA0ZGQ2Mjc1MjJlZmEyYjM0
ZTg2MTA5NjcwZjU1MGE2ODNkOGIuLjk2YTU3OTFlZTJhOWYwNjU0MTFkMjk4NGFiMGE0ZjgyYTFm
YThkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIGJv
b2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwYXVzZVRyYW5zaXRpb24oRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBjb25zdCBjaGFyCiB1bnNpZ25lZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OnBlbmRpbmdVbmxvYWRFdmVudENvdW50KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsK
ICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKGV3
a0ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9h
ZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogCiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IGU4ZmVjNmQ2MzE3MzY4ZGE2
MWU2ZDUzMTQ3OTM4MDlhNjYxZmQzNDEuLjcyMzFiNTQ5ZGQ5NWZkMjM0MDIxYzJiM2M5YzY4Yzg1
Y2UzMWMwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC03NjYsMTIgKzc2
NiwxMiBAQCB2b2lkIGV3a19mcmFtZV9pbnRlbnRfZGVsaXZlcihjb25zdCBFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV3a19JbnRlbnQqIGV3a19pbnRlbgogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG9yaWdDaGFubmVscy0+c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAoKmNoYW5uZWxz
KVtpXSA9IG9yaWdDaGFubmVscy0+YXQoaSkucmVsZWFzZSgpOwogICAgIH0KLSAgICBPd25QdHI8
V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cygqKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvbVdpbmRvdygpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpLCBjaGFubmVscy5yZWxlYXNlKCkpOworICAgIE93blB0cjxXZWJDb3Jl
OjpNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmds
ZVBvcnRzKCooc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKSksIGNoYW5uZWxzLnJlbGVhc2Uo
KSk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6RGVsaXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNs
aWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRl
bnQgPSBXZWJDb3JlOjpEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZShzbWFydERhdGEtPmZyYW1lLCBk
dW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudC0+YWN0aW9uKCksIGludGVudC0+dHlwZSgpLCBp
bnRlbnQtPmRhdGEoKSwgcG9ydHMucmVsZWFzZSgpLCBpbnRlbnQtPmV4dHJhcygpKTsKIAotICAg
IFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20oc21hcnREYXRhLT5mcmFtZS0+ZG9tV2lu
ZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworICAgIFdlYkNvcmU6
OkRPTVdpbmRvd0ludGVudHM6OmZyb20oc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDAwZmViYzhiN2MyYTE0NDY0YjZlNDkz
YWQ4OWQ4OTBkNWMxMmZlMDcuLmM3NmRjZTlmNmY2YjI0M2NkZGRhYzZkNjIyZGIyYjI2YTY5MDA0
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGd1aW50
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9GUkFNRShmcmFtZSksIDApOwogCi0gICAgcmV0dXJuIGNvcmUoZnJhbWUpLT5kb21XaW5k
b3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgcmV0dXJuIGNvcmUoZnJh
bWUpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJz
KCk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVzZUFuaW1hdGlvbihX
ZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25z
dCBjaGFyKiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
MGFkMGVjYTI1NGQxNjIyMjlkYWI4MmQzNWZlMDM4M2UzNTEwOGUzNy4uOTJmOWUwYmI2MTY2ZWNk
NzJjMDQ5ZjNlZDM3MjIxMGNlZTIwODhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC05MDYsNyArOTA2LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpk
YXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKHVuc2lnbmVkKV9wZW5kaW5n
RnJhbWVVbmxvYWRFdmVudENvdW50CiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICByZXR1cm4g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxv
YWRFdmVudExpc3RlbmVycygpOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFT
b3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoZnJhbWVMb2FkZXItPnN1YmZy
YW1lTG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lucygpKQogICAgICAgICBbcmVzdWx0IHNldE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JLZXk6V2ViRnJhbWVIYXNQbHVnaW5z
XTsKICAgICAKLSAgICBpZiAoRE9NV2luZG93KiBkb21XaW5kb3cgPSBfcHJpdmF0ZS0+Y29yZUZy
YW1lLT5kb21XaW5kb3coKSkgeworICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRvdyA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSB7CiAgICAgICAgIGlmIChk
b21XaW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCiAg
ICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVT
XSBmb3JLZXk6V2ViRnJhbWVIYXNVbmxvYWRMaXN0ZW5lcl07CiAgICAgICAgIGlmIChkb21XaW5k
b3ctPm9wdGlvbmFsQXBwbGljYXRpb25DYWNoZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggYTE3MDMz
NjI1NGQwMGE4OTA5YTM4NzA4OGViZTk2Yjc0NTI0NTk5Ny4uYmNmMDcyZDY1YjU2NGZmMWVkNWFi
NmFkNTEyOTQ2MTg0MDkxYjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgp
CiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZVxuIiwg
cVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkp
OwogCiAgICAgaWYgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJ0UnVuKSB7Ci0gICAgICAgIGludCB1bmxv
YWRFdmVudENvdW50ID0gbV9mcmFtZS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExp
c3RlbmVycygpOworICAgICAgICBpbnQgdW5sb2FkRXZlbnRDb3VudCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKICAgICAg
ICAgaWYgKHVubG9hZEV2ZW50Q291bnQpCiAgICAgICAgICAgICBwcmludGYoIiVzIC0gaGFzICV1
IG9udW5sb2FkIGhhbmRsZXIocylcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCB1bmxvYWRFdmVudENvdW50KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAKaW5kZXggZmY1NjBjNjdiOTJhZmIyY2E3MzJiOWM5NzY5MGYxNWMzNzU3
YTUzMS4uZDE4ODBjZjNmYzZiYjk1ZDFhNTk1NTc0Nzk0MzAxNGQ5N2I5MDBiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OkRPTVdp
bmRvdygvKiBbcmV0dmFsXVtvdXRdICovIElET01XaW5kb3cqKiB3aW5kb3cpCiAgICAgKndpbmRv
dyA9IDA7CiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcykpIHsKLSAgICAg
ICAgaWYgKFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZVdpbmRvdyA9IGNvcmVGcmFtZS0+ZG9tV2lu
ZG93KCkpCisgICAgICAgIGlmIChXZWJDb3JlOjpET01XaW5kb3cqIGNvcmVXaW5kb3cgPSBjb3Jl
RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKQogICAgICAgICAgICAgKndpbmRvdyA9IDo6
RE9NV2luZG93OjpjcmVhdGVJbnN0YW5jZShjb3JlV2luZG93KTsKICAgICB9CiAKQEAgLTk4OSw3
ICs5ODksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpwZW5kaW5nRnJh
bWVVbmxvYWRFdmVudENvdW50KAogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCi0gICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+ZG9tV2luZG93KCktPnBlbmRpbmdV
bmxvYWRFdmVudExpc3RlbmVycygpOworICAgICpyZXN1bHQgPSBjb3JlRnJhbWUtPmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggZjM2ZmMwMjM4ZmVhZDNlYWNmNmFjMTMyYzkwYzk1MDg4OTk0Yzk1NC4u
MTkyNDNiZWUwM2U0NzI2Y2EwYmI3YTk4MWQ4YjMwODQzYjlkZTUxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0yNTEsNyArMjUxLDcg
QEAgdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChjb25zdCBJbnRlbnREYXRhJiBpbnRlbnRE
YXRhKQogICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2
ZXJlZEludGVudDo6Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGlu
dGVudERhdGEuYWN0aW9uLCBpbnRlbnREYXRhLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIGR1bW15UG9ydHMucmVsZWFzZSgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludGVudERhdGEuZXh0cmFzKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3dJbnRl
bnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50
ZW50LnJlbGVhc2UoKSk7CisgICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2Nv
cmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVu
dC5yZWxlYXNlKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ5Myw3ICs0OTMsNyBAQCB1bnNpZ25lZCBX
ZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkgY29uc3QKICAgICBpZiAoIW1fY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9tV2luZG93
KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAgIHJldHVybiBtX2NvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygp
OwogfQogCiBib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6
OktVUkwmIHVybCkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>