<?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>85129</bug_id>
          
          <creation_ts>2012-04-28 01:40:44 -0700</creation_ts>
          <short_desc>Rename SVGPathParserFactory to SVGPathUtilities and remove the obsolete singleton</short_desc>
          <delta_ts>2012-04-28 02:44:42 -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>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="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612206</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-28 01:40:44 -0700</bug_when>
    <thetext>Rename SVGPathParserFactory to SVGPathUtilities and remove the obsolete singleton</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612210</commentid>
    <comment_count>1</comment_count>
      <attachid>139346</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-28 02:19:17 -0700</bug_when>
    <thetext>Created attachment 139346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612212</commentid>
    <comment_count>2</comment_count>
      <attachid>139346</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-28 02:25:47 -0700</bug_when>
    <thetext>Comment on attachment 139346
Patch

Hope this is move rather than copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612215</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-28 02:28:53 -0700</bug_when>
    <thetext>Committed r115560: &lt;http://trac.webkit.org/changeset/115560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612216</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-28 02:33:21 -0700</bug_when>
    <thetext>Reopen, because it broke the Qt build:

../../../../Source/WebCore/rendering/svg/SVGPathData.cpp: In function &apos;void WebCore::updatePathFromCircleElement(WebCore::SVGElement*, WebCore::Path&amp;)&apos;:
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:45: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp: In function &apos;void WebCore::updatePathFromEllipseElement(WebCore::SVGElement*, WebCore::Path&amp;)&apos;:
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:60: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp: In function &apos;void WebCore::updatePathFromLineElement(WebCore::SVGElement*, WebCore::Path&amp;)&apos;:
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:69: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:70: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp: In function &apos;void WebCore::updatePathFromPolygonElement(WebCore::SVGElement*, WebCore::Path&amp;)&apos;:
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:88: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:92: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:94: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp: In function &apos;void WebCore::updatePathFromPolylineElement(WebCore::SVGElement*, WebCore::Path&amp;)&apos;:
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:106: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:110: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp: In function &apos;void WebCore::updatePathFromRectElement(WebCore::SVGElement*, WebCore::Path&amp;)&apos;:
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:139: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:139: error: incomplete type &apos;WebCore::Path&apos; used in nested name specifier
../../../../Source/WebCore/rendering/svg/SVGPathData.cpp:143: error: invalid use of incomplete type &apos;struct WebCore::Path&apos;
../../../../Source/WebCore/rendering/svg/SVGPathData.h:27: error: forward declaration of &apos;struct WebCore::Path&apos;


Could you fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612217</commentid>
    <comment_count>5</comment_count>
      <attachid>139346</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-28 02:34:42 -0700</bug_when>
    <thetext>Comment on attachment 139346
Patch

Attachment 139346 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12487028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612218</commentid>
    <comment_count>6</comment_count>
      <attachid>139346</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-28 02:36:06 -0700</bug_when>
    <thetext>Comment on attachment 139346
Patch

Attachment 139346 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12556548</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612219</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-28 02:44:28 -0700</bug_when>
    <thetext>Really sorry for not waiting for Qt EWS, I&apos;ll be sure to do that next time, landed Qt buildfix in r115561.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139346</attachid>
            <date>2012-04-28 02:19:17 -0700</date>
            <delta_ts>2012-04-28 02:36:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85129-20120428111919.patch</filename>
            <type>text/plain</type>
            <size>63071</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ5Mjk0ZGM2YmQxNzY1
