<?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>90108</bug_id>
          
          <creation_ts>2012-06-27 16:20:50 -0700</creation_ts>
          <short_desc>[chromium] Use SkColor in compositor internals</short_desc>
          <delta_ts>2012-06-27 19:03:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658951</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-27 16:20:50 -0700</bug_when>
    <thetext>[chromium] Use SkColor in compositor internals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658952</commentid>
    <comment_count>1</comment_count>
      <attachid>149813</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-27 16:22:11 -0700</bug_when>
    <thetext>Created attachment 149813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658957</commentid>
    <comment_count>2</comment_count>
      <attachid>149813</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-27 16:33:28 -0700</bug_when>
    <thetext>Comment on attachment 149813
Patch

Hmm, this passes unit / layout tests, but appears to make some things in aura render badly (i.e. the bottom tray thingy is solid black instead of transparent sometimes).  Will investigate...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658967</commentid>
    <comment_count>3</comment_count>
      <attachid>149813</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-27 16:48:21 -0700</bug_when>
    <thetext>Comment on attachment 149813
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSolidColorDrawQuad.cpp:41
&gt; -    if (m_color.hasAlpha())
&gt; +    if (SkColorGetA(m_color))

This is the bug with ash - hasAlpha() and SkColorGetA(color) are not the same thing - an alpha value of 0 definitely does _not_ mean the quad is opaque.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658975</commentid>
    <comment_count>4</comment_count>
      <attachid>149822</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-27 16:53:26 -0700</bug_when>
    <thetext>Created attachment 149822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659052</commentid>
    <comment_count>5</comment_count>
      <attachid>149822</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-27 18:15:36 -0700</bug_when>
    <thetext>Comment on attachment 149822
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659086</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-27 19:03:35 -0700</bug_when>
    <thetext>Committed r121396: &lt;http://trac.webkit.org/changeset/121396&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149813</attachid>
            <date>2012-06-27 16:22:11 -0700</date>
            <delta_ts>2012-06-27 16:53:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90108-20120627162211.patch</filename>
            <type>text/plain</type>
            <size>37388</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM3MWExZjNmNmRhMThm
