<?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>158306</bug_id>
          
          <creation_ts>2016-06-02 11:09:41 -0700</creation_ts>
          <short_desc>Make it easier to use NoLockingNecessary</short_desc>
          <delta_ts>2016-06-02 12:39:16 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198576</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 11:09:41 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198579</commentid>
    <comment_count>1</comment_count>
      <attachid>280342</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 11:18:51 -0700</bug_when>
    <thetext>Created attachment 280342
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198582</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 11:21:29 -0700</bug_when>
    <thetext>Attachment 280342 did not pass style-queue:


ERROR: Source/WTF/wtf/Locker.h:48:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198590</commentid>
    <comment_count>3</comment_count>
      <attachid>280342</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-02 11:37:37 -0700</bug_when>
    <thetext>Comment on attachment 280342
the patch

r=me. Although, the implicit cast nature of the NoLockingNecessaryTag still terrifies me. I dread the day I see Locker(someIntegralVariableWithANameThatLooksTooCloseToALock)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198593</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 11:40:10 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/201605</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198595</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 11:40:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 280342 [details]
&gt; the patch
&gt; 
&gt; r=me. Although, the implicit cast nature of the NoLockingNecessaryTag still
&gt; terrifies me. I dread the day I see
&gt; Locker(someIntegralVariableWithANameThatLooksTooCloseToALock)

Maybe we can solve that by having an overload of Locker that takes int and asserts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198598</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-02 11:46:31 -0700</bug_when>
    <thetext>&gt; Maybe we can solve that by having an overload of Locker that takes int and
&gt; asserts?

That seems like a good idea. rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198610</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 12:20:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Maybe we can solve that by having an overload of Locker that takes int and
&gt; &gt; asserts?
&gt; 
&gt; That seems like a good idea. rs=me.

Landed in http://trac.webkit.org/changeset/201609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198612</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-02 12:23:29 -0700</bug_when>
    <thetext>Can it just be an overload with &quot;= delete&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198614</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 12:24:58 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Can it just be an overload with &quot;= delete&quot;?

Aw snap!  I&apos;ll do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198615</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 12:25:13 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Can it just be an overload with &quot;= delete&quot;?
&gt; 
&gt; Aw snap!  I&apos;ll do that.

RS to do this or do you want to see the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198621</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-02 12:39:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Can it just be an overload with &quot;= delete&quot;?
&gt; &gt; 
&gt; &gt; Aw snap!  I&apos;ll do that.
&gt; 
&gt; RS to do this or do you want to see the patch?

Saam rubber stamped this in person.  Landed here: http://trac.webkit.org/changeset/201611</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280342</attachid>
            <date>2016-06-02 11:18:51 -0700</date>
            <delta_ts>2016-06-02 11:37:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24398</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNjAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE2LTA2LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBpdCBlYXNpZXIgdG8gdXNlIE5vTG9ja2luZ05lY2Vzc2FyeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzA2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGFwdCB0byB0aGUgbmV3
