<?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>73814</bug_id>
          
          <creation_ts>2011-12-05 03:07:20 -0800</creation_ts>
          <short_desc>[Qt] Remove redundant m_glWidget-&gt;makeCurrent() calls in GraphicsContext3DQt.</short_desc>
          <delta_ts>2011-12-18 18:08:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514999</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2011-12-05 03:07:20 -0800</bug_when>
    <thetext>GraphicsContext3DQt&apos;s all APIs call m_glWidget-&gt;makeCurrent().
It causes a performance hit, especially in the page that has multi webgl contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515004</commentid>
    <comment_count>1</comment_count>
      <attachid>117863</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2011-12-05 03:16:47 -0800</bug_when>
    <thetext>Created attachment 117863
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515091</commentid>
    <comment_count>2</comment_count>
      <attachid>117863</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-12-05 08:13:12 -0800</bug_when>
    <thetext>Comment on attachment 117863
patch

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

Good patch, insufficient ChangeLog.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).

Insufficient Changelog. Please describe that you&apos;ve moved all the calls into makeContextCurrent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515438</commentid>
    <comment_count>3</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2011-12-05 15:13:28 -0800</bug_when>
    <thetext>That&apos;s simple reason. I followed GraphicsContext3DOpenGL.cpp.

There are two options.
1. makeContextCurrent();
2. m_private-&gt;makeCurrentIfNeeded();

I chose 1 option.

Do you think I should describe above explanation in Changelog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515538</commentid>
    <comment_count>4</comment_count>
      <attachid>117863</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2011-12-05 17:35:37 -0800</bug_when>
    <thetext>Comment on attachment 117863
patch

I want your response again, because there is no special reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518757</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-12-09 22:14:00 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; That&apos;s simple reason. I followed GraphicsContext3DOpenGL.cpp.
&gt; 
&gt; There are two options.
&gt; 1. makeContextCurrent();
&gt; 2. m_private-&gt;makeCurrentIfNeeded();
&gt; 
&gt; I chose 1 option.
&gt; 
&gt; Do you think I should describe above explanation in Changelog?

Not really, just say something like &quot;moved the redundant function calls to makeContextCurrent()&quot; should be enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523247</commentid>
    <comment_count>6</comment_count>
      <attachid>119714</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2011-12-16 21:41:53 -0800</bug_when>
    <thetext>Created attachment 119714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523253</commentid>
    <comment_count>7</comment_count>
      <attachid>119714</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 22:28:15 -0800</bug_when>
    <thetext>Comment on attachment 119714
Patch

Attachment 119714 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10922016

New failing tests:
http/tests/inspector/resource-tree/resource-tree-document-url.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523299</commentid>
    <comment_count>8</comment_count>
      <attachid>119714</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-12-17 08:01:32 -0800</bug_when>
    <thetext>Comment on attachment 119714
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Need a short description and bug URL (OOPS!)

Remove this line

&gt; Source/WebCore/ChangeLog:14
&gt; +        No new tests. (OOPS!)
&gt; +

You say &quot;No new functionality so no new tests&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523558</commentid>
    <comment_count>9</comment_count>
      <attachid>119784</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2011-12-18 16:04:55 -0800</bug_when>
    <thetext>Created attachment 119784
patch

I&apos;m sorry for my carelessness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523560</commentid>
    <comment_count>10</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-12-18 16:18:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=119784) [details]
&gt; patch
&gt; 
&gt; I&apos;m sorry for my carelessness.

It&apos;s no problem, we all forget this stuff once in a while :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523604</commentid>
    <comment_count>11</comment_count>
      <attachid>119784</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-18 18:08:04 -0800</bug_when>
    <thetext>Comment on attachment 119784
patch

Clearing flags on attachment: 119784

Committed r103203: &lt;http://trac.webkit.org/changeset/103203&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523605</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-18 18:08:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117863</attachid>
            <date>2011-12-05 03:16:47 -0800</date>
            <delta_ts>2011-12-16 21:41:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-Remove-redundant-m_glWidget-makeCurrent-calls-in-.patch</filename>
            <type>text/plain</type>
            <size>44633</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBhZTQ1ZmZkNWExMDc1MTU0ZGQyZGM1NWIwZjNjNjliOTRiYzc0OWQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IE1vbiwgNSBEZWMgMjAxMSAxOToyNzozNSArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IFtRdF0gUmVtb3ZlIHJlZHVuZGFudCBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpIGNhbGxzIGlu
CiBHcmFwaGljc0NvbnRleHQzRFF0LgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczODE0CgpJdCBjYXVzZXMgYSBwZXJmb3JtYW5jZSBoaXQuCi0tLQogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTU3ICsrKysrKysr
KysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCAgIHwg
IDMwNCArKysrKysrKysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzMTQgaW5zZXJ0aW9u
cygrKSwgMTQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YTA1YzJhLi5iYWNkZTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDExLTEyLTA1ICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHJlZHVuZGFu
dCBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpIGNhbGxzIGluIEdyYXBoaWNzQ29udGV4dDNEUXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzgxNAor
CisgICAgICAgIEl0IGNhdXNlcyBhIHBlcmZvcm1hbmNlIGhpdC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUN1cnJlbnRJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNo
YXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpj
bGVhckRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVhclN0
ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1h
Z2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1Yklt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmN1bGxGYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFzayk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4
dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0Zy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cmVsZWFzZVNoYWRlckNvbXBpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6c2Npc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hh
ZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
RnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNT
ZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1h
c2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2Vw
YXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm00Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
NGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4
MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVUZXh0dXJlKToKKwogMjAxMS0xMi0wNSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlh
a0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFzeW5jaHJvbm91cyBTcGVsbENoZWNrZXIgc2hvdWxk
IGNvbnNpZGVyIG11bHRpcGxlIHJlcXVlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAz
N2U5MTVlLi42NjgxNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtODIsNiArODIsNyBA
QCBwdWJsaWM6CiAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgYmxp
dE11bHRpc2FtcGxlRnJhbWVidWZmZXIoKSBjb25zdDsKICAgICB2b2lkIGJsaXRNdWx0aXNhbXBs
ZUZyYW1lYnVmZmVyQW5kUmVzdG9yZUNvbnRleHQoKSBjb25zdDsKKyAgICBib29sIG1ha2VDdXJy
ZW50SWZOZWVkZWQoKSBjb25zdDsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7
CiAgICAgSG9zdFdpbmRvdyogbV9ob3N0V2luZG93OwpAQCAtMTE0LDcgKzExNSw3IEBAIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBICiAgICAgLy8gR2VvbWV0cnkgY2FuIGJlIHNldCB0byB6ZXJvIGJl
Y2F1c2UgbV9nbFdpZGdldCBpcyB1c2VkIG9ubHkgZm9yIGl0cyBRR0xDb250ZXh0LgogICAgIG1f
Z2xXaWRnZXQtPnNldEdlb21ldHJ5KDAsIDAsIDAsIDApOwogCi0gICAgbV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ3VycmVudElmTmVlZGVkKCk7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCkBAIC0xNjUsNyArMTY2
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICBRSW1hZ2Ugb2Zmc2NyZWVuSW1hZ2Uo
d2lkdGgsIGhlaWdodCwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKICAgICBxdWludDMyKiBpbWFn
ZVBpeGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMo
KSk7CiAKLSAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDdXJyZW50SWZO
ZWVkZWQoKTsKICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOwogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8q
IHkgKi8gMCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CiAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRG
Qk8pOwpAQCAtMjA4LDcgKzIwOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
YWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpCiAKICAgICBR
UmVjdEYgcmVjdCA9IG9wdGlvbiA/IG9wdGlvbi0+cmVjdCA6IGJvdW5kaW5nUmVjdCgpOwogCi0g
ICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ3VycmVudElmTmVlZGVkKCk7
CiAgICAgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXIoKTsKIAogICAgIC8vIFVzZSBkaXJlY3Qg
dGV4dHVyZSBtYXBwaW5nIGlmIFdlYkdMIGNhbnZhcyBoYXMgYSBzaGFyZWQgT3BlbkdMIGNvbnRl
eHQKQEAgLTI4MSw2ICsyODIsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJs
aXRNdWx0aXNhbXBsZUZyYW1lYnVmZmVyQW5kUmVzdG9yZUNvbnRleHQoKSBjb24KICAgICAgICAg
bV9nbFdpZGdldC0+ZG9uZUN1cnJlbnQoKTsKIH0KIAorYm9vbCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6Om1ha2VDdXJyZW50SWZOZWVkZWQoKSBjb25zdAoreworICAgIGNvbnN0IFFHTENvbnRl
eHQqIGN1cnJlbnRDb250ZXh0ID0gUUdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKTsKKyAgICBj
b25zdCBRR0xDb250ZXh0KiB3aWRnZXRDb250ZXh0ID0gbV9nbFdpZGdldC0+Y29udGV4dCgpOwor
ICAgIGlmIChjdXJyZW50Q29udGV4dCAhPSB3aWRnZXRDb250ZXh0KQorICAgICAgICBtX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworCisgICAgcmV0dXJuIFFHTENvbnRleHQ6OmN1cnJlbnRDb250
ZXh0KCkgPT0gd2lkZ2V0Q29udGV4dDsKK30KKwogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
clN0eWxlIHJlbmRlclN0eWxlKQogewogICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24n
dCBjdXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cu
CkBAIC0zODQsNyArMzk1LDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNE
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKIAogR3JhcGhpY3ND
b250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGlmICgh
bV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUpOwpAQCAtNDE3LDEzICs0MjgsMTIgQEAgUGxh
dGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogCiBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5tYWtlQ3VycmVudElmTmVlZGVkKCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQsIERyYXdpbmdCdWZmZXIqKQogewotICAgIG1fcHJpdmF0ZS0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBI
VE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKICAgICBRUGFpbnRlciogcGFp
bnRlciA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpOwpAQCAtNDQ2
LDcgKzQ1Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVp
Z2h0ID0gaGVpZ2h0OwogCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZl
cgogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4
dHVyZSk7CkBAIC01MDMsNyArNTEzLDcgQEAgSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGds
QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIH0KIApAQCAtNTExLDcgKzUyMSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBs
YXRmb3JtM0RPYmplY3QKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRl
cik7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9
CiAKQEAgLTUyMiwxMTEgKzUzMiwxMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0
YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldEF0dGFjaGVkU2hhZGVy
cyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFt
KTsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgs
IG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRC
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xCaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCBidWZmZXIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIG1fYm91bmRGQk8gPSBidWZmZXIg
PyBidWZmZXIgOiBtX2ZibzsKICAgICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1fYm91bmRG
Qk8pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7Ci0gICAgbV9wcml2
YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJpbmRUZXh0dXJlKHRh
cmdldCwgdGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3Io
R0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNs
YW1wZiBhbHBoYSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xCbGVuZENvbG9yKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlv
bihHQzNEZW51bSBtb2RlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJsZW5kRXF1YXRpb24obW9k
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShH
QzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCiB7Ci0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBk
ZmFjdG9yKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9y
KTsKIH0gICAgICAgCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRl
KEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0Mz
RGVudW0gZHN0QWxwaGEpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUo
c3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwg
R0MzRGVudW0gdXNhZ2UpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQs
IHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZv
aWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJ1ZmZlckRh
dGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0Mz
RHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGds
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CiB9CiAKIEdDM0RlbnVt
IEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdl
dCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0
YXJnZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9yKEdDM0RjbGFt
cGYgciwgR0MzRGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYgYSkKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xDbGVhckNvbG9yKHIsIGcsIGIsIGEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKIHsKLSAgICBtX3ByaXZhdGUtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
Z2xDbGVhcihtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChH
QzNEY2xhbXBmIGRlcHRoKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9F
U18yKQogICAgIGdsQ2xlYXJEZXB0aGYoZGVwdGgpOwogI2Vsc2UKQEAgLTYzNiw2OCArNjQ2LDY4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkK
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJTdGVuY2lsKEdDM0RpbnQgcykKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xDbGVhclN0ZW5jaWwocyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNE
Ym9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xD
b2xvck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewogICAgIEFT
U0VSVChzaGFkZXIpOwotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xDb21wcmVz
c2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IGltYWdlU2l6ZSwgZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbENvcHlUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbENvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNEZW51bSBtb2RlKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBnbEN1bGxGYWNlKG1vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
ZXB0aEZ1bmMoR0MzRGVudW0gZnVuYykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZXB0aEZ1bmMo
ZnVuYyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFzayhHQzNEYm9vbGVh
biBmbGFnKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERlcHRoTWFzayhmbGFnKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZShHQzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xh
bXBmIHpGYXIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAg
ICAgZ2xEZXB0aFJhbmdlZih6TmVhciwgekZhcik7CiAjZWxzZQpAQCAtNzA5LDc5ICs3MTksNzkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBB
U1NFUlQoc2hhZGVyKTsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZXRhY2hTaGFkZXIocHJvZ3JhbSwg
c2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBj
YXApCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGlzYWJsZShjYXApOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNE
aW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRHJhd0Fy
cmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
cmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBl
LCBHQzNEaW50cHRyIG9mZnNldCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEcmF3RWxlbWVudHMo
bW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxl
KEdDM0RlbnVtIGNhcCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xFbmFibGUoY2FwKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQg
aW5kZXgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5k
ZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmaW5pc2goKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBnbEZpbmlzaCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCgp
CiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIGdsRmx1c2goKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBh
dHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
YnVmZmVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRh
cmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBHQzNEaW50IGxldmVsKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZl
bCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2Rl
KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBnbEZyb250RmFjZShtb2RlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQogewotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBnbEdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CiB9CiAKQEAgLTc5Miw3ICs4MDIs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKICAgICBnbEdldFBy
b2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhf
TEVOR1RILCAmbWF4TGVuZ3RoKTsKQEAgLTgyNCw3ICs4MzQsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVp
bnQgaW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAg
ICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKICAgICBnbEdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxH
THVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1fTUFYX0xF
TkdUSCwgJm1heExlbmd0aCk7CkBAIC04NTQsNyArODY0LDcgQEAgaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYKICAgICBpZiAoIXByb2dyYW0pCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKIH0KIApAQCAtODcyLDE5ICs4ODIsMTkgQEAgR0MzRGVudW0gR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEVycm9yKCkKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgcmV0dXJuIGdsR2V0RXJyb3IoKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTdHJpbmcoR0MzRGVudW0gbmFtZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0
dXJuIFN0cmluZygoY29uc3QgY2hhciopIGdsR2V0U3RyaW5nKG5hbWUpKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6aGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsSGludCh0YXJnZXQsIG1vZGUpOwogfQogCkBAIC04OTMsMTMg
KzkwMywxMyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZmZXIoUGxhdGZv
cm0zRE9iamVjdCBidWZmZXIpCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9G
QUxTRTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsK
IH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBj
YXApCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbElzRW5hYmxlZChjYXApOwogfQogCkBA
IC05MDgsNyArOTE4LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVi
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKICAgICBpZiAoIWZyYW1lYnVmZmVy
KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCi0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVy
biBnbElzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOwogfQogCkBAIC05MTcsNyArOTI3LDcgQEAg
R0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0pCiAgICAgaWYgKCFwcm9ncmFtKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAg
ICAgCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIApA
QCAtOTI2LDcgKzkzNiw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRl
cmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKICAgICBpZiAoIXJlbmRlcmJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAotICAgIG1fcHJpdmF0ZS0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBy
ZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwogfQogCkBAIC05MzUsNyArOTQ1
LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogICAgIGlmICghc2hhZGVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7
CiAgICAgCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbElzU2hhZGVyKHNoYWRlcik7CiB9CiAK
QEAgLTk0NCwzOCArOTU0LDM4IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Rl
eHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogICAgIGlmICghdGV4dHVyZSkKICAgICAg
ICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gZ2xJc1Rl
eHR1cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmVXaWR0aChH
QzNEZmxvYXQgd2lkdGgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsTGluZVdpZHRoKHN0YXRpY19j
YXN0PGZsb2F0Pih3aWR0aCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJv
Z3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwot
ICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFy
YW0pCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsUGl4ZWxTdG9yZWkocGFyYW1OYW1lLCBwYXJhbSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZh
Y3RvciwgR0MzRGZsb2F0IHVuaXRzKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFBvbHlnb25PZmZz
ZXQoZmFjdG9yLCB1bml0cyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhl
bHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKQogewotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICAKICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSB8fCBmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpCiAgICAgICAgIHJldHVy
bjsKQEAgLTk4NSwxMyArOTk1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhl
bHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCiB7Ci0gICAgbV9wcml2
YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewotICAgIG1fcHJpdmF0ZS0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICNp
ZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7
CiAgICAgY2FzZSBERVBUSF9TVEVOQ0lMOgpAQCAtMTAxNCwxMyArMTAyNCwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gaW50ZXJuYWxmbwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFn
ZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsU2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xTY2lzc29yKHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogfQogCkBAIC0xMDI4LDcgKzEwMzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmlu
ZyYgc291cgogewogICAgIEFTU0VSVChzaGFkZXIpOwogCi0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgU3Ry
aW5nIHByZWZpeGVkU291cmNlOwogCkBAIC0xMDQ2LDE2OSArMTA1NiwxNjkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBjb25z
dCBTdHJpbmcmIHNvdXIKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0Mz
RGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsU3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5j
LCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xTdGVu
Y2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsU3RlbmNpbE1hc2sobWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0
ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZh
aWwsIEdDM0RlbnVtIHpwYXNzKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFN0ZW5jaWxPcChmYWls
LCB6ZmFpbCwgenBhc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BT
ZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0Mz
RGVudW0genBhc3MpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsU3RlbmNpbE9wU2VwYXJhdGUoZmFj
ZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4
UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0
IHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwYXJh
bU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVy
aShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCB2YWx1ZSkKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgZ2xUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQgdjApCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTFmKGxvY2F0
aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAgbV9w
cml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
IHYwLCBHQzNEZmxvYXQgdjEpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTJmKGxvY2F0
aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewotICAg
IG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICBnbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rm
bG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7Ci0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IGdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBH
QzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYy
LCBHQzNEZmxvYXQgdjMpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9u
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00
ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCB2MCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtMWkobG9jYXRpb24sIHYw
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGlu
dCB2MSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewotICAgIG1fcHJpdmF0ZS0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBn
bFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQg
djEsIEdDM0RpbnQgdjIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTNpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAg
bV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBh
cnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTRpdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0Mz
RGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0
cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9h
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwogfQogCkBAIC0xMjE2LDEw
OSArMTIyNiwxMDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCi0g
ICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIGdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
IHYwKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xWZXJ0ZXhBdHRyaWIx
ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMmYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQogewotICAg
IG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rm
bG9hdCogYXJyYXkpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVmVydGV4QXR0cmliMmZ2KGluZGV4
LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQog
ewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJp
YjNmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0Rm
bG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJp
YjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwg
R0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLCBHQzNE
c2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNE
aW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiog
dmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0Qm9vbGVhbnYocGFyYW1OYW1lLCB2YWx1
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwg
dmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldEZs
b2F0dihwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewotICAg
IG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdl
dCwgYXR0YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0SW50ZWdlcnYocGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7Ci0gICAgbV9wcml2
YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwogICAg
IGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5H
VEgsICZsZW5ndGgpOwpAQCAtMTMzOSwyMCArMTM0OSwyMCBAQCBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3Jt
M0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewog
ICAgIEFTU0VSVChzaGFkZXIpOwotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldFNoYWRlcml2KHNoYWRl
ciwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKLSAgICBtX3ByaXZhdGUt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAK
ICAgICBHTGludCBsZW5ndGggPSAwOwogICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGlj
c0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKQEAgLTEzNzIsNyArMTM4Miw3
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlcikKIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3Vy
Y2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgR0xpbnQg
bGVuZ3RoID0gMDsKICAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6
OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKQEAgLTEzOTIsMjUgKzE0MDIsMjUgQEAg
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewot
ICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICBnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcGFyYW1OYW1lLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFs
dWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQogewot
ICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICBnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2YWx1ZSkKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0K
IApAQCAtMTQxOCwyNSArMTQyOCwyNSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRV
bmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAogewogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xHZXRWZXJ0
ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIEdDM0RzaXplaXB0ciBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBH
QzNEZW51bSBwYXJhbU5hbWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIAogICAgIEdMdm9pZCogcG9p
bnRlciA9IDA7CiAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1l
LCAmcG9pbnRlcik7CkBAIC0xNDQ1LDIwICsxNDU1LDIwIEBAIEdDM0RzaXplaXB0ciBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51
bSBwCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmYsIEdDM0RpbnQgeW9mZiwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IHBpeGVscykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIH0K
IAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKCkKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7CiAgICAgZ2xHZW5CdWZmZXJzKC8q
IGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CkBAIC0xNDY2LDcgKzE0
NzYsNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIo
KQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZl
cigpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwogICAgIGdsR2VuRnJh
bWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CkBA
IC0xNDc0LDEzICsxNDg0LDEzIEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlUHJvZ3JhbSgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbENyZWF0ZVBy
b2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
UmVuZGVyYnVmZmVyKCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7CiAg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVy
biBoYW5kbGU7CkBAIC0xNDg4LDEzICsxNDk4LDEzIEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiAKIFBsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICByZXR1cm4gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQogewotICAgIG1fcHJpdmF0ZS0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICBHTHVpbnQgaGFuZGxlID0gMDsKICAgICBnbEdlblRleHR1cmVzKDEsICZoYW5kbGUpOwogICAg
IHJldHVybiBoYW5kbGU7CkBAIC0xNTAyLDM3ICsxNTEyLDM3IEBAIFBsYXRmb3JtM0RPYmplY3Qg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7Ci0gICAgbV9wcml2
YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVy
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0pCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9n
cmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7Ci0gICAgbV9w
cml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwogfQogCi0tIAoxLjcuNS40
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119714</attachid>
            <date>2011-12-16 21:41:53 -0800</date>
            <delta_ts>2011-12-18 16:04:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Remove-redundant-m_glWidget-makeCurrent-calls-in-.patch</filename>
            <type>text/plain</type>
            <size>44815</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSAyMWI4ZTgyZWZmYzgyZjQwOTY5NTI4ZmJhYjVlMzM2Yzk1MzJjYTRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IE1vbiwgNSBEZWMgMjAxMSAxOToyNzozNSArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IFtRdF0gUmVtb3ZlIHJlZHVuZGFudCBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpIGNhbGxzIGlu
CiBHcmFwaGljc0NvbnRleHQzRFF0LgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczODE0CgpJdCBjYXVzZXMgYSBwZXJmb3JtYW5jZSBoaXQuCk1vdmVkIHRoZSByZWR1
bmRhbnQgZnVuY3Rpb24gY2FsbHMgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkuCi0tLQogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYyICsrKysr
KysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAg
ICB8ICAzMDQgKysrKysrKysrKy0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMzE5IGluc2Vy
dGlvbnMoKyksIDE0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxYmQ2My4uZmM0M2U5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NSBAQAorMjAxMS0xMi0xNiAgSHVhbmcgRG9uZ3N1
bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbUXRdIFJlbW92ZSByZWR1
bmRhbnQgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKSBjYWxscyBpbiBHcmFwaGljc0NvbnRleHQz
RFF0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4
MTQKKworICAgICAgICBJdCBjYXVzZXMgYSBwZXJmb3JtYW5jZSBoaXQuCisgICAgICAgIE1vdmVk
IHRoZSByZWR1bmRhbnQgZnVuY3Rpb24gY2FsbHMgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkuCisK
KyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUN1cnJlbnRJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjbGVhclN0ZW5jaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmN1bGxGYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRy
YXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVh
ZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNo
YWRlckNvbXBpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5k
ZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpz
YW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2Np
c3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2spOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0z
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRCb29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVs
ZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRl
bGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVs
ZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVU
ZXh0dXJlKToKKwogMjAxMS0xMi0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBNYWMgYnVpbGQgZml4IGFmdGVyIHIxMDMxMDQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCmluZGV4IGMzNTFmZWMuLjRmMjYxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC04
MSw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAg
ICAgdm9pZCBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpIGNvbnN0OwogICAgIHZvaWQgYmxp
dE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpIGNvbnN0OworICAgIGJv
b2wgbWFrZUN1cnJlbnRJZk5lZWRlZCgpIGNvbnN0OwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IG1fY29udGV4dDsKICAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CkBAIC0xMTMsNyArMTE0
LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEgKICAgICAvLyBHZW9tZXRyeSBjYW4gYmUgc2V0
IHRvIHplcm8gYmVjYXVzZSBtX2dsV2lkZ2V0IGlzIHVzZWQgb25seSBmb3IgaXRzIFFHTENvbnRl
eHQuCiAgICAgbV9nbFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7CiAKLSAgICBtX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDdXJyZW50SWZOZWVkZWQoKTsKIH0KIAog
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKQEAg
LTE2NCw3ICsxNjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgIFFJbWFnZSBvZmZz
Y3JlZW5JbWFnZSh3aWR0aCwgaGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwogICAgIHF1
aW50MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVu
SW1hZ2UuYml0cygpKTsKIAotICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFr
ZUN1cnJlbnRJZk5lZWRlZCgpOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8q
IHggKi8gMCwgLyogeSAqLyAwLCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4
dC0+bV9ib3VuZEZCTyk7CkBAIC0yMDcsNyArMjA4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFw
aGkKIAogICAgIFFSZWN0RiByZWN0ID0gb3B0aW9uID8gb3B0aW9uLT5yZWN0IDogYm91bmRpbmdS
ZWN0KCk7CiAKLSAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDdXJyZW50
SWZOZWVkZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpOwogCiAgICAgLy8g
VXNlIGRpcmVjdCB0ZXh0dXJlIG1hcHBpbmcgaWYgV2ViR0wgY2FudmFzIGhhcyBhIHNoYXJlZCBP
cGVuR0wgY29udGV4dApAQCAtMjgwLDYgKzI4MSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6YmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpIGNv
bgogICAgICAgICBtX2dsV2lkZ2V0LT5kb25lQ3VycmVudCgpOwogfQogCitib29sIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6bWFrZUN1cnJlbnRJZk5lZWRlZCgpIGNvbnN0Cit7CisgICAgY29u
c3QgUUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBRR0xDb250ZXh0OjpjdXJyZW50Q29udGV4
dCgpOworICAgIGNvbnN0IFFHTENvbnRleHQqIHdpZGdldENvbnRleHQgPSBtX2dsV2lkZ2V0LT5j
b250ZXh0KCk7CisgICAgaWYgKGN1cnJlbnRDb250ZXh0ICE9IHdpZGdldENvbnRleHQpCisgICAg
ICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisKKyAgICByZXR1cm4gUUdMQ29udGV4dDo6
Y3VycmVudENvbnRleHQoKSA9PSB3aWRnZXRDb250ZXh0OworfQorCiBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCiB7CiAgICAgLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHJlbmRlcmluZyBkaXJlY3RseSB0byB0aGUg
SG9zdFdpbmRvdy4KQEAgLTM4Myw3ICszOTQsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhp
Y3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQog
CiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgaWYgKCFtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CkBAIC00MTYsMTMgKzQy
NywxMiBAQCBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcigp
IGNvbnN0CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBtX3ByaXZhdGUtPm1ha2VDdXJyZW50SWZOZWVkZWQoKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwgRHJhd2luZ0J1ZmZlciopCiB7Ci0gICAgbV9w
cml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBjb250ZXh0LT5jYW52YXMoKTsK
ICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYW52YXMtPmJ1ZmZlcigpOwogICAgIFFQ
YWludGVyKiBwYWludGVyID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0
KCk7CkBAIC00NDUsNyArNDU1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKICAgICBt
X2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CiAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAvLyBDcmVhdGUg
Y29sb3IgYnVmZmVyCiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV90ZXh0dXJlKTsKQEAgLTUwMiw3ICs1MTIsNyBAQCBJbnRTaXplIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNvbnN0CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSkKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgZ2xBY3RpdmVUZXh0dXJlKHRleHR1cmUpOwogfQogCkBAIC01MTAsNyArNTIwLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBB
U1NFUlQoc2hhZGVyKTsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwg
c2hhZGVyKTsKIH0KIApAQCAtNTIxLDExMSArNTMxLDExMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6
ZWkgbQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0QXR0
YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNT
RVJUKHByb2dyYW0pOwotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVy
KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgbV9ib3VuZEZC
TyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1fZmJvOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKHRhcmdl
dCwgbV9ib3VuZEZCTyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJi
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVy
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQmlu
ZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmxlbmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBi
bHVlLCBHQzNEY2xhbXBmIGFscGhhKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJsZW5kQ29sb3Io
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQmxlbmRF
cXVhdGlvbihtb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlv
blNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3Is
IEdDM0RlbnVtIGRmYWN0b3IpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQmxlbmRGdW5jKHNmYWN0
b3IsIGRmYWN0b3IpOwogfSAgICAgICAKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRG
dW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNy
Y0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xCbGVuZEZ1
bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXpl
aXB0ciBzaXplLCBHQzNEZW51bSB1c2FnZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xCdWZmZXJE
YXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpCiB7Ci0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIg
b2Zmc2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0K
IAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0Mz
RGVudW0gdGFyZ2V0KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKHRhcmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29s
b3IoR0MzRGNsYW1wZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBh
KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBnbENsZWFyQ29sb3IociwgZywgYiwgYSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQogewotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBnbENsZWFyKG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpj
bGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lmIGRlZmluZWQo
UVRfT1BFTkdMX0VTXzIpCiAgICAgZ2xDbGVhckRlcHRoZihkZXB0aCk7CiAjZWxzZQpAQCAtNjM1
LDY4ICs2NDUsNjggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xh
bXBmIGRlcHRoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhclN0ZW5jaWwoR0MzRGlu
dCBzKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbENsZWFyU3RlbmNpbChzKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4g
Z3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBnbENvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
CiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQ29tcGlsZVNoYWRl
cihzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBH
QzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQogewotICAgIG1fcHJpdmF0ZS0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbENvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGds
Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQ29weVRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsQ3VsbEZhY2UobW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRlcHRoRnVuYyhHQzNEZW51bSBmdW5jKQogewotICAgIG1fcHJpdmF0ZS0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBn
bERlcHRoRnVuYyhmdW5jKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhNYXNr
KEdDM0Rib29sZWFuIGZsYWcpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGVwdGhNYXNrKGZsYWcp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aFJhbmdlKEdDM0RjbGFtcGYgek5l
YXIsIEdDM0RjbGFtcGYgekZhcikKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAjaWYgZGVmaW5lZChRVF9PUEVO
R0xfRVNfMikKICAgICBnbERlcHRoUmFuZ2VmKHpOZWFyLCB6RmFyKTsKICNlbHNlCkBAIC03MDgs
NzkgKzcxOCw3OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiB7CiAgICAgQVNTRVJUKHByb2dy
YW0pOwogICAgIEFTU0VSVChzaGFkZXIpOwotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERldGFjaFNoYWRl
cihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxl
KEdDM0RlbnVtIGNhcCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEaXNhYmxlKGNhcCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWlu
dCBpbmRleCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
aW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlbnVt
IG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKIHsKLSAgICBtX3ByaXZhdGUt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAg
ICAgZ2xEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdD
M0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERy
YXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjplbmFibGUoR0MzRGVudW0gY2FwKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEVuYWJsZShj
YXApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShHQzNEdWludCBpbmRleCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsRmluaXNoKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmZsdXNoKCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xGbHVzaCgpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCBidWZmZXIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCiB7Ci0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRl
eHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdD
M0RlbnVtIG1vZGUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRnJvbnRGYWNlKG1vZGUpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQp
CiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKIH0KIApAQCAt
NzkxLDcgKzgwMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwog
ICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRU
UklCVVRFX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOwpAQCAtODIzLDcgKzgzMyw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBHQzNEdWludCBpbmRlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwogICAgIGdsR2V0UHJvZ3JhbWl2KHN0
YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5J
Rk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKQEAgLTg1Myw3ICs4NjMsNyBAQCBpbnQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgU3RyaW5nJgogICAgIGlmICghcHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIC0xOwog
ICAgIAotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCkBAIC04NzEsMTkgKzg4MSwxOSBAQCBHQzNEZW51
bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogICAgICAgICByZXR1cm4gZXJyOwogICAg
IH0KIAotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gZ2xHZXRFcnJvcigpOwogfQogCiBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICByZXR1cm4gU3RyaW5nKChjb25zdCBjaGFyKikgZ2xHZXRTdHJpbmcobmFtZSkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpoaW50KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gbW9kZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xIaW50KHRhcmdldCwgbW9kZSk7CiB9CiAK
QEAgLTg5MiwxMyArOTAyLDEzIEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIEdMX0ZBTFNFOwogICAgIAotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gZ2xJc0J1ZmZl
cihidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVk
KEdDM0RlbnVtIGNhcCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsSXNFbmFibGVkKGNh
cCk7CiB9CiAKQEAgLTkwNyw3ICs5MTcsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
RDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogICAgIGlmICgh
ZnJhbWVidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CiB9CiAKQEAgLTkxNiw3
ICs5MjYsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBpZiAoIXByb2dyYW0pCiAgICAgICAgIHJldHVybiBH
TF9GQUxTRTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsSXNQcm9ncmFtKHByb2dy
YW0pOwogfQogCkBAIC05MjUsNyArOTM1LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogICAgIGlm
ICghcmVuZGVyYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCi0gICAgbV9w
cml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiB9CiAKQEAg
LTkzNCw3ICs5NDQsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgaWYgKCFzaGFkZXIpCiAgICAgICAgIHJldHVy
biBHTF9GQUxTRTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsSXNTaGFkZXIoc2hh
ZGVyKTsKIH0KIApAQCAtOTQzLDM4ICs5NTMsMzggQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0M0Q6OmlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiAgICAgaWYgKCF0ZXh0
dXJlKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCi0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJl
dHVybiBnbElzVGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
bGluZVdpZHRoKEdDM0RmbG9hdCB3aWR0aCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xMaW5lV2lk
dGgoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBBU1NFUlQo
cHJvZ3JhbSk7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGludCBwYXJhbSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xQaXhlbFN0b3JlaShwYXJhbU5h
bWUsIHBhcmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldChH
QzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGds
UG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQqIGRhdGEp
CiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIAogICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9CWVRFIHx8IGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtOTg0LDEzICs5OTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2kKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7Ci0gICAg
bV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIHN3aXRjaCAoaW50ZXJu
YWxmb3JtYXQpIHsKICAgICBjYXNlIERFUFRIX1NURU5DSUw6CkBAIC0xMDEzLDEzICsxMDIzLDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNh
bXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFNjaXNz
b3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKQEAgLTEwMjcsNyArMTAzNyw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwg
Y29uc3QgU3RyaW5nJiBzb3VyCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKICAgICBTdHJpbmcgcHJlZml4ZWRTb3VyY2U7CiAKQEAgLTEwNDUsMTY5ICsxMDU1LDE2OSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXIsIGNvbnN0IFN0cmluZyYgc291cgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdD
M0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewotICAgIG1fcHJpdmF0
ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsTWFzayhtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBtYXNr
KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBH
QzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsU3Rl
bmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVt
IHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsT3BT
ZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEZmxvYXQgdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVGV4UGFyYW1ldGVyZih0
YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0
ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50
IHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwYXJh
bU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlm
b3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlm
b3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2YoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9h
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm0z
ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBH
QzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3Jt
NGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXpl
LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShHQzNEaW50
IGxvY2F0aW9uLCBHQzNEaW50IHYwKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm0xaShs
b2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
IHYwLCBHQzNEaW50IHYxKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm0yaShsb2NhdGlv
biwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAgbV9w
cml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2
MCwgR0MzRGludCB2MSwgR0MzRGludCB2MikKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3Jt
M2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6
ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewot
ICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xV
bmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRp
b24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IGdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAK
QEAgLTEyMTUsMTA5ICsxMjI1LDEwOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0
ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIEFTU0VSVChwcm9ncmFt
KTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xWYWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQgdjApCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVmVydGV4QXR0cmliMWYoaW5k
ZXgsIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZl
cnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQg
djEpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xWZXJ0ZXhBdHRy
aWIyZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNE
ZmxvYXQgdjIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHYw
LCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGds
VmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9h
dCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGds
VmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFy
cmF5KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1
aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1h
bGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6
ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJf
dD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydChHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewot
ICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICBnbFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0Rib29sZWFuKiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xHZXRCb29sZWFudihwYXJh
bU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFy
YW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZh
bHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwg
cGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0
dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsR2V0RmxvYXR2KHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFs
dWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50
KiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xHZXRJbnRlZ2VydihwYXJhbU5hbWUsIHZh
bHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcGFyYW1OYW1lLCB2YWx1
ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0
aCA9IDA7CiAgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklO
Rk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CkBAIC0xMzM4LDIwICsxMzQ4LDIwIEBAIFN0cmluZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBw
YXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVy
aXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCog
dmFsdWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0U2hh
ZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewotICAg
IG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7CiAgICAgZ2xHZXRTaGFkZXJpdihzaGFk
ZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwpAQCAtMTM3
MSw3ICsxMzgxLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9n
KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKLSAgICBtX3ByaXZhdGUt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAK
ICAgICBHTGludCBsZW5ndGggPSAwOwogICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGlj
c0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOwpAQCAtMTM5MSwyNSAr
MTQwMSwyNSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcikKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFy
YW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCog
dmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBw
YXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFy
YW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZh
bHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcGFy
YW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1m
dihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCog
dmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVl
KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOwogfQogCkBAIC0xNDE3LDI1ICsxNDI3LDI1IEBAIEdDM0RpbnQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0CiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1
cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4
LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogR0Mz
RHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgCiAgICAg
R0x2b2lkKiBwb2ludGVyID0gMDsKICAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4
LCBwYXJhbU5hbWUsICZwb2ludGVyKTsKQEAgLTE0NDQsMjAgKzE0NTQsMjAgQEAgR0MzRHNpemVp
cHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RlbnVtIHAKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBm
b3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZiwgR0MzRGludCB5b2ZmLCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogcGl4ZWxzKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVC
dWZmZXIoKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0gMDsKICAgICBnbEdl
bkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKQEAg
LTE0NjUsNyArMTQ3NSw3IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZUJ1ZmZlcigpCiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZUZyYW1lYnVmZmVyKCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7CiAg
ICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJu
IGhhbmRsZTsKQEAgLTE0NzMsMTMgKzE0ODMsMTMgQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJu
IGdsQ3JlYXRlUHJvZ3JhbSgpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFu
ZGxlID0gMDsKICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7
CiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTE0ODcsMTMgKzE0OTcsMTMgQEAgUGxhdGZvcm0zRE9i
amVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIAogUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbENyZWF0ZVNoYWRlcih0eXBlKTsKIH0KIAogUGxh
dGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB7Ci0gICAg
bV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwogICAgIGdsR2VuVGV4dHVyZXMoMSwgJmhh
bmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTE1MDEsMzcgKzE1MTEsMzcgQEAgUGxhdGZv
cm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZmZXIpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZy
YW1lYnVmZmVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAm
ZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFt
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVQ
cm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5k
ZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQog
ewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7CiB9CiAK
LS0gCjEuNy41LjQKCg==
</data>
<flag name="review"
          id="119817"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="119818"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119784</attachid>
            <date>2011-12-18 16:04:55 -0800</date>
            <delta_ts>2011-12-18 18:08:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-Remove-redundant-m_glWidget-makeCurrent-calls-in-.patch</filename>
            <type>text/plain</type>
            <size>44773</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBkZGUzMmU5ZTMwYTQzODEyNTBmMDQ3YzFmYzYzOGQ1MDY0NDUxNTQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IE1vbiwgNSBEZWMgMjAxMSAxOToyNzozNSArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IFtRdF0gUmVtb3ZlIHJlZHVuZGFudCBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpIGNhbGxzIGlu
CiBHcmFwaGljc0NvbnRleHQzRFF0LgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczODE0CgpJdCBjYXVzZXMgYSBwZXJmb3JtYW5jZSBoaXQuCk1vdmVkIHRoZSByZWR1
bmRhbnQgZnVuY3Rpb24gY2FsbHMgdG8gbWFrZUNvbnRleHRDdXJyZW50KCkuCi0tLQogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTU4ICsrKysr
KysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCAg
IHwgIDMwNCArKysrKysrKysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzMTUgaW5zZXJ0
aW9ucygrKSwgMTQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMDdjYzI2Li45ZGIxNTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxIEBACisyMDExLTEyLTE2ICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHJlZHVu
ZGFudCBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpIGNhbGxzIGluIEdyYXBoaWNzQ29udGV4dDNE
UXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzgx
NAorCisgICAgICAgIEl0IGNhdXNlcyBhIHBlcmZvcm1hbmNlIGhpdC4KKyAgICAgICAgTW92ZWQg
dGhlIHJlZHVuZGFudCBmdW5jdGlvbiBjYWxscyB0byBtYWtlQ29udGV4dEN1cnJlbnQoKS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1h
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUN1cnJl
bnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBo
aWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYWtl
Q29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjph
dHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0
dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJh
bWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5k
ZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmNvbG9yTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29t
cGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJl
c3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmN1bGxGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0
aEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpmcm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
bmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFj
dGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0
dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpoaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpp
c1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5lV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6c2Npc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6c2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpzdGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRl
eFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleFBh
cmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0x
Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxp
ZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIz
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVy
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9M
b2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVy
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKToKKwogMjAxMS0xMi0xNyAgSHVhbmcgRG9u
Z3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbUVRdIFdlYkdMIGNh
biBub3QgbWFrZSB0aGUgZnJhbWUgYnVmZmVyIHdpdGggdGhlIHN0ZW5jaWwgYnVmZmVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcAppbmRleCBlYWMwYmVlLi5jMTA3MDMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFF0LmNwcApAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgUVJlY3RGIGJvdW5kaW5nUmVj
dCgpIGNvbnN0OwogICAgIHZvaWQgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXIoKSBjb25zdDsK
ICAgICB2b2lkIGJsaXRNdWx0aXNhbXBsZUZyYW1lYnVmZmVyQW5kUmVzdG9yZUNvbnRleHQoKSBj
b25zdDsKKyAgICBib29sIG1ha2VDdXJyZW50SWZOZWVkZWQoKSBjb25zdDsKIAogICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAgSG9zdFdpbmRvdyogbV9ob3N0V2luZG93OwpA
QCAtMTEzLDcgKzExNCw3IEBAIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBICiAgICAgLy8gR2VvbWV0
cnkgY2FuIGJlIHNldCB0byB6ZXJvIGJlY2F1c2UgbV9nbFdpZGdldCBpcyB1c2VkIG9ubHkgZm9y
IGl0cyBRR0xDb250ZXh0LgogICAgIG1fZ2xXaWRnZXQtPnNldEdlb21ldHJ5KDAsIDAsIDAsIDAp
OwogCi0gICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ3VycmVudElmTmVl
ZGVkKCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZSgpCkBAIC0xNjQsNyArMTY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAg
ICBRSW1hZ2Ugb2Zmc2NyZWVuSW1hZ2Uod2lkdGgsIGhlaWdodCwgUUltYWdlOjpGb3JtYXRfQVJH
QjMyKTsKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQz
Mio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKLSAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIG1ha2VDdXJyZW50SWZOZWVkZWQoKTsKICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOwogICAgIGds
UmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBp
eGVscyk7CiAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOwpAQCAtMjA3LDcgKzIwOCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0
eWxlT3B0aW9uR3JhcGhpCiAKICAgICBRUmVjdEYgcmVjdCA9IG9wdGlvbiA/IG9wdGlvbi0+cmVj
dCA6IGJvdW5kaW5nUmVjdCgpOwogCi0gICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ3VycmVudElmTmVlZGVkKCk7CiAgICAgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXIo
KTsKIAogICAgIC8vIFVzZSBkaXJlY3QgdGV4dHVyZSBtYXBwaW5nIGlmIFdlYkdMIGNhbnZhcyBo
YXMgYSBzaGFyZWQgT3BlbkdMIGNvbnRleHQKQEAgLTI4MCw2ICsyODEsMTYgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmJsaXRNdWx0aXNhbXBsZUZyYW1lYnVmZmVyQW5kUmVzdG9y
ZUNvbnRleHQoKSBjb24KICAgICAgICAgbV9nbFdpZGdldC0+ZG9uZUN1cnJlbnQoKTsKIH0KIAor
Ym9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om1ha2VDdXJyZW50SWZOZWVkZWQoKSBjb25z
dAoreworICAgIGNvbnN0IFFHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0gUUdMQ29udGV4dDo6
Y3VycmVudENvbnRleHQoKTsKKyAgICBjb25zdCBRR0xDb250ZXh0KiB3aWRnZXRDb250ZXh0ID0g
bV9nbFdpZGdldC0+Y29udGV4dCgpOworICAgIGlmIChjdXJyZW50Q29udGV4dCAhPSB3aWRnZXRD
b250ZXh0KQorICAgICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworCisgICAgcmV0dXJu
IFFHTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCkgPT0gd2lkZ2V0Q29udGV4dDsKK30KKwogUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQogewogICAgIC8vIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGly
ZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cuCkBAIC0zOTUsNyArNDA2LDcgQEAgR3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2kKIAogR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGlmICghbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUpOwpA
QCAtNDM2LDEzICs0NDcsMTIgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0M0Q6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4
dEN1cnJlbnQoKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5tYWtlQ3VycmVudElmTmVl
ZGVkKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQsIERyYXdpbmdCdWZmZXIq
KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4
dC0+Y2FudmFzKCk7CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FudmFzLT5idWZm
ZXIoKTsKICAgICBRUGFpbnRlciogcGFpbnRlciA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBs
YXRmb3JtQ29udGV4dCgpOwpAQCAtNDY1LDcgKzQ3NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIG1fY3VycmVudFdpZHRoID0g
d2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwogCi0gICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAg
ICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CkBAIC01NDAsNyArNTUwLDcgQEAgSW50U2l6
ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdAog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUp
CiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIGdsQWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIH0KIApAQCAt
NTQ4LDcgKzU1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKIHsKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQXR0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKQEAgLTU1OSwxMTEgKzU2OSwxMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgR0MzRHNpemVpIG0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJpdmF0
ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBnbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRl
cnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xCaW5kQXR0cmli
TG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xCaW5kQnVmZmVyKHRhcmdldCwg
YnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKEdD
M0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIG1fYm91bmRGQk8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ZibzsKICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcih0YXJnZXQsIG1fYm91bmRGQk8pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5k
ZXJidWZmZXIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQs
IHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJl
KEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4s
IEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKIHsKLSAgICBtX3ByaXZhdGUtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
Z2xCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKQogewotICAgIG1fcHJpdmF0
ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBnbEJsZW5kRXF1YXRpb24obW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxw
aGEpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0Is
IG1vZGVBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNE
ZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEJs
ZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsKIH0gICAgICAgCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdC
LCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBo
YSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewotICAg
IG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
CiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIGdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6
ZSwgZGF0YSk7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpjbGVhckNvbG9yKEdDM0RjbGFtcGYgciwgR0MzRGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIs
IEdDM0RjbGFtcGYgYSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xDbGVhckNvbG9yKHIsIGcsIGIs
IGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhcihHQzNEYml0ZmllbGQgbWFz
aykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xDbGVhcihtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogewotICAgIG1fcHJpdmF0
ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIGdsQ2xlYXJEZXB0aGYoZGVwdGgpOwog
I2Vsc2UKQEAgLTY3Myw2OCArNjgzLDY4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFy
RGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJT
dGVuY2lsKEdDM0RpbnQgcykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xDbGVhclN0ZW5jaWwocyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQs
IEdDM0Rib29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSkK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xDb2xvck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogewogICAgIEFTU0VSVChzaGFkZXIpOwotICAgIG1fcHJpdmF0ZS0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBn
bENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29t
cHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
aW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKLSAg
ICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKLSAgICBtX3ByaXZhdGUtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
Z2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQogewotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBnbENvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbENv
cHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNE
ZW51bSBtb2RlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEN1bGxGYWNlKG1vZGUpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aEZ1bmMoR0MzRGVudW0gZnVuYykKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xEZXB0aEZ1bmMoZnVuYyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRlcHRoTWFzayhHQzNEYm9vbGVhbiBmbGFnKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERl
cHRoTWFzayhmbGFnKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZShH
QzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lmIGRl
ZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgZ2xEZXB0aFJhbmdlZih6TmVhciwgekZhcik7CiAj
ZWxzZQpAQCAtNzQ2LDc5ICs3NTYsNzkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNo
U2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogewogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKLSAgICBtX3ByaXZhdGUtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
Z2xEZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGlzYWJs
ZShjYXApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0Fy
cmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCiB7Ci0g
ICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIGdsRHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNp
emVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50cHRyIG9mZnNldCkKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgZ2xEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKIHsKLSAgICBtX3ByaXZhdGUt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAg
ICAgZ2xFbmFibGUoY2FwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpmaW5pc2goKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEZpbmlzaCgpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsRmx1c2goKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFy
Z2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRl
eHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRl
eHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEaW50IGxldmVsKQogewotICAg
IG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEZyb250RmFj
ZShtb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXAoR0Mz
RGVudW0gdGFyZ2V0KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdlbmVyYXRlTWlwbWFwKHRhcmdl
dCk7CiB9CiAKQEAgLTgyOSw3ICs4MzksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4
TGVuZ3RoID0gMDsKICAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQz
RDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKQEAgLTg2MSw3ICs4
NzEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKICAgICBnbEdl
dFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQz
RDo6QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CkBAIC04OTEsNyArOTAx
LDcgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIXByb2dyYW0pCiAgICAgICAg
IHJldHVybiAtMTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIApAQCAtOTA5LDE5ICs5MTks
MTkgQEAgR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKCkKICAgICAgICAgcmV0
dXJuIGVycjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdsR2V0RXJyb3IoKTsK
IH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTdHJpbmcoR0MzRGVudW0gbmFtZSkK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIFN0cmluZygoY29uc3QgY2hhciopIGdsR2V0U3Ry
aW5nKG5hbWUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6aGludChHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIG1vZGUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsSGludCh0YXJnZXQs
IG1vZGUpOwogfQogCkBAIC05MzAsMTMgKzk0MCwxMyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0Nv
bnRleHQzRDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0
dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBn
bElzRW5hYmxlZChjYXApOwogfQogCkBAIC05NDUsNyArOTU1LDcgQEAgR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZl
cikKICAgICBpZiAoIWZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAg
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbElzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOwog
fQogCkBAIC05NTQsNyArOTY0LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6Omlz
UHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgaWYgKCFwcm9ncmFtKQogICAg
ICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbElz
UHJvZ3JhbShwcm9ncmFtKTsKIH0KIApAQCAtOTYzLDcgKzk3Myw3IEBAIEdDM0Rib29sZWFuIEdy
YXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1
ZmZlcikKICAgICBpZiAoIXJlbmRlcmJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwog
ICAgIAotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZm
ZXIpOwogfQogCkBAIC05NzIsNyArOTgyLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIGlmICghc2hhZGVyKQog
ICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCi0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBn
bElzU2hhZGVyKHNoYWRlcik7CiB9CiAKQEAgLTk4MSwzOCArOTkxLDM4IEBAIEdDM0Rib29sZWFu
IEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQog
ICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICByZXR1cm4gZ2xJc1RleHR1cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmxpbmVXaWR0aChHQzNEZmxvYXQgd2lkdGgpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGdsTGluZVdpZHRoKHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbExpbmtQcm9ncmFtKHBy
b2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaShHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsUGl4ZWxT
dG9yZWkocGFyYW1OYW1lLCBwYXJhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBv
bHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZsb2F0IHVuaXRzKQogewotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBnbFBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCB2b2lkKiBkYXRhKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICAKICAgICBpZiAodHlwZSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSB8fCBmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMjIsMTMgKzEwMzIsMTMgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2kKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRl
ckNvbXBpbGVyKCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAg
IHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpIHsKICAgICBjYXNlIERFUFRIX1NURU5DSUw6CkBAIC0x
MDUxLDEzICsxMDYxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFu
IGludmVydCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52
ZXJ0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3NvcihHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewotICAgIG1fcHJp
dmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBnbFNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKQEAgLTEwNjUsNyAr
MTA3NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNvdXJjZShQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlciwgY29uc3QgU3RyaW5nJiBzb3VyCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7
CiAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAKICAgICBTdHJpbmcgcHJlZml4ZWRTb3VyY2U7CiAKQEAgLTEwODMs
MTY5ICsxMDkzLDE2OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc291cgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVp
bnQgbWFzaykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1h
c2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQog
ewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKICAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVm
LCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVp
bnQgbWFzaykKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xTdGVuY2lsTWFzayhtYXNrKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNl
LCBHQzNEdWludCBtYXNrKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJh
dGUoZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChH
QzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7Ci0gICAgbV9w
cml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGdsU3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVt
IGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHsKLSAgICBtX3ByaXZhdGUt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAg
ICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGds
VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEaW50IHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFRleFBhcmFtZXRl
cmkodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgZ2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBH
QzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTJmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
M2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9h
dCB2MikKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwg
djIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewotICAgIG1fcHJpdmF0
ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwg
R0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQq
IGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtNGZ2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwKQogewotICAgIG1fcHJpdmF0ZS0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkg
c2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVu
aWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2koR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MikKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5
LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtM2l2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBH
QzNEaW50IHYzKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKLSAgICBt
X3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0
cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9h
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Ri
b29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7Ci0g
ICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIGdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7CiB9CiAKQEAgLTEyNTMsMTA5ICsxMjYzLDEwOSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICAKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xWYWxpZGF0ZVByb2dy
YW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFm
KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVmVy
dGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
IHYwLCBHQzNEZmxvYXQgdjEpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVmVydGV4QXR0cmliMmYo
aW5kZXgsIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKLSAgICBtX3ByaXZhdGUt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAg
ICAgZ2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0Mz
RGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsVmVydGV4QXR0
cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7Ci0gICAg
bV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIGdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxv
YXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7Ci0gICAg
bV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIGdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQqIGFycmF5KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJpYjRm
dihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdD
M0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0
KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUs
IHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0KQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbFZpZXdwb3J0KHgsIHksIHdpZHRoLCBo
ZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudihHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xH
ZXRCb29sZWFudihwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQqIHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldEJ1ZmZlclBhcmFt
ZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0RmxvYXR2KHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFt
ZSwgR0MzRGludCogdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xHZXRJbnRlZ2Vy
dihwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
aW50KiB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwg
cGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewotICAgIG1fcHJpdmF0ZS0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAog
ICAgIEdMaW50IGxlbmd0aCA9IDA7CiAgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CkBAIC0xMzc2LDIwICsxMzg2
LDIwIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGludCogdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0RlbnVtIHBhcmFt
TmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7Ci0gICAgbV9wcml2
YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3Ry
aW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7CiAgICAgZ2xH
ZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZs
ZW5ndGgpOwpAQCAtMTQwOSw3ICsxNDE5LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogCiBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsK
LSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwogICAgIGdsR2V0U2hhZGVyaXYo
c2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgp
OwpAQCAtMTQyOSwyNSArMTQzOSwyNSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNo
YWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0VGV4UGFyYW1l
dGVyZnYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQqIHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCogdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGdsR2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIHZhbHVlKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbEdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCkBAIC0xNDU1LDI1ICsxNDY1LDI1IEBAIEdDM0Rp
bnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIGNvbnN0IFN0CiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAotICAgIG1f
cHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmli
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcGFyYW1OYW1l
LCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2
KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewot
ICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKICAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZh
bHVlKTsKIH0KIAogR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKICAgICBnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2ludGVyKTsKQEAgLTE0ODIsMjAgKzE0OTIs
MjAgQEAgR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHAKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVy
bmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9y
ZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykK
IHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgZ2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2Uy
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZiwgR0MzRGludCB5
b2ZmLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQogewotICAgIG1fcHJpdmF0ZS0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBn
bFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVCdWZmZXIoKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxl
ID0gMDsKICAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0
dXJuIGhhbmRsZTsKQEAgLTE1MDMsNyArMTUxMyw3IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0x1aW50
IGhhbmRsZSA9IDA7CiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRs
ZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTE1MTEsMTMgKzE1MjEsMTMgQEAgUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogCiBQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKCkKIHsKLSAgICBtX3By
aXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgcmV0dXJuIGdsQ3JlYXRlUHJvZ3JhbSgpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewotICAgIG1fcHJpdmF0
ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBHTHVpbnQgaGFuZGxlID0gMDsKICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQg
Ki8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTE1MjUsMTMgKzE1MzUsMTMg
QEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVy
KCkKIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdD
M0RlbnVtIHR5cGUpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnbENyZWF0ZVNoYWRlcih0
eXBlKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4
dHVyZSgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwogICAgIGdsR2Vu
VGV4dHVyZXMoMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKQEAgLTE1MzksMzcgKzE1
NDksMzcgQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVy
ZSgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2Jq
ZWN0IGJ1ZmZlcikKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZm
ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0
Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERlbGV0ZUZy
YW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKLSAgICBtX3ByaXZh
dGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7
Ci0gICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVy
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogewotICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSkKIHsKLSAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAm
dGV4dHVyZSk7CiB9CiAKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>