MGE4MTMyMDNjMTcwZmQ4NmUwOTU4MjFjMi4uOGEyMDc5OGVkMTBjNjRhOTUwOGVhNzA4MzY5ZGZl
NjY1MDUyODE3NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDEyLTA2LTI3ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBV
c2UgU2tDb2xvciBpbiBjb21wb3NpdG9yIGludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxMDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyB0aGUgdGl0bGUgc2F5cywgY3V0dGluZyBkZXBl
bmRlbmNpZXMuIElmIHdlIHN1cHBvcnQgY29sb3Igc3BhY2VzIGluIHRoZSBjb21wb3NpdG9yIHdl
IHdpbGwgcHJvYmFibHkgbmVlZCB0bworICAgICAgICB1c2UgYSBtb3JlIHNvcGhpc3RpY2F0ZWQg
dHlwZSwgYnV0IGZvciBvdXIgY3VycmVudCB1c2UgU2tDb2xvciBpcyBzdWZmaWNpZW50IGFuZCBt
YXRjaGVzIG91ciBBUEkgYmV0dGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEJh
Y2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXREZWJ1
Z0JvcmRlckNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdCb3JkZXJEcmF3UXVhZDo6Q0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQuaDoKKyAgICAgICAgKENDRGVidWdCb3JkZXJEcmF3UXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNvbG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6aGFzRGVidWdCb3JkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6ZGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmJhY2tncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRCYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZFF1YWRJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFz
czo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDQ1JlbmRlclBhc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NvbGlkQ29sb3JEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JE
cmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckRyYXdRdWFk
OjpDQ1NvbGlkQ29sb3JEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaDoKKyAgICAgICAgKENDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckRyYXdRdWFkOjpjb2xvcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6
CisKKzIwMTItMDYtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBbY2hyb21pdW1dIERlbGV0ZSB1bnVzZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVj
bGFyYXRpb25zIGZyb20gY29tcG9zaXRvciBjb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEwMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDgxN2QyYTkxOGEzY2ZhZTY5MzBiNWFjZTVjNjhhM2QwMjI5ZDg3YjcuLmI0YzI5YTEyMDEy
YzY4MmU3ZGQzNTBkMjViMDE3M2JmYmJkMzBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDYtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBTa0NvbG9yIGluIGNvbXBvc2l0
b3IgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6Cisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRl
c3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RD
b21tb246OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwog
MjAxMi0wNi0yNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gSW5kZXhlZERCOiBFeHBvc2UgV2ViSURCVHJhbnNhY3Rpb246OmNvbW1pdCgp
IG1ldGhvZCBpbiBwdWJsaWMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFhYmQ3YTgy
ZWJkNTg1NDBjYjVkOGVhMjljN2ViY2E0Y2M2ZTUyNzYuLjM4Yjg1NmU2MzMxNjBjM2M1ZDFkMTlk
YjdmMDc3YzRiM2JmNTNmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02Niw3ICs2Niw4
IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oKQogICAgICwgbV9oYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKGZhbHNlKQogICAgICwgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQo
ZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQotICAgICwgbV9iYWNrZ3JvdW5k
Q29sb3IoMCwgMCwgMCwgMCkKKyAgICAsIG1fYmFja2dyb3VuZENvbG9yKDApCisgICAgLCBtX2Rl
YnVnQm9yZGVyQ29sb3IoMCkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAgICwgbV9v
cGFjaXR5KDEuMCkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCkBAIC0yNzcsNyArMjc4LDcgQEAg
dm9pZCBMYXllckNocm9taXVtOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5jaG9yUG9pbnRaKQog
ICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dy
b3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit2b2lkIExheWVyQ2hyb21p
dW06OnNldEJhY2tncm91bmRDb2xvcihTa0NvbG9yIGJhY2tncm91bmRDb2xvcikKIHsKICAgICBp
ZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gYmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm47
CkBAIC01OTcsNyArNTk4LDcgQEAgUGFzc093blB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogICAgIHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1f
bGF5ZXJJZCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdCb3JkZXJDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCit2b2lkIExheWVyQ2hyb21pdW06OnNldERlYnVnQm9yZGVyQ29s
b3IoU2tDb2xvciBjb2xvcikKIHsKICAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDBkY2U4ZGMyMjkxM2Jj
ZWM3N2U1ODQ1NzA0NmNlZWZiYWUwMDMxMjQuLjBjMGNmYjBkZmExYWRhZTZiYmJkYzM5ODI1OGIy
Y2I1OWM1YjZjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM0LDEwICszNCwxMCBAQAogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgiCisjaW5jbHVkZSAiU2tDb2xvci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmgiCiAKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmNo
b3JQb2ludFooZmxvYXQpOwogICAgIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IHsgcmV0dXJu
IG1fYW5jaG9yUG9pbnRaOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYpOwotICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZENvbG9yOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoU2tDb2xvcik7Cisg
ICAgU2tDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRD
b2xvcjsgfQogCiAgICAgLy8gQSBsYXllcidzIGJvdW5kcyBhcmUgaW4gbG9naWNhbCwgbm9uLXBh
Z2Utc2NhbGVkIHBpeGVscyAoaG93ZXZlciwgdGhlCiAgICAgLy8gcm9vdCBsYXllcidzIGJvdW5k
cyBhcmUgaW4gcGh5c2ljYWwgcGl4ZWxzKS4KQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZv
aWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0RGVidWdC
b3JkZXJDb2xvcihTa0NvbG9yKTsKICAgICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQp
OwogICAgIHZvaWQgc2V0RGVidWdOYW1lKGNvbnN0IFN0cmluZyYpOwogCkBAIC0zNTksOCArMzU5
LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2Vk
OwogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9p
bnQ7Ci0gICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRl
ckNvbG9yOworICAgIFNrQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgU2tDb2xvciBtX2Rl
YnVnQm9yZGVyQ29sb3I7CiAgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOwogICAgIFN0cmlu
ZyBtX2RlYnVnTmFtZTsKICAgICBmbG9hdCBtX29wYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAppbmRleCAzYWY5NzZiNmMxOWEzNjViN2U5NTljMTZmNjEzOGIzOGNi
ZmIzNGIxLi4zMTBlZmZiYzc5MzExNjZmYTAxMGFhNmY1Y2Y1NDI3ZjIxNjM1ZjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJTa0JpdG1hcC5oIgorI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
IgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTQ1OSwxMCArNDYwLDEwIEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3Jk
ZXJEcmF3UXVhZCogcXVhCiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4KCZn
bE1hdHJpeFswXSwgcHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4KTsKICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKSwgMSwgZmFsc2UsICZnbE1hdHJpeFswXSkpOwogCi0gICAg
Y29uc3QgQ29sb3ImIGNvbG9yID0gcXVhZC0+Y29sb3IoKTsKLSAgICBmbG9hdCBhbHBoYSA9IGNv
bG9yLmFscGhhKCkgLyAyNTUuMDsKKyAgICBTa0NvbG9yIGNvbG9yID0gcXVhZC0+Y29sb3IoKTsK
KyAgICBmbG9hdCBhbHBoYSA9IFNrQ29sb3JHZXRBKGNvbG9yKSAvIDI1NS4wOwogCi0gICAgR0xD
KGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtNGYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5jb2xvckxvY2F0aW9uKCksIChjb2xvci5yZWQoKSAvIDI1NS4wKSAqIGFscGhhLCAoY29sb3Iu
Z3JlZW4oKSAvIDI1NS4wKSAqIGFscGhhLCAoY29sb3IuYmx1ZSgpIC8gMjU1LjApICogYWxwaGEs
IGFscGhhKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtNGYocHJvZ3Jh
bS0+ZnJhZ21lbnRTaGFkZXIoKS5jb2xvckxvY2F0aW9uKCksIChTa0NvbG9yR2V0Uihjb2xvcikg
LyAyNTUuMCkgKiBhbHBoYSwgKFNrQ29sb3JHZXRHKGNvbG9yKSAvIDI1NS4wKSAqIGFscGhhLCAo
U2tDb2xvckdldEIoY29sb3IpIC8gMjU1LjApICogYWxwaGEsIGFscGhhKSk7CiAKICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPmxpbmVXaWR0aChxdWFkLT53aWR0aCgpKSk7CiAKQEAgLTY4
MSwxMSArNjgyLDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U29saWRDb2xv
clF1YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHF1YWQpCiAgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKICAgICB0
aWxlVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC54KCkgKyB0aWxlUmVjdC53aWR0aCgpIC8g
Mi4wLCB0aWxlUmVjdC55KCkgKyB0aWxlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CiAKLSAgICBjb25z
dCBDb2xvciYgY29sb3IgPSBxdWFkLT5jb2xvcigpOworICAgIFNrQ29sb3IgY29sb3IgPSBxdWFk
LT5jb2xvcigpOwogICAgIGZsb2F0IG9wYWNpdHkgPSBxdWFkLT5vcGFjaXR5KCk7Ci0gICAgZmxv
YXQgYWxwaGEgPSAoY29sb3IuYWxwaGEoKSAvIDI1NS4wKSAqIG9wYWNpdHk7CisgICAgZmxvYXQg
YWxwaGEgPSAoU2tDb2xvckdldEEoY29sb3IpIC8gMjU1LjApICogb3BhY2l0eTsKIAotICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuY29sb3JMb2NhdGlvbigpLCAoY29sb3IucmVkKCkgLyAyNTUuMCkgKiBhbHBoYSwgKGNvbG9y
LmdyZWVuKCkgLyAyNTUuMCkgKiBhbHBoYSwgKGNvbG9yLmJsdWUoKSAvIDI1NS4wKSAqIGFscGhh
LCBhbHBoYSkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuY29sb3JMb2NhdGlvbigpLCAoU2tDb2xvckdldFIoY29sb3Ip
IC8gMjU1LjApICogYWxwaGEsIChTa0NvbG9yR2V0Ryhjb2xvcikgLyAyNTUuMCkgKiBhbHBoYSwg
KFNrQ29sb3JHZXRCKGNvbG9yKSAvIDI1NS4wKSAqIGFscGhhLCBhbHBoYSkpOwogCiAgICAgZHJh
d1RleHR1cmVkUXVhZCh0aWxlVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgdGlsZVJl
Y3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEuMCwgRmxvYXRRdWFkKCksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcAppbmRleCBiNGE3MWRjNWY4MWY0NzYy
N2E2MDY2ZWRkOGQ3Y2ExYjQ3OGY0OWQ3Li44ZGY0OGQ2YzBjN2E1YjBmNzQ0ZWU5ZDdiYzNiMTdj
MTQ5M2M2N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAK
QEAgLTI5LDE4ICsyOSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8
Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkPiBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBpbnQgd2lkdGgpCitQYXNzT3duUHRyPENDRGVidWdC
b3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNr
Q29sb3IgY29sb3IsIGludCB3aWR0aCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDRGVi
dWdCb3JkZXJEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvciwgd2lkdGgp
KTsKIH0KIAotQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgaW50IHdpZHRoKQorQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3
aWR0aCkKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpEZWJ1
Z0JvcmRlciwgcXVhZFJlY3QpCiAgICAgLCBtX2NvbG9yKGNvbG9yKQogICAgICwgbV93aWR0aCh3
aWR0aCkKIHsKICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKLSAgICBpZiAobV9jb2xvci5oYXNB
bHBoYSgpKQorICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSkKICAgICAgICAgbV9uZWVkc0Js
ZW5kaW5nID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQu
aAppbmRleCAwMjI2YWVkNzZmNWNhZTVmZjAzZWZkZTM5MDkwMjYzYjQzNTkyOWM4Li5lYTFjZjg0
NzYwNDFkMWIxNzJlNmMwMjZjN2Y3ODYyODFhY2U0NGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBDQ0RlYnVnQm9y
ZGVyRHJhd1F1YWRfaAogI2RlZmluZSBDQ0RlYnVnQm9yZGVyRHJhd1F1YWRfaAogCi0jaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM1LDE1ICszNSwxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQgOiBwdWJsaWMg
Q0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0RlYnVnQm9yZGVyRHJhd1F1
YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25z
dCBDb2xvciYsIGludCB3aWR0aCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgU2tDb2xvciwgaW50IHdpZHRoKTsKIAotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29sb3I7IH07CisgICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29sb3I7IH07CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQog
CiBwcml2YXRlOgotICAgIENDRGVidWdCb3JkZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDb2xvciYsIGludCB3aWR0aCk7CisgICAgQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYsIFNrQ29sb3IsIGludCB3aWR0aCk7CiAKLSAgICBDb2xvciBtX2NvbG9yOworICAgIFNrQ29s
b3IgbV9jb2xvcjsKICAgICBpbnQgbV93aWR0aDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAppbmRleCBhM2FiNGYzYjQ0MTkzNjA4MWM5YzA0MDQ1ZWE3ZjcwNGE5NTFkYzU2Li5jMzgwYmQ0
NWJmMzE1NWQ1NTdmZmRjN2U2NjlkNGIyYzkyYzhjNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwCkBAIC01NCw2ICs1NCw3IEBAIENDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbChpbnQgaWQpCiAg
ICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVh
ZChmYWxzZSkKICAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKKyAgICAsIG1f
YmFja2dyb3VuZENvbG9yKDApCiAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCiAgICAgLCBtX2xh
eWVyUHJvcGVydHlDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9sYXllclN1cmZhY2VQcm9wZXJ0eUNo
YW5nZWQoZmFsc2UpCkBAIC03NCw3ICs3NSw3IEBAIENDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbChp
bnQgaWQpCiAgICAgLCBtX2RyYXdEZXB0aCgwKQogICAgICwgbV9kcmF3T3BhY2l0eSgwKQogICAg
ICwgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKGZhbHNlKQotICAgICwgbV9kZWJ1Z0JvcmRlckNv
bG9yKDAsIDAsIDAsIDApCisgICAgLCBtX2RlYnVnQm9yZGVyQ29sb3IoMCkKICAgICAsIG1fZGVi
dWdCb3JkZXJXaWR0aCgwKQogICAgICwgbV9kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoZmFsc2Up
CiAgICAgLCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoZmFsc2UpCkBAIC00NDAs
NyArNDQxLDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hv
clBvaW50WikKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CiAK
LXZvaWQgQ0NMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgYmFja2dy
b3VuZENvbG9yKQordm9pZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKFNrQ29sb3Ig
YmFja2dyb3VuZENvbG9yKQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3Jv
dW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTU0MSw3ICs1NDIsNyBAQCBib29sIENDTGF5
ZXJJbXBsOjp0cmFuc2Zvcm1Jc0FuaW1hdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXJB
bmltYXRpb25Db250cm9sbGVyLT5pc0FuaW1hdGluZ1Byb3BlcnR5KENDQWN0aXZlQW5pbWF0aW9u
OjpUcmFuc2Zvcm0pOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlckNvbG9y
KENvbG9yIGRlYnVnQm9yZGVyQ29sb3IpCit2b2lkIENDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRl
ckNvbG9yKFNrQ29sb3IgZGVidWdCb3JkZXJDb2xvcikKIHsKICAgICBpZiAobV9kZWJ1Z0JvcmRl
ckNvbG9yID09IGRlYnVnQm9yZGVyQ29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTU2MSw3ICs1
NjIsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0IGRlYnVn
Qm9yZGVyV2lkdGgpCiAKIGJvb2wgQ0NMYXllckltcGw6Omhhc0RlYnVnQm9yZGVycygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRlYnVnQm9yZGVyQ29sb3IoKS5hbHBoYSgpICYmIGRlYnVnQm9yZGVy
V2lkdGgoKSA+IDA7CisgICAgcmV0dXJuIFNrQ29sb3JHZXRBKG1fZGVidWdCb3JkZXJDb2xvcikg
JiYgZGVidWdCb3JkZXJXaWR0aCgpID4gMDsKIH0KIAogdm9pZCBDQ0xheWVySW1wbDo6c2V0Q29u
dGVudEJvdW5kcyhjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKaW5kZXggYzczNWI5MTlkMzhiMjE5NmU2ZGM2YjZmZDUzOWIxZmRmOWFkN2QzMS4uMDBhMzUx
YjIyZGI4NDRmN2M3OTdhODI5YzRkMTZhYmZhNjZkYTgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CkBAIC0yNiwxMCArMjYsMTAgQEAKICNpZm5kZWYgQ0NMYXllckltcGxfaAogI2RlZmluZSBDQ0xh
eWVySW1wbF9oCiAKLSNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKKyNpbmNsdWRlICJTa0Nv
bG9yLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTEx
MSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmNob3JQb2ludFooZmxvYXQpOwog
ICAgIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnRaOyB9
CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIENvbG9y
IGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoU2tDb2xvcik7CisgICAgU2tDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQogCiAgICAgdm9p
ZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsdGVyczsgfQpAQCAtMTU0LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3VibGF5ZXJUcmFuc2Zvcm07IH0KIAogICAgIC8vIERlYnVnIGxheWVyIGJvcmRl
ciAtIHZpc3VhbCBlZmZlY3Qgb25seSwgZG8gbm90IGNoYW5nZSBnZW9tZXRyeS9jbGlwcGluZy9l
dGMuCi0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsKLSAgICBDb2xvciBkZWJ1
Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAg
dm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKFNrQ29sb3IpOworICAgIFNrQ29sb3IgZGVidWdCb3Jk
ZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xvcjsgfQogICAgIHZvaWQg
c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCk7CiAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQogICAgIGJvb2wgaGFzRGVidWdC
b3JkZXJzKCkgY29uc3Q7CkBAIC0zMTcsNyArMzE3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOwogICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVudEhhbmRs
ZXJzOwogICAgIFJlZ2lvbiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIENvbG9yIG1f
YmFja2dyb3VuZENvbG9yOworICAgIFNrQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICAv
LyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBzaG91bGQgZHJhdy4KICAgICBib29s
IG1fZG91YmxlU2lkZWQ7CkBAIC0zNzEsNyArMzcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZHJhd09wYWNpdHlJc0FuaW1hdGluZzsKIAogICAgIC8vIERlYnVnIGJvcmRlcnMuCi0gICAgQ29s
b3IgbV9kZWJ1Z0JvcmRlckNvbG9yOworICAgIFNrQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwog
ICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIAogICAgIC8vIERlYnVnIGxheWVyIG5hbWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBhY2Y2OTBlZTFhNTRiNmMwMTI1
YjZkOGEzYjIxZDIzYWViNzE0ZjE4Li5kZTY3NTM2ZjMwYWFkNTlkOGE2YzU5YmVkZjEyOTYyYzI0
MjM0NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50
KiBjbGllbnQsIGNvbnN0IENDTGF5ZXJUcmUKICAgICAsIG1fbWluUGFnZVNjYWxlRmFjdG9yKDEp
CiAgICAgLCBtX21heFBhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV90cmlnZ2VySWRsZVBhaW50
cyh0cnVlKQotICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQorICAgICwgbV9i
YWNrZ3JvdW5kQ29sb3IoU0tfQ29sb3JXSElURSkKICAgICAsIG1faGFzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKGZhbHNlKQogICAgICwgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzKDApCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDljMGIxOTZiMmIxNzRmNmExNDkxMTQ4
MjMzNGY4OTdlZDBjZTkyMzcuLmZkZmUzOTU4Y2MzODYwZjkwOTE5NDA0NzEyNmFjN2Y2NTBmNTUy
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yNSwxMSArMjUsMTEgQEAKICNp
Zm5kZWYgQ0NMYXllclRyZWVIb3N0X2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0X2gKIAotI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUmF0
ZUxpbWl0ZXIuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NBbmltYXRp
b25FdmVudHMuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ1Byb3h5LmgiCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBt
aW5QYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1heFBhZ2VTY2FsZUZhY3Rvcik7CiAKLSAgICB2b2lk
IHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29s
b3IgPSBjb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFNrQ29sb3IgY29sb3Ip
IHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogCiAgICAgdm9pZCBzZXRIYXNUcmFuc3Bh
cmVudEJhY2tncm91bmQoYm9vbCB0cmFuc3BhcmVudCkgeyBtX2hhc1RyYW5zcGFyZW50QmFja2dy
b3VuZCA9IHRyYW5zcGFyZW50OyB9CiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAg
IGZsb2F0IG1fcGFnZVNjYWxlRmFjdG9yOwogICAgIGZsb2F0IG1fbWluUGFnZVNjYWxlRmFjdG9y
LCBtX21heFBhZ2VTY2FsZUZhY3RvcjsKICAgICBib29sIG1fdHJpZ2dlcklkbGVQYWludHM7Ci0g
ICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgU2tDb2xvciBtX2JhY2tncm91bmRDb2xv
cjsKICAgICBib29sIG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwogCiAgICAgVGV4dHVyZUxp
c3QgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcAppbmRleCBiZTdlZGFkZThjYTNmMTU3Mjc5MDk2MDQyNmRlMDA5OTc1
MTNmNjBhLi4zOTFhODgxYzNmNWM0ZWY1ZGZjMDdmMWEyNjY0ZjJiMjZlYWM1MGY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTI5LDYgKzEyOSw3IEBAIEND
TGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYgc2V0dGluZ3MsIENDCiAgICAgLCBtX3NlbnRQYWdlU2NhbGVEZWx0YSgxKQogICAg
ICwgbV9taW5QYWdlU2NhbGUoMCkKICAgICAsIG1fbWF4UGFnZVNjYWxlKDApCisgICAgLCBtX2Jh
Y2tncm91bmRDb2xvcigwKQogICAgICwgbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQoZmFsc2Up
CiAgICAgLCBtX25lZWRzQW5pbWF0ZUxheWVycyhmYWxzZSkKICAgICAsIG1fcGluY2hHZXN0dXJl
QWN0aXZlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGM5
ZDQ4MzYyZGQwNjAzNTNjOTA1MTg2M2UyYzJhYjEwYjdjMGFkMDkuLjlkOGZiM2M0NTc1YWVjYWM3
YWFmOGNkMDBkOGZhOTZkN2YxYWIwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYgQ0NMYXllclRyZWVIb3N0SW1wbF9oCiAj
ZGVmaW5lIENDTGF5ZXJUcmVlSG9zdEltcGxfaAogCi0jaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNs
dWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NBbmltYXRpb25FdmVudHMuaCIKICNpbmNs
dWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJTb3J0ZXIuaCIK
QEAgLTE2Myw4ICsxNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKGNvbnN0IEludFNpemUmIHRyYWdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CiAKLSAgICBjb25zdCBDb2xvciYgYmFja2dy
b3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lk
IHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29s
b3IgPSBjb2xvcjsgfQorICAgIFNrQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihTa0Nv
bG9yIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KIAogICAgIGJvb2wgaGFz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUcmFuc3BhcmVudEJh
Y2tncm91bmQ7IH0KICAgICB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sIHRy
YW5zcGFyZW50KSB7IG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gdHJhbnNwYXJlbnQ7IH0K
QEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc2VudFBhZ2VTY2FsZURl
bHRhOwogICAgIGZsb2F0IG1fbWluUGFnZVNjYWxlLCBtX21heFBhZ2VTY2FsZTsKIAotICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFNrQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CiAg
ICAgYm9vbCBtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZDsKIAogICAgIC8vIElmIHRoaXMgaXMg
dHJ1ZSwgaXQgaXMgbmVjZXNzYXJ5IHRvIHRyYXZlcnNlIHRoZSBsYXllciB0cmVlIHRpY2tpbmcg
dGhlIGFuaW1hdG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDYzYjhmYjhiZmY4
N2NkYzJlMjYwYjhlYTdlMzQ2MDlhMzAwZDVhNTcuLmRhODk4MDI5NTIxNTIzOTEyNmIwZTk4YjEx
M2Q1YjllYjhiYzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogCiAjaW5jbHVkZSAiUmVnaW9uLmgi
CisjaW5jbHVkZSAiU2tDb2xvci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJh
d01ldHJpY3MuaCIKQEAgLTY1LDcgKzY2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFwcGVuZFF1
YWRJbnRlcm5hbChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCwgY29uc3QKIAog
ICAgIGlmIChrZWVwUXVhZCkgewogICAgICAgICBpZiAoY3JlYXRlRGVidWdCb3JkZXJRdWFkcyAm
JiAhZHJhd1F1YWQtPmlzRGVidWdRdWFkKCkgJiYgZHJhd1F1YWQtPnF1YWRWaXNpYmxlUmVjdCgp
ICE9IGRyYXdRdWFkLT5xdWFkUmVjdCgpKSB7Ci0gICAgICAgICAgICBDb2xvciBib3JkZXJDb2xv
ciA9IENvbG9yKGRlYnVnVGlsZUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckdy
ZWVuLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckJsdWUsIGRlYnVnVGlsZUJvcmRlckFscGhhKTsKKyAg
ICAgICAgICAgIFNrQ29sb3IgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVC
b3JkZXJBbHBoYSwgZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQsIGRlYnVnVGlsZUJvcmRlckNvbG9y
R3JlZW4sIGRlYnVnVGlsZUJvcmRlckNvbG9yQmx1ZSk7CiAgICAgICAgICAgICBxdWFkTGlzdC5h
cHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoZHJhd1F1YWQtPnNoYXJlZFF1YWRT
dGF0ZSgpLCBkcmF3UXVhZC0+cXVhZFZpc2libGVSZWN0KCksIGJvcmRlckNvbG9yLCBkZWJ1Z1Rp
bGVCb3JkZXJXaWR0aCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmlu
ZGV4IGE1NWZlYjg1YzQ1NGQ3NGU1N2NiYjM1Yjg4NDY4NWI0MDUwZTNkOTEuLjMyNjhlNmE1NjEy
ZDJjMWFkNWZmMjQ2NTMxYWMxODFkNjVmMmJlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAKLSNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKQEAg
LTgzLDkgKzgyLDkgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3Vy
ZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0MKICAgICBtX3NoYXJlZFF1YWRT
dGF0ZUxpc3QuYXBwZW5kKHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIH0KIAot
dm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBsKiBy
b290TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCit2b2lkIENDUmVuZGVyUGFzczo6
YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBz
Y3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1
c2lvblRyYWNrZXIpCiB7Ci0gICAgaWYgKCFyb290TGF5ZXIgfHwgIXNjcmVlbkJhY2tncm91bmRD
b2xvci5pc1ZhbGlkKCkpCisgICAgaWYgKCFyb290TGF5ZXIgfHwgIVNrQ29sb3JHZXRBKHNjcmVl
bkJhY2tncm91bmRDb2xvcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZ2lvbiBmaWxsUmVn
aW9uID0gb2NjbHVzaW9uVHJhY2tlci5jb21wdXRlVmlzaWJsZVJlZ2lvbkluU2NyZWVuKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDZjZTM1ZmU4YWY0NjE5YjQwMzk1MTY4OGYxZGZlZTU0
MzQ2MTI5NDIuLmRlZTU1YmY3ZjZjZmVmMTkyNGJjYWI1M2NkZWVlZTE5ZDY5ZTI4YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENDUmVuZGVyUGFz
c19oCiAjZGVmaW5lIENDUmVuZGVyUGFzc19oCiAKKyNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5j
bHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNiw3ICszNyw2IEBAIGNsYXNzIENDRHJh
d1F1YWQ7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDUmVuZGVyU3VyZmFjZTsKIGNsYXNz
IENDU2hhcmVkUXVhZFN0YXRlOwotY2xhc3MgQ29sb3I7CiAKIC8vIEEgbGlzdCBvZiBDQ0RyYXdR
dWFkIG9iamVjdHMsIHNvcnRlZCBpbnRlcm5hbGx5IGluIGZyb250LXRvLWJhY2sgb3JkZXIuCiBj
bGFzcyBDQ1F1YWRMaXN0IDogcHVibGljIFZlY3RvcjxPd25QdHI8Q0NEcmF3UXVhZD4gPiB7CkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihD
Q0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpOwogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllcklt
cGwqLCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVz
aW9uVHJhY2tlckltcGwqKTsKLSAgICB2b2lkIGFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5
ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzVG9GaWxs
U2NyZWVuKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIFNrQ29sb3Igc2NyZWVuQmFja2dyb3VuZENv
bG9yLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJik7CiAKICAgICBjb25zdCBDQ1F1YWRM
aXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KICAgICBDQ1JlbmRl
clN1cmZhY2UqIHRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2U7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDFjZGFkMjJlNDY4YzEyNGQy
OGIxZThkNGJjZmVkZmNmYWZhMTc1OWMuLjZhYzA5NDZhYTY4NjdhZTdiNzc1ZjBkMjljYmI4ZWRi
MGQ3MWQ2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMjgxLDcgKzI4
MSw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1
YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhCiAgICAgICAgIGludCByZWQgPSBmb3JSZXBs
aWNhID8gZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JSZWQgOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xv
clJlZDsKICAgICAgICAgaW50IGdyZWVuID0gZm9yUmVwbGljYSA/ICBkZWJ1Z1JlcGxpY2FCb3Jk
ZXJDb2xvckdyZWVuIDogZGVidWdTdXJmYWNlQm9yZGVyQ29sb3JHcmVlbjsKICAgICAgICAgaW50
IGJsdWUgPSBmb3JSZXBsaWNhID8gZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JCbHVlIDogZGVidWdT
dXJmYWNlQm9yZGVyQ29sb3JCbHVlOwotICAgICAgICBDb2xvciBjb2xvcihyZWQsIGdyZWVuLCBi
bHVlLCBkZWJ1Z1N1cmZhY2VCb3JkZXJBbHBoYSk7CisgICAgICAgIFNrQ29sb3IgY29sb3IgPSBT
a0NvbG9yU2V0QVJHQihkZWJ1Z1N1cmZhY2VCb3JkZXJBbHBoYSwgcmVkLCBncmVlbiwgYmx1ZSk7
CiAgICAgICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNl
Qm9yZGVyV2lkdGgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdR
dWFkLmNwcAppbmRleCA3ZjZmOTgxMTNkNmY4YjlhNzI3OGI5Njc4MGY2NGJiZjk4NDU2MTUzLi4w
MGVlMzU0OTU4MzA2MTY3NzBlNDljMTQ3YWFkYWZkN2VhMjhkOWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3
UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCkBAIC0yOSwxNiArMjksMTYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDU29saWRDb2xvckRyYXdRdWFkPiBDQ1NvbGlk
Q29sb3JEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCitQYXNz
T3duUHRyPENDU29saWRDb2xvckRyYXdRdWFkPiBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRl
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NT
b2xpZENvbG9yRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgY29sb3IpKTsKIH0K
IAotQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRyYXdRdWFkKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBDb2xvciYgY29sb3IpCitDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Q0NTb2xpZENvbG9yRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCiAgICAgLCBtX2NvbG9y
KGNvbG9yKQogewotICAgIGlmIChtX2NvbG9yLmhhc0FscGhhKCkpCisgICAgaWYgKFNrQ29sb3JH
ZXRBKG1fY29sb3IpKQogICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKICAgICBlbHNlCiAg
ICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmgKaW5kZXggZDAyMGRmNjg0OWE4YTAzY2JhOGYyMmIwODg1NzBjNWUxYjgzNmNl
NC4uODNlYTM0MDY2MTU3MDEwZjBkMTI5MmU4ZTE1NjMzY2UyYTE3M2ViMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
RHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEND
U29saWRDb2xvckRyYXdRdWFkX2gKICNkZWZpbmUgQ0NTb2xpZENvbG9yRHJhd1F1YWRfaAogCi0j
aW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NE
cmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM1LDE0ICszNSwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZCA6IHB1
YmxpYyBDQ0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1NvbGlkQ29sb3JE
cmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTb2xpZENvbG9yRHJh
d1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBj
b25zdCBDb2xvciYpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU29saWRDb2xvckRyYXdRdWFk
PiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xv
cik7CiAKLSAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9
OworICAgIFNrQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9OwogCiBwcml2
YXRlOgotICAgIENDU29saWRDb2xvckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IENvbG9yJik7CisgICAgQ0NTb2xpZENvbG9yRHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvcik7CiAKLSAg
ICBDb2xvciBtX2NvbG9yOworICAgIFNrQ29sb3IgbV9jb2xvcjsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggOTg0YzNiN2JlZThlMzE1MjIxY2EwM2NhZTNi
ODYwMjdjNjQ5MmQxYi4uMzczMTgwOGNiNWRhMjliNDMwOWJkOGVkNTRjM2U5MmU0N2FmMTY3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKIAorI2luY2x1ZGUgIlNrQ29sb3IuaCIK
ICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgpAQCAtMTUzLDEy
ICsxNTQsMTIgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICAgICAgICAgIGZvciAoaW50
IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgICAgICBEcmF3YWJsZVRp
bGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVj
dCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7Ci0gICAgICAgICAgICAgICAgQ29sb3IgYm9y
ZGVyQ29sb3I7CisgICAgICAgICAgICAgICAgU2tDb2xvciBib3JkZXJDb2xvcjsKIAogICAgICAg
ICAgICAgICAgIGlmIChtX3NraXBzRHJhdyB8fCAhdGlsZSB8fCAhdGlsZS0+dGV4dHVyZUlkKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yID0gQ29sb3IoZGVidWdUaWxlQm9yZGVy
TWlzc2luZ1RpbGVDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckdyZWVu
LCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yQmx1ZSwgZGVidWdUaWxlQm9yZGVyQWxw
aGEpOworICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRl
YnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yUmVkLCBk
ZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yR3JlZW4sIGRlYnVnVGlsZUJvcmRlck1pc3Np
bmdUaWxlQ29sb3JCbHVlKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIGJvcmRlckNvbG9yID0gQ29sb3IoZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQsIGRlYnVnVGls
ZUJvcmRlckNvbG9yR3JlZW4sIGRlYnVnVGlsZUJvcmRlckNvbG9yQmx1ZSwgZGVidWdUaWxlQm9y
ZGVyQWxwaGEpOworICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRB
UkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCwgZGVidWdU
aWxlQm9yZGVyQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlKTsKICAgICAgICAg
ICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYm9yZGVyQ29sb3IsIGRlYnVnVGlsZUJvcmRlcldpZHRo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDA5NzBjZTZj
MjQ5ZDA1MzJjODYzYzQzYTM0ZTJkYzgxODA5YzFkNWMuLjdlOTUzOTM3NjM5NjQzMjdiODVlN2Rj
YTNiMGU1NmVkMDhkNDBhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29udGVudEhvc3QoKQogCiB2b2lk
IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBjb2xvcikKIHsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yLnJnYigpKTsKIH0KIAogdm9pZCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAppbmRleCAwMWY5
NDNhNjQwZTZhZTljNTlmMWI0NmRjOGRkOGI4MWQ3MTI5YjdjLi4yNjJmY2Y3NmY0ZDU3MGQzNzNm
MzUwMjg2ZjM2ZGEzNzU3M2JjMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFRFU1QoQ0NMYXllcklt
cGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgSW50UG9p
bnQgYXJiaXRyYXJ5SW50UG9pbnQgPSBJbnRQb2ludCgzMzMsIDQ0NCk7CiAgICAgSW50UmVjdCBh
cmJpdHJhcnlJbnRSZWN0ID0gSW50UmVjdChhcmJpdHJhcnlJbnRQb2ludCwgYXJiaXRyYXJ5SW50
U2l6ZSk7CiAgICAgRmxvYXRSZWN0IGFyYml0cmFyeUZsb2F0UmVjdCA9IEZsb2F0UmVjdChhcmJp
dHJhcnlGbG9hdFBvaW50LCBGbG9hdFNpemUoMS4yMzRmLCA1LjY3OGYpKTsKLSAgICBDb2xvciBh
cmJpdHJhcnlDb2xvciA9IENvbG9yKDEwLCAyMCwgMzApOworICAgIFNrQ29sb3IgYXJiaXRyYXJ5
Q29sb3IgPSBTa0NvbG9yU2V0UkdCKDEwLCAyMCwgMzApOwogICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGFyYml0cmFyeVRyYW5zZm9ybTsKICAgICBhcmJpdHJhcnlUcmFuc2Zvcm0uc2NhbGUz
ZCgwLjEsIDAuMiwgMC4zKTsKICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIGFyYml0cmFyeUZpbHRl
cnM7CkBAIC0xMjQsNyArMTI0LDcgQEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVy
Q2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9M
QVlFUl9DSEFOR0VEKHJvb3QtPnNldERlYnVnQm9yZGVyQ29sb3IoYXJiaXRyYXJ5Q29sb3IpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldERlYnVn
Qm9yZGVyV2lkdGgoYXJiaXRyYXJ5TnVtYmVyKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09O
TFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSkpOwotICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENvbG9y
KENvbG9yOjpncmF5KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdF
RChyb290LT5zZXRCYWNrZ3JvdW5kQ29sb3IoU0tfQ29sb3JHUkFZKSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhh
cmJpdHJhcnlGaWx0ZXJzKSk7CiAKICAgICAvLyBDaGFuZ2luZyB0aGVzZSBwcm9wZXJ0aWVzIG9u
bHkgYWZmZWN0cyBob3cgcmVuZGVyIHN1cmZhY2UgaXMgZHJhd24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5k
ZXggMzQ4NDZiN2MyMThlNmE0NThlY2E1N2Y1MTg0OWI1YWVjZmU5MjY0ZC4uYmNmODkwNWJmMmQw
Yjk3NWJlNzZjOTM2YWY2NTIxY2RlMmJkN2E5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTE0MDIs
NyArMTQwMiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZX
aGVuRHJhd2luZ09wYXF1ZUxheWVycykKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
dmlld3BvcnRDb3ZlcmVkKQogewogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRl
cmVyKGNyZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7Ci0gICAgbV9ob3N0SW1w
bC0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KTsKKyAgICBtX2hvc3RJbXBsLT5zZXRC
YWNrZ3JvdW5kQ29sb3IoU0tfQ29sb3JHUkFZKTsKIAogICAgIEludFNpemUgdmlld3BvcnRTaXpl
KDEwMDAsIDEwMDApOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNp
emUpOwpAQCAtMTYzMSw3ICsxNjMxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFw
cGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgY29uc3Qg
Q29sb3IgZ3JheSgxMDAsIDEwMCwgMTAwKTsKKyAgICAgICAgU2tDb2xvciBncmF5ID0gU2tDb2xv
clNldFJHQigxMDAsIDEwMCwgMTAwKTsKICAgICAgICAgSW50UmVjdCBxdWFkUmVjdCgwLCAwLCA1
LCA1KTsKICAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IG15UXVhZCA9IENDU29saWRDb2xvckRy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgZ3JheSk7CiAgICAgICAg
IHF1YWRMaXN0LmFwcGVuZChteVF1YWQucmVsZWFzZSgpKTsKQEAgLTIzODMsNyArMjM4Myw3IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KQogCiAgICAgLy8gUnVuIHRlc3QgY2FzZQogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBteUhvc3RJbXBsID0gY3JlYXRlTGF5ZXJUcmVlSG9zdChmYWxzZSwgY29udGV4dC5yZWxlYXNl
KCksIENDTGF5ZXJJbXBsOjpjcmVhdGUoMSkpOwotICAgIG15SG9zdEltcGwtPnNldEJhY2tncm91
bmRDb2xvcihDb2xvcjo6d2hpdGUpOworICAgIG15SG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xv
cihTS19Db2xvcldISVRFKTsKIAogICAgIC8vIFZlcmlmeSBvbmUgcXVhZCBpcyBkcmF3biB3aGVu
IHRyYW5zcGFyZW50IGJhY2tncm91bmQgc2V0IGlzIG5vdCBzZXQuCiAgICAgbXlIb3N0SW1wbC0+
c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKTsKQEAgLTI5ODgsNyArMjk4OCw3IEBA
IHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0
U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgICAgIHdoaWxlICgqY3VycmVudENoYXIgIT0g
J1xuJyAmJiAqY3VycmVudENoYXIgIT0gJ1wwJykgewogICAgICAgICAgICAgaWYgKCpjdXJyZW50
Q2hhciA9PSAncycpIHsKICAgICAgICAgICAgICAgICAvLyBTb2xpZCBjb2xvciBkcmF3IHF1YWQK
LSAgICAgICAgICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gcXVhZCA9IENDU29saWRDb2xvckRy
YXdRdWFkOjpjcmVhdGUodGVzdERhdGEuc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBJbnRSZWN0KDAs
IDAsIDEwLCAxMCksIENvbG9yOjp3aGl0ZSk7CisgICAgICAgICAgICAgICAgT3duUHRyPENDRHJh
d1F1YWQ+IHF1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHRlc3REYXRhLnNoYXJl
ZFF1YWRTdGF0ZS5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMCwgMTApLCBTS19Db2xvcldISVRFKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDQ1Rlc3RSZW5k
ZXJQYXNzKj4ocmVuZGVyUGFzcy5nZXQoKSktPmFwcGVuZFF1YWQocXVhZC5yZWxlYXNlKCkpOwog
ICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcAppbmRleCA2
YjcxMjQ5NzVjZTIyYWJhZWZjNTQ3ZDYzMmE1MzE2NmJkZjhlYjI3Li5iNDc2ODVkZjQ0YzAxN2I1
YThlNjBiMTlhZjMxZmJkNmJmZjNmYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJpZnlDb3JyZWN0QmFj
a2dyb3VuZENvbG9ySW5RdWFkKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29w
ZWRJbXBsVGhyZWFkOwogCi0gICAgY29uc3QgQ29sb3IgdGVzdENvbG9yID0gMHhGRkE1NUFGRjsK
KyAgICBTa0NvbG9yIHRlc3RDb2xvciA9IDB4RkZBNTVBRkY7CiAKICAgICBNb2NrQ0NRdWFkQ3Vs
bGVyIHF1YWRDdWxsZXI7CiAgICAgSW50U2l6ZSBsYXllclNpemUgPSBJbnRTaXplKDEwMCwgMTAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVz
dC5jcHAKaW5kZXggNGE5MmIxNTA5YzVhMmQ1Mzk1OTg1M2U3YjQxOGFlZGJmYzdmZjA2YS4uODZk
MDhhYmE1OGY0MWEyYTU2OWIwOTJhNzUyODZkZWNkNjFhNGE4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTUwOSw3ICs1
MDksNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVz
ZXNDb3JyZWN0QmVoYXZpb3IpCiAgICAgLy8gQWxsIHByb3BlcnRpZXMgbmVlZCB0byBiZSBzZXQg
dG8gbmV3IHZhbHVlcyBpbiBvcmRlciBmb3Igc2V0TmVlZHNDb21taXQgdG8gYmUgY2FsbGVkLgog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RM
YXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgxLjIzZiwgNC41NmYpKSk7CiAgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5z
ZXRBbmNob3JQb2ludFooMC43ZikpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNf
Q09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDAu
NGYsIDAuNGYsIDAuNGYsIDEuMGYpKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVE
U19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoU0tfQ29s
b3JMVEdSQVkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhB
VklPUigxLCB0ZXN0TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSkpOwogICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0TWFz
a0xheWVyKGR1bW15TGF5ZXIuZ2V0KCkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05F
RURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldE9wYWNpdHkoMC41ZikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149822</attachid>
            <date>2012-06-27 16:53:26 -0700</date>
            <delta_ts>2012-06-27 18:15:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90108-20120627165326.patch</filename>
            <type>text/plain</type>
            <size>37387</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM3MWExZjNmNmRhMThm