IE5vTG9ja2luZ05lY2Vzc2FyeSBBUEkuIE1vcmUgZGV0YWlscyBpbiB0aGUgV1RGIENoYW5nZUxv
Zy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJyb3dGdW5jdGlvbkNvbnRleHRT
Y29wZUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRp
YXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHJlZmlsbFN0YWNrVERaVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpob2lzdFNsb3BweU1vZGVGdW5jdGlvbklmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcExleGljYWxTY29wZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBhcmVMZXhpY2FsU2NvcGVGb3JO
ZXh0Rm9yTG9vcEl0ZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjp2
YXJpYWJsZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJs
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVNjb3BlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2Nv
cGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uY3VycmVudEpJVExvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29uY3VycmVudEpJVExvY2tlckJhc2U6OkNvbmN1cnJlbnRKSVRMb2NrZXJCYXNlKToKKyAg
ICAgICAgKEpTQzo6Q29uY3VycmVudEpJVExvY2tlcjo6Q29uY3VycmVudEpJVExvY2tlcik6CisK
IDIwMTYtMDYtMDEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dHJ1Y3R1cmU6OnByZXZpb3VzSUQoKSByYWNlcyB3aXRoIFN0cnVjdHVyZTo6YWxsb2NhdGVSYXJl
RGF0YSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2OCw3ICszNjgsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mCiAgICAgICAgIC8vIHVzZSBEaXJlY3RBcmd1bWVudHMuIFdpdGggU2NvcGVk
QXJndW1lbnRzLCB3ZSBsaWZ0IGFsbCBvZiBvdXIgYXJndW1lbnRzIGludG8gdGhlCiAgICAgICAg
IC8vIGFjdGl2YXRpb24uCiAgICAgICAgIAotICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihDb25jdXJyZW50SklUTG9ja2VyOjpOb0xvY2tpbmdOZWNlc3NhcnkpOwogICAgICAgICBp
ZiAoY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSkgewogICAgICAgICAgICAgZnVuY3Rpb25TeW1i
b2xUYWJsZS0+c2V0QXJndW1lbnRzTGVuZ3RoKHZtLCBwYXJhbWV0ZXJzLnNpemUoKSk7CiAgICAg
ICAgICAgICAKQEAgLTM3Nyw3ICszNzYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mCiAgICAgICAgICAgICAvLyBpbiB0aGUgc3ltYm9sIHRhYmxlIC0gb3IgaXQg
anVzdCBnZXRzIHNwYWNlIHJlc2VydmVkIGluIHRoZSBzeW1ib2wgdGFibGUuIEVpdGhlcgogICAg
ICAgICAgICAgLy8gd2F5IHdlIGxpZnQgdGhlIHZhbHVlIGludG8gdGhlIHNjb3BlLgogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBTY29wZU9mZnNldCBvZmZzZXQgPSBmdW5jdGlvblN5bWJvbFRhYmxl
LT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcik7CisgICAgICAgICAgICAgICAgU2NvcGVPZmZz
ZXQgb2Zmc2V0ID0gZnVuY3Rpb25TeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xv
Y2tpbmdOZWNlc3NhcnkpOwogICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNl
dEFyZ3VtZW50T2Zmc2V0KHZtLCBpLCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmIChVbmlx
dWVkU3RyaW5nSW1wbCogbmFtZSA9IHZpc2libGVOYW1lRm9yUGFyYW1ldGVyKHBhcmFtZXRlcnMu
YXQoaSkuZmlyc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZzZXQo
b2Zmc2V0KTsKQEAgLTM4Nyw3ICszODYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mCiAgICAgICAgICAgICAgICAgICAgIC8vIHBhcmFtZXRlcnMgd2hlbiAiYXJn
dW1lbnRzIiBpcyBpbiBwbGF5IGlzIHVubGlrZWx5IHRvIGJlIHN1cGVyIHByb2ZpdGFibGUuCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBqdXN0IGRpc2FibGUgaXQuCiAgICAgICAgICAg
ICAgICAgICAgIGVudHJ5LmRpc2FibGVXYXRjaGluZygpOwotICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvblN5bWJvbFRhYmxlLT5zZXQobG9ja2VyLCBuYW1lLCBlbnRyeSk7CisgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5h
bWUsIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZW1pdE9wY29k
ZShvcF9wdXRfdG9fc2NvcGUpOwogICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLT5pbmRleCgpKTsKQEAgLTQwOCw3ICs0MDcs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgICAg
ICAvLyB0aGF0IHRoZSBzeW1ib2wgdGFibGUga25vd3MgdGhhdCB0aGlzIGlzIGhhcHBlbmluZy4K
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFVuaXF1ZWRTdHJpbmdJbXBsKiBuYW1lID0gdmlz
aWJsZU5hbWVGb3JQYXJhbWV0ZXIocGFyYW1ldGVycy5hdChpKS5maXJzdCkpCi0gICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChsb2NrZXIsIG5hbWUsIFN5bWJvbFRh
YmxlRW50cnkoVmFyT2Zmc2V0KERpcmVjdEFyZ3VtZW50c09mZnNldChpKSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwg
bmFtZSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQoRGlyZWN0QXJndW1lbnRzT2Zmc2V0KGkp
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBlbWl0T3Bjb2Rl
KG9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKTsKQEAgLTQxOSw3ICs0MTgsNiBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgIC8vIGNhcHR1cmVkLCBs
aWZ0IHRoZW0gaW50byB0aGUgc2NvcGUuIFdlIGNhbm5vdCBkbyB0aGlzIGlmIHdlIGhhdmUgZGVm
YXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMKICAgICAgICAgLy8gYmVjYXVzZSB3aGVuIGRlZmF1
bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zIGV4aXN0LCB0aGV5IGJlbG9uZyBpbiB0aGVpciBvd24g
bGV4aWNhbCBlbnZpcm9ubWVudAogICAgICAgICAvLyBzZXBhcmF0ZSBmcm9tIHRoZSAidmFyIiBs
ZXhpY2FsIGVudmlyb25tZW50LgotICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihD
b25jdXJyZW50SklUTG9ja2VyOjpOb0xvY2tpbmdOZWNlc3NhcnkpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIG5hbWUgPSB2aXNpYmxlTmFtZUZvclBhcmFtZXRlcihwYXJhbWV0
ZXJzLmF0KGkpLmZpcnN0KTsKICAgICAgICAgICAgIGlmICghbmFtZSkKQEAgLTQyOCwxNCArNDI2
LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAgICAg
ICAgIGlmICghY2FwdHVyZXMobmFtZSkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBlYXN5IGNhc2UgLSBqdXN0IHRlbGwgdGhlIHN5bWJvbCB0YWJsZSBhYm91dCB0aGUgYXJndW1l
bnQuIEl0IHdpbGwKICAgICAgICAgICAgICAgICAvLyBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KLSAg
ICAgICAgICAgICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXQobG9ja2VyLCBuYW1lLCBTeW1i
b2xUYWJsZUVudHJ5KFZhck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxICsgaSkp
KSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05l
Y2Vzc2FyeSwgbmFtZSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoMSArIGkpKSkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBTY29wZU9mZnNldCBvZmZzZXQgPSBm
dW5jdGlvblN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcik7CisgICAgICAg
ICAgICBTY29wZU9mZnNldCBvZmZzZXQgPSBmdW5jdGlvblN5bWJvbFRhYmxlLT50YWtlTmV4dFNj
b3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCA9CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQmluZGluZ05v
ZGUqPihwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0KS0+Ym91bmRQcm9wZXJ0eSgpOwotICAgICAgICAg
ICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0KGxvY2tlciwgbmFtZSwgU3ltYm9sVGFibGVFbnRy
eShWYXJPZmZzZXQob2Zmc2V0KSkpOworICAgICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+
c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgbmFtZSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQo
b2Zmc2V0KSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF90
b19zY29wZSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9sZXhpY2FsRW52
aXJvbm1lbnRSZWdpc3Rlci0+aW5kZXgoKSk7CkBAIC05MDUsMjAgKzkwMywxOSBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJyb3dGCiAgICAgICAgIAogICAgICAgICBTY29w
ZU9mZnNldCBvZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihDb25jdXJyZW50SklUTG9ja2VyOjpOb0xvY2tpbmdOZWNlc3NhcnkpOwogICAgICAgICBp
ZiAoaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIG9mZnNl
dCA9IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKTsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChsb2NrZXIsIHByb3BlcnR5TmFtZXMo
KS50aGlzSWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNl
dCkpKTsKKyAgICAgICAgICAgIG9mZnNldCA9IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnRha2VOZXh0
U2NvcGVPZmZzZXQoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uU3lt
Ym9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5TmFtZXMoKS50aGlzSWRl
bnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBpc05l
d1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAgICAgICBvZmZzZXQg
PSBmdW5jdGlvblN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KCk7Ci0gICAgICAgICAg
ICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXQobG9ja2VyLCBwcm9wZXJ0eU5hbWVzKCkubmV3VGFy
Z2V0TG9jYWxQcml2YXRlTmFtZS5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9m
ZnNldCkpKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdO
ZWNlc3NhcnksIHByb3BlcnR5TmFtZXMoKS5uZXdUYXJnZXRMb2NhbFByaXZhdGVOYW1lLmltcGwo
KSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBpc1N1cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0
aW9uKCkpIHsKLSAgICAgICAgICAgIG9mZnNldCA9IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnRha2VO
ZXh0U2NvcGVPZmZzZXQobG9ja2VyKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUt
PnNldChsb2NrZXIsIHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFt
ZS5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKKyAgICAgICAg
ICAgIG9mZnNldCA9IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoTm9M
b2NraW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChO
b0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2
YXRlTmFtZS5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybjsKQEAgLTE3NjQsMTEgKzE3NjEsMTAgQEAgYm9vbCBC
eXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpYwogewogICAgIGJvb2wgaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKENvbmN1cnJlbnRKSVRMb2NrZXI6Ok5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgICAg
IGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBBU1NF
UlQoZW50cnkudmFsdWUuaXNMZXQoKSB8fCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkgfHwgZW50cnku
dmFsdWUuaXNGdW5jdGlvbigpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkudmFsdWUuaXNW
YXIoKSk7Ci0gICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBz
eW1ib2xUYWJsZS0+Z2V0KGxvY2tlciwgZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkgc3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQoTm9Mb2Nr
aW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICAgICAgQVNTRVJUKHN5bWJv
bFRhYmxlRW50cnkuaXNOdWxsKCkpOwogCiAgICAgICAgICAgICAvLyBJbXBvcnRlZCBiaW5kaW5n
cyB3aGljaCBhcmUgbm90IHRoZSBuYW1lc3BhY2UgYmluZGluZ3MgYXJlIG5vdCBhbGxvY2F0ZWQK
QEAgLTE3ODEsNyArMTc3Nyw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRl
TGV4aWMKICAgICAgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZhcktpbmQoZW50cnku
a2V5LmdldCgpLCBlbnRyeS52YWx1ZSk7CiAgICAgICAgICAgICBWYXJPZmZzZXQgdmFyT2Zmc2V0
OwogICAgICAgICAgICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpIHsKLSAgICAgICAg
ICAgICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVP
ZmZzZXQobG9ja2VyKSk7CisgICAgICAgICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHN5
bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSkpOwogICAg
ICAgICAgICAgICAgIGhhc0NhcHR1cmVkVmFyaWFibGVzID0gdHJ1ZTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2sp
OwpAQCAtMTc5NSw3ICsxNzkxLDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlh
dGVMZXhpYwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5l
d0VudHJ5KHZhck9mZnNldCwgZW50cnkudmFsdWUuaXNDb25zdCgpID8gUmVhZE9ubHkgOiAwKTsK
LSAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCksIG5l
d0VudHJ5KTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5
LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0xODA1LDcgKzE4MDEsNiBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHJlZmlsbFN0YWNrCiB7CiAgICAgLy8gUHJlZmlsbCBzdGFjayB2
YXJpYWJsZXMgd2l0aCB0aGUgVERaIGVtcHR5IHZhbHVlLgogICAgIC8vIFNjb3BlIHZhcmlhYmxl
cyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHRoZSBURFogZW1wdHkgdmFsdWUgd2hlbiBKU0xleGlj
YWxFbnZpcm9ubWVudCBpcyBhbGxvY2F0ZWQuCi0gICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoQ29uY3VycmVudEpJVExvY2tlcjo6Tm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbGV4aWNhbFZhcmlhYmxlcykgewogICAgICAgICAvLyBJbXBvcnRlZCBiaW5k
aW5ncyB3aGljaCBhcmUgbm90IHRoZSBuYW1lc3BhY2UgYmluZGluZ3MgYXJlIG5vdCBhbGxvY2F0
ZWQKICAgICAgICAgLy8gaW4gdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBhcyB1c3VhbCB2YXJpYWJs
ZXMnIHdheS4KQEAgLTE4MTcsNyArMTgxMiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcmVmaWxsU3RhY2sKICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzRnVuY3Rpb24oKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN5bWJvbFRhYmxlRW50cnkgc3ltYm9sVGFi
bGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCkpOworICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0
KE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgQVNTRVJUKCFz
eW1ib2xUYWJsZUVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IHN5
bWJvbFRhYmxlRW50cnkudmFyT2Zmc2V0KCk7CiAgICAgICAgIGlmIChvZmZzZXQuaXNTY29wZSgp
KQpAQCAtMTk1MywxNCArMTk0OCwxMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFs
aXplQmxvY2tTCiAgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBtX3N5bWJvbFRhYmxlU3RhY2subGFz
dCgpLm1fc2NvcGU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBuZXdUZW1wb3Jhcnko
KTsKICAgICBpbnQgc3ltYm9sVGFibGVJbmRleCA9IGNvbnN0YW50U3ltYm9sVGFibGUgPyBjb25z
dGFudFN5bWJvbFRhYmxlLT5pbmRleCgpIDogMDsKLSAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihDb25jdXJyZW50SklUTG9ja2VyOjpOb0xvY2tpbmdOZWNlc3NhcnkpOwogICAgIGZvciAo
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uIDogZnVuY3Rpb25TdGFjaykgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gZnVuY3Rpb24tPmlkZW50KCk7CiAgICAgICAgIGF1
dG8gaXRlciA9IGVudmlyb25tZW50LmZpbmQobmFtZS5pbXBsKCkpOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVChpdGVyICE9IGVudmlyb25tZW50LmVuZCgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXRlci0+dmFsdWUuaXNGdW5jdGlvbigpKTsKICAgICAgICAgLy8gV2UgcHVycG9zZWZ1bGx5
IGRvbid0IGhvbGQgdGhlIHN5bWJvbCB0YWJsZSBsb2NrIGFyb3VuZCB0aGlzIGxvb3AgYmVjYXVz
ZSBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uIG1heSBHQy4KLSAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBuYW1lLmltcGwoKSk7
IAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldChOb0xv
Y2tpbmdOZWNlc3NhcnksIG5hbWUuaW1wbCgpKTsgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFl
bnRyeS5pc051bGwoKSk7CiAgICAgICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24o
dGVtcC5nZXQoKSwgZnVuY3Rpb24pOwogICAgICAgICBib29sIGlzTGV4aWNhbGx5U2NvcGVkID0g
dHJ1ZTsKQEAgLTE5ODUsOCArMTk3OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmhvaXN0
U2xvcHB5TW9kZUYKICAgICAgICAgU3ltYm9sVGFibGVTdGFja0VudHJ5JiB2YXJTY29wZSA9IG1f
c3ltYm9sVGFibGVTdGFja1sqbV92YXJTY29wZVN5bWJvbFRhYmxlSW5kZXhdOwogICAgICAgICBT
eW1ib2xUYWJsZSogdmFyU3ltYm9sVGFibGUgPSB2YXJTY29wZS5tX3N5bWJvbFRhYmxlOwogICAg
ICAgICBBU1NFUlQodmFyU3ltYm9sVGFibGUtPnNjb3BlVHlwZSgpID09IFN5bWJvbFRhYmxlOjpT
Y29wZVR5cGU6OlZhclNjb3BlKTsKLSAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
Q29uY3VycmVudEpJVExvY2tlcjo6Tm9Mb2NraW5nTmVjZXNzYXJ5KTsKLSAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHZhclN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBmdW5jdGlvbk5h
bWUuaW1wbCgpKTsKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHZhclN5bWJvbFRh
YmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBmdW5jdGlvbk5hbWUuaW1wbCgpKTsKICAgICAg
ICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgIGJvb2wgaXNMZXhpY2FsbHlTY29w
ZWQgPSBmYWxzZTsKICAgICAgICAgZW1pdFB1dFRvU2NvcGUodmFyU2NvcGUubV9zY29wZSwgdmFy
aWFibGVGb3JMb2NhbEVudHJ5KGZ1bmN0aW9uTmFtZSwgZW50cnksIHZhclNjb3BlLm1fc3ltYm9s
VGFibGVDb25zdGFudEluZGV4LCBpc0xleGljYWxseVNjb3BlZCksIGN1cnJlbnRWYWx1ZS5nZXQo
KSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6
YXRpb24pOwpAQCAtMjAxMiwxMyArMjAwNSwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpw
b3BMZXhpY2FsU2NvcGVJCiAgICAgU3ltYm9sVGFibGVTdGFja0VudHJ5IHN0YWNrRW50cnkgPSBt
X3N5bWJvbFRhYmxlU3RhY2sudGFrZUxhc3QoKTsKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBzdGFja0VudHJ5Lm1fc3ltYm9sVGFibGU7CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlh
YmxlcyA9IGZhbHNlOwotICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKENvbmN1cnJlbnRK
SVRMb2NrZXI6Ok5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dmlyb25tZW50KSB7CiAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0NhcHR1cmVkKCkpIHsKICAg
ICAgICAgICAgIGhhc0NhcHR1cmVkVmFyaWFibGVzID0gdHJ1ZTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9Ci0gICAgICAgIFN5bWJvbFRhYmxlRW50cnkgc3ltYm9sVGFibGVFbnRy
eSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KE5vTG9j
a2luZ05lY2Vzc2FyeSwgZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgQVNTRVJUKCFzeW1ib2xU
YWJsZUVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IHN5bWJvbFRh
YmxlRW50cnkudmFyT2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQuaXNTdGFjaygpKTsK
QEAgLTIwNjYsOCArMjA1OCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBhcmVMZXhp
Y2FsU2MKICAgICB7CiAgICAgICAgIGFjdGl2YXRpb25WYWx1ZXNUb0NvcHlPdmVyLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc3ltYm9sVGFibGUtPnNjb3BlU2l6ZSgpKTsKIAotICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihDb25jdXJyZW50SklUTG9ja2VyOjpOb0xvY2tpbmdOZWNl
c3NhcnkpOwotICAgICAgICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIp
LCBwdHIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgcHRyICE9IGVuZDsgKytwdHIpIHsK
KyAgICAgICAgZm9yIChhdXRvIGVuZCA9IHN5bWJvbFRhYmxlLT5lbmQoTm9Mb2NraW5nTmVjZXNz
YXJ5KSwgcHRyID0gc3ltYm9sVGFibGUtPmJlZ2luKE5vTG9ja2luZ05lY2Vzc2FyeSk7IHB0ciAh
PSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICBpZiAoIXB0ci0+dmFsdWUudmFyT2Zmc2V0KCku
aXNTY29wZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0yMDk5LDEwICsyMDkw
LDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHJlcGFyZUxleGljYWxTYwogICAgIGVtaXRN
b3ZlKHNjb3BlUmVnaXN0ZXIoKSwgbG9vcFNjb3BlKTsKIAogICAgIHsKLSAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoQ29uY3VycmVudEpJVExvY2tlcjo6Tm9Mb2NraW5nTmVjZXNz
YXJ5KTsKICAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBhY3RpdmF0aW9uVmFsdWVzVG9Db3B5T3Zl
cikgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciA9IHBhaXIuc2Vj
b25kOwotICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5n
ZXQobG9ja2VyLCBpZGVudGlmaWVyLmltcGwoKSk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZp
ZXIuaW1wbCgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7
CiAgICAgICAgICAgICBSZWdpc3RlcklEKiB0cmFuc2l0aW9uVmFsdWUgPSBwYWlyLmZpcnN0Owog
ICAgICAgICAgICAgZW1pdFB1dFRvU2NvcGUobG9vcFNjb3BlLCB2YXJpYWJsZUZvckxvY2FsRW50
cnkoaWRlbnRpZmllciwgZW50cnksIGxvb3BTeW1ib2xUYWJsZS0+aW5kZXgoKSwgdHJ1ZSksIHRy
YW5zaXRpb25WYWx1ZSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6
Tm90SW5pdGlhbGl6YXRpb24pOwpAQCAtMjEzNywxMyArMjEyNywxMiBAQCBWYXJpYWJsZSBCeXRl
Y29kZUdlbmVyYXRvcjo6dmFyaWFibGUoY29uCiAgICAgLy8gICAgICAgICBkb1NvbWV0aGluZ1dp
dGgoeCk7CiAgICAgLy8gICAgIH0KICAgICAvLyB9Ci0gICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIoQ29uY3VycmVudEpJVExvY2tlcjo6Tm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX3N5bWJvbFRhYmxlU3RhY2suc2l6ZSgpOyBpLS07ICkgewogICAgICAg
ICBTeW1ib2xUYWJsZVN0YWNrRW50cnkmIHN0YWNrRW50cnkgPSBtX3N5bWJvbFRhYmxlU3RhY2tb
aV07CiAgICAgICAgIGlmIChzdGFja0VudHJ5Lm1faXNXaXRoU2NvcGUpCiAgICAgICAgICAgICBy
ZXR1cm4gVmFyaWFibGUocHJvcGVydHkpOwogICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBzdGFja0VudHJ5Lm1fc3ltYm9sVGFibGU7Ci0gICAgICAgIFN5bWJvbFRhYmxlRW50cnkg
c3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBwcm9wZXJ0eS5pbXBs
KCkpOworICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xU
YWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgcHJvcGVydHkuaW1wbCgpKTsKICAgICAgICAg
aWYgKHN5bWJvbFRhYmxlRW50cnkuaXNOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgYm9vbCByZXN1bHRJc0NhbGxlZSA9IGZhbHNlOwpAQCAtMjE4Myw4ICsyMTcyLDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlVmFyaWFibGUoCiAgICAgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHksIFZhcktpbmQgdmFyS2luZCwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
LCBFeGlzdGluZ1ZhcmlhYmxlTW9kZSBleGlzdGluZ1ZhcmlhYmxlTW9kZSkKIHsKICAgICBBU1NF
UlQocHJvcGVydHkgIT0gcHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKTsKLSAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihDb25jdXJyZW50SklUTG9ja2VyOjpOb0xvY2tpbmdOZWNl
c3NhcnkpOwotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KGxv
Y2tlciwgcHJvcGVydHkuaW1wbCgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUtPmdldChOb0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5LmltcGwoKSk7CiAgICAg
CiAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewogICAgICAgICBpZiAoZXhpc3RpbmdWYXJpYWJs
ZU1vZGUgPT0gSWdub3JlRXhpc3RpbmcpCkBAIC0yMjA4LDEzICsyMTk2LDEzIEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKAogICAgIAogICAgIFZhck9mZnNldCB2YXJP
ZmZzZXQ7CiAgICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpCi0gICAgICAgIHZhck9m
ZnNldCA9IFZhck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2NrZXIp
KTsKKyAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNj
b3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSkpOwogICAgIGVsc2UgewogICAgICAgICBBU1NF
UlQodmFyS2luZCA9PSBWYXJLaW5kOjpTdGFjayk7CiAgICAgICAgIHZhck9mZnNldCA9IFZhck9m
ZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZUxvY2Fscy5zaXplKCkpKTsKICAg
ICB9CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIDApOwotICAgIHN5
bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBwcm9wZXJ0eS5pbXBsKCksIG5ld0VudHJ5KTsKKyAgICBz
eW1ib2xUYWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgcHJvcGVydHkuaW1wbCgpLCBuZXdF
bnRyeSk7CiAgICAgCiAgICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2spIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbG9jYWwgPSBhZGRWYXIoKTsKQEAgLTIyNjcsMTQgKzIyNTUsMTMgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgICAgICAvLyBkb24n
dCBkbyB0aGF0IGFscmVhZHkgaXMgdGhhdCBtX2xleGljYWxFbnZpcm9ubWVudCBpcyByZXF1aXJl
ZCBieSBDb25zdERlY2xOb2RlLiBDb25zdERlY2xOb2RlCiAgICAgICAgIC8vIHJlcXVpcmVzIHdl
aXJkIHRoaW5ncyBiZWNhdXNlIGl0IGlzIGEgc2hhbWVmdWwgcGlsZSBvZiBub25zZW5zZSwgYnV0
IGJsb2NrIHNjb3Bpbmcgd291bGQgbWFrZQogICAgICAgICAvLyB0aGF0IGNvZGUgc2Vuc2libGUg
YW5kIG9idmlhdGUgdGhlIG5lZWQgZm9yIHVzIHRvIGRvIGJhZCB0aGluZ3MuCi0gICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKENvbmN1cnJlbnRKSVRMb2NrZXI6Ok5vTG9ja2luZ05l
Y2Vzc2FyeSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fc3ltYm9sVGFibGVTdGFjay5z
aXplKCk7IGktLTsgKSB7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZVN0YWNrRW50cnkmIHN0YWNr
RW50cnkgPSBtX3N5bWJvbFRhYmxlU3RhY2tbaV07CiAgICAgICAgICAgICAvLyBXZSBzaG91bGQg
bm90IHJlc29sdmUgYSB2YXJpYWJsZSB0byBWYXJLaW5kOjpTY29wZSBpZiBhICJ3aXRoIiBzY29w
ZSBsaWVzIGluIGJldHdlZW4gdGhlIGN1cnJlbnQKICAgICAgICAgICAgIC8vIHNjb3BlIGFuZCB0
aGUgcmVzb2x2ZWQgc2NvcGUuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghc3RhY2tFbnRy
eS5tX2lzV2l0aFNjb3BlKTsKIAotICAgICAgICAgICAgaWYgKHN0YWNrRW50cnkubV9zeW1ib2xU
YWJsZS0+Z2V0KGxvY2tlciwgdmFyaWFibGUuaWRlbnQoKS5pbXBsKCkpLmlzTnVsbCgpKQorICAg
ICAgICAgICAgaWYgKHN0YWNrRW50cnkubV9zeW1ib2xUYWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vz
c2FyeSwgdmFyaWFibGUuaWRlbnQoKS5pbXBsKCkpLmlzTnVsbCgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBzY29wZSA9
IHN0YWNrRW50cnkubV9zY29wZTsKQEAgLTM3ODQsOCArMzc3MSw3IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb24KICAgICBwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwo
bmFtZVNjb3BlRW52aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVz
dGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVu
ZGVyVERaLCBTY29wZVR5cGU6OkZ1bmN0aW9uTmFtZVNjb3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6
VmFyKTsKICAgICBBU1NFUlRfVU5VU0VEKG51bVZhcnMsIG1fY29kZUJsb2NrLT5tX251bVZhcnMg
PT0gc3RhdGljX2Nhc3Q8aW50PihudW1WYXJzICsgMSkpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNy
ZWF0ZWQgb25lIG5ldyAidmFyIiBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCiAgICAgYm9v
bCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlID0gaXNTdHJpY3RNb2RlKCk7Ci0gICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIoQ29uY3VycmVudEpJVExvY2tlcjo6Tm9Mb2NraW5nTmVj
ZXNzYXJ5KTsKLSAgICBWYXJpYWJsZSBmdW5jdGlvblZhciA9IHZhcmlhYmxlRm9yTG9jYWxFbnRy
eShwcm9wZXJ0eSwgbV9zeW1ib2xUYWJsZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQo
bG9ja2VyLCBwcm9wZXJ0eS5pbXBsKCkpLCBtX3N5bWJvbFRhYmxlU3RhY2subGFzdCgpLm1fc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4LCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlKTsKKyAg
ICBWYXJpYWJsZSBmdW5jdGlvblZhciA9IHZhcmlhYmxlRm9yTG9jYWxFbnRyeShwcm9wZXJ0eSwg
bV9zeW1ib2xUYWJsZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVj
ZXNzYXJ5LCBwcm9wZXJ0eS5pbXBsKCkpLCBtX3N5bWJvbFRhYmxlU3RhY2subGFzdCgpLm1fc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4LCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlKTsKICAg
ICBlbWl0UHV0VG9TY29wZShtX3N5bWJvbFRhYmxlU3RhY2subGFzdCgpLm1fc2NvcGUsIGZ1bmN0
aW9uVmFyLCBjYWxsZWUsIFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbmN1cnJlbnRKSVRMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uY3VycmVudEpJVExvY2suaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpJVExvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTMsOSArNTMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGVudW0gTm9Mb2Nr
aW5nTmVjZXNzYXJ5VGFnIHsgTm9Mb2NraW5nTmVjZXNzYXJ5IH07CiAgICAgZXhwbGljaXQgQ29u
Y3VycmVudEpJVExvY2tlckJhc2UoTm9Mb2NraW5nTmVjZXNzYXJ5VGFnKQotICAgICAgICA6IG1f
bG9ja2VyKENvbmN1cnJlbnRKSVRMb2NrZXJJbXBsOjpOb0xvY2tpbmdOZWNlc3NhcnkpCisgICAg
ICAgIDogbV9sb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KQogICAgIHsKICAgICB9CiAKQEAgLTEy
NSw4ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIENvbmN1cnJlbnRKSVRM
b2NrZXIoQ29uY3VycmVudEpJVExvY2tlckJhc2U6Ok5vTG9ja2luZ05lY2Vzc2FyeVRhZykKLSAg
ICAgICAgOiBDb25jdXJyZW50SklUTG9ja2VyQmFzZShDb25jdXJyZW50SklUTG9ja2VyQmFzZTo6
Tm9Mb2NraW5nTmVjZXNzYXJ5KQorICAgIENvbmN1cnJlbnRKSVRMb2NrZXIoTm9Mb2NraW5nTmVj
ZXNzYXJ5VGFnKQorICAgICAgICA6IENvbmN1cnJlbnRKSVRMb2NrZXJCYXNlKE5vTG9ja2luZ05l
Y2Vzc2FyeSkKICNpZiBFTkFCTEUoQ09OQ1VSUkVOVF9KSVQpICYmICFkZWZpbmVkKE5ERUJVRykK
ICAgICAgICAgLCBtX2Rpc2FsbG93R0MoTnVsbG9wdCkKICNlbmRpZgpJbmRleDogU291cmNlL1dU
Ri9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwMTU5MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTQgQEAKKzIwMTYtMDYtMDIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IGVhc2llciB0byB1c2UgTm9Mb2NraW5nTmVjZXNzYXJ5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFuIGlkaW9t
IHRoYXQgd2UgYm9ycm93ZWQgZnJvbSBMTFZNIGlzIHRoYXQgaWYgYSBmdW5jdGlvbiByZXF1aXJl
cyBhIGxvY2sgdG8gYmUgaGVsZCwgd2UKKyAgICAgICAgaGF2ZSBpdCB0YWtlIGEgY29uc3QgTG9j
a2VyJiBhcyBpdHMgZmlyc3QgYXJndW1lbnQuIFRoaXMgbWF5IG5vdCBjb21tdW5pY2F0ZSB3aGlj
aCBsb2NrIGlzCisgICAgICAgIHRvIGJlIGhlbGQsIGJ1dCBpdCBkb2VzIGhlbHAgdXMgdG8gcmVt
ZW1iZXIgdGhhdCBzb21lIGxvY2sgbXVzdCBiZSBoZWxkLiBTbyBmYXIsIGl0J3MgYmVlbgorICAg
ICAgICByZWxhdGl2ZWx5IGVhc3kgdG8gdGhlbiBmaWd1cmUgb3V0IHdoaWNoIGxvY2suIFdlJ3Zl
IGhhZCBidWdzIHdoZXJlIHdlIGZvcmdvdCB0byBob2xkIGEKKyAgICAgICAgbG9jayBidXQgSSBk
b24ndCByZW1lbWJlciB0aGUgbGFzdCB0aW1lIHdlIGhhZCBhIGJ1ZyB3aGVyZSB3ZSBncmFiYmVk
IHRoZSB3cm9uZyBsb2NrLgorICAgICAgICAKKyAgICAgICAgQnV0IHNvbWV0aW1lcywgd2Uga25v
dyBhdCB0aGUgcG9pbnQgd2hlcmUgd2UgY2FsbCBzdWNoIGEgbWV0aG9kIHRoYXQgd2UgYWN0dWFs
bHkgZG9uJ3QKKyAgICAgICAgbmVlZCB0byBob2xkIGFueSBsb2NrLiBUaGlzIHVzdWFsbHkgaGFw
cGVucyBkdXJpbmcgb2JqZWN0IGNvbnN0cnVjdGlvbi4gSWYgd2UncmUKKyAgICAgICAgY29uc3Ry
dWN0aW5nIHNvbWUgb2JqZWN0IHRoZW4gd2UgdXN1YWxseSBrbm93IHRoYXQgd2UgaGF2ZSBub3Qg
ZXNjYXBlZCBpdCB5ZXQsIHNvIHdlIGRvbid0CisgICAgICAgIG5lZWQgdG8gd2FzdGUgdGltZSBh
Y3F1aXJpbmcgaXRzIGxvY2suIFdlIGNvdWxkIHNvbHZlIHRoaXMgYnkgaGF2aW5nIGEgc2VwYXJh
dGUgc2V0IG9mCisgICAgICAgIG1ldGhvZHMgdGhhdCBkb24ndCBkbyBvciByZXF1aXJlIGxvY2tp
bmcuIFRoaXMgd291bGQgYmUgY3VtYmVyc29tZSwgc2luY2UgdXN1YWxseSBmb3IKKyAgICAgICAg
ZXZlcnkgdmFyaWFudCB0aGF0IHRha2VzIGNvbnN0IExvY2tlciYsIHRoZXJlIGlzIGFscmVhZHkg
b25lIHRoYXQgZG9lc24ndCwgYW5kIHRoYXQgb25lCisgICAgICAgIHdpbGwgZ3JhYiB0aGUgbG9j
ayBmb3IgeW91LiBTbyB0aGlzIG1lYW5zIGhhdmluZyBhIHRoaXJkIHZhcmlhbnQsIHRoYXQgYWxz
byBkb2Vzbid0IHRha2UgYQorICAgICAgICBjb25zdCBMb2NrZXImLCBidXQgZG9lcyBubyBsb2Nr
aW5nLiBUaGF0J3MgcHJldHR5IHdlaXJkLgorICAgICAgICAKKyAgICAgICAgU28sIHdlIGludHJv
ZHVjZWQgTm9Mb2NraW5nTmVjZXNzYXJ5IGZvciBzaXR1YXRpb25zIGxpa2UgdGhpcy4gVGhlIGlk
aW9tIHdlbnQgbGlrZSBzbzoKKyAgICAgICAgCisgICAgICAgICAgICBMb2NrZXI8V2hhdGV2ZXI+
IGxvY2tlcihMb2NrZXI8V2hhdGV2ZXI+OjpOb0xvY2tpbmdOZWNlc3NhcnkpCisgICAgICAgICAg
ICBzdHVmZi0+Zm9vKGxvY2tlcik7CisgICAgICAgIAorICAgICAgICBVc3VhbGx5IHRob3VnaCwg
dGhlcmUgd291bGQgYmUgc29tZSBkaXN0YW5jZSBiZXR3ZWVuIHdoZXJlIHRoZSBsb2NrZXIgaXMg
ZGVmaW5lZCBhbmQgd2hlcmUKKyAgICAgICAgaXQncyB1c2VkLCBzbyB3aGVuIHlvdSBqdXN0IGxv
b2sgYXQgc3R1ZmYtPmZvbyhsb2NrZXIpIGluIGlzb2xhdGlvbiB5b3UgZG9uJ3Qga25vdyBpZiB0
aGlzCisgICAgICAgIGlzIGEgcmVhbCBsb2NrZXIgb3IgYSBOb0xvY2tpbmdOZWNlc3NhcnkgY2Fz
dC4gQWxzbywgcmVxdWlyaW5nIHR3byBsaW5lcyBmb3IgdGhpcyBqdXN0CisgICAgICAgIGFkZHMg
Y29kZS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2VzIHRoaXMgZWFzaWVyLiBO
b3cgeW91IGNhbiBqdXN0IGRvOgorICAgICAgICAKKyAgICAgICAgICAgIHN0dWZmLT5mb28oTm9M
b2NraW5nTmVjZXNzYXJ5KS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBOb0xv
Y2tpbmdOZWNlc3NhcnkgaGFzIGJlZW4gcHVsbGVkIG91dCBpbnRvIHRoZSBXVEYgbmFtZXNwYWNl
IChhbmQgaXMKKyAgICAgICAgdXNpbmdlZCBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlKSBhbmQg
dGhlIExvY2tlcjw+IGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMKKyAgICAgICAgTm9Mb2NraW5nTmVj
ZXNzYXJ5VGFnIGlzIG5vdyBpbXBsaWNpdC4KKyAgICAgICAgCisgICAgICAgIFRoZSBvbmx5IHBv
c3NpYmxlIGRvd25zaWRlIG9mIHRoaXMgY2hhbmdlIGlzIHRoYXQgcGVvcGxlIG1pZ2h0IHVzZSB0
aGlzIGlkaW9tIG1vcmUKKyAgICAgICAgZnJlcXVlbnRseSBub3cgdGhhdCBpdCdzIGVhc2llciB0
byB1c2UuIEkgZG9uJ3QgdGhpbmsgdGhhdCdzIGEgYmFkIHRoaW5nLiBJJ20gbm93CisgICAgICAg
IGNvbnZpbmNlZCB0aGF0IHRoaXMgaXMgbm90IGEgYmFkIGlkaW9tLiBXaGVuIEkgd2FzIGZpeGlu
ZyBhbiB1bnJlbGF0ZWQgYnVnLCBJIGFsbW9zdCB3ZW50CisgICAgICAgIHRoZSB3YXkgb2YgYWRk
aW5nIG1vcmUgbG9ja2luZyB0byBzb21lIGNvcmUgSlNDIGRhdGEgc3RydWN0dXJlcywgYW5kIGlu
IHRoZSBwcm9jZXNzLCBJCisgICAgICAgIG5lZWRlZCB0byB1c2UgTm9Mb2NraW5nTmVjZXNzYXJ5
LiBJdCdzIGNsZWFyIHRoYXQgdGhpcyBpcyBhIGdlbmVyYWwtcHVycG9zZSBpZGlvbSBhbmQgd2UK
KyAgICAgICAgc2hvdWxkIG5vdCBpbXBvc2UgYXJ0aWZpY2lhbCBjb25zdHJhaW50cyBvbiBpdHMg
dXNlLgorCisgICAgICAgICogd3RmL0xvY2tlci5oOgorICAgICAgICAoV1RGOjpMb2NrZXI6Okxv
Y2tlcik6CisgICAgICAgIChXVEY6OkxvY2tlcjo6fkxvY2tlcik6CisKIDIwMTYtMDYtMDEgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU29t
ZSBzZXR0ZXJzIGZvciBjb21wb25lbnRzIG9mIERhdGUgZG8gbm90IHRpbWVDbGlwKCkgdGhlaXIg
cmVzdWx0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Mb2NrZXIuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dURi93dGYv
TG9ja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDE5ICszMiwyMCBAQAogCiBu
YW1lc3BhY2UgV1RGIHsKIAorZW51bSBOb0xvY2tpbmdOZWNlc3NhcnlUYWcgeyBOb0xvY2tpbmdO
ZWNlc3NhcnkgfTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIExvY2tlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTG9ja2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMb2Nr
ZXIoVCYgbG9ja2FibGUpIDogbV9sb2NrYWJsZSgmbG9ja2FibGUpIHsgbG9jaygpOyB9CiAgICAg
ZXhwbGljaXQgTG9ja2VyKFQqIGxvY2thYmxlKSA6IG1fbG9ja2FibGUobG9ja2FibGUpIHsgbG9j
aygpOyB9CiAKLSAgICBlbnVtIE5vTG9ja2luZ05lY2Vzc2FyeVRhZyB7IE5vTG9ja2luZ05lY2Vz
c2FyeSB9OwogICAgIC8vIFlvdSBzaG91bGQgYmUgd2FyeSBvZiB1c2luZyB0aGlzIGNvbnN0cnVj
dG9yLiBJdCdzIG9ubHkgYXBwbGljYWJsZQogICAgIC8vIGluIHBsYWNlcyB3aGVyZSB0aGVyZSBp
cyBhIGxvY2tpbmcgcHJvdG9jb2wgZm9yIGEgcGFydGljdWxhciBvYmplY3QKICAgICAvLyBidXQg
aXQncyBub3QgbmVjZXNzYXJ5IHRvIGVuZ2FnZSBpbiB0aGF0IHByb3RvY29sIHlldC4gRm9yIGV4
YW1wbGUsCiAgICAgLy8gdGhpcyBvZnRlbiBoYXBwZW5zIHdoZW4gYW4gb2JqZWN0IGlzIG5ld2x5
IGFsbG9jYXRlZCBhbmQgaXQgY2FuIG5vdAogICAgIC8vIGJlIGFjY2Vzc2VkIGNvbmN1cnJlbnRs
eS4KLSAgICBleHBsaWNpdCBMb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5VGFnKSA6IG1fbG9ja2Fi
bGUobnVsbHB0cikgeyB9CisgICAgTG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgOiBtX2xv
Y2thYmxlKG51bGxwdHIpIHsgfQogCiAgICAgfkxvY2tlcigpCiAgICAgewpAQCAtNzAsNSArNzEs
NyBAQCBwcml2YXRlOgogfQogCiB1c2luZyBXVEY6OkxvY2tlcjsKK3VzaW5nIFdURjo6Tm9Mb2Nr
aW5nTmVjZXNzYXJ5VGFnOwordXNpbmcgV1RGOjpOb0xvY2tpbmdOZWNlc3Nhcnk7CiAKICNlbmRp
Zgo=
</data>
<flag name="review"
          id="304302"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>