OTg5NDkxZGQ5NmRjNWI0OGQ3M2Q2OTNkZi4uYTA1ZTNkNDE4YTVlMjhmY2Q2YTY0ZDk2ZmFlMTNi
MWRlNWJjMzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDEyLTA0LTI4ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCisgICAgICAgIFJlbmFtZSBT
VkdQYXRoUGFyc2VyRmFjdG9yeSB0byBTVkdQYXRoVXRpbGl0aWVzIGFuZCByZW1vdmUgdGhlIG9i
c29sZXRlIHNpbmdsZXRvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODUxMjkKKworICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSBpbXBsZW1lbnRz
IHRoZSBzaW5nbGV0b24gcGF0dGVybiwgYnV0IHN0b3JlcyBubyBtZW1iZXJzLgorICAgICAgICBS
ZW1vdmUgdGhlIHNpbmdsZXRvbiBhbmQgbW92ZSBhbGwgZnVuY3Rpb25zIHRvIGZyZWUtZnVuY3Rp
b25zIGludG8gU1ZHUGF0aFV0aWxpdGllcy5oLgorCisgICAgICAgIE1ha2VzIHRoZSBjb2RlIGVh
c2llciB0byByZWFkIC0gZG9lc24ndCBhZmZlY3QgYW55IHRlc3RzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVQYXRoRnJvbVBhdGhFbGVtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgICogc3ZnL1NWR0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpj
b25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFu
aW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRQYXRoQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgICogc3ZnL1NW
R0dseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaEVsZW1lbnQ6OmJ1
aWxkR2VuZXJpY0dseXBoSWRlbnRpZmllcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhCbGVuZGVy
LmNwcDogRml4IHR5cG8gcy87Oy87LworICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Z2V0VG90YWxMZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmdldFBvaW50QXRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmdldFBhdGhTZWdBdExlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5Lmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1Bh
dGhTZWdMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0Ojp2YWx1ZUFz
U3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Omdsb2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFsU1ZH
UGF0aFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxTVkdQYXRoQmxlbmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZFBhdGhGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRT
VkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU3Ry
aW5nRnJvbUJ5dGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTdHJpbmdGcm9tU1ZH
UGF0aFNlZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZy
b21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3Ry
ZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRvU1ZHUGF0aEJ5dGVTdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhCeXRlU3RyZWFtKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFRvdGFsTGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbSk6Cisg
ICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmOjphbmltVmFsRGlkQ2hhbmdlKToKKworMjAxMi0wNC0yOCAgTmlrb2xhcyBa
aW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKwogICAgICAgICBGaXggcmVwZXRpdGlv
bnMgJiBieSBhbmltYXRpb24gc3VwcG9ydCBmb3IgcGF0aCBhbmltYXRpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTA3MQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDdkOTZjNzY5MmU1NDNmYTUwNjFlN2ZhMjA1YzE3MWMzMjFiN2NhMWIuLjll
NGYyYjEyMjA2ZjhiMWRhNTgyNGM1NjA3NjA5ZThkNWRlOWViMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xOTE1LDEzICsxOTE1LDEzIEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcv
U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXRoRWxlbWVudC5j
cHAKICAgICAgICAgc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCi0gICAgICAgIHN2Zy9TVkdQYXRoUGFy
c2VyRmFjdG9yeS5jcHAKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAogICAgICAgICBz
dmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAogICAgICAgICBzdmcvU1ZHUGF0aFNlZ0xpc3RT
b3VyY2UuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAKICAgICAgICAg
c3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLmNwcAorICAgICAgICBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKICAgICAg
ICAgc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZHUG9pbnRMaXN0LmNw
cAogICAgICAgICBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA4NWY1MGM0M2I2NTY2MzVjNmM0NjU4NzY3NjJlMDg2ZjUzMWZmNzJjLi42YzU2
ODY5NDJjNTcwMzZlMzg1YTlhYzFkNzdhZjRlZjFiYzUzYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTQzOTksOCArNDM5OSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmggXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
QXJjLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmggXApAQCAt
NDQyNyw2ICs0NDI1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRy
YXZlcnNhbFN0YXRlQnVpbGRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0
aWVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaCBcCiAJU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExp
c3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDYxYzIzMGYyNjMyZjlhYjI5ZGI5OWRiMDgxZmYxZTlh
YjUxMGMzYjguLjZjYzk3MWU1MmM1NzMwYWQ3ZjU0ZWM1NWNhNTJiZTA0Yjg5ODE5ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMzYzOCwxMyArMzYzOCwxMyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U1ZHPTEpIHsKICAgICAgICAgICAgICAgICAgIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5j
cHAgXAogICAgICAgICAgICAgICAgICAgc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBcCiAgICAgICAg
ICAgICAgICAgICBzdmcvU1ZHUGF0aFBhcnNlci5jcHAgXAotICAgICAgICAgICAgICAgICAgc3Zn
L1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCBcCiAgICAgICAgICAgICAgICAgICBzdmcvU1ZHUGF0
aFNlZ0xpc3QuY3BwIFwKICAgICAgICAgICAgICAgICAgIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIuY3BwIFwKICAgICAgICAgICAgICAgICAgIHN2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHAg
XAogICAgICAgICAgICAgICAgICAgc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBcCiAgICAg
ICAgICAgICAgICAgICBzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgXAogICAgICAgICAgICAg
ICAgICAgc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwIFwKKyAgICAgICAgICAg
ICAgICAgIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBcCiAgICAgICAgICAgICAgICAgICBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwIFwKICAgICAgICAgICAgICAgICAgIHN2Zy9TVkdQb2ludExp
c3QuY3BwIFwKICAgICAgICAgICAgICAgICAgIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGMxNGZhZGZhMTkzMTRhMTZlZmNlODgyMTJmZjdjODljNzE3NjJjNjQu
LmIxZjFkZDQwNDVlOTUxZjhjOWU4MThkZmIwYTE4NzBmODYwNjgxMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTYxMjMsOCArNjEyMyw2IEBACiAgICAgICAgICAgICAnc3ZnL1NWR1BhdGhFbGVtZW50
LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAn
c3ZnL1NWR1BhdGhQYXJzZXIuaCcsCi0gICAgICAgICAgICAnc3ZnL1NWR1BhdGhQYXJzZXJGYWN0
b3J5LmNwcCcsCi0gICAgICAgICAgICAnc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmgnLAogICAg
ICAgICAgICAgJ3N2Zy9TVkdQYXRoU2VnLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2Vn
QXJjLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmgnLApAQCAtNjE1
MCw2ICs2MTQ4LDggQEAKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oJywK
ICAgICAgICAgICAgICdzdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAnLAogICAg
ICAgICAgICAgJ3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgnLAorICAgICAgICAg
ICAgJ3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhV
dGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCcsCiAg
ICAgICAgICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9T
VkdQb2ludExpc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggYThmYTMxZWJmZjhkOWZmMmFkNmY4OTZhNzQ2OGRlMjY4NTczZWI1OS4u
ZmFmMmRlY2Q5NjgxMWY5MWJlYTRhNGQ3ZDU0MjFkZTZiMzc5YmQyZSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTcxMzM0LDEwICs3MTMzNCw2
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2
Z1xTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUGF0aFNlZy5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTcxNDEwLDYgKzcxNDA2LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXRoVXRpbGl0aWVzLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXR0ZXJuRWxlbWVu
dC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWQxZDBmOTI1ZGZjM2MzMzdlNmFlZTlmMGFl
ZDA1OTJhODljNThkLi4wNzgxMGE5YzFkMDcwOWQ3MzMzNWVlZTY2OWFlOWEwODQzOWQ2MGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xODAwLDYgKzE4MDAsOCBAQAogCQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZH
TGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTUzN0EwMTE0
NkJEOUQ3MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQYXRo
RGF0YS5oICovOyB9OwogCQk3MTU3RjA2MjE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcxNTdGMDYxMTUwQjY1NjQwMDZFQUFCRCAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3QuY3BwICovOyB9OworCQk3MUE1N0RGMTE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgKi87IH07CisJ
CTcxQTU3REYyMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE1N0RGMDE1NEJFMjVDMDAw
OUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oICovOyB9OwogCQk3MUNDN0EyMDE1MkEwQkZFMDA5
RUVBRjkgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUNDN0ExRjE1MkEwQkZFMDA5RUVBRjkgLyogU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgKi87IH07CiAJCTcxRTYyM0QxMTUxRjcyQTYwMDM2RTJG
NCAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRTYyM0NGMTUxRjcyQTYwMDM2RTJGNCAv
KiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaCAqLzsgfTsKIAkJNzFGQjk2N0Ix
MzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI5NjdB
MTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2Zm
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5
NTQsOCArMTk1Niw2IEBACiAJCTg0MjI0MThFMTA3RTc4NkYwMDc2NkE4NyAvKiBET01TVkdGRU1v
cnBob2xvZ3lFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg0MjI0MThCMTA3RTc4NkYwMDc2NkE4NyAvKiBET01TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJODQyMjQxOTMxMDdFNzhBNzAwNzY2QTg3
IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxOTAxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwICovOyB9OwogCQk4NDIyNDE5NDEwN0U3OEE3MDA3NjZBODcgLyog
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQyMjQxOTExMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCAqLzsgfTsKLQkJODQzMDBCRDMxMjBDOUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg0MzAwQkQxMTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5j
cHAgKi87IH07Ci0JCTg0MzAwQkQ0MTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQz
MDBCRDIxMjBDOUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmggKi87IH07CiAJ
CTg0MzAwQkQ2MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJENTEyMEM5QUFD
MDAyMTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oICovOyB9OwogCQk4NDMwMEJEODEyMEM5
QUQ0MDAyMTk1NEEgLyogU1ZHUGF0aFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMDBCRDcxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhT
b3VyY2UuaCAqLzsgfTsKIAkJODQzMDBCREExMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJp
bmdTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQzMDBCRDkxMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwICov
OyB9OwpAQCAtODgxNSw2ICs4ODE1LDggQEAKIAkJNzE1Mzc5RkUxNDZCRDlENjAwOEJENjE1IC8q
IFNWR1BhdGhEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R1BhdGhEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE1Mzc5RkYxNDZC
RDlENjAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR1BhdGhEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTdG
MDYxMTUwQjY1NjQwMDZFQUFCRCAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzFBNTdERUYxNTRCRTI1QzAwMDlE
MTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcxQTU3REYwMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJBMEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1h
dGVkRW51bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxRTYyM0NFMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzFFNjIzQ0YxNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5
ODksOCArODk5MSw2IEBACiAJCTg0MjI0MTkwMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NDIyNDE5MTEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MjI0MTkyMTA3RTc4QTcwMDc2NkE4NyAvKiBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODQzMDBC
RDExMjBDOUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODQzMDBCRDIxMjBDOUE3MTAwMjE5NTRBIC8qIFNW
R1BhdGhQYXJzZXJGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1BhdGhQYXJzZXJGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MzAw
QkQ1MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhTdHJpbmdTb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODQzMDBCRDcxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDMwMEJEOTEyMEM5QUVEMDAyMTk1NEEgLyog
U1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdQYXRoU3RyaW5nU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE5MDI1LDggKzE5MDI1LDYgQEAKIAkJCQlCMjIyNzhDNDBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHUGF0aEVsZW1lbnQuaWRsICovLAogCQkJCTg0NzZDOUVEMTFERjZBNTgwMDU1NUIwMiAvKiBT
VkdQYXRoUGFyc2VyLmNwcCAqLywKIAkJCQk4NDc2QzlFRTExREY2QTU4MDA1NTVCMDIgLyogU1ZH
UGF0aFBhcnNlci5oICovLAotCQkJCTg0MzAwQkQxMTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRo
UGFyc2VyRmFjdG9yeS5jcHAgKi8sCi0JCQkJODQzMDBCRDIxMjBDOUE3MTAwMjE5NTRBIC8qIFNW
R1BhdGhQYXJzZXJGYWN0b3J5LmggKi8sCiAJCQkJQjIyMjc4QzUwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR1BhdGhTZWcuaCAqLywKIAkJCQlCMjIyNzhDNjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0
aFNlZy5pZGwgKi8sCiAJCQkJQjIyMjc4QzgwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdB
cmMuaCAqLywKQEAgLTE5MDczLDYgKzE5MDcxLDggQEAKIAkJCQk4NDMwMEJENTEyMEM5QUFDMDAy
MTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oICovLAogCQkJCTg0QzVCMkY4MTIxNkRDODEw
MDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcCAqLywKIAkJCQk4NEM1
QjJGOTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oICov
LAorCQkJCTcxQTU3REVGMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmNwcCAq
LywKKwkJCQk3MUE1N0RGMDE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oICov
LAogCQkJCUIyMjI3OEYxMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAg
Ki8sCiAJCQkJQjIyMjc4RjIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50Lmgg
Ki8sCiAJCQkJQjIyMjc4RjMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50Lmlk
bCAqLywKQEAgLTI0NDY5LDcgKzI0NDY5LDYgQEAKIAkJCQk3MTUzN0EwMTE0NkJEOUQ3MDA4QkQ2
MTUgLyogU1ZHUGF0aERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RjAx
MURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTg0
MzAwQkQ0MTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBNUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTVFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQXJj
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E2MjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0
aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDgzMCw2ICsyNDgyOSw3IEBACiAJ
CQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQ4QzQ2RUMxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNW
R1BhdGhVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc1NzAsNyArMjc1NzAsNiBAQAog
CQkJCTg0MTlEMkFDMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E1ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0
aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3NkM5RUYxMURGNkE1ODAwNTU1QjAy
IC8qIFNWR1BhdGhQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODQzMDBCRDMxMjBDOUE3
MTAwMjE5NTRBIC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3QTgwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NDc2QzlFNTExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4RkYxMDIwMTI5NTBGNUEwMEYwMDI3NiAvKiBT
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3ODQ1
LDYgKzI3ODQ0LDcgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVy
b1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4QzQ2RUIxNTQ2MDhFNzAwQTU5MTBDIC8q
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MUE1N0RG
MTE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKaW5kZXggZjQx
NmY5NTdiZjNmOGQ2ZTU2ZTVjNmQ1NDZmZGUyMTllYjdiYzJhNC4uMzU5ZTYzZWY4NTA4OTYwNDQw
MzBlMmUwYjI0OGEwOGE3NWM0ZTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdQYXRoRGF0YS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJTVkdMaW5lRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgorI2luY2x1ZGUgIlNWR1BhdGhV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJTVkdQb2x5Z29uRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R1BvbHlsaW5lRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1JlY3RFbGVtZW50LmgiCkBAIC03Myw3
ICs3Myw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBhdGhGcm9tTGluZUVsZW1lbnQoU1ZHRWxlbWVu
dCogZWxlbWVudCwgUGF0aCYgcGF0aCkKIHN0YXRpYyB2b2lkIHVwZGF0ZVBhdGhGcm9tUGF0aEVs
ZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCwgUGF0aCYgcGF0aCkKIHsKICAgICBBU1NFUlQoZWxl
bWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cGF0aFRhZykpOwotICAgIFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpzZWxmKCktPmJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKHN0YXRpY19jYXN0PFNWR1Bh
dGhFbGVtZW50Kj4oZWxlbWVudCktPnBhdGhCeXRlU3RyZWFtKCksIHBhdGgpOworICAgIGJ1aWxk
UGF0aEZyb21CeXRlU3RyZWFtKHN0YXRpY19jYXN0PFNWR1BhdGhFbGVtZW50Kj4oZWxlbWVudCkt
PnBhdGhCeXRlU3RyZWFtKCksIHBhdGgpOwogfQogCiBzdGF0aWMgdm9pZCB1cGRhdGVQYXRoRnJv
bVBvbHlnb25FbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgmIHBhdGgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApp
bmRleCAzYjAwMTQ1ZWI4ZDJmM2Q0OTI1Yjg2MGRiMjI1Yjk0ZTA4NDlhZGEzLi5mODFjMTdmZWE0
NGYxNjNmYzYxMmUyOGExOTc3NjA4ZThlZGQ0NjBmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAKICNpbmNsdWRlICJTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFBh
cnNlckZhY3RvcnkuaCIKKyNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUGF0dGVybkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKICNpbmNsdWRl
ICJTVkdQb2x5RWxlbWVudC5oIgpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdTaGFwZSYgc2hhcGUp
CiAgICAgICAgIFNWR1BhdGhFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVs
ZW1lbnQqPihzdmdFbGVtZW50KTsKICAgICAgICAgU3RyaW5nIHBhdGhTdHJpbmc7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgc3dpdGNoIHRvIFVuYWx0ZXJlZFBhcnNpbmcgaGVyZSAtIHRo
aXMgd2lsbCBhZmZlY3QgdGhlIHBhdGggZHVtcGluZyBvdXRwdXQgb2YgZG96ZW5zIG9mIHRlc3Rz
LgotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZFN0cmluZ0Zyb21C
eXRlU3RyZWFtKGVsZW1lbnQtPnBhdGhCeXRlU3RyZWFtKCksIHBhdGhTdHJpbmcsIE5vcm1hbGl6
ZWRQYXJzaW5nKTsKKyAgICAgICAgYnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShlbGVtZW50LT5w
YXRoQnl0ZVN0cmVhbSgpLCBwYXRoU3RyaW5nLCBOb3JtYWxpemVkUGFyc2luZyk7CiAgICAgICAg
IHdyaXRlTmFtZUFuZFF1b3RlZFZhbHVlKHRzLCAiZGF0YSIsIHBhdGhTdHJpbmcpOwogICAgIH0g
ZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5P
bmUuY3BwCmluZGV4IDE2YzUzNTE2ODZmYzE3YWYzYjVmNTcwYWQzYTAxN2RlODU0ZmVhMDkuLjdl
ZWY2ZmE5NzE4ODcxZDhiYTBjZWM2YzNiNmM4YTAwNDllN2RkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FsbEluT25lLmNwcApAQCAtMTM0LDEzICsxMzQsMTMgQEAKICNpbmNsdWRlICJTVkdQYXRoQnl0
ZVN0cmVhbVNvdXJjZS5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuY3BwIgogI2luY2x1
ZGUgIlNWR1BhdGhQYXJzZXIuY3BwIgotI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmNw
cCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHAiCiAjaW5j
bHVkZSAiU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhTdHJpbmdT
b3VyY2UuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwIgor
I2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuY3BwIgogI2luY2x1ZGUgIlNWR1BhdHRlcm5FbGVt
ZW50LmNwcCIKICNpbmNsdWRlICJTVkdQb2ludExpc3QuY3BwIgogI2luY2x1ZGUgIlNWR1BvbHlF
bGVtZW50LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCmluZGV4IGZkMTliODBhNDhmN2EyZDNjZDViYTgyOTc2MmU3MjE2OTJlMzUxNmQuLjEw
N2QwZjk1YzVhN2YxNmQ4YTdjZjg0MzYzYTI2ZDJkMmU4MDA4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhEYXRhLmgi
CiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFj
dG9yeS5oIgorI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTVkdUcmFu
c2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CkBAIC0xMDMsOCArMTAzLDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0aEF0dHIpIHsKICAgICAgICAgbV9wYXRoID0gUGF0aCgp
OwotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpzZWxmKCk7Ci0gICAgICAgIGZhY3RvcnktPmJ1aWxkUGF0aEZyb21TdHJpbmcoYXR0
ci0+dmFsdWUoKSwgbV9wYXRoKTsKKyAgICAgICAgYnVpbGRQYXRoRnJvbVN0cmluZyhhdHRyLT52
YWx1ZSgpLCBtX3BhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFBhdGguY3BwCmluZGV4IDYxYTY3Y2JkYzVmNDVkMjQxYmU3NjNmOGI2YWRm
Yzg0NWFmMDNhNWQuLjAyNmI1MmFlOTgwMGQ0Y2EwY2EzMjc2MzhhZDFlMTYyNWQ1MDRlYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAK
ICNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9y
eS5oIgorI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNiw3ICszNiw3IEBAIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpTVkdBbmltYXRl
ZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FCiBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgT3duUHRyPFNWR1BhdGhCeXRlU3Ry
ZWFtPiBieXRlU3RyZWFtID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOwotICAgIFNWR1Bh
dGhQYXJzZXJGYWN0b3J5OjpzZWxmKCktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5n
KHN0cmluZywgYnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgYnVpbGRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoc3RyaW5nLCBieXRlU3RyZWFtLmdldCgpLCBVbmFs
dGVyZWRQYXJzaW5nKTsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKGJ5
dGVTdHJlYW0ucmVsZWFzZSgpKTsKIH0KIApAQCAtNDgsNyArNDgsNyBAQCBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1h
dGlvbihjb25zdAogCiAgICAgLy8gQnVpbGQgaW5pdGlhbCBwYXRoIGJ5dGUgc3RyZWFtLgogICAg
IE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gYnl0ZVN0cmVhbSA9IFNWR1BhdGhCeXRlU3RyZWFt
OjpjcmVhdGUoKTsKLSAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGJhc2VWYWx1ZSwgYnl0ZVN0cmVhbS5nZXQo
KSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQ
YXRoU2VnTGlzdChiYXNlVmFsdWUsIGJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmPiA+IHJlc3VsdDsKIApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNWR0FuaW1hdGVkUGF0aEFu
aW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cAogICAgIEFTU0VSVCh0eXBlKTsKICAgICBBU1NFUlQodHlwZS0+dHlwZSgpID09IG1fdHlwZSk7
CiAgICAgY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGJhc2VWYWx1ZSA9IGNhc3RBbmltYXRlZFByb3Bl
cnR5VG9BY3R1YWxUeXBlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGFu
aW1hdGVkVHlwZXNbMF0ucHJvcGVydGllc1swXS5nZXQoKSktPmN1cnJlbnRCYXNlVmFsdWUoKTsK
LSAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZFNWR1BhdGhCeXRlU3RyZWFt
RnJvbVNWR1BhdGhTZWdMaXN0KGJhc2VWYWx1ZSwgdHlwZS0+cGF0aCgpLCBVbmFsdGVyZWRQYXJz
aW5nKTsKKyAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGJhc2VW
YWx1ZSwgdHlwZS0+cGF0aCgpLCBVbmFsdGVyZWRQYXJzaW5nKTsKIH0KIAogdm9pZCBTVkdBbmlt
YXRlZFBhdGhBbmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQpAQCAtOTYsMTAgKzk2LDEwIEBAIHZvaWQg
U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBl
KiBmcm9tLCBTVkdBbmltYXRlCiAKICAgICBTVkdQYXRoQnl0ZVN0cmVhbSogZnJvbVBhdGggPSBm
cm9tLT5wYXRoKCk7CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIHRvUGF0aCA9IHRvLT5wYXRoKCk7
Ci0gICAgdW5zaWduZWQgaXRlbXNDb3VudCA9IGZyb21QYXRoLT5zaXplKCk7Ci0gICAgaWYgKCFp
dGVtc0NvdW50IHx8IGl0ZW1zQ291bnQgIT0gdG9QYXRoLT5zaXplKCkpCisgICAgdW5zaWduZWQg
ZnJvbVBhdGhTaXplID0gZnJvbVBhdGgtPnNpemUoKTsKKyAgICBpZiAoIWZyb21QYXRoU2l6ZSB8
fCBmcm9tUGF0aFNpemUgIT0gdG9QYXRoLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5hZGRUb1NWR1BhdGhCeXRlU3RyZWFtKHRvUGF0
aCwgZnJvbVBhdGgpOworICAgIGFkZFRvU1ZHUGF0aEJ5dGVTdHJlYW0odG9QYXRoLCBmcm9tUGF0
aCk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKQEAgLTEyNSwxNSArMTI1LDE1IEBAIHZvaWQgU1ZH
QW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQKICAgICBpZiAoIWZyb21QYXRoLT5zaXplKCkgfHwgKG1fYW5pbWF0aW9u
RWxlbWVudC0+aXNBZGRpdGl2ZSgpICYmIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9k
ZSgpICE9IFRvQW5pbWF0aW9uKSkKICAgICAgICAgbGFzdEFuaW1hdGVkUGF0aCA9IGFuaW1hdGVk
UGF0aC0+Y29weSgpOwogCi0gICAgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRB
bmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKGZyb21QYXRoLCB0b1BhdGgsIGFuaW1hdGVkUGF0aCwg
cGVyY2VudGFnZSk7CisgICAgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKGZyb21QYXRo
LCB0b1BhdGgsIGFuaW1hdGVkUGF0aCwgcGVyY2VudGFnZSk7CiAKICAgICAvLyBIYW5kbGUgYWRk
aXRpdmU9J3N1bScuCiAgICAgaWYgKGxhc3RBbmltYXRlZFBhdGgpCi0gICAgICAgIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5OjpzZWxmKCktPmFkZFRvU1ZHUGF0aEJ5dGVTdHJlYW0oYW5pbWF0ZWRQYXRo
LCBsYXN0QW5pbWF0ZWRQYXRoLmdldCgpKTsKKyAgICAgICAgYWRkVG9TVkdQYXRoQnl0ZVN0cmVh
bShhbmltYXRlZFBhdGgsIGxhc3RBbmltYXRlZFBhdGguZ2V0KCkpOwogCiAgICAgLy8gSGFuZGxl
IGFjY3VtdWxhdGU9J3N1bScuCiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+aXNBY2N1bXVs
YXRlZCgpICYmIHJlcGVhdENvdW50KQotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2Vs
ZigpLT5hZGRUb1NWR1BhdGhCeXRlU3RyZWFtKGFuaW1hdGVkUGF0aCwgdG9QYXRoLCByZXBlYXRD
b3VudCk7CisgICAgICAgIGFkZFRvU1ZHUGF0aEJ5dGVTdHJlYW0oYW5pbWF0ZWRQYXRoLCB0b1Bh
dGgsIHJlcGVhdENvdW50KTsKIH0KICAgIAogZmxvYXQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6
OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCmluZGV4IGFhMjJkMTJhYWM3OWM5N2EzMGMwMDNl
YTc2NGM3ZTM3ODNjYjkzMGIuLjFlMTI4Y2MwMDFlZTEzYmJkZWNiYzE0ZTY4MzQ2ODZlNzYxZmUy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR051bWJlckxpc3Qu
aCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTVkdQYXRoUGFy
c2VyRmFjdG9yeS5oIgorI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAi
U1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2lu
Y2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHbHlwaEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVu
dC5jcHAKaW5kZXggMzZkZTNmMWM0YTUwZjBhMmUyYmI3NmU3YzdjNGEzNmIzNjZmODY0MC4uMTRk
OGU5ZDczM2NmZTlhNTY5ZWQ5ZjZiNDEyMzI3YmUzODM1ODk3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dseXBoRWxlbWVudC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTVkdGb250
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKKyNpbmNsdWRlICJT
VkdQYXRoVXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTgsMTQgKzk4
LDYgQEAgc3RhdGljIGlubGluZSBTVkdHbHlwaDo6T3JpZW50YXRpb24gcGFyc2VPcmllbnRhdGlv
bihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBTVkdHbHlwaDo6Qm90aDsK
IH0KIAotc3RhdGljIGlubGluZSBQYXRoIHBhcnNlUGF0aERhdGEoY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKLXsKLSAgICBQYXRoIHJlc3VsdDsKLSAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSog
ZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgZmFjdG9yeS0+YnVp
bGRQYXRoRnJvbVN0cmluZyh2YWx1ZSwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
CiB2b2lkIFNWR0dseXBoRWxlbWVudDo6aW5oZXJpdFVuc3BlY2lmaWVkQXR0cmlidXRlcyhTVkdH
bHlwaCYgaWRlbnRpZmllciwgY29uc3QgU1ZHRm9udERhdGEqIHN2Z0ZvbnREYXRhKQogewogICAg
IGlmIChpZGVudGlmaWVyLmhvcml6b250YWxBZHZhbmNlWCA9PSBTVkdHbHlwaDo6aW5oZXJpdGVk
VmFsdWUoKSkKQEAgLTEzMyw3ICsxMjUsNyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHBhcnNlU1ZH
R2x5cGhBdHRyaWJ1dGUoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQwogU1ZH
R2x5cGggU1ZHR2x5cGhFbGVtZW50OjpidWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29uc3Qg
U1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBTVkdHbHlwaCBpZGVudGlmaWVyOwotICAgIGlk
ZW50aWZpZXIucGF0aERhdGEgPSBwYXJzZVBhdGhEYXRhKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1
dGUoU1ZHTmFtZXM6OmRBdHRyKSk7CisgICAgYnVpbGRQYXRoRnJvbVN0cmluZyhlbGVtZW50LT5m
YXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjpkQXR0ciksIGlkZW50aWZpZXIucGF0aERhdGEpOwog
IAogICAgIC8vIFNwZWM6IFRoZSBob3Jpem9udGFsIGFkdmFuY2UgYWZ0ZXIgcmVuZGVyaW5nIHRo
ZSBnbHlwaCBpbiBob3Jpem9udGFsIG9yaWVudGF0aW9uLgogICAgIC8vIElmIHRoZSBhdHRyaWJ1
dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiB0aGUgYXR0cmlidXRlIHdl
cmUgc2V0IHRvIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCbGVu
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKaW5kZXggNDZm
MGExOTA4YzAyOTFmMDljYjFhNjJkNDRkZmI3Nzc5MmUxYzQxYS4uNDg2Y2Q5NTE1NmI2YmE4OWY1
MGRjOGM5NTJkODJmOTc4MGRlOTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhCbGVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIu
Y3BwCkBAIC0zNzksNyArMzc5LDcgQEAgYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRBbmltYXRl
ZFBhdGgoZmxvYXQgcHJvZ3Jlc3MsIFNWR1BhdGhTb3VyY2UqIGZyb21Tb3VyY2UKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
YXRoU2VnVW5rbm93bjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTs7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZyb21Tb3VyY2VIYWREYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggNTA0ZDRhYzg3ZDA4Yzdi
NjYzYmE5MTY1OWE2ZjVmM2UxMjA2ZTBlZS4uY2NhYzMwMWUxOWU1Y2FlMWVkYTUyOGU5YThiMzdh
YjM0NWU0NWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR1Bh
dGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0FyYy5oIgogI2luY2x1ZGUg
IlNWR1BhdGhTZWdDbG9zZVBhdGguaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
LmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgi
CiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJT
VkdQYXRoU2VnTW92ZXRvLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsMjEgKzkx
LDIxIEBAIFBhc3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKIGZsb2F0IFNWR1BhdGhFbGVtZW50OjpnZXRU
b3RhbExlbmd0aCgpCiB7CiAgICAgZmxvYXQgdG90YWxMZW5ndGggPSAwOwotICAgIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5OjpzZWxmKCktPmdldFRvdGFsTGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShw
YXRoQnl0ZVN0cmVhbSgpLCB0b3RhbExlbmd0aCk7CisgICAgZ2V0VG90YWxMZW5ndGhPZlNWR1Bh
dGhCeXRlU3RyZWFtKHBhdGhCeXRlU3RyZWFtKCksIHRvdGFsTGVuZ3RoKTsKICAgICByZXR1cm4g
dG90YWxMZW5ndGg7CiB9CiAKIEZsb2F0UG9pbnQgU1ZHUGF0aEVsZW1lbnQ6OmdldFBvaW50QXRM
ZW5ndGgoZmxvYXQgbGVuZ3RoKQogewogICAgIEZsb2F0UG9pbnQgcG9pbnQ7Ci0gICAgU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+Z2V0UG9pbnRBdExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJl
YW0ocGF0aEJ5dGVTdHJlYW0oKSwgbGVuZ3RoLCBwb2ludCk7CisgICAgZ2V0UG9pbnRBdExlbmd0
aE9mU1ZHUGF0aEJ5dGVTdHJlYW0ocGF0aEJ5dGVTdHJlYW0oKSwgbGVuZ3RoLCBwb2ludCk7CiAg
ICAgcmV0dXJuIHBvaW50OwogfQogCiB1bnNpZ25lZCBTVkdQYXRoRWxlbWVudDo6Z2V0UGF0aFNl
Z0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCkKIHsKICAgICB1bnNpZ25lZCBwYXRoU2VnID0gMDsKLSAg
ICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5nZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9t
U1ZHUGF0aEJ5dGVTdHJlYW0ocGF0aEJ5dGVTdHJlYW0oKSwgbGVuZ3RoLCBwYXRoU2VnKTsKKyAg
ICBnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJlYW0ocGF0aEJ5dGVTdHJl
YW0oKSwgbGVuZ3RoLCBwYXRoU2VnKTsKICAgICByZXR1cm4gcGF0aFNlZzsKIH0KIApAQCAtMjI1
LDggKzIyNSw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0cikKICAgICB9CiAKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpkQXR0
cikgewotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJz
ZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgICAgIGlmICghZmFjdG9yeS0+YnVpbGRTVkdQYXRoQnl0
ZVN0cmVhbUZyb21TdHJpbmcoYXR0ci0+dmFsdWUoKSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwg
VW5hbHRlcmVkUGFyc2luZykpCisgICAgICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZy
b21TdHJpbmcoYXR0ci0+dmFsdWUoKSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVk
UGFyc2luZykpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkt
PnJlcG9ydEVycm9yKCJQcm9ibGVtIHBhcnNpbmcgZD1cIiIgKyBhdHRyLT52YWx1ZSgpICsgIlwi
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNjUsOCArMjY0LDcgQEAgdm9pZCBTVkdQ
YXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRyKSB7CiAgICAgICAgIGlm
IChtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplICYmICFTVkdBbmltYXRlZFByb3BlcnR5
Ojpsb29rdXBXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLCB0cnVlPih0aGlzLCBkUHJvcGVydHlJbmZvKCkpLT5pc0FuaW1hdGluZygp
KSB7CiAgICAgICAgICAgICBTVkdQYXRoU2VnTGlzdCBuZXdMaXN0KFBhdGhTZWdVbmFsdGVyZWRS
b2xlKTsKLSAgICAgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgICAgIGZhY3RvcnktPmJ1aWxkU1ZHUGF0
aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCB0aGlzLCBuZXdM
aXN0LCBVbmFsdGVyZWRQYXJzaW5nKTsKKyAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RG
cm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCB0aGlzLCBuZXdMaXN0LCBVbmFs
dGVyZWRQYXJzaW5nKTsKICAgICAgICAgICAgIG1fcGF0aFNlZ0xpc3QudmFsdWUgPSBuZXdMaXN0
OwogICAgICAgICAgICAgbV9jYWNoZWRCQm94UmVjdElzVmFsaWQgPSBmYWxzZTsKICAgICAgICAg
fQpAQCAtMjk2LDggKzI5NCw3IEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZH
UGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodm9pZCogY29uCiAgICAgICAgIHJl
dHVybiBwcm9wZXJ0eTsKIAogICAgIC8vIEJ1aWxkIGluaXRpYWwgU1ZHUGF0aFNlZ0xpc3QuCi0g
ICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6
c2VsZigpOwotICAgIGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShv
d25lclR5cGUtPm1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIG93bmVyVHlwZSwgb3duZXJUeXBlLT5t
X3BhdGhTZWdMaXN0LnZhbHVlLCBVbmFsdGVyZWRQYXJzaW5nKTsKKyAgICBidWlsZFNWR1BhdGhT
ZWdMaXN0RnJvbUJ5dGVTdHJlYW0ob3duZXJUeXBlLT5tX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBv
d25lclR5cGUsIG93bmVyVHlwZS0+bV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2lu
Zyk7CiAKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFw
cGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
LCBTVkdQYXRoU2VnTGlzdCwgdHJ1ZT4KICAgICAgICAgICAgKG93bmVyVHlwZSwgZFByb3BlcnR5
SW5mbygpLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3QudmFsdWUpOwpAQCAtMzM5LDE0ICszMzYs
MTIgQEAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbGVtZW50Ojphbmlt
YXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCgpCiAKIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhdGhT
ZWdMaXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSByb2xlKQogewotICAgIFNWR1BhdGhQYXJzZXJG
YWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLQogICAgIHN3
aXRjaCAocm9sZSkgewogICAgIGNhc2UgUGF0aFNlZ05vcm1hbGl6ZWRSb2xlOgogICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEyIC0g
SW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBhdGhTZWdVbmFsdGVyZWRSb2xlOgotICAgICAgICBmYWN0b3J5LT5idWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KG1fcGF0aFNlZ0xpc3QudmFsdWUsIG1f
cGF0aEJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAgICBidWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KG1fcGF0aFNlZ0xpc3QudmFsdWUsIG1f
cGF0aEJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBhdGhTZWdVbmRlZmluZWRSb2xlOgogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODE1OTFjNGQ1YzE4YTEyZGY0Zjk0MDEwYjYwM2U4OGM0MTMyNWJhMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzMxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShTVkcpCi0jaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKLQotI2luY2x1ZGUgIlBh
dGhUcmF2ZXJzYWxTdGF0ZS5oIgotI2luY2x1ZGUgIlNWR1BhdGhCbGVuZGVyLmgiCi0jaW5jbHVk
ZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKLSNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIu
aCIKLSNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIgotI2luY2x1ZGUgIlNWR1Bh
dGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5oIgotI2luY2x1ZGUgIlNWR1Bh
dGhTZWdMaXN0QnVpbGRlci5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0U291cmNlLmgiCi0j
aW5jbHVkZSAiU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJTVkdQYXRoU3RyaW5n
U291cmNlLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTVkdQYXRoQnVpbGRlciogZ2xvYmFsU1ZHUGF0
aEJ1aWxkZXIoUGF0aCYgcmVzdWx0KQotewotICAgIHN0YXRpYyBTVkdQYXRoQnVpbGRlciogc19i
dWlsZGVyID0gMDsKLSAgICBpZiAoIXNfYnVpbGRlcikKLSAgICAgICAgc19idWlsZGVyID0gbmV3
IFNWR1BhdGhCdWlsZGVyOwotCi0gICAgc19idWlsZGVyLT5zZXRDdXJyZW50UGF0aCgmcmVzdWx0
KTsKLSAgICByZXR1cm4gc19idWlsZGVyOwotfQotCi1zdGF0aWMgU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyKiBnbG9iYWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoU1ZHUGF0aEVsZW1lbnQqIGVsZW1lbnQs
IFNWR1BhdGhTZWdSb2xlIHJvbGUsIFNWR1BhdGhTZWdMaXN0JiByZXN1bHQpCi17Ci0gICAgc3Rh
dGljIFNWR1BhdGhTZWdMaXN0QnVpbGRlciogc19idWlsZGVyID0gMDsKLSAgICBpZiAoIXNfYnVp
bGRlcikKLSAgICAgICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhTZWdMaXN0QnVpbGRlcjsKLQot
ICAgIHNfYnVpbGRlci0+c2V0Q3VycmVudFNWR1BhdGhFbGVtZW50KGVsZW1lbnQpOwotICAgIHNf
YnVpbGRlci0+c2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KHJlc3VsdCk7Ci0gICAgc19idWlsZGVy
LT5zZXRDdXJyZW50U1ZHUGF0aFNlZ1JvbGUocm9sZSk7Ci0gICAgcmV0dXJuIHNfYnVpbGRlcjsK
LX0KLQotc3RhdGljIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogZ2xvYmFsU1ZHUGF0aEJ5dGVT
dHJlYW1CdWlsZGVyKFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQpCi17Ci0gICAgc3RhdGljIFNW
R1BhdGhCeXRlU3RyZWFtQnVpbGRlciogc19idWlsZGVyID0gMDsKLSAgICBpZiAoIXNfYnVpbGRl
cikKLSAgICAgICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcjsKLQot
ICAgIHNfYnVpbGRlci0+c2V0Q3VycmVudEJ5dGVTdHJlYW0ocmVzdWx0KTsKLSAgICByZXR1cm4g
c19idWlsZGVyOwotfQotCi1zdGF0aWMgU1ZHUGF0aFN0cmluZ0J1aWxkZXIqIGdsb2JhbFNWR1Bh
dGhTdHJpbmdCdWlsZGVyKCkKLXsKLSAgICBzdGF0aWMgU1ZHUGF0aFN0cmluZ0J1aWxkZXIqIHNf
YnVpbGRlciA9IDA7Ci0gICAgaWYgKCFzX2J1aWxkZXIpCi0gICAgICAgIHNfYnVpbGRlciA9IG5l
dyBTVkdQYXRoU3RyaW5nQnVpbGRlcjsKLQotICAgIHJldHVybiBzX2J1aWxkZXI7Ci19Ci0KLXN0
YXRpYyBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKiBnbG9iYWxTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyKFBhdGhUcmF2ZXJzYWxTdGF0ZSYgdHJhdmVyc2FsU3RhdGUsIGZsb2F0IGxl
bmd0aCkKLXsKLSAgICBzdGF0aWMgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogc19idWls
ZGVyID0gMDsKLSAgICBpZiAoIXNfYnVpbGRlcikKLSAgICAgICAgc19idWlsZGVyID0gbmV3IFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI7Ci0KLSAgICBzX2J1aWxkZXItPnNldEN1cnJlbnRU
cmF2ZXJzYWxTdGF0ZSgmdHJhdmVyc2FsU3RhdGUpOwotICAgIHNfYnVpbGRlci0+c2V0RGVzaXJl
ZExlbmd0aChsZW5ndGgpOwotICAgIHJldHVybiBzX2J1aWxkZXI7Ci19Ci0KLXN0YXRpYyBTVkdQ
YXRoUGFyc2VyKiBnbG9iYWxTVkdQYXRoUGFyc2VyKFNWR1BhdGhTb3VyY2UqIHNvdXJjZSwgU1ZH
UGF0aENvbnN1bWVyKiBjb25zdW1lcikKLXsKLSAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlciogc19w
YXJzZXIgPSAwOwotICAgIGlmICghc19wYXJzZXIpCi0gICAgICAgIHNfcGFyc2VyID0gbmV3IFNW
R1BhdGhQYXJzZXI7Ci0KLSAgICBzX3BhcnNlci0+c2V0Q3VycmVudFNvdXJjZShzb3VyY2UpOwot
ICAgIHNfcGFyc2VyLT5zZXRDdXJyZW50Q29uc3VtZXIoY29uc3VtZXIpOwotICAgIHJldHVybiBz
X3BhcnNlcjsKLX0KLQotc3RhdGljIFNWR1BhdGhCbGVuZGVyKiBnbG9iYWxTVkdQYXRoQmxlbmRl
cigpCi17Ci0gICAgc3RhdGljIFNWR1BhdGhCbGVuZGVyKiBzX2JsZW5kZXIgPSAwOwotICAgIGlm
ICghc19ibGVuZGVyKQotICAgICAgICBzX2JsZW5kZXIgPSBuZXcgU1ZHUGF0aEJsZW5kZXI7Ci0K
LSAgICByZXR1cm4gc19ibGVuZGVyOwotfQotCi1TVkdQYXRoUGFyc2VyRmFjdG9yeSogU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OnNlbGYoKQotewotICAgIHN0YXRpYyBTVkdQYXRoUGFyc2VyRmFjdG9y
eSogc19pbnN0YW5jZSA9IDA7Ci0gICAgaWYgKCFzX2luc3RhbmNlKQotICAgICAgICBzX2luc3Rh
bmNlID0gbmV3IFNWR1BhdGhQYXJzZXJGYWN0b3J5OwotCi0gICAgcmV0dXJuIHNfaW5zdGFuY2U7
Ci19Ci0KLVNWR1BhdGhQYXJzZXJGYWN0b3J5OjpTVkdQYXRoUGFyc2VyRmFjdG9yeSgpCi17Ci19
Ci0KLVNWR1BhdGhQYXJzZXJGYWN0b3J5Ojp+U1ZHUGF0aFBhcnNlckZhY3RvcnkoKQotewotfQot
Ci1ib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFBhdGhGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgZCwgUGF0aCYgcmVzdWx0KQotewotICAgIGlmIChkLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgU1ZHUGF0aEJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQ
YXRoQnVpbGRlcihyZXN1bHQpOwotCi0gICAgT3duUHRyPFNWR1BhdGhTdHJpbmdTb3VyY2U+IHNv
dXJjZSA9IFNWR1BhdGhTdHJpbmdTb3VyY2U6OmNyZWF0ZShkKTsKLSAgICBTVkdQYXRoUGFyc2Vy
KiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7Ci0g
ICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBh
cnNpbmcpOwotICAgIHBhcnNlci0+Y2xlYW51cCgpOwotICAgIHJldHVybiBvazsKLX0KLQotYm9v
bCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRo
U2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU1ZHUGF0aEJ5dGVTdHJlYW0qIHJl
c3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQotewotICAgIEFTU0VSVChyZXN1bHQp
OwotICAgIHJlc3VsdC0+Y2xlYXIoKTsKLSAgICBpZiAobGlzdC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9
IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihyZXN1bHQpOwotCi0gICAgT3duUHRyPFNW
R1BhdGhTZWdMaXN0U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6Y3JlYXRl
KGxpc3QpOwotICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIo
c291cmNlLmdldCgpLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhE
YXRhRnJvbVNvdXJjZShwYXJzaW5nTW9kZSk7Ci0gICAgcGFyc2VyLT5jbGVhbnVwKCk7Ci0gICAg
cmV0dXJuIG9rOwotfQotCi1ib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFBhdGhGcm9t
Qnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBQYXRoJiByZXN1bHQpCi17Ci0g
ICAgQVNTRVJUKHN0cmVhbSk7Ci0gICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBTVkdQYXRoQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1Bh
dGhCdWlsZGVyKHJlc3VsdCk7Ci0KLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+
IHNvdXJjZSA9IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVhdGUoc3RyZWFtKTsKLSAgICBT
VkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwg
YnVpbGRlcik7Ci0gICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2Uo
Tm9ybWFsaXplZFBhcnNpbmcpOwotICAgIHBhcnNlci0+Y2xlYW51cCgpOwotICAgIHJldHVybiBv
azsKLX0KLQotYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoU2VnTGlzdEZy
b21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJlYW0sIFNWR1BhdGhFbGVtZW50KiBl
bGVtZW50LCBTVkdQYXRoU2VnTGlzdCYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01v
ZGUpCi17Ci0gICAgQVNTRVJUKHN0cmVhbSk7Ci0gICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7IAotCi0gICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKiBidWls
ZGVyID0gZ2xvYmFsU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKGVsZW1lbnQsIHBhcnNpbmdNb2RlID09
IE5vcm1hbGl6ZWRQYXJzaW5nID8gUGF0aFNlZ05vcm1hbGl6ZWRSb2xlIDogUGF0aFNlZ1VuYWx0
ZXJlZFJvbGUsIHJlc3VsdCk7Ci0KLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+
IHNvdXJjZSA9IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpjcmVhdGUoc3RyZWFtKTsKLSAgICBT
VkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwg
YnVpbGRlcik7Ci0gICAgYm9vbCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2Uo
cGFyc2luZ01vZGUpOwotICAgIHBhcnNlci0+Y2xlYW51cCgpOwotICAgIHJldHVybiBvazsKLX0K
LQotYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShT
VkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2Rl
IHBhcnNpbmdNb2RlKQotewotICAgIEFTU0VSVChzdHJlYW0pOwotICAgIGlmIChzdHJlYW0tPmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOyAKLQotICAgIFNWR1BhdGhTdHJpbmdCdWls
ZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFN0cmluZ0J1aWxkZXIoKTsKLQotICAgIE93blB0
cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gc291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3Vy
Y2U6OmNyZWF0ZShzdHJlYW0pOwotICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNW
R1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2Vy
LT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5nTW9kZSk7Ci0gICAgcmVzdWx0ID0gYnVp
bGRlci0+cmVzdWx0KCk7Ci0gICAgcGFyc2VyLT5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOwot
fQotCi1ib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2Vn
TGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU3RyaW5nJiByZXN1bHQsIFBhdGhQYXJz
aW5nTW9kZSBwYXJzaW5nTW9kZSkKLXsKLSAgICByZXN1bHQgPSBTdHJpbmcoKTsKLSAgICBpZiAo
bGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFNWR1BhdGhTdHJp
bmdCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFN0cmluZ0J1aWxkZXIoKTsKLQotICAg
IE93blB0cjxTVkdQYXRoU2VnTGlzdFNvdXJjZT4gc291cmNlID0gU1ZHUGF0aFNlZ0xpc3RTb3Vy
Y2U6OmNyZWF0ZShsaXN0KTsKLSAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQ
YXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7Ci0gICAgYm9vbCBvayA9IHBhcnNlci0+
cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOwotICAgIHJlc3VsdCA9IGJ1aWxk
ZXItPnJlc3VsdCgpOwotICAgIHBhcnNlci0+Y2xlYW51cCgpOwotICAgIHJldHVybiBvazsKLX0K
LQotYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJiBkLCBTVkdQYXRoQnl0ZVN0cmVhbSogcmVzdWx0LCBQYXRoUGFy
c2luZ01vZGUgcGFyc2luZ01vZGUpCi17Ci0gICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgcmVzdWx0
LT5jbGVhcigpOwotICAgIGlmIChkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5
dGVTdHJlYW1CdWlsZGVyKHJlc3VsdCk7Ci0KLSAgICBPd25QdHI8U1ZHUGF0aFN0cmluZ1NvdXJj
ZT4gc291cmNlID0gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6Y3JlYXRlKGQpOwotICAgIFNWR1BhdGhQ
YXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVy
KTsKLSAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5n
TW9kZSk7Ci0gICAgcGFyc2VyLT5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi1ib29s
IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZH
UGF0aEJ5dGVTdHJlYW0qIGZyb21TdHJlYW0sIFNWR1BhdGhCeXRlU3RyZWFtKiB0b1N0cmVhbSwg
U1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgZmxvYXQgcHJvZ3Jlc3MpCi17Ci0gICAgQVNTRVJU
KGZyb21TdHJlYW0pOwotICAgIEFTU0VSVCh0b1N0cmVhbSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7
Ci0gICAgQVNTRVJUKHRvU3RyZWFtICE9IHJlc3VsdCk7Ci0KLSAgICByZXN1bHQtPmNsZWFyKCk7
Ci0gICAgaWYgKHRvU3RyZWFtLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRl
U3RyZWFtQnVpbGRlcihyZXN1bHQpOwotCi0gICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtU291
cmNlPiBmcm9tU291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZShmcm9tU3Ry
ZWFtKTsKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IHRvU291cmNlID0gU1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSh0b1N0cmVhbSk7Ci0gICAgU1ZHUGF0aEJsZW5k
ZXIqIGJsZW5kZXIgPSBnbG9iYWxTVkdQYXRoQmxlbmRlcigpOwotICAgIGJvb2wgb2sgPSBibGVu
ZGVyLT5ibGVuZEFuaW1hdGVkUGF0aChwcm9ncmVzcywgZnJvbVNvdXJjZS5nZXQoKSwgdG9Tb3Vy
Y2UuZ2V0KCksIGJ1aWxkZXIpOwotICAgIGJsZW5kZXItPmNsZWFudXAoKTsKLSAgICByZXR1cm4g
b2s7Ci19Ci0KLWJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmFkZFRvU1ZHUGF0aEJ5dGVTdHJl
YW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIGZyb21TdHJlYW0sIFNWR1BhdGhCeXRlU3RyZWFtKiBieVN0
cmVhbSwgdW5zaWduZWQgcmVwZWF0Q291bnQpCi17Ci0gICAgQVNTRVJUKGZyb21TdHJlYW0pOwot
ICAgIEFTU0VSVChieVN0cmVhbSk7Ci0gICAgaWYgKGZyb21TdHJlYW0tPmlzRW1wdHkoKSB8fCBi
eVN0cmVhbS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTVkdQYXRo
Qnl0ZVN0cmVhbUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXIoZnJvbVN0cmVhbSk7Ci0KLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGZyb21TdHJl
YW1Db3B5ID0gZnJvbVN0cmVhbS0+Y29weSgpOwotICAgIGZyb21TdHJlYW0tPmNsZWFyKCk7Ci0K
LSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IGZyb21Tb3VyY2UgPSBTVkdQYXRo
Qnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGZyb21TdHJlYW1Db3B5LmdldCgpKTsKLSAgICBPd25Q
dHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IGJ5U291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U6OmNyZWF0ZShieVN0cmVhbSk7Ci0gICAgU1ZHUGF0aEJsZW5kZXIqIGJsZW5kZXIgPSBn
bG9iYWxTVkdQYXRoQmxlbmRlcigpOwotICAgIGJvb2wgb2sgPSBibGVuZGVyLT5hZGRBbmltYXRl
ZFBhdGgoZnJvbVNvdXJjZS5nZXQoKSwgYnlTb3VyY2UuZ2V0KCksIGJ1aWxkZXIsIHJlcGVhdENv
dW50KTsKLSAgICBibGVuZGVyLT5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi1ib29s
IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5
dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVhbSwgZmxvYXQgbGVuZ3RoLCB1bnNpZ25l
ZCYgcGF0aFNlZykKLXsKLSAgICBBU1NFUlQoc3RyZWFtKTsKLSAgICBpZiAoc3RyZWFtLT5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0
cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0
aCk7Ci0gICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIGxlbmd0aCk7Ci0KLSAg
ICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U+IHNvdXJjZSA9IFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlOjpjcmVhdGUoc3RyZWFtKTsKLSAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBn
bG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7Ci0gICAgYm9vbCBvayA9
IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwotICAg
IHBhdGhTZWcgPSBidWlsZGVyLT5wYXRoU2VnbWVudEluZGV4KCk7Ci0gICAgcGFyc2VyLT5jbGVh
bnVwKCk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi1ib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5Ojpn
ZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIHN0cmVh
bSwgZmxvYXQmIHRvdGFsTGVuZ3RoKQotewotICAgIEFTU0VSVChzdHJlYW0pOwotICAgIGlmIChz
dHJlYW0tPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFBhdGhU
cmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNh
bFRvdGFsTGVuZ3RoKTsKLSAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKiBidWlsZGVy
ID0gZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcih0cmF2ZXJzYWxTdGF0ZSwgMCk7
Ci0gICAgCi0gICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPiBzb3VyY2UgPSBTVkdQ
YXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVhbSk7Ci0gICAgU1ZHUGF0aFBhcnNlciog
cGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOwotICAg
IGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJz
aW5nKTsKLSAgICB0b3RhbExlbmd0aCA9IGJ1aWxkZXItPnRvdGFsTGVuZ3RoKCk7Ci0gICAgcGFy
c2VyLT5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi1ib29sIFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpnZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0
cmVhbSogc3RyZWFtLCBmbG9hdCBsZW5ndGgsIEZsb2F0UG9pbnQmIHBvaW50KQotewotICAgIEFT
U0VSVChzdHJlYW0pOwotICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIAotICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRo
VHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFBvaW50QXRMZW5ndGgpOwotICAgIFNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoVHJhdmVyc2FsU3RhdGVC
dWlsZGVyKHRyYXZlcnNhbFN0YXRlLCBsZW5ndGgpOwotICAgIAotICAgIE93blB0cjxTVkdQYXRo
Qnl0ZVN0cmVhbVNvdXJjZT4gc291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0
ZShzdHJlYW0pOwotICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJz
ZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBh
dGhEYXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFyc2luZyk7Ci0gICAgcG9pbnQgPSBidWlsZGVy
LT5jdXJyZW50UG9pbnQoKTsKLSAgICBwYXJzZXItPmNsZWFudXAoKTsKLSAgICByZXR1cm4gb2s7
Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFBhcnNlckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9y
eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTA2NzZlMjI3MjIzZGU3NmYyNjZi
YTU4MGY3YmZkZWMyMzhjYTNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBTVkdQ
YXRoUGFyc2VyRmFjdG9yeV9oCi0jZGVmaW5lIFNWR1BhdGhQYXJzZXJGYWN0b3J5X2gKLQotI2lm
IEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKLSNpbmNsdWRlICJTVkdQYXRoQ29u
c3VtZXIuaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgotCi0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR1BhdGhFbGVtZW50Owot
Ci1jbGFzcyBTVkdQYXRoUGFyc2VyRmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFNWR1Bh
dGhQYXJzZXJGYWN0b3J5KiBzZWxmKCk7Ci0KLSAgICAvLyBTdHJpbmcvU1ZHUGF0aEJ5dGVTdHJl
YW0gLT4gUGF0aAotICAgIGJvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBQ
YXRoJik7Ci0gICAgYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVh
bSosIFBhdGgmKTsKLQotICAgIC8vIFNWR1BhdGhTZWdMaXN0L1N0cmluZyAtPiBTVkdQYXRoQnl0
ZVN0cmVhbQotICAgIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlz
dChjb25zdCBTVkdQYXRoU2VnTGlzdCYsIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdN
b2RlKTsKLSAgICBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYsIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKLQotICAgIC8vIFNW
R1BhdGhCeXRlU3RyZWFtL1NWR1BhdGhTZWdMaXN0IC0+IFN0cmluZwotICAgIGJvb2wgYnVpbGRT
dHJpbmdGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFN0cmluZyYsIFBhdGhQYXJz
aW5nTW9kZSk7Ci0gICAgYm9vbCBidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdChjb25zdCBT
VkdQYXRoU2VnTGlzdCYsIFN0cmluZyYsIFBhdGhQYXJzaW5nTW9kZSk7Ci0KLSAgICAvLyBTVkdQ
YXRoQnl0ZVN0cmVhbSAtPiBTVkdQYXRoU2VnTGlzdAotICAgIGJvb2wgYnVpbGRTVkdQYXRoU2Vn
TGlzdEZyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgU1ZHUGF0aEVsZW1lbnQqLCBT
VkdQYXRoU2VnTGlzdCYsIFBhdGhQYXJzaW5nTW9kZSk7Ci0KLSAgICBib29sIGJ1aWxkQW5pbWF0
ZWRTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFNWR1BhdGhCeXRlU3RyZWFt
KiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCk7Ci0gICAgYm9vbCBhZGRUb1NWR1BhdGhCeXRl
U3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCA9IDEpOwotCi0gICAgYm9vbCBnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZH
UGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCBsZW5ndGgsIHVuc2lnbmVk
JiBwYXRoU2VnKTsKLSAgICBib29sIGdldFRvdGFsTGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShT
VkdQYXRoQnl0ZVN0cmVhbSosIGZsb2F0JiB0b3RhbExlbmd0aCk7Ci0gICAgYm9vbCBnZXRQb2lu
dEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIGZsb2F0IGxl
bmd0aCwgRmxvYXRQb2ludCYpOwotCi1wcml2YXRlOgotICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5
KCk7Ci0gICAgflNWR1BhdGhQYXJzZXJGYWN0b3J5KCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotI2VuZGlmIC8vIFNWR1BhdGhQYXJzZXJG
YWN0b3J5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCmluZGV4IDM3ODJlMTky
ZTU2NDVkNzA2NmI3NjQ3MzFiYTI3MmY5NTYzZGQzNDIuLmRjNzc2MGJkN2Q4OWY2NmZhYTI5MzA3
MjFmMjgxZDk5NWZhZDE1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcApA
QCAtMjcsMTQgKzI3LDE0IEBACiAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1BhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKKyNpbmNs
dWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5n
IFNWR1BhdGhTZWdMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmcgcGF0
aFN0cmluZzsKLSAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZFN0cmluZ0Zy
b21TVkdQYXRoU2VnTGlzdCgqdGhpcywgcGF0aFN0cmluZywgVW5hbHRlcmVkUGFyc2luZyk7Cisg
ICAgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoKnRoaXMsIHBhdGhTdHJpbmcsIFVuYWx0
ZXJlZFBhcnNpbmcpOwogICAgIHJldHVybiBwYXRoU3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVhZjllNzA0NTFmNmZiYTU3MDBl
NzcyMDA2ZDlmMTM3OTQxNjkyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtMCwwICsxLDMxNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMCwgMjAxMi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRl
ICJTVkdQYXRoVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUGF0
aFRyYXZlcnNhbFN0YXRlLmgiCisjaW5jbHVkZSAiU1ZHUGF0aEJsZW5kZXIuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5o
IgorI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiU1ZHUGF0
aEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaCIKKyNp
bmNsdWRlICJTVkdQYXRoU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhTdHJpbmdT
b3VyY2UuaCIKKyNpbmNsdWRlICJTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNWR1BhdGhCdWlsZGVyKiBnbG9iYWxTVkdQYXRo
QnVpbGRlcihQYXRoJiByZXN1bHQpCit7CisgICAgc3RhdGljIFNWR1BhdGhCdWlsZGVyKiBzX2J1
aWxkZXIgPSAwOworICAgIGlmICghc19idWlsZGVyKQorICAgICAgICBzX2J1aWxkZXIgPSBuZXcg
U1ZHUGF0aEJ1aWxkZXI7CisKKyAgICBzX2J1aWxkZXItPnNldEN1cnJlbnRQYXRoKCZyZXN1bHQp
OworICAgIHJldHVybiBzX2J1aWxkZXI7Cit9CisKK3N0YXRpYyBTVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIqIGdsb2JhbFNWR1BhdGhTZWdMaXN0QnVpbGRlcihTVkdQYXRoRWxlbWVudCogZWxlbWVudCwg
U1ZHUGF0aFNlZ1JvbGUgcm9sZSwgU1ZHUGF0aFNlZ0xpc3QmIHJlc3VsdCkKK3sKKyAgICBzdGF0
aWMgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKiBzX2J1aWxkZXIgPSAwOworICAgIGlmICghc19idWls
ZGVyKQorICAgICAgICBzX2J1aWxkZXIgPSBuZXcgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOworCisg
ICAgc19idWlsZGVyLT5zZXRDdXJyZW50U1ZHUGF0aEVsZW1lbnQoZWxlbWVudCk7CisgICAgc19i
dWlsZGVyLT5zZXRDdXJyZW50U1ZHUGF0aFNlZ0xpc3QocmVzdWx0KTsKKyAgICBzX2J1aWxkZXIt
PnNldEN1cnJlbnRTVkdQYXRoU2VnUm9sZShyb2xlKTsKKyAgICByZXR1cm4gc19idWlsZGVyOwor
fQorCitzdGF0aWMgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBnbG9iYWxTVkdQYXRoQnl0ZVN0
cmVhbUJ1aWxkZXIoU1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCkKK3sKKyAgICBzdGF0aWMgU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBzX2J1aWxkZXIgPSAwOworICAgIGlmICghc19idWlsZGVy
KQorICAgICAgICBzX2J1aWxkZXIgPSBuZXcgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOworCisg
ICAgc19idWlsZGVyLT5zZXRDdXJyZW50Qnl0ZVN0cmVhbShyZXN1bHQpOworICAgIHJldHVybiBz
X2J1aWxkZXI7Cit9CisKK3N0YXRpYyBTVkdQYXRoU3RyaW5nQnVpbGRlciogZ2xvYmFsU1ZHUGF0
aFN0cmluZ0J1aWxkZXIoKQoreworICAgIHN0YXRpYyBTVkdQYXRoU3RyaW5nQnVpbGRlciogc19i
dWlsZGVyID0gMDsKKyAgICBpZiAoIXNfYnVpbGRlcikKKyAgICAgICAgc19idWlsZGVyID0gbmV3
IFNWR1BhdGhTdHJpbmdCdWlsZGVyOworCisgICAgcmV0dXJuIHNfYnVpbGRlcjsKK30KKworc3Rh
dGljIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIqIGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxT
dGF0ZUJ1aWxkZXIoUGF0aFRyYXZlcnNhbFN0YXRlJiB0cmF2ZXJzYWxTdGF0ZSwgZmxvYXQgbGVu
Z3RoKQoreworICAgIHN0YXRpYyBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKiBzX2J1aWxk
ZXIgPSAwOworICAgIGlmICghc19idWlsZGVyKQorICAgICAgICBzX2J1aWxkZXIgPSBuZXcgU1ZH
UGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjsKKworICAgIHNfYnVpbGRlci0+c2V0Q3VycmVudFRy
YXZlcnNhbFN0YXRlKCZ0cmF2ZXJzYWxTdGF0ZSk7CisgICAgc19idWlsZGVyLT5zZXREZXNpcmVk
TGVuZ3RoKGxlbmd0aCk7CisgICAgcmV0dXJuIHNfYnVpbGRlcjsKK30KKworc3RhdGljIFNWR1Bh
dGhQYXJzZXIqIGdsb2JhbFNWR1BhdGhQYXJzZXIoU1ZHUGF0aFNvdXJjZSogc291cmNlLCBTVkdQ
YXRoQ29uc3VtZXIqIGNvbnN1bWVyKQoreworICAgIHN0YXRpYyBTVkdQYXRoUGFyc2VyKiBzX3Bh
cnNlciA9IDA7CisgICAgaWYgKCFzX3BhcnNlcikKKyAgICAgICAgc19wYXJzZXIgPSBuZXcgU1ZH
UGF0aFBhcnNlcjsKKworICAgIHNfcGFyc2VyLT5zZXRDdXJyZW50U291cmNlKHNvdXJjZSk7Cisg
ICAgc19wYXJzZXItPnNldEN1cnJlbnRDb25zdW1lcihjb25zdW1lcik7CisgICAgcmV0dXJuIHNf
cGFyc2VyOworfQorCitzdGF0aWMgU1ZHUGF0aEJsZW5kZXIqIGdsb2JhbFNWR1BhdGhCbGVuZGVy
KCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0aEJsZW5kZXIqIHNfYmxlbmRlciA9IDA7CisgICAgaWYg
KCFzX2JsZW5kZXIpCisgICAgICAgIHNfYmxlbmRlciA9IG5ldyBTVkdQYXRoQmxlbmRlcjsKKwor
ICAgIHJldHVybiBzX2JsZW5kZXI7Cit9CisKK2Jvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIGQsIFBhdGgmIHJlc3VsdCkKK3sKKyAgICBpZiAoZC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFNWR1BhdGhCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFs
U1ZHUGF0aEJ1aWxkZXIocmVzdWx0KTsKKworICAgIE93blB0cjxTVkdQYXRoU3RyaW5nU291cmNl
PiBzb3VyY2UgPSBTVkdQYXRoU3RyaW5nU291cmNlOjpjcmVhdGUoZCk7CisgICAgU1ZHUGF0aFBh
cnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxkZXIp
OworICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6
ZWRQYXJzaW5nKTsKKyAgICBwYXJzZXItPmNsZWFudXAoKTsKKyAgICByZXR1cm4gb2s7Cit9CisK
K2Jvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQ
YXRoU2VnTGlzdCYgbGlzdCwgU1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdN
b2RlIHBhcnNpbmdNb2RlKQoreworICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJlc3VsdC0+Y2xl
YXIoKTsKKyAgICBpZiAobGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRl
U3RyZWFtQnVpbGRlcihyZXN1bHQpOworCisgICAgT3duUHRyPFNWR1BhdGhTZWdMaXN0U291cmNl
PiBzb3VyY2UgPSBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6Y3JlYXRlKGxpc3QpOworICAgIFNWR1Bh
dGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWls
ZGVyKTsKKyAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJz
aW5nTW9kZSk7CisgICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgcmV0dXJuIG9rOworfQorCiti
b29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJlYW0sIFBh
dGgmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoc3RyZWFtKTsKKyAgICBpZiAoc3RyZWFtLT5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNWR1BhdGhCdWlsZGVyKiBidWls
ZGVyID0gZ2xvYmFsU1ZHUGF0aEJ1aWxkZXIocmVzdWx0KTsKKworICAgIE93blB0cjxTVkdQYXRo
Qnl0ZVN0cmVhbVNvdXJjZT4gc291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0
ZShzdHJlYW0pOworICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJz
ZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKKyAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBh
dGhEYXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFyc2luZyk7CisgICAgcGFyc2VyLT5jbGVhbnVw
KCk7CisgICAgcmV0dXJuIG9rOworfQorCitib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0
ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBTVkdQYXRoRWxlbWVudCogZWxlbWVu
dCwgU1ZHUGF0aFNlZ0xpc3QmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQor
eworICAgIEFTU0VSVChzdHJlYW0pOworICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOyAKKworICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlciogYnVpbGRlciA9
IGdsb2JhbFNWR1BhdGhTZWdMaXN0QnVpbGRlcihlbGVtZW50LCBwYXJzaW5nTW9kZSA9PSBOb3Jt
YWxpemVkUGFyc2luZyA/IFBhdGhTZWdOb3JtYWxpemVkUm9sZSA6IFBhdGhTZWdVbmFsdGVyZWRS
b2xlLCByZXN1bHQpOworCisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPiBzb3Vy
Y2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVhbSk7CisgICAgU1ZHUGF0
aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1aWxk
ZXIpOworICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNp
bmdNb2RlKTsKKyAgICBwYXJzZXItPmNsZWFudXAoKTsKKyAgICByZXR1cm4gb2s7Cit9CisKK2Jv
b2wgYnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBT
dHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQoreworICAgIEFTU0VS
VChzdHJlYW0pOworICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOyAKKworICAgIFNWR1BhdGhTdHJpbmdCdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0
aFN0cmluZ0J1aWxkZXIoKTsKKworICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4g
c291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZShzdHJlYW0pOworICAgIFNW
R1BhdGhQYXJzZXIqIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBi
dWlsZGVyKTsKKyAgICBib29sIG9rID0gcGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShw
YXJzaW5nTW9kZSk7CisgICAgcmVzdWx0ID0gYnVpbGRlci0+cmVzdWx0KCk7CisgICAgcGFyc2Vy
LT5jbGVhbnVwKCk7CisgICAgcmV0dXJuIG9rOworfQorCitib29sIGJ1aWxkU3RyaW5nRnJvbVNW
R1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBsaXN0LCBTdHJpbmcmIHJlc3VsdCwg
UGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQoreworICAgIHJlc3VsdCA9IFN0cmluZygpOwor
ICAgIGlmIChsaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU1ZH
UGF0aFN0cmluZ0J1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU3RyaW5nQnVpbGRlcigp
OworCisgICAgT3duUHRyPFNWR1BhdGhTZWdMaXN0U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU2Vn
TGlzdFNvdXJjZTo6Y3JlYXRlKGxpc3QpOworICAgIFNWR1BhdGhQYXJzZXIqIHBhcnNlciA9IGds
b2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLmdldCgpLCBidWlsZGVyKTsKKyAgICBib29sIG9rID0g
cGFyc2VyLT5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShwYXJzaW5nTW9kZSk7CisgICAgcmVzdWx0
ID0gYnVpbGRlci0+cmVzdWx0KCk7CisgICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgcmV0dXJu
IG9rOworfQorCitib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgZCwgU1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNp
bmdNb2RlKQoreworICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJlc3VsdC0+Y2xlYXIoKTsKKyAg
ICBpZiAoZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNWR1BhdGhC
eXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
cihyZXN1bHQpOworCisgICAgT3duUHRyPFNWR1BhdGhTdHJpbmdTb3VyY2U+IHNvdXJjZSA9IFNW
R1BhdGhTdHJpbmdTb3VyY2U6OmNyZWF0ZShkKTsKKyAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIg
PSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7CisgICAgYm9vbCBv
ayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOworICAgIHBh
cnNlci0+Y2xlYW51cCgpOworICAgIHJldHVybiBvazsKK30KKworYm9vbCBidWlsZEFuaW1hdGVk
U1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIGZyb21TdHJlYW0sIFNWR1BhdGhC
eXRlU3RyZWFtKiB0b1N0cmVhbSwgU1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgZmxvYXQgcHJv
Z3Jlc3MpCit7CisgICAgQVNTRVJUKGZyb21TdHJlYW0pOworICAgIEFTU0VSVCh0b1N0cmVhbSk7
CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgQVNTRVJUKHRvU3RyZWFtICE9IHJlc3VsdCk7CisK
KyAgICByZXN1bHQtPmNsZWFyKCk7CisgICAgaWYgKHRvU3RyZWFtLT5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRl
ciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihyZXN1bHQpOworCisgICAgT3duUHRy
PFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPiBmcm9tU291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U6OmNyZWF0ZShmcm9tU3RyZWFtKTsKKyAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U+IHRvU291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSh0b1N0cmVh
bSk7CisgICAgU1ZHUGF0aEJsZW5kZXIqIGJsZW5kZXIgPSBnbG9iYWxTVkdQYXRoQmxlbmRlcigp
OworICAgIGJvb2wgb2sgPSBibGVuZGVyLT5ibGVuZEFuaW1hdGVkUGF0aChwcm9ncmVzcywgZnJv
bVNvdXJjZS5nZXQoKSwgdG9Tb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOworICAgIGJsZW5kZXItPmNs
ZWFudXAoKTsKKyAgICByZXR1cm4gb2s7Cit9CisKK2Jvb2wgYWRkVG9TVkdQYXRoQnl0ZVN0cmVh
bShTVkdQYXRoQnl0ZVN0cmVhbSogZnJvbVN0cmVhbSwgU1ZHUGF0aEJ5dGVTdHJlYW0qIGJ5U3Ry
ZWFtLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKK3sKKyAgICBBU1NFUlQoZnJvbVN0cmVhbSk7Cisg
ICAgQVNTRVJUKGJ5U3RyZWFtKTsKKyAgICBpZiAoZnJvbVN0cmVhbS0+aXNFbXB0eSgpIHx8IGJ5
U3RyZWFtLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNWR1BhdGhC
eXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
cihmcm9tU3RyZWFtKTsKKworICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gZnJvbVN0cmVh
bUNvcHkgPSBmcm9tU3RyZWFtLT5jb3B5KCk7CisgICAgZnJvbVN0cmVhbS0+Y2xlYXIoKTsKKwor
ICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gZnJvbVNvdXJjZSA9IFNWR1BhdGhC
eXRlU3RyZWFtU291cmNlOjpjcmVhdGUoZnJvbVN0cmVhbUNvcHkuZ2V0KCkpOworICAgIE93blB0
cjxTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZT4gYnlTb3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZTo6Y3JlYXRlKGJ5U3RyZWFtKTsKKyAgICBTVkdQYXRoQmxlbmRlciogYmxlbmRlciA9IGds
b2JhbFNWR1BhdGhCbGVuZGVyKCk7CisgICAgYm9vbCBvayA9IGJsZW5kZXItPmFkZEFuaW1hdGVk
UGF0aChmcm9tU291cmNlLmdldCgpLCBieVNvdXJjZS5nZXQoKSwgYnVpbGRlciwgcmVwZWF0Q291
bnQpOworICAgIGJsZW5kZXItPmNsZWFudXAoKTsKKyAgICByZXR1cm4gb2s7Cit9CisKK2Jvb2wg
Z2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3Ry
ZWFtKiBzdHJlYW0sIGZsb2F0IGxlbmd0aCwgdW5zaWduZWQmIHBhdGhTZWcpCit7CisgICAgQVNT
RVJUKHN0cmVhbSk7CisgICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBQYXRoVHJhdmVyc2FsU3RhdGUgdHJhdmVyc2FsU3RhdGUoUGF0aFRyYXZl
cnNhbFN0YXRlOjpUcmF2ZXJzYWxTZWdtZW50QXRMZW5ndGgpOworICAgIFNWR1BhdGhUcmF2ZXJz
YWxTdGF0ZUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyKHRyYXZlcnNhbFN0YXRlLCBsZW5ndGgpOworCisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlPiBzb3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVh
bSk7CisgICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3Vy
Y2UuZ2V0KCksIGJ1aWxkZXIpOworICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFG
cm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKKyAgICBwYXRoU2VnID0gYnVpbGRlci0+cGF0
aFNlZ21lbnRJbmRleCgpOworICAgIHBhcnNlci0+Y2xlYW51cCgpOworICAgIHJldHVybiBvazsK
K30KKworYm9vbCBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVT
dHJlYW0qIHN0cmVhbSwgZmxvYXQmIHRvdGFsTGVuZ3RoKQoreworICAgIEFTU0VSVChzdHJlYW0p
OworICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3Rh
dGU6OlRyYXZlcnNhbFRvdGFsTGVuZ3RoKTsKKyAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcih0cmF2ZXJz
YWxTdGF0ZSwgMCk7CisgICAgCisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPiBz
b3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVhbSk7CisgICAgU1ZH
UGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UuZ2V0KCksIGJ1
aWxkZXIpOworICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9tU291cmNlKE5v
cm1hbGl6ZWRQYXJzaW5nKTsKKyAgICB0b3RhbExlbmd0aCA9IGJ1aWxkZXItPnRvdGFsTGVuZ3Ro
KCk7CisgICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgcmV0dXJuIG9rOworfQorCitib29sIGdl
dFBvaW50QXRMZW5ndGhPZlNWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBzdHJl
YW0sIGZsb2F0IGxlbmd0aCwgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgQVNTRVJUKHN0cmVh
bSk7CisgICAgaWYgKHN0cmVhbS0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNhbFN0YXRlKFBhdGhUcmF2ZXJzYWxT
dGF0ZTo6VHJhdmVyc2FsUG9pbnRBdExlbmd0aCk7CisgICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJh
dmVyc2FsU3RhdGUsIGxlbmd0aCk7CisgICAgCisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHN0cmVhbSk7
CisgICAgU1ZHUGF0aFBhcnNlciogcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2Uu
Z2V0KCksIGJ1aWxkZXIpOworICAgIGJvb2wgb2sgPSBwYXJzZXItPnBhcnNlUGF0aERhdGFGcm9t
U291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKKyAgICBwb2ludCA9IGJ1aWxkZXItPmN1cnJlbnRQ
b2ludCgpOworICAgIHBhcnNlci0+Y2xlYW51cCgpOworICAgIHJldHVybiBvazsKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYy
NGFhMDA5ZmExOGIzNDNhYTAwMWE2NDgxZjE3Y2FlNzBkZWQ0ODQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAsIDIw
MTIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHUGF0aFV0aWxpdGllc19oCisjZGVm
aW5lIFNWR1BhdGhVdGlsaXRpZXNfaAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQ
YXRoQnl0ZVN0cmVhbS5oIgorI2luY2x1ZGUgIlNWR1BhdGhDb25zdW1lci5oIgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBQYXRoOworY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW07Citj
bGFzcyBTVkdQYXRoRWxlbWVudDsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0OworCisvLyBTdHJpbmcv
U1ZHUGF0aEJ5dGVTdHJlYW0gLT4gUGF0aAorYm9vbCBidWlsZFBhdGhGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYsIFBhdGgmKTsKK2Jvb2wgYnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0oU1ZHUGF0aEJ5
dGVTdHJlYW0qLCBQYXRoJik7CisKKy8vIFNWR1BhdGhTZWdMaXN0L1N0cmluZyAtPiBTVkdQYXRo
Qnl0ZVN0cmVhbQorYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0
KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01v
ZGUpOworYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
LCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7CisKKy8vIFNWR1BhdGhCeXRl
U3RyZWFtL1NWR1BhdGhTZWdMaXN0IC0+IFN0cmluZworYm9vbCBidWlsZFN0cmluZ0Zyb21CeXRl
U3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgU3RyaW5nJiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jv
b2wgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmLCBT
dHJpbmcmLCBQYXRoUGFyc2luZ01vZGUpOworCisvLyBTVkdQYXRoQnl0ZVN0cmVhbSAtPiBTVkdQ
YXRoU2VnTGlzdAorYm9vbCBidWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0oU1ZHUGF0
aEJ5dGVTdHJlYW0qLCBTVkdQYXRoRWxlbWVudCosIFNWR1BhdGhTZWdMaXN0JiwgUGF0aFBhcnNp
bmdNb2RlKTsKKworYm9vbCBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5
dGVTdHJlYW0qLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFNWR1BhdGhCeXRlU3RyZWFtKiwgZmxvYXQp
OworYm9vbCBhZGRUb1NWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgU1ZHUGF0
aEJ5dGVTdHJlYW0qLCB1bnNpZ25lZCByZXBlYXRDb3VudCA9IDEpOworCitib29sIGdldFNWR1Bh
dGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIGZs
b2F0IGxlbmd0aCwgdW5zaWduZWQmIHBhdGhTZWcpOworYm9vbCBnZXRUb3RhbExlbmd0aE9mU1ZH
UGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCYgdG90YWxMZW5ndGgpOwor
Ym9vbCBnZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVh
bSosIGZsb2F0IGxlbmd0aCwgRmxvYXRQb2ludCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR1BhdGhVdGlsaXRpZXNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IGEwOGY0NjkwYTlk
NDcxNTQ2Nzg5NGUxM2UyOWRkOGUyM2JjZjlhNzQuLmRiOTEwZmU5MGVlNWNmNGQzNTQ3MjExY2Yx
MTc4OGUzYmQyZjU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
LmgKQEAgLTI0LDkgKzI0LDkgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNWR1Bh
dGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRl
ICJTVkdQYXRoU2VnTGlzdC5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAocGF0aEVsZW1lbnQt
PmlzQW5pbVZhbE9ic2VydmVkKCkpIHsKICAgICAgICAgICAgIFNWR1BhdGhTZWdMaXN0JiBhbmlt
YXRlZExpc3QgPSBjdXJyZW50QW5pbWF0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgYW5pbWF0ZWRM
aXN0LmNsZWFyKCk7Ci0gICAgICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5i
dWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0obV9hbmltYXRlZFBhdGhCeXRlU3RyZWFt
LCBwYXRoRWxlbWVudCwgYW5pbWF0ZWRMaXN0LCBVbmFsdGVyZWRQYXJzaW5nKTsKKyAgICAgICAg
ICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX2FuaW1hdGVkUGF0aEJ5dGVT
dHJlYW0sIHBhdGhFbGVtZW50LCBhbmltYXRlZExpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAg
ICAgICB9CiAKICAgICAgICAgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhT
ZWdMaXN0Pjo6YW5pbVZhbERpZENoYW5nZSgpOwo=
</data>
<flag name="commit-queue"
          id="144953"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>