MGE4MTMyMDNjMTcwZmQ4NmUwOTU4MjFjMi4uOGEyMDc5OGVkMTBjNjRhOTUwOGVhNzA4MzY5ZGZl
NjY1MDUyODE3NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDEyLTA2LTI3ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBV
c2UgU2tDb2xvciBpbiBjb21wb3NpdG9yIGludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxMDgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyB0aGUgdGl0bGUgc2F5cywgY3V0dGluZyBkZXBl
bmRlbmNpZXMuIElmIHdlIHN1cHBvcnQgY29sb3Igc3BhY2VzIGluIHRoZSBjb21wb3NpdG9yIHdl
IHdpbGwgcHJvYmFibHkgbmVlZCB0bworICAgICAgICB1c2UgYSBtb3JlIHNvcGhpc3RpY2F0ZWQg
dHlwZSwgYnV0IGZvciBvdXIgY3VycmVudCB1c2UgU2tDb2xvciBpcyBzdWZmaWNpZW50IGFuZCBt
YXRjaGVzIG91ciBBUEkgYmV0dGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEJh
Y2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXREZWJ1
Z0JvcmRlckNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdCb3JkZXJEcmF3UXVhZDo6Q0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQuaDoKKyAgICAgICAgKENDRGVidWdCb3JkZXJEcmF3UXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNvbG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6aGFzRGVidWdCb3JkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6ZGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmJhY2tncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRCYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZFF1YWRJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFz
czo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDQ1JlbmRlclBhc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NvbGlkQ29sb3JEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JE
cmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckRyYXdRdWFk
OjpDQ1NvbGlkQ29sb3JEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaDoKKyAgICAgICAgKENDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckRyYXdRdWFkOjpjb2xvcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6
CisKKzIwMTItMDYtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBbY2hyb21pdW1dIERlbGV0ZSB1bnVzZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVj
bGFyYXRpb25zIGZyb20gY29tcG9zaXRvciBjb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEwMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDgxN2QyYTkxOGEzY2ZhZTY5MzBiNWFjZTVjNjhhM2QwMjI5ZDg3YjcuLmI0YzI5YTEyMDEy
YzY4MmU3ZGQzNTBkMjViMDE3M2JmYmJkMzBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDYtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBTa0NvbG9yIGluIGNvbXBvc2l0
b3IgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6Cisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRl
c3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RD
b21tb246OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwog
MjAxMi0wNi0yNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gSW5kZXhlZERCOiBFeHBvc2UgV2ViSURCVHJhbnNhY3Rpb246OmNvbW1pdCgp
IG1ldGhvZCBpbiBwdWJsaWMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFhYmQ3YTgy
ZWJkNTg1NDBjYjVkOGVhMjljN2ViY2E0Y2M2ZTUyNzYuLjM4Yjg1NmU2MzMxNjBjM2M1ZDFkMTlk
YjdmMDc3YzRiM2JmNTNmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02Niw3ICs2Niw4
IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oKQogICAgICwgbV9oYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKGZhbHNlKQogICAgICwgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQo
ZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQotICAgICwgbV9iYWNrZ3JvdW5k
Q29sb3IoMCwgMCwgMCwgMCkKKyAgICAsIG1fYmFja2dyb3VuZENvbG9yKDApCisgICAgLCBtX2Rl
YnVnQm9yZGVyQ29sb3IoMCkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAgICwgbV9v
cGFjaXR5KDEuMCkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCkBAIC0yNzcsNyArMjc4LDcgQEAg
dm9pZCBMYXllckNocm9taXVtOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5jaG9yUG9pbnRaKQog
ICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dy
b3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit2b2lkIExheWVyQ2hyb21p
dW06OnNldEJhY2tncm91bmRDb2xvcihTa0NvbG9yIGJhY2tncm91bmRDb2xvcikKIHsKICAgICBp
ZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gYmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm47
CkBAIC01OTcsNyArNTk4LDcgQEAgUGFzc093blB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogICAgIHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1f
bGF5ZXJJZCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdCb3JkZXJDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCit2b2lkIExheWVyQ2hyb21pdW06OnNldERlYnVnQm9yZGVyQ29s
b3IoU2tDb2xvciBjb2xvcikKIHsKICAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDBkY2U4ZGMyMjkxM2Jj
ZWM3N2U1ODQ1NzA0NmNlZWZiYWUwMDMxMjQuLjBjMGNmYjBkZmExYWRhZTZiYmJkYzM5ODI1OGIy
Y2I1OWM1YjZjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM0LDEwICszNCwxMCBAQAogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgiCisjaW5jbHVkZSAiU2tDb2xvci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmgiCiAKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmNo
b3JQb2ludFooZmxvYXQpOwogICAgIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IHsgcmV0dXJu
IG1fYW5jaG9yUG9pbnRaOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYpOwotICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZENvbG9yOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoU2tDb2xvcik7Cisg
ICAgU2tDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRD
b2xvcjsgfQogCiAgICAgLy8gQSBsYXllcidzIGJvdW5kcyBhcmUgaW4gbG9naWNhbCwgbm9uLXBh
Z2Utc2NhbGVkIHBpeGVscyAoaG93ZXZlciwgdGhlCiAgICAgLy8gcm9vdCBsYXllcidzIGJvdW5k
cyBhcmUgaW4gcGh5c2ljYWwgcGl4ZWxzKS4KQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZv
aWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0RGVidWdC
b3JkZXJDb2xvcihTa0NvbG9yKTsKICAgICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQp
OwogICAgIHZvaWQgc2V0RGVidWdOYW1lKGNvbnN0IFN0cmluZyYpOwogCkBAIC0zNTksOCArMzU5
LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2Vk
OwogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9p
bnQ7Ci0gICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRl
ckNvbG9yOworICAgIFNrQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgU2tDb2xvciBtX2Rl
YnVnQm9yZGVyQ29sb3I7CiAgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOwogICAgIFN0cmlu
ZyBtX2RlYnVnTmFtZTsKICAgICBmbG9hdCBtX29wYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAppbmRleCAzYWY5NzZiNmMxOWEzNjViN2U5NTljMTZmNjEzOGIzOGNi
ZmIzNGIxLi4zMTBlZmZiYzc5MzExNjZmYTAxMGFhNmY1Y2Y1NDI3ZjIxNjM1ZjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJTa0JpdG1hcC5oIgorI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
IgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTQ1OSwxMCArNDYwLDEwIEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3Jk
ZXJEcmF3UXVhZCogcXVhCiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4KCZn
bE1hdHJpeFswXSwgcHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4KTsKICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKSwgMSwgZmFsc2UsICZnbE1hdHJpeFswXSkpOwogCi0gICAg
Y29uc3QgQ29sb3ImIGNvbG9yID0gcXVhZC0+Y29sb3IoKTsKLSAgICBmbG9hdCBhbHBoYSA9IGNv
bG9yLmFscGhhKCkgLyAyNTUuMDsKKyAgICBTa0NvbG9yIGNvbG9yID0gcXVhZC0+Y29sb3IoKTsK
KyAgICBmbG9hdCBhbHBoYSA9IFNrQ29sb3JHZXRBKGNvbG9yKSAvIDI1NS4wOwogCi0gICAgR0xD
KGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtNGYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5jb2xvckxvY2F0aW9uKCksIChjb2xvci5yZWQoKSAvIDI1NS4wKSAqIGFscGhhLCAoY29sb3Iu
Z3JlZW4oKSAvIDI1NS4wKSAqIGFscGhhLCAoY29sb3IuYmx1ZSgpIC8gMjU1LjApICogYWxwaGEs
IGFscGhhKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtNGYocHJvZ3Jh
bS0+ZnJhZ21lbnRTaGFkZXIoKS5jb2xvckxvY2F0aW9uKCksIChTa0NvbG9yR2V0Uihjb2xvcikg
LyAyNTUuMCkgKiBhbHBoYSwgKFNrQ29sb3JHZXRHKGNvbG9yKSAvIDI1NS4wKSAqIGFscGhhLCAo
U2tDb2xvckdldEIoY29sb3IpIC8gMjU1LjApICogYWxwaGEsIGFscGhhKSk7CiAKICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPmxpbmVXaWR0aChxdWFkLT53aWR0aCgpKSk7CiAKQEAgLTY4
MSwxMSArNjgyLDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U29saWRDb2xv
clF1YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHF1YWQpCiAgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKICAgICB0
aWxlVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC54KCkgKyB0aWxlUmVjdC53aWR0aCgpIC8g
Mi4wLCB0aWxlUmVjdC55KCkgKyB0aWxlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CiAKLSAgICBjb25z
dCBDb2xvciYgY29sb3IgPSBxdWFkLT5jb2xvcigpOworICAgIFNrQ29sb3IgY29sb3IgPSBxdWFk
LT5jb2xvcigpOwogICAgIGZsb2F0IG9wYWNpdHkgPSBxdWFkLT5vcGFjaXR5KCk7Ci0gICAgZmxv
YXQgYWxwaGEgPSAoY29sb3IuYWxwaGEoKSAvIDI1NS4wKSAqIG9wYWNpdHk7CisgICAgZmxvYXQg
YWxwaGEgPSAoU2tDb2xvckdldEEoY29sb3IpIC8gMjU1LjApICogb3BhY2l0eTsKIAotICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuY29sb3JMb2NhdGlvbigpLCAoY29sb3IucmVkKCkgLyAyNTUuMCkgKiBhbHBoYSwgKGNvbG9y
LmdyZWVuKCkgLyAyNTUuMCkgKiBhbHBoYSwgKGNvbG9yLmJsdWUoKSAvIDI1NS4wKSAqIGFscGhh
LCBhbHBoYSkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuY29sb3JMb2NhdGlvbigpLCAoU2tDb2xvckdldFIoY29sb3Ip
IC8gMjU1LjApICogYWxwaGEsIChTa0NvbG9yR2V0Ryhjb2xvcikgLyAyNTUuMCkgKiBhbHBoYSwg
KFNrQ29sb3JHZXRCKGNvbG9yKSAvIDI1NS4wKSAqIGFscGhhLCBhbHBoYSkpOwogCiAgICAgZHJh
d1RleHR1cmVkUXVhZCh0aWxlVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgdGlsZVJl
Y3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEuMCwgRmxvYXRRdWFkKCksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcAppbmRleCBiNGE3MWRjNWY4MWY0NzYy
N2E2MDY2ZWRkOGQ3Y2ExYjQ3OGY0OWQ3Li4xNTI3YzQ3YzU1NzZmOTZhYzdmMzk5OWNjMDdhMWQ1
MGQxM2ZiNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAK
QEAgLTI5LDE4ICsyOSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8
Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkPiBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBpbnQgd2lkdGgpCitQYXNzT3duUHRyPENDRGVidWdC
b3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNr
Q29sb3IgY29sb3IsIGludCB3aWR0aCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDRGVi
dWdCb3JkZXJEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvciwgd2lkdGgp
KTsKIH0KIAotQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgaW50IHdpZHRoKQorQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3
aWR0aCkKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpEZWJ1
Z0JvcmRlciwgcXVhZFJlY3QpCiAgICAgLCBtX2NvbG9yKGNvbG9yKQogICAgICwgbV93aWR0aCh3
aWR0aCkKIHsKICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKLSAgICBpZiAobV9jb2xvci5oYXNB
bHBoYSgpKQorICAgIGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkKICAgICAgICAgbV9u
ZWVkc0JsZW5kaW5nID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJh
d1F1YWQuaAppbmRleCAwMjI2YWVkNzZmNWNhZTVmZjAzZWZkZTM5MDkwMjYzYjQzNTkyOWM4Li5l
YTFjZjg0NzYwNDFkMWIxNzJlNmMwMjZjN2Y3ODYyODFhY2U0NGY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJh
d1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWRfaAogI2RlZmluZSBDQ0RlYnVnQm9yZGVyRHJhd1F1YWRfaAogCi0j
aW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NE
cmF3UXVhZC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTM1LDE1ICszNSwx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQgOiBw
dWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0RlYnVnQm9yZGVy
RHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBDb2xvciYsIGludCB3aWR0aCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NEZWJ1
Z0JvcmRlckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgU2tDb2xvciwgaW50IHdpZHRoKTsKIAotICAgIGNvbnN0IENvbG9yJiBjb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07CisgICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3I7IH07CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0
aDsgfQogCiBwcml2YXRlOgotICAgIENDRGVidWdCb3JkZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDb2xvciYsIGludCB3aWR0aCk7Cisg
ICAgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYsIFNrQ29sb3IsIGludCB3aWR0aCk7CiAKLSAgICBDb2xvciBtX2NvbG9yOworICAg
IFNrQ29sb3IgbV9jb2xvcjsKICAgICBpbnQgbV93aWR0aDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcAppbmRleCBhM2FiNGYzYjQ0MTkzNjA4MWM5YzA0MDQ1ZWE3ZjcwNGE5NTFkYzU2Li5j
MzgwYmQ0NWJmMzE1NWQ1NTdmZmRjN2U2NjlkNGIyYzkyYzhjNjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCkBAIC01NCw2ICs1NCw3IEBAIENDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbChpbnQg
aWQpCiAgICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFNjcm9sbE9uTWFp
blRocmVhZChmYWxzZSkKICAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKKyAg
ICAsIG1fYmFja2dyb3VuZENvbG9yKDApCiAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCiAgICAg
LCBtX2xheWVyUHJvcGVydHlDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9sYXllclN1cmZhY2VQcm9w
ZXJ0eUNoYW5nZWQoZmFsc2UpCkBAIC03NCw3ICs3NSw3IEBAIENDTGF5ZXJJbXBsOjpDQ0xheWVy
SW1wbChpbnQgaWQpCiAgICAgLCBtX2RyYXdEZXB0aCgwKQogICAgICwgbV9kcmF3T3BhY2l0eSgw
KQogICAgICwgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKGZhbHNlKQotICAgICwgbV9kZWJ1Z0Jv
cmRlckNvbG9yKDAsIDAsIDAsIDApCisgICAgLCBtX2RlYnVnQm9yZGVyQ29sb3IoMCkKICAgICAs
IG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAgICwgbV9kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmco
ZmFsc2UpCiAgICAgLCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoZmFsc2UpCkBA
IC00NDAsNyArNDQxLDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0
IGFuY2hvclBvaW50WikKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7
CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yKQordm9pZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKFNr
Q29sb3IgYmFja2dyb3VuZENvbG9yKQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBi
YWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTU0MSw3ICs1NDIsNyBAQCBib29s
IENDTGF5ZXJJbXBsOjp0cmFuc2Zvcm1Jc0FuaW1hdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
bGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5pc0FuaW1hdGluZ1Byb3BlcnR5KENDQWN0aXZlQW5p
bWF0aW9uOjpUcmFuc2Zvcm0pOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRl
ckNvbG9yKENvbG9yIGRlYnVnQm9yZGVyQ29sb3IpCit2b2lkIENDTGF5ZXJJbXBsOjpzZXREZWJ1
Z0JvcmRlckNvbG9yKFNrQ29sb3IgZGVidWdCb3JkZXJDb2xvcikKIHsKICAgICBpZiAobV9kZWJ1
Z0JvcmRlckNvbG9yID09IGRlYnVnQm9yZGVyQ29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTU2
MSw3ICs1NjIsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0
IGRlYnVnQm9yZGVyV2lkdGgpCiAKIGJvb2wgQ0NMYXllckltcGw6Omhhc0RlYnVnQm9yZGVycygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlYnVnQm9yZGVyQ29sb3IoKS5hbHBoYSgpICYmIGRlYnVn
Qm9yZGVyV2lkdGgoKSA+IDA7CisgICAgcmV0dXJuIFNrQ29sb3JHZXRBKG1fZGVidWdCb3JkZXJD
b2xvcikgJiYgZGVidWdCb3JkZXJXaWR0aCgpID4gMDsKIH0KIAogdm9pZCBDQ0xheWVySW1wbDo6
c2V0Q29udGVudEJvdW5kcyhjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmgKaW5kZXggYzczNWI5MTlkMzhiMjE5NmU2ZGM2YjZmZDUzOWIxZmRmOWFkN2QzMS4u
MDBhMzUxYjIyZGI4NDRmN2M3OTdhODI5YzRkMTZhYmZhNjZkYTgwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpZm5kZWYgQ0NMYXllckltcGxfaAogI2RlZmlu
ZSBDQ0xheWVySW1wbF9oCiAKLSNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKKyNpbmNsdWRl
ICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgImNjL0NDSW5w
dXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIK
QEAgLTExMSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmNob3JQb2ludFooZmxv
YXQpOwogICAgIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9p
bnRaOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAg
IENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9y
OyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoU2tDb2xvcik7CisgICAgU2tDb2xvciBi
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQogCiAg
ICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYpOwog
ICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsdGVyczsgfQpAQCAtMTU0LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJUcmFuc2Zvcm07IH0KIAogICAgIC8vIERlYnVnIGxheWVy
IGJvcmRlciAtIHZpc3VhbCBlZmZlY3Qgb25seSwgZG8gbm90IGNoYW5nZSBnZW9tZXRyeS9jbGlw
cGluZy9ldGMuCi0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsKLSAgICBDb2xv
ciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9
CisgICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKFNrQ29sb3IpOworICAgIFNrQ29sb3IgZGVi
dWdCb3JkZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xvcjsgfQogICAg
IHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCk7CiAgICAgZmxvYXQgZGVidWdCb3JkZXJX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQogICAgIGJvb2wgaGFz
RGVidWdCb3JkZXJzKCkgY29uc3Q7CkBAIC0zMTcsNyArMzE3LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkOwogICAgIGJvb2wgbV9oYXZlV2hlZWxFdmVu
dEhhbmRsZXJzOwogICAgIFJlZ2lvbiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFNrQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CiAK
ICAgICAvLyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBzaG91bGQgZHJhdy4KICAg
ICBib29sIG1fZG91YmxlU2lkZWQ7CkBAIC0zNzEsNyArMzcxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZzsKIAogICAgIC8vIERlYnVnIGJvcmRlcnMuCi0g
ICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOworICAgIFNrQ29sb3IgbV9kZWJ1Z0JvcmRlckNv
bG9yOwogICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIAogICAgIC8vIERlYnVnIGxheWVy
IG5hbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBhY2Y2OTBlZTFhNTRi
NmMwMTI1YjZkOGEzYjIxZDIzYWViNzE0ZjE4Li5kZTY3NTM2ZjMwYWFkNTlkOGE2YzU5YmVkZjEy
OTYyYzI0MjM0NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0
Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDTGF5ZXJUcmUKICAgICAsIG1fbWluUGFnZVNjYWxlRmFj
dG9yKDEpCiAgICAgLCBtX21heFBhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV90cmlnZ2VySWRs
ZVBhaW50cyh0cnVlKQotICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQorICAg
ICwgbV9iYWNrZ3JvdW5kQ29sb3IoU0tfQ29sb3JXSElURSkKICAgICAsIG1faGFzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKGZhbHNlKQogICAgICwgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3Rz
KDApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDljMGIxOTZiMmIxNzRmNmEx
NDkxMTQ4MjMzNGY4OTdlZDBjZTkyMzcuLmZkZmUzOTU4Y2MzODYwZjkwOTE5NDA0NzEyNmFjN2Y2
NTBmNTUyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yNSwxMSArMjUsMTEg
QEAKICNpZm5kZWYgQ0NMYXllclRyZWVIb3N0X2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0X2gK
IAotI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiUmF0ZUxpbWl0ZXIuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NB
bmltYXRpb25FdmVudHMuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKICNp
bmNsdWRlICJjYy9DQ1Byb3h5LmgiCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBm
bG9hdCBtaW5QYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1heFBhZ2VTY2FsZUZhY3Rvcik7CiAKLSAg
ICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3Jv
dW5kQ29sb3IgPSBjb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFNrQ29sb3Ig
Y29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogCiAgICAgdm9pZCBzZXRIYXNU
cmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB0cmFuc3BhcmVudCkgeyBtX2hhc1RyYW5zcGFyZW50
QmFja2dyb3VuZCA9IHRyYW5zcGFyZW50OyB9CiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwcml2YXRl
OgogICAgIGZsb2F0IG1fcGFnZVNjYWxlRmFjdG9yOwogICAgIGZsb2F0IG1fbWluUGFnZVNjYWxl
RmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3RvcjsKICAgICBib29sIG1fdHJpZ2dlcklkbGVQYWlu
dHM7Ci0gICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgU2tDb2xvciBtX2JhY2tncm91
bmRDb2xvcjsKICAgICBib29sIG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwogCiAgICAgVGV4
dHVyZUxpc3QgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBiZTdlZGFkZThjYTNmMTU3Mjc5MDk2MDQyNmRl
MDA5OTc1MTNmNjBhLi4zOTFhODgxYzNmNWM0ZWY1ZGZjMDdmMWEyNjY0ZjJiMjZlYWM1MGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTI5LDYgKzEyOSw3
IEBAIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDCiAgICAgLCBtX3NlbnRQYWdlU2NhbGVEZWx0YSgx
KQogICAgICwgbV9taW5QYWdlU2NhbGUoMCkKICAgICAsIG1fbWF4UGFnZVNjYWxlKDApCisgICAg
LCBtX2JhY2tncm91bmRDb2xvcigwKQogICAgICwgbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQo
ZmFsc2UpCiAgICAgLCBtX25lZWRzQW5pbWF0ZUxheWVycyhmYWxzZSkKICAgICAsIG1fcGluY2hH
ZXN0dXJlQWN0aXZlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmlu
ZGV4IGM5ZDQ4MzYyZGQwNjAzNTNjOTA1MTg2M2UyYzJhYjEwYjdjMGFkMDkuLjlkOGZiM2M0NTc1
YWVjYWM3YWFmOGNkMDBkOGZhOTZkN2YxYWIwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYgQ0NMYXllclRyZWVIb3N0SW1w
bF9oCiAjZGVmaW5lIENDTGF5ZXJUcmVlSG9zdEltcGxfaAogCi0jaW5jbHVkZSAiQ29sb3IuaCIK
KyNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NBbmltYXRpb25FdmVudHMuaCIK
ICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJTb3J0
ZXIuaCIKQEAgLTE2Myw4ICsxNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRyYWdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hv
ciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CiAKLSAgICBjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAg
ICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3Jv
dW5kQ29sb3IgPSBjb2xvcjsgfQorICAgIFNrQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihTa0NvbG9yIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KIAogICAgIGJv
b2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUcmFuc3Bh
cmVudEJhY2tncm91bmQ7IH0KICAgICB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChi
b29sIHRyYW5zcGFyZW50KSB7IG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gdHJhbnNwYXJl
bnQ7IH0KQEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc2VudFBhZ2VT
Y2FsZURlbHRhOwogICAgIGZsb2F0IG1fbWluUGFnZVNjYWxlLCBtX21heFBhZ2VTY2FsZTsKIAot
ICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFNrQ29sb3IgbV9iYWNrZ3JvdW5kQ29s
b3I7CiAgICAgYm9vbCBtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZDsKIAogICAgIC8vIElmIHRo
aXMgaXMgdHJ1ZSwgaXQgaXMgbmVjZXNzYXJ5IHRvIHRyYXZlcnNlIHRoZSBsYXllciB0cmVlIHRp
Y2tpbmcgdGhlIGFuaW1hdG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDYzYjhm
YjhiZmY4N2NkYzJlMjYwYjhlYTdlMzQ2MDlhMzAwZDVhNTcuLmRhODk4MDI5NTIxNTIzOTEyNmIw
ZTk4YjExM2Q1YjllYjhiYzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogCiAjaW5jbHVkZSAiUmVn
aW9uLmgiCisjaW5jbHVkZSAiU2tDb2xvci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJE
cmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NP
dmVyZHJhd01ldHJpY3MuaCIKQEAgLTY1LDcgKzY2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFw
cGVuZFF1YWRJbnRlcm5hbChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCwgY29u
c3QKIAogICAgIGlmIChrZWVwUXVhZCkgewogICAgICAgICBpZiAoY3JlYXRlRGVidWdCb3JkZXJR
dWFkcyAmJiAhZHJhd1F1YWQtPmlzRGVidWdRdWFkKCkgJiYgZHJhd1F1YWQtPnF1YWRWaXNpYmxl
UmVjdCgpICE9IGRyYXdRdWFkLT5xdWFkUmVjdCgpKSB7Ci0gICAgICAgICAgICBDb2xvciBib3Jk
ZXJDb2xvciA9IENvbG9yKGRlYnVnVGlsZUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1RpbGVCb3JkZXJD
b2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckJsdWUsIGRlYnVnVGlsZUJvcmRlckFscGhh
KTsKKyAgICAgICAgICAgIFNrQ29sb3IgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1
Z1RpbGVCb3JkZXJBbHBoYSwgZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQsIGRlYnVnVGlsZUJvcmRl
ckNvbG9yR3JlZW4sIGRlYnVnVGlsZUJvcmRlckNvbG9yQmx1ZSk7CiAgICAgICAgICAgICBxdWFk
TGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoZHJhd1F1YWQtPnNoYXJl
ZFF1YWRTdGF0ZSgpLCBkcmF3UXVhZC0+cXVhZFZpc2libGVSZWN0KCksIGJvcmRlckNvbG9yLCBk
ZWJ1Z1RpbGVCb3JkZXJXaWR0aCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
Y3BwCmluZGV4IGE1NWZlYjg1YzQ1NGQ3NGU1N2NiYjM1Yjg4NDY4NWI0MDUwZTNkOTEuLmIxZDUz
YzYzZDA4ZmIyYTg4NDNiNDIxYzQ5ODE4ODA5NDNjZTdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmNwcApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgi
CiAKLSNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUu
aCIKQEAgLTgzLDkgKzgyLDkgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVu
ZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgQ0MKICAgICBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsK
IH0KIAotdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJ
bXBsKiByb290TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0
IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCit2b2lkIENDUmVuZGVy
UGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgU2tD
b2xvciBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwm
IG9jY2x1c2lvblRyYWNrZXIpCiB7Ci0gICAgaWYgKCFyb290TGF5ZXIgfHwgIXNjcmVlbkJhY2tn
cm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgaWYgKCFyb290TGF5ZXIgfHwgIXNjcmVlbkJhY2tn
cm91bmRDb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVnaW9uIGZpbGxSZWdpb24gPSBv
Y2NsdXNpb25UcmFja2VyLmNvbXB1dGVWaXNpYmxlUmVnaW9uSW5TY3JlZW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKaW5kZXggNmNlMzVmZThhZjQ2MTliNDAzOTUxNjg4ZjFkZmVlNTQzNDYxMjk0
Mi4uZGVlNTViZjdmNmNmZWYxOTI0YmNhYjUzY2RlZWVlMTlkNjllMjhhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ0NSZW5kZXJQYXNzX2gKICNk
ZWZpbmUgQ0NSZW5kZXJQYXNzX2gKIAorI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRlICJj
Yy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM2LDcgKzM3LDYgQEAgY2xhc3MgQ0NEcmF3UXVhZDsK
IGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NSZW5kZXJTdXJmYWNlOwogY2xhc3MgQ0NTaGFy
ZWRRdWFkU3RhdGU7Ci1jbGFzcyBDb2xvcjsKIAogLy8gQSBsaXN0IG9mIENDRHJhd1F1YWQgb2Jq
ZWN0cywgc29ydGVkIGludGVybmFsbHkgaW4gZnJvbnQtdG8tYmFjayBvcmRlci4KIGNsYXNzIEND
UXVhZExpc3QgOiBwdWJsaWMgVmVjdG9yPE93blB0cjxDQ0RyYXdRdWFkPiA+IHsKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJ
bXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcyk7CiAg
ICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCosIGNv
bnN0IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFj
a2VySW1wbCopOwotICAgIHZvaWQgYXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwq
IHJvb3RMYXllciwgY29uc3QgQ29sb3ImIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VySW1wbCYpOworICAgIHZvaWQgYXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4o
Q0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmKTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1
YWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkTGlzdDsgfQogICAgIENDUmVuZGVyU3VyZmFj
ZSogdGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0U3VyZmFjZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggMWNkYWQyMmU0NjhjMTI0ZDI4YjFlOGQ0
YmNmZWRmY2ZhZmExNzU5Yy4uNmFjMDk0NmFhNjg2N2FlN2I3NzVmMGQyOWNiYjhlZGIwZDcxZDY4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAg
dm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKICAgICAgICAgaW50IHJlZCA9IGZvclJlcGxpY2EgPyBk
ZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvclJlZCA6IGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yUmVkOwog
ICAgICAgICBpbnQgZ3JlZW4gPSBmb3JSZXBsaWNhID8gIGRlYnVnUmVwbGljYUJvcmRlckNvbG9y
R3JlZW4gOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckdyZWVuOwogICAgICAgICBpbnQgYmx1ZSA9
IGZvclJlcGxpY2EgPyBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckJsdWUgOiBkZWJ1Z1N1cmZhY2VC
b3JkZXJDb2xvckJsdWU7Ci0gICAgICAgIENvbG9yIGNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGRl
YnVnU3VyZmFjZUJvcmRlckFscGhhKTsKKyAgICAgICAgU2tDb2xvciBjb2xvciA9IFNrQ29sb3JT
ZXRBUkdCKGRlYnVnU3VyZmFjZUJvcmRlckFscGhhLCByZWQsIGdyZWVuLCBibHVlKTsKICAgICAg
ICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3JkZXJX
aWR0aCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
CmluZGV4IDdmNmY5ODExM2Q2ZjhiOWE3Mjc4Yjk2NzgwZjY0YmJmOTg0NTYxNTMuLjg2NjgzNjli
NjliNzA5NmVhYzMyNWEwZjgxNDlmZjgwMDBmZWI5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nv
bGlkQ29sb3JEcmF3UXVhZC5jcHAKQEAgLTI5LDE2ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NPd25QdHI8Q0NTb2xpZENvbG9yRHJhd1F1YWQ+IENDU29saWRDb2xvckRy
YXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKK1Bhc3NPd25QdHI8
Q0NTb2xpZENvbG9yRHJhd1F1YWQ+IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QsIFNrQ29sb3IgY29sb3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NvbGlkQ29s
b3JEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvcikpOwogfQogCi1DQ1Nv
bGlkQ29sb3JEcmF3UXVhZDo6Q0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvcikKK0NDU29saWRDb2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JEcmF3UXVhZChj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCwgU2tDb2xvciBjb2xvcikKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRl
LCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yLCBxdWFkUmVjdCkKICAgICAsIG1fY29sb3IoY29sb3Ip
CiB7Ci0gICAgaWYgKG1fY29sb3IuaGFzQWxwaGEoKSkKKyAgICBpZiAoU2tDb2xvckdldEEobV9j
b2xvcikgPCAyNTUpCiAgICAgICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOwogICAgIGVsc2UKICAg
ICAgICAgbV9vcGFxdWVSZWN0ID0gcXVhZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
RHJhd1F1YWQuaAppbmRleCBkMDIwZGY2ODQ5YThhMDNjYmE4ZjIyYjA4ODU3MGM1ZTFiODM2Y2U0
Li44M2VhMzQwNjYxNTcwMTBmMGQxMjkyZThlMTU2MzNjZTJhMTczZWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JE
cmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQ0NT
b2xpZENvbG9yRHJhd1F1YWRfaAogI2RlZmluZSBDQ1NvbGlkQ29sb3JEcmF3UXVhZF9oCiAKLSNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0Ry
YXdRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtMzUsMTQgKzM1LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkIDogcHVi
bGljIENDRHJhd1F1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU29saWRDb2xvckRy
YXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NvbGlkQ29sb3JEcmF3
UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IENvbG9yJik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTb2xpZENvbG9yRHJhd1F1YWQ+
IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9y
KTsKIAotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07
CisgICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07CiAKIHByaXZh
dGU6Ci0gICAgQ0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgQ29sb3ImKTsKKyAgICBDQ1NvbGlkQ29sb3JEcmF3UXVhZChj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yKTsKIAotICAg
IENvbG9yIG1fY29sb3I7CisgICAgU2tDb2xvciBtX2NvbG9yOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA5ODRjM2I3YmVlOGUzMTUyMjFjYTAzY2FlM2I4
NjAyN2M2NDkyZDFiLi4zNzMxODA4Y2I1ZGEyOWI0MzA5YmQ4ZWQ1NGMzZTkyZTQ3YWYxNjc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCisjaW5jbHVkZSAiU2tDb2xvci5oIgog
I2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCkBAIC0xNTMsMTIg
KzE1NCwxMiBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxl
ciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQogICAgICAgICAgICAgZm9yIChpbnQg
aSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgICAgIERyYXdhYmxlVGls
ZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKLSAgICAgICAgICAgICAgICBDb2xvciBib3Jk
ZXJDb2xvcjsKKyAgICAgICAgICAgICAgICBTa0NvbG9yIGJvcmRlckNvbG9yOwogCiAgICAgICAg
ICAgICAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICF0aWxlIHx8ICF0aWxlLT50ZXh0dXJlSWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IgPSBDb2xvcihkZWJ1Z1RpbGVCb3JkZXJN
aXNzaW5nVGlsZUNvbG9yUmVkLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yR3JlZW4s
IGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JCbHVlLCBkZWJ1Z1RpbGVCb3JkZXJBbHBo
YSk7CisgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yID0gU2tDb2xvclNldEFSR0IoZGVi
dWdUaWxlQm9yZGVyQWxwaGEsIGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JSZWQsIGRl
YnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyTWlzc2lu
Z1RpbGVDb2xvckJsdWUpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgYm9yZGVyQ29sb3IgPSBDb2xvcihkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCwgZGVidWdUaWxl
Qm9yZGVyQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlLCBkZWJ1Z1RpbGVCb3Jk
ZXJBbHBoYSk7CisgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yID0gU2tDb2xvclNldEFS
R0IoZGVidWdUaWxlQm9yZGVyQWxwaGEsIGRlYnVnVGlsZUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1Rp
bGVCb3JkZXJDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckJsdWUpOwogICAgICAgICAg
ICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBib3JkZXJDb2xvciwgZGVidWdUaWxlQm9yZGVyV2lkdGgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXggMDk3MGNlNmMy
NDlkMDUzMmM4NjNjNDNhMzRlMmRjODE4MDljMWQ1Yy4uN2U5NTM5Mzc2Mzk2NDMyN2I4NWU3ZGNh
M2IwZTU2ZWQwOGQ0MGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC02Miw3ICs2Miw3IEBAIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDo6fk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpCiAKIHZvaWQg
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIGNvbG9yKQogewotICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigp
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZv
cm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IucmdiKCkpOwogfQogCiB2b2lkIE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCmluZGV4IDAxZjk0
M2E2NDBlNmFlOWM1OWYxYjQ2ZGM4ZGQ4YjgxZDcxMjliN2MuLjI2MmZjZjc2ZjRkNTcwZDM3M2Yz
NTAyODZmMzZkYTM3NTczYmMxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgVEVTVChDQ0xheWVySW1w
bFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBJbnRQb2lu
dCBhcmJpdHJhcnlJbnRQb2ludCA9IEludFBvaW50KDMzMywgNDQ0KTsKICAgICBJbnRSZWN0IGFy
Yml0cmFyeUludFJlY3QgPSBJbnRSZWN0KGFyYml0cmFyeUludFBvaW50LCBhcmJpdHJhcnlJbnRT
aXplKTsKICAgICBGbG9hdFJlY3QgYXJiaXRyYXJ5RmxvYXRSZWN0ID0gRmxvYXRSZWN0KGFyYml0
cmFyeUZsb2F0UG9pbnQsIEZsb2F0U2l6ZSgxLjIzNGYsIDUuNjc4ZikpOwotICAgIENvbG9yIGFy
Yml0cmFyeUNvbG9yID0gQ29sb3IoMTAsIDIwLCAzMCk7CisgICAgU2tDb2xvciBhcmJpdHJhcnlD
b2xvciA9IFNrQ29sb3JTZXRSR0IoMTAsIDIwLCAzMCk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggYXJiaXRyYXJ5VHJhbnNmb3JtOwogICAgIGFyYml0cmFyeVRyYW5zZm9ybS5zY2FsZTNk
KDAuMSwgMC4yLCAwLjMpOwogICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgYXJiaXRyYXJ5RmlsdGVy
czsKQEAgLTEyNCw3ICsxMjQsNyBAQCBURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJD
aGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xB
WUVSX0NIQU5HRUQocm9vdC0+c2V0RGVidWdCb3JkZXJDb2xvcihhcmJpdHJhcnlDb2xvcikpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RGVidWdC
b3JkZXJXaWR0aChhcmJpdHJhcnlOdW1iZXIpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05M
WV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKSk7Ci0gICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRCYWNrZ3JvdW5kQ29sb3Io
Q29sb3I6OmdyYXkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VE
KHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihTS19Db2xvckdSQVkpKTsKICAgICBFWEVDVVRFX0FO
RF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRGaWx0ZXJzKGFy
Yml0cmFyeUZpbHRlcnMpKTsKIAogICAgIC8vIENoYW5naW5nIHRoZXNlIHByb3BlcnRpZXMgb25s
eSBhZmZlY3RzIGhvdyByZW5kZXIgc3VyZmFjZSBpcyBkcmF3bgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRl
eCAzNDg0NmI3YzIxOGU2YTQ1OGVjYTU3ZjUxODQ5YjVhZWNmZTkyNjRkLi5iY2Y4OTA1YmYyZDBi
OTc1YmU3NmM5MzZhZjY1MjFjZGUyYmQ3YTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMTQwMiw3
ICsxNDAyLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldo
ZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2
aWV3cG9ydENvdmVyZWQpCiB7CiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKLSAgICBtX2hvc3RJbXBs
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOworICAgIG1faG9zdEltcGwtPnNldEJh
Y2tncm91bmRDb2xvcihTS19Db2xvckdSQVkpOwogCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUo
MTAwMCwgMTAwMCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6
ZSk7CkBAIC0xNjMxLDcgKzE2MzEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCiAgICAgewotICAgICAgICBjb25zdCBD
b2xvciBncmF5KDEwMCwgMTAwLCAxMDApOworICAgICAgICBTa0NvbG9yIGdyYXkgPSBTa0NvbG9y
U2V0UkdCKDEwMCwgMTAwLCAxMDApOwogICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KDAsIDAsIDUs
IDUpOwogICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gbXlRdWFkID0gQ0NTb2xpZENvbG9yRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBncmF5KTsKICAgICAgICAg
cXVhZExpc3QuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCkpOwpAQCAtMjM4Myw3ICsyMzgzLDcgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmQp
CiAKICAgICAvLyBSdW4gdGVzdCBjYXNlCiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IG15SG9zdEltcGwgPSBjcmVhdGVMYXllclRyZWVIb3N0KGZhbHNlLCBjb250ZXh0LnJlbGVhc2Uo
KSwgQ0NMYXllckltcGw6OmNyZWF0ZSgxKSk7Ci0gICAgbXlIb3N0SW1wbC0+c2V0QmFja2dyb3Vu
ZENvbG9yKENvbG9yOjp3aGl0ZSk7CisgICAgbXlIb3N0SW1wbC0+c2V0QmFja2dyb3VuZENvbG9y
KFNLX0NvbG9yV0hJVEUpOwogCiAgICAgLy8gVmVyaWZ5IG9uZSBxdWFkIGlzIGRyYXduIHdoZW4g
dHJhbnNwYXJlbnQgYmFja2dyb3VuZCBzZXQgaXMgbm90IHNldC4KICAgICBteUhvc3RJbXBsLT5z
ZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoZmFsc2UpOwpAQCAtMjk4OCw3ICsyOTg4LDcgQEAg
c3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IGNoYXIqIHRlc3RT
Y3JpcHQsIFJlbmRlclBhc3NSZW1vdmEKICAgICAgICAgd2hpbGUgKCpjdXJyZW50Q2hhciAhPSAn
XG4nICYmICpjdXJyZW50Q2hhciAhPSAnXDAnKSB7CiAgICAgICAgICAgICBpZiAoKmN1cnJlbnRD
aGFyID09ICdzJykgewogICAgICAgICAgICAgICAgIC8vIFNvbGlkIGNvbG9yIGRyYXcgcXVhZAot
ICAgICAgICAgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiBxdWFkID0gQ0NTb2xpZENvbG9yRHJh
d1F1YWQ6OmNyZWF0ZSh0ZXN0RGF0YS5zaGFyZWRRdWFkU3RhdGUuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAsIDEwKSwgQ29sb3I6OndoaXRlKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8Q0NEcmF3
UXVhZD4gcXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUodGVzdERhdGEuc2hhcmVk
UXVhZFN0YXRlLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwLCAxMCksIFNLX0NvbG9yV0hJVEUpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENDVGVzdFJlbmRl
clBhc3MqPihyZW5kZXJQYXNzLmdldCgpKS0+YXBwZW5kUXVhZChxdWFkLnJlbGVhc2UoKSk7CiAg
ICAgICAgICAgICAgICAgY3VycmVudENoYXIrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCmluZGV4IDZi
NzEyNDk3NWNlMjJhYmFlZmM1NDdkNjMyYTUzMTY2YmRmOGViMjcuLmI0NzY4NWRmNDRjMDE3YjVh
OGU2MGIxOWFmMzFmYmQ2YmZmM2ZjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcApAQCAtNjIsNyAr
NjIsNyBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNr
Z3JvdW5kQ29sb3JJblF1YWQpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3Bl
ZEltcGxUaHJlYWQ7CiAKLSAgICBjb25zdCBDb2xvciB0ZXN0Q29sb3IgPSAweEZGQTU1QUZGOwor
ICAgIFNrQ29sb3IgdGVzdENvbG9yID0gMHhGRkE1NUFGRjsKIAogICAgIE1vY2tDQ1F1YWRDdWxs
ZXIgcXVhZEN1bGxlcjsKICAgICBJbnRTaXplIGxheWVyU2l6ZSA9IEludFNpemUoMTAwLCAxMDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCA0YTkyYjE1MDljNWEyZDUzOTU5ODUzZTdiNDE4YWVkYmZjN2ZmMDZhLi44NmQw
OGFiYTU4ZjQxYTJhNTY5YjA5MmE3NTI4NmRlY2Q2MWE0YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTA5LDcgKzUw
OSw3IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNl
c0NvcnJlY3RCZWhhdmlvcikKICAgICAvLyBBbGwgcHJvcGVydGllcyBuZWVkIHRvIGJlIHNldCB0
byBuZXcgdmFsdWVzIGluIG9yZGVyIGZvciBzZXROZWVkc0NvbW1pdCB0byBiZSBjYWxsZWQuCiAg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExh
eWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDEuMjNmLCA0LjU2ZikpKTsKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNl
dEFuY2hvclBvaW50WigwLjdmKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19D
T01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IoMC40
ZiwgMC40ZiwgMC40ZiwgMS4wZikpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURT
X0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihTS19Db2xv
ckxUR1JBWSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFW
SU9SKDEsIHRlc3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRNYXNr
TGF5ZXIoZHVtbXlMYXllci5nZXQoKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVF
RFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0T3BhY2l0eSgwLjVmKSk7Cg==
</data>
<flag name="review"
          id="157933"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>