<?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>196042</bug_id>
          
          <creation_ts>2019-03-20 16:12:25 -0700</creation_ts>
          <short_desc>Stop storing raw pointers to Documents</short_desc>
          <delta_ts>2019-03-25 14:23:45 -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>InRadar</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>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1519277</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-20 16:12:25 -0700</bug_when>
    <thetext>Stop storing raw pointers to Documents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519278</commentid>
    <comment_count>1</comment_count>
      <attachid>365427</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-20 16:13:29 -0700</bug_when>
    <thetext>Created attachment 365427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519279</commentid>
    <comment_count>2</comment_count>
      <attachid>365427</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-20 16:14:38 -0700</bug_when>
    <thetext>Comment on attachment 365427
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:372
&gt; +        didCloseSocketStream(handle);

Did you mean to include this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519328</commentid>
    <comment_count>3</comment_count>
      <attachid>365427</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-03-20 16:53:11 -0700</bug_when>
    <thetext>Comment on attachment 365427
Patch

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

r=me

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:372
&gt;&gt; +        didCloseSocketStream(handle);
&gt; 
&gt; Did you mean to include this?

Plz delete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519330</commentid>
    <comment_count>4</comment_count>
      <attachid>365440</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-20 16:55:34 -0700</bug_when>
    <thetext>Created attachment 365440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519392</commentid>
    <comment_count>5</comment_count>
      <attachid>365440</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-20 18:46:19 -0700</bug_when>
    <thetext>Comment on attachment 365440
Patch

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

&gt; Source/WebCore/loader/MediaResourceLoader.h:55
&gt; +    Document* document() const { return m_document.get(); }

Why? To fix the build? :D  If so, what&apos;s the caller that needs this? If not, this code is correct as-is and you&apos;re making it wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519393</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-20 18:47:19 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #5)
&gt; Comment on attachment 365440 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365440&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/MediaResourceLoader.h:55
&gt; &gt; +    Document* document() const { return m_document.get(); }
&gt; 
&gt; Why? To fix the build? :D  If so, what&apos;s the caller that needs this? If not,
&gt; this code is correct as-is and you&apos;re making it wrong.

Talk to me in person if you need to know why it&apos;s wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520382</commentid>
    <comment_count>7</comment_count>
      <attachid>365440</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-22 10:12:48 -0700</bug_when>
    <thetext>Comment on attachment 365440
Patch

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

&gt;&gt;&gt; Source/WebCore/loader/MediaResourceLoader.h:55
&gt;&gt;&gt; +    Document* document() const { return m_document.get(); }
&gt;&gt; 
&gt;&gt; Why? To fix the build? :D  If so, what&apos;s the caller that needs this? If not, this code is correct as-is and you&apos;re making it wrong.
&gt; 
&gt; Talk to me in person if you need to know why it&apos;s wrong.

I&apos;m not sure what you&apos;re referring to.  I&apos;m adding const because I can and because it&apos;s an accessor that doesn&apos;t modify the object.  I&apos;m adding the .get() because m_document is now a WeakPtr and this function returns a pointer, so I need the .get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520401</commentid>
    <comment_count>8</comment_count>
      <attachid>365440</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-03-22 10:34:56 -0700</bug_when>
    <thetext>Comment on attachment 365440
Patch

r=me, seems worth following up with Dan to understand why he though const was &quot;wrong&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520407</commentid>
    <comment_count>9</comment_count>
      <attachid>365440</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 10:40:21 -0700</bug_when>
    <thetext>Comment on attachment 365440
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/loader/MediaResourceLoader.h:55
&gt;&gt;&gt;&gt; +    Document* document() const { return m_document.get(); }
&gt;&gt;&gt; 
&gt;&gt;&gt; Why? To fix the build? :D  If so, what&apos;s the caller that needs this? If not, this code is correct as-is and you&apos;re making it wrong.
&gt;&gt; 
&gt;&gt; Talk to me in person if you need to know why it&apos;s wrong.
&gt; 
&gt; I&apos;m not sure what you&apos;re referring to.  I&apos;m adding const because I can and because it&apos;s an accessor that doesn&apos;t modify the object.  I&apos;m adding the .get() because m_document is now a WeakPtr and this function returns a pointer, so I need the .get().

I think people have different views about what const-correct means. I personally think the new code is less const correct since it is returning a non const data member in a const method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520466</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-22 13:46:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)

&gt; I
&gt; personally think the new code is less const correct since it is returning a
&gt; non const data member in a const method.

Bingo! 👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521018</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-25 14:22:21 -0700</bug_when>
    <thetext>Removed the controversial const and committed to http://trac.webkit.org/r243459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521020</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-25 14:23:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/49229100&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365427</attachid>
            <date>2019-03-20 16:13:29 -0700</date>
            <delta_ts>2019-03-20 16:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196042-20190320161328.patch</filename>
            <type>text/plain</type>
            <size>19523</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE5LTAzLTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCBzdG9y
