<?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>150007</bug_id>
          
          <creation_ts>2015-10-10 18:05:16 -0700</creation_ts>
          <short_desc>Use references and more const in SVGPathUtilities</short_desc>
          <delta_ts>2015-10-10 23:16:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>krit</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132187</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-10 18:05:16 -0700</bug_when>
    <thetext>Use references and more const in SVGPathUtilities</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132188</commentid>
    <comment_count>1</comment_count>
      <attachid>262842</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-10 18:06:38 -0700</bug_when>
    <thetext>Created attachment 262842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132199</commentid>
    <comment_count>2</comment_count>
      <attachid>262842</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-10-10 20:59:44 -0700</bug_when>
    <thetext>Comment on attachment 262842
Patch

svg needs more love.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132212</commentid>
    <comment_count>3</comment_count>
      <attachid>262842</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-10 22:33:10 -0700</bug_when>
    <thetext>Comment on attachment 262842
Patch

More is coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132220</commentid>
    <comment_count>4</comment_count>
      <attachid>262842</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-10 23:16:52 -0700</bug_when>
    <thetext>Comment on attachment 262842
Patch

Clearing flags on attachment: 262842

Committed r190844: &lt;http://trac.webkit.org/changeset/190844&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132221</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-10 23:16:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262842</attachid>
            <date>2015-10-10 18:06:38 -0700</date>
            <delta_ts>2015-10-10 23:16:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150007-20151010180603.patch</filename>
            <type>text/plain</type>
            <size>37995</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM5ZDA3YWE0YmUyNGY1
