<?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>109608</bug_id>
          
          <creation_ts>2013-02-12 13:16:05 -0800</creation_ts>
          <short_desc>[BlackBerry] Eliminate the direct rendering option</short_desc>
          <delta_ts>2013-02-12 15:10:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Jakob Petsovits">jpetsovits</assigned_to>
          <cc>mifenton</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>831187</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-12 13:16:05 -0800</bug_when>
    <thetext>Direct rendering adds a lot of complexity and we&apos;re not going to use it anymore, ever. Death to blitting on the WebKit thread!

The patch below removes all traces of it from WebKit/blackberry. Also tracked as internal PR 293298.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831190</commentid>
    <comment_count>1</comment_count>
      <attachid>187918</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-12 13:19:32 -0800</bug_when>
    <thetext>Created attachment 187918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831217</commentid>
    <comment_count>2</comment_count>
      <attachid>187918</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-02-12 13:46:09 -0800</bug_when>
    <thetext>Comment on attachment 187918
Patch

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

&gt; Source/WebKit/blackberry/ChangeLog:11
&gt; +        anymore, ever. Death to blitting on the WebKit thread!

Please make a factual commit message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831225</commentid>
    <comment_count>3</comment_count>
      <attachid>187926</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-12 13:53:33 -0800</bug_when>
    <thetext>Created attachment 187926
Patch with more boring commit message

Something more like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831234</commentid>
    <comment_count>4</comment_count>
      <attachid>187926</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-02-12 14:05:09 -0800</bug_when>
    <thetext>Comment on attachment 187926
Patch with more boring commit message

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831311</commentid>
    <comment_count>5</comment_count>
      <attachid>187926</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 15:10:49 -0800</bug_when>
    <thetext>Comment on attachment 187926
Patch with more boring commit message

Clearing flags on attachment: 187926

Committed r142677: &lt;http://trac.webkit.org/changeset/142677&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831312</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 15:10:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187918</attachid>
            <date>2013-02-12 13:19:32 -0800</date>
            <delta_ts>2013-02-12 13:53:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109608-20130212161543.patch</filename>
            <type>text/plain</type>
            <size>43763</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA1ZDEwMjMwOWQ5M2FmZDYyYjEyMzRkM2Y5ZmQyZmM3YTFjNzk0Yjk3Li4wM2FiN2Q0YWU2