aW5nIHJhdyBwb2ludGVycyB0byBEb2N1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjA0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXZWFrUHRyIGluc3RlYWQhICBUaGlzIGNvdWxkIGNo
YW5nZSBzb21lIFVBRiBidWdzIGludG8gbnVsbCBkZXJlZmVyZW5jZSBjcmFzaGVzLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbFNvY2tldFN0cmVhbSk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2Vs
ZWN0b3I6OkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0
b3I6OmFkZEZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6
OmZvbnRSYW5nZXNGb3JGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoK
KyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFRdWVyeU1hdGNoZXI6Ok1lZGlhUXVlcnlNYXRjaGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnlNYXRjaGVyOjptYXRjaE1lZGlhKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVy
eU1hdGNoZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldExpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGVldExpc3Q6OlN0eWxlU2hlZXRMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXRMaXN0Ojpvd25lck5vZGUgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHls
ZVNoZWV0TGlzdC5oOgorICAgICAgICAqIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRTdHlsZVJlc29sdmVyOjpWaWV3cG9ydFN0eWxlUmVz
b2x2ZXIpOgorICAgICAgICAqIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRUZW1wbGF0
ZURvY3VtZW50SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGVtcGxhdGVEb2N1
bWVudEhvc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmRvY3Vt
ZW50IGNvbnN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6U2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpIVE1MU2NyaXB0UnVubmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdCk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5oOgorICAgICAgICAqIGxvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2Fk
ZXI6Ok1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0SW5D
b250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpzZXREb2N1bWVudCk6CisKIDIwMTktMDMtMjAgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENyYXNoIGluIFdlYkNvcmU6Ok5vZGU6
OnJlbmRlclJlY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY3LDggKzM2NywxMCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZEZh
aWxTb2NrZXRTdHJlCiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgIH0K
ICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwotICAgIGlmIChtX2NsaWVu
dCkKKyAgICBpZiAobV9jbGllbnQpIHsKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNz
YWdlRXJyb3IoKTsKKyAgICAgICAgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oaGFuZGxlKTsKKyAgICB9
CiAgICAgaGFuZGxlLmRpc2Nvbm5lY3QoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB1bnNpZ25lZCBmb250U2VsZWN0b3JJZDsKIAogQ1NT
Rm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50KQotICAgIDog
bV9kb2N1bWVudCgmZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3Vt
ZW50KSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlz
KSkKICAgICAsIG1fYmVnaW5Mb2FkaW5nVGltZXIoKnRoaXMsICZDU1NGb250U2VsZWN0b3I6OmJl
Z2luTG9hZFRpbWVyRmlyZWQpCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9udFNlbGVjdG9ySWQpCkBA
IC0yMDcsNyArMjA3LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShT
dAogICAgIGlmIChsb2FkaW5nQmVoYXZpb3IpCiAgICAgICAgIGZvbnRGYWNlLT5zZXRMb2FkaW5n
QmVoYXZpb3IoKmxvYWRpbmdCZWhhdmlvcik7CiAKLSAgICBDU1NGb250RmFjZTo6YXBwZW5kU291
cmNlcyhmb250RmFjZSwgc3JjTGlzdCwgbV9kb2N1bWVudCwgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSk7CisgICAgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoZm9u
dEZhY2UsIHNyY0xpc3QsIG1fZG9jdW1lbnQuZ2V0KCksIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpOwogICAgIGlmIChmb250RmFjZS0+Y29tcHV0ZUZhaWx1cmVTdGF0
ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBGb250UmFuZ2VzIENT
U0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvCiAgICAgLy8gRklYTUU6IFRoZSBzcGVjIChhbmQg
RmlyZWZveCkgc2F5cyB1c2VyIHNwZWNpZmllZCBnZW5lcmljIGZhbWlsaWVzIChzYW5zLXNlcmlm
IGV0Yy4pIHNob3VsZCBiZSByZXNvbHZlZCBiZWZvcmUgdGhlIEBmb250LWZhY2UgbG9va3VwIHRv
by4KICAgICBib29sIHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPSBmYW1pbHlOYW1lID09IHN0
YW5kYXJkRmFtaWx5OwogCi0gICAgQXRvbWljU3RyaW5nIGZhbWlseUZvckxvb2t1cCA9IHJlc29s
dmVHZW5lcmljRmFtaWx5Rmlyc3QgPyByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBm
b250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpIDogZmFtaWx5TmFtZTsKKyAgICBBdG9taWNTdHJp
bmcgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA/IHJlc29sdmVH
ZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFt
ZSkgOiBmYW1pbHlOYW1lOwogICAgIGF1dG8qIGZhY2UgPSBtX2Nzc0ZvbnRGYWNlU2V0LT5mb250
RmFjZShmb250RGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSwgZmFtaWx5Rm9yTG9v
a3VwKTsKICAgICBpZiAoZmFjZSkgewogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKSB7CkBAIC0zMjIs
NyArMzIyLDcgQEAgRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGbwogICAg
ICAgICByZXR1cm4gZmFjZS0+Zm9udFJhbmdlcyhmb250RGVzY3JpcHRpb24pOwogICAgIH0KICAg
ICBpZiAoIXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QpCi0gICAgICAgIGZhbWlseUZvckxvb2t1
cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFt
aWx5TmFtZSk7CisgICAgICAgIGZhbWlseUZvckxvb2t1cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5
KG1fZG9jdW1lbnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CiAgICAgYXV0
byBmb250ID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlw
dGlvbiwgZmFtaWx5Rm9yTG9va3VwKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKSB7CiAgICAgICAgIGlm
IChtX2RvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAkocmV2
aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
Rm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZvbnRTZWxlY3RvckNsaWVudCYpIGZpbmFsOwogICAg
IHZvaWQgdW5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcyhGb250U2VsZWN0b3JDbGll
bnQmKSBmaW5hbDsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jdW1lbnQ7IH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50LmdldCgpOyB9CiAKICAgICB2b2lkIGJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZv
bnQmKTsKIApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBWZWN0b3I8
UGVuZGluZ0ZvbnRGYWNlUnVsZT4gbV9zdGFnaW5nQXJlYTsKIAotICAgIERvY3VtZW50KiBtX2Rv
Y3VtZW50OworICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPEZv
bnRGYWNlU2V0PiBtX2ZvbnRGYWNlU2V0OwogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NG
b250RmFjZVNldDsKICAgICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAkocmV2aXNpb24g
MjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNZWRp
YVF1ZXJ5TWF0Y2hlcjo6TWVkaWFRdWVyeU1hdGNoZXIoRG9jdW1lbnQmIGRvY3VtZW50KQotICAg
IDogbV9kb2N1bWVudCgmZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRv
Y3VtZW50KSkKIHsKIH0KIApAQCAtODQsNyArODQsNyBAQCBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+
IE1lZGlhUXVlcnlNYXRjaGVyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBt
ZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShxdWVyeSwgTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQoKm1fZG9jdW1lbnQpKTsKLSAgICByZXBvcnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKG1f
ZG9jdW1lbnQsIG1lZGlhLnB0cigpKTsKKyAgICByZXBvcnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVl
ZGVkKG1fZG9jdW1lbnQuZ2V0KCksIG1lZGlhLnB0cigpKTsKICAgICBib29sIHJlc3VsdCA9IGV2
YWx1YXRlKG1lZGlhLmdldCgpKTsKICAgICByZXR1cm4gTWVkaWFRdWVyeUxpc3Q6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShtZWRpYSksIHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeU1hdGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeU1hdGNoZXIuaAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlNYXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGRvY3VtZW50RWxlbWVu
dFVzZXJBZ2VudFN0eWxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0Owog
Ci0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBWZWN0b3I8TGlzdGVuZXI+IG1fbGlzdGVuZXJzOwogCiAgICAgLy8gVGhpcyB2
YWx1ZSBpcyBpbmNyZW1lbnRlZCBhdCBzdHlsZSBzZWxlY3RvciBjaGFuZ2VzLgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIFN0eWxlU2hlZXRMaXN0OjpTdHlsZVNoZWV0TGlzdChEb2N1bWVudCYgZG9jdW1lbnQpCi0g
ICAgOiBtX2RvY3VtZW50KCZkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIo
ZG9jdW1lbnQpKQogewogfQogCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBjb25zdCBWZWN0b3I8
UmVmUHRyPFN0eWxlU2hlZXQ+PiYKIE5vZGUqIFN0eWxlU2hlZXRMaXN0Ojpvd25lck5vZGUoKSBj
b25zdAogewogICAgIGlmIChtX2RvY3VtZW50KQotICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsK
KyAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7CiAgICAgcmV0dXJuIG1fc2hhZG93Um9v
dDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgJKHJldmlzaW9uIDI0
MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgU3R5bGVTaGVldExpc3QoU2hhZG93
Um9vdCYpOwogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+JiBzdHlsZVNoZWV0
cygpIGNvbnN0OwogCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQgeyBudWxscHRyIH07CisgICAg
V2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jv
b3QgeyBudWxscHRyIH07CiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4gbV9kZXRhY2hl
ZFN0eWxlU2hlZXRzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxl
UmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0
eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Vmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXI6OlZpZXdwb3J0
U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBtX2RvY3VtZW50KGRvY3Vt
ZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCA/IG1ha2VXZWFrUHRyKCpkb2N1bWVudCkg
OiBudWxscHRyKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDI0MzE4MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgZ2V0Vmlld3BvcnRBcmd1
bWVudFZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1l
bnQ7CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gbV9wcm9wZXJ0eVNldDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTM0NCw4ICsxMzQ0LDggQEAgcHVibGljOgogCiAgICAgY29u
c3QgRG9jdW1lbnQqIHRlbXBsYXRlRG9jdW1lbnQoKSBjb25zdDsKICAgICBEb2N1bWVudCYgZW5z
dXJlVGVtcGxhdGVEb2N1bWVudCgpOwotICAgIHZvaWQgc2V0VGVtcGxhdGVEb2N1bWVudEhvc3Qo
RG9jdW1lbnQqIHRlbXBsYXRlRG9jdW1lbnRIb3N0KSB7IG1fdGVtcGxhdGVEb2N1bWVudEhvc3Qg
PSB0ZW1wbGF0ZURvY3VtZW50SG9zdDsgfQotICAgIERvY3VtZW50KiB0ZW1wbGF0ZURvY3VtZW50
SG9zdCgpIHsgcmV0dXJuIG1fdGVtcGxhdGVEb2N1bWVudEhvc3Q7IH0KKyAgICB2b2lkIHNldFRl
bXBsYXRlRG9jdW1lbnRIb3N0KERvY3VtZW50KiB0ZW1wbGF0ZURvY3VtZW50SG9zdCkgeyBtX3Rl
bXBsYXRlRG9jdW1lbnRIb3N0ID0gbWFrZVdlYWtQdHIodGVtcGxhdGVEb2N1bWVudEhvc3QpOyB9
CisgICAgRG9jdW1lbnQqIHRlbXBsYXRlRG9jdW1lbnRIb3N0KCkgeyByZXR1cm4gbV90ZW1wbGF0
ZURvY3VtZW50SG9zdC5nZXQoKTsgfQogCiAgICAgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJv
bChFbGVtZW50Jik7CiAgICAgYm9vbCBoYXNEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQ7IH0KQEAgLTE5MTcsNyAr
MTkxNyw3IEBAIHByaXZhdGU6CiAgICAgTG9jYWxlSWRlbnRpZmllclRvTG9jYWxlTWFwIG1fbG9j
YWxlQ2FjaGU7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fdGVtcGxhdGVEb2N1bWVudDsKLSAg
ICBEb2N1bWVudCogbV90ZW1wbGF0ZURvY3VtZW50SG9zdCB7IG51bGxwdHIgfTsgLy8gTWFudWFs
bHkgbWFuYWdlZCB3ZWFrcmVmIChiYWNrcG9pbnRlciBmcm9tIG1fdGVtcGxhdGVEb2N1bWVudCku
CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV90ZW1wbGF0ZURvY3VtZW50SG9zdDsgLy8gTWFudWFs
bHkgbWFuYWdlZCB3ZWFrcmVmIChiYWNrcG9pbnRlciBmcm9tIG1fdGVtcGxhdGVEb2N1bWVudCku
CiAKICAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIERvY3VtZW50UGFyc2VyOjpEb2N1bWVudFBh
cnNlcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX3N0YXRlKFBhcnNpbmdTdGF0ZSkKICAg
ICAsIG1fZG9jdW1lbnRXYXNMb2FkZWRBc1BhcnRPZk5hdmlnYXRpb24oZmFsc2UpCi0gICAgLCBt
X2RvY3VtZW50KCZkb2N1bWVudCkKKyAgICAsIG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1l
bnQpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAkocmV2aXNp
b24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwcm9j
ZXNzaW5nRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBkb2N1bWVudCgp
IHdpbGwgcmV0dXJuIDAgYWZ0ZXIgZGV0YWNoKCkgaXMgY2FsbGVkLgotICAgIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0IHsgQVNTRVJUKG1fZG9jdW1lbnQpOyByZXR1cm4gbV9kb2N1bWVudDsg
fQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgQVNTRVJUKG1fZG9jdW1lbnQpOyBy
ZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1BhcnNpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFBhcnNpbmdTdGF0ZTsgfQogICAgIGJvb2wgaXNTdG9wcGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RvcHBpbmdTdGF0ZTsgfQpAQCAtMTE0LDcgKzEx
NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBFdmVyeSBEb2N1bWVudFBhcnNlciBuZWVkcyBhIHBv
aW50ZXIgYmFjayB0byB0aGUgZG9jdW1lbnQuCiAgICAgLy8gbV9kb2N1bWVudCB3aWxsIGJlIDAg
YWZ0ZXIgdGhlIHBhcnNlciBpcyBzdG9wcGVkLgotICAgIERvY3VtZW50KiBtX2RvY3VtZW50Owor
ICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgYWdncmVzc2l2ZVRocm90dGxpbgogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OlNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcihEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBtX2RvY3VtZW50KCZk
b2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwg
bV9hbmltYXRpb25UaW1lcigqdGhpcywgJlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5p
bWF0aW9uVGltZXJGaXJlZCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4+IENhbGxiYWNrTGlzdDsKICAgICBDYWxsYmFj
a0xpc3QgbV9jYWxsYmFja3M7CiAKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBXZWFr
UHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIENhbGxiYWNrSWQgbV9uZXh0Q2FsbGJhY2tJ
ZCB7IDAgfTsKICAgICBpbnQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCShyZXZpc2lvbiAy
NDMxODApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBIVE1MU2NyaXB0UnVubmVyOjpIVE1MU2NyaXB0
UnVubmVyKERvY3VtZW50JiBkb2N1bWVudCwgSFRNTFNjcmlwdFJ1bm5lckhvc3QmIGhvc3QpCi0g
ICAgOiBtX2RvY3VtZW50KCZkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIo
ZG9jdW1lbnQpKQogICAgICwgbV9ob3N0KGhvc3QpCiAgICAgLCBtX3NjcmlwdE5lc3RpbmdMZXZl
bCgwKQogICAgICwgbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKGZhbHNlKQpAQCAt
MjU4LDcgKzI1OCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0KFNjcmlwdEUK
ICAgICAgICAgaWYgKG1fc2NyaXB0TmVzdGluZ0xldmVsID09IDEpCiAgICAgICAgICAgICBtX3Bh
cnNlckJsb2NraW5nU2NyaXB0ID0gUGVuZGluZ1NjcmlwdDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQs
IHNjcmlwdFN0YXJ0UG9zaXRpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JpcHRF
bGVtZW50LmV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVu
dC5lbGVtZW50KCkudGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24o
bV9kb2N1bWVudCksIHNjcmlwdFN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpQcm9ncmFtLCBJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVu
dCkpKTsKKyAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2Ny
aXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LmVsZW1lbnQoKS50ZXh0Q29udGVudCgpLCBkb2N1
bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50LmdldCgpKSwgc2NyaXB0U3RhcnRQ
b3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIElubGluZUNs
YXNzaWNTY3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50KSkpOwogICAgIH0gZWxzZQogICAgICAg
ICByZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0KHNjcmlwdEVsZW1lbnQpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuaAkocmV2aXNp
b24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5l
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJQZW5kaW5n
U2NyaXB0LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcFdhdGNoaW5nRm9y
TG9hZChQZW5kaW5nU2NyaXB0Jik7CiAgICAgYm9vbCBpc1BlbmRpbmdTY3JpcHRSZWFkeShjb25z
dCBQZW5kaW5nU2NyaXB0Jik7CiAKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBXZWFr
UHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIEhUTUxTY3JpcHRSdW5uZXJIb3N0JiBtX2hv
c3Q7CiAgICAgUmVmUHRyPFBlbmRpbmdTY3JpcHQ+IG1fcGFyc2VyQmxvY2tpbmdTY3JpcHQ7CiAg
ICAgRGVxdWU8UmVmPFBlbmRpbmdTY3JpcHQ+PiBtX3NjcmlwdHNUb0V4ZWN1dGVBZnRlclBhcnNp
bmc7IC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I2xpc3Qtb2Ytc2NyaXB0cy10aGF0LXdpbGwtZXhlY3V0ZS13aGVuLXRoZS1kb2N1bWVudC1oYXMt
ZmluaXNoZWQtcGFyc2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFSZXNvdXJjZUxvYWRlcjo6TWVkaWFSZXNv
dXJjZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxl
bWVudCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCiAgICAgOiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCi0gICAgLCBtX2RvY3VtZW50KCZkb2N1bWVudCkKKyAg
ICAsIG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9tZWRpYUVsZW1l
bnQobWFrZVdlYWtQdHIobWVkaWFFbGVtZW50KSkKICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNy
b3NzT3JpZ2luTW9kZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L01lZGlhUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNl
KFJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0aW9ucykgZmluYWw7CiAgICAgdm9pZCByZW1vdmVS
ZXNvdXJjZShNZWRpYVJlc291cmNlJik7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSB7IHJl
dHVybiBtX2RvY3VtZW50OyB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KIAogICAgIFZlY3RvcjxSZXNv
dXJjZVJlc3BvbnNlPiByZXNwb25zZXNGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZXNGb3JUZXN0aW5nOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICBEb2N1bWVudCogbV9k
b2N1bWVudDsKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFdlYWtQdHI8
SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7CiAgICAgU3RyaW5nIG1fY3Jvc3NPcmln
aW5Nb2RlOwogICAgIEhhc2hTZXQ8TWVkaWFSZXNvdXJjZSo+IG1fcmVzb3VyY2VzOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzcsNyArNTc3LDcg
QEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEluQwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0
eWxlU2hlZXQ6Ci0gICAgICAgIGRvY3VtZW50ID0gbV9kb2N1bWVudDsKKyAgICAgICAgZG9jdW1l
bnQgPSBtX2RvY3VtZW50LmdldCgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzMDAsNyArMTMwMCw3IEBAIENhY2hlUG9saWN5IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpjYWNoZVAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRE
b25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlLCBib29sIHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFj
dGlvbnMpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0RG9jdW1lbnRMb2Fk
ZXIobV9kb2N1bWVudExvYWRlcik7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0RG9jdW1l
bnQobV9kb2N1bWVudCk7CisgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0RG9jdW1lbnQobV9k
b2N1bWVudC5nZXQoKSk7CiAKICAgICBBU1NFUlQoc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9u
cyB8fCB0eXBlID09IExvYWRDb21wbGV0aW9uVHlwZTo6Q2FuY2VsKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI0MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsOCArMTI1LDggQEAgcHVibGljOgog
ICAgIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBV
UkwmKSBjb25zdDsKICAgICAKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsgLy8gQ2FuIGJlIG51
bGwKLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9
IC8vIENhbiBiZSBudWxsCi0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQp
IHsgbV9kb2N1bWVudCA9IGRvY3VtZW50OyB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfSAvLyBDYW4gYmUgbnVsbAorICAgIHZvaWQg
c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KSB7IG1fZG9jdW1lbnQgPSBtYWtlV2Vha1B0
cihkb2N1bWVudCk7IH0KICAgICB2b2lkIGNsZWFyRG9jdW1lbnRMb2FkZXIoKSB7IG1fZG9jdW1l
bnRMb2FkZXIgPSBudWxscHRyOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29u
c3Q7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxlIERvY3VtZW50UmVzb3VyY2VNYXAgbV9kb2N1
bWVudFJlc291cmNlczsKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBXZWFrUHRyPERv
Y3VtZW50PiBtX2RvY3VtZW50OwogICAgIERvY3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVy
OwogCiAgICAgaW50IG1fcmVxdWVzdENvdW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365440</attachid>
            <date>2019-03-20 16:55:34 -0700</date>
            <delta_ts>2019-03-22 10:34:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196042-20190320165533.patch</filename>
            <type>text/plain</type>
            <size>18945</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzI1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTAzLTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCBzdG9y