MmY1NjliZjA2YWE2M2RkMGU0OWIyYWU5MS4uYzhjZDkyMGQwZjQ3ZDJhNjBjYTU4YTQ0ZDJlM2I1
Njk0OGJiZDZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTEwLTEwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSByZWZlcmVu
Y2VzIGFuZCBtb3JlIGNvbnN0IGluIFNWR1BhdGhVdGlsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgU1ZHUGF0aFV0aWxpdGllcyBo
YWQgbG90cyBvZiBwb2ludGVycyB3aG9zZSBub24tbnVsbG5lc3Mgd2FzIGFzc2VydGVkLAorICAg
ICAgICBsaXR0bGUgY29uc3QsIGFuZCB3YXMgdmVyeSB0cmlnZ2VyLWhhcHB5IHdpdGggc3RhY2sg
YWxsb2NhdGlvbnMuIENsZWFuCisgICAgICAgIHRoYXQgYWxsIHVwLgorCisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhB
bmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFBhdGhBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhCeXRlU3RyZWFtOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0
ZVN0cmVhbTo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjphcHBl
bmQpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6U1ZHUGF0aEJ5dGVTdHJlYW1Tb3Vy
Y2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVu
dDo6Z2V0VG90YWxMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6Omdl
dFBvaW50QXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmdldFBh
dGhTZWdBdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhCeXRlU3Ry
ZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OlNWR1BhdGhFbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRo
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Omdsb2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Omdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2xvYmFsU1ZHUGF0aFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQ
YXRoQmxlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFBhdGhGcm9tU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNl
Zyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEFuaW1h
dGVkU1ZHUGF0aEJ5dGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6YWRkVG9TVkdQYXRoQnl0
ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZH
UGF0aEJ5dGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VG90YWxMZW5ndGhPZlNWR1Bh
dGhCeXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBvaW50QXRMZW5ndGhPZlNWR1Bh
dGhCeXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU3RyaW5nRnJvbVBhdGgpOgor
ICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjo6YW5pbVZhbERpZENo
YW5nZSk6CisKIDIwMTUtMTAtMDkgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBWDogQVJJQSAxLjEgaW1wbGVtZW50IGFyaWEtY29sY291bnQsIGFyaWEtY29saW5kZXgs
IGFyaWEtY29sc3BhbiwgYXJpYS1yb3djb3VudCwgYXJpYS1yb3dpbmRleCBhbmQgYXJpYS1yb3dz
cGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCmluZGV4IDM4MzFmYzJlYjhk
Y2M5NWU5NmVjYzhhZTMwNWZmZDAyNmZmYzJjOTQuLjBiZjIwN2ZmMjVjZmY4NGVhOTBiOGNlMTlm
MmQ0NjMzMGVjMTc4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkBA
IC0zNCw3ICszNCw3IEBAIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpTVkdBbmltYXRlZFBhdGhB
bmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FCiBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6
Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwotICAgIGJ1aWxkU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU3RyaW5nKHN0cmluZywgYnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2lu
Zyk7CisgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoc3RyaW5nLCAqYnl0ZVN0
cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3Jl
YXRlUGF0aChXVEY6Om1vdmUoYnl0ZVN0cmVhbSkpOwogfQogCkBAIC01OCw3ICs1OCw3IEBAIHZv
aWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wCiAgICAgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZiogcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxTVkdB
bmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihhbmltYXRlZFR5cGVzWzBdLnByb3Bl
cnRpZXNbMF0uZ2V0KCkpOwogICAgIGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBiYXNlVmFsdWUgPSBw
cm9wZXJ0eS0+Y3VycmVudEJhc2VWYWx1ZSgpOwogCi0gICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TVkdQYXRoU2VnTGlzdChiYXNlVmFsdWUsIGJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNp
bmcpOworICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoYmFzZVZh
bHVlLCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7CiAKICAgICBWZWN0b3I8UmVmUHRy
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+PiByZXN1bHQ7CiAKQEAgLTEw
NCw3ICsxMDQsNyBAQCB2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjphZGRBbmltYXRlZFR5
cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZQogICAgIHVuc2lnbmVkIGZyb21Q
YXRoU2l6ZSA9IGZyb21QYXRoLT5zaXplKCk7CiAgICAgaWYgKCFmcm9tUGF0aFNpemUgfHwgZnJv
bVBhdGhTaXplICE9IHRvUGF0aC0+c2l6ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgYWRkVG9T
VkdQYXRoQnl0ZVN0cmVhbSh0b1BhdGgsIGZyb21QYXRoKTsKKyAgICBhZGRUb1NWR1BhdGhCeXRl
U3RyZWFtKCp0b1BhdGgsICpmcm9tUGF0aCk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5p
bWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bywg
U1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmlt
YXRlZCkKQEAgLTEzMywxNSArMTMzLDE1IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKICAgICBp
ZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdQYXRoQnl0
ZVN0cmVhbT4oKmZyb21QYXRoLCAqdG9QYXRoLCAqYW5pbWF0ZWRQYXRoLCBwZXJjZW50YWdlLCBm
YWxzZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0
cmVhbShmcm9tUGF0aCwgdG9QYXRoLCBhbmltYXRlZFBhdGgsIHBlcmNlbnRhZ2UpOworICAgIGJ1
aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVhbSgqZnJvbVBhdGgsICp0b1BhdGgsICphbmltYXRl
ZFBhdGgsIHBlcmNlbnRhZ2UpOwogCiAgICAgLy8gSGFuZGxlIGFkZGl0aXZlPSdzdW0nLgogICAg
IGlmIChsYXN0QW5pbWF0ZWRQYXRoKQotICAgICAgICBhZGRUb1NWR1BhdGhCeXRlU3RyZWFtKGFu
aW1hdGVkUGF0aCwgbGFzdEFuaW1hdGVkUGF0aC5nZXQoKSk7CisgICAgICAgIGFkZFRvU1ZHUGF0
aEJ5dGVTdHJlYW0oKmFuaW1hdGVkUGF0aCwgKmxhc3RBbmltYXRlZFBhdGgpOwogCiAgICAgLy8g
SGFuZGxlIGFjY3VtdWxhdGU9J3N1bScuCiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+aXNB
Y2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50KQotICAgICAgICBhZGRUb1NWR1BhdGhCeXRlU3Ry
ZWFtKGFuaW1hdGVkUGF0aCwgdG9BdEVuZE9mRHVyYXRpb25QYXRoLCByZXBlYXRDb3VudCk7Cisg
ICAgICAgIGFkZFRvU1ZHUGF0aEJ5dGVTdHJlYW0oKmFuaW1hdGVkUGF0aCwgKnRvQXRFbmRPZkR1
cmF0aW9uUGF0aCwgcmVwZWF0Q291bnQpOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZFBhdGhBbmlt
YXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggYTc1YWI0NjcyZTI5YTAxYzRh
ZjRlZjQ5ZDRlZGQ0YTViYzI5NWI2MC4uYTgzYWZlZjliZDMxNzdiOThiMjc4MjBhMjUzZDIxYjg0
OGM2YTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAgLTU1LDEw
ICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Bh
dGhCeXRlU3RyZWFtPihtX2RhdGEpOwogICAgIH0KIAotICAgIERhdGFJdGVyYXRvciBiZWdpbigp
IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9Ci0gICAgRGF0YUl0ZXJhdG9yIGVuZCgpIHsgcmV0
dXJuIG1fZGF0YS5lbmQoKTsgfQorICAgIERhdGFJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5iZWdpbigpOyB9CisgICAgRGF0YUl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5lbmQoKTsgfQorCiAgICAgdm9pZCBhcHBlbmQodW5zaWduZWQgY2hhciBieXRl
KSB7IG1fZGF0YS5hcHBlbmQoYnl0ZSk7IH0KLSAgICB2b2lkIGFwcGVuZChTVkdQYXRoQnl0ZVN0
cmVhbSYgb3RoZXIpCisgICAgdm9pZCBhcHBlbmQoY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIG90
aGVyKQogICAgIHsKICAgICAgICAgZm9yIChhdXRvIHN0cmVhbSA6IG90aGVyKQogICAgICAgICAg
ICAgYXBwZW5kKHN0cmVhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlLmNwcAppbmRleCBmYzFmZWI2MTRmZjBmOTgwMjdjMDE4YjczNzEwN2Y1YjAzMmJk
MDdlLi5mYTQzOTIyZjQyOTZiMWUzZGU0NGIzNTg2ZDhiMzJlNTA1ZjI3ZjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAKQEAgLTIyLDExICsy
MiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhCeXRlU3RyZWFtU291cmNl
OjpTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtKQorU1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OlNWR1BhdGhCeXRlU3RyZWFtU291cmNlKGNvbnN0IFNWR1Bh
dGhCeXRlU3RyZWFtJiBzdHJlYW0pCiB7Ci0gICAgQVNTRVJUKHN0cmVhbSk7Ci0gICAgbV9zdHJl
YW1DdXJyZW50ID0gc3RyZWFtLT5iZWdpbigpOwotICAgIG1fc3RyZWFtRW5kID0gc3RyZWFtLT5l
bmQoKTsKKyAgICBtX3N0cmVhbUN1cnJlbnQgPSBzdHJlYW0uYmVnaW4oKTsKKyAgICBtX3N0cmVh
bUVuZCA9IHN0cmVhbS5lbmQoKTsKIH0KIAogYm9vbCBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6
aGFzTW9yZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJl
YW1Tb3VyY2UuaAppbmRleCBlZGFjZGM5MDlmZjA4NjVkOWYwMzZkNzA2MjEwMzllNmZmNzU5Yjcx
Li5iN2E2NjQwNjA5ZWU5NTQ1MTVjNGI3OTlmMmNhNzg0YWFmNjQxOGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaApAQCAtMjgsNyArMjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIDogcHVi
bGljIFNWR1BhdGhTb3VyY2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlKFNWR1BhdGhCeXRlU3RyZWFtKik7CisgICAgZXhwbGljaXQgU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UoY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mKTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4IDZlODQwNWQ2YTE3NDIyZGM0Mzg1NTJiOWRiYjUyODA3
NjZmYTFhMjMuLjk5MWI3NzVlYTQ0NmY4MTBhODlmMDFhZDQ2YTYxNzk3ZGM3ZmYwNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcApAQCAtODAsNyArODAsNiBAQCBFTkRfUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHUGF0aEVsZW1lbnQ6OlNWR1Bh
dGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICA6IFNWR0dyYXBoaWNzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1f
cGF0aEJ5dGVTdHJlYW0oc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKSkKICAg
ICAsIG1fcGF0aFNlZ0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpCiAgICAgLCBtX2lzQW5pbVZh
bE9ic2VydmVkKGZhbHNlKQogewpAQCAtOTMsMjEgKzkyLDIxIEBAIFJlZjxTVkdQYXRoRWxlbWVu
dD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGF0aEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKIH0KIAotZmxvYXQgU1ZHUGF0aEVsZW1lbnQ6OmdldFRvdGFsTGVuZ3RoKCkK
K2Zsb2F0IFNWR1BhdGhFbGVtZW50OjpnZXRUb3RhbExlbmd0aCgpIGNvbnN0CiB7CiAgICAgZmxv
YXQgdG90YWxMZW5ndGggPSAwOwogICAgIGdldFRvdGFsTGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVh
bShwYXRoQnl0ZVN0cmVhbSgpLCB0b3RhbExlbmd0aCk7CiAgICAgcmV0dXJuIHRvdGFsTGVuZ3Ro
OwogfQogCi1TVkdQb2ludCBTVkdQYXRoRWxlbWVudDo6Z2V0UG9pbnRBdExlbmd0aChmbG9hdCBs
ZW5ndGgpCitTVkdQb2ludCBTVkdQYXRoRWxlbWVudDo6Z2V0UG9pbnRBdExlbmd0aChmbG9hdCBs
ZW5ndGgpIGNvbnN0CiB7CiAgICAgU1ZHUG9pbnQgcG9pbnQ7CiAgICAgZ2V0UG9pbnRBdExlbmd0
aE9mU1ZHUGF0aEJ5dGVTdHJlYW0ocGF0aEJ5dGVTdHJlYW0oKSwgbGVuZ3RoLCBwb2ludCk7CiAg
ICAgcmV0dXJuIHBvaW50OwogfQogCi11bnNpZ25lZCBTVkdQYXRoRWxlbWVudDo6Z2V0UGF0aFNl
Z0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCkKK3Vuc2lnbmVkIFNWR1BhdGhFbGVtZW50OjpnZXRQYXRo
U2VnQXRMZW5ndGgoZmxvYXQgbGVuZ3RoKSBjb25zdAogewogICAgIHVuc2lnbmVkIHBhdGhTZWcg
PSAwOwogICAgIGdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbShwYXRo
Qnl0ZVN0cmVhbSgpLCBsZW5ndGgsIHBhdGhTZWcpOwpAQCAtMjI0LDcgKzIyMyw3IEBAIGJvb2wg
U1ZHUGF0aEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogdm9pZCBTVkdQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAgICAgICAgaWYgKCFidWlsZFNWR1BhdGhCeXRl
U3RyZWFtRnJvbVN0cmluZyh2YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVk
UGFyc2luZykpCisgICAgICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmco
dmFsdWUsIG1fcGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpKQogICAgICAgICAgICAg
ZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIlByb2JsZW0gcGFy
c2luZyBkPVwiIiArIHZhbHVlICsgIlwiIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0y
NTQsNyArMjUzLDcgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmRBdHRyKSB7CiAgICAgICAgIGlmIChtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXpl
ICYmICFTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBT
VkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPih0aGlzLCBkUHJvcGVydHlJbmZv
KCkpLT5pc0FuaW1hdGluZygpKSB7CiAgICAgICAgICAgICBTVkdQYXRoU2VnTGlzdCBuZXdMaXN0
KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsKLSAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RG
cm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCB0aGlzLCBuZXdMaXN0LCBVbmFs
dGVyZWRQYXJzaW5nKTsKKyAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0
cmVhbShtX3BhdGhCeXRlU3RyZWFtLCAqdGhpcywgbmV3TGlzdCwgVW5hbHRlcmVkUGFyc2luZyk7
CiAgICAgICAgICAgICBtX3BhdGhTZWdMaXN0LnZhbHVlID0gbmV3TGlzdDsKICAgICAgICAgfQog
CkBAIC0yOTMsMTIgKzI5MiwxNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpyZW1vdmVkRnJvbShD
b250YWluZXJOb2RlJiByb290UGFyZW50KQogICAgIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2ll
cygpOwogfQogCi1TVkdQYXRoQnl0ZVN0cmVhbSogU1ZHUGF0aEVsZW1lbnQ6OnBhdGhCeXRlU3Ry
ZWFtKCkgY29uc3QKK2NvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBTVkdQYXRoRWxlbWVudDo6cGF0
aEJ5dGVTdHJlYW0oKSBjb25zdAogewogICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIHByb3BlcnR5
ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4odGhpcywgZFByb3BlcnR5SW5mbygp
KTsKICAgICBpZiAoIXByb3BlcnR5IHx8ICFwcm9wZXJ0eS0+aXNBbmltYXRpbmcoKSkKLSAgICAg
ICAgcmV0dXJuIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqPihwcm9wZXJ0eSktPmFuaW1h
dGVkUGF0aEJ5dGVTdHJlYW0oKTsKKyAgICAgICAgcmV0dXJuIG1fcGF0aEJ5dGVTdHJlYW07Cisg
ICAgCisgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIGFuaW1hdGVkUGF0aEJ5dGVTdHJlYW0gPSBzdGF0
aWNfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKj4ocHJvcGVydHkp
LT5hbmltYXRlZFBhdGhCeXRlU3RyZWFtKCk7CisgICAgaWYgKCFhbmltYXRlZFBhdGhCeXRlU3Ry
ZWFtKQorICAgICAgICByZXR1cm4gbV9wYXRoQnl0ZVN0cmVhbTsKKworICAgIHJldHVybiAqYW5p
bWF0ZWRQYXRoQnl0ZVN0cmVhbTsKIH0KIAogUmVmPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1Bh
dGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURXcmFwcGVyKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQpAQCAtMzEwLDcgKzMxNCw3IEBAIFJlZjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQYXRo
RWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3JhcHBlcihTVkdFbGVtZW50KiBjb250CiAgICAgICAg
IHJldHVybiAqcHJvcGVydHk7CiAKICAgICAvLyBCdWlsZCBpbml0aWFsIFNWR1BhdGhTZWdMaXN0
LgotICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShvd25lclR5cGUubV9wYXRo
Qnl0ZVN0cmVhbS5nZXQoKSwgJm93bmVyVHlwZSwgb3duZXJUeXBlLm1fcGF0aFNlZ0xpc3QudmFs
dWUsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0
cmVhbShvd25lclR5cGUubV9wYXRoQnl0ZVN0cmVhbSwgb3duZXJUeXBlLCBvd25lclR5cGUubV9w
YXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2luZyk7CiAKICAgICByZXR1cm4gU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdB
bmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdD4KICAgICAg
ICAgKCZvd25lclR5cGUsIGRQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLm1fcGF0aFNlZ0xpc3Qu
dmFsdWUpOwpAQCAtMzU5LDkgKzM2Myw5IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdM
aXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSByb2xlLCBMaXN0TW9kaWZpY2F0aW9uIGxpCiAgICAg
Y2FzZSBQYXRoU2VnVW5hbHRlcmVkUm9sZToKICAgICAgICAgaWYgKGxpc3RNb2RpZmljYXRpb24g
PT0gTGlzdE1vZGlmaWNhdGlvbkFwcGVuZCkgewogICAgICAgICAgICAgQVNTRVJUKCFtX3BhdGhT
ZWdMaXN0LnZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBhcHBlbmRTVkdQYXRoQnl0ZVN0
cmVhbUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFsdWUubGFzdCgpLmNvcHlSZWYoKSwg
bV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBh
cHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFsdWUu
bGFzdCgpLmNvcHlSZWYoKSwgbV9wYXRoQnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQ
YXRoU2VnTGlzdChtX3BhdGhTZWdMaXN0LnZhbHVlLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBV
bmFsdGVyZWRQYXJzaW5nKTsKKyAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9t
U1ZHUGF0aFNlZ0xpc3QobV9wYXRoU2VnTGlzdC52YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbSwgVW5h
bHRlcmVkUGFyc2luZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGF0aFNlZ1VuZGVmaW5l
ZFJvbGU6CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKaW5k
ZXggYTc0NDBhYzMzMzJlYTQ0NGQ5M2YxMGY5MzFmNjU5MjRmNzA1OWVmNy4uYWNmZDM4YjQyNThh
ZGVhNzkyNjg1MTcxNDA2MGZiZDBkNjYxMjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmgKQEAgLTU3LDkgKzU3LDkgQEAgY2xhc3MgU1ZHUGF0aEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgU1ZHR3JhcGhpY3NFbGVtZW50LAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHUGF0aEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICAKLSAg
ICBmbG9hdCBnZXRUb3RhbExlbmd0aCgpOwotICAgIFNWR1BvaW50IGdldFBvaW50QXRMZW5ndGgo
ZmxvYXQgZGlzdGFuY2UpOwotICAgIHVuc2lnbmVkIGdldFBhdGhTZWdBdExlbmd0aChmbG9hdCBk
aXN0YW5jZSk7CisgICAgZmxvYXQgZ2V0VG90YWxMZW5ndGgoKSBjb25zdDsKKyAgICBTVkdQb2lu
dCBnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKSBjb25zdDsKKyAgICB1bnNpZ25lZCBn
ZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpIGNvbnN0OwogCiAgICAgUmVmPFNWR1Bh
dGhTZWdDbG9zZVBhdGg+IGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgoU1ZHUGF0aFNlZ1JvbGUg
PSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CiAgICAgUmVmPFNWR1BhdGhTZWdNb3ZldG9BYnM+IGNy
ZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUg
PSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBT
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogbm9ybWFsaXplZFBhdGhTZWdMaXN0KCk7CiAg
ICAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhT
ZWdMaXN0KCk7CiAKLSAgICBTVkdQYXRoQnl0ZVN0cmVhbSogcGF0aEJ5dGVTdHJlYW0oKSBjb25z
dDsKKyAgICBjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgcGF0aEJ5dGVTdHJlYW0oKSBjb25zdDsK
IAogICAgIHZvaWQgcGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdSb2xlLCBMaXN0TW9kaWZp
Y2F0aW9uID0gTGlzdE1vZGlmaWNhdGlvblVua25vd24pOwogCkBAIC0xMjQsNyArMTI0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpOwogCiBwcml2
YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9wYXRoQnl0ZVN0
cmVhbTsKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbSBtX3BhdGhCeXRlU3RyZWFtOwogICAgIG11dGFi
bGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1BhdGhTZWdMaXN0PiBtX3Bh
dGhTZWdMaXN0OwogICAgIGJvb2wgbV9pc0FuaW1WYWxPYnNlcnZlZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggYWVhNWY1MTc2NDI4ZThmNThjNDM1YjIx
OTk3ZjI5OTlkM2FlZmY1MC4uYjNjYzA0OWUxNWNlYjI5YmVjYmYyN2E0NGJjODU2YjgwMGM1OTZk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtMzcsNzYgKzM3
LDYwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNWR1BhdGhCdWlsZGVyKiBn
bG9iYWxTVkdQYXRoQnVpbGRlcihQYXRoJiByZXN1bHQpCisvLyBGSVhNRTogYXJlIGFsbCB0aGVz
ZSBnbG9iYWxzIHdhcnJhbnRlZD8gV2h5IG5vdCBqdXN0IG1ha2UgdGhlbSBvbiB0aGUgc3RhY2s/
CitzdGF0aWMgU1ZHUGF0aEJ1aWxkZXImIGdsb2JhbFNWR1BhdGhCdWlsZGVyKFBhdGgmIHJlc3Vs
dCkKIHsKLSAgICBzdGF0aWMgU1ZHUGF0aEJ1aWxkZXIqIHNfYnVpbGRlciA9IG51bGxwdHI7Ci0g
ICAgaWYgKCFzX2J1aWxkZXIpCi0gICAgICAgIHNfYnVpbGRlciA9IG5ldyBTVkdQYXRoQnVpbGRl
cjsKLQotICAgIHNfYnVpbGRlci0+c2V0Q3VycmVudFBhdGgoJnJlc3VsdCk7Ci0gICAgcmV0dXJu
IHNfYnVpbGRlcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHUGF0aEJ1aWxkZXI+IHNf
YnVpbGRlcjsKKyAgICBzX2J1aWxkZXIuZ2V0KCkuc2V0Q3VycmVudFBhdGgoJnJlc3VsdCk7Cisg
ICAgcmV0dXJuIHNfYnVpbGRlci5nZXQoKTsKIH0KIAotc3RhdGljIFNWR1BhdGhTZWdMaXN0QnVp
bGRlciogZ2xvYmFsU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKFNWR1BhdGhFbGVtZW50KiBlbGVtZW50
LCBTVkdQYXRoU2VnUm9sZSByb2xlLCBTVkdQYXRoU2VnTGlzdCYgcmVzdWx0KQorc3RhdGljIFNW
R1BhdGhTZWdMaXN0QnVpbGRlciYgZ2xvYmFsU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKFNWR1BhdGhF
bGVtZW50JiBlbGVtZW50LCBTVkdQYXRoU2VnUm9sZSByb2xlLCBTVkdQYXRoU2VnTGlzdCYgcmVz
dWx0KQogewotICAgIHN0YXRpYyBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIqIHNfYnVpbGRlciA9IG51
bGxwdHI7Ci0gICAgaWYgKCFzX2J1aWxkZXIpCi0gICAgICAgIHNfYnVpbGRlciA9IG5ldyBTVkdQ
YXRoU2VnTGlzdEJ1aWxkZXI7Ci0KLSAgICBzX2J1aWxkZXItPnNldEN1cnJlbnRTVkdQYXRoRWxl
bWVudChlbGVtZW50KTsKLSAgICBzX2J1aWxkZXItPnNldEN1cnJlbnRTVkdQYXRoU2VnTGlzdChy
ZXN1bHQpOwotICAgIHNfYnVpbGRlci0+c2V0Q3VycmVudFNWR1BhdGhTZWdSb2xlKHJvbGUpOwot
ICAgIHJldHVybiBzX2J1aWxkZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR1BhdGhT
ZWdMaXN0QnVpbGRlcj4gc19idWlsZGVyOworCisgICAgc19idWlsZGVyLmdldCgpLnNldEN1cnJl
bnRTVkdQYXRoRWxlbWVudCgmZWxlbWVudCk7CisgICAgc19idWlsZGVyLmdldCgpLnNldEN1cnJl
bnRTVkdQYXRoU2VnTGlzdChyZXN1bHQpOworICAgIHNfYnVpbGRlci5nZXQoKS5zZXRDdXJyZW50
U1ZHUGF0aFNlZ1JvbGUocm9sZSk7CisgICAgcmV0dXJuIHNfYnVpbGRlci5nZXQoKTsKIH0KIAot
c3RhdGljIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1C
dWlsZGVyKFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQpCitzdGF0aWMgU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyJiBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoU1ZHUGF0aEJ5dGVTdHJl
YW0mIHJlc3VsdCkKIHsKLSAgICBzdGF0aWMgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBzX2J1
aWxkZXIgPSBudWxscHRyOwotICAgIGlmICghc19idWlsZGVyKQotICAgICAgICBzX2J1aWxkZXIg
PSBuZXcgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOwotCi0gICAgc19idWlsZGVyLT5zZXRDdXJy
ZW50Qnl0ZVN0cmVhbShyZXN1bHQpOwotICAgIHJldHVybiBzX2J1aWxkZXI7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcj4gc19idWlsZGVyOworICAg
IHNfYnVpbGRlci5nZXQoKS5zZXRDdXJyZW50Qnl0ZVN0cmVhbSgmcmVzdWx0KTsKKyAgICByZXR1
cm4gc19idWlsZGVyLmdldCgpOwogfQogCi1zdGF0aWMgU1ZHUGF0aFN0cmluZ0J1aWxkZXIqIGds
b2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKCkKK3N0YXRpYyBTVkdQYXRoU3RyaW5nQnVpbGRlciYg
Z2xvYmFsU1ZHUGF0aFN0cmluZ0J1aWxkZXIoKQogewotICAgIHN0YXRpYyBTVkdQYXRoU3RyaW5n
QnVpbGRlciogc19idWlsZGVyID0gbnVsbHB0cjsKLSAgICBpZiAoIXNfYnVpbGRlcikKLSAgICAg
ICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhTdHJpbmdCdWlsZGVyOwotCi0gICAgcmV0dXJuIHNf
YnVpbGRlcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHUGF0aFN0cmluZ0J1aWxkZXI+
IHNfYnVpbGRlcjsKKyAgICByZXR1cm4gc19idWlsZGVyLmdldCgpOwogfQogCi1zdGF0aWMgU1ZH
UGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlcihQYXRoVHJhdmVyc2FsU3RhdGUmIHRyYXZlcnNhbFN0YXRlLCBmbG9hdCBsZW5ndGgpCitz
dGF0aWMgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciYgZ2xvYmFsU1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlcihQYXRoVHJhdmVyc2FsU3RhdGUmIHRyYXZlcnNhbFN0YXRlLCBmbG9hdCBs
ZW5ndGgpCiB7Ci0gICAgc3RhdGljIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIqIHNfYnVp
bGRlciA9IG51bGxwdHI7Ci0gICAgaWYgKCFzX2J1aWxkZXIpCi0gICAgICAgIHNfYnVpbGRlciA9
IG5ldyBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyPiBzX3BhcnNlcjsKIAotICAgIHNfYnVp
bGRlci0+c2V0Q3VycmVudFRyYXZlcnNhbFN0YXRlKCZ0cmF2ZXJzYWxTdGF0ZSk7Ci0gICAgc19i
dWlsZGVyLT5zZXREZXNpcmVkTGVuZ3RoKGxlbmd0aCk7Ci0gICAgcmV0dXJuIHNfYnVpbGRlcjsK
KyAgICBzX3BhcnNlci5nZXQoKS5zZXRDdXJyZW50VHJhdmVyc2FsU3RhdGUoJnRyYXZlcnNhbFN0
YXRlKTsKKyAgICBzX3BhcnNlci5nZXQoKS5zZXREZXNpcmVkTGVuZ3RoKGxlbmd0aCk7CisgICAg
cmV0dXJuIHNfcGFyc2VyLmdldCgpOwogfQogCi1zdGF0aWMgU1ZHUGF0aFBhcnNlciogZ2xvYmFs
U1ZHUGF0aFBhcnNlcihTVkdQYXRoU291cmNlKiBzb3VyY2UsIFNWR1BhdGhDb25zdW1lciogY29u
c3VtZXIpCisvLyBGSVhNRTogd2h5IGJvdGhlciBrZWVwaW5nIGEgc2luZ2xldG9uIGFyb3VuZD8g
SXMgaXQgc2xvdyB0byBhbGxvY2F0ZT8KK3N0YXRpYyBTVkdQYXRoUGFyc2VyJiBnbG9iYWxTVkdQ
YXRoUGFyc2VyKFNWR1BhdGhTb3VyY2UmIHNvdXJjZSwgU1ZHUGF0aENvbnN1bWVyJiBjb25zdW1l
cikKIHsKLSAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlciogc19wYXJzZXIgPSBudWxscHRyOwotICAg
IGlmICghc19wYXJzZXIpCi0gICAgICAgIHNfcGFyc2VyID0gbmV3IFNWR1BhdGhQYXJzZXI7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR1BhdGhQYXJzZXI+IHNfcGFyc2VyOwogCi0gICAg
c19wYXJzZXItPnNldEN1cnJlbnRTb3VyY2Uoc291cmNlKTsKLSAgICBzX3BhcnNlci0+c2V0Q3Vy
cmVudENvbnN1bWVyKGNvbnN1bWVyKTsKLSAgICByZXR1cm4gc19wYXJzZXI7CisgICAgc19wYXJz
ZXIuZ2V0KCkuc2V0Q3VycmVudFNvdXJjZSgmc291cmNlKTsKKyAgICBzX3BhcnNlci5nZXQoKS5z
ZXRDdXJyZW50Q29uc3VtZXIoJmNvbnN1bWVyKTsKKyAgICByZXR1cm4gc19wYXJzZXIuZ2V0KCk7
CiB9CiAKLXN0YXRpYyBTVkdQYXRoQmxlbmRlciogZ2xvYmFsU1ZHUGF0aEJsZW5kZXIoKQorc3Rh
dGljIFNWR1BhdGhCbGVuZGVyJiBnbG9iYWxTVkdQYXRoQmxlbmRlcigpCiB7Ci0gICAgc3RhdGlj
IFNWR1BhdGhCbGVuZGVyKiBzX2JsZW5kZXIgPSBudWxscHRyOwotICAgIGlmICghc19ibGVuZGVy
KQotICAgICAgICBzX2JsZW5kZXIgPSBuZXcgU1ZHUGF0aEJsZW5kZXI7Ci0KLSAgICByZXR1cm4g
c19ibGVuZGVyOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdQYXRoQmxlbmRlcj4gc19i
bGVuZGVyOworICAgIHJldHVybiBzX2JsZW5kZXIuZ2V0KCk7CiB9CiAKIGJvb2wgYnVpbGRQYXRo
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGQsIFBhdGgmIHJlc3VsdCkKQEAgLTExNCw5NiArOTgs
OTEgQEAgYm9vbCBidWlsZFBhdGhGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZCwgUGF0aCYgcmVz
dWx0KQogICAgIGlmIChkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBT
VkdQYXRoQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCdWlsZGVyKHJlc3VsdCk7Cisg
ICAgU1ZHUGF0aEJ1aWxkZXImIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnVpbGRlcihyZXN1bHQp
OwogCi0gICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhTdHJpbmdTb3Vy
Y2U+KGQpOwotICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIo
c291cmNlLmdldCgpLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhE
YXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFyc2luZyk7Ci0gICAgcGFyc2VyLT5jbGVhbnVwKCk7
CisgICAgU1ZHUGF0aFN0cmluZ1NvdXJjZSBzb3VyY2UoZCk7CisgICAgU1ZHUGF0aFBhcnNlciYg
cGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1aWxkZXIpOworICAgIGJvb2wg
b2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwor
ICAgIHBhcnNlci5jbGVhbnVwKCk7CiAgICAgcmV0dXJuIG9rOwogfQogCi1ib29sIGJ1aWxkU1ZH
UGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGxp
c3QsIFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9k
ZSkKK2Jvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBT
VkdQYXRoU2VnTGlzdCYgbGlzdCwgU1ZHUGF0aEJ5dGVTdHJlYW0mIHJlc3VsdCwgUGF0aFBhcnNp
bmdNb2RlIHBhcnNpbmdNb2RlKQogewotICAgIEFTU0VSVChyZXN1bHQpOwotICAgIHJlc3VsdC0+
Y2xlYXIoKTsKKyAgICByZXN1bHQuY2xlYXIoKTsKICAgICBpZiAobGlzdC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBidWls
ZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKHJlc3VsdCk7CisgICAgU1ZHUGF0
aEJ5dGVTdHJlYW1CdWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyKHJlc3VsdCk7CiAKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0
aFNlZ0xpc3RTb3VyY2U+KGxpc3QpOwotICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2Jh
bFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFy
c2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5nTW9kZSk7Ci0gICAgcGFyc2VyLT5j
bGVhbnVwKCk7CisgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2Ugc291cmNlKGxpc3QpOworICAgIFNW
R1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVy
KTsKKyAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdN
b2RlKTsKKyAgICBwYXJzZXIuY2xlYW51cCgpOwogICAgIHJldHVybiBvazsKIH0KIAotYm9vbCBh
cHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRoU2VnPiYm
IHBhdGhTZWcsIFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJz
aW5nTW9kZSkKK2Jvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQ
dHI8U1ZHUGF0aFNlZz4mJiBwYXRoU2VnLCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBQYXRo
UGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiB7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIElt
cGxlbWVudCBub3JtYWxpemVkIHBhdGggc2VnbWVudCBsaXN0cyEKICAgICBBU1NFUlQocGFyc2lu
Z01vZGUgPT0gVW5hbHRlcmVkUGFyc2luZyk7CiAKICAgICBTVkdQYXRoU2VnTGlzdCBhcHBlbmRl
ZEl0ZW1MaXN0KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsKICAgICBhcHBlbmRlZEl0ZW1MaXN0LmFw
cGVuZChXVEY6Om1vdmUocGF0aFNlZykpOwotICAgIGF1dG8gYXBwZW5kZWRCeXRlU3RyZWFtID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKIAotICAgIFNWR1BhdGhCeXRl
U3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihh
cHBlbmRlZEJ5dGVTdHJlYW0uZ2V0KCkpOwotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdQYXRoU2VnTGlzdFNvdXJjZT4oYXBwZW5kZWRJdGVtTGlzdCk7Ci0gICAgU1ZHUGF0
aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxk
ZXIpOwotICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNp
bmdNb2RlLCBmYWxzZSk7Ci0gICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgU1ZHUGF0aEJ5dGVT
dHJlYW0gYXBwZW5kZWRCeXRlU3RyZWFtOworICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciYg
YnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihhcHBlbmRlZEJ5dGVTdHJl
YW0pOworICAgIFNWR1BhdGhTZWdMaXN0U291cmNlIHNvdXJjZShhcHBlbmRlZEl0ZW1MaXN0KTsK
KyAgICBTVkdQYXRoUGFyc2VyJiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZSwg
YnVpbGRlcik7CisgICAgYm9vbCBvayA9IHBhcnNlci5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShw
YXJzaW5nTW9kZSwgZmFsc2UpOworICAgIHBhcnNlci5jbGVhbnVwKCk7CiAKICAgICBpZiAob2sp
Ci0gICAgICAgIHJlc3VsdC0+YXBwZW5kKCphcHBlbmRlZEJ5dGVTdHJlYW0pOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKGFwcGVuZGVkQnl0ZVN0cmVhbSk7CiAKICAgICByZXR1cm4gb2s7CiB9CiAK
LWJvb2wgYnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVhbSwg
UGF0aCYgcmVzdWx0KQorYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRo
Qnl0ZVN0cmVhbSYgc3RyZWFtLCBQYXRoJiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKHN0cmVhbSk7
Ci0gICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQorICAgIGlmIChzdHJlYW0uaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhCdWlsZGVyKiBidWlsZGVyID0gZ2xv
YmFsU1ZHUGF0aEJ1aWxkZXIocmVzdWx0KTsKKyAgICBTVkdQYXRoQnVpbGRlciYgYnVpbGRlciA9
IGdsb2JhbFNWR1BhdGhCdWlsZGVyKHJlc3VsdCk7CiAKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KHN0cmVhbSk7Ci0gICAgU1ZHUGF0
aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxk
ZXIpOwotICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1h
bGl6ZWRQYXJzaW5nKTsKLSAgICBwYXJzZXItPmNsZWFudXAoKTsKKyAgICBTVkdQYXRoQnl0ZVN0
cmVhbVNvdXJjZSBzb3VyY2Uoc3RyZWFtKTsKKyAgICBTVkdQYXRoUGFyc2VyJiBwYXJzZXIgPSBn
bG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZSwgYnVpbGRlcik7CisgICAgYm9vbCBvayA9IHBhcnNl
ci5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFyc2luZyk7CisgICAgcGFyc2Vy
LmNsZWFudXAoKTsKICAgICByZXR1cm4gb2s7CiB9CiAKLWJvb2wgYnVpbGRTVkdQYXRoU2VnTGlz
dEZyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJlYW0sIFNWR1BhdGhFbGVtZW50
KiBlbGVtZW50LCBTVkdQYXRoU2VnTGlzdCYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2lu
Z01vZGUpCitib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQ
YXRoQnl0ZVN0cmVhbSYgc3RyZWFtLCBTVkdQYXRoRWxlbWVudCYgZWxlbWVudCwgU1ZHUGF0aFNl
Z0xpc3QmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQogewotICAgIEFTU0VS
VChzdHJlYW0pOwotICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKKyAgICBpZiAoc3RyZWFtLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoZWxlbWVudCwgcGFyc2lu
Z01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcgPyBQYXRoU2VnTm9ybWFsaXplZFJvbGUgOiBQYXRo
U2VnVW5hbHRlcmVkUm9sZSwgcmVzdWx0KTsKKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXImIGJ1
aWxkZXIgPSBnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoZWxlbWVudCwgcGFyc2luZ01vZGUg
PT0gTm9ybWFsaXplZFBhcnNpbmcgPyBQYXRoU2VnTm9ybWFsaXplZFJvbGUgOiBQYXRoU2VnVW5h
bHRlcmVkUm9sZSwgcmVzdWx0KTsKIAotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4oc3RyZWFtKTsKLSAgICBTVkdQYXRoUGFyc2VyKiBw
YXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7Ci0gICAg
Ym9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOwot
ICAgIHBhcnNlci0+Y2xlYW51cCgpOworICAgIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIHNvdXJj
ZShzdHJlYW0pOworICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJz
ZXIoc291cmNlLCBidWlsZGVyKTsKKyAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGFG
cm9tU291cmNlKHBhcnNpbmdNb2RlKTsKKyAgICBwYXJzZXIuY2xlYW51cCgpOwogICAgIHJldHVy
biBvazsKIH0KIAotYm9vbCBidWlsZFN0cmluZ0Zyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3Ry
ZWFtKiBzdHJlYW0sIFN0cmluZyYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUp
Citib29sIGJ1aWxkU3RyaW5nRnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0m
IHN0cmVhbSwgU3RyaW5nJiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsK
LSAgICBBU1NFUlQoc3RyZWFtKTsKLSAgICBpZiAoc3RyZWFtLT5pc0VtcHR5KCkpCisgICAgaWYg
KHN0cmVhbS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU1ZHUGF0aFN0
cmluZ0J1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU3RyaW5nQnVpbGRlcigpOworICAg
IFNWR1BhdGhTdHJpbmdCdWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFN0cmluZ0J1aWxk
ZXIoKTsKIAotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0
cmVhbVNvdXJjZT4oc3RyZWFtKTsKLSAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxT
VkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7Ci0gICAgYm9vbCBvayA9IHBhcnNl
ci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOwotICAgIHJlc3VsdCA9IGJ1
aWxkZXItPnJlc3VsdCgpOwotICAgIHBhcnNlci0+Y2xlYW51cCgpOworICAgIFNWR1BhdGhCeXRl
U3RyZWFtU291cmNlIHNvdXJjZShzdHJlYW0pOworICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9
IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVyKTsKKyAgICBib29sIG9rID0gcGFy
c2VyLnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKKyAgICByZXN1bHQgPSBi
dWlsZGVyLnJlc3VsdCgpOworICAgIHBhcnNlci5jbGVhbnVwKCk7CiAgICAgcmV0dXJuIG9rOwog
fQogCkBAIC0yMTMsMTIxICsxOTIsMTEzIEBAIGJvb2wgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNl
Z0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGxpc3QsIFN0cmluZyYgcmVzdWx0LCBQCiAgICAg
aWYgKGxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhT
dHJpbmdCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFN0cmluZ0J1aWxkZXIoKTsKKyAg
ICBTVkdQYXRoU3RyaW5nQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhTdHJpbmdCdWls
ZGVyKCk7CiAKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aFNlZ0xp
c3RTb3VyY2U+KGxpc3QpOwotICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1Bh
dGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLT5w
YXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5nTW9kZSk7Ci0gICAgcmVzdWx0ID0gYnVpbGRl
ci0+cmVzdWx0KCk7Ci0gICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgU1ZHUGF0aFNlZ0xpc3RT
b3VyY2Ugc291cmNlKGxpc3QpOworICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNW
R1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVyKTsKKyAgICBib29sIG9rID0gcGFyc2VyLnBhcnNl
UGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKKyAgICByZXN1bHQgPSBidWlsZGVyLnJl
c3VsdCgpOworICAgIHBhcnNlci5jbGVhbnVwKCk7CiAgICAgcmV0dXJuIG9rOwogfQogCi1ib29s
IGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZCwgU1ZHUGF0
aEJ5dGVTdHJlYW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQorYm9vbCBi
dWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGQsIFNWR1BhdGhC
eXRlU3RyZWFtJiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsKLSAgICBB
U1NFUlQocmVzdWx0KTsKLSAgICByZXN1bHQtPmNsZWFyKCk7CisgICAgcmVzdWx0LmNsZWFyKCk7
CiAgICAgaWYgKGQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1Bh
dGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVp
bGRlcihyZXN1bHQpOworICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciYgYnVpbGRlciA9IGds
b2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihyZXN1bHQpOwogCi0gICAgYXV0byBzb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhTdHJpbmdTb3VyY2U+KGQpOwotICAgIFNWR1BhdGhQ
YXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVy
KTsKLSAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5n
TW9kZSk7Ci0gICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgU1ZHUGF0aFN0cmluZ1NvdXJjZSBz
b3VyY2UoZCk7CisgICAgU1ZHUGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNl
cihzb3VyY2UsIGJ1aWxkZXIpOworICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZy
b21Tb3VyY2UocGFyc2luZ01vZGUpOworICAgIHBhcnNlci5jbGVhbnVwKCk7CiAgICAgcmV0dXJu
IG9rOwogfQogCi1ib29sIGJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0
ZVN0cmVhbSogZnJvbVN0cmVhbSwgU1ZHUGF0aEJ5dGVTdHJlYW0qIHRvU3RyZWFtLCBTVkdQYXRo
Qnl0ZVN0cmVhbSogcmVzdWx0LCBmbG9hdCBwcm9ncmVzcykKK2Jvb2wgYnVpbGRBbmltYXRlZFNW
R1BhdGhCeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBmcm9tU3RyZWFtLCBjb25z
dCBTVkdQYXRoQnl0ZVN0cmVhbSYgdG9TdHJlYW0sIFNWR1BhdGhCeXRlU3RyZWFtJiByZXN1bHQs
IGZsb2F0IHByb2dyZXNzKQogewotICAgIEFTU0VSVChmcm9tU3RyZWFtKTsKLSAgICBBU1NFUlQo
dG9TdHJlYW0pOwotICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VSVCh0b1N0cmVhbSAhPSBy
ZXN1bHQpOwotCi0gICAgcmVzdWx0LT5jbGVhcigpOwotICAgIGlmICh0b1N0cmVhbS0+aXNFbXB0
eSgpKQorICAgIEFTU0VSVCgmdG9TdHJlYW0gIT0gJnJlc3VsdCk7CisgICAgcmVzdWx0LmNsZWFy
KCk7CisgICAgaWYgKHRvU3RyZWFtLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXIocmVzdWx0KTsKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXImIGJ1
aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIocmVzdWx0KTsKIAotICAgIGF1
dG8gZnJvbVNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+
KGZyb21TdHJlYW0pOwotICAgIGF1dG8gdG9Tb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Bh
dGhCeXRlU3RyZWFtU291cmNlPih0b1N0cmVhbSk7Ci0gICAgU1ZHUGF0aEJsZW5kZXIqIGJsZW5k
ZXIgPSBnbG9iYWxTVkdQYXRoQmxlbmRlcigpOwotICAgIGJvb2wgb2sgPSBibGVuZGVyLT5ibGVu
ZEFuaW1hdGVkUGF0aChwcm9ncmVzcywgZnJvbVNvdXJjZS5nZXQoKSwgdG9Tb3VyY2UuZ2V0KCks
IGJ1aWxkZXIpOwotICAgIGJsZW5kZXItPmNsZWFudXAoKTsKKyAgICBTVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZSBmcm9tU291cmNlKGZyb21TdHJlYW0pOworICAgIFNWR1BhdGhCeXRlU3RyZWFtU291
cmNlIHRvU291cmNlKHRvU3RyZWFtKTsKKyAgICBTVkdQYXRoQmxlbmRlciYgYmxlbmRlciA9IGds
b2JhbFNWR1BhdGhCbGVuZGVyKCk7CisgICAgYm9vbCBvayA9IGJsZW5kZXIuYmxlbmRBbmltYXRl
ZFBhdGgocHJvZ3Jlc3MsICZmcm9tU291cmNlLCAmdG9Tb3VyY2UsICZidWlsZGVyKTsKKyAgICBi
bGVuZGVyLmNsZWFudXAoKTsKICAgICByZXR1cm4gb2s7CiB9CiAKLWJvb2wgYWRkVG9TVkdQYXRo
Qnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogZnJvbVN0cmVhbSwgU1ZHUGF0aEJ5dGVTdHJl
YW0qIGJ5U3RyZWFtLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKK2Jvb2wgYWRkVG9TVkdQYXRoQnl0
ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZWFtVG9BcHBlbmRUbywgY29uc3QgU1ZHUGF0
aEJ5dGVTdHJlYW0mIGJ5U3RyZWFtLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKIHsKLSAgICBBU1NF
UlQoZnJvbVN0cmVhbSk7Ci0gICAgQVNTRVJUKGJ5U3RyZWFtKTsKLSAgICBpZiAoZnJvbVN0cmVh
bS0+aXNFbXB0eSgpIHx8IGJ5U3RyZWFtLT5pc0VtcHR5KCkpCisgICAgLy8gV2h5IHJldHVybiB3
aGVuIHN0cmVhbVRvQXBwZW5kVG8gaXMgZW1wdHk/IERvbid0IHdlIHN0aWxsIG5lZWQgdG8gYXBw
ZW5kPworICAgIGlmIChzdHJlYW1Ub0FwcGVuZFRvLmlzRW1wdHkoKSB8fCBieVN0cmVhbS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKGZyb21TdHJlYW0p
OworICAgIC8vIElzIGl0IE9LIHRvIG1ha2UgdGhlIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciBm
cm9tIGEgc3RyZWFtLCBhbmQgdGhlbiBjbGVhciB0aGF0IHN0cmVhbT8KKyAgICBTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXImIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIo
c3RyZWFtVG9BcHBlbmRUbyk7CiAKLSAgICBhdXRvIGZyb21TdHJlYW1Db3B5ID0gZnJvbVN0cmVh
bS0+Y29weSgpOwotICAgIGZyb21TdHJlYW0tPmNsZWFyKCk7CisgICAgU1ZHUGF0aEJ5dGVTdHJl
YW0gZnJvbVN0cmVhbUNvcHkgPSBzdHJlYW1Ub0FwcGVuZFRvOworICAgIHN0cmVhbVRvQXBwZW5k
VG8uY2xlYXIoKTsKIAotICAgIGF1dG8gZnJvbVNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KGZyb21TdHJlYW1Db3B5LmdldCgpKTsKLSAgICBhdXRvIGJ5
U291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4oYnlTdHJl
YW0pOwotICAgIFNWR1BhdGhCbGVuZGVyKiBibGVuZGVyID0gZ2xvYmFsU1ZHUGF0aEJsZW5kZXIo
KTsKLSAgICBib29sIG9rID0gYmxlbmRlci0+YWRkQW5pbWF0ZWRQYXRoKGZyb21Tb3VyY2UuZ2V0
KCksIGJ5U291cmNlLmdldCgpLCBidWlsZGVyLCByZXBlYXRDb3VudCk7Ci0gICAgYmxlbmRlci0+
Y2xlYW51cCgpOworICAgIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIGZyb21Tb3VyY2UoZnJvbVN0
cmVhbUNvcHkpOworICAgIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIGJ5U291cmNlKGJ5U3RyZWFt
KTsKKyAgICBTVkdQYXRoQmxlbmRlciYgYmxlbmRlciA9IGdsb2JhbFNWR1BhdGhCbGVuZGVyKCk7
CisgICAgYm9vbCBvayA9IGJsZW5kZXIuYWRkQW5pbWF0ZWRQYXRoKCZmcm9tU291cmNlLCAmYnlT
b3VyY2UsICZidWlsZGVyLCByZXBlYXRDb3VudCk7CisgICAgYmxlbmRlci5jbGVhbnVwKCk7CiAg
ICAgcmV0dXJuIG9rOwogfQogCi1ib29sIGdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRo
Qnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBmbG9hdCBsZW5ndGgsIHVuc2ln
bmVkJiBwYXRoU2VnKQorYm9vbCBnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVT
dHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHN0cmVhbSwgZmxvYXQgbGVuZ3RoLCB1bnNp
Z25lZCYgcGF0aFNlZykKIHsKLSAgICBBU1NFUlQoc3RyZWFtKTsKLSAgICBpZiAoc3RyZWFtLT5p
c0VtcHR5KCkpCisgICAgaWYgKHN0cmVhbS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2Fs
U3RhdGU6OkFjdGlvbjo6U2VnbWVudEF0TGVuZ3RoKTsKLSAgICBTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcih0
cmF2ZXJzYWxTdGF0ZSwgbGVuZ3RoKTsKKyAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
JiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcih0cmF2ZXJzYWxT
dGF0ZSwgbGVuZ3RoKTsKIAotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQ
YXRoQnl0ZVN0cmVhbVNvdXJjZT4oc3RyZWFtKTsKLSAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIg
PSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7Ci0gICAgYm9vbCBv
ayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwot
ICAgIHBhdGhTZWcgPSBidWlsZGVyLT5wYXRoU2VnbWVudEluZGV4KCk7Ci0gICAgcGFyc2VyLT5j
bGVhbnVwKCk7CisgICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Ugc291cmNlKHN0cmVhbSk7Cisg
ICAgU1ZHUGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1
aWxkZXIpOworICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9y
bWFsaXplZFBhcnNpbmcpOworICAgIHBhdGhTZWcgPSBidWlsZGVyLnBhdGhTZWdtZW50SW5kZXgo
KTsKKyAgICBwYXJzZXIuY2xlYW51cCgpOwogICAgIHJldHVybiBvazsKIH0KIAotYm9vbCBnZXRU
b3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVhbSwg
ZmxvYXQmIHRvdGFsTGVuZ3RoKQorYm9vbCBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJl
YW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHN0cmVhbSwgZmxvYXQmIHRvdGFsTGVuZ3RoKQog
ewotICAgIEFTU0VSVChzdHJlYW0pOwotICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKKyAgICBp
ZiAoc3RyZWFtLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUGF0aFRy
YXZlcnNhbFN0YXRlIHRyYXZlcnNhbFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZTo6QWN0aW9uOjpU
b3RhbExlbmd0aCk7Ci0gICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogYnVpbGRlciA9
IGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIDApOwor
ICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXImIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyKHRyYXZlcnNhbFN0YXRlLCAwKTsKIAotICAgIGF1dG8gc291
cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4oc3RyZWFtKTsK
LSAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5n
ZXQoKSwgYnVpbGRlcik7Ci0gICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21T
b3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwotICAgIHRvdGFsTGVuZ3RoID0gYnVpbGRlci0+dG90
YWxMZW5ndGgoKTsKLSAgICBwYXJzZXItPmNsZWFudXAoKTsKKyAgICBTVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZSBzb3VyY2Uoc3RyZWFtKTsKKyAgICBTVkdQYXRoUGFyc2VyJiBwYXJzZXIgPSBnbG9i
YWxTVkdQYXRoUGFyc2VyKHNvdXJjZSwgYnVpbGRlcik7CisgICAgYm9vbCBvayA9IHBhcnNlci5w
YXJzZVBhdGhEYXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFyc2luZyk7CisgICAgdG90YWxMZW5n
dGggPSBidWlsZGVyLnRvdGFsTGVuZ3RoKCk7CisgICAgcGFyc2VyLmNsZWFudXAoKTsKICAgICBy
ZXR1cm4gb2s7CiB9CiAKLWJvb2wgZ2V0UG9pbnRBdExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0o
U1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVhbSwgZmxvYXQgbGVuZ3RoLCBTVkdQb2ludCYgcG9pbnQp
Citib29sIGdldFBvaW50QXRMZW5ndGhPZlNWR1BhdGhCeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhC
eXRlU3RyZWFtJiBzdHJlYW0sIGZsb2F0IGxlbmd0aCwgU1ZHUG9pbnQmIHBvaW50KQogewotICAg
IEFTU0VSVChzdHJlYW0pOwotICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKKyAgICBpZiAoc3Ry
ZWFtLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUGF0aFRyYXZlcnNh
bFN0YXRlIHRyYXZlcnNhbFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZTo6QWN0aW9uOjpWZWN0b3JB
dExlbmd0aCk7Ci0gICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogYnVpbGRlciA9IGds
b2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIGxlbmd0aCk7
CisgICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIGxlbmd0aCk7CiAKLSAgICBh
dXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+KHN0
cmVhbSk7Ci0gICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihz
b3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwotICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERh
dGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKLSAgICBwb2ludCA9IGJ1aWxkZXItPmN1
cnJlbnRQb2ludCgpOwotICAgIHBhcnNlci0+Y2xlYW51cCgpOworICAgIFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlIHNvdXJjZShzdHJlYW0pOworICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGds
b2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVyKTsKKyAgICBib29sIG9rID0gcGFyc2Vy
LnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKKyAgICBwb2ludCA9
IGJ1aWxkZXIuY3VycmVudFBvaW50KCk7CisgICAgcGFyc2VyLmNsZWFudXAoKTsKICAgICByZXR1
cm4gb2s7CiB9CiAKQEAgLTM2MSwxMiArMzMyLDEyIEBAIGJvb2wgYnVpbGRTdHJpbmdGcm9tUGF0
aChjb25zdCBQYXRoJiBwYXRoLCBTdHJpbmcmIHN0cmluZykKICAgICAvLyBJZGVhbGx5IHdlIHdv
dWxkIGhhdmUgYSBTVkdQYXRoUGxhdGZvcm1QYXRoU291cmNlLCBidXQgaXQncyBub3QgcG9zc2li
bGUgdG8gbWFudWFsbHkgaXRlcmF0ZQogICAgIC8vIGEgcGF0aCwgb25seSBhcHBseSBhIGZ1bmN0
aW9uIHRvIGFsbCBwYXRoIGVsZW1lbnRzIGF0IG9uY2UuCiAKLSAgICBTVkdQYXRoU3RyaW5nQnVp
bGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKCk7Ci0gICAgcGF0aC5h
cHBseShbYnVpbGRlcl0oY29uc3QgUGF0aEVsZW1lbnQmIHBhdGhFbGVtZW50KSB7Ci0gICAgICAg
IHBhdGhJdGVyYXRvckZvckJ1aWxkaW5nU3RyaW5nKCpidWlsZGVyLCBwYXRoRWxlbWVudCk7Cisg
ICAgU1ZHUGF0aFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU3RyaW5nQnVp
bGRlcigpOworICAgIHBhdGguYXBwbHkoWyZidWlsZGVyXShjb25zdCBQYXRoRWxlbWVudCYgcGF0
aEVsZW1lbnQpIHsKKyAgICAgICAgcGF0aEl0ZXJhdG9yRm9yQnVpbGRpbmdTdHJpbmcoYnVpbGRl
ciwgcGF0aEVsZW1lbnQpOwogICAgIH0pOwotICAgIHN0cmluZyA9IGJ1aWxkZXItPnJlc3VsdCgp
OwotICAgIHN0YXRpY19jYXN0PFNWR1BhdGhDb25zdW1lcio+KGJ1aWxkZXIpLT5jbGVhbnVwKCk7
CisgICAgc3RyaW5nID0gYnVpbGRlci5yZXN1bHQoKTsKKyAgICBzdGF0aWNfY2FzdDxTVkdQYXRo
Q29uc3VtZXImPihidWlsZGVyKS5jbGVhbnVwKCk7IC8vIFdhdD8KIAogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKaW5kZXggYzJkMWYxNGMwNGVj
MWE1NDI5OTNjZjhlYzc2MTNmOWFlMGQ2YjRmOC4uZjdhYWJkZDYwYjE1ZTgzMzg2ZDVmNDYzNTIy
ZDNkNTQ4ZmNiYzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCkBAIC0z
NCwyNiArMzQsMjYgQEAgY2xhc3MgU1ZHUGF0aFNlZ0xpc3Q7CiAKIC8vIFN0cmluZy9TVkdQYXRo
Qnl0ZVN0cmVhbSAtPiBQYXRoCiBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiwgUGF0aCYpOwotYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVh
bSosIFBhdGgmKTsKK2Jvb2wgYnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5
dGVTdHJlYW0mLCBQYXRoJik7CiAKIC8vIFNWR1BhdGhTZWdMaXN0L1N0cmluZyAtPiBTVkdQYXRo
Qnl0ZVN0cmVhbQotYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0
KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01v
ZGUpOwotYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxT
VkdQYXRoU2VnPiYmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7Ci1ib29s
IGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYsIFNWR1BhdGhC
eXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYsIFNWR1BhdGhCeXRlU3Ry
ZWFtJiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSk7Citib29sIGFwcGVuZFNWR1BhdGhCeXRlU3Ry
ZWFtRnJvbVNWR1BhdGhTZWcoUmVmUHRyPFNWR1BhdGhTZWc+JiYsIFNWR1BhdGhCeXRlU3RyZWFt
JiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiwgU1ZHUGF0aEJ5dGVTdHJlYW0mLCBQYXRoUGFyc2luZ01vZGUpOwog
CiAvLyBTVkdQYXRoQnl0ZVN0cmVhbS9TVkdQYXRoU2VnTGlzdCAtPiBTdHJpbmcKLWJvb2wgYnVp
bGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFN0cmluZyYsIFBhdGhQ
YXJzaW5nTW9kZSk7Citib29sIGJ1aWxkU3RyaW5nRnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0
aEJ5dGVTdHJlYW0mLCBTdHJpbmcmLCBQYXRoUGFyc2luZ01vZGUpOwogYm9vbCBidWlsZFN0cmlu
Z0Zyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYsIFN0cmluZyYsIFBhdGhQ
YXJzaW5nTW9kZSk7CiAKIC8vIFNWR1BhdGhCeXRlU3RyZWFtIC0+IFNWR1BhdGhTZWdMaXN0Ci1i
b29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSos
IFNWR1BhdGhFbGVtZW50KiwgU1ZHUGF0aFNlZ0xpc3QmLCBQYXRoUGFyc2luZ01vZGUpOworYm9v
bCBidWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJl
YW0mLCBTVkdQYXRoRWxlbWVudCYsIFNWR1BhdGhTZWdMaXN0JiwgUGF0aFBhcnNpbmdNb2RlKTsK
IAotYm9vbCBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0q
LCBTVkdQYXRoQnl0ZVN0cmVhbSosIFNWR1BhdGhCeXRlU3RyZWFtKiwgZmxvYXQpOwotYm9vbCBh
ZGRUb1NWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgU1ZHUGF0aEJ5dGVTdHJl
YW0qLCB1bnNpZ25lZCByZXBlYXRDb3VudCA9IDEpOworYm9vbCBidWlsZEFuaW1hdGVkU1ZHUGF0
aEJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIGZyb20sIGNvbnN0IFNWR1BhdGhC
eXRlU3RyZWFtJiB0bywgU1ZHUGF0aEJ5dGVTdHJlYW0mIHJlc3VsdCwgZmxvYXQgcHJvZ3Jlc3Mp
OworYm9vbCBhZGRUb1NWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlYW1U
b0FwcGVuZFRvLCBjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgZnJvbSwgdW5zaWduZWQgcmVwZWF0
Q291bnQgPSAxKTsKIAotYm9vbCBnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVT
dHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCBsZW5ndGgsIHVuc2lnbmVkJiBwYXRoU2Vn
KTsKLWJvb2wgZ2V0VG90YWxMZW5ndGhPZlNWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3Ry
ZWFtKiwgZmxvYXQmIHRvdGFsTGVuZ3RoKTsKLWJvb2wgZ2V0UG9pbnRBdExlbmd0aE9mU1ZHUGF0
aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCBsZW5ndGgsIFNWR1BvaW50Jik7
Citib29sIGdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbShjb25zdCBT
VkdQYXRoQnl0ZVN0cmVhbSYsIGZsb2F0IGxlbmd0aCwgdW5zaWduZWQmIHBhdGhTZWcpOworYm9v
bCBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJl
YW0mLCBmbG9hdCYgdG90YWxMZW5ndGgpOworYm9vbCBnZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRo
Qnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYsIGZsb2F0IGxlbmd0aCwgU1ZHUG9p
bnQmKTsKIAogLy8gUGF0aCAtPiBTdHJpbmcKIFdFQkNPUkVfRVhQT1JUIGJvb2wgYnVpbGRTdHJp
bmdGcm9tUGF0aChjb25zdCBQYXRoJiwgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgKaW5kZXggYzc4NWQ2Mzg4YWFjMjU5MjY4NzE0ODZjNzJiZjA1ZmE1
ZTY3ZThmNy4uZmYwOWIyNzA4Y2IyNDI1MGFkMjNlNDI2ZDYzZjU1YWNlYmU4NGZkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaApAQCAtOTUsNyArOTUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChwYXRoRWxlbWVudC0+aXNBbmltVmFsT2JzZXJ2ZWQoKSkgewog
ICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpc3QmIGFuaW1hdGVkTGlzdCA9IGN1cnJlbnRBbmltYXRl
ZFZhbHVlKCk7CiAgICAgICAgICAgICBhbmltYXRlZExpc3QuY2xlYXIoKTsKLSAgICAgICAgICAg
IGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX2FuaW1hdGVkUGF0aEJ5dGVTdHJl
YW0sIHBhdGhFbGVtZW50LCBhbmltYXRlZExpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAg
ICAgICAgYnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKCptX2FuaW1hdGVkUGF0aEJ5
dGVTdHJlYW0sICpwYXRoRWxlbWVudCwgYW5pbWF0ZWRMaXN0LCBVbmFsdGVyZWRQYXJzaW5nKTsK
ICAgICAgICAgfQogCiAgICAgICAgIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQ
YXRoU2VnTGlzdD46OmFuaW1WYWxEaWRDaGFuZ2UoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>