MTZhMDZhNDQzY2YwY2U0NTAxMzMyMzZhYjRlMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMy0wMi0xMiAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBFbGltaW5hdGUgdGhlIGRp
cmVjdCByZW5kZXJpbmcgb3B0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5NjA4CisgICAgICAgIFJJTSBQUiAyOTMyOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBi
eSBBcnZpZCBOaWxzc29uLgorCisgICAgICAgIEl0IGFkZGVkIGEgbG90IG9mIGNvbXBsZXhpdHkg
YW5kIHdlJ3JlIG5vdCBnb2luZyB0byB1c2UgaXQKKyAgICAgICAgYW55bW9yZSwgZXZlci4gRGVh
dGggdG8gYmxpdHRpbmcgb24gdGhlIFdlYktpdCB0aHJlYWQhCisKKyAgICAgICAgKiBBcGkvQmFj
a2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3Jl
UHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZVNjcmVlblVwZGF0ZXMpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVTdXNwZW5kU2Ny
ZWVuVXBkYXRlU3RhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3Rv
cmVQcml2YXRlOjpzbG93U2Nyb2xsKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFj
a2luZ1N0b3JlUHJpdmF0ZTo6c2Nyb2xsKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2hvdWxkUGVyZm9ybVJlbmRlckpvYnMpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXIpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJBbmRCbGl0
SW1tZWRpYXRlbHkpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQ
cml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFRvV2luZG93KToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6ZmlsbFdpbmRvdyk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmludmFsaWRhdGVXaW5kb3cp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpjbGVh
cldpbmRvdyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OnNldFNjcm9sbGluZ09yWm9vbWluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkJhY2tpbmdTdG9yZVByaXZhdGU6OmRpZFJlbmRlckNvbnRlbnQpOgorICAgICAgICAqIEFwaS9C
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlX3AuaDoKKyAgICAgICAg
KEJhY2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnJlc3VtZUJhY2tpbmdTdG9y
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRWaWV3
cG9ydFNpemUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
cm9vdExheWVyQ29tbWl0VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2NoZWR1bGVDb21wb3NpdGluZ1J1
bik6CisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphbmltYXRpb25GcmFtZUNo
YW5nZWQpOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYlBhZ2VQcml2
YXRlKToKKyAgICAgICAgKiBBcGkvV2ViU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBBcGkvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1Jl
bmRlclF1ZXVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6
OnJlbmRlclJlZ3VsYXJSZW5kZXJKb2JzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
UmVuZGVyUXVldWU6OnJlbmRlclNjcm9sbFpvb21Kb2JzKToKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L1N1cmZhY2VQb29sLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3VyZmFj
ZVBvb2w6OmluaXRpYWxpemUpOgorCiAyMDEzLTAyLTEyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1hIUl9SRVNQT05TRV9CTE9C
IGhhbmRsaW5nIGZyb20gdmFyaW91cyBidWlsZCBzeXN0ZW1zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggMzJjYTExZGM3Yjc2MzVjNDdjNjhm
ZWFhYmM0MTYwM2YyNjhmNzc3OC4uZDk2ZjkzMTQ3MDNlZTJhZDIyZGRhZmM3YjI3ZDk0ZTA4YTM0
ODY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNw
cApAQCAtMjE4LDExICsyMTgsNyBAQCBCYWNraW5nU3RvcmVQcml2YXRlOjpCYWNraW5nU3RvcmVQ
cml2YXRlKCkKICAgICAsIG1fcmVuZGVyUXVldWUoYWRvcHRQdHIobmV3IFJlbmRlclF1ZXVlKHRo
aXMpKSkKICAgICAsIG1faGFzQmxpdEpvYnMoZmFsc2UpCiAgICAgLCBtX3dlYlBhZ2VCYWNrZ3Jv
dW5kQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKQotICAgICwgbV9jdXJyZW50V2luZG93QmFj
a0J1ZmZlcigwKQogICAgICwgbV9wcmVmZXJyZWRUaWxlTWF0cml4RGltZW5zaW9uKFZlcnRpY2Fs
KQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAsIG1faXNEaXJlY3RSZW5k
ZXJpbmdBbmltYXRpb25NZXNzYWdlU2NoZWR1bGVkKGZhbHNlKQotI2VuZGlmCiB7CiAgICAgbV9m
cm9udFN0YXRlID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obmV3IEJhY2tpbmdTdG9yZUdl
b21ldHJ5KTsKIApAQCAtMjUzLDI5ICsyNDksNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
Omluc3RydW1lbnRDYW5jZWxGcmFtZSgpCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDYW5jZWxGcmFtZShXZWJQYWdlUHJpdmF0ZTo6Y29yZShtX3dlYlBhZ2UpKTsK
IH0KIAotYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dp
bmRvdygpIGNvbnN0Ci17Ci0gICAgLy8gRGlyZWN0IHJlbmRlcmluZyBkb2Vzbid0IHdvcmsgd2l0
aCBPcGVuR0wgY29tcG9zaXRpbmcgY29kZSBwYXRocyBkdWUgdG8KLSAgICAvLyBhIHJhY2UgY29u
ZGl0aW9uIG9uIHdoaWNoIHRocmVhZCdzIEVHTCBjb250ZXh0IGdldHMgdG8gbWFrZSB0aGUgc3Vy
ZmFjZQotICAgIC8vIGN1cnJlbnQsIHNlZSBQUiAxMDU3NTAuCi0gICAgLy8gQXMgYSB3b3JrYXJv
dW5kLCB3ZSB3aWxsIGJlIHVzaW5nIGNvbXBvc2l0b3IgdG8gZHJhdyB0aGUgcm9vdCBsYXllci4K
LSAgICBpZiAoaXNPcGVuR0xDb21wb3NpdGluZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAobV93ZWJQYWdlLT5zZXR0aW5ncygpLT5pc0RpcmVjdFJlbmRlcmluZ1RvV2luZG93
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIElmIHRoZSBCYWNraW5n
U3RvcmUgaXMgaW5hY3RpdmUsIHNlZSBpZiB0aGVyZSdzIGEgY29tcG9zaXRvciB0byBkbyB0aGUK
LSAgICAvLyB3b3JrIG9mIHJlbmRlcmluZyB0aGUgcm9vdCBsYXllci4KLSAgICBpZiAoIWlzQWN0
aXZlKCkpCi0gICAgICAgIHJldHVybiAhbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yRHJhd3NSb290
TGF5ZXIoKTsKLQotICAgIGNvbnN0IEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBnZW9tZXRyeSA9IGZy
b250U3RhdGUoKTsKLSAgICBjb25zdCB1bnNpZ25lZCB0aWxlc05lY2Vzc2FyeSA9IG1pbmltdW1O
dW1iZXJPZlRpbGVzV2lkZSgpICogbWluaW11bU51bWJlck9mVGlsZXNIaWdoKCk7Ci0gICAgY29u
c3QgdW5zaWduZWQgdGlsZXNBdmFpbGFibGUgPSBnZW9tZXRyeS0+bnVtYmVyT2ZUaWxlc1dpZGUo
KSAqIGdlb21ldHJ5LT5udW1iZXJPZlRpbGVzSGlnaCgpOwotICAgIHJldHVybiB0aWxlc0F2YWls
YWJsZSA8IHRpbGVzTmVjZXNzYXJ5OwotfQotCiBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6Omlz
T3BlbkdMQ29tcG9zaXRpbmcoKSBjb25zdAogewogICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9IG1f
d2ViUGFnZS0+Y2xpZW50KCktPndpbmRvdygpKQpAQCAtMzgwLDI3ICszNTMsMTggQEAgdm9pZCBC
YWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3JlZW5VcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVz
dW1lVXBkYXRlT3BlcmF0aW8KICAgICB9CiAjZW5kaWYKIAotICAgIC8vIEZvciB0aGUgZGlyZWN0
IHJlbmRlcmluZyBjYXNlLCB0aGVyZSBpcyBubyBzdWNoIG9wZXJhdGlvbiBhcyBibGl0LAotICAg
IC8vIHdlIGhhdmUgdG8gcmVuZGVyIHRvIGdldCBhbnl0aGluZyB0byB0aGUgc2NyZWVuLgotICAg
IGlmIChzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpICYmIG9wID09IEJhY2tpbmdTdG9y
ZTo6QmxpdCkKLSAgICAgICAgb3AgPSBCYWNraW5nU3RvcmU6OlJlbmRlckFuZEJsaXQ7Ci0KICAg
ICAvLyBSZW5kZXIgdmlzaWJsZSBjb250ZW50cyBpZiBuZWNlc3NhcnkuCiAgICAgaWYgKG9wID09
IEJhY2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdCkgewotICAgICAgICBpZiAoc2hvdWxkRGlyZWN0
UmVuZGVyaW5nVG9XaW5kb3coKSkKLSAgICAgICAgICAgIHJlbmRlckRpcmVjdFRvV2luZG93KHZp
c2libGVDb250ZW50c1JlY3QoKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdXBkYXRl
VGlsZU1hdHJpeElmTmVlZGVkKCk7Ci0gICAgICAgICAgICBUaWxlSW5kZXhMaXN0IHZpc2libGVU
aWxlcyA9IHZpc2libGVUaWxlSW5kZXhlcyhmcm9udFN0YXRlKCkpOwotICAgICAgICAgICAgVGls
ZUluZGV4TGlzdCByZW5kZXJlZFRpbGVzID0gcmVuZGVyKHZpc2libGVUaWxlcyk7Ci0KLSAgICAg
ICAgICAgIGlmIChyZW5kZXJlZFRpbGVzLnNpemUoKSAhPSB2aXNpYmxlVGlsZXMuc2l6ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgLy8gQWRkIHVucmVuZGVyZWQgbGVmdG92ZXIgdGlsZXMgdG8gdGhl
IHJlbmRlciBxdWV1ZS4KLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dmlzaWJsZVRpbGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmVu
ZGVyZWRUaWxlcy5jb250YWlucyh2aXNpYmxlVGlsZXNbaV0pKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCB0aWxlUmVjdChmcm9udFN0YXRlKCktPm9yaWdpbk9m
VGlsZSh2aXNpYmxlVGlsZXNbaV0pLCB0aWxlU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcmVuZGVyUXVldWUtPmFkZFRvUXVldWUoUmVuZGVyUXVldWU6OlZpc2libGVab29tLCB0
aWxlUmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgdXBkYXRlVGlsZU1hdHJp
eElmTmVlZGVkKCk7CisgICAgICAgIFRpbGVJbmRleExpc3QgdmlzaWJsZVRpbGVzID0gdmlzaWJs
ZVRpbGVJbmRleGVzKGZyb250U3RhdGUoKSk7CisgICAgICAgIFRpbGVJbmRleExpc3QgcmVuZGVy
ZWRUaWxlcyA9IHJlbmRlcih2aXNpYmxlVGlsZXMpOworCisgICAgICAgIGlmIChyZW5kZXJlZFRp
bGVzLnNpemUoKSAhPSB2aXNpYmxlVGlsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAvLyBBZGQg
dW5yZW5kZXJlZCBsZWZ0b3ZlciB0aWxlcyB0byB0aGUgcmVuZGVyIHF1ZXVlLgorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpc2libGVUaWxlcy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgICAgIGlmICghcmVuZGVyZWRUaWxlcy5jb250YWlucyh2aXNpYmxlVGlsZXNb
aV0pKSB7CisgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IHRpbGVSZWN0KGZy
b250U3RhdGUoKS0+b3JpZ2luT2ZUaWxlKHZpc2libGVUaWxlc1tpXSksIHRpbGVTaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBtX3JlbmRlclF1ZXVlLT5hZGRUb1F1ZXVlKFJlbmRlclF1ZXVl
OjpWaXNpYmxlWm9vbSwgdGlsZVJlY3QpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtNDIzLDcgKzM4Nyw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6cmVzdW1lU2NyZWVuVXBkYXRlcyhCYWNraW5nU3RvcmU6OlJlc3VtZVVwZGF0ZU9wZXJhdGlv
CiAgICAgbV93ZWJQYWdlLT5kLT5jb21taXRSb290TGF5ZXJJZk5lZWRlZCgpOwogI2Vsc2UKICAg
ICAvLyBEbyBzb21lIGJsaXR0aW5nIGlmIG5lY2Vzc2FyeS4KLSAgICBpZiAoKG9wID09IEJhY2tp
bmdTdG9yZTo6QmxpdCB8fCBvcCA9PSBCYWNraW5nU3RvcmU6OlJlbmRlckFuZEJsaXQpICYmICFz
aG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQorICAgIGlmIChvcCA9PSBCYWNraW5nU3Rv
cmU6OkJsaXQgfHwgb3AgPT0gQmFja2luZ1N0b3JlOjpSZW5kZXJBbmRCbGl0KQogICAgICAgICBi
bGl0VmlzaWJsZUNvbnRlbnRzKCk7CiAjZW5kaWYKIH0KQEAgLTQzNyw3ICs0MDEsNyBAQCB2b2lk
IEJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVN1c3BlbmRTY3JlZW5VcGRhdGVTdGF0ZSgpCiAK
ICAgICBib29sIHNob3VsZFN1c3BlbmQgPSBtX3N1c3BlbmRTY3JlZW5VcGRhdGVDb3VudGVyV2Vi
S2l0VGhyZWFkCiAgICAgICAgIHx8ICFtX3dlYlBhZ2UtPmlzVmlzaWJsZSgpCi0gICAgICAgIHx8
ICghaXNCYWNraW5nU3RvcmVVc2FibGUgJiYgIW1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvckRyYXdz
Um9vdExheWVyKCkgJiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpOworICAgICAg
ICB8fCAoIWlzQmFja2luZ1N0b3JlVXNhYmxlICYmICFtX3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3JE
cmF3c1Jvb3RMYXllcigpKTsKIAogICAgIGlmIChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzV2ViS2l0
VGhyZWFkID09IHNob3VsZFN1c3BlbmQpCiAgICAgICAgIHJldHVybjsKQEAgLTUwNiw5ICs0NzAs
OSBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNsb3dTY3JvbGwoY29uc3QgUGxhdGZvcm06
OkludFNpemUmIGRlbHRhLCBjb25zdCBQbGF0ZgogICAgICAgICByZW5kZXJBbmRCbGl0SW1tZWRp
YXRlbHkocmVjdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fcmVuZGVyUXVldWUtPmFkZFRvUXVl
dWUoUmVuZGVyUXVldWU6OlZpc2libGVTY3JvbGwsIHJlY3QpOwotICAgICAgICAvLyBXZSBvbmx5
IGJsaXQgaGVyZSBpZiB0aGUgY2xpZW50IGRpZCBub3QgZ2VuZXJhdGUgdGhlIHNjcm9sbCBhcyB0
aGUgY2xpZW50Ci0gICAgICAgIC8vIG5vdyBzdXBwb3J0cyBibGl0dGluZyBhc3luY2hyb25vdXNs
eSBkdXJpbmcgc2Nyb2xsIG9wZXJhdGlvbnMuCi0gICAgICAgIGlmICghbV9jbGllbnQtPmlzQ2xp
ZW50R2VuZXJhdGVkU2Nyb2xsKCkgJiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkp
CisgICAgICAgIC8vIFdlIG9ubHkgYmxpdCBoZXJlIGlmIHRoZSBjbGllbnQgZGlkIG5vdCBnZW5l
cmF0ZSB0aGUgc2Nyb2xsIGFzIHRoZQorICAgICAgICAvLyBjbGllbnQgc3VwcG9ydHMgYmxpdHRp
bmcgYXN5bmNocm9ub3VzbHkgZHVyaW5nIHNjcm9sbCBvcGVyYXRpb25zLgorICAgICAgICBpZiAo
IW1fY2xpZW50LT5pc0NsaWVudEdlbmVyYXRlZFNjcm9sbCgpKQogICAgICAgICAgICAgYmxpdFZp
c2libGVDb250ZW50cygpOwogICAgIH0KIApAQCAtNTI1LDE0ICs0ODksNiBAQCB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnNjcm9sbChjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgZGVsdGEsCiB7
CiAgICAgQVNTRVJUKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xp
ZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKIAotICAgIC8vIElmIHdlIGFyZSBkaXJlY3QgcmVu
ZGVyaW5nIHRoZW4gd2UgYXJlIGZvcmNlZCB0byBnbyBkb3duIHRoZSBzbG93IHBhdGgKLSAgICAv
LyB0byBzY3JvbGxpbmcuCi0gICAgaWYgKHNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkp
IHsKLSAgICAgICAgUGxhdGZvcm06OkludFJlY3Qgdmlld3BvcnRSZWN0KFBsYXRmb3JtOjpJbnRQ
b2ludCgwLCAwKSwgbV93ZWJQYWdlLT5kLT50cmFuc2Zvcm1lZFZpZXdwb3J0U2l6ZSgpKTsKLSAg
ICAgICAgc2xvd1Njcm9sbChkZWx0YSwgbV93ZWJQYWdlLT5kLT5tYXBGcm9tVHJhbnNmb3JtZWQo
dmlld3BvcnRSZWN0KSwgdHJ1ZSAvKmltbWVkaWF0ZSovKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogI2lmIERFQlVHX0JBQ0tJTkdTVE9SRQogICAgIC8vIFN0YXJ0IHRoZSB0aW1lIG1lYXN1
cmVtZW50Li4uCiAgICAgZG91YmxlIHRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CkBAIC01Nzks
NyArNTM1LDcgQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpzaG91bGRTdXBwcmVzc05vblZp
c2libGVSZWd1bGFyUmVuZGVySm9icygpIGNvbnN0CiAKIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6c2hvdWxkUGVyZm9ybVJlbmRlckpvYnMoKSBjb25zdAogewotICAgIHJldHVybiAoaXNBY3Rp
dmUoKSB8fCBzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKSAmJiAhbV9zdXNwZW5kUmVu
ZGVySm9icyAmJiAhbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcyAmJiAhbV9yZW5kZXJRdWV1
ZS0+aXNFbXB0eSghbV9zdXNwZW5kUmVndWxhclJlbmRlckpvYnMpOworICAgIHJldHVybiBpc0Fj
dGl2ZSgpICYmICFtX3N1c3BlbmRSZW5kZXJKb2JzICYmICFtX3N1c3BlbmRCYWNraW5nU3RvcmVV
cGRhdGVzICYmICFtX3JlbmRlclF1ZXVlLT5pc0VtcHR5KCFtX3N1c3BlbmRSZWd1bGFyUmVuZGVy
Sm9icyk7CiB9CiAKIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2hvdWxkUGVyZm9ybVJlZ3Vs
YXJSZW5kZXJKb2JzKCkgY29uc3QKQEAgLTEwMTUsNDMgKzk3MSw2IEBAIHZvaWQgQmFja2luZ1N0
b3JlUHJpdmF0ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKGludCBkZWx0YVgsIGludCBkZWx0YVkpCiAg
ICAgc2V0QmFja2luZ1N0b3JlUmVjdChiYWNraW5nU3RvcmVSZWN0LCBtX3dlYlBhZ2UtPmQtPmN1
cnJlbnRTY2FsZSgpKTsKIH0KIAotUGxhdGZvcm06OkludFJlY3QgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6cmVuZGVyRGlyZWN0VG9XaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCi17
Ci0gICAgcmVxdWVzdExheW91dElmTmVlZGVkKCk7Ci0KLSAgICBQbGF0Zm9ybTo6SW50UmVjdCBk
aXJ0eVJlY3QgPSByZWN0OwotICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QodW5jbGlwcGVkVmlzaWJs
ZUNvbnRlbnRzUmVjdCgpKTsKLQotICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gUGxhdGZvcm06OkludFJlY3QoKTsKLQotICAgIFBsYXRmb3JtOjpWaWV3cG9ydEFj
Y2Vzc29yKiB2aWV3cG9ydEFjY2Vzc29yID0gbV93ZWJQYWdlLT53ZWJraXRUaHJlYWRWaWV3cG9y
dEFjY2Vzc29yKCk7Ci0gICAgUGxhdGZvcm06OkludFJlY3Qgc2NyZWVuUmVjdCA9IHZpZXdwb3J0
QWNjZXNzb3ItPnBpeGVsVmlld3BvcnRGcm9tQ29udGVudHMoZGlydHlSZWN0KTsKLSAgICB3aW5k
b3dGcm9udEJ1ZmZlclN0YXRlKCktPmNsZWFyQmxpdHRlZFJlZ2lvbihzY3JlZW5SZWN0KTsKLQot
ICAgIHBhaW50RGVmYXVsdEJhY2tncm91bmQoZGlydHlSZWN0LCB2aWV3cG9ydEFjY2Vzc29yLCB0
cnVlIC8qZmx1c2gqLyk7Ci0KLSAgICBpZiAoIXJlbmRlckNvbnRlbnRzKGJ1ZmZlcigpLCBzY3Jl
ZW5SZWN0LCB2aWV3cG9ydEFjY2Vzc29yLT5zY2FsZSgpLCB2aWV3cG9ydEFjY2Vzc29yLT5kb2N1
bWVudEZyb21QaXhlbENvbnRlbnRzKGRpcnR5UmVjdC5sb2NhdGlvbigpKSkpCi0gICAgICAgIHJl
dHVybiBQbGF0Zm9ybTo6SW50UmVjdCgpOwotCi0gICAgd2luZG93QmFja0J1ZmZlclN0YXRlKCkt
PmFkZEJsaXR0ZWRSZWdpb24oc2NyZWVuUmVjdCk7Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgbV9pc0RpcmVjdFJlbmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVs
ZWQgPSBmYWxzZTsKLQotICAgIGlmIChtX3dlYlBhZ2UtPmQtPmlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSgpKSB7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJm
YWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaFN5bmNNZXNzYWdlKAotICAgICAgICAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAotICAgICAg
ICAgICAgICAgICZCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJl
Y3RSZW5kZXJpbmcsCi0gICAgICAgICAgICAgICAgdGhpcywgZGlydHlSZWN0KSk7Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBpbnZhbGlkYXRlV2luZG93KHNjcmVlblJlY3QpOwotICAgIG1fcmVuZGVy
UXVldWUtPmNsZWFyKHJlY3QsIFJlbmRlclF1ZXVlOjpEb250Q2xlYXJDb21wbGV0ZWRKb2JzKTsK
LSAgICByZXR1cm4gZGlydHlSZWN0OwotfQotCiBUaWxlSW5kZXhMaXN0IEJhY2tpbmdTdG9yZVBy
aXZhdGU6OnJlbmRlcihjb25zdCBUaWxlSW5kZXhMaXN0JiB0aWxlSW5kZXhMaXN0KQogewogICAg
IGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSkKQEAgLTEwNTksMTUgKzk3OCw3IEBAIFRpbGVJ
bmRleExpc3QgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyKGNvbnN0IFRpbGVJbmRleExpc3Qm
IHRpbGVJbmRleExpc3QpCiAKICAgICByZXF1ZXN0TGF5b3V0SWZOZWVkZWQoKTsKIAotICAgIGlm
IChzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKSB7Ci0gICAgICAgIC8vIFdlIGNhbm5v
dCBoYW5kbGUgdGlsZXMgaW4gZGlyZWN0IHJlbmRlcmluZyBtb2RlLiBCYWQgZnVuY3Rpb24gY2Fs
bC4KLSAgICAgICAgQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIFRpbGVJbmRleExpc3Qo
KTsKLSAgICB9Ci0KLSAgICAvLyBJZiBkaXJlY3QgcmVuZGVyaW5nIGlzIG9mZiwgZXZlbiB0aG91
Z2ggd2UncmUgbm90IGFjdGl2ZSwgc29tZW9uZSBlbHNlCi0gICAgLy8gaGFzIHRvIHJlbmRlciB0
aGUgcm9vdCBsYXllci4gVGhlcmUgYXJlIG5vIHRpbGVzIGF2YWlsYWJsZSBmb3IgdXMgdG8KLSAg
ICAvLyBkcmF3IHRvLgorICAgIC8vIElmIG5vIHRpbGVzIGF2YWlsYWJsZSBmb3IgdXMgdG8gZHJh
dyB0bywgc29tZW9uZSBlbHNlIGhhcyB0byByZW5kZXIgdGhlIHJvb3QgbGF5ZXIuCiAgICAgaWYg
KCFpc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gVGlsZUluZGV4TGlzdCgpOwogCkBAIC0xMTk5
LDI5ICsxMTEwLDExIEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQW5kQmxpdFZp
c2libGVDb250ZW50c0ltbWVkaWF0ZWx5KCkKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpy
ZW5kZXJBbmRCbGl0SW1tZWRpYXRlbHkoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiB7
Ci0gICAgaWYgKHNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsKLSAgICAgICAgcmVu
ZGVyRGlyZWN0VG9XaW5kb3cocmVjdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB1
cGRhdGVUaWxlTWF0cml4SWZOZWVkZWQoKTsKICAgICBtX3JlbmRlclF1ZXVlLT5hZGRUb1F1ZXVl
KFJlbmRlclF1ZXVlOjpWaXNpYmxlWm9vbSwgcmVjdCk7CiAgICAgcmVuZGVySm9iKCk7CiB9CiAK
LXZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Y29weVByZXZpb3VzQ29udGVudHNUb0JhY2tTdXJm
YWNlT2ZXaW5kb3coKQotewotICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIHByZXZpb3VzQ29u
dGVudHNSZWdpb24KLSAgICAgICAgPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RS
ZWdpb25zKHdpbmRvd0Zyb250QnVmZmVyU3RhdGUoKS0+YmxpdHRlZFJlZ2lvbigpLCB3aW5kb3dC
YWNrQnVmZmVyU3RhdGUoKS0+YmxpdHRlZFJlZ2lvbigpKTsKLQotICAgIGlmIChwcmV2aW91c0Nv
bnRlbnRzUmVnaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFdpbmRv
dyogd2luZG93ID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCkpCi0gICAgICAgIHdpbmRv
dy0+Y29weUZyb21Gcm9udFRvQmFjayhwcmV2aW91c0NvbnRlbnRzUmVnaW9uKTsKLSAgICB3aW5k
b3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRkQmxpdHRlZFJlZ2lvbihwcmV2aW91c0NvbnRlbnRzUmVn
aW9uKTsKLX0KLQogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRCYWNrZ3Jv
dW5kKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBQbGF0Zm9ybTo6Vmlld3BvcnRB
Y2Nlc3Nvciogdmlld3BvcnRBY2Nlc3NvciwgYm9vbCBmbHVzaCkKIHsKICAgICBQbGF0Zm9ybTo6
SW50UmVjdCBjbGlwcGVkRHN0UmVjdCA9IGRzdFJlY3Q7CkBAIC0xMjU2LDE1ICsxMTQ5LDYgQEAg
dm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnN0IFBs
YXRmb3JtOjpJbnRSZWN0JiBkc3RSZWMKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0
VmlzaWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiB7Ci0gICAgLy8gQmxpdHRpbmcgbXVzdCBuZXZl
ciBoYXBwZW4gZm9yIGRpcmVjdCByZW5kZXJpbmcgY2FzZS4KLSAgICAvLyBVc2UgaW52YWxpZGF0
ZVdpbmRvdygpIGluc3RlYWQuCi0gICAgQVNTRVJUKCFzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dp
bmRvdygpKTsKLSAgICBpZiAoc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAg
ICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAotICAg
ICAgICAgICAgIkJhY2tpbmdTdG9yZTo6YmxpdFZpc2libGVDb250ZW50cyBvcGVyYXRpb24gbm90
IHN1cHBvcnRlZCBpbiBkaXJlY3QgcmVuZGVyaW5nIG1vZGUiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJl
YWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7CiAgICAgICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRj
aE1lc3NhZ2UoCiAgICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9k
Q2FsbE1lc3NhZ2UoCkBAIC0yMDUzLDkgKzE5MzcsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZh
dGU6OmJsaXRUb1dpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKIHsKICAg
ICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdl
Q2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKIAotICAgIHdpbmRvd0Zyb250QnVmZmVyU3Rh
dGUoKS0+Y2xlYXJCbGl0dGVkUmVnaW9uKGRzdFJlY3QpOwotICAgIHdpbmRvd0JhY2tCdWZmZXJT
dGF0ZSgpLT5hZGRCbGl0dGVkUmVnaW9uKGRzdFJlY3QpOwotCiAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1ZmZlcigpOwogICAgIEFTU0VS
VChkc3RCdWZmZXIpOwogICAgIEFTU0VSVChzcmNCdWZmZXIpOwpAQCAtMjA3OSw5ICsxOTYwLDYg
QEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpmaWxsV2luZG93KFBsYXRmb3JtOjpHcmFwaGlj
czo6RmlsbFBhdHRlcm4gcGF0dGVybiwKIHsKICAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgp
KTsKIAotICAgIHdpbmRvd0Zyb250QnVmZmVyU3RhdGUoKS0+Y2xlYXJCbGl0dGVkUmVnaW9uKGRz
dFJlY3QpOwotICAgIHdpbmRvd0JhY2tCdWZmZXJTdGF0ZSgpLT5hZGRCbGl0dGVkUmVnaW9uKGRz
dFJlY3QpOwotCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRz
dEJ1ZmZlciA9IGJ1ZmZlcigpOwogICAgIEFTU0VSVChkc3RCdWZmZXIpOwogICAgIGlmICghZHN0
QnVmZmVyKQpAQCAtMjExOSwzMCArMTk5NywxMiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnNldFdlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQog
ICAgIG1fd2ViUGFnZUJhY2tncm91bmRDb2xvciA9IGNvbG9yOwogfQogCi12b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OmludmFsaWRhdGVXaW5kb3coKQotewotICAgIC8vIEdyYWIgYSByZWN0IGFw
cHJvcHJpYXRlIGZvciB0aGUgY3VycmVudCB0aHJlYWQuCi0gICAgaWYgKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJl
YWQoKSkgewotICAgICAgICBpZiAobV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZVZp
ZXdwb3J0QWNjZXNzb3IoKSkKLSAgICAgICAgICAgIGludmFsaWRhdGVXaW5kb3cobV93ZWJQYWdl
LT5jbGllbnQoKS0+dXNlckludGVyZmFjZVZpZXdwb3J0QWNjZXNzb3IoKS0+ZGVzdGluYXRpb25T
dXJmYWNlUmVjdCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhQbGF0
Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIG1fY2xpZW50LT50cmFuc2Zv
cm1lZFZpZXdwb3J0U2l6ZSgpKSk7Ci19Ci0KIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aW52
YWxpZGF0ZVdpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0KQogewotICAgIGlmIChk
c3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJl
YWQoKSk7CiAKLSAgICBpZiAoIUJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhy
ZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSAmJiAhc2hvdWxkRGlyZWN0UmVu
ZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIHN5bmMgaW4g
b3JkZXIgdG8gc3dhcCB0aGUgcmVjZW50bHkgZHJhd24gdGhpbmcuLi4KLSAgICAgICAgLy8gVGhp
cyB3aWxsIG9ubHkgYmUgY2FsbGVkIGZyb20gV2ViS2l0IHRocmVhZCBkdXJpbmcgZGlyZWN0IHJl
bmRlcmluZy4KLSAgICAgICAgdHlwZWRlZiB2b2lkIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tp
bmdTdG9yZVByaXZhdGU6OipGdW5jdGlvblR5cGUpKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0Jik7
Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2Fn
ZUNsaWVudCgpLT5kaXNwYXRjaFN5bmNNZXNzYWdlKAotICAgICAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlPEZ1bmN0aW9uVHlwZSwgQmFja2luZ1N0
b3JlUHJpdmF0ZSwgUGxhdGZvcm06OkludFJlY3Q+KAotICAgICAgICAgICAgICAgICZCYWNraW5n
U3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93LCB0aGlzLCBkc3QpKTsKKyAgICBpZiAoZHN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogI2lmIERFQlVHX0JBQ0tJTkdT
VE9SRQogICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWws
CkBAIC0yMTUwLDE4ICsyMDEwLDEwIEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aW52YWxp
ZGF0ZVdpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0KQogICAgICAgICBkc3QudG9T
dHJpbmcoKS5jX3N0cigpKTsKICNlbmRpZgogCi0gICAgLy8gU2luY2Ugb3VyIHdpbmRvdyBtYXkg
YWxzbyBiZSBkb3VibGUgYnVmZmVyZWQsIHdlIG5lZWQgdG8gYWxzbyBjb3B5IHRoZQotICAgIC8v
IGZyb250IGJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoZSBiYWNrIGJ1ZmZlciBiZWZvcmUgd2Ugc3dh
cCB0aGVtLiBJdCBpcwotICAgIC8vIGFuYWxvZ291cyB0byB3aGF0IHdlIGRvIHdpdGggb3VyIGRv
dWJsZSBidWZmZXJlZCB0aWxlcyBieSBjYWxsaW5nCi0gICAgLy8gY29weVByZXZpb3VzQ29udGVu
dHNUb0JhY2tpbmdTdXJmYWNlT2ZUaWxlKCkuIEl0IG9ubHkgYWZmZWN0cyBwYXJ0aWFsCi0gICAg
Ly8gc2NyZWVuIHVwZGF0ZXMgc2luY2Ugd2hlbiB3ZSBhcmUgc2Nyb2xsaW5nIG9yIHpvb21pbmcs
IHRoZSB3aG9sZSB3aW5kb3cKLSAgICAvLyBpcyBpbnZhbGlkYXRlZCBhbnl3YXlzIGFuZCBubyBj
b3B5aW5nIGlzIG5lZWRlZC4KLSAgICBjb3B5UHJldmlvdXNDb250ZW50c1RvQmFja1N1cmZhY2VP
ZldpbmRvdygpOwotCiAgICAgUGxhdGZvcm06OkludFJlY3QgZHN0UmVjdCA9IGRzdDsKIAotICAg
IFBsYXRmb3JtOjpJbnRSZWN0IHZpZXdwb3J0UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCks
IG1fY2xpZW50LT50cmFuc2Zvcm1lZFZpZXdwb3J0U2l6ZSgpKTsKLSAgICBkc3RSZWN0LmludGVy
c2VjdCh2aWV3cG9ydFJlY3QpOworICAgIFBsYXRmb3JtOjpJbnRSZWN0IHN1cmZhY2VSZWN0KFBs
YXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNpemUoKSk7CisgICAgZHN0UmVjdC5pbnRl
cnNlY3Qoc3VyZmFjZVJlY3QpOwogCiAgICAgaWYgKGRzdFJlY3Qud2lkdGgoKSA8PSAwIHx8IGRz
dFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE3Miw3ICsyMDI0LDYg
QEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93KGNvbnN0IFBsYXRm
b3JtOjpJbnRSZWN0JiBkc3QpCiAgICAgICAgIGRzdFJlY3QudG9TdHJpbmcoKS5jX3N0cigpKTsK
ICNlbmRpZgogCi0gICAgbV9jdXJyZW50V2luZG93QmFja0J1ZmZlciA9IChtX2N1cnJlbnRXaW5k
b3dCYWNrQnVmZmVyICsgMSkgJSAyOwogICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9IG1fd2ViUGFn
ZS0+Y2xpZW50KCktPndpbmRvdygpKQogICAgICAgICB3aW5kb3ctPnBvc3QoZHN0UmVjdCk7CiB9
CkBAIC0yMTgzLDcgKzIwMzQsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmNsZWFyV2lu
ZG93KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiByZWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJsdWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGEpCiB7Ci0gICAgaWYgKCFCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXND
dXJyZW50VGhyZWFkKCkgJiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsKKyAg
ICBpZiAoIUJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNs
aWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkgewogICAgICAgICB0eXBlZGVmIHZvaWQgKEJsYWNr
QmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6KkZ1bmN0aW9uVHlwZSkoY29uc3Qg
UGxhdGZvcm06OkludFJlY3QmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIsCkBAIC0yMjA2LDkgKzIwNTcsNiBAQCB2b2lk
IEJhY2tpbmdTdG9yZVByaXZhdGU6OmNsZWFyV2luZG93KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0
JiByZWN0LAogICAgIGlmICghZHN0QnVmZmVyKQogICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlz
KFBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBj
bGVhcldpbmRvdyIpOwogCi0gICAgd2luZG93RnJvbnRCdWZmZXJTdGF0ZSgpLT5jbGVhckJsaXR0
ZWRSZWdpb24ocmVjdCk7Ci0gICAgd2luZG93QmFja0J1ZmZlclN0YXRlKCktPmFkZEJsaXR0ZWRS
ZWdpb24ocmVjdCk7Ci0KICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmNsZWFy
QnVmZmVyKGRzdEJ1ZmZlciwgcmVjdCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCkBA
IC0yMjQwLDcgKzIwODgsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldFNjcm9sbGlu
Z09yWm9vbWluZyhib29sIHNjcm9sbGluZ09yWm9vbWluZywgYm9vbCBzaAogICAgIGlmIChzY3Jv
bGxpbmdPclpvb21pbmcpCiAgICAgICAgIG1fcmVuZGVyUXVldWUtPnNldEN1cnJlbnRSZWd1bGFy
UmVuZGVySm9iQmF0Y2hVbmRlclByZXNzdXJlKGZhbHNlKTsKICNpZiBFTkFCTEVfU0NST0xMQkFS
UwotICAgIGVsc2UgaWYgKHNob3VsZEJsaXQgJiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2lu
ZG93KCkpCisgICAgZWxzZSBpZiAoc2hvdWxkQmxpdCkKICAgICAgICAgYmxpdFZpc2libGVDb250
ZW50cygpOwogI2VuZGlmCiAgICAgaWYgKCFzY3JvbGxpbmdPclpvb21pbmcgJiYgc2hvdWxkUGVy
Zm9ybVJlZ3VsYXJSZW5kZXJKb2JzKCkpCkBAIC0yMzA4LDM3ICsyMTU2LDYgQEAgdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjphZG9wdEFzRnJvbnRTdGF0ZShCYWNraW5nU3RvcmVHZW9tZXRyeSog
bmV3RnJvbnRTdGF0ZSkKICAgICBkZWxldGUgb2xkRnJvbnRTdGF0ZTsKIH0KIAotQmFja2luZ1N0
b3JlV2luZG93QnVmZmVyU3RhdGUqIEJhY2tpbmdTdG9yZVByaXZhdGU6OndpbmRvd0Zyb250QnVm
ZmVyU3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiAmbV93aW5kb3dCdWZmZXJTdGF0ZVsobV9j
dXJyZW50V2luZG93QmFja0J1ZmZlciArIDEpICUgMl07Ci19Ci0KLUJhY2tpbmdTdG9yZVdpbmRv
d0J1ZmZlclN0YXRlKiBCYWNraW5nU3RvcmVQcml2YXRlOjp3aW5kb3dCYWNrQnVmZmVyU3RhdGUo
KSBjb25zdAotewotICAgIHJldHVybiAmbV93aW5kb3dCdWZmZXJTdGF0ZVttX2N1cnJlbnRXaW5k
b3dCYWNrQnVmZmVyXTsKLX0KLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd0FuZEJsZW5kTGF5ZXJzRm9yRGlyZWN0UmVuZGVy
aW5nKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAgQVNTRVJUKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5p
c0N1cnJlbnRUaHJlYWQoKSk7Ci0gICAgaWYgKCFCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlcklu
dGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIEJlY2F1c2Ugd2UncmUgYmVpbmcgY2FsbGVkIHN5bmMgZnJvbSB0
aGUgV2ViS2l0IHRocmVhZCwgd2UgY2FuIHVzZQotICAgIC8vIHJlZ3VsYXIgV2ViUGFnZSBzaXpl
IGFuZCB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvbnMgd2l0aG91dCBjb25jZXJucy4KLSAgICBXZWJD
b3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdCA9IHZpc2libGVDb250ZW50c1JlY3QoKTsKLSAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgdW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCA9IG1fd2ViUGFnZS0+
ZC0+bWFwRnJvbVRyYW5zZm9ybWVkRmxvYXRSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdChjb250ZW50
c1JlY3QpKTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzU2NyZWVuUmVjdCA9IG1fY2xp
ZW50LT5tYXBGcm9tVHJhbnNmb3JtZWRDb250ZW50c1RvVHJhbnNmb3JtZWRWaWV3cG9ydChjb250
ZW50c1JlY3QpOwotICAgIFdlYkNvcmU6OkludFJlY3QgZHN0UmVjdCA9IGludGVyc2VjdGlvbihj
b250ZW50c1NjcmVlblJlY3QsCi0gICAgICAgIFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50
UG9pbnQoMCwgMCksIG1fd2ViUGFnZS0+ZC0+dHJhbnNmb3JtZWRWaWV3cG9ydFNpemUoKSkpOwot
Ci0gICAgLy8gQ2hlY2sgaWYgcmVuZGVyaW5nIGNhdXNlZCBhIGNvbW1pdCBhbmQgd2UgbmVlZCB0
byByZWRyYXcgdGhlIGxheWVycy4KLSAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBj
b21wb3NpdG9yID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpCi0gICAgICAgIGNvbXBvc2l0
b3ItPmRyYXdMYXllcnMoZHN0UmVjdCwgdW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7Ci19Ci0j
ZW5kaWYKLQogLy8gc3RhdGljCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEN1cnJlbnRC
YWNraW5nU3RvcmVPd25lcihXZWJQYWdlKiB3ZWJQYWdlKQogewpAQCAtMjM1OSwyMCArMjE3Niwx
NyBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmlzQWN0aXZlKCkgY29uc3QKIAogdm9pZCBC
YWNraW5nU3RvcmVQcml2YXRlOjpkaWRSZW5kZXJDb250ZW50KGNvbnN0IFBsYXRmb3JtOjpJbnRS
ZWN0UmVnaW9uJiByZW5kZXJlZFJlZ2lvbikKIHsKLSAgICBpZiAoIXNob3VsZERpcmVjdFJlbmRl
cmluZ1RvV2luZG93KCkpIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
ICAgIGlmIChtX3dlYlBhZ2UtPmQtPm5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24o
KSkKLSAgICAgICAgICAgIG1fd2ViUGFnZS0+ZC0+Y29tbWl0Um9vdExheWVySWZOZWVkZWQoKTsK
LSAgICAgICAgZWxzZQorICAgIGlmIChtX3dlYlBhZ2UtPmQtPm5lZWRzT25lU2hvdERyYXdpbmdT
eW5jaHJvbml6YXRpb24oKSkKKyAgICAgICAgbV93ZWJQYWdlLT5kLT5jb21taXRSb290TGF5ZXJJ
Zk5lZWRlZCgpOworICAgIGVsc2UKICNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
aXNTY3JvbGxpbmdPclpvb21pbmcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47IC8vIGRvbid0
IGRyYWcgZG93biBmcmFtZXJhdGVzIGJ5IGRvdWJsZS1ibGl0dGluZy4KKyAgICB7CisgICAgICAg
IGlmIChpc1Njcm9sbGluZ09yWm9vbWluZygpKQorICAgICAgICAgICAgcmV0dXJuOyAvLyBkb24n
dCBkcmFnIGRvd24gZnJhbWVyYXRlcyBieSBkb3VibGUtYmxpdHRpbmcuCiAKLSAgICAgICAgICAg
IGJsaXRWaXNpYmxlQ29udGVudHMoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBp
bnZhbGlkYXRlV2luZG93KCk7CisgICAgICAgIGJsaXRWaXNpYmxlQ29udGVudHMoKTsKKyAgICB9
CiAKICAgICAvLyBEb24ndCBpc3N1ZSBjb250ZW50IHJlbmRlcmVkIGNhbGxzIHdoZW4gYWxsIHdl
IHJlbmRlcmVkIHdhcyBmaWxsZXIKICAgICAvLyBiYWNrZ3JvdW5kIGNvbG9yIGJlZm9yZSB0aGUg
cGFnZSBpcyBjb21taXR0ZWQuCkBAIC0yNDUzLDEyICsyMjY3LDYgQEAgdm9pZCBCYWNraW5nU3Rv
cmU6OnJlcGFpbnQoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAgICAgZC0+
cmVwYWludChQbGF0Zm9ybTo6SW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgY29udGVudENo
YW5nZWQsIGltbWVkaWF0ZSk7CiB9CiAKLWJvb2wgQmFja2luZ1N0b3JlOjppc0RpcmVjdFJlbmRl
cmluZ1RvV2luZG93KCkgY29uc3QKLXsKLSAgICBCYWNraW5nU3RvcmVNdXRleExvY2tlciBsb2Nr
ZXIoZCk7Ci0gICAgcmV0dXJuIGQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCk7Ci19
Ci0KIHZvaWQgQmFja2luZ1N0b3JlOjphY3F1aXJlQmFja2luZ1N0b3JlTWVtb3J5KCkKIHsKICAg
ICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+Y3JlYXRlQnVmZmVycygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmgKaW5kZXggMWM1MjNkZTlh
OTAzNDU0NGYyMTU0NjRhN2Y3ZTZiZDg3MmRhNmQ4Ni4uMmQwYmUxNTkwNGNmYmI3YzhjNDM0Y2Jm
YmM4NTRiYWZlYmRkYWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9CYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tp
bmdTdG9yZS5oCkBAIC03Myw4ICs3Myw2IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0JsaXRKb2Jz
KCkgY29uc3Q7CiAgICAgdm9pZCBibGl0T25JZGxlKCk7CiAKLSAgICBib29sIGlzRGlyZWN0UmVu
ZGVyaW5nVG9XaW5kb3coKSBjb25zdDsKLQogICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdTdG9yZU1l
bW9yeSgpOwogICAgIHZvaWQgcmVsZWFzZU93bmVkQmFja2luZ1N0b3JlTWVtb3J5KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAppbmRleCAyZjQw
ZjQwNzFhMzRmMmM2YjU4OWFiOWZiYmU4NjE2ZDY2MjJkNGVlLi5lZjUyNzI0NWQzMjBlY2M4OTk5
ZDdhZjI3M2QyM2NmZGNjMTYzYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9CYWNraW5nU3RvcmVfcC5oCkBAIC04OSwyOCArODksNiBAQCBwdWJsaWM6CiAgICAgVGlsZU1h
cCBtX3RpbGVNYXA7CiB9OwogCi1jbGFzcyBCYWNraW5nU3RvcmVXaW5kb3dCdWZmZXJTdGF0ZSB7
Ci1wdWJsaWM6Ci0gICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gYmxpdHRlZFJlZ2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYmxpdHRlZFJlZ2lvbjsgfQotICAgIHZvaWQgYWRkQmxpdHRlZFJlZ2lv
bihjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYgcmVnaW9uKQotICAgIHsKLSAgICAgICAg
bV9ibGl0dGVkUmVnaW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdpb246OnVuaW9uUmVnaW9ucyht
X2JsaXR0ZWRSZWdpb24sIHJlZ2lvbik7Ci0gICAgfQotICAgIHZvaWQgY2xlYXJCbGl0dGVkUmVn
aW9uKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uJiByZWdpb24pCi0gICAgewotICAgICAg
ICBtX2JsaXR0ZWRSZWdpb24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdp
b25zKG1fYmxpdHRlZFJlZ2lvbiwgcmVnaW9uKTsKLSAgICB9Ci0gICAgdm9pZCBjbGVhckJsaXR0
ZWRSZWdpb24oKSB7IG1fYmxpdHRlZFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKCk7
IH0KLQotICAgIGJvb2wgaXNSZW5kZXJlZChjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiYgY29udGVudHMpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gUGxhdGZvcm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0
UmVnaW9ucyhjb250ZW50cywgbV9ibGl0dGVkUmVnaW9uKS5pc0VtcHR5KCk7Ci0gICAgfQotCi0g
IHByaXZhdGU6Ci0gICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gbV9ibGl0dGVkUmVnaW9uOwot
fTsKLQogY2xhc3MgQmFja2luZ1N0b3JlUHJpdmF0ZSA6IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6R3VhcmRlZFBvaW50ZXJCYXNlIHsKIHB1YmxpYzoKICAgICBlbnVtIFRpbGVNYXRyaXhE
aXJlY3Rpb24geyBIb3Jpem9udGFsLCBWZXJ0aWNhbCB9OwpAQCAtMTE5LDExICs5Nyw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluc3RydW1lbnRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBpbnN0cnVt
ZW50Q2FuY2VsRnJhbWUoKTsKIAotICAgIC8vIFJldHVybnMgd2hldGhlciBkaXJlY3QgcmVuZGVy
aW5nIGlzIGV4cGxpY2l0bHkgdHVybmVkIG9uIG9yIGlzCi0gICAgLy8gcmVxdWlyZWQgYmVjYXVz
ZSB0aGUgc3VyZmFjZSBwb29sIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gbWVldAotICAgIC8vIHRo
ZSBtaW5pbXVtIG51bWJlciBvZiB0aWxlcyByZXF1aXJlZCB0byBzY3JvbGwuCi0gICAgYm9vbCBz
aG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpIGNvbnN0OwotCiAgICAgLy8gUmV0dXJucyB3
aGV0aGVyIHdlJ3JlIHVzaW5nIHRoZSBPcGVuR0wgY29kZSBwYXRoIGZvciBjb21wb3NpdGluZyB0
aGUKICAgICAvLyBiYWNraW5nIHN0b3JlIHRpbGVzLiBUaGlzIGNhbiBiZSBkdWUgdG8gdGhlIG1h
aW4gd2luZG93IHVzaW5nCiAgICAgLy8gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpX
aW5kb3c6OkdMRVMyVXNhZ2UuCkBAIC0xOTMsOSArMTY2LDYgQEAgcHVibGljOgogICAgIC8vIHRp
bGUgbWF0cml4IGdlb21ldHJ5LgogICAgIHZvaWQgc2Nyb2xsQmFja2luZ1N0b3JlKGludCBkZWx0
YVgsIGludCBkZWx0YVkpOwogCi0gICAgLy8gUmVuZGVyIHRoZSBnaXZlbiBkaXJ0eSByZWN0IGFu
ZCBpbnZhbGlkYXRlIHRoZSBzY3JlZW4uCi0gICAgUGxhdGZvcm06OkludFJlY3QgcmVuZGVyRGly
ZWN0VG9XaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmKTsKLQogICAgIC8vIFJlbmRlciB0
aGUgZ2l2ZW4gdGlsZXMgaWYgZW5vdWdoIGJhY2sgYnVmZmVycyBhcmUgYXZhaWxhYmxlLgogICAg
IC8vIFJldHVybiB0aGUgYWN0dWFsIHNldCBvZiByZW5kZXJlZCB0aWxlcy4KICAgICAvLyBOT1RF
OiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBSZW5kZXJRdWV1ZSBhbmQgcmVzdW1lU2Ny
ZWVuVXBkYXRlcygpLgpAQCAtMjEwLDEyICsxODAsOCBAQCBwdWJsaWM6CiAgICAgLy8gSGVscGVy
IHJlbmRlciBtZXRob2RzLgogICAgIHZvaWQgcmVuZGVyQW5kQmxpdFZpc2libGVDb250ZW50c0lt
bWVkaWF0ZWx5KCk7CiAgICAgdm9pZCByZW5kZXJBbmRCbGl0SW1tZWRpYXRlbHkoY29uc3QgUGxh
dGZvcm06OkludFJlY3QmKTsKLSAgICB2b2lkIGJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3Jj
ZSA9IGZhbHNlKTsKLQotICAgIC8vIEFzc3VtZXMgdGhlIHJlY3QgdG8gYmUgaW4gd2luZG93L3Zp
ZXdwb3J0IGNvb3JkaW5hdGVzLgotICAgIHZvaWQgY29weVByZXZpb3VzQ29udGVudHNUb0JhY2tT
dXJmYWNlT2ZXaW5kb3coKTsKLSAgICB2b2lkIGNvcHlQcmV2aW91c0NvbnRlbnRzVG9UaWxlQnVm
ZmVyKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBleGNsdWRlUmVjdCwgVGlsZUJ1ZmZlciogZHN0
VGlsZUJ1ZmZlciwgVGlsZUJ1ZmZlciogc3JjVGlsZUJ1ZmZlcik7CiAgICAgdm9pZCBwYWludERl
ZmF1bHRCYWNrZ3JvdW5kKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3NvciosIGJvb2wgZmx1c2gpOworICAgIHZvaWQg
YmxpdFZpc2libGVDb250ZW50cyhib29sIGZvcmNlID0gZmFsc2UpOwogICAgIHZvaWQgYmxpdE9u
SWRsZSgpOwogCiAgICAgUGxhdGZvcm06OkludFJlY3QgYmxpdFRpbGVSZWN0KFRpbGVCdWZmZXIq
LCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYsIGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgQmFja2luZ1N0b3JlR2VvbWV0cnkq
KTsKQEAgLTIyOSwxMiArMTk1LDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcG9zaXRlQ29udGVu
dHMoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjb250ZW50cywgYm9vbCBjb250ZW50
c09wYXF1ZSk7CiAKICAgICBib29sIGRyYXdMYXllcnNPbkNvbW1pdElmTmVlZGVkKCk7Ci0gICAg
dm9pZCBkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcoY29uc3QgUGxhdGZvcm06
OkludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgLy8gV2ViUGFnZSB3aWxsIGNhbGwgdGhpcyB3aGVu
IGRyYXdpbmcgbGF5ZXJzIHRvIHRlbGwgdXMgd2UgZG9uJ3QgbmVlZCB0bwogICAgIHZvaWQgd2ls
bERyYXdMYXllcnNPbkNvbW1pdCgpIHsgbV9uZWVkc0RyYXdMYXllcnNPbkNvbW1pdCA9IGZhbHNl
OyB9Ci0gICAgLy8gV2ViUGFnZUNvbXBvc2l0b3IgdXNlcyB0aGlzIHRvIGN1dCBkb3duIG9uIGV4
Y2Vzc2l2ZSBtZXNzYWdlIHNlbmRpbmcuCi0gICAgYm9vbCBpc0RpcmVjdFJlbmRlcmluZ0FuaW1h
dGlvbk1lc3NhZ2VTY2hlZHVsZWQoKSB7IHJldHVybiBtX2lzRGlyZWN0UmVuZGVyaW5nQW5pbWF0
aW9uTWVzc2FnZVNjaGVkdWxlZDsgfQotICAgIHZvaWQgc2V0RGlyZWN0UmVuZGVyaW5nQW5pbWF0
aW9uTWVzc2FnZVNjaGVkdWxlZCgpIHsgbV9pc0RpcmVjdFJlbmRlcmluZ0FuaW1hdGlvbk1lc3Nh
Z2VTY2hlZHVsZWQgPSB0cnVlOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgYmxpdEhvcml6b250YWxT
Y3JvbGxiYXIoKTsKQEAgLTMxNSw3ICsyNzcsNiBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6Q29s
b3Igd2ViUGFnZUJhY2tncm91bmRDb2xvclVzZXJJbnRlcmZhY2VUaHJlYWQoKSBjb25zdDsgLy8g
dXNlIFdlYlNldHRpbmdzOjpiYWNrZ3JvdW5kQ29sb3IoKSBmb3IgdGhlIFdlYktpdCB0aHJlYWQK
ICAgICB2b2lkIHNldFdlYlBhZ2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
KTsKIAotICAgIHZvaWQgaW52YWxpZGF0ZVdpbmRvdygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVdp
bmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0KTsKICAgICB2b2lkIGNsZWFyV2luZG93
KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiwgdW5zaWduZWQgY2hhciByZWQsIHVuc2lnbmVkIGNo
YXIgZ3JlZW4sIHVuc2lnbmVkIGNoYXIgYmx1ZSwgdW5zaWduZWQgY2hhciBhbHBoYSA9IDI1NSk7
CiAKQEAgLTMyOCw5ICsyODksNiBAQCBwdWJsaWM6CiAgICAgQmFja2luZ1N0b3JlR2VvbWV0cnkq
IGZyb250U3RhdGUoKSBjb25zdDsKICAgICB2b2lkIGFkb3B0QXNGcm9udFN0YXRlKEJhY2tpbmdT
dG9yZUdlb21ldHJ5KiBuZXdGcm9udFN0YXRlKTsKIAotICAgIEJhY2tpbmdTdG9yZVdpbmRvd0J1
ZmZlclN0YXRlKiB3aW5kb3dGcm9udEJ1ZmZlclN0YXRlKCkgY29uc3Q7Ci0gICAgQmFja2luZ1N0
b3JlV2luZG93QnVmZmVyU3RhdGUqIHdpbmRvd0JhY2tCdWZmZXJTdGF0ZSgpIGNvbnN0OwotCiAg
ICAgc3RhdGljIHZvaWQgc2V0Q3VycmVudEJhY2tpbmdTdG9yZU93bmVyKFdlYlBhZ2UqKTsKICAg
ICBzdGF0aWMgV2ViUGFnZSogY3VycmVudEJhY2tpbmdTdG9yZU93bmVyKCkgeyByZXR1cm4gQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6c19jdXJyZW50QmFja2luZ1N0b3JlT3duZXI7IH0KICAgICBib29s
IGlzQWN0aXZlKCkgY29uc3Q7CkBAIC0zNjUsOSArMzIzLDYgQEAgcHVibGljOgogCiAgICAgbXV0
YWJsZSB1bnNpZ25lZCBtX2Zyb250U3RhdGU7CiAKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRXaW5k
b3dCYWNrQnVmZmVyOwotICAgIG11dGFibGUgQmFja2luZ1N0b3JlV2luZG93QnVmZmVyU3RhdGUg
bV93aW5kb3dCdWZmZXJTdGF0ZVsyXTsKLQogICAgIFRpbGVNYXRyaXhEaXJlY3Rpb24gbV9wcmVm
ZXJyZWRUaWxlTWF0cml4RGltZW5zaW9uOwogCiAgICAgUGxhdGZvcm06OkludFJlY3QgbV92aXNp
YmxlVGlsZUJ1ZmZlclJlY3Q7CkBAIC0zNzYsNyArMzMxLDYgQEAgcHVibGljOgogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG11dGFibGUgYm9vbCBtX25lZWRzRHJhd0xh
eWVyc09uQ29tbWl0OyAvLyBOb3QgdGhyZWFkIHNhZmUsIFdlYktpdCB0aHJlYWQgb25seQotICAg
IGJvb2wgbV9pc0RpcmVjdFJlbmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQ7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAK
aW5kZXggOGM1Y2EyZmE0YmJkMzIwZTc2MzhmMWRlMDA2NDAxM2Q2YTMyN2UzYS4uZjY2Mjg3ZjUz
MDE2ZGJmNTI5Yzk3MWUzM2QwYjQ5NTgyZGRjOTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwg
MjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC0zNTY3LDEwICszNTY3LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6cmVzdW1lQmFja2luZ1N0b3JlKCkKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlLT5pc1Zpc2li
bGUoKSk7CiAKLSAgICBib29sIGRpcmVjdFJlbmRlcmluZyA9IG1fYmFja2luZ1N0b3JlLT5kLT5z
aG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUt
PmQtPmlzQWN0aXZlKCkKLSAgICAgICAgfHwgc2hvdWxkUmVzZXRUaWxlc1doZW5TaG93bigpCi0g
ICAgICAgIHx8IGRpcmVjdFJlbmRlcmluZykgeworICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmQt
PmlzQWN0aXZlKCkgfHwgc2hvdWxkUmVzZXRUaWxlc1doZW5TaG93bigpKSB7CiAgICAgICAgIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OnNldEN1cnJlbnRCYWNraW5nU3RvcmVPd25lcihtX3dlYlBhZ2Up
OwogCiAgICAgICAgIC8vIElmIHdlJ3JlIE9wZW5HTCBjb21wb3NpdGluZywgc3dpdGNoaW5nIHRv
IGFjY2VsIGNvbXAgZHJhd2luZyBvZiB0aGUgcm9vdCBsYXllcgpAQCAtMzY0OSwxMCArMzY0Niw2
IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB0
cmFuc2Zvcm1lZEFjdHVhbFZpc2libGVTaXplCiAKICAgICBib29sIGhhc1BlbmRpbmdPcmllbnRh
dGlvbiA9IG1fcGVuZGluZ09yaWVudGF0aW9uICE9IC0xOwogCi0gICAgLy8gVGhlIHdpbmRvdyBi
dWZmZXJzIG1pZ2h0IGhhdmUgYmVlbiByZWNyZWF0ZWQsIGNsZWFyZWQsIG1vdmVkLCBldGMuLCBz
bzoKLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+d2luZG93RnJvbnRCdWZmZXJTdGF0ZSgpLT5jbGVh
ckJsaXR0ZWRSZWdpb24oKTsKLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+d2luZG93QmFja0J1ZmZl
clN0YXRlKCktPmNsZWFyQmxpdHRlZFJlZ2lvbigpOwotCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNp
emVCZWZvcmUgPSBhY3R1YWxWaXNpYmxlU2l6ZSgpOwogICAgIEZsb2F0UG9pbnQgY2VudGVyT2ZW
aXNpYmxlQ29udGVudHNSZWN0ID0gdGhpcy0+Y2VudGVyT2ZWaXNpYmxlQ29udGVudHNSZWN0KCk7
CiAgICAgYm9vbCBuZXdWaXNpYmxlUmVjdENvbnRhaW5zT2xkVmlzaWJsZVJlY3QgPSAobV9hY3R1
YWxWaXNpYmxlSGVpZ2h0IDw9IHRyYW5zZm9ybWVkQWN0dWFsVmlzaWJsZVNpemUuaGVpZ2h0KCkp
CkBAIC0zODA2LDIwICszNzk5LDEwIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNldFZpZXdwb3J0
U2l6ZShjb25zdCBJbnRTaXplJiB0cmFuc2Zvcm1lZEFjdHVhbFZpc2libGVTaXplCiAgICAgLy8g
VHJ5IGFuZCB6b29tIGhlcmUgd2l0aCBjbGFtcGluZyBvbi4KICAgICAvLyBGSVhNRTogRGV0ZXJt
aW5lIHdoeSB0aGUgYWJvdmUgY29tbWVudCBzYXlzICJjbGFtcGluZyBvbiIsIHlldCB3ZQogICAg
IC8vICAgZG9uJ3Qgc2V0IGVuZm9yY2VTY2FsZUNsYW1waW5nIHRvIHRydWUuCi0gICAgLy8gRklY
TUU6IERldGVybWluZSB3aHkgZW5zdXJlQ29udGVudFZpc2libGUoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgIXN1Y2Nlc3MKLSAgICAvLyAgIGluIHRoZSBkaXJlY3QtcmVuZGVyaW5nIGNhc2UsIGJ1dCBp
biBhbGwgY2FzZXMgb3RoZXJ3aXNlLiBDaGFuY2VzIGFyZQotICAgIC8vICAgb25lIG9mIHRoZXNl
IGlzIGluY29ycmVjdCBhbmQgd2UgY2FuIHVuaWZ5IHR3byBicmFuY2hlcyBpbnRvIG9uZS4KLSAg
ICBpZiAobV9iYWNraW5nU3RvcmUtPmQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkp
IHsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gem9vbUFib3V0UG9pbnQoc2NhbGUsIGFuY2hvciwg
ZmFsc2UgLyogZW5mb3JjZVNjYWxlQ2xhbXBpbmcgKi8sIHRydWUgLyogZm9yY2VSZW5kZXJpbmcg
Ki8pOwotICAgICAgICBpZiAoIXN1Y2Nlc3MgJiYgZW5zdXJlRm9jdXNFbGVtZW50VmlzaWJsZSkK
LSAgICAgICAgICAgIGVuc3VyZUNvbnRlbnRWaXNpYmxlKCFuZXdWaXNpYmxlUmVjdENvbnRhaW5z
T2xkVmlzaWJsZVJlY3QpOwotCi0gICAgfSBlbHNlIGlmICh6b29tQWJvdXRQb2ludChzY2FsZSwg
YW5jaG9yLCBmYWxzZSAvKmVuZm9yY2VTY2FsZUNsYW1waW5nKi8sIHRydWUgLypmb3JjZVJlbmRl
cmluZyovKSkgeworICAgIGlmICh6b29tQWJvdXRQb2ludChzY2FsZSwgYW5jaG9yLCBmYWxzZSAv
KmVuZm9yY2VTY2FsZUNsYW1waW5nKi8sIHRydWUgLypmb3JjZVJlbmRlcmluZyovKSkgewogICAg
ICAgICBpZiAoZW5zdXJlRm9jdXNFbGVtZW50VmlzaWJsZSkKICAgICAgICAgICAgIGVuc3VyZUNv
bnRlbnRWaXNpYmxlKCFuZXdWaXNpYmxlUmVjdENvbnRhaW5zT2xkVmlzaWJsZVJlY3QpOwotCiAg
ICAgfSBlbHNlIHsKLQogICAgICAgICAvLyBTdXNwZW5kIGFsbCB1cGRhdGVzIHRvIHRoZSBiYWNr
aW5nc3RvcmUuCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5zdXNwZW5kQmFja2luZ1N0b3Jl
VXBkYXRlcygpOwogCkBAIC01NjA3LDI0ICs1NTkwLDE1IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6
OnJvb3RMYXllckNvbW1pdFRpbWVyRmlyZWQoVGltZXI8V2ViUGFnZVByaXZhdGU+KikKICAgICAv
LyBiYWNraW5nIHN0b3JlLCBkb2luZyBhIG9uZSBzaG90IGRyYXdpbmcgc3luY2hyb25pemF0aW9u
IHdpdGggdGhlCiAgICAgLy8gYmFja2luZyBzdG9yZSBpcyBuZXZlciBuZWNlc3NhcnksIGJlY2F1
c2UgdGhlIGJhY2tpbmcgc3RvcmUgZHJhd3MKICAgICAvLyBub3RoaW5nLgotICAgIGlmICghY29t
cG9zaXRvckRyYXdzUm9vdExheWVyKCkpIHsKLSAgICAgICAgLy8gSWYgd2UgYXJlIGRvaW5nIGRp
cmVjdCByZW5kZXJpbmcgYW5kIGhhdmUgYSBzaW5nbGUgcmVuZGVyaW5nIHRhcmdldCwKLSAgICAg
ICAgLy8gY29tbWl0dGluZyBpcyBlcXVpdmFsZW50IHRvIGEgb25lIHNob3QgZHJhd2luZyBzeW5j
aHJvbml6YXRpb24uCi0gICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtcmVuZGVyIHRoZSB3ZWIgcGFn
ZSwgcmUtcmVuZGVyIHRoZSBsYXllcnMsIGFuZAotICAgICAgICAvLyB0aGVuIGJsaXQgdGhlbSBv
biB0b3Agb2YgdGhlIHJlLXJlbmRlcmVkIHdlYiBwYWdlLgotICAgICAgICBpZiAobV9iYWNraW5n
U3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKSAmJiBtX2JhY2tpbmdTdG9yZS0+ZC0+c2hv
dWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKLSAgICAgICAgICAgIHNldE5lZWRzT25lU2hv
dERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsKLQotICAgICAgICBpZiAobmVlZHNPbmVTaG90RHJh
d2luZ1N5bmNocm9uaXphdGlvbigpKSB7CisgICAgaWYgKCFjb21wb3NpdG9yRHJhd3NSb290TGF5
ZXIoKSAmJiBuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkpIHsKICNpZiBERUJV
R19BQ19DT01NSVQKLSAgICAgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06Okxv
Z0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAgICAgIiVzOiBPbmVTaG90RHJhd2luZ1N5bmNo
cm9uaXphdGlvbiBjb2RlIHBhdGghIiwKLSAgICAgICAgICAgICAgICBXVEZfUFJFVFRZX0ZVTkNU
SU9OKTsKKyAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0
aWNhbCwKKyAgICAgICAgICAgICIlczogT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24gY29k
ZSBwYXRoISIsCisgICAgICAgICAgICBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsKICNlbmRpZgotICAg
ICAgICAgICAgY29uc3QgSW50UmVjdCB3aW5kb3dSZWN0ID0gSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCB2aWV3cG9ydFNpemUoKSk7Ci0gICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+cmVw
YWludCh3aW5kb3dSZWN0LCB0cnVlIC8qY29udGVudENoYW5nZWQqLywgdHJ1ZSAvKmltbWVkaWF0
ZSovKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBJbnRS
ZWN0IHdpbmRvd1JlY3QgPSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHZpZXdwb3J0U2l6ZSgp
KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnJlcGFpbnQod2luZG93UmVjdCwgdHJ1ZSAv
KmNvbnRlbnRDaGFuZ2VkKi8sIHRydWUgLyppbW1lZGlhdGUqLyk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBjb21taXRSb290TGF5ZXJJZk5lZWRlZCgpOwpAQCAtNjA1MSwxNCArNjAy
NSw2IEBAIHZvaWQgV2ViUGFnZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29s
IGVuYWJsZWQpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIFdl
YlBhZ2VQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKCkKLXsKLSAgICBpZiAobV9iYWNraW5n
U3RvcmUtPmQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7Ci19Ci0K
IHZvaWQgV2ViUGFnZVByaXZhdGU6OnNjaGVkdWxlQ29tcG9zaXRpbmdSdW4oKQogewogICAgIGlm
IChXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY29tcG9zaXRvckNsaWVudCA9IGNvbXBvc2l0b3Io
KS0+Y2xpZW50KCkpIHsKQEAgLTYwNjcsOSArNjAzMyw4IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6
OnNjaGVkdWxlQ29tcG9zaXRpbmdSdW4oKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YmxpdFZpc2libGVDb250ZW50cygpOworICAgIG1fYmFja2luZ1N0b3JlLT5kLT5ibGl0VmlzaWJs
ZUNvbnRlbnRzKCk7CiB9Ci0KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6OnNldFdlYkdMRW5hYmxl
ZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2VDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZUNvbXBvc2l0b3IuY3BwCmluZGV4IGE0OTA5ZDc2NDUyMDM3N2Q5ZWIzZTU4NTVlZjMzYTE3
M2Y3MjQ0YWEuLmFjNTI2YjZjZGVjZjVlZWYwYWY1OTQwMzRmMjA0NzNhYWNiZTIyMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3Bw
CkBAIC0yMzMsMTkgKzIzMyw4IEBAIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphbmlt
YXRpb25GcmFtZUNoYW5nZWQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGJh
Y2tpbmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAg
ICBpZiAoYmFja2luZ1N0b3JlLT5kLT5pc0RpcmVjdFJlbmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VT
Y2hlZHVsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsgLy8gZG9uJ3Qgc2VuZCBuZXcgbWVzc2Fn
ZXMgYXMgbG9uZyBhcyB3ZSBoYXZlbid0IHJlcmVuZGVyZWQKLQotICAgICAgICB1c2luZyBuYW1l
c3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07Ci0KLSAgICAgICAgYmFja2luZ1N0b3JlLT5kLT5z
ZXREaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNzYWdlU2NoZWR1bGVkKCk7Ci0gICAgICAgIHdl
YktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKGNyZWF0ZU1ldGhvZENh
bGxNZXNzYWdlKCZCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJBbmRCbGl0VmlzaWJsZUNvbnRl
bnRzSW1tZWRpYXRlbHksIGJhY2tpbmdTdG9yZS0+ZCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgaWYgKCFtX3dlYlBhZ2UtPm5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRp
b24oKSkKLSAgICAgICAgbV93ZWJQYWdlLT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7CisgICAgICAg
IGJhY2tpbmdTdG9yZS0+YmxpdFZpc2libGVDb250ZW50cygpOwogfQogCiB2b2lkIFdlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTo6Y29tcG9zaXRvckRlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCAyYmY0Mjk4N2E0ODgxNjdhNTE4NjQxMTVjYjA3
MjNmMWJmNWUyMzM3Li4wYWYyYjM1ODczOTA1YzhjNDRiMGE1ZmU3ZmUzODMxMjEwYzY1YWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAgLTQyMSw3ICs0MjEs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlTGF5ZXJSZXNvdXJjZXNDb21wb3NpdGluZ1Ro
cmVhZCgpOwogICAgIHZvaWQgc3VzcGVuZFJvb3RMYXllckNvbW1pdCgpOwogICAgIHZvaWQgcmVz
dW1lUm9vdExheWVyQ29tbWl0KCk7Ci0gICAgdm9pZCBibGl0VmlzaWJsZUNvbnRlbnRzKCk7CiAK
ICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdSdW4oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcAppbmRleCA3MjM5ZmU4MmFiYWMzOTk3
OGRkZjVkNDg4NzBlM2FkMDNkMGI0NzBmLi40YWQ2ZjdmMDVmMTYxY2YxMjE2NDBlZTFlMTkyM2Vl
MWJjOTYzYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNl
dHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdz
LmNwcApAQCAtNDAsNyArNDAsNiBAQCBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tC
ZXJyeUFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsIChBU0NJSQogREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlBc3luY2hyb25vdXNTcGVsbENoZWNraW5nLCAo
QVNDSUlMaXRlcmFsKCJCbGFja0JlcnJ5QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZyIpKSk7CiBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUJhY2tncm91bmRDb2xvciwgKEFT
Q0lJTGl0ZXJhbCgiQmxhY2tCZXJyeUJhY2tncm91bmRDb2xvciIpKSk7CiBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUNvb2tpZXNFbmFibGVkLCAoQVNDSUlMaXRlcmFsKCJC
bGFja0JlcnJ5Q29va2llc0VuYWJsZWQiKSkpOwotREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IEJsYWNrQmVycnlEaXJlY3RSZW5kZXJpbmdUb1dpbmRvd0VuYWJsZWQsIChBU0NJSUxpdGVyYWwo
IkJsYWNrQmVycnlEaXJlY3RSZW5kZXJpbmdUb1dpbmRvd0VuYWJsZWQiKSkpOwogREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlEcmF3Qm9yZGVyV2hpbGVMb2FkaW5nSW1hZ2Vz
LCAoQVNDSUlMaXRlcmFsKCJCbGFja0JlcnJ5RHJhd0JvcmRlcldoaWxlTG9hZGluZ0ltYWdlcyIp
KSk7CiBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUVtYWlsTW9kZUVuYWJs
ZWQsIChBU0NJSWxpdGVyYWwoIkJsYWNrQmVycnlFbWFpbE1vZGVFbmFibGVkIikpKTsKIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5R2V0Rm9jdXNOb2RlQ29udGV4dEVuYWJs
ZWQsIChBU0NJSUxpdGVyYWwoIkJsYWNrQmVycnlHZXRGb2N1c05vZGVDb250ZXh0RW5hYmxlZCIp
KSk7CkBAIC03NDQsMTYgKzc0Myw2IEBAIHZvaWQgV2ViU2V0dGluZ3M6OnNldEZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQoYm9vbCBlbmFibGUpCiAgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktp
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQsIGVuYWJsZSk7CiB9CiAKLWJvb2wgV2ViU2V0dGluZ3M6
OmlzRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5nZXRCb29sZWFuKEJsYWNrQmVycnlEaXJlY3RSZW5kZXJpbmdUb1dpbmRvd0Vu
YWJsZWQpOwotfQotCi12b2lkIFdlYlNldHRpbmdzOjpzZXREaXJlY3RSZW5kZXJpbmdUb1dpbmRv
d0VuYWJsZWQoYm9vbCBlbmFibGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNr
QmVycnlEaXJlY3RSZW5kZXJpbmdUb1dpbmRvd0VuYWJsZWQsIGVuYWJsZSk7Ci19Ci0KIGJvb2wg
V2ViU2V0dGluZ3M6OmlzQmFja2luZ1N0b3JlRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5QmFja2luZ1N0b3JlRW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmggYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmgKaW5kZXggNTc4NTlmMWRj
ZTY3MTRlN2IxYjFkZTE1YzcyZDRiZjE5MDA0ZDg5OS4uOThkM2JkMjE3MjU1N2M5Mjg0ZjI5MTIz
Yzk1ZTYzOTZiMjk1MjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0
dGluZ3MuaApAQCAtMjE0LDkgKzIxNCw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxl
ZChib29sKTsKIAotICAgIGJvb2wgaXNEaXJlY3RSZW5kZXJpbmdUb1dpbmRvd0VuYWJsZWQoKSBj
b25zdDsKLSAgICB2b2lkIHNldERpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZChib29sKTsK
LQogICAgIHVuc2lnbmVkIG1heFBsdWdpbkluc3RhbmNlcygpIGNvbnN0OwogICAgIHZvaWQgc2V0
TWF4UGx1Z2luSW5zdGFuY2VzKHVuc2lnbmVkIG51bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcAppbmRleCA3MDQ1
ZjE1NTY3OWM3MmFhOWJjZWUyOWU0YjdmMTI1YzRjNTVhNDQ5Li43OTYzMzY2YTUyNWNmOWIzMmQw
MGQwMTQ0MDI3M2EzMDI3NGU5ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3BwCkBAIC02MTUsNyArNjE1LDYgQEAg
dm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYnMoYm9vbCBhbGxBdE9uY2VJ
ZlBvc3NpYmxlKQogICAgICAgICBtX2N1cnJlbnRSZWd1bGFyUmVuZGVySm9ic0JhdGNoLmNsZWFy
KCk7CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdyA9IG1f
cGFyZW50LT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpOwogICAgIFBsYXRmb3JtOjpJ
bnRSZWN0IGNvbnRlbnRzUmVjdCA9IG1fcGFyZW50LT5leHBhbmRlZENvbnRlbnRzUmVjdCgpOwog
CiAgICAgLy8gU3RhcnQgbmV3IGJhdGNoIGlmIG5lZWRlZC4KQEAgLTYyNCwxMiArNjIzLDEwIEBA
IHZvaWQgUmVuZGVyUXVldWU6OnJlbmRlclJlZ3VsYXJSZW5kZXJKb2JzKGJvb2wgYWxsQXRPbmNl
SWZQb3NzaWJsZSkKICAgICAgICAgbV9yZWd1bGFyUmVuZGVySm9ic1JlZ2lvbiA9IFBsYXRmb3Jt
OjpJbnRSZWN0UmVnaW9uOjppbnRlcnNlY3RSZWdpb25zKG1fcmVndWxhclJlbmRlckpvYnNSZWdp
b24sIGNvbnRlbnRzUmVjdCk7CiAKICAgICAgICAgLy8gU3BsaXQgdGhlIGN1cnJlbnQgcmVndWxh
ciByZW5kZXIgam9iIHJlZ2lvbiBpbnRvIHRpbGVzLgotICAgICAgICBpZiAoIXNob3VsZERpcmVj
dFJlbmRlcmluZ1RvV2luZG93KSB7Ci0gICAgICAgICAgICAvLyBEaXNjYXJkIHJlZ2lvbnMgb3V0
c2lkZSBvZiB0aGUgcmVnaW9uIGNvdmVyZWQgYnkgdGhlc2UgdGlsZXMuCi0gICAgICAgICAgICAv
LyBUaGV5J2xsIGJlIHJlbmRlcmVkIHdoZW4gdGhlIGdlb21ldHJ5IGNoYW5nZXMuCi0gICAgICAg
ICAgICBtX3JlZ3VsYXJSZW5kZXJKb2JzUmVnaW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdpb246
OmludGVyc2VjdFJlZ2lvbnMobV9yZWd1bGFyUmVuZGVySm9ic1JlZ2lvbiwgbV9wYXJlbnQtPmZy
b250U3RhdGUoKS0+YmFja2luZ1N0b3JlUmVjdCgpKTsKLSAgICAgICAgICAgIG1fY3VycmVudFJl
Z3VsYXJSZW5kZXJKb2JzQmF0Y2ggPSB0aWxlSW5kZXhlc0ludGVyc2VjdGluZ1JlZ2lvbihtX3Jl
Z3VsYXJSZW5kZXJKb2JzUmVnaW9uLCBtX3BhcmVudC0+ZnJvbnRTdGF0ZSgpKTsKLSAgICAgICAg
fQorICAgICAgICAvLyBEaXNjYXJkIHJlZ2lvbnMgb3V0c2lkZSBvZiB0aGUgcmVnaW9uIGNvdmVy
ZWQgYnkgdGhlc2UgdGlsZXMuCisgICAgICAgIC8vIFRoZXknbGwgYmUgcmVuZGVyZWQgd2hlbiB0
aGUgZ2VvbWV0cnkgY2hhbmdlcy4KKyAgICAgICAgbV9yZWd1bGFyUmVuZGVySm9ic1JlZ2lvbiA9
IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjppbnRlcnNlY3RSZWdpb25zKG1fcmVndWxhclJlbmRl
ckpvYnNSZWdpb24sIG1fcGFyZW50LT5mcm9udFN0YXRlKCktPmJhY2tpbmdTdG9yZVJlY3QoKSk7
CisgICAgICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2ggPSB0aWxlSW5kZXhlc0lu
dGVyc2VjdGluZ1JlZ2lvbihtX3JlZ3VsYXJSZW5kZXJKb2JzUmVnaW9uLCBtX3BhcmVudC0+ZnJv
bnRTdGF0ZSgpKTsKIAogICAgICAgICAvLyBDcmVhdGUgYSByZWdpb24gb2JqZWN0IHRoYXQgd2ls
bCBiZSBjaGVja2VkIHdoZW4gYWRkaW5nIG5ldyByZWN0cyBiZWZvcmUKICAgICAgICAgLy8gdGhp
cyBiYXRjaCBoYXMgYmVlbiBjb21wbGV0ZWQuCkBAIC02NTMsOSArNjUwLDcgQEAgdm9pZCBSZW5k
ZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYnMoYm9vbCBhbGxBdE9uY2VJZlBvc3NpYmxl
KQogICAgIFRpbGVJbmRleExpc3QgY29tcGxldGVkSm9iczsKICAgICBUaWxlSW5kZXhMaXN0IHRp
bGVzVG9SZW5kZXI7CiAKLSAgICB1bnNpZ25lZCBudW1iZXJPZkF2YWlsYWJsZUJhY2tCdWZmZXJz
ID0gc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3cKLSAgICAgICAgPyAwCi0gICAgICAgIDog
U3VyZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29sKCktPm51bWJlck9mQXZhaWxhYmxlQmFja0J1
ZmZlcnMoKTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZkF2YWlsYWJsZUJhY2tCdWZmZXJzID0gU3Vy
ZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29sKCktPm51bWJlck9mQXZhaWxhYmxlQmFja0J1ZmZl
cnMoKTsKIAogICAgIHdoaWxlICghb3V0c3RhbmRpbmdKb2JzLT5pc0VtcHR5KCkgJiYgbnVtYmVy
T2ZBdmFpbGFibGVCYWNrQnVmZmVycykgewogICAgICAgICAvLyBSZW5kZXIgYXMgbWFueSB0aWxl
cyBhdCBvbmNlIGFzIHdlIGNhbiBoYW5kbGUuCkBAIC03MzgsMTYgKzczMyw3IEBAIHZvaWQgUmVu
ZGVyUXVldWU6OnJlbmRlclJlZ3VsYXJSZW5kZXJKb2JzKGJvb2wgYWxsQXRPbmNlSWZQb3NzaWJs
ZSkKICAgICAgICAgICAgIGJyZWFrOyAvLyBXZSBjYW4gZG8gdGhlIHJlc3QgbmV4dCB0aW1lLgog
ICAgIH0KIAotICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIHJlbmRlcmVkUmVnaW9uOwotCi0g
ICAgaWYgKHNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KSB7Ci0gICAgICAgIC8vIFRyeSBy
ZW5kZXJpbmcgb25jZSwgaWYgd2UncmUgc3VzcGVuZGVkIHRoZXJlIHdpbGwgYmUgYW5vdGhlcgot
ICAgICAgICAvLyBmdWxsLXNjcmVlbiB1cGRhdGUgbGF0ZXIgb24gYW55d2F5cy4KLSAgICAgICAg
cmVuZGVyZWRSZWdpb24gPSBtX3BhcmVudC0+cmVuZGVyRGlyZWN0VG9XaW5kb3cobV9jdXJyZW50
UmVndWxhclJlbmRlckpvYnNCYXRjaFJlZ2lvbi5leHRlbnRzKCkpOwotICAgICAgICBtX2N1cnJl
bnRSZWd1bGFyUmVuZGVySm9ic0JhdGNoUmVnaW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdpb24o
KTsKLSAgICB9IGVsc2UgewotICAgICAgICByZW5kZXJlZFJlZ2lvbiA9IHRpbGVSZWdpb24oY29t
cGxldGVkSm9icywgbV9wYXJlbnQtPmZyb250U3RhdGUoKSk7Ci0gICAgfQorICAgIGNvbnN0IFBs
YXRmb3JtOjpJbnRSZWN0UmVnaW9uIHJlbmRlcmVkUmVnaW9uID0gdGlsZVJlZ2lvbihjb21wbGV0
ZWRKb2JzLCBtX3BhcmVudC0+ZnJvbnRTdGF0ZSgpKTsKIAogICAgIG1fcmVndWxhclJlbmRlckpv
YnNOb3RSZW5kZXJlZFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjp1bmlvblJlZ2lv
bnMobV9yZWd1bGFyUmVuZGVySm9ic05vdFJlbmRlcmVkUmVnaW9uLCByZWdpb25Ob3RSZW5kZXJl
ZFRoaXNUaW1lKTsKICAgICBtX2N1cnJlbnRSZWd1bGFyUmVuZGVySm9ic0JhdGNoUmVnaW9uID0g
UGxhdGZvcm06OkludFJlY3RSZWdpb246OnN1YnRyYWN0UmVnaW9ucyhtX2N1cnJlbnRSZWd1bGFy
UmVuZGVySm9ic0JhdGNoUmVnaW9uLCByZWdpb25Ob3RSZW5kZXJlZFRoaXNUaW1lKTsKQEAgLTc5
OSwxMiArNzg1LDkgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyU2Nyb2xsWm9vbUpvYnMoVGls
ZUluZGV4TGlzdCogb3V0c3RhbmRpbmdKb2JzLCBUaWxlSW5kZXgKICAgICBkb3VibGUgZWxhcHNl
ZDsKICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdyA9IG1f
cGFyZW50LT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpOwogICAgIFBsYXRmb3JtOjpJ
bnRSZWN0IGNvbnRlbnRzUmVjdCA9IG1fcGFyZW50LT5leHBhbmRlZENvbnRlbnRzUmVjdCgpOwog
Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZBdmFpbGFibGVCYWNrQnVmZmVycyA9IHNob3VsZERpcmVj
dFJlbmRlcmluZ1RvV2luZG93Ci0gICAgICAgID8gMAotICAgICAgICA6IFN1cmZhY2VQb29sOjpn
bG9iYWxTdXJmYWNlUG9vbCgpLT5udW1iZXJPZkF2YWlsYWJsZUJhY2tCdWZmZXJzKCk7CisgICAg
dW5zaWduZWQgbnVtYmVyT2ZBdmFpbGFibGVCYWNrQnVmZmVycyA9IFN1cmZhY2VQb29sOjpnbG9i
YWxTdXJmYWNlUG9vbCgpLT5udW1iZXJPZkF2YWlsYWJsZUJhY2tCdWZmZXJzKCk7CiAKICAgICAv
LyBJZiB3ZSB0YWtlIG11bHRpcGxlIHR1cm5zIHRvIHJlbmRlciwgd2Ugc29ydCB0byBtYWtlIHRo
ZW0gYXBwZWFyIGluIHRoZSByaWdodCBvcmRlci4KICAgICBpZiAoIWFsbEF0T25jZUlmUG9zc2li
bGUgJiYgb3V0c3RhbmRpbmdKb2JzLT5zaXplKCkgPiBudW1iZXJPZkF2YWlsYWJsZUJhY2tCdWZm
ZXJzKQpAQCAtODcwLDE1ICs4NTMsNiBAQCB2b2lkIFJlbmRlclF1ZXVlOjpyZW5kZXJTY3JvbGxa
b29tSm9icyhUaWxlSW5kZXhMaXN0KiBvdXRzdGFuZGluZ0pvYnMsIFRpbGVJbmRleAogICAgICAg
ICAgICAgYnJlYWs7IC8vIFdlIGNhbiBkbyB0aGUgcmVzdCBuZXh0IHRpbWUuCiAgICAgfQogCi0g
ICAgaWYgKHNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KSB7Ci0gICAgICAgIC8vIEluIGRp
cmVjdCByZW5kZXJpbmcgbW9kZSwgYW55IHpvb20gb3Igc2Nyb2xsIGpvYiB3b3VsZCByZXF1aXJl
IGEKLSAgICAgICAgLy8gZnVsbC1zY3JlZW4gdXBkYXRlLgotICAgICAgICBQbGF0Zm9ybTo6SW50
UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0ID0gbV9wYXJlbnQtPnZpc2libGVDb250ZW50c1JlY3Qo
KTsKLSAgICAgICAgUGxhdGZvcm06OkludFJlY3QgcmVuZGVyZWRSZWN0ID0gbV9wYXJlbnQtPnJl
bmRlckRpcmVjdFRvV2luZG93KHZpc2libGVDb250ZW50c1JlY3QpOwotICAgICAgICBpZiAoIXJl
bmRlcmVkUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBvdXRzdGFuZGluZ0pvYnMtPmNsZWFy
KCk7Ci0gICAgfQotCiAjaWYgREVCVUdfUkVOREVSX1FVRVVFCiAgICAgLy8gU3RvcCB0aGUgdGlt
ZSBtZWFzdXJlbWVudC4KICAgICBlbGFwc2VkID0gV1RGOjpjdXJyZW50VGltZSgpIC0gdGltZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZh
Y2VQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZh
Y2VQb29sLmNwcAppbmRleCBmY2FlOWE3OTE5ODEzMjFjNzdkYTRkMDg5ODM4NzJkM2NmZmI2YmE0
Li4yMGFiNjI2NGU1ZDVhMTUyYjgwMDZiNjE1ZTkxZmUzN2ExMWNhZTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgU3VyZmFjZVBvb2w6OmluaXRpYWxpemUoY29uc3QgUGxh
dGZvcm06OkludFNpemUmIHRpbGVTaXplKQogICAgIH0KIAogICAgIGlmICghbV9udW1iZXJPZkZy
b250QnVmZmVycykKLSAgICAgICAgcmV0dXJuOyAvLyB3ZSBvbmx5IHVzZSBkaXJlY3QgcmVuZGVy
aW5nIHdoZW4gMCB0aWxlcyBhcmUgc3BlY2lmaWVkLgorICAgICAgICByZXR1cm47IC8vIFdlIGNv
bXBsZXRlbHkgZGlzYWJsZSB0aWxlIHJlbmRlcmluZyB3aGVuIDAgdGlsZXMgYXJlIHNwZWNpZmll
ZC4KIAogICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQmFja0J1ZmZlcnMgPSBQbGF0Zm9ybTo6
U2V0dGluZ3M6Omluc3RhbmNlKCktPm51bWJlck9mQmFja2luZ1N0b3JlQmFja0J1ZmZlcnMoKTsK
ICAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlBvb2xUaWxlcyA9IG1fbnVtYmVyT2ZGcm9udEJ1
ZmZlcnMgKyBudW1iZXJPZkJhY2tCdWZmZXJzOyAvLyBiYWNrIGJ1ZmZlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187926</attachid>
            <date>2013-02-12 13:53:33 -0800</date>
            <delta_ts>2013-02-12 15:10:49 -0800</delta_ts>
            <desc>Patch with more boring commit message</desc>
            <filename>bug-109608-20130212164949.patch</filename>
            <type>text/plain</type>
            <size>43921</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA1ZDEwMjMwOWQ5M2FmZDYyYjEyMzRkM2Y5ZmQyZmM3YTFjNzk0Yjk3Li5kNWMxNjlhNTBi