aW5nIHJhdyBwb2ludGVycyB0byBEb2N1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjA0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
IEdhcmVuLgorCisgICAgICAgIFVzZSBXZWFrUHRyIGluc3RlYWQhICBUaGlzIGNvdWxkIGNoYW5n
ZSBzb21lIFVBRiBidWdzIGludG8gbnVsbCBkZXJlZmVyZW5jZSBjcmFzaGVzLgorCisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2Vs
ZWN0b3I6OkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0
b3I6OmFkZEZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6
OmZvbnRSYW5nZXNGb3JGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoK
KyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFRdWVyeU1hdGNoZXI6Ok1lZGlhUXVlcnlNYXRjaGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnlNYXRjaGVyOjptYXRjaE1lZGlhKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVy
eU1hdGNoZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldExpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGVldExpc3Q6OlN0eWxlU2hlZXRMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXRMaXN0Ojpvd25lck5vZGUgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHls
ZVNoZWV0TGlzdC5oOgorICAgICAgICAqIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRTdHlsZVJlc29sdmVyOjpWaWV3cG9ydFN0eWxlUmVz
b2x2ZXIpOgorICAgICAgICAqIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRUZW1wbGF0
ZURvY3VtZW50SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGVtcGxhdGVEb2N1
bWVudEhvc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmRvY3Vt
ZW50IGNvbnN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6U2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpIVE1MU2NyaXB0UnVubmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdCk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5oOgorICAgICAgICAqIGxvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2Fk
ZXI6Ok1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0SW5D
b250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpzZXREb2N1bWVudCk6CisKIDIwMTktMDMtMjAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgV2Vha1B0ciBpbnN0
ZWFkIG9mIHN0b3JpbmcgcmF3IHBvaW50ZXJzIGluIFdlYlNvY2tldCBjb2RlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHVuc2lnbmVkIGZvbnRTZWxl
Y3RvcklkOwogCiBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihEb2N1bWVudCYgZG9j
dW1lbnQpCi0gICAgOiBtX2RvY3VtZW50KCZkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQobWFr
ZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9jc3NGb250RmFjZVNldChDU1NGb250RmFjZVNl
dDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9iZWdpbkxvYWRpbmdUaW1lcigqdGhpcywgJkNTU0Zv
bnRTZWxlY3Rvcjo6YmVnaW5Mb2FkVGltZXJGaXJlZCkKICAgICAsIG1fdW5pcXVlSWQoKytmb250
U2VsZWN0b3JJZCkKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRk
Rm9udEZhY2VSdWxlKFN0CiAgICAgaWYgKGxvYWRpbmdCZWhhdmlvcikKICAgICAgICAgZm9udEZh
Y2UtPnNldExvYWRpbmdCZWhhdmlvcigqbG9hZGluZ0JlaGF2aW9yKTsKIAotICAgIENTU0ZvbnRG
YWNlOjphcHBlbmRTb3VyY2VzKGZvbnRGYWNlLCBzcmNMaXN0LCBtX2RvY3VtZW50LCBpc0luaXRp
YXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBDU1NGb250RmFjZTo6YXBw
ZW5kU291cmNlcyhmb250RmFjZSwgc3JjTGlzdCwgbV9kb2N1bWVudC5nZXQoKSwgaXNJbml0aWF0
aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7CiAgICAgaWYgKGZvbnRGYWNlLT5jb21w
dXRlRmFpbHVyZVN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzEyLDcgKzMxMiw3IEBA
IEZvbnRSYW5nZXMgQ1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm8KICAgICAvLyBGSVhNRTog
VGhlIHNwZWMgKGFuZCBGaXJlZm94KSBzYXlzIHVzZXIgc3BlY2lmaWVkIGdlbmVyaWMgZmFtaWxp
ZXMgKHNhbnMtc2VyaWYgZXRjLikgc2hvdWxkIGJlIHJlc29sdmVkIGJlZm9yZSB0aGUgQGZvbnQt
ZmFjZSBsb29rdXAgdG9vLgogICAgIGJvb2wgcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA9IGZh
bWlseU5hbWUgPT0gc3RhbmRhcmRGYW1pbHk7CiAKLSAgICBBdG9taWNTdHJpbmcgZmFtaWx5Rm9y
TG9va3VwID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA/IHJlc29sdmVHZW5lcmljRmFtaWx5
KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSkgOiBmYW1pbHlOYW1lOwor
ICAgIEF0b21pY1N0cmluZyBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseUZp
cnN0ID8gcmVzb2x2ZUdlbmVyaWNGYW1pbHkobV9kb2N1bWVudC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uLCBmYW1pbHlOYW1lKSA6IGZhbWlseU5hbWU7CiAgICAgYXV0byogZmFjZSA9IG1fY3NzRm9u
dEZhY2VTZXQtPmZvbnRGYWNlKGZvbnREZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVzdCgp
LCBmYW1pbHlGb3JMb29rdXApOwogICAgIGlmIChmYWNlKSB7CiAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVk
KCkpIHsKQEAgLTMyMiw3ICszMjIsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6Zm9u
dFJhbmdlc0ZvCiAgICAgICAgIHJldHVybiBmYWNlLT5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlv
bik7CiAgICAgfQogICAgIGlmICghcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCkKLSAgICAgICAg
ZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERl
c2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKKyAgICAgICAgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2
ZUdlbmVyaWNGYW1pbHkobV9kb2N1bWVudC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlO
YW1lKTsKICAgICBhdXRvIGZvbnQgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1p
bHkoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlGb3JMb29rdXApOwogICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkp
IHsKICAgICAgICAgaWYgKG1fZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5oCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVjdG9yQ2xpZW50
JikgZmluYWw7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZv
bnRTZWxlY3RvckNsaWVudCYpIGZpbmFsOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KIAogICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9u
dFNvb24oQ2FjaGVkRm9udCYpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB9
OwogICAgIFZlY3RvcjxQZW5kaW5nRm9udEZhY2VSdWxlPiBtX3N0YWdpbmdBcmVhOwogCi0gICAg
RG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsK
ICAgICBSZWZQdHI8Rm9udEZhY2VTZXQ+IG1fZm9udEZhY2VTZXQ7CiAgICAgUmVmPENTU0ZvbnRG
YWNlU2V0PiBtX2Nzc0ZvbnRGYWNlU2V0OwogICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50
Kj4gbV9jbGllbnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIu
Y3BwCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1h
dGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIE1lZGlhUXVlcnlNYXRjaGVyOjpNZWRpYVF1ZXJ5TWF0Y2hlcihEb2N1bWVudCYg
ZG9jdW1lbnQpCi0gICAgOiBtX2RvY3VtZW50KCZkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQo
bWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogewogfQogCkBAIC04NCw3ICs4NCw3IEBAIFJlZlB0cjxN
ZWRpYVF1ZXJ5TGlzdD4gTWVkaWFRdWVyeU1hdGNoZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBhdXRvIG1lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKHF1ZXJ5LCBNZWRpYVF1
ZXJ5UGFyc2VyQ29udGV4dCgqbV9kb2N1bWVudCkpOwotICAgIHJlcG9ydE1lZGlhUXVlcnlXYXJu
aW5nSWZOZWVkZWQobV9kb2N1bWVudCwgbWVkaWEucHRyKCkpOworICAgIHJlcG9ydE1lZGlhUXVl
cnlXYXJuaW5nSWZOZWVkZWQobV9kb2N1bWVudC5nZXQoKSwgbWVkaWEucHRyKCkpOwogICAgIGJv
b2wgcmVzdWx0ID0gZXZhbHVhdGUobWVkaWEuZ2V0KCkpOwogICAgIHJldHVybiBNZWRpYVF1ZXJ5
TGlzdDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKG1lZGlhKSwgcmVzdWx0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5oCShyZXZpc2lvbiAyNDMxODApCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
ZG9jdW1lbnRFbGVtZW50VXNlckFnZW50U3R5bGUoKSBjb25zdDsKICAgICBTdHJpbmcgbWVkaWFU
eXBlKCkgY29uc3Q7CiAKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBXZWFrUHRyPERv
Y3VtZW50PiBtX2RvY3VtZW50OwogICAgIFZlY3RvcjxMaXN0ZW5lcj4gbV9saXN0ZW5lcnM7CiAK
ICAgICAvLyBUaGlzIHZhbHVlIGlzIGluY3JlbWVudGVkIGF0IHN0eWxlIHNlbGVjdG9yIGNoYW5n
ZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAJKHJldmlzaW9uIDI0
MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAogU3R5bGVTaGVldExpc3Q6OlN0eWxlU2hlZXRMaXN0KERvY3VtZW50
JiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoJmRvY3VtZW50KQorICAgIDogbV9kb2N1bWVu
dChtYWtlV2Vha1B0cihkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTU3LDcgKzU3LDcgQEAgaW5saW5l
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+JgogTm9kZSogU3R5bGVTaGVldExpc3Q6
Om93bmVyTm9kZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVy
biBtX2RvY3VtZW50OworICAgICAgICByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsKICAgICByZXR1
cm4gbV9zaGFkb3dSb290OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3Qu
aAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFN0eWxlU2hlZXRMaXN0KFNoYWRvd1Jvb3QmKTsK
ICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgc3R5bGVTaGVldHMoKSBjb25z
dDsKIAotICAgIERvY3VtZW50KiBtX2RvY3VtZW50IHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8
RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU2hhZG93Um9vdCogbV9zaGFkb3dSb290IHsgbnVs
bHB0ciB9OwogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+IG1fZGV0YWNoZWRTdHlsZVNo
ZWV0czsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29s
dmVyLmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1ZpZXdwb3J0
U3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogVmlld3BvcnRTdHlsZVJlc29sdmVyOjpWaWV3cG9ydFN0eWxlUmVz
b2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAg
ICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQgPyBtYWtlV2Vha1B0cigqZG9jdW1lbnQpIDogbnVsbHB0
cikKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5oCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IGdldFZpZXdwb3J0QXJndW1lbnRWYWx1
ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKIAotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAg
IFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IG1fcHJvcGVydHlTZXQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzNDQsOCArMTM0NCw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IERvY3Vt
ZW50KiB0ZW1wbGF0ZURvY3VtZW50KCkgY29uc3Q7CiAgICAgRG9jdW1lbnQmIGVuc3VyZVRlbXBs
YXRlRG9jdW1lbnQoKTsKLSAgICB2b2lkIHNldFRlbXBsYXRlRG9jdW1lbnRIb3N0KERvY3VtZW50
KiB0ZW1wbGF0ZURvY3VtZW50SG9zdCkgeyBtX3RlbXBsYXRlRG9jdW1lbnRIb3N0ID0gdGVtcGxh
dGVEb2N1bWVudEhvc3Q7IH0KLSAgICBEb2N1bWVudCogdGVtcGxhdGVEb2N1bWVudEhvc3QoKSB7
IHJldHVybiBtX3RlbXBsYXRlRG9jdW1lbnRIb3N0OyB9CisgICAgdm9pZCBzZXRUZW1wbGF0ZURv
Y3VtZW50SG9zdChEb2N1bWVudCogdGVtcGxhdGVEb2N1bWVudEhvc3QpIHsgbV90ZW1wbGF0ZURv
Y3VtZW50SG9zdCA9IG1ha2VXZWFrUHRyKHRlbXBsYXRlRG9jdW1lbnRIb3N0KTsgfQorICAgIERv
Y3VtZW50KiB0ZW1wbGF0ZURvY3VtZW50SG9zdCgpIHsgcmV0dXJuIG1fdGVtcGxhdGVEb2N1bWVu
dEhvc3QuZ2V0KCk7IH0KIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2woRWxlbWVu
dCYpOwogICAgIGJvb2wgaGFzRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50OyB9CkBAIC0xOTE3LDcgKzE5MTcsNyBA
QCBwcml2YXRlOgogICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcCBtX2xvY2FsZUNhY2hl
OwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3RlbXBsYXRlRG9jdW1lbnQ7Ci0gICAgRG9jdW1l
bnQqIG1fdGVtcGxhdGVEb2N1bWVudEhvc3QgeyBudWxscHRyIH07IC8vIE1hbnVhbGx5IG1hbmFn
ZWQgd2Vha3JlZiAoYmFja3BvaW50ZXIgZnJvbSBtX3RlbXBsYXRlRG9jdW1lbnQpLgorICAgIFdl
YWtQdHI8RG9jdW1lbnQ+IG1fdGVtcGxhdGVEb2N1bWVudEhvc3Q7IC8vIE1hbnVhbGx5IG1hbmFn
ZWQgd2Vha3JlZiAoYmFja3BvaW50ZXIgZnJvbSBtX3RlbXBsYXRlRG9jdW1lbnQpLgogCiAgICAg
UmVmPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBEb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9zdGF0ZShQYXJzaW5nU3RhdGUpCiAgICAgLCBtX2Rv
Y3VtZW50V2FzTG9hZGVkQXNQYXJ0T2ZOYXZpZ2F0aW9uKGZhbHNlKQotICAgICwgbV9kb2N1bWVu
dCgmZG9jdW1lbnQpCisgICAgLCBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKIHsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDI0MzE4
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc2luZ0Rh
dGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gZG9jdW1lbnQoKSB3aWxsIHJl
dHVybiAwIGFmdGVyIGRldGFjaCgpIGlzIGNhbGxlZC4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdCB7IEFTU0VSVChtX2RvY3VtZW50KTsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IEFTU0VSVChtX2RvY3VtZW50KTsgcmV0dXJuIG1f
ZG9jdW1lbnQuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBQYXJzaW5nU3RhdGU7IH0KICAgICBib29sIGlzU3RvcHBpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0b3BwaW5nU3RhdGU7IH0KQEAgLTExNCw3ICsxMTQsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gRXZlcnkgRG9jdW1lbnRQYXJzZXIgbmVlZHMgYSBwb2ludGVyIGJh
Y2sgdG8gdGhlIGRvY3VtZW50LgogICAgIC8vIG1fZG9jdW1lbnQgd2lsbCBiZSAwIGFmdGVyIHRo
ZSBwYXJzZXIgaXMgc3RvcHBlZC4KLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICBXZWFr
UHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IHN0YXRpYyBjb25zdCBTZWNvbmRzIGFnZ3Jlc3NpdmVUaHJvdHRsaW4KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIoRG9jdW1lbnQmIGRvY3VtZW50KQotICAgIDogbV9kb2N1bWVudCgmZG9jdW1lbnQp
CisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fYW5pbWF0
aW9uVGltZXIoKnRoaXMsICZTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGlvblRp
bWVyRmlyZWQpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2s+PiBDYWxsYmFja0xpc3Q7CiAgICAgQ2FsbGJhY2tMaXN0IG1f
Y2FsbGJhY2tzOwogCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgV2Vha1B0cjxEb2N1
bWVudD4gbV9kb2N1bWVudDsKICAgICBDYWxsYmFja0lkIG1fbmV4dENhbGxiYWNrSWQgeyAwIH07
CiAgICAgaW50IG1fc3VzcGVuZENvdW50IHsgMCB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAkocmV2aXNpb24gMjQzMTgwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTFNjcmlwdFJ1bm5lcjo6SFRNTFNjcmlwdFJ1bm5lcihE
b2N1bWVudCYgZG9jdW1lbnQsIEhUTUxTY3JpcHRSdW5uZXJIb3N0JiBob3N0KQotICAgIDogbV9k
b2N1bWVudCgmZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50
KSkKICAgICAsIG1faG9zdChob3N0KQogICAgICwgbV9zY3JpcHROZXN0aW5nTGV2ZWwoMCkKICAg
ICAsIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyhmYWxzZSkKQEAgLTI1OCw3ICsy
NTgsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdChTY3JpcHRFCiAgICAgICAg
IGlmIChtX3NjcmlwdE5lc3RpbmdMZXZlbCA9PSAxKQogICAgICAgICAgICAgbV9wYXJzZXJCbG9j
a2luZ1NjcmlwdCA9IFBlbmRpbmdTY3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50LCBzY3JpcHRT
dGFydFBvc2l0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5l
eGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQuZWxlbWVu
dCgpLnRleHRDb250ZW50KCksIGRvY3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKG1fZG9jdW1l
bnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQpKSk7Cisg
ICAgICAgICAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNvdXJj
ZUNvZGUoc2NyaXB0RWxlbWVudC5lbGVtZW50KCkudGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkxG
b3JTY3JpcHRFeGVjdXRpb24obV9kb2N1bWVudC5nZXQoKSksIHNjcmlwdFN0YXJ0UG9zaXRpb24s
IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBJbmxpbmVDbGFzc2ljU2Ny
aXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVudCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVxdWVz
dFBhcnNpbmdCbG9ja2luZ1NjcmlwdChzY3JpcHRFbGVtZW50KTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmgJKHJldmlzaW9uIDI0MzE4
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVuZGluZ1NjcmlwdC5o
IgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTcxLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoUGVu
ZGluZ1NjcmlwdCYpOwogICAgIGJvb2wgaXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGlu
Z1NjcmlwdCYpOwogCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgV2Vha1B0cjxEb2N1
bWVudD4gbV9kb2N1bWVudDsKICAgICBIVE1MU2NyaXB0UnVubmVySG9zdCYgbV9ob3N0OwogICAg
IFJlZlB0cjxQZW5kaW5nU2NyaXB0PiBtX3BhcnNlckJsb2NraW5nU2NyaXB0OwogICAgIERlcXVl
PFJlZjxQZW5kaW5nU2NyaXB0Pj4gbV9zY3JpcHRzVG9FeGVjdXRlQWZ0ZXJQYXJzaW5nOyAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNsaXN0LW9m
LXNjcmlwdHMtdGhhdC13aWxsLWV4ZWN1dGUtd2hlbi10aGUtZG9jdW1lbnQtaGFzLWZpbmlzaGVk
LXBhcnNpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUmVzb3VyY2VMb2Fk
ZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoJmRvY3VtZW50KQotICAgICwgbV9kb2N1bWVudCgmZG9jdW1lbnQpCisgICAgLCBtX2Rv
Y3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1ha2VX
ZWFrUHRyKG1lZGlhRWxlbWVudCkpCiAgICAgLCBtX2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdp
bk1vZGUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShSZXNvdXJj
ZVJlcXVlc3QmJiwgTG9hZE9wdGlvbnMpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2Uo
TWVkaWFSZXNvdXJjZSYpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgeyByZXR1cm4gbV9k
b2N1bWVudDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlOyB9CiAKICAgICBWZWN0b3I8UmVzb3VyY2VSZXNw
b25zZT4gcmVzcG9uc2VzRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VzRm9y
VGVzdGluZzsgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7
CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBXZWFrUHRyPEhUTUxNZWRp
YUVsZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogICAgIFN0cmluZyBtX2Nyb3NzT3JpZ2luTW9kZTsK
ICAgICBIYXNoU2V0PE1lZGlhUmVzb3VyY2UqPiBtX3Jlc291cmNlczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc3LDcgKzU3Nyw3IEBAIGJvb2wg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3RJbkMKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0
OgotICAgICAgICBkb2N1bWVudCA9IG1fZG9jdW1lbnQ7CisgICAgICAgIGRvY3VtZW50ID0gbV9k
b2N1bWVudC5nZXQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMzAwLDcgKzEzMDAsNyBAQCBDYWNoZVBvbGljeSBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2FjaGVQCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShMb2Fk
Q29tcGxldGlvblR5cGUgdHlwZSwgYm9vbCBzaG91bGRQZXJmb3JtUG9zdExvYWRBY3Rpb25zKQog
ewogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdERvY3VtZW50TG9hZGVyKG1fZG9j
dW1lbnRMb2FkZXIpOwotICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG1fZG9j
dW1lbnQpOworICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG1fZG9jdW1lbnQu
Z2V0KCkpOwogCiAgICAgQVNTRVJUKHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMgfHwgdHlw
ZSA9PSBMb2FkQ29tcGxldGlvblR5cGU6OkNhbmNlbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAy
NDMxODApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDggKzEyNSw4IEBAIHB1YmxpYzoKICAgICBDYWNo
ZVBvbGljeSBjYWNoZVBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJikgY29u
c3Q7CiAgICAgCiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7IC8vIENhbiBiZSBudWxsCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfSAvLyBDYW4g
YmUgbnVsbAotICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KSB7IG1fZG9j
dW1lbnQgPSBkb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0gLy8gQ2FuIGJlIG51bGwKKyAgICB2b2lkIHNldERvY3Vt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkgeyBtX2RvY3VtZW50ID0gbWFrZVdlYWtQdHIoZG9jdW1l
bnQpOyB9CiAgICAgdm9pZCBjbGVhckRvY3VtZW50TG9hZGVyKCkgeyBtX2RvY3VtZW50TG9hZGVy
ID0gbnVsbHB0cjsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBA
IC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlk
YXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNv
dXJjZXM7Ci0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgV2Vha1B0cjxEb2N1bWVudD4g
bV9kb2N1bWVudDsKICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKIAogICAg
IGludCBtX3JlcXVlc3RDb3VudDsK
</data>
<flag name="review"
          id="381890"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>