<?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>170758</bug_id>
          
          <creation_ts>2017-04-11 18:26:18 -0700</creation_ts>
          <short_desc>Modernize vector adoption</short_desc>
          <delta_ts>2017-04-12 08:40:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1296623</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-11 18:26:18 -0700</bug_when>
    <thetext>Modernize vector adoption</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296624</commentid>
    <comment_count>1</comment_count>
      <attachid>306882</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-11 18:28:18 -0700</bug_when>
    <thetext>Created attachment 306882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296627</commentid>
    <comment_count>2</comment_count>
      <attachid>306882</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-11 19:03:10 -0700</bug_when>
    <thetext>Comment on attachment 306882
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.h:61
&gt; +    WEBCORE_EXPORT static Ref&lt;SharedBuffer&gt; adoptVector(Vector&lt;char&gt;&amp;&amp;);

Seems like this could just be called create(Vector&lt;char&gt;&amp;&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296637</commentid>
    <comment_count>3</comment_count>
      <attachid>306882</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-04-11 21:15:58 -0700</bug_when>
    <thetext>Comment on attachment 306882
Patch

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

r=me

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:61
&gt;&gt; +    WEBCORE_EXPORT static Ref&lt;SharedBuffer&gt; adoptVector(Vector&lt;char&gt;&amp;&amp;);
&gt; 
&gt; Seems like this could just be called create(Vector&lt;char&gt;&amp;&amp;)

👍 for create().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296685</commentid>
    <comment_count>4</comment_count>
      <attachid>306898</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-12 01:41:52 -0700</bug_when>
    <thetext>Created attachment 306898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296692</commentid>
    <comment_count>5</comment_count>
      <attachid>306898</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-12 02:25:08 -0700</bug_when>
    <thetext>Comment on attachment 306898
Patch

Clearing flags on attachment: 306898

Committed r215262: &lt;http://trac.webkit.org/changeset/215262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296693</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-12 02:25:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296718</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-12 05:16:35 -0700</bug_when>
    <thetext>Committed r215266: &lt;http://trac.webkit.org/changeset/215266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296719</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-12 05:33:09 -0700</bug_when>
    <thetext>Committed r215267: &lt;http://trac.webkit.org/changeset/215267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296737</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-12 08:40:26 -0700</bug_when>
    <thetext>Thanks Yusuke!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306882</attachid>
            <date>2017-04-11 18:28:18 -0700</date>
            <delta_ts>2017-04-12 01:41:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170758-20170411182817.patch</filename>
            <type>text/plain</type>
            <size>21276</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA0LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IHZlY3RvciBhZG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcwNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJl
c3VsdDo6ZGF0YUZyb21CdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZGVjb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRl
Y29kZUtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldElu
ZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpm
b250KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250Ojpj
cmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL1RocmVhZFNhZmVEYXRhQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRTYWZlRGF0YUJ1ZmZlckltcGw6OlRocmVhZFNhZmVEYXRhQnVmZmVySW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6VGhyZWFkU2FmZURhdGFCdWZmZXI6OlRocmVhZFNhZmVEYXRhQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZFNhZmVEYXRhQnVmZmVyOjpkZWNvZGUpOgorICAgICAgICAo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJM
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpkZWNvZGVCYXNlNjQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZUVzY2FwZWQpOgorCiAyMDE3LTA0LTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01vZGVybiBNZWRpYSBD
b250cm9sc10gQWxsb3cgbW9kZXJuLW1lZGlhLWNvbnRyb2xzIHRvIGJlIHByb3ZpZGVkIHRocm91
Z2ggV2ViS2l0QWRkaXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDIx
NTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdAogICAgICAgICBpZiAoIVdURjo6YmFzZTY0VVJM
RGVjb2RlKGtleUlELCB7IGtleUlERGF0YSB9KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlEQnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3RvcihrZXlJRERhdGEpOworICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJREJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoV1RGTW92ZShrZXlJRERhdGEpKTsKICAgICAg
ICAga2V5SURzLmFwcGVuZChXVEZNb3ZlKGtleUlEQnVmZmVyKSk7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAJ
KHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBJREJH
ZXRSZXN1bHQ6OmRhdGFGcm9tQnVmZmVyKFNoYXJlZAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
KGJ1ZmZlci5zaXplKCkpOwogICAgIG1lbWNweShkYXRhLmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAKLSAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFk
b3B0VmVjdG9yKGRhdGEpOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRv
cHRWZWN0b3IoV1RGTW92ZShkYXRhKSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0UmVzdWx0
KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAJKHJldmlzaW9u
IDIxNTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNyArMjQyLDcgQEAgYm9vbCBJREJLZXlEYXRhOjpk
ZWNvZGUoS2V5ZWREZWNvZGVyJiBkZQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlQnl0ZXMo
ImJpbmFyeSIsIGJ5dGVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBy
ZXN1bHQubV92YWx1ZSA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjphZG9wdFZlY3RvcihieXRlcyk7
CisgICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVj
dG9yKFdURk1vdmUoYnl0ZXMpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCShyZXZpc2lvbiAyMTUyNTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4Niw3ICsyODYsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhCiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5j
b2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3Io
ZGF0YSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIHN0YXRpYyBib29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29u
c3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCkBAIC0zNTYsNyArMzU2LDcgQEAg
c3RhdGljIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYQogICAgICAgICBkYXRhVmVj
dG9yLmFwcGVuZChkYXRhLCBzaXplKTsKICAgICAgICAgZGF0YSArPSBzaXplOwogCi0gICAgICAg
IHJlc3VsdC5zZXRCaW5hcnlWYWx1ZShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3Io
ZGF0YVZlY3RvcikpOworICAgICAgICByZXN1bHQuc2V0QmluYXJ5VmFsdWUoVGhyZWFkU2FmZURh
dGFCdWZmZXI6OmFkb3B0VmVjdG9yKFdURk1vdmUoZGF0YVZlY3RvcikpKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgU0lEQktleVR5cGU6OkFycmF5OiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAkocmV2aXNpb24gMjE1MjU1KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NjEsNyArMTk2MSw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3IKIAogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyOwogICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBidWZmZXIpOwotICAg
ICAgICByZXN1bHRCdWZmZXIgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3IoYnVm
ZmVyKTsKKyAgICAgICAgcmVzdWx0QnVmZmVyID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0
VmVjdG9yKFdURk1vdmUoYnVmZmVyKSk7CiAKICAgICAgICAgaWYgKHR5cGUgPT0gSURCR2V0UmVj
b3JkRGF0YVR5cGU6OktleUFuZFZhbHVlKQogICAgICAgICAgICAgcmVjb3JkSUQgPSBzcWwtPmdl
dENvbHVtbkludDY0KDEpOwpAQCAtMjA5MCw3ICsyMDkwLDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRBbGxPYgogICAgICAgICBpZiAoZ2V0QWxsUmVjb3Jkc0RhdGEuZ2V0
QWxsVHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5cGU6OlZhbHVlcykgewogICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFz
VmVjdG9yKDAsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciByZXN1
bHRCdWZmZXIgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3IoYnVmZmVyKTsKKyAg
ICAgICAgICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIHJlc3VsdEJ1ZmZlciA9IFRocmVhZFNhZmVE
YXRhQnVmZmVyOjphZG9wdFZlY3RvcihXVEZNb3ZlKGJ1ZmZlcikpOwogCiAgICAgICAgICAgICBh
dXRvIHJlY29yZElEID0gc3FsLT5nZXRDb2x1bW5JbnQ2NCgxKTsKIApAQCAtMjI3Miw3ICsyMjcy
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZQogICAgIGlmICgh
ZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBlcnJvcjsKIAotICAgIGdldFJlc3VsdCA9
IHsgeyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3Ioa2V5VmVjdG9yKSwgV1RGTW92
ZShibG9iVVJMcyksIFdURk1vdmUoYmxvYkZpbGVQYXRocykgfSwgb2JqZWN0U3RvcmVLZXkgfTsK
KyAgICBnZXRSZXN1bHQgPSB7IHsgVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVjdG9yKFdU
Rk1vdmUoa2V5VmVjdG9yKSksIFdURk1vdmUoYmxvYlVSTHMpLCBXVEZNb3ZlKGJsb2JGaWxlUGF0
aHMpIH0sIG9iamVjdFN0b3JlS2V5IH07CiAgICAgcmV0dXJuIHsgfTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAJKHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTQsNyArNDU0LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJ
REJDdQogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6
OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKQotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjphZG9w
dFZlY3RvcihrZXlEYXRhKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAgICAg
cmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjphZG9wdFZlY3RvcihXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJs
b2JGaWxlUGF0aHMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmlt
YXJ5S2V5KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUg
dmFsdWUgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsK
QEAgLTQ3Niw3ICs0NzYsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlE
QkN1CiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBv
YmplY3RTdG9yZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5RGF0YSk7Ci0g
ICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1
ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVjdG9yKGtleURhdGEpKTsKKyAgICAgICAg
ICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJl
YWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3IoV1RGTW92ZShrZXlEYXRhKSkpOwogICAgICAg
ICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgLy8gVGhp
cyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0byByZXRyaWV2ZSBoYXMg
YmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAgICAgICAgIC8vIFNraXAg
b3ZlciBpdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAko
cmV2aXNpb24gMjE1MjU1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIFJlZlB0cjxGb250PiBDU1NG
b250RmFjZVNvdXJjZTo6Zm9udChjb24KICAgICBpZiAoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRm
b3JtRGF0YSkgewogICAgICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2Fz
dDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwog
ICAgICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVu
dCkpCi0gICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRv
cHRWZWN0b3Iob3RmRm9udC52YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkp
OwogICAgICAgICBpZiAoIW1fZ2VuZXJhdGVkT1RGQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjE1MjU1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgy
NCw3ICsyODI0LDcgQEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlUwog
ICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5
YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7
CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
bmV0d29ya2luZ0NvbnRleHQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgc3RvcmVkQ3JlZGVu
dGlhbHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsK
LSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7Cisg
ICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNl
cnZlcigpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9u
c2UpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDIxNTI1
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzAsNyArMTEzMCw3IEBAIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2gKICAgICAgICAgVmVjdG9yPGNoYXI+IGJsb2I7
CiAgICAgICAgIGNhY2hlU3RhdGVtZW50LmdldENvbHVtbkJsb2JBc1ZlY3Rvcig2LCBibG9iKTsK
ICAgICAgICAgCi0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3Io
YmxvYik7CisgICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoV1RG
TW92ZShibG9iKSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVt
ZW50LmdldENvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAJKHJldmlzaW9uIDIx
NTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiAKICAgICAgICAgaWYgKCFjb252ZXJ0V09GRlRvU2ZudChieXRlcywgY29u
dmVydGVkRm9udCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoY29udmVydGVkRm9udCk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQpKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
YnVmZmVyKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAJKHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhCiAgICAg
ICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9u
dCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9u
dCA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoY29udmVydGVkRm9udC52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoV1RG
TW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5h
bFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAkocmV2aXNpb24gMjE1MjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDEwICsxMDYsMTAg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdAogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoVmVjdG9yPGNoYXI+
JiB2ZWN0b3IpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKFZl
Y3RvcjxjaGFyPiYmIHZlY3RvcikKIHsKICAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0ZSgpOwotICAg
IGJ1ZmZlci0+bV9idWZmZXItPmRhdGEuc3dhcCh2ZWN0b3IpOworICAgIGJ1ZmZlci0+bV9idWZm
ZXItPmRhdGEgPSBXVEZNb3ZlKHZlY3Rvcik7CiAgICAgYnVmZmVyLT5tX3NpemUgPSBidWZmZXIt
Pm1fYnVmZmVyLT5kYXRhLnNpemUoKTsKICAgICByZXR1cm4gYnVmZmVyOwogfQpAQCAtNDUyLDcg
KzQ1Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3QKICAgICB9
CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSBidWZmZXIuZGF0YSgpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjphZG9wdFZlY3RvcihidWZmZXIpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmFkb3B0VmVjdG9yKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCShyZXZpc2lvbiAy
MTUyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGFkb3B0VmVjdG9yKFZlY3RvcjxjaGFyPiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBhZG9wdFZlY3RvcihWZWN0b3I8Y2hhcj4mJik7CiAg
ICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgflNoYXJlZEJ1ZmZlcigpOwogICAgIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkU2FmZURhdGFCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRTYWZlRGF0YUJ1ZmZlci5oCShyZXZpc2lv
biAyMTUyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRTYWZlRGF0YUJ1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgVGhyZWFkU2FmZURhdGFCdWZmZXJfaAotI2RlZmluZSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM2LDEwICszNSw5IEBAIGNsYXNz
IFRocmVhZFNhZmVEYXRhQnVmZmVyOwogY2xhc3MgVGhyZWFkU2FmZURhdGFCdWZmZXJJbXBsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZFNhZmVEYXRhQnVmZmVySW1wbD4gewog
ZnJpZW5kIGNsYXNzIFRocmVhZFNhZmVEYXRhQnVmZmVyOwogcHJpdmF0ZToKLSAgICBlbnVtIEFk
b3B0VmVjdG9yVGFnIHsgQWRvcHRWZWN0b3IgfTsKLSAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlcklt
cGwoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBBZG9wdFZlY3RvclRhZykKKyAgICBUaHJlYWRTYWZl
RGF0YUJ1ZmZlckltcGwoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICB7Ci0gICAgICAgIG1f
ZGF0YS5zd2FwKGRhdGEpOworICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgIH0K
IAogICAgIFRocmVhZFNhZmVEYXRhQnVmZmVySW1wbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCkBAIC01OCw5ICs1Niw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFRocmVhZFNhZmVEYXRhQnVm
ZmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgVGhyZWFkU2FmZURhdGFCdWZmZXIgYWRvcHRWZWN0
b3IoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorICAgIHN0YXRpYyBUaHJlYWRTYWZlRGF0YUJ1ZmZl
ciBhZG9wdFZlY3RvcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKGRhdGEsIFRocmVhZFNhZmVEYXRhQnVmZmVySW1wbDo6
QWRvcHRWZWN0b3IpOworICAgICAgICByZXR1cm4gVGhyZWFkU2FmZURhdGFCdWZmZXIoV1RGTW92
ZShkYXRhKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBj
b3B5VmVjdG9yKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKQEAgLTk5LDkgKzk3LDkgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgVGhyZWFkU2FmZURhdGFCdWZmZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcihWZWN0b3I8dWludDhfdD4mIGRhdGEsIFRocmVhZFNhZmVE
YXRhQnVmZmVySW1wbDo6QWRvcHRWZWN0b3JUYWcgdGFnKQorICAgIGV4cGxpY2l0IFRocmVhZFNh
ZmVEYXRhQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgewotICAgICAgICBtX2lt
cGwgPSBhZG9wdFJlZihuZXcgVGhyZWFkU2FmZURhdGFCdWZmZXJJbXBsKGRhdGEsIHRhZykpOwor
ICAgICAgICBtX2ltcGwgPSBhZG9wdFJlZihuZXcgVGhyZWFkU2FmZURhdGFCdWZmZXJJbXBsKFdU
Rk1vdmUoZGF0YSkpKTsKICAgICB9CiAKICAgICBleHBsaWNpdCBUaHJlYWRTYWZlRGF0YUJ1ZmZl
cihjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCkBAIC0xMzksMTIgKzEzNywxMCBAQCBib29s
IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpkZWNvZGUoRGVjb2RlCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVz
dWx0ID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVjdG9yKGRhdGEpOworICAgICAgICBy
ZXN1bHQgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3IoV1RGTW92ZShkYXRhKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIFRocmVhZFNhZmVEYXRhQnVmZmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAkocmV2aXNp
b24gMjE1MjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGMKICAgICAgICAgc3dpdGNoIChwYXJ0LnR5cGUo
KSkgewogICAgICAgICBjYXNlIEJsb2JQYXJ0OjpEYXRhOiB7CiAgICAgICAgICAgICBhdXRvIG1v
dmVkRGF0YSA9IHBhcnQubW92ZURhdGEoKTsKLSAgICAgICAgICAgIGF1dG8gZGF0YSA9IFRocmVh
ZFNhZmVEYXRhQnVmZmVyOjphZG9wdFZlY3Rvcihtb3ZlZERhdGEpOworICAgICAgICAgICAgYXV0
byBkYXRhID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVjdG9yKFdURk1vdmUobW92ZWRE
YXRhKSk7CiAgICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5kRGF0YShkYXRhKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAkocmV2aXNpb24gMjE1MjU1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkZWNvZGVCYXNlNjQoRGVjb2Rl
VGFzayYgdGFzCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGJ1ZmZlci5zaHJpbmtU
b0ZpdCgpOwotICAgIHRhc2sucmVzdWx0LmRhdGEgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9y
KGJ1ZmZlcik7CisgICAgdGFzay5yZXN1bHQuZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0
b3IoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgZGVjb2RlRXNjYXBlZChEZWNv
ZGVUYXNrJiB0YXNrKQpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyB2b2lkIGRlY29kZUVzY2Fw
ZWQoRGVjb2RlVGFzayYgdGEKICAgICBhdXRvIGJ1ZmZlciA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlc0FzRGF0YSh0YXNrLmVuY29kZWREYXRhLCBlbmNvZGluZyk7CiAKICAgICBidWZmZXIuc2hy
aW5rVG9GaXQoKTsKLSAgICB0YXNrLnJlc3VsdC5kYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3RvcihidWZmZXIpOworICAgIHRhc2sucmVzdWx0LmRhdGEgPSBTaGFyZWRCdWZmZXI6OmFkb3B0
VmVjdG9yKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIHZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
NTI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE3LTA0LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIHZlY3RvciBhZG9wdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNzU4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FwdHVyZTo6SlNPTkNvZGVyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj46OmRlY29kZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorCiAyMDE3LTA0LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTW9kZXJuaXplIGFuZCBjbGVhbiB1cCBjb2RlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVFdmVudC5jcHAJKHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0Niw3ICszNDYsNyBAQCBzdHJ1Y3QgSlNPTkNvZGVyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gCiAgICAgICAgIGNvbnN0IGF1dG8mIHN0ciA9IGpEYXRhLmdldF9yZWY8Y29uc3Qgc3Rk
OjpzdHJpbmcmPigpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IGJhc2U2NERlY29kZShzdHIuY19z
dHIoKSwgc3RyLnNpemUoKSwgZGF0YSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rv
cihkYXRhKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0
b3IoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjE1MjU1KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcgogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9y
PGNoYXI+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpz
aGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjphZG9wdFZlY3RvcihvdmVycmlkZUJ1ZmZlcik7CisgICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAg
IC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3Rl
Ym9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MTUyNTUpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wNC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1vZGVybml6ZSB2ZWN0b3IgYWRvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDc1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
CiAyMDE3LTA0LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBE
aXNhYmxlIG91dGRhdGVkIFdyaXRhYmxlU3RyZWFtIEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAJKHJldmlzaW9uIDIx
NTI1NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZUFycmF5QnVmZgogICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IxKDB4NDAwMCwg
J2InKTsKICAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9y
KHZlY3RvcjApOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoV1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodmVjdG9yMSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodmVjdG9yMik7CiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRl
QXJyYXlCdWZmZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306898</attachid>
            <date>2017-04-12 01:41:52 -0700</date>
            <delta_ts>2017-04-12 02:25:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170758-20170412014152.patch</filename>
            <type>text/plain</type>
            <size>22164</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE3LTA0LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IHZlY3RvciBhZG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcwNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJl
c3VsdDo6ZGF0YUZyb21CdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZGVjb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRl
Y29kZUtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmplY3RTdG9yZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldElu
ZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpm
b250KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRTYWZlRGF0
YUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkU2FmZURhdGFCdWZmZXJJbXBsOjpU
aHJlYWRTYWZlRGF0YUJ1ZmZlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkU2FmZURh
dGFCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6VGhyZWFkU2FmZURhdGFCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkU2FmZURh
dGFCdWZmZXI6OmRlY29kZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxE
ZWNvZGVyOjpkZWNvZGVCYXNlNjQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6
OmRlY29kZUVzY2FwZWQpOgorCiAyMDE3LTA0LTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc3Ryb2tlLWNvbG9yIENTUyBwcm9wZXJ0
eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjE1MjYxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBleHRyYWN0CiAgICAgICAgIGlmICghV1RGOjpiYXNlNjRVUkxEZWNvZGUoa2V5SUQsIHsg
a2V5SUREYXRhIH0pKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4ga2V5SURCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGtleUlERGF0
YSk7CisgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlEQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShrZXlJRERhdGEpKTsKICAgICAgICAga2V5SURzLmFwcGVuZChXVEZN
b3ZlKGtleUlEQnVmZmVyKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAJKHJldmlzaW9uIDIxNTI2MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBJREJHZXRSZXN1bHQ6OmRhdGFGcm9tQnVm
ZmVyKFNoYXJlZAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGJ1ZmZlci5zaXplKCkpOwogICAg
IG1lbWNweShkYXRhLmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVjdG9yKGRhdGEpOworICAg
IG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwog
fQogCiBJREJHZXRSZXN1bHQ6OklEQkdldFJlc3VsdChjb25zdCBJREJHZXRSZXN1bHQmIHRoYXQs
IElzb2xhdGVkQ29weVRhZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleURhdGEuY3BwCShyZXZpc2lvbiAyMTUyNjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQy
LDcgKzI0Miw3IEBAIGJvb2wgSURCS2V5RGF0YTo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGUKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJ5dGVzKCJiaW5hcnkiLCBieXRlcykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBUaHJlYWRTYWZl
RGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3IoYnl0ZXMpOworICAgICAgICByZXN1bHQubV92YWx1ZSA9
IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShieXRlcykpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAJKHJldmlz
aW9uIDIxNTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEKICAgICBkYXRhLmFwcGVuZChT
SURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihkYXRhKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBib29sIGRlY29kZUtleShjb25z
dCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQp
CkBAIC0zNTYsNyArMzU2LDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3Qq
JiBkYQogICAgICAgICBkYXRhVmVjdG9yLmFwcGVuZChkYXRhLCBzaXplKTsKICAgICAgICAgZGF0
YSArPSBzaXplOwogCi0gICAgICAgIHJlc3VsdC5zZXRCaW5hcnlWYWx1ZShUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6YWRvcHRWZWN0b3IoZGF0YVZlY3RvcikpOworICAgICAgICByZXN1bHQuc2V0Qmlu
YXJ5VmFsdWUoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGFWZWN0b3Ip
KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBjYXNlIFNJREJLZXlUeXBlOjpB
cnJheTogewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9u
IDIxNTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYxLDcgKzE5NjEsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yCiAKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0b3Io
MCwgYnVmZmVyKTsKLSAgICAgICAgcmVzdWx0QnVmZmVyID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6
OmFkb3B0VmVjdG9yKGJ1ZmZlcik7CisgICAgICAgIHJlc3VsdEJ1ZmZlciA9IFRocmVhZFNhZmVE
YXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIAogICAgICAgICBpZiAodHlwZSA9
PSBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWUpCiAgICAgICAgICAgICByZWNvcmRJ
RCA9IHNxbC0+Z2V0Q29sdW1uSW50NjQoMSk7CkBAIC0yMDkwLDcgKzIwOTAsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbE9iCiAgICAgICAgIGlmIChnZXRBbGxSZWNv
cmRzRGF0YS5nZXRBbGxUeXBlID09IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzKSB7CiAg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgc3FsLT5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMCwgYnVmZmVyKTsKLSAgICAgICAgICAgIFRocmVhZFNhZmVEYXRh
QnVmZmVyIHJlc3VsdEJ1ZmZlciA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjphZG9wdFZlY3Rvcihi
dWZmZXIpOworICAgICAgICAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgcmVzdWx0QnVmZmVyID0g
VGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogCiAgICAgICAg
ICAgICBhdXRvIHJlY29yZElEID0gc3FsLT5nZXRDb2x1bW5JbnQ2NCgxKTsKIApAQCAtMjI3Miw3
ICsyMjcyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZQogICAg
IGlmICghZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBlcnJvcjsKIAotICAgIGdldFJl
c3VsdCA9IHsgeyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3Ioa2V5VmVjdG9yKSwg
V1RGTW92ZShibG9iVVJMcyksIFdURk1vdmUoYmxvYkZpbGVQYXRocykgfSwgb2JqZWN0U3RvcmVL
ZXkgfTsKKyAgICBnZXRSZXN1bHQgPSB7IHsgVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGtleVZlY3RvcikpLCBXVEZNb3ZlKGJsb2JVUkxzKSwgV1RGTW92ZShibG9iRmlsZVBh
dGhzKSB9LCBvYmplY3RTdG9yZUtleSB9OwogICAgIHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCShyZXZpc2lvbiAyMTUyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRl
SURCQ3UKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERC
OjpDdXJzb3JUeXBlOjpLZXlBbmRWYWx1ZSkKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRv
cHRWZWN0b3Ioa2V5RGF0YSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKKyAgICAgICAgICAg
IHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRT
YWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZp
bGVQYXRocyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQucmVjb3JkLnByaW1hcnlL
ZXkpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1
ZSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGluZGV4IGN1cnNvciIpOwpAQCAt
NDc2LDcgKzQ3Niw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3UK
IAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIG9iamVj
dFN0b3JlU3RhdGVtZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAg
ICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihU
aHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3Ioa2V5RGF0YSkpOworICAgICAgICAgICAg
cmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgLy8gVGhpcyBpbmRpY2F0
ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0byByZXRyaWV2ZSBoYXMgYmVlbiByZW1v
dmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAgICAgICAgIC8vIFNraXAgb3ZlciBpdC4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAkocmV2aXNpb24g
MjE1MjYxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250RmFjZVNv
dXJjZTo6Zm9udChjb24KICAgICBpZiAoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSkg
ewogICAgICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250
RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICBp
ZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAg
ICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3Io
b3RmRm9udC52YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAgaWYg
KCFtX2dlbmVyYXRlZE9URkJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDIxNTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MjQsNyArMjgyNCw3IEBA
IHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVMKICAgICAgICAgaWYgKCFk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9u
b3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KG5ldHdvcmtpbmdDb250
ZXh0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzLCBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBk
YXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihidWZmZXIpOworICAgICAgICAgICAgZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAg
ICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkubG9nU3VicmVzb3Vy
Y2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSk7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjE1MjYxKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxp
Y2F0aW9uQ2FjaAogICAgICAgICBWZWN0b3I8Y2hhcj4gYmxvYjsKICAgICAgICAgY2FjaGVTdGF0
ZW1lbnQuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDYsIGJsb2IpOwogICAgICAgICAKLSAgICAgICAg
YXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0
byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShibG9iKSk7CiAgICAgICAgIAog
ICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNyk7CiAg
ICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAJKHJldmlzaW9uIDIxNTI2MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXIKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZv
ciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0
b3IoZGF0YSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCShy
ZXZpc2lvbiAyMTUyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gCiAgICAgICAgIGlmICghY29udmVydFdPRkZUb1NmbnQo
Ynl0ZXMsIGNvbnZlcnRlZEZvbnQpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGNvbnZlcnRlZEZv
bnQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udCkpOwogICAgICAgICByZXR1cm4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShidWZmZXIpOwogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAkocmV2aXNpb24gMjE1MjYxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04OSw3ICs4OSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEK
ICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9P
VEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0
ZWRGb250ID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcihjb252ZXJ0ZWRGb250LnZhbHVlKCkp
OworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5h
bFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAkocmV2aXNpb24gMjE1MjYxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDEwICsxMDYsMTAg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdAogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoVmVjdG9yPGNoYXI+
JiB2ZWN0b3IpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8
Y2hhcj4mJiB2ZWN0b3IpCiB7CiAgICAgYXV0byBidWZmZXIgPSBjcmVhdGUoKTsKLSAgICBidWZm
ZXItPm1fYnVmZmVyLT5kYXRhLnN3YXAodmVjdG9yKTsKKyAgICBidWZmZXItPm1fYnVmZmVyLT5k
YXRhID0gV1RGTW92ZSh2ZWN0b3IpOwogICAgIGJ1ZmZlci0+bV9zaXplID0gYnVmZmVyLT5tX2J1
ZmZlci0+ZGF0YS5zaXplKCk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KQEAgLTQ1Miw3ICs0NTIs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0CiAgICAgfQogCiAg
ICAgYnVmZmVyLnNocmluayhwIC0gYnVmZmVyLmRhdGEoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6YWRvcHRWZWN0b3IoYnVmZmVyKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgJKHJldmlzaW9uIDIxNTI2MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
YWRvcHRWZWN0b3IoVmVjdG9yPGNoYXI+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJik7CiAgICAgCiAgICAgV0VCQ09S
RV9FWFBPUlQgflNoYXJlZEJ1ZmZlcigpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkU2FmZURhdGFCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRTYWZlRGF0YUJ1ZmZlci5oCShyZXZpc2lvbiAyMTUyNjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRTYWZlRGF0YUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVGhy
ZWFkU2FmZURhdGFCdWZmZXJfaAotI2RlZmluZSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcl9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM2LDEwICszNSw5IEBAIGNsYXNzIFRocmVhZFNhZmVEYXRh
QnVmZmVyOwogY2xhc3MgVGhyZWFkU2FmZURhdGFCdWZmZXJJbXBsIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRocmVhZFNhZmVEYXRhQnVmZmVySW1wbD4gewogZnJpZW5kIGNsYXNzIFRo
cmVhZFNhZmVEYXRhQnVmZmVyOwogcHJpdmF0ZToKLSAgICBlbnVtIEFkb3B0VmVjdG9yVGFnIHsg
QWRvcHRWZWN0b3IgfTsKLSAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlckltcGwoVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhLCBBZG9wdFZlY3RvclRhZykKKyAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlckltcGwo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICB7Ci0gICAgICAgIG1fZGF0YS5zd2FwKGRhdGEp
OworICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgIH0KIAogICAgIFRocmVhZFNh
ZmVEYXRhQnVmZmVySW1wbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCkBAIC01OCw5ICs1
Niw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFRocmVhZFNhZmVEYXRhQnVmZmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgVGhyZWFkU2FmZURhdGFCdWZmZXIgYWRvcHRWZWN0b3IoVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQorICAgIHN0YXRpYyBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBUaHJlYWRTYWZlRGF0YUJ1
ZmZlcihkYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlckltcGw6OkFkb3B0VmVjdG9yKTsKKyAgICAg
ICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKFdURk1vdmUoZGF0YSkpOwogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgVGhyZWFkU2FmZURhdGFCdWZmZXIgY29weVZlY3Rvcihjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpCkBAIC05OSw5ICs5Nyw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFRocmVhZFNhZmVE
YXRhQnVmZmVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgVGhyZWFkU2FmZURhdGFCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlckltcGw6OkFkb3B0
VmVjdG9yVGFnIHRhZykKKyAgICBleHBsaWNpdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQogICAgIHsKLSAgICAgICAgbV9pbXBsID0gYWRvcHRSZWYobmV3IFRo
cmVhZFNhZmVEYXRhQnVmZmVySW1wbChkYXRhLCB0YWcpKTsKKyAgICAgICAgbV9pbXBsID0gYWRv
cHRSZWYobmV3IFRocmVhZFNhZmVEYXRhQnVmZmVySW1wbChXVEZNb3ZlKGRhdGEpKSk7CiAgICAg
fQogCiAgICAgZXhwbGljaXQgVGhyZWFkU2FmZURhdGFCdWZmZXIoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQpAQCAtMTM5LDEyICsxMzcsMTAgQEAgYm9vbCBUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6ZGVjb2RlKERlY29kZQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFRocmVhZFNhZmVEYXRh
QnVmZmVyOjphZG9wdFZlY3RvcihkYXRhKTsKKyAgICAgICAgcmVzdWx0ID0gVGhyZWFkU2FmZURh
dGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVGhyZWFkU2FmZURh
dGFCdWZmZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCShyZXZpc2lvbiAyMTUyNjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkwoYwogICAgICAgICBzd2l0Y2ggKHBhcnQudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQmxvYlBh
cnQ6OkRhdGE6IHsKICAgICAgICAgICAgIGF1dG8gbW92ZWREYXRhID0gcGFydC5tb3ZlRGF0YSgp
OwotICAgICAgICAgICAgYXV0byBkYXRhID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmFkb3B0VmVj
dG9yKG1vdmVkRGF0YSk7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBUaHJlYWRTYWZlRGF0YUJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUobW92ZWREYXRhKSk7CiAgICAgICAgICAgICBibG9iRGF0YS0+
YXBwZW5kRGF0YShkYXRhKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAkocmV2aXNpb24gMjE1MjYxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0
aWMgdm9pZCBkZWNvZGVCYXNlNjQoRGVjb2RlVGFzayYgdGFzCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGJ1ZmZlci5zaHJpbmtUb0ZpdCgpOwotICAgIHRhc2sucmVzdWx0LmRhdGEg
PSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7CisgICAgdGFzay5yZXN1bHQuZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGRlY29kZUVzY2FwZWQoRGVjb2RlVGFzayYgdGFzaykKQEAgLTE2NSw3ICsxNjUsNyBAQCBz
dGF0aWMgdm9pZCBkZWNvZGVFc2NhcGVkKERlY29kZVRhc2smIHRhCiAgICAgYXV0byBidWZmZXIg
PSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNBc0RhdGEodGFzay5lbmNvZGVkRGF0YSwgZW5jb2Rp
bmcpOwogCiAgICAgYnVmZmVyLnNocmlua1RvRml0KCk7Ci0gICAgdGFzay5yZXN1bHQuZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoYnVmZmVyKTsKKyAgICB0YXNrLnJlc3VsdC5kYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogdm9pZCBkZWNv
ZGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1bGVDb250ZXh0
LCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjE1MjYxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDQtMTIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgdmVjdG9yIGFk
b3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzA3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpKU09OQ29kZXI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZSk6CisKIDIwMTctMDQtMTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLKyBkZWJ1ZyBidWlsZCBmaXgu
IERyb3AgYW4gdW51c2VkIGRlYnVnLW9ubHkgbWVtYmVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVF
dmVudC5jcHAJKHJldmlzaW9uIDIxNTI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
Niw3ICszNDYsNyBAQCBzdHJ1Y3QgSlNPTkNvZGVyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gCiAg
ICAgICAgIGNvbnN0IGF1dG8mIHN0ciA9IGpEYXRhLmdldF9yZWY8Y29uc3Qgc3RkOjpzdHJpbmcm
PigpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IGJhc2U2NERlY29kZShzdHIuY19zdHIoKSwgc3Ry
LnNpemUoKSwgZGF0YSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihkYXRhKTsK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAJKHJldmlzaW9uIDIxNTI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1
LDcgKzE3NSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3IKICAg
ICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3RvcjxjaGFyPiBvdmVycmlk
ZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2Fy
ZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2Fy
ZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6YWRv
cHRWZWN0b3Iob3ZlcnJpZGVCdWZmZXIpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVz
c2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTI2MSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA0LTEyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJu
aXplIHZlY3RvciBhZG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTctMDQtMTEgIERlYW4g
SmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgb3V0ZGF0ZWQgV3Jp
dGFibGVTdHJlYW0gQVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAkocmV2aXNpb24gMjE1MjYxKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNyw3ICsxMDcsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlQXJyYXlC
dWZmCiAgICAgVmVjdG9yPGNoYXI+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjxj
aGFyPiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IodmVjdG9yMCk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodmVjdG9yMSk7CiAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodmVjdG9yMik7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>