MTZjZWYxMTUyZDRlMTM4NDQ2YTY1MmFlYjkwMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMy0wMi0xMiAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBFbGltaW5hdGUgdGhlIGRp
cmVjdCByZW5kZXJpbmcgb3B0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5NjA4CisgICAgICAgIFJJTSBQUiAyOTMyOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBi
eSBBcnZpZCBOaWxzc29uLgorCisgICAgICAgIEl0IGFkZGVkIGEgbG90IG9mIGNvbXBsZXhpdHkg
YW5kIHdlJ3JlIG5vdCBnb2luZyB0byB1c2UgaXQgYW55bW9yZS4KKyAgICAgICAgVGhpcyBwYXRj
aCByZW1vdmVzIGRpcmVjdCByZW5kZXJpbmcgZnVuY3Rpb25hbGl0eSBmcm9tCisgICAgICAgIFdl
YktpdC9ibGFja2JlcnJ5IHRvZ2V0aGVyIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBibGl0dGlu
ZyBvbiB0aGUKKyAgICAgICAgV2ViS2l0IHRocmVhZCBpcyBwb3NzaWJsZSBvciBhY2NlcHRhYmxl
LiBJdCBub3cgaXNuJ3QgYW55bW9yZS4KKworICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpCYWNr
aW5nU3RvcmVQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0
b3JlUHJpdmF0ZTo6cmVzdW1lU2NyZWVuVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVN1c3BlbmRTY3JlZW5VcGRhdGVTdGF0
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNs
b3dTY3JvbGwpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2
YXRlOjpzY3JvbGwpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQ
cml2YXRlOjpzaG91bGRQZXJmb3JtUmVuZGVySm9icyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlcik6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckFuZEJsaXRJbW1lZGlhdGVseSk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRW
aXNpYmxlQ29udGVudHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3Rv
cmVQcml2YXRlOjpibGl0VG9XaW5kb3cpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpC
YWNraW5nU3RvcmVQcml2YXRlOjpmaWxsV2luZG93KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmNsZWFyV2luZG93KToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0U2Nyb2xs
aW5nT3Jab29taW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3Jl
UHJpdmF0ZTo6ZGlkUmVuZGVyQ29udGVudCk6CisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5o
OgorICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoQmFja2luZ1N0b3Jl
UHJpdmF0ZSk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6cmVzdW1lQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnNldFZpZXdwb3J0U2l6ZSk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21t
aXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzY2hlZHVsZUNvbXBvc2l0aW5nUnVuKToKKyAgICAgICAg
KiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvbkZyYW1lQ2hhbmdlZCk6CisgICAg
ICAgICogQXBpL1dlYlBhZ2VfcC5oOgorICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorICAgICAg
ICAqIEFwaS9XZWJTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIEFw
aS9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3Bw
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxh
clJlbmRlckpvYnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6
cmVuZGVyU2Nyb2xsWm9vbUpvYnMpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvU3VyZmFjZVBv
b2wuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTdXJmYWNlUG9vbDo6aW5pdGlh
bGl6ZSk6CisKIDIwMTMtMDItMTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfWEhSX1JFU1BPTlNFX0JMT0IgaGFuZGxpbmcgZnJv
bSB2YXJpb3VzIGJ1aWxkIHN5c3RlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
QmFja2luZ1N0b3JlLmNwcAppbmRleCAzMmNhMTFkYzdiNzYzNWM0N2M2OGZlYWFiYzQxNjAzZjI2
OGY3Nzc4Li5kOTZmOTMxNDcwM2VlMmFkMjJkZGFmYzdiMjdkOTRlMDhhMzQ4NjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCkBAIC0yMTgsMTEg
KzIxOCw3IEBAIEJhY2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUoKQogICAg
ICwgbV9yZW5kZXJRdWV1ZShhZG9wdFB0cihuZXcgUmVuZGVyUXVldWUodGhpcykpKQogICAgICwg
bV9oYXNCbGl0Sm9icyhmYWxzZSkKICAgICAsIG1fd2ViUGFnZUJhY2tncm91bmRDb2xvcihXZWJD
b3JlOjpDb2xvcjo6d2hpdGUpCi0gICAgLCBtX2N1cnJlbnRXaW5kb3dCYWNrQnVmZmVyKDApCiAg
ICAgLCBtX3ByZWZlcnJlZFRpbGVNYXRyaXhEaW1lbnNpb24oVmVydGljYWwpCi0jaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICwgbV9pc0RpcmVjdFJlbmRlcmluZ0FuaW1hdGlv
bk1lc3NhZ2VTY2hlZHVsZWQoZmFsc2UpCi0jZW5kaWYKIHsKICAgICBtX2Zyb250U3RhdGUgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihuZXcgQmFja2luZ1N0b3JlR2VvbWV0cnkpOwogCkBA
IC0yNTMsMjkgKzI0OSw2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aW5zdHJ1bWVudENh
bmNlbEZyYW1lKCkKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENh
bmNlbEZyYW1lKFdlYlBhZ2VQcml2YXRlOjpjb3JlKG1fd2ViUGFnZSkpOwogfQogCi1ib29sIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkgY29uc3QK
LXsKLSAgICAvLyBEaXJlY3QgcmVuZGVyaW5nIGRvZXNuJ3Qgd29yayB3aXRoIE9wZW5HTCBjb21w
b3NpdGluZyBjb2RlIHBhdGhzIGR1ZSB0bwotICAgIC8vIGEgcmFjZSBjb25kaXRpb24gb24gd2hp
Y2ggdGhyZWFkJ3MgRUdMIGNvbnRleHQgZ2V0cyB0byBtYWtlIHRoZSBzdXJmYWNlCi0gICAgLy8g
Y3VycmVudCwgc2VlIFBSIDEwNTc1MC4KLSAgICAvLyBBcyBhIHdvcmthcm91bmQsIHdlIHdpbGwg
YmUgdXNpbmcgY29tcG9zaXRvciB0byBkcmF3IHRoZSByb290IGxheWVyLgotICAgIGlmIChpc09w
ZW5HTENvbXBvc2l0aW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX3dl
YlBhZ2UtPnNldHRpbmdzKCktPmlzRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgdGhlIEJhY2tpbmdTdG9yZSBpcyBpbmFj
dGl2ZSwgc2VlIGlmIHRoZXJlJ3MgYSBjb21wb3NpdG9yIHRvIGRvIHRoZQotICAgIC8vIHdvcmsg
b2YgcmVuZGVyaW5nIHRoZSByb290IGxheWVyLgotICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAg
ICAgcmV0dXJuICFtX3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcigpOwotCi0g
ICAgY29uc3QgQmFja2luZ1N0b3JlR2VvbWV0cnkqIGdlb21ldHJ5ID0gZnJvbnRTdGF0ZSgpOwot
ICAgIGNvbnN0IHVuc2lnbmVkIHRpbGVzTmVjZXNzYXJ5ID0gbWluaW11bU51bWJlck9mVGlsZXNX
aWRlKCkgKiBtaW5pbXVtTnVtYmVyT2ZUaWxlc0hpZ2goKTsKLSAgICBjb25zdCB1bnNpZ25lZCB0
aWxlc0F2YWlsYWJsZSA9IGdlb21ldHJ5LT5udW1iZXJPZlRpbGVzV2lkZSgpICogZ2VvbWV0cnkt
Pm51bWJlck9mVGlsZXNIaWdoKCk7Ci0gICAgcmV0dXJuIHRpbGVzQXZhaWxhYmxlIDwgdGlsZXNO
ZWNlc3Nhcnk7Ci19Ci0KIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aXNPcGVuR0xDb21wb3Np
dGluZygpIGNvbnN0CiB7CiAgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5jbGll
bnQoKS0+d2luZG93KCkpCkBAIC0zODAsMjcgKzM1MywxOCBAQCB2b2lkIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OnJlc3VtZVNjcmVlblVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bWVVcGRhdGVPcGVy
YXRpbwogICAgIH0KICNlbmRpZgogCi0gICAgLy8gRm9yIHRoZSBkaXJlY3QgcmVuZGVyaW5nIGNh
c2UsIHRoZXJlIGlzIG5vIHN1Y2ggb3BlcmF0aW9uIGFzIGJsaXQsCi0gICAgLy8gd2UgaGF2ZSB0
byByZW5kZXIgdG8gZ2V0IGFueXRoaW5nIHRvIHRoZSBzY3JlZW4uCi0gICAgaWYgKHNob3VsZERp
cmVjdFJlbmRlcmluZ1RvV2luZG93KCkgJiYgb3AgPT0gQmFja2luZ1N0b3JlOjpCbGl0KQotICAg
ICAgICBvcCA9IEJhY2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdDsKLQogICAgIC8vIFJlbmRlciB2
aXNpYmxlIGNvbnRlbnRzIGlmIG5lY2Vzc2FyeS4KICAgICBpZiAob3AgPT0gQmFja2luZ1N0b3Jl
OjpSZW5kZXJBbmRCbGl0KSB7Ci0gICAgICAgIGlmIChzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dp
bmRvdygpKQotICAgICAgICAgICAgcmVuZGVyRGlyZWN0VG9XaW5kb3codmlzaWJsZUNvbnRlbnRz
UmVjdCgpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB1cGRhdGVUaWxlTWF0cml4SWZO
ZWVkZWQoKTsKLSAgICAgICAgICAgIFRpbGVJbmRleExpc3QgdmlzaWJsZVRpbGVzID0gdmlzaWJs
ZVRpbGVJbmRleGVzKGZyb250U3RhdGUoKSk7Ci0gICAgICAgICAgICBUaWxlSW5kZXhMaXN0IHJl
bmRlcmVkVGlsZXMgPSByZW5kZXIodmlzaWJsZVRpbGVzKTsKLQotICAgICAgICAgICAgaWYgKHJl
bmRlcmVkVGlsZXMuc2l6ZSgpICE9IHZpc2libGVUaWxlcy5zaXplKCkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBBZGQgdW5yZW5kZXJlZCBsZWZ0b3ZlciB0aWxlcyB0byB0aGUgcmVuZGVyIHF1ZXVl
LgotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2aXNpYmxlVGlsZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZW5kZXJlZFRpbGVzLmNv
bnRhaW5zKHZpc2libGVUaWxlc1tpXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRm
b3JtOjpJbnRSZWN0IHRpbGVSZWN0KGZyb250U3RhdGUoKS0+b3JpZ2luT2ZUaWxlKHZpc2libGVU
aWxlc1tpXSksIHRpbGVTaXplKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9yZW5kZXJR
dWV1ZS0+YWRkVG9RdWV1ZShSZW5kZXJRdWV1ZTo6VmlzaWJsZVpvb20sIHRpbGVSZWN0KTsKLSAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICB1cGRhdGVUaWxlTWF0cml4SWZOZWVkZWQoKTsK
KyAgICAgICAgVGlsZUluZGV4TGlzdCB2aXNpYmxlVGlsZXMgPSB2aXNpYmxlVGlsZUluZGV4ZXMo
ZnJvbnRTdGF0ZSgpKTsKKyAgICAgICAgVGlsZUluZGV4TGlzdCByZW5kZXJlZFRpbGVzID0gcmVu
ZGVyKHZpc2libGVUaWxlcyk7CisKKyAgICAgICAgaWYgKHJlbmRlcmVkVGlsZXMuc2l6ZSgpICE9
IHZpc2libGVUaWxlcy5zaXplKCkpIHsKKyAgICAgICAgICAgIC8vIEFkZCB1bnJlbmRlcmVkIGxl
ZnRvdmVyIHRpbGVzIHRvIHRoZSByZW5kZXIgcXVldWUuCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmlzaWJsZVRpbGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFyZW5kZXJlZFRpbGVzLmNvbnRhaW5zKHZpc2libGVUaWxlc1tpXSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgdGlsZVJlY3QoZnJvbnRTdGF0ZSgpLT5v
cmlnaW5PZlRpbGUodmlzaWJsZVRpbGVzW2ldKSwgdGlsZVNpemUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fcmVuZGVyUXVldWUtPmFkZFRvUXVldWUoUmVuZGVyUXVldWU6OlZpc2libGVab29t
LCB0aWxlUmVjdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC00MjMsNyArMzg3LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3Jl
ZW5VcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW8KICAgICBtX3dlYlBh
Z2UtPmQtPmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKCk7CiAjZWxzZQogICAgIC8vIERvIHNvbWUg
YmxpdHRpbmcgaWYgbmVjZXNzYXJ5LgotICAgIGlmICgob3AgPT0gQmFja2luZ1N0b3JlOjpCbGl0
IHx8IG9wID09IEJhY2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdCkgJiYgIXNob3VsZERpcmVjdFJl
bmRlcmluZ1RvV2luZG93KCkpCisgICAgaWYgKG9wID09IEJhY2tpbmdTdG9yZTo6QmxpdCB8fCBv
cCA9PSBCYWNraW5nU3RvcmU6OlJlbmRlckFuZEJsaXQpCiAgICAgICAgIGJsaXRWaXNpYmxlQ29u
dGVudHMoKTsKICNlbmRpZgogfQpAQCAtNDM3LDcgKzQwMSw3IEBAIHZvaWQgQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6dXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCkKIAogICAgIGJvb2wgc2hv
dWxkU3VzcGVuZCA9IG1fc3VzcGVuZFNjcmVlblVwZGF0ZUNvdW50ZXJXZWJLaXRUaHJlYWQKICAg
ICAgICAgfHwgIW1fd2ViUGFnZS0+aXNWaXNpYmxlKCkKLSAgICAgICAgfHwgKCFpc0JhY2tpbmdT
dG9yZVVzYWJsZSAmJiAhbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yRHJhd3NSb290TGF5ZXIoKSAm
JiAhc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSk7CisgICAgICAgIHx8ICghaXNCYWNr
aW5nU3RvcmVVc2FibGUgJiYgIW1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvckRyYXdzUm9vdExheWVy
KCkpOwogCiAgICAgaWYgKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXNXZWJLaXRUaHJlYWQgPT0gc2hv
dWxkU3VzcGVuZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTA2LDkgKzQ3MCw5IEBAIHZvaWQgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6c2xvd1Njcm9sbChjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgZGVs
dGEsIGNvbnN0IFBsYXRmCiAgICAgICAgIHJlbmRlckFuZEJsaXRJbW1lZGlhdGVseShyZWN0KTsK
ICAgICBlbHNlIHsKICAgICAgICAgbV9yZW5kZXJRdWV1ZS0+YWRkVG9RdWV1ZShSZW5kZXJRdWV1
ZTo6VmlzaWJsZVNjcm9sbCwgcmVjdCk7Ci0gICAgICAgIC8vIFdlIG9ubHkgYmxpdCBoZXJlIGlm
IHRoZSBjbGllbnQgZGlkIG5vdCBnZW5lcmF0ZSB0aGUgc2Nyb2xsIGFzIHRoZSBjbGllbnQKLSAg
ICAgICAgLy8gbm93IHN1cHBvcnRzIGJsaXR0aW5nIGFzeW5jaHJvbm91c2x5IGR1cmluZyBzY3Jv
bGwgb3BlcmF0aW9ucy4KLSAgICAgICAgaWYgKCFtX2NsaWVudC0+aXNDbGllbnRHZW5lcmF0ZWRT
Y3JvbGwoKSAmJiAhc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKKyAgICAgICAgLy8g
V2Ugb25seSBibGl0IGhlcmUgaWYgdGhlIGNsaWVudCBkaWQgbm90IGdlbmVyYXRlIHRoZSBzY3Jv
bGwgYXMgdGhlCisgICAgICAgIC8vIGNsaWVudCBzdXBwb3J0cyBibGl0dGluZyBhc3luY2hyb25v
dXNseSBkdXJpbmcgc2Nyb2xsIG9wZXJhdGlvbnMuCisgICAgICAgIGlmICghbV9jbGllbnQtPmlz
Q2xpZW50R2VuZXJhdGVkU2Nyb2xsKCkpCiAgICAgICAgICAgICBibGl0VmlzaWJsZUNvbnRlbnRz
KCk7CiAgICAgfQogCkBAIC01MjUsMTQgKzQ4OSw2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6c2Nyb2xsKGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBkZWx0YSwKIHsKICAgICBBU1NFUlQo
QmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJy
ZW50VGhyZWFkKCkpOwogCi0gICAgLy8gSWYgd2UgYXJlIGRpcmVjdCByZW5kZXJpbmcgdGhlbiB3
ZSBhcmUgZm9yY2VkIHRvIGdvIGRvd24gdGhlIHNsb3cgcGF0aAotICAgIC8vIHRvIHNjcm9sbGlu
Zy4KLSAgICBpZiAoc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICBQ
bGF0Zm9ybTo6SW50UmVjdCB2aWV3cG9ydFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBt
X3dlYlBhZ2UtPmQtPnRyYW5zZm9ybWVkVmlld3BvcnRTaXplKCkpOwotICAgICAgICBzbG93U2Ny
b2xsKGRlbHRhLCBtX3dlYlBhZ2UtPmQtPm1hcEZyb21UcmFuc2Zvcm1lZCh2aWV3cG9ydFJlY3Qp
LCB0cnVlIC8qaW1tZWRpYXRlKi8pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAjaWYgREVC
VUdfQkFDS0lOR1NUT1JFCiAgICAgLy8gU3RhcnQgdGhlIHRpbWUgbWVhc3VyZW1lbnQuLi4KICAg
ICBkb3VibGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKQEAgLTU3OSw3ICs1MzUsNyBAQCBi
b29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNob3VsZFN1cHByZXNzTm9uVmlzaWJsZVJlZ3VsYXJS
ZW5kZXJKb2JzKCkgY29uc3QKIAogYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpzaG91bGRQZXJm
b3JtUmVuZGVySm9icygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChpc0FjdGl2ZSgpIHx8IHNob3Vs
ZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpICYmICFtX3N1c3BlbmRSZW5kZXJKb2JzICYmICFt
X3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzICYmICFtX3JlbmRlclF1ZXVlLT5pc0VtcHR5KCFt
X3N1c3BlbmRSZWd1bGFyUmVuZGVySm9icyk7CisgICAgcmV0dXJuIGlzQWN0aXZlKCkgJiYgIW1f
c3VzcGVuZFJlbmRlckpvYnMgJiYgIW1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgJiYgIW1f
cmVuZGVyUXVldWUtPmlzRW1wdHkoIW1fc3VzcGVuZFJlZ3VsYXJSZW5kZXJKb2JzKTsKIH0KIAog
Ym9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpzaG91bGRQZXJmb3JtUmVndWxhclJlbmRlckpvYnMo
KSBjb25zdApAQCAtMTAxNSw0MyArOTcxLDYgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpz
Y3JvbGxCYWNraW5nU3RvcmUoaW50IGRlbHRhWCwgaW50IGRlbHRhWSkKICAgICBzZXRCYWNraW5n
U3RvcmVSZWN0KGJhY2tpbmdTdG9yZVJlY3QsIG1fd2ViUGFnZS0+ZC0+Y3VycmVudFNjYWxlKCkp
OwogfQogCi1QbGF0Zm9ybTo6SW50UmVjdCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJEaXJl
Y3RUb1dpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdCkKLXsKLSAgICByZXF1ZXN0
TGF5b3V0SWZOZWVkZWQoKTsKLQotICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRpcnR5UmVjdCA9IHJl
Y3Q7Ci0gICAgZGlydHlSZWN0LmludGVyc2VjdCh1bmNsaXBwZWRWaXNpYmxlQ29udGVudHNSZWN0
KCkpOwotCi0gICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBQbGF0
Zm9ybTo6SW50UmVjdCgpOwotCi0gICAgUGxhdGZvcm06OlZpZXdwb3J0QWNjZXNzb3IqIHZpZXdw
b3J0QWNjZXNzb3IgPSBtX3dlYlBhZ2UtPndlYmtpdFRocmVhZFZpZXdwb3J0QWNjZXNzb3IoKTsK
LSAgICBQbGF0Zm9ybTo6SW50UmVjdCBzY3JlZW5SZWN0ID0gdmlld3BvcnRBY2Nlc3Nvci0+cGl4
ZWxWaWV3cG9ydEZyb21Db250ZW50cyhkaXJ0eVJlY3QpOwotICAgIHdpbmRvd0Zyb250QnVmZmVy
U3RhdGUoKS0+Y2xlYXJCbGl0dGVkUmVnaW9uKHNjcmVlblJlY3QpOwotCi0gICAgcGFpbnREZWZh
dWx0QmFja2dyb3VuZChkaXJ0eVJlY3QsIHZpZXdwb3J0QWNjZXNzb3IsIHRydWUgLypmbHVzaCov
KTsKLQotICAgIGlmICghcmVuZGVyQ29udGVudHMoYnVmZmVyKCksIHNjcmVlblJlY3QsIHZpZXdw
b3J0QWNjZXNzb3ItPnNjYWxlKCksIHZpZXdwb3J0QWNjZXNzb3ItPmRvY3VtZW50RnJvbVBpeGVs
Q29udGVudHMoZGlydHlSZWN0LmxvY2F0aW9uKCkpKSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
OjpJbnRSZWN0KCk7Ci0KLSAgICB3aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRkQmxpdHRlZFJl
Z2lvbihzY3JlZW5SZWN0KTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICBtX2lzRGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCA9IGZhbHNlOwot
Ci0gICAgaWYgKG1fd2ViUGFnZS0+ZC0+aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkp
IHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNz
YWdlQ2xpZW50KCktPmRpc3BhdGNoU3luY01lc3NhZ2UoCi0gICAgICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgJkJh
Y2tpbmdTdG9yZVByaXZhdGU6OmRyYXdBbmRCbGVuZExheWVyc0ZvckRpcmVjdFJlbmRlcmluZywK
LSAgICAgICAgICAgICAgICB0aGlzLCBkaXJ0eVJlY3QpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IGludmFsaWRhdGVXaW5kb3coc2NyZWVuUmVjdCk7Ci0gICAgbV9yZW5kZXJRdWV1ZS0+Y2xlYXIo
cmVjdCwgUmVuZGVyUXVldWU6OkRvbnRDbGVhckNvbXBsZXRlZEpvYnMpOwotICAgIHJldHVybiBk
aXJ0eVJlY3Q7Ci19Ci0KIFRpbGVJbmRleExpc3QgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVy
KGNvbnN0IFRpbGVJbmRleExpc3QmIHRpbGVJbmRleExpc3QpCiB7CiAgICAgaWYgKCFtX3dlYlBh
Z2UtPmlzVmlzaWJsZSgpKQpAQCAtMTA1OSwxNSArOTc4LDcgQEAgVGlsZUluZGV4TGlzdCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpyZW5kZXIoY29uc3QgVGlsZUluZGV4TGlzdCYgdGlsZUluZGV4TGlz
dCkKIAogICAgIHJlcXVlc3RMYXlvdXRJZk5lZWRlZCgpOwogCi0gICAgaWYgKHNob3VsZERpcmVj
dFJlbmRlcmluZ1RvV2luZG93KCkpIHsKLSAgICAgICAgLy8gV2UgY2Fubm90IGhhbmRsZSB0aWxl
cyBpbiBkaXJlY3QgcmVuZGVyaW5nIG1vZGUuIEJhZCBmdW5jdGlvbiBjYWxsLgotICAgICAgICBB
U1NFUlQoZmFsc2UpOwotICAgICAgICByZXR1cm4gVGlsZUluZGV4TGlzdCgpOwotICAgIH0KLQot
ICAgIC8vIElmIGRpcmVjdCByZW5kZXJpbmcgaXMgb2ZmLCBldmVuIHRob3VnaCB3ZSdyZSBub3Qg
YWN0aXZlLCBzb21lb25lIGVsc2UKLSAgICAvLyBoYXMgdG8gcmVuZGVyIHRoZSByb290IGxheWVy
LiBUaGVyZSBhcmUgbm8gdGlsZXMgYXZhaWxhYmxlIGZvciB1cyB0bwotICAgIC8vIGRyYXcgdG8u
CisgICAgLy8gSWYgbm8gdGlsZXMgYXZhaWxhYmxlIGZvciB1cyB0byBkcmF3IHRvLCBzb21lb25l
IGVsc2UgaGFzIHRvIHJlbmRlciB0aGUgcm9vdCBsYXllci4KICAgICBpZiAoIWlzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybiBUaWxlSW5kZXhMaXN0KCk7CiAKQEAgLTExOTksMjkgKzExMTAsMTEg
QEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJBbmRCbGl0VmlzaWJsZUNvbnRlbnRz
SW1tZWRpYXRlbHkoKQogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckFuZEJsaXRJ
bW1lZGlhdGVseShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoc2hv
dWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICByZW5kZXJEaXJlY3RUb1dp
bmRvdyhyZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIHVwZGF0ZVRpbGVNYXRy
aXhJZk5lZWRlZCgpOwogICAgIG1fcmVuZGVyUXVldWUtPmFkZFRvUXVldWUoUmVuZGVyUXVldWU6
OlZpc2libGVab29tLCByZWN0KTsKICAgICByZW5kZXJKb2IoKTsKIH0KIAotdm9pZCBCYWNraW5n
U3RvcmVQcml2YXRlOjpjb3B5UHJldmlvdXNDb250ZW50c1RvQmFja1N1cmZhY2VPZldpbmRvdygp
Ci17Ci0gICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gcHJldmlvdXNDb250ZW50c1JlZ2lvbgot
ICAgICAgICA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnMod2luZG93
RnJvbnRCdWZmZXJTdGF0ZSgpLT5ibGl0dGVkUmVnaW9uKCksIHdpbmRvd0JhY2tCdWZmZXJTdGF0
ZSgpLT5ibGl0dGVkUmVnaW9uKCkpOwotCi0gICAgaWYgKHByZXZpb3VzQ29udGVudHNSZWdpb24u
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoV2luZG93KiB3aW5kb3cgPSBt
X3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKSkKLSAgICAgICAgd2luZG93LT5jb3B5RnJvbUZy
b250VG9CYWNrKHByZXZpb3VzQ29udGVudHNSZWdpb24pOwotICAgIHdpbmRvd0JhY2tCdWZmZXJT
dGF0ZSgpLT5hZGRCbGl0dGVkUmVnaW9uKHByZXZpb3VzQ29udGVudHNSZWdpb24pOwotfQotCiB2
b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnBhaW50RGVmYXVsdEJhY2tncm91bmQoY29uc3QgUGxh
dGZvcm06OkludFJlY3QmIGRzdFJlY3QsIFBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yKiB2aWV3
cG9ydEFjY2Vzc29yLCBib29sIGZsdXNoKQogewogICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNsaXBw
ZWREc3RSZWN0ID0gZHN0UmVjdDsKQEAgLTEyNTYsMTUgKzExNDksNiBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OnBhaW50RGVmYXVsdEJhY2tncm91bmQoY29uc3QgUGxhdGZvcm06OkludFJl
Y3QmIGRzdFJlYwogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVu
dHMoYm9vbCBmb3JjZSkKIHsKLSAgICAvLyBCbGl0dGluZyBtdXN0IG5ldmVyIGhhcHBlbiBmb3Ig
ZGlyZWN0IHJlbmRlcmluZyBjYXNlLgotICAgIC8vIFVzZSBpbnZhbGlkYXRlV2luZG93KCkgaW5z
dGVhZC4KLSAgICBBU1NFUlQoIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpOwotICAg
IGlmIChzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKSB7Ci0gICAgICAgIFBsYXRmb3Jt
Ojpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCi0gICAgICAgICAgICAiQmFj
a2luZ1N0b3JlOjpibGl0VmlzaWJsZUNvbnRlbnRzIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGlu
IGRpcmVjdCByZW5kZXJpbmcgbW9kZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
aWYgKCFCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGll
bnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpIHsKICAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZSgKICAg
ICAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgK
QEAgLTIwNTMsOSArMTkzNyw2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFRvV2lu
ZG93KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LAogewogICAgIEFTU0VSVChCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXND
dXJyZW50VGhyZWFkKCkpOwogCi0gICAgd2luZG93RnJvbnRCdWZmZXJTdGF0ZSgpLT5jbGVhckJs
aXR0ZWRSZWdpb24oZHN0UmVjdCk7Ci0gICAgd2luZG93QmFja0J1ZmZlclN0YXRlKCktPmFkZEJs
aXR0ZWRSZWdpb24oZHN0UmVjdCk7Ci0KICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkJ1ZmZlciogZHN0QnVmZmVyID0gYnVmZmVyKCk7CiAgICAgQVNTRVJUKGRzdEJ1ZmZlcik7
CiAgICAgQVNTRVJUKHNyY0J1ZmZlcik7CkBAIC0yMDc5LDkgKzE5NjAsNiBAQCB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OmZpbGxXaW5kb3coUGxhdGZvcm06OkdyYXBoaWNzOjpGaWxsUGF0dGVy
biBwYXR0ZXJuLAogewogICAgIEFTU0VSVChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVy
ZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOwogCi0gICAgd2lu
ZG93RnJvbnRCdWZmZXJTdGF0ZSgpLT5jbGVhckJsaXR0ZWRSZWdpb24oZHN0UmVjdCk7Ci0gICAg
d2luZG93QmFja0J1ZmZlclN0YXRlKCktPmFkZEJsaXR0ZWRSZWdpb24oZHN0UmVjdCk7Ci0KICAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogZHN0QnVmZmVyID0gYnVm
ZmVyKCk7CiAgICAgQVNTRVJUKGRzdEJ1ZmZlcik7CiAgICAgaWYgKCFkc3RCdWZmZXIpCkBAIC0y
MTE5LDMwICsxOTk3LDEyIEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0V2ViUGFnZUJh
Y2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAgbV93ZWJQYWdl
QmFja2dyb3VuZENvbG9yID0gY29sb3I7CiB9CiAKLXZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
aW52YWxpZGF0ZVdpbmRvdygpCi17Ci0gICAgLy8gR3JhYiBhIHJlY3QgYXBwcm9wcmlhdGUgZm9y
IHRoZSBjdXJyZW50IHRocmVhZC4KLSAgICBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJ
bnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7Ci0gICAg
ICAgIGlmIChtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2VySW50ZXJmYWNlVmlld3BvcnRBY2Nlc3Nv
cigpKQotICAgICAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhtX3dlYlBhZ2UtPmNsaWVudCgpLT51
c2VySW50ZXJmYWNlVmlld3BvcnRBY2Nlc3NvcigpLT5kZXN0aW5hdGlvblN1cmZhY2VSZWN0KCkp
OwotICAgIH0gZWxzZQotICAgICAgICBpbnZhbGlkYXRlV2luZG93KFBsYXRmb3JtOjpJbnRSZWN0
KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgbV9jbGllbnQtPnRyYW5zZm9ybWVkVmlld3BvcnRT
aXplKCkpKTsKLX0KLQogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93
KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3QpCiB7Ci0gICAgaWYgKGRzdC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJ
bnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKIAotICAg
IGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xp
ZW50KCktPmlzQ3VycmVudFRocmVhZCgpICYmICFzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRv
dygpKSB7Ci0gICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgc3luYyBpbiBvcmRlciB0byBzd2Fw
IHRoZSByZWNlbnRseSBkcmF3biB0aGluZy4uLgotICAgICAgICAvLyBUaGlzIHdpbGwgb25seSBi
ZSBjYWxsZWQgZnJvbSBXZWJLaXQgdGhyZWFkIGR1cmluZyBkaXJlY3QgcmVuZGVyaW5nLgotICAg
ICAgICB0eXBlZGVmIHZvaWQgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0
ZTo6KkZ1bmN0aW9uVHlwZSkoY29uc3QgUGxhdGZvcm06OkludFJlY3QmKTsKLSAgICAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRp
c3BhdGNoU3luY01lc3NhZ2UoCi0gICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3Jl
YXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rpb25UeXBlLCBCYWNraW5nU3RvcmVQcml2YXRlLCBQ
bGF0Zm9ybTo6SW50UmVjdD4oCi0gICAgICAgICAgICAgICAgJkJhY2tpbmdTdG9yZVByaXZhdGU6
OmludmFsaWRhdGVXaW5kb3csIHRoaXMsIGRzdCkpOworICAgIGlmIChkc3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAjaWYgREVCVUdfQkFDS0lOR1NUT1JFCiAgICAgUGxh
dGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKQEAgLTIxNTAsMTgg
KzIwMTAsMTAgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjppbnZhbGlkYXRlV2luZG93KGNv
bnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3QpCiAgICAgICAgIGRzdC50b1N0cmluZygpLmNfc3Ry
KCkpOwogI2VuZGlmCiAKLSAgICAvLyBTaW5jZSBvdXIgd2luZG93IG1heSBhbHNvIGJlIGRvdWJs
ZSBidWZmZXJlZCwgd2UgbmVlZCB0byBhbHNvIGNvcHkgdGhlCi0gICAgLy8gZnJvbnQgYnVmZmVy
J3MgY29udGVudHMgdG8gdGhlIGJhY2sgYnVmZmVyIGJlZm9yZSB3ZSBzd2FwIHRoZW0uIEl0IGlz
Ci0gICAgLy8gYW5hbG9nb3VzIHRvIHdoYXQgd2UgZG8gd2l0aCBvdXIgZG91YmxlIGJ1ZmZlcmVk
IHRpbGVzIGJ5IGNhbGxpbmcKLSAgICAvLyBjb3B5UHJldmlvdXNDb250ZW50c1RvQmFja2luZ1N1
cmZhY2VPZlRpbGUoKS4gSXQgb25seSBhZmZlY3RzIHBhcnRpYWwKLSAgICAvLyBzY3JlZW4gdXBk
YXRlcyBzaW5jZSB3aGVuIHdlIGFyZSBzY3JvbGxpbmcgb3Igem9vbWluZywgdGhlIHdob2xlIHdp
bmRvdwotICAgIC8vIGlzIGludmFsaWRhdGVkIGFueXdheXMgYW5kIG5vIGNvcHlpbmcgaXMgbmVl
ZGVkLgotICAgIGNvcHlQcmV2aW91c0NvbnRlbnRzVG9CYWNrU3VyZmFjZU9mV2luZG93KCk7Ci0K
ICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkc3RSZWN0ID0gZHN0OwogCi0gICAgUGxhdGZvcm06Oklu
dFJlY3Qgdmlld3BvcnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgbV9jbGllbnQtPnRy
YW5zZm9ybWVkVmlld3BvcnRTaXplKCkpOwotICAgIGRzdFJlY3QuaW50ZXJzZWN0KHZpZXdwb3J0
UmVjdCk7CisgICAgUGxhdGZvcm06OkludFJlY3Qgc3VyZmFjZVJlY3QoUGxhdGZvcm06OkludFBv
aW50KDAsIDApLCBzdXJmYWNlU2l6ZSgpKTsKKyAgICBkc3RSZWN0LmludGVyc2VjdChzdXJmYWNl
UmVjdCk7CiAKICAgICBpZiAoZHN0UmVjdC53aWR0aCgpIDw9IDAgfHwgZHN0UmVjdC5oZWlnaHQo
KSA8PSAwKQogICAgICAgICByZXR1cm47CkBAIC0yMTcyLDcgKzIwMjQsNiBAQCB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OmludmFsaWRhdGVXaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3Qm
IGRzdCkKICAgICAgICAgZHN0UmVjdC50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAKLSAg
ICBtX2N1cnJlbnRXaW5kb3dCYWNrQnVmZmVyID0gKG1fY3VycmVudFdpbmRvd0JhY2tCdWZmZXIg
KyAxKSAlIDI7CiAgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+
d2luZG93KCkpCiAgICAgICAgIHdpbmRvdy0+cG9zdChkc3RSZWN0KTsKIH0KQEAgLTIxODMsNyAr
MjAzNCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Y2xlYXJXaW5kb3coY29uc3QgUGxh
dGZvcm06OkludFJlY3QmIHJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYmx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSkKIHsKLSAgICBpZiAoIUJsYWNrQmVycnk6OlBsYXRm
b3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQo
KSAmJiAhc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgeworICAgIGlmICghQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3Vy
cmVudFRocmVhZCgpKSB7CiAgICAgICAgIHR5cGVkZWYgdm9pZCAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVQcml2YXRlOjoqRnVuY3Rpb25UeXBlKShjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdCYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciwKQEAgLTIyMDYsOSArMjA1Nyw2IEBAIHZvaWQgQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6Y2xlYXJXaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QsCiAgICAg
aWYgKCFkc3RCdWZmZXIpCiAgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06Okxv
Z0xldmVsV2FybiwgIkVtcHR5IHdpbmRvdyBidWZmZXIsIGNvdWxkbid0IGNsZWFyV2luZG93Iik7
CiAKLSAgICB3aW5kb3dGcm9udEJ1ZmZlclN0YXRlKCktPmNsZWFyQmxpdHRlZFJlZ2lvbihyZWN0
KTsKLSAgICB3aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRkQmxpdHRlZFJlZ2lvbihyZWN0KTsK
LQogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJCdWZmZXIoZHN0QnVm
ZmVyLCByZWN0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKQEAgLTIyNDAsNyArMjA4
OCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0U2Nyb2xsaW5nT3Jab29taW5nKGJv
b2wgc2Nyb2xsaW5nT3Jab29taW5nLCBib29sIHNoCiAgICAgaWYgKHNjcm9sbGluZ09yWm9vbWlu
ZykKICAgICAgICAgbV9yZW5kZXJRdWV1ZS0+c2V0Q3VycmVudFJlZ3VsYXJSZW5kZXJKb2JCYXRj
aFVuZGVyUHJlc3N1cmUoZmFsc2UpOwogI2lmIEVOQUJMRV9TQ1JPTExCQVJTCi0gICAgZWxzZSBp
ZiAoc2hvdWxkQmxpdCAmJiAhc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKKyAgICBl
bHNlIGlmIChzaG91bGRCbGl0KQogICAgICAgICBibGl0VmlzaWJsZUNvbnRlbnRzKCk7CiAjZW5k
aWYKICAgICBpZiAoIXNjcm9sbGluZ09yWm9vbWluZyAmJiBzaG91bGRQZXJmb3JtUmVndWxhclJl
bmRlckpvYnMoKSkKQEAgLTIzMDgsMzcgKzIxNTYsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZh
dGU6OmFkb3B0QXNGcm9udFN0YXRlKEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBuZXdGcm9udFN0YXRl
KQogICAgIGRlbGV0ZSBvbGRGcm9udFN0YXRlOwogfQogCi1CYWNraW5nU3RvcmVXaW5kb3dCdWZm
ZXJTdGF0ZSogQmFja2luZ1N0b3JlUHJpdmF0ZTo6d2luZG93RnJvbnRCdWZmZXJTdGF0ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICZtX3dpbmRvd0J1ZmZlclN0YXRlWyhtX2N1cnJlbnRXaW5kb3dC
YWNrQnVmZmVyICsgMSkgJSAyXTsKLX0KLQotQmFja2luZ1N0b3JlV2luZG93QnVmZmVyU3RhdGUq
IEJhY2tpbmdTdG9yZVByaXZhdGU6OndpbmRvd0JhY2tCdWZmZXJTdGF0ZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICZtX3dpbmRvd0J1ZmZlclN0YXRlW21fY3VycmVudFdpbmRvd0JhY2tCdWZmZXJd
OwotfQotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcoY29uc3QgUGxh
dGZvcm06OkludFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVh
ZCgpKTsKLSAgICBpZiAoIUJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFk
TWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gQmVjYXVzZSB3ZSdyZSBiZWluZyBjYWxsZWQgc3luYyBmcm9tIHRoZSBXZWJLaXQgdGhy
ZWFkLCB3ZSBjYW4gdXNlCi0gICAgLy8gcmVndWxhciBXZWJQYWdlIHNpemUgYW5kIHRyYW5zZm9y
bWF0aW9uIGZ1bmN0aW9ucyB3aXRob3V0IGNvbmNlcm5zLgotICAgIFdlYkNvcmU6OkludFJlY3Qg
Y29udGVudHNSZWN0ID0gdmlzaWJsZUNvbnRlbnRzUmVjdCgpOwotICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCB1bnRyYW5zZm9ybWVkQ29udGVudHNSZWN0ID0gbV93ZWJQYWdlLT5kLT5tYXBGcm9tVHJh
bnNmb3JtZWRGbG9hdFJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0KGNvbnRlbnRzUmVjdCkpOwotICAg
IFdlYkNvcmU6OkludFJlY3QgY29udGVudHNTY3JlZW5SZWN0ID0gbV9jbGllbnQtPm1hcEZyb21U
cmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFuc2Zvcm1lZFZpZXdwb3J0KGNvbnRlbnRzUmVjdCk7Ci0g
ICAgV2ViQ29yZTo6SW50UmVjdCBkc3RSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRlbnRzU2NyZWVu
UmVjdCwKLSAgICAgICAgV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwg
bV93ZWJQYWdlLT5kLT50cmFuc2Zvcm1lZFZpZXdwb3J0U2l6ZSgpKSk7Ci0KLSAgICAvLyBDaGVj
ayBpZiByZW5kZXJpbmcgY2F1c2VkIGEgY29tbWl0IGFuZCB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUg
bGF5ZXJzLgotICAgIGlmIChXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUqIGNvbXBvc2l0b3IgPSBt
X3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3IoKSkKLSAgICAgICAgY29tcG9zaXRvci0+ZHJhd0xheWVy
cyhkc3RSZWN0LCB1bnRyYW5zZm9ybWVkQ29udGVudHNSZWN0KTsKLX0KLSNlbmRpZgotCiAvLyBz
dGF0aWMKIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0Q3VycmVudEJhY2tpbmdTdG9yZU93
bmVyKFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CkBAIC0yMzU5LDIwICsyMTc2LDE3IEBAIGJvb2wgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6aXNBY3RpdmUoKSBjb25zdAogCiB2b2lkIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OmRpZFJlbmRlckNvbnRlbnQoY29uc3QgUGxhdGZvcm06OkludFJlY3RSZWdpb24mIHJl
bmRlcmVkUmVnaW9uKQogewotICAgIGlmICghc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3co
KSkgewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgaWYgKG1fd2Vi
UGFnZS0+ZC0+bmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpKQotICAgICAgICAg
ICAgbV93ZWJQYWdlLT5kLT5jb21taXRSb290TGF5ZXJJZk5lZWRlZCgpOwotICAgICAgICBlbHNl
CisgICAgaWYgKG1fd2ViUGFnZS0+ZC0+bmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlv
bigpKQorICAgICAgICBtX3dlYlBhZ2UtPmQtPmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKCk7Cisg
ICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc1Njcm9sbGluZ09y
Wm9vbWluZygpKQotICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZG9uJ3QgZHJhZyBkb3duIGZy
YW1lcmF0ZXMgYnkgZG91YmxlLWJsaXR0aW5nLgorICAgIHsKKyAgICAgICAgaWYgKGlzU2Nyb2xs
aW5nT3Jab29taW5nKCkpCisgICAgICAgICAgICByZXR1cm47IC8vIGRvbid0IGRyYWcgZG93biBm
cmFtZXJhdGVzIGJ5IGRvdWJsZS1ibGl0dGluZy4KIAotICAgICAgICAgICAgYmxpdFZpc2libGVD
b250ZW50cygpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIGludmFsaWRhdGVXaW5k
b3coKTsKKyAgICAgICAgYmxpdFZpc2libGVDb250ZW50cygpOworICAgIH0KIAogICAgIC8vIERv
bid0IGlzc3VlIGNvbnRlbnQgcmVuZGVyZWQgY2FsbHMgd2hlbiBhbGwgd2UgcmVuZGVyZWQgd2Fz
IGZpbGxlcgogICAgIC8vIGJhY2tncm91bmQgY29sb3IgYmVmb3JlIHRoZSBwYWdlIGlzIGNvbW1p
dHRlZC4KQEAgLTI0NTMsMTIgKzIyNjcsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6cmVwYWludChp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKICAgICBkLT5yZXBhaW50KFBsYXRm
b3JtOjpJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBjb250ZW50Q2hhbmdlZCwgaW1tZWRp
YXRlKTsKIH0KIAotYm9vbCBCYWNraW5nU3RvcmU6OmlzRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3co
KSBjb25zdAotewotICAgIEJhY2tpbmdTdG9yZU11dGV4TG9ja2VyIGxvY2tlcihkKTsKLSAgICBy
ZXR1cm4gZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKTsKLX0KLQogdm9pZCBCYWNr
aW5nU3RvcmU6OmFjcXVpcmVCYWNraW5nU3RvcmVNZW1vcnkoKQogewogICAgIFN1cmZhY2VQb29s
OjpnbG9iYWxTdXJmYWNlUG9vbCgpLT5jcmVhdGVCdWZmZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuaAppbmRleCAxYzUyM2RlOWE5MDM0NTQ0ZjIxNTQ2
NGE3ZjdlNmJkODcyZGE2ZDg2Li4yZDBiZTE1OTA0Y2ZiYjdjOGM0MzRjYmZiYzg1NGJhZmViZGRh
Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmgKQEAg
LTczLDggKzczLDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQmxpdEpvYnMoKSBjb25zdDsKICAg
ICB2b2lkIGJsaXRPbklkbGUoKTsKIAotICAgIGJvb2wgaXNEaXJlY3RSZW5kZXJpbmdUb1dpbmRv
dygpIGNvbnN0OwotCiAgICAgdm9pZCBhY3F1aXJlQmFja2luZ1N0b3JlTWVtb3J5KCk7CiAgICAg
dm9pZCByZWxlYXNlT3duZWRCYWNraW5nU3RvcmVNZW1vcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCmluZGV4IDJmNDBmNDA3MWEzNGYyYzZi
NTg5YWI5ZmJiZTg2MTZkNjYyMmQ0ZWUuLmVmNTI3MjQ1ZDMyMGVjYzg5OTlkN2FmMjczZDIzY2Zk
Y2MxNjNiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2lu
Z1N0b3JlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZV9wLmgKQEAgLTg5LDI4ICs4OSw2IEBAIHB1YmxpYzoKICAgICBUaWxlTWFwIG1fdGlsZU1hcDsK
IH07CiAKLWNsYXNzIEJhY2tpbmdTdG9yZVdpbmRvd0J1ZmZlclN0YXRlIHsKLXB1YmxpYzoKLSAg
ICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBibGl0dGVkUmVnaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9ibGl0dGVkUmVnaW9uOyB9Ci0gICAgdm9pZCBhZGRCbGl0dGVkUmVnaW9uKGNvbnN0IFBsYXRm
b3JtOjpJbnRSZWN0UmVnaW9uJiByZWdpb24pCi0gICAgewotICAgICAgICBtX2JsaXR0ZWRSZWdp
b24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6dW5pb25SZWdpb25zKG1fYmxpdHRlZFJlZ2lv
biwgcmVnaW9uKTsKLSAgICB9Ci0gICAgdm9pZCBjbGVhckJsaXR0ZWRSZWdpb24oY29uc3QgUGxh
dGZvcm06OkludFJlY3RSZWdpb24mIHJlZ2lvbikKLSAgICB7Ci0gICAgICAgIG1fYmxpdHRlZFJl
Z2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnMobV9ibGl0dGVk
UmVnaW9uLCByZWdpb24pOwotICAgIH0KLSAgICB2b2lkIGNsZWFyQmxpdHRlZFJlZ2lvbigpIHsg
bV9ibGl0dGVkUmVnaW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdpb24oKTsgfQotCi0gICAgYm9v
bCBpc1JlbmRlcmVkKGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNv
bnN0IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uJiBjb250ZW50cykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKGNvbnRl
bnRzLCBtX2JsaXR0ZWRSZWdpb24pLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAg
ICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBtX2JsaXR0ZWRSZWdpb247Ci19OwotCiBjbGFzcyBC
YWNraW5nU3RvcmVQcml2YXRlIDogcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHdWFyZGVk
UG9pbnRlckJhc2UgewogcHVibGljOgogICAgIGVudW0gVGlsZU1hdHJpeERpcmVjdGlvbiB7IEhv
cml6b250YWwsIFZlcnRpY2FsIH07CkBAIC0xMTksMTEgKzk3LDYgQEAgcHVibGljOgogICAgIHZv
aWQgaW5zdHJ1bWVudEJlZ2luRnJhbWUoKTsKICAgICB2b2lkIGluc3RydW1lbnRDYW5jZWxGcmFt
ZSgpOwogCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIGRpcmVjdCByZW5kZXJpbmcgaXMgZXhwbGlj
aXRseSB0dXJuZWQgb24gb3IgaXMKLSAgICAvLyByZXF1aXJlZCBiZWNhdXNlIHRoZSBzdXJmYWNl
IHBvb2wgaXMgbm90IGxhcmdlIGVub3VnaCB0byBtZWV0Ci0gICAgLy8gdGhlIG1pbmltdW0gbnVt
YmVyIG9mIHRpbGVzIHJlcXVpcmVkIHRvIHNjcm9sbC4KLSAgICBib29sIHNob3VsZERpcmVjdFJl
bmRlcmluZ1RvV2luZG93KCkgY29uc3Q7Ci0KICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgd2UncmUg
dXNpbmcgdGhlIE9wZW5HTCBjb2RlIHBhdGggZm9yIGNvbXBvc2l0aW5nIHRoZQogICAgIC8vIGJh
Y2tpbmcgc3RvcmUgdGlsZXMuIFRoaXMgY2FuIGJlIGR1ZSB0byB0aGUgbWFpbiB3aW5kb3cgdXNp
bmcKICAgICAvLyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OldpbmRvdzo6R0xFUzJV
c2FnZS4KQEAgLTE5Myw5ICsxNjYsNiBAQCBwdWJsaWM6CiAgICAgLy8gdGlsZSBtYXRyaXggZ2Vv
bWV0cnkuCiAgICAgdm9pZCBzY3JvbGxCYWNraW5nU3RvcmUoaW50IGRlbHRhWCwgaW50IGRlbHRh
WSk7CiAKLSAgICAvLyBSZW5kZXIgdGhlIGdpdmVuIGRpcnR5IHJlY3QgYW5kIGludmFsaWRhdGUg
dGhlIHNjcmVlbi4KLSAgICBQbGF0Zm9ybTo6SW50UmVjdCByZW5kZXJEaXJlY3RUb1dpbmRvdyhj
b25zdCBQbGF0Zm9ybTo6SW50UmVjdCYpOwotCiAgICAgLy8gUmVuZGVyIHRoZSBnaXZlbiB0aWxl
cyBpZiBlbm91Z2ggYmFjayBidWZmZXJzIGFyZSBhdmFpbGFibGUuCiAgICAgLy8gUmV0dXJuIHRo
ZSBhY3R1YWwgc2V0IG9mIHJlbmRlcmVkIHRpbGVzLgogICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIGJ5IFJlbmRlclF1ZXVlIGFuZCByZXN1bWVTY3JlZW5VcGRhdGVzKCku
CkBAIC0yMTAsMTIgKzE4MCw4IEBAIHB1YmxpYzoKICAgICAvLyBIZWxwZXIgcmVuZGVyIG1ldGhv
ZHMuCiAgICAgdm9pZCByZW5kZXJBbmRCbGl0VmlzaWJsZUNvbnRlbnRzSW1tZWRpYXRlbHkoKTsK
ICAgICB2b2lkIHJlbmRlckFuZEJsaXRJbW1lZGlhdGVseShjb25zdCBQbGF0Zm9ybTo6SW50UmVj
dCYpOwotICAgIHZvaWQgYmxpdFZpc2libGVDb250ZW50cyhib29sIGZvcmNlID0gZmFsc2UpOwot
Ci0gICAgLy8gQXNzdW1lcyB0aGUgcmVjdCB0byBiZSBpbiB3aW5kb3cvdmlld3BvcnQgY29vcmRp
bmF0ZXMuCi0gICAgdm9pZCBjb3B5UHJldmlvdXNDb250ZW50c1RvQmFja1N1cmZhY2VPZldpbmRv
dygpOwotICAgIHZvaWQgY29weVByZXZpb3VzQ29udGVudHNUb1RpbGVCdWZmZXIoY29uc3QgUGxh
dGZvcm06OkludFJlY3QmIGV4Y2x1ZGVSZWN0LCBUaWxlQnVmZmVyKiBkc3RUaWxlQnVmZmVyLCBU
aWxlQnVmZmVyKiBzcmNUaWxlQnVmZmVyKTsKICAgICB2b2lkIHBhaW50RGVmYXVsdEJhY2tncm91
bmQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpWaWV3cG9ydEFjY2Vzc29yKiwgYm9vbCBmbHVzaCk7CisgICAgdm9pZCBibGl0VmlzaWJsZUNv
bnRlbnRzKGJvb2wgZm9yY2UgPSBmYWxzZSk7CiAgICAgdm9pZCBibGl0T25JZGxlKCk7CiAKICAg
ICBQbGF0Zm9ybTo6SW50UmVjdCBibGl0VGlsZVJlY3QoVGlsZUJ1ZmZlciosIGNvbnN0IFBsYXRm
b3JtOjpJbnRSZWN0JiwgY29uc3QgUGxhdGZvcm06OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBCYWNraW5nU3RvcmVHZW9tZXRyeSopOwpAQCAtMjI5LDEy
ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21wb3NpdGVDb250ZW50cyhXZWJDb3JlOjpM
YXllclJlbmRlcmVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNvbnRlbnRzLCBib29sIGNvbnRlbnRzT3BhcXVlKTsKIAog
ICAgIGJvb2wgZHJhd0xheWVyc09uQ29tbWl0SWZOZWVkZWQoKTsKLSAgICB2b2lkIGRyYXdBbmRC
bGVuZExheWVyc0ZvckRpcmVjdFJlbmRlcmluZyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZGly
dHlSZWN0KTsKICAgICAvLyBXZWJQYWdlIHdpbGwgY2FsbCB0aGlzIHdoZW4gZHJhd2luZyBsYXll
cnMgdG8gdGVsbCB1cyB3ZSBkb24ndCBuZWVkIHRvCiAgICAgdm9pZCB3aWxsRHJhd0xheWVyc09u
Q29tbWl0KCkgeyBtX25lZWRzRHJhd0xheWVyc09uQ29tbWl0ID0gZmFsc2U7IH0KLSAgICAvLyBX
ZWJQYWdlQ29tcG9zaXRvciB1c2VzIHRoaXMgdG8gY3V0IGRvd24gb24gZXhjZXNzaXZlIG1lc3Nh
Z2Ugc2VuZGluZy4KLSAgICBib29sIGlzRGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNj
aGVkdWxlZCgpIHsgcmV0dXJuIG1faXNEaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNzYWdlU2No
ZWR1bGVkOyB9Ci0gICAgdm9pZCBzZXREaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNzYWdlU2No
ZWR1bGVkKCkgeyBtX2lzRGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCA9
IHRydWU7IH0KICNlbmRpZgogCiAgICAgdm9pZCBibGl0SG9yaXpvbnRhbFNjcm9sbGJhcigpOwpA
QCAtMzE1LDcgKzI3Nyw2IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpDb2xvciB3ZWJQYWdlQmFj
a2dyb3VuZENvbG9yVXNlckludGVyZmFjZVRocmVhZCgpIGNvbnN0OyAvLyB1c2UgV2ViU2V0dGlu
Z3M6OmJhY2tncm91bmRDb2xvcigpIGZvciB0aGUgV2ViS2l0IHRocmVhZAogICAgIHZvaWQgc2V0
V2ViUGFnZUJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCi0gICAgdm9p
ZCBpbnZhbGlkYXRlV2luZG93KCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlV2luZG93KGNvbnN0IFBs
YXRmb3JtOjpJbnRSZWN0JiBkc3QpOwogICAgIHZvaWQgY2xlYXJXaW5kb3coY29uc3QgUGxhdGZv
cm06OkludFJlY3QmLCB1bnNpZ25lZCBjaGFyIHJlZCwgdW5zaWduZWQgY2hhciBncmVlbiwgdW5z
aWduZWQgY2hhciBibHVlLCB1bnNpZ25lZCBjaGFyIGFscGhhID0gMjU1KTsKIApAQCAtMzI4LDkg
KzI4OSw2IEBAIHB1YmxpYzoKICAgICBCYWNraW5nU3RvcmVHZW9tZXRyeSogZnJvbnRTdGF0ZSgp
IGNvbnN0OwogICAgIHZvaWQgYWRvcHRBc0Zyb250U3RhdGUoQmFja2luZ1N0b3JlR2VvbWV0cnkq
IG5ld0Zyb250U3RhdGUpOwogCi0gICAgQmFja2luZ1N0b3JlV2luZG93QnVmZmVyU3RhdGUqIHdp
bmRvd0Zyb250QnVmZmVyU3RhdGUoKSBjb25zdDsKLSAgICBCYWNraW5nU3RvcmVXaW5kb3dCdWZm
ZXJTdGF0ZSogd2luZG93QmFja0J1ZmZlclN0YXRlKCkgY29uc3Q7Ci0KICAgICBzdGF0aWMgdm9p
ZCBzZXRDdXJyZW50QmFja2luZ1N0b3JlT3duZXIoV2ViUGFnZSopOwogICAgIHN0YXRpYyBXZWJQ
YWdlKiBjdXJyZW50QmFja2luZ1N0b3JlT3duZXIoKSB7IHJldHVybiBCYWNraW5nU3RvcmVQcml2
YXRlOjpzX2N1cnJlbnRCYWNraW5nU3RvcmVPd25lcjsgfQogICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdDsKQEAgLTM2NSw5ICszMjMsNiBAQCBwdWJsaWM6CiAKICAgICBtdXRhYmxlIHVuc2lnbmVk
IG1fZnJvbnRTdGF0ZTsKIAotICAgIHVuc2lnbmVkIG1fY3VycmVudFdpbmRvd0JhY2tCdWZmZXI7
Ci0gICAgbXV0YWJsZSBCYWNraW5nU3RvcmVXaW5kb3dCdWZmZXJTdGF0ZSBtX3dpbmRvd0J1ZmZl
clN0YXRlWzJdOwotCiAgICAgVGlsZU1hdHJpeERpcmVjdGlvbiBtX3ByZWZlcnJlZFRpbGVNYXRy
aXhEaW1lbnNpb247CiAKICAgICBQbGF0Zm9ybTo6SW50UmVjdCBtX3Zpc2libGVUaWxlQnVmZmVy
UmVjdDsKQEAgLTM3Niw3ICszMzEsNiBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgbXV0YWJsZSBib29sIG1fbmVlZHNEcmF3TGF5ZXJzT25Db21taXQ7
IC8vIE5vdCB0aHJlYWQgc2FmZSwgV2ViS2l0IHRocmVhZCBvbmx5Ci0gICAgYm9vbCBtX2lzRGly
ZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZDsKICNlbmRpZgogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCA4YzVjYTJm
YTRiYmQzMjBlNzYzOGYxZGUwMDY0MDEzZDZhMzI3ZTNhLi5mNjYyODdmNTMwMTZkYmY1MjljOTcx
ZTMzZDBiNDk1ODJkZGM5NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAy
MDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTM1NjcsMTAgKzM1NjcsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyZXN1bWVCYWNr
aW5nU3RvcmUoKQogewogICAgIEFTU0VSVChtX3dlYlBhZ2UtPmlzVmlzaWJsZSgpKTsKIAotICAg
IGJvb2wgZGlyZWN0UmVuZGVyaW5nID0gbV9iYWNraW5nU3RvcmUtPmQtPnNob3VsZERpcmVjdFJl
bmRlcmluZ1RvV2luZG93KCk7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZC0+aXNBY3RpdmUo
KQotICAgICAgICB8fCBzaG91bGRSZXNldFRpbGVzV2hlblNob3duKCkKLSAgICAgICAgfHwgZGly
ZWN0UmVuZGVyaW5nKSB7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZC0+aXNBY3RpdmUoKSB8
fCBzaG91bGRSZXNldFRpbGVzV2hlblNob3duKCkpIHsKICAgICAgICAgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6c2V0Q3VycmVudEJhY2tpbmdTdG9yZU93bmVyKG1fd2ViUGFnZSk7CiAKICAgICAgICAg
Ly8gSWYgd2UncmUgT3BlbkdMIGNvbXBvc2l0aW5nLCBzd2l0Y2hpbmcgdG8gYWNjZWwgY29tcCBk
cmF3aW5nIG9mIHRoZSByb290IGxheWVyCkBAIC0zNjQ5LDEwICszNjQ2LDYgQEAgdm9pZCBXZWJQ
YWdlUHJpdmF0ZTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHRyYW5zZm9ybWVkQWN0
dWFsVmlzaWJsZVNpemUKIAogICAgIGJvb2wgaGFzUGVuZGluZ09yaWVudGF0aW9uID0gbV9wZW5k
aW5nT3JpZW50YXRpb24gIT0gLTE7CiAKLSAgICAvLyBUaGUgd2luZG93IGJ1ZmZlcnMgbWlnaHQg
aGF2ZSBiZWVuIHJlY3JlYXRlZCwgY2xlYXJlZCwgbW92ZWQsIGV0Yy4sIHNvOgotICAgIG1fYmFj
a2luZ1N0b3JlLT5kLT53aW5kb3dGcm9udEJ1ZmZlclN0YXRlKCktPmNsZWFyQmxpdHRlZFJlZ2lv
bigpOwotICAgIG1fYmFja2luZ1N0b3JlLT5kLT53aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+Y2xl
YXJCbGl0dGVkUmVnaW9uKCk7Ci0KICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUJlZm9yZSA9IGFj
dHVhbFZpc2libGVTaXplKCk7CiAgICAgRmxvYXRQb2ludCBjZW50ZXJPZlZpc2libGVDb250ZW50
c1JlY3QgPSB0aGlzLT5jZW50ZXJPZlZpc2libGVDb250ZW50c1JlY3QoKTsKICAgICBib29sIG5l
d1Zpc2libGVSZWN0Q29udGFpbnNPbGRWaXNpYmxlUmVjdCA9IChtX2FjdHVhbFZpc2libGVIZWln
aHQgPD0gdHJhbnNmb3JtZWRBY3R1YWxWaXNpYmxlU2l6ZS5oZWlnaHQoKSkKQEAgLTM4MDYsMjAg
KzM3OTksMTAgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHRyYW5zZm9ybWVkQWN0dWFsVmlzaWJsZVNpemUKICAgICAvLyBUcnkgYW5kIHpvb20g
aGVyZSB3aXRoIGNsYW1waW5nIG9uLgogICAgIC8vIEZJWE1FOiBEZXRlcm1pbmUgd2h5IHRoZSBh
Ym92ZSBjb21tZW50IHNheXMgImNsYW1waW5nIG9uIiwgeWV0IHdlCiAgICAgLy8gICBkb24ndCBz
ZXQgZW5mb3JjZVNjYWxlQ2xhbXBpbmcgdG8gdHJ1ZS4KLSAgICAvLyBGSVhNRTogRGV0ZXJtaW5l
IHdoeSBlbnN1cmVDb250ZW50VmlzaWJsZSgpIGlzIG9ubHkgY2FsbGVkIGZvciAhc3VjY2Vzcwot
ICAgIC8vICAgaW4gdGhlIGRpcmVjdC1yZW5kZXJpbmcgY2FzZSwgYnV0IGluIGFsbCBjYXNlcyBv
dGhlcndpc2UuIENoYW5jZXMgYXJlCi0gICAgLy8gICBvbmUgb2YgdGhlc2UgaXMgaW5jb3JyZWN0
IGFuZCB3ZSBjYW4gdW5pZnkgdHdvIGJyYW5jaGVzIGludG8gb25lLgotICAgIGlmIChtX2JhY2tp
bmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICBi
b29sIHN1Y2Nlc3MgPSB6b29tQWJvdXRQb2ludChzY2FsZSwgYW5jaG9yLCBmYWxzZSAvKiBlbmZv
cmNlU2NhbGVDbGFtcGluZyAqLywgdHJ1ZSAvKiBmb3JjZVJlbmRlcmluZyAqLyk7Ci0gICAgICAg
IGlmICghc3VjY2VzcyAmJiBlbnN1cmVGb2N1c0VsZW1lbnRWaXNpYmxlKQotICAgICAgICAgICAg
ZW5zdXJlQ29udGVudFZpc2libGUoIW5ld1Zpc2libGVSZWN0Q29udGFpbnNPbGRWaXNpYmxlUmVj
dCk7Ci0KLSAgICB9IGVsc2UgaWYgKHpvb21BYm91dFBvaW50KHNjYWxlLCBhbmNob3IsIGZhbHNl
IC8qZW5mb3JjZVNjYWxlQ2xhbXBpbmcqLywgdHJ1ZSAvKmZvcmNlUmVuZGVyaW5nKi8pKSB7Cisg
ICAgaWYgKHpvb21BYm91dFBvaW50KHNjYWxlLCBhbmNob3IsIGZhbHNlIC8qZW5mb3JjZVNjYWxl
Q2xhbXBpbmcqLywgdHJ1ZSAvKmZvcmNlUmVuZGVyaW5nKi8pKSB7CiAgICAgICAgIGlmIChlbnN1
cmVGb2N1c0VsZW1lbnRWaXNpYmxlKQogICAgICAgICAgICAgZW5zdXJlQ29udGVudFZpc2libGUo
IW5ld1Zpc2libGVSZWN0Q29udGFpbnNPbGRWaXNpYmxlUmVjdCk7Ci0KICAgICB9IGVsc2Ugewot
CiAgICAgICAgIC8vIFN1c3BlbmQgYWxsIHVwZGF0ZXMgdG8gdGhlIGJhY2tpbmdzdG9yZS4KICAg
ICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnN1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzKCk7CiAK
QEAgLTU2MDcsMjQgKzU1OTAsMTUgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29t
bWl0VGltZXJGaXJlZChUaW1lcjxXZWJQYWdlUHJpdmF0ZT4qKQogICAgIC8vIGJhY2tpbmcgc3Rv
cmUsIGRvaW5nIGEgb25lIHNob3QgZHJhd2luZyBzeW5jaHJvbml6YXRpb24gd2l0aCB0aGUKICAg
ICAvLyBiYWNraW5nIHN0b3JlIGlzIG5ldmVyIG5lY2Vzc2FyeSwgYmVjYXVzZSB0aGUgYmFja2lu
ZyBzdG9yZSBkcmF3cwogICAgIC8vIG5vdGhpbmcuCi0gICAgaWYgKCFjb21wb3NpdG9yRHJhd3NS
b290TGF5ZXIoKSkgewotICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgZGlyZWN0IHJlbmRlcmlu
ZyBhbmQgaGF2ZSBhIHNpbmdsZSByZW5kZXJpbmcgdGFyZ2V0LAotICAgICAgICAvLyBjb21taXR0
aW5nIGlzIGVxdWl2YWxlbnQgdG8gYSBvbmUgc2hvdCBkcmF3aW5nIHN5bmNocm9uaXphdGlvbi4K
LSAgICAgICAgLy8gV2UgbmVlZCB0byByZS1yZW5kZXIgdGhlIHdlYiBwYWdlLCByZS1yZW5kZXIg
dGhlIGxheWVycywgYW5kCi0gICAgICAgIC8vIHRoZW4gYmxpdCB0aGVtIG9uIHRvcCBvZiB0aGUg
cmUtcmVuZGVyZWQgd2ViIHBhZ2UuCi0gICAgICAgIGlmIChtX2JhY2tpbmdTdG9yZS0+ZC0+aXNP
cGVuR0xDb21wb3NpdGluZygpICYmIG1fYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5k
ZXJpbmdUb1dpbmRvdygpKQotICAgICAgICAgICAgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNo
cm9uaXphdGlvbigpOwotCi0gICAgICAgIGlmIChuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCkpIHsKKyAgICBpZiAoIWNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcigpICYmIG5lZWRz
T25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKSkgewogI2lmIERFQlVHX0FDX0NPTU1JVAot
ICAgICAgICAgICAgUGxhdGZvcm06OmxvZ0Fsd2F5cyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNh
bCwKLSAgICAgICAgICAgICAgICAiJXM6IE9uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uIGNv
ZGUgcGF0aCEiLAotICAgICAgICAgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04pOworICAgICAg
ICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAorICAgICAg
ICAgICAgIiVzOiBPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbiBjb2RlIHBhdGghIiwKKyAg
ICAgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04pOwogI2VuZGlmCi0gICAgICAgICAgICBjb25z
dCBJbnRSZWN0IHdpbmRvd1JlY3QgPSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHZpZXdwb3J0
U2l6ZSgpKTsKLSAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXBhaW50KHdpbmRvd1Jl
Y3QsIHRydWUgLypjb250ZW50Q2hhbmdlZCovLCB0cnVlIC8qaW1tZWRpYXRlKi8pOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnN0IEludFJlY3Qgd2luZG93UmVj
dCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgdmlld3BvcnRTaXplKCkpOworICAgICAgICBt
X2JhY2tpbmdTdG9yZS0+ZC0+cmVwYWludCh3aW5kb3dSZWN0LCB0cnVlIC8qY29udGVudENoYW5n
ZWQqLywgdHJ1ZSAvKmltbWVkaWF0ZSovKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGNvbW1pdFJvb3RMYXllcklmTmVlZGVkKCk7CkBAIC02MDUxLDE0ICs2MDI1LDYgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wgZW5hYmxlZCkKIH0K
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgV2ViUGFnZVByaXZhdGU6
OmJsaXRWaXNpYmxlQ29udGVudHMoKQotewotICAgIGlmIChtX2JhY2tpbmdTdG9yZS0+ZC0+c2hv
dWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9i
YWNraW5nU3RvcmUtPmQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKLX0KLQogdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6c2NoZWR1bGVDb21wb3NpdGluZ1J1bigpCiB7CiAgICAgaWYgKFdlYlBhZ2VDb21w
b3NpdG9yQ2xpZW50KiBjb21wb3NpdG9yQ2xpZW50ID0gY29tcG9zaXRvcigpLT5jbGllbnQoKSkg
ewpAQCAtNjA2Nyw5ICs2MDMzLDggQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2NoZWR1bGVDb21w
b3NpdGluZ1J1bigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBibGl0VmlzaWJsZUNv
bnRlbnRzKCk7CisgICAgbV9iYWNraW5nU3RvcmUtPmQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsK
IH0KLQogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6c2V0V2ViR0xFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
ci5jcHAKaW5kZXggYTQ5MDlkNzY0NTIwMzc3ZDllYjNlNTg1NWVmMzNhMTczZjcyNDRhYS4uYWM1
MjZiNmNkZWNmNWVlZjBhZjU5NDAzNGYyMDQ3M2FhY2JlMjIyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKQEAgLTIzMywxOSAr
MjMzLDggQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvbkZyYW1lQ2hh
bmdlZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYmFja2luZ1N0b3JlLT5k
LT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKSB7Ci0gICAgICAgIGlmIChiYWNraW5n
U3RvcmUtPmQtPmlzRGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpKQot
ICAgICAgICAgICAgcmV0dXJuOyAvLyBkb24ndCBzZW5kIG5ldyBtZXNzYWdlcyBhcyBsb25nIGFz
IHdlIGhhdmVuJ3QgcmVyZW5kZXJlZAotCi0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTsKLQotICAgICAgICBiYWNraW5nU3RvcmUtPmQtPnNldERpcmVjdFJlbmRl
cmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKTsKLSAgICAgICAgd2ViS2l0VGhyZWFkTWVz
c2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoY3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoJkJh
Y2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckFuZEJsaXRWaXNpYmxlQ29udGVudHNJbW1lZGlhdGVs
eSwgYmFja2luZ1N0b3JlLT5kKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAo
IW1fd2ViUGFnZS0+bmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpKQotICAgICAg
ICBtX3dlYlBhZ2UtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKKyAgICAgICAgYmFja2luZ1N0b3Jl
LT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7CiB9CiAKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2
YXRlOjpjb21wb3NpdG9yRGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2VfcC5oCmluZGV4IDJiZjQyOTg3YTQ4ODE2N2E1MTg2NDExNWNiMDcyM2YxYmY1ZTIzMzcu
LjBhZjJiMzU4NzM5MDVjOGM0NGIwYTVmZTdmZTM4MzEyMTBjNjVhYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaApAQCAtNDIxLDcgKzQyMSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGVhc2VMYXllclJlc291cmNlc0NvbXBvc2l0aW5nVGhyZWFkKCk7CiAgICAg
dm9pZCBzdXNwZW5kUm9vdExheWVyQ29tbWl0KCk7CiAgICAgdm9pZCByZXN1bWVSb290TGF5ZXJD
b21taXQoKTsKLSAgICB2b2lkIGJsaXRWaXNpYmxlQ29udGVudHMoKTsKIAogICAgIHZvaWQgc2No
ZWR1bGVDb21wb3NpdGluZ1J1bigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViU2V0dGluZ3MuY3BwCmluZGV4IDcyMzlmZTgyYWJhYzM5OTc4ZGRmNWQ0ODg3MGUz
YWQwM2QwYjQ3MGYuLjRhZDZmN2YwNWYxNjFjZjEyMTY0MGVlMWUxOTIzZWUxYmM5NjNhNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCkBAIC00MCw3
ICs0MCw2IEBAIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciwgKEFTQ0lJCiBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmcsIChBU0NJSUxpdGVyYWwo
IkJsYWNrQmVycnlBc3luY2hyb25vdXNTcGVsbENoZWNraW5nIikpKTsKIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5QmFja2dyb3VuZENvbG9yLCAoQVNDSUlMaXRlcmFsKCJC
bGFja0JlcnJ5QmFja2dyb3VuZENvbG9yIikpKTsKIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBCbGFja0JlcnJ5Q29va2llc0VuYWJsZWQsIChBU0NJSUxpdGVyYWwoIkJsYWNrQmVycnlDb29r
aWVzRW5hYmxlZCIpKSk7Ci1ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeURp
cmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZCwgKEFTQ0lJTGl0ZXJhbCgiQmxhY2tCZXJyeURp
cmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZCIpKSk7CiBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgQmxhY2tCZXJyeURyYXdCb3JkZXJXaGlsZUxvYWRpbmdJbWFnZXMsIChBU0NJSUxpdGVy
YWwoIkJsYWNrQmVycnlEcmF3Qm9yZGVyV2hpbGVMb2FkaW5nSW1hZ2VzIikpKTsKIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5RW1haWxNb2RlRW5hYmxlZCwgKEFTQ0lJbGl0
ZXJhbCgiQmxhY2tCZXJyeUVtYWlsTW9kZUVuYWJsZWQiKSkpOwogREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIEJsYWNrQmVycnlHZXRGb2N1c05vZGVDb250ZXh0RW5hYmxlZCwgKEFTQ0lJTGl0
ZXJhbCgiQmxhY2tCZXJyeUdldEZvY3VzTm9kZUNvbnRleHRFbmFibGVkIikpKTsKQEAgLTc0NCwx
NiArNzQzLDYgQEAgdm9pZCBXZWJTZXR0aW5nczo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChi
b29sIGVuYWJsZSkKICAgICBtX3ByaXZhdGUtPnNldEJvb2xlYW4oV2ViS2l0RnJhbWVGbGF0dGVu
aW5nRW5hYmxlZCwgZW5hYmxlKTsKIH0KIAotYm9vbCBXZWJTZXR0aW5nczo6aXNEaXJlY3RSZW5k
ZXJpbmdUb1dpbmRvd0VuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmdl
dEJvb2xlYW4oQmxhY2tCZXJyeURpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZCk7Ci19Ci0K
LXZvaWQgV2ViU2V0dGluZ3M6OnNldERpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZChib29s
IGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxhY2tCZXJyeURpcmVjdFJl
bmRlcmluZ1RvV2luZG93RW5hYmxlZCwgZW5hYmxlKTsKLX0KLQogYm9vbCBXZWJTZXR0aW5nczo6
aXNCYWNraW5nU3RvcmVFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5n
ZXRCb29sZWFuKEJsYWNrQmVycnlCYWNraW5nU3RvcmVFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaAppbmRleCA1Nzg1OWYxZGNlNjcxNGU3YjFiMWRl
MTVjNzJkNGJmMTkwMDRkODk5Li45OGQzYmQyMTcyNTU3YzkyODRmMjkxMjNjOTVlNjM5NmIyOTUy
MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5oCkBAIC0y
MTQsOSArMjE0LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJvb2wpOwogCi0g
ICAgYm9vbCBpc0RpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkKGJvb2wpOwotCiAgICAgdW5zaWdu
ZWQgbWF4UGx1Z2luSW5zdGFuY2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNYXhQbHVnaW5JbnN0
YW5jZXModW5zaWduZWQgbnVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3BwCmluZGV4IDcwNDVmMTU1Njc5YzcyYWE5
YmNlZTI5ZTRiN2YxMjVjNGM1NWE0NDkuLjc5NjMzNjZhNTI1Y2Y5YjMyZDAwZDAxNDQwMjczYTMw
Mjc0ZTk4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L1JlbmRlclF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAKQEAgLTYxNSw3ICs2MTUsNiBAQCB2b2lkIFJlbmRlclF1
ZXVlOjpyZW5kZXJSZWd1bGFyUmVuZGVySm9icyhib29sIGFsbEF0T25jZUlmUG9zc2libGUpCiAg
ICAgICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2guY2xlYXIoKTsKICAgICB9CiAK
LSAgICBib29sIHNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93ID0gbV9wYXJlbnQtPnNob3Vs
ZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCk7CiAgICAgUGxhdGZvcm06OkludFJlY3QgY29udGVu
dHNSZWN0ID0gbV9wYXJlbnQtPmV4cGFuZGVkQ29udGVudHNSZWN0KCk7CiAKICAgICAvLyBTdGFy
dCBuZXcgYmF0Y2ggaWYgbmVlZGVkLgpAQCAtNjI0LDEyICs2MjMsMTAgQEAgdm9pZCBSZW5kZXJR
dWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYnMoYm9vbCBhbGxBdE9uY2VJZlBvc3NpYmxlKQog
ICAgICAgICBtX3JlZ3VsYXJSZW5kZXJKb2JzUmVnaW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdp
b246OmludGVyc2VjdFJlZ2lvbnMobV9yZWd1bGFyUmVuZGVySm9ic1JlZ2lvbiwgY29udGVudHNS
ZWN0KTsKIAogICAgICAgICAvLyBTcGxpdCB0aGUgY3VycmVudCByZWd1bGFyIHJlbmRlciBqb2Ig
cmVnaW9uIGludG8gdGlsZXMuCi0gICAgICAgIGlmICghc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9X
aW5kb3cpIHsKLSAgICAgICAgICAgIC8vIERpc2NhcmQgcmVnaW9ucyBvdXRzaWRlIG9mIHRoZSBy
ZWdpb24gY292ZXJlZCBieSB0aGVzZSB0aWxlcy4KLSAgICAgICAgICAgIC8vIFRoZXknbGwgYmUg
cmVuZGVyZWQgd2hlbiB0aGUgZ2VvbWV0cnkgY2hhbmdlcy4KLSAgICAgICAgICAgIG1fcmVndWxh
clJlbmRlckpvYnNSZWdpb24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbjo6aW50ZXJzZWN0UmVn
aW9ucyhtX3JlZ3VsYXJSZW5kZXJKb2JzUmVnaW9uLCBtX3BhcmVudC0+ZnJvbnRTdGF0ZSgpLT5i
YWNraW5nU3RvcmVSZWN0KCkpOwotICAgICAgICAgICAgbV9jdXJyZW50UmVndWxhclJlbmRlckpv
YnNCYXRjaCA9IHRpbGVJbmRleGVzSW50ZXJzZWN0aW5nUmVnaW9uKG1fcmVndWxhclJlbmRlckpv
YnNSZWdpb24sIG1fcGFyZW50LT5mcm9udFN0YXRlKCkpOwotICAgICAgICB9CisgICAgICAgIC8v
IERpc2NhcmQgcmVnaW9ucyBvdXRzaWRlIG9mIHRoZSByZWdpb24gY292ZXJlZCBieSB0aGVzZSB0
aWxlcy4KKyAgICAgICAgLy8gVGhleSdsbCBiZSByZW5kZXJlZCB3aGVuIHRoZSBnZW9tZXRyeSBj
aGFuZ2VzLgorICAgICAgICBtX3JlZ3VsYXJSZW5kZXJKb2JzUmVnaW9uID0gUGxhdGZvcm06Oklu
dFJlY3RSZWdpb246OmludGVyc2VjdFJlZ2lvbnMobV9yZWd1bGFyUmVuZGVySm9ic1JlZ2lvbiwg
bV9wYXJlbnQtPmZyb250U3RhdGUoKS0+YmFja2luZ1N0b3JlUmVjdCgpKTsKKyAgICAgICAgbV9j
dXJyZW50UmVndWxhclJlbmRlckpvYnNCYXRjaCA9IHRpbGVJbmRleGVzSW50ZXJzZWN0aW5nUmVn
aW9uKG1fcmVndWxhclJlbmRlckpvYnNSZWdpb24sIG1fcGFyZW50LT5mcm9udFN0YXRlKCkpOwog
CiAgICAgICAgIC8vIENyZWF0ZSBhIHJlZ2lvbiBvYmplY3QgdGhhdCB3aWxsIGJlIGNoZWNrZWQg
d2hlbiBhZGRpbmcgbmV3IHJlY3RzIGJlZm9yZQogICAgICAgICAvLyB0aGlzIGJhdGNoIGhhcyBi
ZWVuIGNvbXBsZXRlZC4KQEAgLTY1Myw5ICs2NTAsNyBAQCB2b2lkIFJlbmRlclF1ZXVlOjpyZW5k
ZXJSZWd1bGFyUmVuZGVySm9icyhib29sIGFsbEF0T25jZUlmUG9zc2libGUpCiAgICAgVGlsZUlu
ZGV4TGlzdCBjb21wbGV0ZWRKb2JzOwogICAgIFRpbGVJbmRleExpc3QgdGlsZXNUb1JlbmRlcjsK
IAotICAgIHVuc2lnbmVkIG51bWJlck9mQXZhaWxhYmxlQmFja0J1ZmZlcnMgPSBzaG91bGREaXJl
Y3RSZW5kZXJpbmdUb1dpbmRvdwotICAgICAgICA/IDAKLSAgICAgICAgOiBTdXJmYWNlUG9vbDo6
Z2xvYmFsU3VyZmFjZVBvb2woKS0+bnVtYmVyT2ZBdmFpbGFibGVCYWNrQnVmZmVycygpOworICAg
IHVuc2lnbmVkIG51bWJlck9mQXZhaWxhYmxlQmFja0J1ZmZlcnMgPSBTdXJmYWNlUG9vbDo6Z2xv
YmFsU3VyZmFjZVBvb2woKS0+bnVtYmVyT2ZBdmFpbGFibGVCYWNrQnVmZmVycygpOwogCiAgICAg
d2hpbGUgKCFvdXRzdGFuZGluZ0pvYnMtPmlzRW1wdHkoKSAmJiBudW1iZXJPZkF2YWlsYWJsZUJh
Y2tCdWZmZXJzKSB7CiAgICAgICAgIC8vIFJlbmRlciBhcyBtYW55IHRpbGVzIGF0IG9uY2UgYXMg
d2UgY2FuIGhhbmRsZS4KQEAgLTczOCwxNiArNzMzLDcgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVu
ZGVyUmVndWxhclJlbmRlckpvYnMoYm9vbCBhbGxBdE9uY2VJZlBvc3NpYmxlKQogICAgICAgICAg
ICAgYnJlYWs7IC8vIFdlIGNhbiBkbyB0aGUgcmVzdCBuZXh0IHRpbWUuCiAgICAgfQogCi0gICAg
UGxhdGZvcm06OkludFJlY3RSZWdpb24gcmVuZGVyZWRSZWdpb247Ci0KLSAgICBpZiAoc2hvdWxk
RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3cpIHsKLSAgICAgICAgLy8gVHJ5IHJlbmRlcmluZyBvbmNl
LCBpZiB3ZSdyZSBzdXNwZW5kZWQgdGhlcmUgd2lsbCBiZSBhbm90aGVyCi0gICAgICAgIC8vIGZ1
bGwtc2NyZWVuIHVwZGF0ZSBsYXRlciBvbiBhbnl3YXlzLgotICAgICAgICByZW5kZXJlZFJlZ2lv
biA9IG1fcGFyZW50LT5yZW5kZXJEaXJlY3RUb1dpbmRvdyhtX2N1cnJlbnRSZWd1bGFyUmVuZGVy
Sm9ic0JhdGNoUmVnaW9uLmV4dGVudHMoKSk7Ci0gICAgICAgIG1fY3VycmVudFJlZ3VsYXJSZW5k
ZXJKb2JzQmF0Y2hSZWdpb24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbigpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHJlbmRlcmVkUmVnaW9uID0gdGlsZVJlZ2lvbihjb21wbGV0ZWRKb2JzLCBt
X3BhcmVudC0+ZnJvbnRTdGF0ZSgpKTsKLSAgICB9CisgICAgY29uc3QgUGxhdGZvcm06OkludFJl
Y3RSZWdpb24gcmVuZGVyZWRSZWdpb24gPSB0aWxlUmVnaW9uKGNvbXBsZXRlZEpvYnMsIG1fcGFy
ZW50LT5mcm9udFN0YXRlKCkpOwogCiAgICAgbV9yZWd1bGFyUmVuZGVySm9ic05vdFJlbmRlcmVk
UmVnaW9uID0gUGxhdGZvcm06OkludFJlY3RSZWdpb246OnVuaW9uUmVnaW9ucyhtX3JlZ3VsYXJS
ZW5kZXJKb2JzTm90UmVuZGVyZWRSZWdpb24sIHJlZ2lvbk5vdFJlbmRlcmVkVGhpc1RpbWUpOwog
ICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2hSZWdpb24gPSBQbGF0Zm9ybTo6SW50
UmVjdFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0
Y2hSZWdpb24sIHJlZ2lvbk5vdFJlbmRlcmVkVGhpc1RpbWUpOwpAQCAtNzk5LDEyICs3ODUsOSBA
QCB2b2lkIFJlbmRlclF1ZXVlOjpyZW5kZXJTY3JvbGxab29tSm9icyhUaWxlSW5kZXhMaXN0KiBv
dXRzdGFuZGluZ0pvYnMsIFRpbGVJbmRleAogICAgIGRvdWJsZSBlbGFwc2VkOwogI2VuZGlmCiAK
LSAgICBib29sIHNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93ID0gbV9wYXJlbnQtPnNob3Vs
ZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCk7CiAgICAgUGxhdGZvcm06OkludFJlY3QgY29udGVu
dHNSZWN0ID0gbV9wYXJlbnQtPmV4cGFuZGVkQ29udGVudHNSZWN0KCk7CiAKLSAgICB1bnNpZ25l
ZCBudW1iZXJPZkF2YWlsYWJsZUJhY2tCdWZmZXJzID0gc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9X
aW5kb3cKLSAgICAgICAgPyAwCi0gICAgICAgIDogU3VyZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQ
b29sKCktPm51bWJlck9mQXZhaWxhYmxlQmFja0J1ZmZlcnMoKTsKKyAgICB1bnNpZ25lZCBudW1i
ZXJPZkF2YWlsYWJsZUJhY2tCdWZmZXJzID0gU3VyZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29s
KCktPm51bWJlck9mQXZhaWxhYmxlQmFja0J1ZmZlcnMoKTsKIAogICAgIC8vIElmIHdlIHRha2Ug
bXVsdGlwbGUgdHVybnMgdG8gcmVuZGVyLCB3ZSBzb3J0IHRvIG1ha2UgdGhlbSBhcHBlYXIgaW4g
dGhlIHJpZ2h0IG9yZGVyLgogICAgIGlmICghYWxsQXRPbmNlSWZQb3NzaWJsZSAmJiBvdXRzdGFu
ZGluZ0pvYnMtPnNpemUoKSA+IG51bWJlck9mQXZhaWxhYmxlQmFja0J1ZmZlcnMpCkBAIC04NzAs
MTUgKzg1Myw2IEBAIHZvaWQgUmVuZGVyUXVldWU6OnJlbmRlclNjcm9sbFpvb21Kb2JzKFRpbGVJ
bmRleExpc3QqIG91dHN0YW5kaW5nSm9icywgVGlsZUluZGV4CiAgICAgICAgICAgICBicmVhazsg
Ly8gV2UgY2FuIGRvIHRoZSByZXN0IG5leHQgdGltZS4KICAgICB9CiAKLSAgICBpZiAoc2hvdWxk
RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3cpIHsKLSAgICAgICAgLy8gSW4gZGlyZWN0IHJlbmRlcmlu
ZyBtb2RlLCBhbnkgem9vbSBvciBzY3JvbGwgam9iIHdvdWxkIHJlcXVpcmUgYQotICAgICAgICAv
LyBmdWxsLXNjcmVlbiB1cGRhdGUuCi0gICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IHZpc2libGVD
b250ZW50c1JlY3QgPSBtX3BhcmVudC0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpOwotICAgICAgICBQ
bGF0Zm9ybTo6SW50UmVjdCByZW5kZXJlZFJlY3QgPSBtX3BhcmVudC0+cmVuZGVyRGlyZWN0VG9X
aW5kb3codmlzaWJsZUNvbnRlbnRzUmVjdCk7Ci0gICAgICAgIGlmICghcmVuZGVyZWRSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIG91dHN0YW5kaW5nSm9icy0+Y2xlYXIoKTsKLSAgICB9Ci0K
ICNpZiBERUJVR19SRU5ERVJfUVVFVUUKICAgICAvLyBTdG9wIHRoZSB0aW1lIG1lYXN1cmVtZW50
LgogICAgIGVsYXBzZWQgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuY3BwCmlu
ZGV4IGZjYWU5YTc5MTk4MTMyMWM3N2RhNGQwODk4Mzg3MmQzY2ZmYjZiYTQuLjIwYWI2MjY0ZTVk
NWExNTJiODAwNmI2MTVlOTFmZTM3YTExY2FlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5jcHAKQEAgLTg2LDcgKzg2
LDcgQEAgdm9pZCBTdXJmYWNlUG9vbDo6aW5pdGlhbGl6ZShjb25zdCBQbGF0Zm9ybTo6SW50U2l6
ZSYgdGlsZVNpemUpCiAgICAgfQogCiAgICAgaWYgKCFtX251bWJlck9mRnJvbnRCdWZmZXJzKQot
ICAgICAgICByZXR1cm47IC8vIHdlIG9ubHkgdXNlIGRpcmVjdCByZW5kZXJpbmcgd2hlbiAwIHRp
bGVzIGFyZSBzcGVjaWZpZWQuCisgICAgICAgIHJldHVybjsgLy8gV2UgY29tcGxldGVseSBkaXNh
YmxlIHRpbGUgcmVuZGVyaW5nIHdoZW4gMCB0aWxlcyBhcmUgc3BlY2lmaWVkLgogCiAgICAgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZCYWNrQnVmZmVycyA9IFBsYXRmb3JtOjpTZXR0aW5nczo6aW5z
dGFuY2UoKS0+bnVtYmVyT2ZCYWNraW5nU3RvcmVCYWNrQnVmZmVycygpOwogICAgIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mUG9vbFRpbGVzID0gbV9udW1iZXJPZkZyb250QnVmZmVycyArIG51bWJl
ck9mQmFja0J1ZmZlcnM7IC8vIGJhY2sgYnVmZmVyCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>