<?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>59756</bug_id>
          
          <creation_ts>2011-04-28 16:11:32 -0700</creation_ts>
          <short_desc>Chromium Mac: Enable overlay scrollbars</short_desc>
          <delta_ts>2011-06-08 15:24:55 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>61401</dependson>
          <blocked>59728</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Sailesh Agrawal">sail</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>jamesr</cc>
    
    <cc>mihaip</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>394870</commentid>
    <comment_count>0</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-28 16:11:32 -0700</bug_when>
    <thetext>This bug is to track the work to enable overlay scrollbars.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394875</commentid>
    <comment_count>1</comment_count>
      <attachid>91581</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-28 16:16:38 -0700</bug_when>
    <thetext>Created attachment 91581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394921</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-28 16:52:53 -0700</bug_when>
    <thetext>Attachment 91581 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395487</commentid>
    <comment_count>3</comment_count>
      <attachid>91729</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-29 14:02:18 -0700</bug_when>
    <thetext>Created attachment 91729
Fixed some bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395489</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-29 14:04:38 -0700</bug_when>
    <thetext>Attachment 91729 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395507</commentid>
    <comment_count>5</comment_count>
      <attachid>91736</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-29 14:14:33 -0700</bug_when>
    <thetext>Created attachment 91736
Updated change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395511</commentid>
    <comment_count>6</comment_count>
      <attachid>91739</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-29 14:18:28 -0700</bug_when>
    <thetext>Created attachment 91739
Fixed style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396023</commentid>
    <comment_count>7</comment_count>
      <attachid>91739</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-01 13:30:37 -0700</bug_when>
    <thetext>Comment on attachment 91739
Fixed style errors

This again contains copied code.  Why does chromium mac need its own ScrollBarTheme code? Alos, your changelog entries do not have any information about the functions you are adding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409219</commentid>
    <comment_count>8</comment_count>
      <attachid>94692</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-05-24 14:46:53 -0700</bug_when>
    <thetext>Created attachment 94692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409224</commentid>
    <comment_count>9</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-05-24 14:49:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 91739 [details])
&gt; This again contains copied code.  Why does chromium mac need its own ScrollBarTheme code? Alos, your changelog entries do not have any information about the functions you are adding.

I&apos;ve updated the ChangeLog to describe what&apos;s added and changed.

I talked to Beth Dakin about the code duplication issue. We agreed that it would be ok to live with the code duplication until smooth scrolling is enabled on the Mac (hopefully very soon). I&apos;ve filed bug 61144 to track this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417395</commentid>
    <comment_count>10</comment_count>
      <attachid>96452</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-08 12:10:37 -0700</bug_when>
    <thetext>Created attachment 96452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417532</commentid>
    <comment_count>11</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-08 14:24:20 -0700</bug_when>
    <thetext>Try bot passed:
http://build.chromium.org/p/tryserver.chromium/builders/mac/builds/31160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417551</commentid>
    <comment_count>12</comment_count>
      <attachid>96452</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-06-08 14:40:32 -0700</bug_when>
    <thetext>Comment on attachment 96452
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Enable  WTF_USE_WK_SCROLLBAR_PAINTER for Chromium Mac. This allows us to use overlay scrollbars on future versions of Mac OS X.

One too many spaces after &quot;Enable&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417559</commentid>
    <comment_count>13</comment_count>
      <attachid>96485</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-08 14:46:20 -0700</bug_when>
    <thetext>Created attachment 96485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417560</commentid>
    <comment_count>14</comment_count>
      <attachid>96452</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-08 14:46:46 -0700</bug_when>
    <thetext>Comment on attachment 96452
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Enable  WTF_USE_WK_SCROLLBAR_PAINTER for Chromium Mac. This allows us to use overlay scrollbars on future versions of Mac OS X.
&gt; 
&gt; One too many spaces after &quot;Enable&quot;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417597</commentid>
    <comment_count>15</comment_count>
      <attachid>96485</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 15:24:49 -0700</bug_when>
    <thetext>Comment on attachment 96485
Patch

Clearing flags on attachment: 96485

Committed r88396: &lt;http://trac.webkit.org/changeset/88396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417598</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 15:24:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91581</attachid>
            <date>2011-04-28 16:16:38 -0700</date>
            <delta_ts>2011-04-29 14:02:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>theme.patch</filename>
            <type>text/plain</type>
            <size>16857</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE1ZDA0MzguLjY0YjYwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDExLTA0LTI1ICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hyb21pdW0gTWFjOiBFbmFibGUgb3ZlcmxheSBzY3JvbGxiYXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc1NgorICAg
ICAgICAKKyAgICAgICAgRW5hYmxlIFdURl9VU0VfV0tfU0NST0xMQkFSX1BBSU5URVIsIEVOQUJM
RV9HRVNUVVJFX0VWRU5UUywgYW5kIEVOQUJMRV9SVUJCRVJfQkFORElORyBmb3IgTWFjIENocm9t
aXVtLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKworMjAxMS0wNC0yNSAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgogCiAgICAgICAgIE5peGVkIHNwZWNpYWwgZmluYWxpemVyIGhhbmRsaW5n
IGZvciBXZWJDb3JlIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRl
eCA3NjM5YjE1Li5kMGY5ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBA
IC02NDQsNiArNjQ0LDEwIEBACiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogI2RlZmluZSBXVEZfVVNF
X1BUSFJFQURTIDEKICNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCisKKyNkZWZpbmUgRU5B
QkxFX0dFU1RVUkVfRVZFTlRTIDEKKyNkZWZpbmUgRU5BQkxFX1JVQkJFUl9CQU5ESU5HIDEKKyNk
ZWZpbmUgV1RGX1VTRV9XS19TQ1JPTExCQVJfUEFJTlRFUiAxCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEJSRVdNUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNzIxODY1Li5jYmQ2MTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsMzggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBDaHJvbWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAg
U3luYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tLy5oIHdpdGggU2Nyb2xsYmFyVGhlbWVN
YWMubW0gdG8gcGljayB1cCBzdXBwb3J0IGZvciBvdmVybGF5IHNjcm9sbGJhcnMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJh
ck1hcCk6CisgICAgICAgICgrW1Njcm9sbGJhclByZWZzT2JzZXJ2ZXIgYXBwZWFyYW5jZVByZWZz
Q2hhbmdlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUFycm93UGxhY2VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnJlZ2lzdGVyU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVucmVn
aXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNjcm9sbGJhclRoaWNrbmVzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp1c2VzT3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpidXR0b25SZXBhaW50UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp0
cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvU2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZSk6CisKKzIwMTEtMDQtMjggIFNhaWxl
c2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCiAgICAgICAgIENocm9taXVtIE1hYzogVXNlIFNjcm9sbEFuaW1hdG9y
TWFjLm1tIGZvciBvdmVybGF5IHNjcm9sbGJhciBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc1MwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
LmgKaW5kZXggMWFiMmYxOC4uNTg4NTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApAQCAt
MjgsNiArMjgsNyBAQAogI2RlZmluZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjX2gKIAogI2lu
Y2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc01hYy5oIgogCiAvLyBUaGlzIGZpbGUgKGFuZCBpdHMgYXNzb2NpYXRlZCAu
bW0gZmlsZSkgaXMgYSBjbG9uZSBvZiBTY3JvbGxiYXJUaGVtZU1hYy5oLgogLy8gU2VlIHRoZSAu
bW0gZmlsZSBmb3IgZGV0YWlscy4KQEAgLTQ0LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJT
Y3JvbGxiYXIpOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJh
cnMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJE
ZWxheSgpOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CkBAIC01
Myw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CiAKKyAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiwg
V0tTY3JvbGxiYXJQYWludGVyUmVmKTsKKyAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRl
ckZvclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXIqKTsKQEAgLTY0LDYgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogcHVibGljOgogICAgIHZvaWQgcHJlZmVy
ZW5jZXNDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCBiMGJhOTVkLi4z
ODQ2NDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTUwLDE2ICs1MCwyNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC8vIC0gVGhlIGNsYXNzbmFtZSBjaGFuZ2UgZnJvbSBT
Y3JvbGxiYXJUaGVtZU1hYyB0byBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLgogLy8gLSBJbiBw
YWludCgpIHRoZSBjb2RlIHRvIHBhaW50IHRoZSB0cmFjaywgdGlja21hcmtzLCBhbmQgdGh1bWIg
c2VwYXJhdGVseS4KIC8vIC0gSW4gcGFpbnQoKSB0aGUgdGh1bWIgaXMgZHJhd24gdmlhIENocm9t
ZUJyaWRnZS9XZWJUaGVtZUVuZ2luZS4KKy8vIC0gVmFyaW91cyBmdW5jdGlvbnMgdGhhdCB3ZXJl
IHNwbGl0IHVzaW5nICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisvLyAgIGhhdmUgYmVl
biBjb21iaW5lZCB1c2luZyBydW50aW1lIGNoZWNrcyBpbnN0ZWFkLgogLy8KIC8vIEZvciBhbGwg
b3RoZXIgZGlmZmVyZW5jZXMsIGlmIGl0IHdhcyBpbnRyb2R1Y2VkIGluIHRoaXMgZmlsZSwgdGhl
biB0aGUKIC8vIG1haW50YWluZXIgZm9yZ290IHRvIGluY2x1ZGUgaXQgaW4gdGhlIGxpc3Q7IG90
aGVyd2lzZSBpdCBpcyBhbiB1cGRhdGUgdGhhdAogLy8gc2hvdWxkIGhhdmUgYmVlbiBhcHBsaWVk
IHRvIHRoaXMgZmlsZSBidXQgd2FzIG5vdC4KIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4q
IGdTY3JvbGxiYXJzOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1AaW50ZXJmYWNlIFNjcm9sbGJh
clByZWZzT2JzZXJ2ZXIgOiBOU09iamVjdAordHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJhciosIFJl
dGFpblB0cjxXS1Njcm9sbGJhclBhaW50ZXJSZWY+ID4gU2Nyb2xsYmFyUGFpbnRlck1hcDsKKwor
c3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgpCiB7CisgICAgc3RhdGlj
IFNjcm9sbGJhclBhaW50ZXJNYXAqIG1hcCA9IG5ldyBTY3JvbGxiYXJQYWludGVyTWFwOworICAg
IHJldHVybiBtYXA7Cit9CisKK30KIAorQGludGVyZmFjZSBTY3JvbGxiYXJQcmVmc09ic2VydmVy
IDogTlNPYmplY3QKK3sKIH0KIAogKyAodm9pZClyZWdpc3RlckFzT2JzZXJ2ZXI7CkBAIC03NSwx
MiArODYsMTIgQEAgc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOwogICAg
IFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRpb24pOwogCiAgICAgc3RhdGljX2Nhc3Q8U2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYyo+KFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpKS0+
cHJlZmVyZW5jZXNDaGFuZ2VkKCk7Ci0gICAgaWYgKCFnU2Nyb2xsYmFycykKKyAgICBpZiAoc2Ny
b2xsYmFyTWFwKCktPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEhhc2hTZXQ8U2Ny
b2xsYmFyKj46Oml0ZXJhdG9yIGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKLSAgICBmb3IgKEhh
c2hTZXQ8U2Nyb2xsYmFyKj46Oml0ZXJhdG9yIGl0ID0gZ1Njcm9sbGJhcnMtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICAoKml0KS0+c3R5bGVDaGFuZ2VkKCk7Ci0gICAgICAg
ICgqaXQpLT5pbnZhbGlkYXRlKCk7CisgICAgU2Nyb2xsYmFyUGFpbnRlck1hcDo6aXRlcmF0b3Ig
ZW5kID0gc2Nyb2xsYmFyTWFwKCktPmVuZCgpOworICAgIGZvciAoU2Nyb2xsYmFyUGFpbnRlck1h
cDo6aXRlcmF0b3IgaXQgPSBzY3JvbGxiYXJNYXAoKS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgIGl0LT5maXJzdC0+c3R5bGVDaGFuZ2VkKCk7CisgICAgICAgIGl0LT5maXJz
dC0+aW52YWxpZGF0ZSgpOwogICAgIH0KIH0KIApAQCAtMTMzLDI0ICsxNDQsMzQgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1lbnQoKQogICAgICAgICBnQnV0dG9uUGxhY2VtZW50ID0g
U2Nyb2xsYmFyQnV0dG9uc0RvdWJsZVN0YXJ0OwogICAgIGVsc2UgaWYgKFtidXR0b25QbGFjZW1l
bnQgaXNFcXVhbFRvU3RyaW5nOkAiRG91YmxlQm90aCJdKQogICAgICAgICBnQnV0dG9uUGxhY2Vt
ZW50ID0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUJvdGg7Ci0gICAgZWxzZQotICAgICAgICBnQnV0
dG9uUGxhY2VtZW50ID0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZDsgLy8gVGhlIGRlZmF1bHQg
aXMgU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZC4KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKElz
U2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICAgICAgZ0J1dHRvblBsYWNl
bWVudCA9IFNjcm9sbGJhckJ1dHRvbnNOb25lOworICAgICAgICBlbHNlCisgICAgICAgICAgICBn
QnV0dG9uUGxhY2VtZW50ID0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZDsKKyAgICB9CiB9CiAK
IHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgaWYgKCFnU2Nyb2xsYmFycykKLSAgICAgICAgZ1Njcm9s
bGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXIqPjsKLSAgICBnU2Nyb2xsYmFycy0+YWRkKHNj
cm9sbGJhcik7CisgICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgc2Ny
b2xsYmFyUGFpbnRlciA9IHdrTWFrZVNjcm9sbGJhclBhaW50ZXIoc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpLCBpc0hvcml6b250YWwpOworICAgIHNjcm9sbGJhck1hcCgpLT5hZGQoc2Nyb2xsYmFy
LCBzY3JvbGxiYXJQYWludGVyKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIGdTY3Jv
bGxiYXJzLT5yZW1vdmUoc2Nyb2xsYmFyKTsKLSAgICBpZiAoZ1Njcm9sbGJhcnMtPmlzRW1wdHko
KSkgewotICAgICAgICBkZWxldGUgZ1Njcm9sbGJhcnM7Ci0gICAgICAgIGdTY3JvbGxiYXJzID0g
MDsKLSAgICB9CisgICAgc2Nyb2xsYmFyTWFwKCktPnJlbW92ZShzY3JvbGxiYXIpOworfQorCit2
b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBuZXdQYWludGVyKQor
eworICAgIHNjcm9sbGJhck1hcCgpLT5zZXQoc2Nyb2xsYmFyLCBuZXdQYWludGVyKTsKK30KKwor
V0tTY3JvbGxiYXJQYWludGVyUmVmIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50ZXJG
b3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit7CisgICAgcmV0dXJuIHNjcm9sbGJh
ck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKTsKIH0KIAogU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpCkBAIC0xNzksNyArMjAwLDE4IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cHJlZmVyZW5jZXNDaGFuZ2VkKCkKIAogaW50
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSBjb250cm9sU2l6ZSkKIHsKLSAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVz
c1tjb250cm9sU2l6ZV07CisgICAgaWYgKElzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgp
KQorICAgICAgICByZXR1cm4gd2tTY3JvbGxiYXJUaGlja25lc3MoY29udHJvbFNpemUpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIGNTY3JvbGxiYXJUaGlja25lc3NbY29udHJvbFNpemVdOwor
fQorCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVzZXNPdmVybGF5U2Nyb2xsYmFy
cygpIGNvbnN0Cit7CisgICAgaWYgKElzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQor
ICAgICAgICByZXR1cm4gd2tTY3JvbGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3JvbGxlcnMoKTsK
KyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKIH0KIAogZG91YmxlIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpCkBAIC0xOTEsNyAr
MjIzLDcgQEAgZG91YmxlIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmF1dG9zY3JvbGxUaW1l
ckRlbGF5KCkKIHsKICAgICByZXR1cm4gZ0F1dG9zY3JvbGxCdXR0b25EZWxheTsKIH0KLQorICAg
IAogU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpi
dXR0b25zUGxhY2VtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZ0J1dHRvblBsYWNlbWVudDsK
QEAgLTE5OSwyMCArMjMxLDI4IEBAIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0CiAKIGJvb2wgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsK
LSAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8KLSAgICAgICAgICAgICBzY3JvbGxiYXItPndp
ZHRoKCkgOgotICAgICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxC
dXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtz
Y3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVk
KCkgJiYgZ0J1dHRvblBsYWNlbWVudCAhPSBTY3JvbGxiYXJCdXR0b25zTm9uZQorICAgICAgICAg
ICAgICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcgor
ICAgICAgICAgICAgID8gc2Nyb2xsYmFyLT53aWR0aCgpCisgICAgICAgICAgICAgOiBzY3JvbGxi
YXItPmhlaWdodCgpKSA+PSAyICogKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJv
bFNpemUoKV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9
CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCiB7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/Ci0gICAgICAgICAgICAg
c2Nyb2xsYmFyLT53aWR0aCgpIDoKLSAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+
PSAyICogY0J1dHRvbkluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyBjVGh1bWJNaW5M
ZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSArIDE7CisgICAgaW50IG1pbkxlbmd0aEZv
clRodW1iOworICAgIGlmIChJc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAg
ICAgbWluTGVuZ3RoRm9yVGh1bWIgPSB3a1Njcm9sbGJhck1pbmltdW1Ub3RhbExlbmd0aE5lZWRl
ZEZvclRodW1iKHNjcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKSk7CisgICAgZWxz
ZQorICAgICAgICBtaW5MZW5ndGhGb3JUaHVtYiA9IDIgKiBjQnV0dG9uSW5zZXRbc2Nyb2xsYmFy
LT5jb250cm9sU2l6ZSgpXSArIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCldICsgMTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCisgICAgICAgICAgICAgc2Ny
b2xsYmFyLT53aWR0aCgpIDogCisgICAgICAgICAgICAgc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0g
bWluTGVuZ3RoRm9yVGh1bWI7CiB9CiAKIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0
KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9vbCBzdGFydCkKIHsKKyAg
ICBBU1NFUlQoZ0J1dHRvblBsYWNlbWVudCAhPSBTY3JvbGxiYXJCdXR0b25zTm9uZSk7CisKICAg
ICBJbnRSZWN0IHBhaW50UmVjdChidXR0b25SZWN0KTsKICAgICBpZiAob3JpZW50YXRpb24gPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBwYWludFJlY3Quc2V0V2lkdGgoY1JlYWxC
dXR0b25MZW5ndGhbY29udHJvbFNpemVdKTsKQEAgLTIzMCwxMyArMjcwLDEzIEBAIHN0YXRpYyBJ
bnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9s
bGJhck9yaWVudGF0aW9uCiBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wg
cGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7Ci0KKyAgICAKICAgICBpZiAocGFydCA9
PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFy
QnV0dG9uc05vbmUgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3Vi
bGVFbmQpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotCisgICAgCiAgICAgaWYgKHBhcnQgPT0g
QmFja0J1dHRvbkVuZFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0
b25zTm9uZSB8fCBidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZVN0
YXJ0IHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zU2luZ2xlKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLQorICAgICAgICAKICAgICBpbnQgdGhpY2tuZXNzID0gc2Ny
b2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiAgICAgYm9vbCBvdXRl
ckJ1dHRvbiA9IHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCAmJiAoYnV0dG9uc1BsYWNlbWVu
dCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVTdGFydCB8fCBidXR0b25zUGxhY2VtZW50KCkg
PT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUJvdGgpOwogICAgIGlmIChvdXRlckJ1dHRvbikgewpA
QCAtMjQ2LDcgKzI4Niw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAgICAgICAgICBy
ZXN1bHQgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgdGhpY2tuZXNz
LCBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSArIHBhaW50aW5n
ID8gY091dGVyQnV0dG9uT3ZlcmxhcCA6IDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KLQorICAgIAogICAgIC8vIE91ciByZXBhaW50IHJlY3QgaXMgc2xpZ2h0bHkgbGFyZ2VyLCBz
aW5jZSB3ZSBhcmUgYSBidXR0b24gdGhhdCBpcyBhZGphY2VudCB0byB0aGUgdHJhY2suCiAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAg
ICAgICAgIGludCBzdGFydCA9IHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCA/IHNjcm9sbGJh
ci0+eCgpIDogc2Nyb2xsYmFyLT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSBjT3V0ZXJCdXR0
b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25MZW5ndGhbc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpXTsKQEAgLTI1NSw3ICsyOTUsNyBAQCBJbnRSZWN0IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYQogICAgICAgICBpbnQgc3RhcnQgPSBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQg
PyBzY3JvbGxiYXItPnkoKSA6IHNjcm9sbGJhci0+eSgpICsgc2Nyb2xsYmFyLT5oZWlnaHQoKSAt
IGNPdXRlckJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkxl
bmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwogICAgICAgICByZXN1bHQgPSBJbnRSZWN0
KHNjcm9sbGJhci0+eCgpLCBzdGFydCwgdGhpY2tuZXNzLCBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJh
ci0+Y29udHJvbFNpemUoKV0pOwogICAgIH0KLQorICAgIAogICAgIGlmIChwYWludGluZykKICAg
ICAgICAgcmV0dXJuIGJ1dHRvblJlcGFpbnRSZWN0KHJlc3VsdCwgc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpLCBzY3JvbGxiYXItPmNvbnRyb2xTaXplKCksIHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0
UGFydCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI2NCwxNyArMzA0LDE3IEBAIEludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhCiBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7Ci0KKyAgICAKICAgICBpZiAocGFy
dCA9PSBGb3J3YXJkQnV0dG9uRW5kUGFydCAmJiAoYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9s
bGJhckJ1dHRvbnNOb25lIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25z
RG91YmxlU3RhcnQpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotCisgICAgCiAgICAgaWYgKHBh
cnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAoYnV0dG9uc1BsYWNlbWVudCgpID09IFNj
cm9sbGJhckJ1dHRvbnNOb25lIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0
b25zRG91YmxlRW5kIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zU2lu
Z2xlKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQorICAgICAgICAKICAgICBpbnQgdGhpY2tu
ZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiAgICAg
aW50IG91dGVyQnV0dG9uTGVuZ3RoID0gY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV07CiAgICAgaW50IGJ1dHRvbkxlbmd0aCA9IGNCdXR0b25MZW5ndGhbc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpXTsKLQorICAgIAogICAgIGJvb2wgb3V0ZXJCdXR0b24gPSBwYXJ0
ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xs
YmFyQnV0dG9uc0RvdWJsZUVuZCB8fCBidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0
dG9uc0RvdWJsZUJvdGgpOwogICAgIGlmIChvdXRlckJ1dHRvbikgewogICAgICAgICBpZiAoc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKQEAgLTI4OCw3
ICszMjgsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbAogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQotCisgICAgCiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBzdGFydCA9IHBhcnQg
PT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgPyBzY3JvbGxiYXItPngoKSArIHNjcm9sbGJhci0+d2lk
dGgoKSAtIGJ1dHRvbkxlbmd0aCA6IHNjcm9sbGJhci0+eCgpICsgb3V0ZXJCdXR0b25MZW5ndGg7
CiAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc3RhcnQsIHNjcm9sbGJhci0+eSgpLCBidXR0b25M
ZW5ndGgsIHRoaWNrbmVzcyk7CkBAIC0zMDUsNyArMzQ1LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFp
bnRpbmcKIHsKICAgICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAg
ICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7Ci0KKyAgICAKICAgICBJbnRSZWN0
IHJlc3VsdDsKICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJh
ci0+Y29udHJvbFNpemUoKSk7CiAgICAgaW50IHN0YXJ0V2lkdGggPSAwOwpAQCAtMzMxLDcgKzM3
MSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dHJhY2tSZWN0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICB9Ci0KKyAgICAKICAgICBpbnQgdG90YWxXaWR0aCA9IHN0YXJ0V2lk
dGggKyBlbmRXaWR0aDsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpICsg
c3RhcnRXaWR0aCwgc2Nyb2xsYmFyLT55KCksIHNjcm9sbGJhci0+d2lkdGgoKSAtIHRvdGFsV2lk
dGgsIHRoaWNrbmVzcyk7CkBAIC0zNDAsNyArMzgwLDEwIEBAIEludFJlY3QgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50
aW5nCiAKIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCldOworICAgIGlmIChJc1Njcm9sbGJhck92ZXJsYXlBUElBdmFp
bGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHdrU2Nyb2xsYmFyTWluaW11bVRodW1iTGVuZ3RoKHNj
cm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBy
ZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAKIGJv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKQEAgLTM1Miw2ICszOTUsMTEgQEAg
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW8KICAgICByZXR1cm4gZXZ0LmFsdEtleSgpOwogfQogCiti
b29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRP
ZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7Cisg
ICAgcmV0dXJuIGV2ZW50LmFsdEtleSgpOworfQorCiBzdGF0aWMgaW50IHNjcm9sbGJhclBhcnRU
b0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBzd2l0Y2ggKHBhcnQp
IHsKQEAgLTM3MCw2ICs0MTgsMTggQEAgc3RhdGljIGludCBzY3JvbGxiYXJQYXJ0VG9ISVByZXNz
ZWRTdGF0ZShTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgfQogfQogCitzdGF0aWMgaW5saW5lIHdr
U2Nyb2xsZXJLbm9iU3R5bGUgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKFNjcm9sbGJhck92
ZXJsYXlTdHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBTY3Jv
bGxiYXJPdmVybGF5U3R5bGVEYXJrOgorICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHls
ZURhcms7CisgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDoKKyAgICAgICAgcmV0
dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVMaWdodDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gd2tTY3JvbGxlcktub2JTdHlsZURlZmF1bHQ7CisgICAgfQorfQorCiBzdGF0aWMgUGxhdGZv
cm1CcmlkZ2U6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3Jv
bGxiYXIqIHNjcm9sbGJhcikgewogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUJyaWRnZTo6U3RhdGVEaXNhYmxlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91729</attachid>
            <date>2011-04-29 14:02:18 -0700</date>
            <delta_ts>2011-04-29 14:14:33 -0700</delta_ts>
            <desc>Fixed some bugs</desc>
            <filename>scrollbar_theme_2.patch</filename>
            <type>text/plain</type>
            <size>19647</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE1ZDA0MzguLjY0YjYwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDExLTA0LTI1ICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hyb21pdW0gTWFjOiBFbmFibGUgb3ZlcmxheSBzY3JvbGxiYXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc1NgorICAg
ICAgICAKKyAgICAgICAgRW5hYmxlIFdURl9VU0VfV0tfU0NST0xMQkFSX1BBSU5URVIsIEVOQUJM
RV9HRVNUVVJFX0VWRU5UUywgYW5kIEVOQUJMRV9SVUJCRVJfQkFORElORyBmb3IgTWFjIENocm9t
aXVtLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKworMjAxMS0wNC0yNSAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgogCiAgICAgICAgIE5peGVkIHNwZWNpYWwgZmluYWxpemVyIGhhbmRsaW5n
IGZvciBXZWJDb3JlIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRl
eCA3NjM5YjE1Li5kMGY5ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBA
IC02NDQsNiArNjQ0LDEwIEBACiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogI2RlZmluZSBXVEZfVVNF
X1BUSFJFQURTIDEKICNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCisKKyNkZWZpbmUgRU5B
QkxFX0dFU1RVUkVfRVZFTlRTIDEKKyNkZWZpbmUgRU5BQkxFX1JVQkJFUl9CQU5ESU5HIDEKKyNk
ZWZpbmUgV1RGX1VTRV9XS19TQ1JPTExCQVJfUEFJTlRFUiAxCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEJSRVdNUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZTQ5NjkyLi5iYTE3MWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsMzggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBDaHJvbWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAg
U3luYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tLy5oIHdpdGggU2Nyb2xsYmFyVGhlbWVN
YWMubW0gdG8gcGljayB1cCBzdXBwb3J0IGZvciBvdmVybGF5IHNjcm9sbGJhcnMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJh
ck1hcCk6CisgICAgICAgICgrW1Njcm9sbGJhclByZWZzT2JzZXJ2ZXIgYXBwZWFyYW5jZVByZWZz
Q2hhbmdlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUFycm93UGxhY2VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnJlZ2lzdGVyU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVucmVn
aXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNjcm9sbGJhclRoaWNrbmVzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp1c2VzT3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpidXR0b25SZXBhaW50UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp0
cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvU2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZSk6CisKKzIwMTEtMDQtMjggIFNhaWxl
c2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCiAgICAgICAgIENocm9taXVtIE1hYzogVXNlIFNjcm9sbEFuaW1hdG9y
TWFjLm1tIGZvciBvdmVybGF5IHNjcm9sbGJhciBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc1MwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
LmgKaW5kZXggMWFiMmYxOC4uNTg4NTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApAQCAt
MjgsNiArMjgsNyBAQAogI2RlZmluZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjX2gKIAogI2lu
Y2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc01hYy5oIgogCiAvLyBUaGlzIGZpbGUgKGFuZCBpdHMgYXNzb2NpYXRlZCAu
bW0gZmlsZSkgaXMgYSBjbG9uZSBvZiBTY3JvbGxiYXJUaGVtZU1hYy5oLgogLy8gU2VlIHRoZSAu
bW0gZmlsZSBmb3IgZGV0YWlscy4KQEAgLTQ0LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJT
Y3JvbGxiYXIpOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJh
cnMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJE
ZWxheSgpOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CkBAIC01
Myw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CiAKKyAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiwg
V0tTY3JvbGxiYXJQYWludGVyUmVmKTsKKyAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRl
ckZvclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXIqKTsKQEAgLTY0LDYgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogcHVibGljOgogICAgIHZvaWQgcHJlZmVy
ZW5jZXNDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCBiMGJhOTVkLi40
MDk0Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTI5LDggKzI5LDEwIEBACiAK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1
ZGUgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQnJp
ZGdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xs
QW5pbWF0b3JNYWMuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSA8Q2FyYm9u
L0NhcmJvbi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTUwLDE4ICs1Miwy
OSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC8vIC0gVGhlIGNsYXNzbmFtZSBjaGFuZ2Ug
ZnJvbSBTY3JvbGxiYXJUaGVtZU1hYyB0byBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLgogLy8g
LSBJbiBwYWludCgpIHRoZSBjb2RlIHRvIHBhaW50IHRoZSB0cmFjaywgdGlja21hcmtzLCBhbmQg
dGh1bWIgc2VwYXJhdGVseS4KIC8vIC0gSW4gcGFpbnQoKSB0aGUgdGh1bWIgaXMgZHJhd24gdmlh
IENocm9tZUJyaWRnZS9XZWJUaGVtZUVuZ2luZS4KKy8vIC0gVmFyaW91cyBmdW5jdGlvbnMgdGhh
dCB3ZXJlIHNwbGl0IHVzaW5nICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisvLyAgIGhh
dmUgYmVlbiBjb21iaW5lZCB1c2luZyBydW50aW1lIGNoZWNrcyBpbnN0ZWFkLgogLy8KIC8vIEZv
ciBhbGwgb3RoZXIgZGlmZmVyZW5jZXMsIGlmIGl0IHdhcyBpbnRyb2R1Y2VkIGluIHRoaXMgZmls
ZSwgdGhlbiB0aGUKIC8vIG1haW50YWluZXIgZm9yZ290IHRvIGluY2x1ZGUgaXQgaW4gdGhlIGxp
c3Q7IG90aGVyd2lzZSBpdCBpcyBhbiB1cGRhdGUgdGhhdAogLy8gc2hvdWxkIGhhdmUgYmVlbiBh
cHBsaWVkIHRvIHRoaXMgZmlsZSBidXQgd2FzIG5vdC4KIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xs
YmFyKj4qIGdTY3JvbGxiYXJzOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1AaW50ZXJmYWNlIFNj
cm9sbGJhclByZWZzT2JzZXJ2ZXIgOiBOU09iamVjdAordHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJh
ciosIFJldGFpblB0cjxXS1Njcm9sbGJhclBhaW50ZXJSZWY+ID4gU2Nyb2xsYmFyUGFpbnRlck1h
cDsKKworc3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgpCiB7CisgICAg
c3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIG1hcCA9IG5ldyBTY3JvbGxiYXJQYWludGVyTWFw
OworICAgIHJldHVybiBtYXA7Cit9CiAKIH0KIAorQGludGVyZmFjZSBTY3JvbGxiYXJQcmVmc09i
c2VydmVyIDogTlNPYmplY3QKK3sKK30KKwogKyAodm9pZClyZWdpc3RlckFzT2JzZXJ2ZXI7CiAr
ICh2b2lkKWFwcGVhcmFuY2VQcmVmc0NoYW5nZWQ6KE5TTm90aWZpY2F0aW9uKil0aGVOb3RpZmlj
YXRpb247CiArICh2b2lkKWJlaGF2aW9yUHJlZnNDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiopdGhl
Tm90aWZpY2F0aW9uOwpAQCAtNzUsMTIgKzg4LDEyIEBAIHN0YXRpYyBIYXNoU2V0PFNjcm9sbGJh
cio+KiBnU2Nyb2xsYmFyczsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZpY2F0aW9uKTsK
IAogICAgIHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMqPihTY3JvbGxiYXJU
aGVtZTo6bmF0aXZlVGhlbWUoKSktPnByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAgIGlmICghZ1Nj
cm9sbGJhcnMpCisgICAgaWYgKHNjcm9sbGJhck1hcCgpLT5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFy
cy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdT
Y3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgKCppdCktPnN0
eWxlQ2hhbmdlZCgpOwotICAgICAgICAoKml0KS0+aW52YWxpZGF0ZSgpOworICAgIFNjcm9sbGJh
clBhaW50ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IHNjcm9sbGJhck1hcCgpLT5lbmQoKTsKKyAgICBm
b3IgKFNjcm9sbGJhclBhaW50ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gc2Nyb2xsYmFyTWFwKCktPmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpdC0+Zmlyc3QtPnN0eWxlQ2hhbmdl
ZCgpOworICAgICAgICBpdC0+Zmlyc3QtPmludmFsaWRhdGUoKTsKICAgICB9CiB9CiAKQEAgLTEz
MywyNCArMTQ2LDM0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFycm93UGxhY2VtZW50KCkKICAgICAg
ICAgZ0J1dHRvblBsYWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVTdGFydDsKICAgICBl
bHNlIGlmIChbYnV0dG9uUGxhY2VtZW50IGlzRXF1YWxUb1N0cmluZzpAIkRvdWJsZUJvdGgiXSkK
ICAgICAgICAgZ0J1dHRvblBsYWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVCb3RoOwot
ICAgIGVsc2UKLSAgICAgICAgZ0J1dHRvblBsYWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNEb3Vi
bGVFbmQ7IC8vIFRoZSBkZWZhdWx0IGlzIFNjcm9sbGJhckJ1dHRvbnNEb3VibGVFbmQuCisgICAg
ZWxzZSB7CisgICAgICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAg
ICAgICAgICAgIGdCdXR0b25QbGFjZW1lbnQgPSBTY3JvbGxiYXJCdXR0b25zTm9uZTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZ0J1dHRvblBsYWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNE
b3VibGVFbmQ7CisgICAgfQogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIGlmICghZ1Njcm9s
bGJhcnMpCi0gICAgICAgIGdTY3JvbGxiYXJzID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyKj47Ci0g
ICAgZ1Njcm9sbGJhcnMtPmFkZChzY3JvbGxiYXIpOworICAgIGJvb2wgaXNIb3Jpem9udGFsID0g
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CisgICAgV0tT
Y3JvbGxiYXJQYWludGVyUmVmIHNjcm9sbGJhclBhaW50ZXIgPSB3a01ha2VTY3JvbGxiYXJQYWlu
dGVyKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSwgaXNIb3Jpem9udGFsKTsKKyAgICBzY3JvbGxi
YXJNYXAoKS0+YWRkKHNjcm9sbGJhciwgc2Nyb2xsYmFyUGFpbnRlcik7CiB9CiAKIHZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKIHsKLSAgICBnU2Nyb2xsYmFycy0+cmVtb3ZlKHNjcm9sbGJhcik7Ci0gICAgaWYg
KGdTY3JvbGxiYXJzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVsZXRlIGdTY3JvbGxiYXJzOwot
ICAgICAgICBnU2Nyb2xsYmFycyA9IDA7Ci0gICAgfQorICAgIHNjcm9sbGJhck1hcCgpLT5yZW1v
dmUoc2Nyb2xsYmFyKTsKK30KKwordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpzZXRO
ZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBXS1Njcm9sbGJhclBh
aW50ZXJSZWYgbmV3UGFpbnRlcikKK3sKKyAgICBzY3JvbGxiYXJNYXAoKS0+c2V0KHNjcm9sbGJh
ciwgbmV3UGFpbnRlcik7Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
eworICAgIHJldHVybiBzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCk7CiB9CiAK
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKQpA
QCAtMTc5LDcgKzIwMiwxOCBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnByZWZl
cmVuY2VzQ2hhbmdlZCgpCiAKIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpzY3JvbGxi
YXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiB7Ci0gICAgcmV0
dXJuIGNTY3JvbGxiYXJUaGlja25lc3NbY29udHJvbFNpemVdOworICAgIGlmIChpc1Njcm9sbGJh
ck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHdrU2Nyb2xsYmFyVGhpY2tu
ZXNzKGNvbnRyb2xTaXplKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBjU2Nyb2xsYmFyVGhp
Y2tuZXNzW2NvbnRyb2xTaXplXTsKK30KKworYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
Ojp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAoreworICAgIGlmIChpc1Njcm9sbGJhck92
ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHdrU2Nyb2xsYmFyUGFpbnRlclVz
ZXNPdmVybGF5U2Nyb2xsZXJzKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIGRvdWJsZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjppbml0aWFsQXV0b3Njcm9sbFRp
bWVyRGVsYXkoKQpAQCAtMTkxLDcgKzIyNSw3IEBAIGRvdWJsZSBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjOjphdXRvc2Nyb2xsVGltZXJEZWxheSgpCiB7CiAgICAgcmV0dXJuIGdBdXRvc2Nyb2xs
QnV0dG9uRGVsYXk7CiB9Ci0KKyAgICAKIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGdCdXR0b25QbGFjZW1lbnQ7CkBAIC0xOTksMjAgKzIzMywyOCBAQCBTY3JvbGxiYXJCdXR0
b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJ1dHRvbnNQbGFjZW1lbnQo
KSBjb25zdAogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Omhhc0J1dHRvbnMoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYm
IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/Ci0gICAg
ICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDoKLSAgICAgICAgICAgICBzY3JvbGxiYXItPmhl
aWdodCgpKSA+PSAyICogKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUo
KV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CisgICAgcmV0
dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIGdCdXR0b25QbGFjZW1lbnQgIT0gU2Nyb2xsYmFy
QnV0dG9uc05vbmUKKyAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIKKyAgICAgICAgICAgICA/IHNjcm9sbGJhci0+d2lkdGgoKQor
ICAgICAgICAgICAgIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxl
bmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJh
ci0+Y29udHJvbFNpemUoKV0pOwogfQogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIHJldHVybiBzY3JvbGxiYXIt
PmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIgPwotICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6Ci0gICAgICAgICAgICAg
c2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIGNCdXR0b25JbnNldFtzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCldICsgY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyAx
OworICAgIGludCBtaW5MZW5ndGhGb3JUaHVtYjsKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5
QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIG1pbkxlbmd0aEZvclRodW1iID0gd2tTY3JvbGxiYXJN
aW5pbXVtVG90YWxMZW5ndGhOZWVkZWRGb3JUaHVtYihzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9s
bGJhcikuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbWluTGVuZ3RoRm9yVGh1bWIgPSAyICog
Y0J1dHRvbkluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyBjVGh1bWJNaW5MZW5ndGhb
c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSArIDE7CisgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5h
YmxlZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IAorICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IAorICAgICAgICAgICAgIHNj
cm9sbGJhci0+aGVpZ2h0KCkpID49IG1pbkxlbmd0aEZvclRodW1iOwogfQogCiBzdGF0aWMgSW50
UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNp
emUsIGJvb2wgc3RhcnQpCiB7CisgICAgQVNTRVJUKGdCdXR0b25QbGFjZW1lbnQgIT0gU2Nyb2xs
YmFyQnV0dG9uc05vbmUpOworCiAgICAgSW50UmVjdCBwYWludFJlY3QoYnV0dG9uUmVjdCk7CiAg
ICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgcGFp
bnRSZWN0LnNldFdpZHRoKGNSZWFsQnV0dG9uTGVuZ3RoW2NvbnRyb2xTaXplXSk7CkBAIC0yMzAs
MTMgKzI3MiwxMyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRS
ZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0Owot
CisgICAgCiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCAmJiAoYnV0dG9uc1Bs
YWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNOb25lIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9
PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQor
ICAgIAogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0ICYmIChidXR0b25zUGxhY2Vt
ZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNj
cm9sbGJhckJ1dHRvbnNEb3VibGVTdGFydCB8fCBidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xs
YmFyQnV0dG9uc1NpbmdsZSkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KKyAgICAgICAgCiAg
ICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCkpOwogICAgIGJvb2wgb3V0ZXJCdXR0b24gPSBwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBh
cnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlU3RhcnQg
fHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVCb3RoKTsKICAg
ICBpZiAob3V0ZXJCdXR0b24pIHsKQEAgLTI0Niw3ICsyODgsNyBAQCBJbnRSZWN0IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYQogICAgICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCksIHRoaWNrbmVzcywgY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV0gKyBwYWludGluZyA/IGNPdXRlckJ1dHRvbk92ZXJsYXAgOiAwKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0KKyAgICAKICAgICAvLyBPdXIgcmVwYWludCByZWN0
IGlzIHNsaWdodGx5IGxhcmdlciwgc2luY2Ugd2UgYXJlIGEgYnV0dG9uIHRoYXQgaXMgYWRqYWNl
bnQgdG8gdGhlIHRyYWNrLgogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgc3RhcnQgPSBwYXJ0ID09IEJhY2tCdXR0
b25TdGFydFBhcnQgPyBzY3JvbGxiYXItPngoKSA6IHNjcm9sbGJhci0+eCgpICsgc2Nyb2xsYmFy
LT53aWR0aCgpIC0gY091dGVyQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0g
LSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CkBAIC0yNTUsNyArMjk3
LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9
PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ID8gc2Nyb2xsYmFyLT55KCkgOiBzY3JvbGxiYXItPnkoKSAr
IHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpXSAtIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKICAg
ICAgICAgcmVzdWx0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc3RhcnQsIHRoaWNrbmVzcywg
Y0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKICAgICB9Ci0KKyAgICAK
ICAgICBpZiAocGFpbnRpbmcpCiAgICAgICAgIHJldHVybiBidXR0b25SZXBhaW50UmVjdChyZXN1
bHQsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSwgc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLCBw
YXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yNjQs
MTcgKzMwNiwxNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYQogSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0
OwotCisgICAgCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgJiYgKGJ1dHRv
bnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zTm9uZSB8fCBidXR0b25zUGxhY2VtZW50
KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZVN0YXJ0KSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLQorICAgIAogICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQgJiYgKGJ1
dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zTm9uZSB8fCBidXR0b25zUGxhY2Vt
ZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZCB8fCBidXR0b25zUGxhY2VtZW50KCkg
PT0gU2Nyb2xsYmFyQnV0dG9uc1NpbmdsZSkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KKyAg
ICAgICAgCiAgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXIt
PmNvbnRyb2xTaXplKCkpOwogICAgIGludCBvdXRlckJ1dHRvbkxlbmd0aCA9IGNPdXRlckJ1dHRv
bkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwogICAgIGludCBidXR0b25MZW5ndGgg
PSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07Ci0KKyAgICAKICAgICBi
b29sIG91dGVyQnV0dG9uID0gcGFydCA9PSBGb3J3YXJkQnV0dG9uRW5kUGFydCAmJiAoYnV0dG9u
c1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVFbmQgfHwgYnV0dG9uc1BsYWNl
bWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVCb3RoKTsKICAgICBpZiAob3V0ZXJCdXR0
b24pIHsKICAgICAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CkBAIC0yODgsNyArMzMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2wK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLQorICAgIAogICAgIGlm
IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAg
ICAgICBpbnQgc3RhcnQgPSBwYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0ID8gc2Nyb2xsYmFy
LT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSBidXR0b25MZW5ndGggOiBzY3JvbGxiYXItPngo
KSArIG91dGVyQnV0dG9uTGVuZ3RoOwogICAgICAgICByZXN1bHQgPSBJbnRSZWN0KHN0YXJ0LCBz
Y3JvbGxiYXItPnkoKSwgYnV0dG9uTGVuZ3RoLCB0aGlja25lc3MpOwpAQCAtMzA1LDcgKzM0Nyw3
IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFoYXNC
dXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgp
OwotCisgICAgCiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9s
bGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwogICAgIGludCBzdGFydFdp
ZHRoID0gMDsKQEAgLTMzMSw3ICszNzMsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotCisgICAgCiAgICAgaW50
IHRvdGFsV2lkdGggPSBzdGFydFdpZHRoICsgZW5kV2lkdGg7CiAgICAgaWYgKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gSW50
UmVjdChzY3JvbGxiYXItPngoKSArIHN0YXJ0V2lkdGgsIHNjcm9sbGJhci0+eSgpLCBzY3JvbGxi
YXItPndpZHRoKCkgLSB0b3RhbFdpZHRoLCB0aGlja25lc3MpOwpAQCAtMzQwLDcgKzM4MiwxMCBA
QCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgYm9vbCBwYWludGluZwogCiBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIHJldHVy
biBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKKyAgICBpZiAoaXNT
Y3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiB3a1Njcm9sbGJh
ck1pbmltdW1UaHVtYkxlbmd0aChzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkp
OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldOwogfQogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQp
CkBAIC0zNTIsNiArMzk3LDExIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6c2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgcmV0dXJu
IGV2dC5hbHRLZXkoKTsKIH0KIAorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpzaG91
bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBldmVudC5hbHRLZXkoKTsKK30KKwogc3Rh
dGljIGludCBzY3JvbGxiYXJQYXJ0VG9ISVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0IHBhcnQp
CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CkBAIC0zNzAsNiArNDIwLDE4IEBAIHN0YXRpYyBpbnQg
c2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFydCBwYXJ0KQogICAgIH0K
IH0KIAorc3RhdGljIGlubGluZSB3a1Njcm9sbGVyS25vYlN0eWxlIHRvU2Nyb2xsYmFyUGFpbnRl
cktub2JTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUgc3R5bGUpCit7CisgICAgc3dpdGNoIChz
dHlsZSkgeworICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGFyazoKKyAgICAgICAgcmV0
dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVEYXJrOworICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlTGlnaHQ6CisgICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlTGlnaHQ7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVEZWZhdWx0OworICAg
IH0KK30KKwogc3RhdGljIFBsYXRmb3JtQnJpZGdlOjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFy
U3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpIHsKICAgICBpZiAoIXNjcm9s
bGJhci0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gUGxhdGZvcm1CcmlkZ2U6OlN0YXRlRGlz
YWJsZWQ7CkBAIC0zODMsNiArNDQ1LDQ2IEBAIHN0YXRpYyBQbGF0Zm9ybUJyaWRnZTo6VGhlbWVQ
YWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2NyCiAKIGJv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsK
KyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgZmxv
YXQgdmFsdWUgPSAwOworICAgICAgICBmbG9hdCBvdmVyaGFuZyA9IDA7CisKKyAgICAgICAgaWYg
KHNjcm9sbGJhci0+Y3VycmVudFBvcygpIDwgMCkgeworICAgICAgICAgICAgLy8gU2Nyb2xsZWQg
cGFzdCB0aGUgdG9wLgorICAgICAgICAgICAgdmFsdWUgPSAwOworICAgICAgICAgICAgb3Zlcmhh
bmcgPSAtc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7CisgICAgICAgIH0gZWxzZSBpZiAoc2Nyb2xs
YmFyLT52aXNpYmxlU2l6ZSgpICsgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPiBzY3JvbGxiYXIt
PnRvdGFsU2l6ZSgpKSB7CisgICAgICAgICAgICAvLyBTY3JvbGxlZCBwYXN0IHRoZSBib3R0b20u
CisgICAgICAgICAgICB2YWx1ZSA9IDE7CisgICAgICAgICAgICBvdmVyaGFuZyA9IHNjcm9sbGJh
ci0+Y3VycmVudFBvcygpICsgc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpIC0gc2Nyb2xsYmFyLT50
b3RhbFNpemUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFdpdGhpbiB0aGUg
Ym91bmRzIG9mIHRoZSBzY3JvbGxhYmxlIGFyZWEuCisgICAgICAgICAgICBpbnQgbWF4aW11bSA9
IHNjcm9sbGJhci0+bWF4aW11bSgpOworICAgICAgICAgICAgaWYgKG1heGltdW0gPiAwKQorICAg
ICAgICAgICAgICAgIHZhbHVlID0gc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgLyBtYXhpbXVtOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3JNYWMqIHNjcm9sbEFuaW1hdG9yID0gc3Rh
dGljX2Nhc3Q8U2Nyb2xsQW5pbWF0b3JNYWMqPihzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCkt
PnNjcm9sbEFuaW1hdG9yKCkpOworICAgICAgICBzY3JvbGxBbmltYXRvci0+c2V0SXNEcmF3aW5n
SW50b0xheWVyKGNvbnRleHQtPmlzQ0FMYXllckNvbnRleHQoKSk7CisKKyAgICAgICAgd2tTZXRT
Y3JvbGxiYXJQYWludGVyS25vYlN0eWxlKHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKSwg
dG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+
cmVjb21tZW5kZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSkpOworICAgICAgICAKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAgICAg
Y29udGV4dC0+Y2xpcChkYW1hZ2VSZWN0KTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHNj
cm9sbGJhci0+ZnJhbWVSZWN0KCkueCgpLCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpLnkoKSk7Cisg
ICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7
CisgICAgICAgIHdrU2Nyb2xsYmFyUGFpbnRlclBhaW50KHNjcm9sbGJhck1hcCgpLT5nZXQoc2Ny
b2xsYmFyKS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFy
LT5lbmFibGVkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc2Nyb2xs
YmFyLT52aXNpYmxlU2l6ZSgpKSAtIG92ZXJoYW5nKSAvIHNjcm9sbGJhci0+dG90YWxTaXplKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkp
OworCisgICAgICAgIHNjcm9sbEFuaW1hdG9yLT5zZXRJc0RyYXdpbmdJbnRvTGF5ZXIoZmFsc2Up
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBISVRoZW1lVHJhY2tEcmF3SW5m
byB0cmFja0luZm87CiAgICAgdHJhY2tJbmZvLnZlcnNpb24gPSAwOwogICAgIHRyYWNrSW5mby5r
aW5kID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFJlZ3VsYXJTY3JvbGxiYXIgPyBrVGhl
bWVNZWRpdW1TY3JvbGxCYXIgOiBrVGhlbWVTbWFsbFNjcm9sbEJhcjsKQEAgLTQ4Niw0ICs1ODgs
MyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbgogfQogCiB9Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91736</attachid>
            <date>2011-04-29 14:14:33 -0700</date>
            <delta_ts>2011-04-29 14:18:28 -0700</delta_ts>
            <desc>Updated change log.</desc>
            <filename>scrollbar_theme_2.patch</filename>
            <type>text/plain</type>
            <size>20011</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE1ZDA0MzguLjY0YjYwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDExLTA0LTI1ICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hyb21pdW0gTWFjOiBFbmFibGUgb3ZlcmxheSBzY3JvbGxiYXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc1NgorICAg
ICAgICAKKyAgICAgICAgRW5hYmxlIFdURl9VU0VfV0tfU0NST0xMQkFSX1BBSU5URVIsIEVOQUJM
RV9HRVNUVVJFX0VWRU5UUywgYW5kIEVOQUJMRV9SVUJCRVJfQkFORElORyBmb3IgTWFjIENocm9t
aXVtLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKworMjAxMS0wNC0yNSAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgogCiAgICAgICAgIE5peGVkIHNwZWNpYWwgZmluYWxpemVyIGhhbmRsaW5n
IGZvciBXZWJDb3JlIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRl
eCA3NjM5YjE1Li5kMGY5ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBA
IC02NDQsNiArNjQ0LDEwIEBACiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogI2RlZmluZSBXVEZfVVNF
X1BUSFJFQURTIDEKICNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCisKKyNkZWZpbmUgRU5B
QkxFX0dFU1RVUkVfRVZFTlRTIDEKKyNkZWZpbmUgRU5BQkxFX1JVQkJFUl9CQU5ESU5HIDEKKyNk
ZWZpbmUgV1RGX1VTRV9XS19TQ1JPTExCQVJfUEFJTlRFUiAxCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEJSRVdNUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZWRkNGY4Li42MGY3NDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsMzggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBDaHJvbWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAg
U3luYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tLy5oIHdpdGggU2Nyb2xsYmFyVGhlbWVN
YWMubW0gdG8gcGljayB1cCBzdXBwb3J0IGZvciBvdmVybGF5IHNjcm9sbGJhcnMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGlzIGNvZGUgaXMgb25seSBlbmFibGVkIG9uIGZ1dHVy
ZSB2ZXJzaW9ucyBvZiBNYWMgT1MgWC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsYmFy
TWFwKToKKyAgICAgICAgKCtbU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciBhcHBlYXJhbmNlUHJlZnND
aGFuZ2VkOl0pOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlQXJyb3dQbGFjZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cmVnaXN0ZXJTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dW5yZWdp
c3RlclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50ZXJGb3JTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6c2Nyb2xsYmFyVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVzZXNPdmVybGF5U2Ny
b2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpo
YXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1dHRvblJlcGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJhY2tCdXR0b25SZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmZvcndhcmRCdXR0
b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnRy
YWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpt
aW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKToKKworMjAxMS0wNC0yOCAgU2FpbGVz
aCBBZ3Jhd2FsICA8c2FpbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKICAgICAgICAgQ2hyb21pdW0gTWFjOiBVc2UgU2Nyb2xsQW5pbWF0b3JN
YWMubW0gZm9yIG92ZXJsYXkgc2Nyb2xsYmFyIHN1cHBvcnQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzUzCiAKQEAgLTEwLDggKzQyLDYgQEAKICAg
ICAgICAgTm8gbmV3IHRlc3RzLiBKdXN0IGluY2x1ZGluZyBhbiBleGlzdGluZyBjbGFzcyBpbnRv
IENocm9taXVtIE1hYy4KIAogICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCi0gICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCi0gICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6Y3JlYXRlKToKICAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW0KICAgICAgICAgKFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KToK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4IDFhYjJmMTguLjU4ODUzZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hY19oCiAKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIgor
I2luY2x1ZGUgIlNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMuaCIKIAogLy8gVGhpcyBmaWxl
IChhbmQgaXRzIGFzc29jaWF0ZWQgLm1tIGZpbGUpIGlzIGEgY2xvbmUgb2YgU2Nyb2xsYmFyVGhl
bWVNYWMuaC4KIC8vIFNlZSB0aGUgLm1tIGZpbGUgZm9yIGRldGFpbHMuCkBAIC00NCw2ICs0NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBp
bml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Ny
b2xsVGltZXJEZWxheSgpOwpAQCAtNTMsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogCisgICAgdm9pZCBzZXROZXdQYWludGVyRm9y
U2Nyb2xsYmFyKFNjcm9sbGJhciosIFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CisgICAgV0tTY3Jv
bGxiYXJQYWludGVyUmVmIHBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKICAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CkBAIC02NCw2ICs2OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5z
dGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKIHB1
YmxpYzoKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMubW0KaW5kZXggYjBiYTk1ZC4uNDA5NGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1t
CkBAIC0yOSw4ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVu
dC5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yTWFjLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmll
dy5oIgogI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CkBAIC01MCwxOCArNTIsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAvLyAt
IFRoZSBjbGFzc25hbWUgY2hhbmdlIGZyb20gU2Nyb2xsYmFyVGhlbWVNYWMgdG8gU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy4KIC8vIC0gSW4gcGFpbnQoKSB0aGUgY29kZSB0byBwYWludCB0aGUg
dHJhY2ssIHRpY2ttYXJrcywgYW5kIHRodW1iIHNlcGFyYXRlbHkuCiAvLyAtIEluIHBhaW50KCkg
dGhlIHRodW1iIGlzIGRyYXduIHZpYSBDaHJvbWVCcmlkZ2UvV2ViVGhlbWVFbmdpbmUuCisvLyAt
IFZhcmlvdXMgZnVuY3Rpb25zIHRoYXQgd2VyZSBzcGxpdCB1c2luZyAjaWYgVVNFKFdLX1NDUk9M
TEJBUl9QQUlOVEVSKQorLy8gICBoYXZlIGJlZW4gY29tYmluZWQgdXNpbmcgcnVudGltZSBjaGVj
a3MgaW5zdGVhZC4KIC8vCiAvLyBGb3IgYWxsIG90aGVyIGRpZmZlcmVuY2VzLCBpZiBpdCB3YXMg
aW50cm9kdWNlZCBpbiB0aGlzIGZpbGUsIHRoZW4gdGhlCiAvLyBtYWludGFpbmVyIGZvcmdvdCB0
byBpbmNsdWRlIGl0IGluIHRoZSBsaXN0OyBvdGhlcndpc2UgaXQgaXMgYW4gdXBkYXRlIHRoYXQK
IC8vIHNob3VsZCBoYXZlIGJlZW4gYXBwbGllZCB0byB0aGlzIGZpbGUgYnV0IHdhcyBub3QuCiAK
LXN0YXRpYyBIYXNoU2V0PFNjcm9sbGJhcio+KiBnU2Nyb2xsYmFyczsKK25hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQGludGVyZmFjZSBTY3JvbGxiYXJQcmVmc09ic2VydmVyIDogTlNPYmplY3QKK3R5
cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXIqLCBSZXRhaW5QdHI8V0tTY3JvbGxiYXJQYWludGVyUmVm
PiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7CisKK3N0YXRpYyBTY3JvbGxiYXJQYWludGVyTWFwKiBz
Y3JvbGxiYXJNYXAoKQogeworICAgIHN0YXRpYyBTY3JvbGxiYXJQYWludGVyTWFwKiBtYXAgPSBu
ZXcgU2Nyb2xsYmFyUGFpbnRlck1hcDsKKyAgICByZXR1cm4gbWFwOworfQogCiB9CiAKK0BpbnRl
cmZhY2UgU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciA6IE5TT2JqZWN0Cit7Cit9CisKICsgKHZvaWQp
cmVnaXN0ZXJBc09ic2VydmVyOwogKyAodm9pZClhcHBlYXJhbmNlUHJlZnNDaGFuZ2VkOihOU05v
dGlmaWNhdGlvbiopdGhlTm90aWZpY2F0aW9uOwogKyAodm9pZCliZWhhdmlvclByZWZzQ2hhbmdl
ZDooTlNOb3RpZmljYXRpb24qKXRoZU5vdGlmaWNhdGlvbjsKQEAgLTc1LDEyICs4OCwxMiBAQCBz
dGF0aWMgSGFzaFNldDxTY3JvbGxiYXIqPiogZ1Njcm9sbGJhcnM7CiAgICAgVU5VU0VEX1BBUkFN
KHVudXNlZE5vdGlmaWNhdGlvbik7CiAKICAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjKj4oU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wcmVmZXJlbmNlc0No
YW5nZWQoKTsKLSAgICBpZiAoIWdTY3JvbGxiYXJzKQorICAgIGlmIChzY3JvbGxiYXJNYXAoKS0+
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRl
cmF0b3IgZW5kID0gZ1Njcm9sbGJhcnMtPmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTY3JvbGxi
YXIqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgICgqaXQpLT5zdHlsZUNoYW5nZWQoKTsKLSAgICAgICAgKCppdCktPmludmFs
aWRhdGUoKTsKKyAgICBTY3JvbGxiYXJQYWludGVyTWFwOjppdGVyYXRvciBlbmQgPSBzY3JvbGxi
YXJNYXAoKS0+ZW5kKCk7CisgICAgZm9yIChTY3JvbGxiYXJQYWludGVyTWFwOjppdGVyYXRvciBp
dCA9IHNjcm9sbGJhck1hcCgpLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
aXQtPmZpcnN0LT5zdHlsZUNoYW5nZWQoKTsKKyAgICAgICAgaXQtPmZpcnN0LT5pbnZhbGlkYXRl
KCk7CiAgICAgfQogfQogCkBAIC0xMzMsMjQgKzE0NiwzNCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVB
cnJvd1BsYWNlbWVudCgpCiAgICAgICAgIGdCdXR0b25QbGFjZW1lbnQgPSBTY3JvbGxiYXJCdXR0
b25zRG91YmxlU3RhcnQ7CiAgICAgZWxzZSBpZiAoW2J1dHRvblBsYWNlbWVudCBpc0VxdWFsVG9T
dHJpbmc6QCJEb3VibGVCb3RoIl0pCiAgICAgICAgIGdCdXR0b25QbGFjZW1lbnQgPSBTY3JvbGxi
YXJCdXR0b25zRG91YmxlQm90aDsKLSAgICBlbHNlCi0gICAgICAgIGdCdXR0b25QbGFjZW1lbnQg
PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOyAvLyBUaGUgZGVmYXVsdCBpcyBTY3JvbGxiYXJC
dXR0b25zRG91YmxlRW5kLgorICAgIGVsc2UgeworICAgICAgICBpZiAoaXNTY3JvbGxiYXJPdmVy
bGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgICAgICBnQnV0dG9uUGxhY2VtZW50ID0gU2Nyb2xs
YmFyQnV0dG9uc05vbmU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdCdXR0b25QbGFjZW1l
bnQgPSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOworICAgIH0KIH0KIAogdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cikKIHsKLSAgICBpZiAoIWdTY3JvbGxiYXJzKQotICAgICAgICBnU2Nyb2xsYmFycyA9IG5ldyBI
YXNoU2V0PFNjcm9sbGJhcio+OwotICAgIGdTY3JvbGxiYXJzLT5hZGQoc2Nyb2xsYmFyKTsKKyAg
ICBib29sIGlzSG9yaXpvbnRhbCA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyOworICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBzY3JvbGxiYXJQYWludGVy
ID0gd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihzY3JvbGxiYXItPmNvbnRyb2xTaXplKCksIGlzSG9y
aXpvbnRhbCk7CisgICAgc2Nyb2xsYmFyTWFwKCktPmFkZChzY3JvbGxiYXIsIHNjcm9sbGJhclBh
aW50ZXIpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVucmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgZ1Njcm9sbGJhcnMtPnJlbW92
ZShzY3JvbGxiYXIpOwotICAgIGlmIChnU2Nyb2xsYmFycy0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
IGRlbGV0ZSBnU2Nyb2xsYmFyczsKLSAgICAgICAgZ1Njcm9sbGJhcnMgPSAwOwotICAgIH0KKyAg
ICBzY3JvbGxiYXJNYXAoKS0+cmVtb3ZlKHNjcm9sbGJhcik7Cit9CisKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhciwgV0tTY3JvbGxiYXJQYWludGVyUmVmIG5ld1BhaW50ZXIpCit7CisgICAgc2Nyb2xs
YmFyTWFwKCktPnNldChzY3JvbGxiYXIsIG5ld1BhaW50ZXIpOworfQorCitXS1Njcm9sbGJhclBh
aW50ZXJSZWYgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICByZXR1cm4gc2Nyb2xsYmFyTWFwKCktPmdldChz
Y3JvbGxiYXIpLmdldCgpOwogfQogCiBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjKCkKQEAgLTE3OSw3ICsyMDIsMTggQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpwcmVmZXJlbmNlc0NoYW5nZWQoKQogCiBpbnQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYzo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNv
bnRyb2xTaXplKQogewotICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXpl
XTsKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHJl
dHVybiB3a1Njcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07Cit9CisKK2Jvb2wgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QKK3sK
KyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVy
biB3a1Njcm9sbGJhclBhaW50ZXJVc2VzT3ZlcmxheVNjcm9sbGVycygpOworICAgIGVsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBkb3VibGUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yzo6aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkKQEAgLTE5MSw3ICsyMjUsNyBAQCBkb3Vi
bGUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6YXV0b3Njcm9sbFRpbWVyRGVsYXkoKQogewog
ICAgIHJldHVybiBnQXV0b3Njcm9sbEJ1dHRvbkRlbGF5OwogfQotCisgICAgCiBTY3JvbGxiYXJC
dXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJ1dHRvbnNQbGFjZW1l
bnQoKSBjb25zdAogewogICAgIHJldHVybiBnQnV0dG9uUGxhY2VtZW50OwpAQCAtMTk5LDIwICsy
MzMsMjggQEAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjpidXR0b25zUGxhY2VtZW50KCkgY29uc3QKIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIHJldHVybiBz
Y3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIgPwotICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6Ci0gICAg
ICAgICAgICAgc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtz
Y3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV0pOworICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiBnQnV0dG9u
UGxhY2VtZW50ICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lCisgICAgICAgICAgICAgJiYgKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCisgICAgICAgICAgICAg
PyBzY3JvbGxiYXItPndpZHRoKCkKKyAgICAgICAgICAgICA6IHNjcm9sbGJhci0+aGVpZ2h0KCkp
ID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNC
dXR0b25IaXRJbnNldFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAogYm9vbCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsK
LSAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8KLSAgICAgICAgICAgICBzY3JvbGxiYXItPndp
ZHRoKCkgOgotICAgICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiBjQnV0dG9u
SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSArIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxi
YXItPmNvbnRyb2xTaXplKCldICsgMTsKKyAgICBpbnQgbWluTGVuZ3RoRm9yVGh1bWI7CisgICAg
aWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICBtaW5MZW5ndGhG
b3JUaHVtYiA9IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVlZGVkRm9yVGh1bWIoc2Ny
b2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1p
bkxlbmd0aEZvclRodW1iID0gMiAqIGNCdXR0b25JbnNldFtzY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCldICsgY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyAxOworICAg
IHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKKyAgICAgICAgICAgICBzY3JvbGxiYXItPndpZHRo
KCkgOiAKKyAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSBtaW5MZW5ndGhGb3JU
aHVtYjsKIH0KIAogc3RhdGljIEludFJlY3QgYnV0dG9uUmVwYWludFJlY3QoY29uc3QgSW50UmVj
dCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJh
ckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHN0YXJ0KQogeworICAgIEFTU0VSVChnQnV0
dG9uUGxhY2VtZW50ICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lKTsKKwogICAgIEludFJlY3QgcGFp
bnRSZWN0KGJ1dHRvblJlY3QpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyKSB7CiAgICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChjUmVhbEJ1dHRvbkxlbmd0aFtj
b250cm9sU2l6ZV0pOwpAQCAtMjMwLDEzICsyNzIsMTMgQEAgc3RhdGljIEludFJlY3QgYnV0dG9u
UmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRp
b24KIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsK
ICAgICBJbnRSZWN0IHJlc3VsdDsKLQorICAgIAogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25T
dGFydFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zTm9uZSB8
fCBidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0KKyAgICAKICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5k
UGFydCAmJiAoYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNOb25lIHx8IGJ1
dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlU3RhcnQgfHwgYnV0dG9u
c1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNTaW5nbGUpKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwotCisgICAgICAgIAogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25l
c3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKICAgICBib29sIG91dGVyQnV0dG9uID0gcGFy
dCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xs
YmFyQnV0dG9uc0RvdWJsZVN0YXJ0IHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJC
dXR0b25zRG91YmxlQm90aCk7CiAgICAgaWYgKG91dGVyQnV0dG9uKSB7CkBAIC0yNDYsNyArMjg4
LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICAgICAgICAgIHJlc3VsdCA9IEludFJl
Y3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLCB0aGlja25lc3MsIGNPdXRlckJ1dHRv
bkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldICsgcGFpbnRpbmcgPyBjT3V0ZXJCdXR0
b25PdmVybGFwIDogMCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotCisgICAgCiAg
ICAgLy8gT3VyIHJlcGFpbnQgcmVjdCBpcyBzbGlnaHRseSBsYXJnZXIsIHNpbmNlIHdlIGFyZSBh
IGJ1dHRvbiB0aGF0IGlzIGFkamFjZW50IHRvIHRoZSB0cmFjay4KICAgICBpZiAoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IHN0
YXJ0ID0gcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ID8gc2Nyb2xsYmFyLT54KCkgOiBzY3Jv
bGxiYXItPngoKSArIHNjcm9sbGJhci0+d2lkdGgoKSAtIGNPdXRlckJ1dHRvbkxlbmd0aFtzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCldOwpAQCAtMjU1LDcgKzI5Nyw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAg
ICAgIGludCBzdGFydCA9IHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCA/IHNjcm9sbGJhci0+
eSgpIDogc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gY091dGVyQnV0dG9u
TGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJh
ci0+Y29udHJvbFNpemUoKV07CiAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFyLT54
KCksIHN0YXJ0LCB0aGlja25lc3MsIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6
ZSgpXSk7CiAgICAgfQotCisgICAgCiAgICAgaWYgKHBhaW50aW5nKQogICAgICAgICByZXR1cm4g
YnV0dG9uUmVwYWludFJlY3QocmVzdWx0LCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCksIHNjcm9s
bGJhci0+Y29udHJvbFNpemUoKSwgcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMjY0LDE3ICszMDYsMTcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmEKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKLQorICAgIAogICAgIGlmIChwYXJ0ID09IEZvcndhcmRC
dXR0b25FbmRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc05v
bmUgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVTdGFydCkp
CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KKyAgICAKICAgICBpZiAocGFydCA9PSBGb3J3YXJk
QnV0dG9uU3RhcnRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9u
c05vbmUgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVFbmQg
fHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNTaW5nbGUpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwotCisgICAgICAgIAogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxi
YXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKICAgICBpbnQgb3V0ZXJCdXR0
b25MZW5ndGggPSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsK
ICAgICBpbnQgYnV0dG9uTGVuZ3RoID0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCldOwotCisgICAgCiAgICAgYm9vbCBvdXRlckJ1dHRvbiA9IHBhcnQgPT0gRm9yd2FyZEJ1
dHRvbkVuZFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91
YmxlRW5kIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlQm90
aCk7CiAgICAgaWYgKG91dGVyQnV0dG9uKSB7CiAgICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtMjg4LDcgKzMzMCw3IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIFNjcm9sCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9Ci0KKyAgICAKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBGb3J3YXJkQnV0
dG9uRW5kUGFydCA/IHNjcm9sbGJhci0+eCgpICsgc2Nyb2xsYmFyLT53aWR0aCgpIC0gYnV0dG9u
TGVuZ3RoIDogc2Nyb2xsYmFyLT54KCkgKyBvdXRlckJ1dHRvbkxlbmd0aDsKICAgICAgICAgcmVz
dWx0ID0gSW50UmVjdChzdGFydCwgc2Nyb2xsYmFyLT55KCksIGJ1dHRvbkxlbmd0aCwgdGhpY2tu
ZXNzKTsKQEAgLTMwNSw3ICszNDcsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZwogewogICAg
IGlmIChwYWludGluZyB8fCAhaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4g
c2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKLQorICAgIAogICAgIEludFJlY3QgcmVzdWx0OwogICAg
IGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6
ZSgpKTsKICAgICBpbnQgc3RhcnRXaWR0aCA9IDA7CkBAIC0zMzEsNyArMzczLDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGJvb2wgcGFpbnRpbmcKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KLQorICAgIAogICAgIGludCB0b3RhbFdpZHRoID0gc3RhcnRXaWR0aCArIGVuZFdpZHRo
OwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikKICAgICAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCkgKyBzdGFydFdpZHRoLCBz
Y3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpIC0gdG90YWxXaWR0aCwgdGhpY2tuZXNz
KTsKQEAgLTM0MCw3ICszODIsMTAgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcKIAogaW50IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNj
cm9sbGJhcikKIHsKLSAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJv
bFNpemUoKV07CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAg
ICAgICByZXR1cm4gd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgoc2Nyb2xsYmFyTWFwKCkt
PmdldChzY3JvbGxiYXIpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBjVGh1bWJN
aW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAogYm9vbCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZ0KQpAQCAtMzUyLDYgKzM5NywxMSBAQCBib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1NbwogICAgIHJldHVybiBldnQuYWx0S2V5KCk7CiB9CiAKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4gZXZl
bnQuYWx0S2V5KCk7Cit9CisKIHN0YXRpYyBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3Rh
dGUoU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIHN3aXRjaCAocGFydCkgewpAQCAtMzcwLDYg
KzQyMCwxOCBAQCBzdGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9s
bGJhclBhcnQgcGFydCkKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUgd2tTY3JvbGxlcktub2JT
dHlsZSB0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHN0
eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlT
dHlsZURhcms6CisgICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlRGFyazsKKyAgICBj
YXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OgorICAgICAgICByZXR1cm4gd2tTY3JvbGxl
cktub2JTdHlsZUxpZ2h0OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB3a1Njcm9sbGVy
S25vYlN0eWxlRGVmYXVsdDsKKyAgICB9Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUJyaWRnZTo6VGhl
bWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xs
YmFyKSB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFBs
YXRmb3JtQnJpZGdlOjpTdGF0ZURpc2FibGVkOwpAQCAtMzgzLDYgKzQ0NSw0NiBAQCBzdGF0aWMg
UGxhdGZvcm1CcmlkZ2U6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0
ZShTY3JvbGxiYXIqIHNjcgogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpCiB7CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWls
YWJsZSgpKSB7CisgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKKyAgICAgICAgZmxvYXQgb3Zlcmhh
bmcgPSAwOworCisgICAgICAgIGlmIChzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA8IDApIHsKKyAg
ICAgICAgICAgIC8vIFNjcm9sbGVkIHBhc3QgdGhlIHRvcC4KKyAgICAgICAgICAgIHZhbHVlID0g
MDsKKyAgICAgICAgICAgIG92ZXJoYW5nID0gLXNjcm9sbGJhci0+Y3VycmVudFBvcygpOworICAg
ICAgICB9IGVsc2UgaWYgKHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSArIHNjcm9sbGJhci0+Y3Vy
cmVudFBvcygpID4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSkgeworICAgICAgICAgICAgLy8gU2Ny
b2xsZWQgcGFzdCB0aGUgYm90dG9tLgorICAgICAgICAgICAgdmFsdWUgPSAxOworICAgICAgICAg
ICAgb3ZlcmhhbmcgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlzaWJs
ZVNpemUoKSAtIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBXaXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgc2Nyb2xsYWJsZSBhcmVhLgorICAg
ICAgICAgICAgaW50IG1heGltdW0gPSBzY3JvbGxiYXItPm1heGltdW0oKTsKKyAgICAgICAgICAg
IGlmIChtYXhpbXVtID4gMCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjcm9sbGJhci0+Y3Vy
cmVudFBvcygpIC8gbWF4aW11bTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNjcm9sbEFuaW1hdG9yTWFj
KiBzY3JvbGxBbmltYXRvciA9IHN0YXRpY19jYXN0PFNjcm9sbEFuaW1hdG9yTWFjKj4oc2Nyb2xs
YmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxBbmltYXRvcigpKTsKKyAgICAgICAgc2Nyb2xs
QW5pbWF0b3ItPnNldElzRHJhd2luZ0ludG9MYXllcihjb250ZXh0LT5pc0NBTGF5ZXJDb250ZXh0
KCkpOworCisgICAgICAgIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShwYWludGVyRm9y
U2Nyb2xsYmFyKHNjcm9sbGJhciksIHRvU2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShzY3JvbGxi
YXItPnNjcm9sbGFibGVBcmVhKCktPnJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkp
KTsKKyAgICAgICAgCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPmNsaXAoZGFtYWdlUmVjdCk7CisgICAgICAg
IGNvbnRleHQtPnRyYW5zbGF0ZShzY3JvbGxiYXItPmZyYW1lUmVjdCgpLngoKSwgc2Nyb2xsYmFy
LT5mcmFtZVJlY3QoKS55KCkpOworICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQg
bG9jYWxDb250ZXh0KGNvbnRleHQpOworICAgICAgICB3a1Njcm9sbGJhclBhaW50ZXJQYWludChz
Y3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNjcm9sbGJhci0+ZW5hYmxlZCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRp
Y19jYXN0PENHRmxvYXQ+KHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSkgLSBvdmVyaGFuZykgLyBz
Y3JvbGxiYXItPnRvdGFsU2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
Y3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKKworICAgICAgICBzY3JvbGxBbmltYXRvci0+c2V0SXNE
cmF3aW5nSW50b0xheWVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAg
ICAgSElUaGVtZVRyYWNrRHJhd0luZm8gdHJhY2tJbmZvOwogICAgIHRyYWNrSW5mby52ZXJzaW9u
ID0gMDsKICAgICB0cmFja0luZm8ua2luZCA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBS
ZWd1bGFyU2Nyb2xsYmFyID8ga1RoZW1lTWVkaXVtU2Nyb2xsQmFyIDoga1RoZW1lU21hbGxTY3Jv
bGxCYXI7CkBAIC00ODYsNCArNTg4LDMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KIH0KIAog
fQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91739</attachid>
            <date>2011-04-29 14:18:28 -0700</date>
            <delta_ts>2011-05-24 14:46:49 -0700</delta_ts>
            <desc>Fixed style errors</desc>
            <filename>scrollbar_theme_2.patch</filename>
            <type>text/plain</type>
            <size>20014</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE1ZDA0MzguLjY0YjYwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDExLTA0LTI1ICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hyb21pdW0gTWFjOiBFbmFibGUgb3ZlcmxheSBzY3JvbGxiYXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc1NgorICAg
ICAgICAKKyAgICAgICAgRW5hYmxlIFdURl9VU0VfV0tfU0NST0xMQkFSX1BBSU5URVIsIEVOQUJM
RV9HRVNUVVJFX0VWRU5UUywgYW5kIEVOQUJMRV9SVUJCRVJfQkFORElORyBmb3IgTWFjIENocm9t
aXVtLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKworMjAxMS0wNC0yNSAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgogCiAgICAgICAgIE5peGVkIHNwZWNpYWwgZmluYWxpemVyIGhhbmRsaW5n
IGZvciBXZWJDb3JlIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRl
eCA3NjM5YjE1Li5kMGY5ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBA
IC02NDQsNiArNjQ0LDEwIEBACiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogI2RlZmluZSBXVEZfVVNF
X1BUSFJFQURTIDEKICNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCisKKyNkZWZpbmUgRU5B
QkxFX0dFU1RVUkVfRVZFTlRTIDEKKyNkZWZpbmUgRU5BQkxFX1JVQkJFUl9CQU5ESU5HIDEKKyNk
ZWZpbmUgV1RGX1VTRV9XS19TQ1JPTExCQVJfUEFJTlRFUiAxCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEJSRVdNUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZWRkNGY4Li42MGY3NDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsMzggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBDaHJvbWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAg
U3luYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tLy5oIHdpdGggU2Nyb2xsYmFyVGhlbWVN
YWMubW0gdG8gcGljayB1cCBzdXBwb3J0IGZvciBvdmVybGF5IHNjcm9sbGJhcnMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGlzIGNvZGUgaXMgb25seSBlbmFibGVkIG9uIGZ1dHVy
ZSB2ZXJzaW9ucyBvZiBNYWMgT1MgWC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsYmFy
TWFwKToKKyAgICAgICAgKCtbU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciBhcHBlYXJhbmNlUHJlZnND
aGFuZ2VkOl0pOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlQXJyb3dQbGFjZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cmVnaXN0ZXJTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dW5yZWdp
c3RlclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50ZXJGb3JTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6c2Nyb2xsYmFyVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVzZXNPdmVybGF5U2Ny
b2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpo
YXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1dHRvblJlcGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJhY2tCdXR0b25SZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmZvcndhcmRCdXR0
b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnRy
YWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpt
aW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKToKKworMjAxMS0wNC0yOCAgU2FpbGVz
aCBBZ3Jhd2FsICA8c2FpbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKICAgICAgICAgQ2hyb21pdW0gTWFjOiBVc2UgU2Nyb2xsQW5pbWF0b3JN
YWMubW0gZm9yIG92ZXJsYXkgc2Nyb2xsYmFyIHN1cHBvcnQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzUzCiAKQEAgLTEwLDggKzQyLDYgQEAKICAg
ICAgICAgTm8gbmV3IHRlc3RzLiBKdXN0IGluY2x1ZGluZyBhbiBleGlzdGluZyBjbGFzcyBpbnRv
IENocm9taXVtIE1hYy4KIAogICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCi0gICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCi0gICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6Y3JlYXRlKToKICAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW0KICAgICAgICAgKFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KToK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4IDFhYjJmMTguLjFiMTMzZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hY19oCiAjZGVmaW5lIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWNfaAogCisj
aW5jbHVkZSAiU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hYy5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmgiCiAKIC8vIFRoaXMgZmlsZSAoYW5kIGl0cyBhc3NvY2lhdGVk
IC5tbSBmaWxlKSBpcyBhIGNsb25lIG9mIFNjcm9sbGJhclRoZW1lTWFjLmguCkBAIC00NCw2ICs0
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGRvdWJs
ZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRv
c2Nyb2xsVGltZXJEZWxheSgpOwpAQCAtNTMsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogCisgICAgdm9pZCBzZXROZXdQYWludGVy
Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciosIFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CisgICAgV0tT
Y3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKICAgICB2
aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CkBAIC02NCw2ICs2OSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50
SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAK
IHB1YmxpYzoKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWMubW0KaW5kZXggYjBiYTk1ZC4uNDA5NGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
Lm1tCkBAIC0yOSw4ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VF
dmVudC5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yTWFjLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
Vmlldy5oIgogI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CkBAIC01MCwxOCArNTIsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAv
LyAtIFRoZSBjbGFzc25hbWUgY2hhbmdlIGZyb20gU2Nyb2xsYmFyVGhlbWVNYWMgdG8gU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy4KIC8vIC0gSW4gcGFpbnQoKSB0aGUgY29kZSB0byBwYWludCB0
aGUgdHJhY2ssIHRpY2ttYXJrcywgYW5kIHRodW1iIHNlcGFyYXRlbHkuCiAvLyAtIEluIHBhaW50
KCkgdGhlIHRodW1iIGlzIGRyYXduIHZpYSBDaHJvbWVCcmlkZ2UvV2ViVGhlbWVFbmdpbmUuCisv
LyAtIFZhcmlvdXMgZnVuY3Rpb25zIHRoYXQgd2VyZSBzcGxpdCB1c2luZyAjaWYgVVNFKFdLX1ND
Uk9MTEJBUl9QQUlOVEVSKQorLy8gICBoYXZlIGJlZW4gY29tYmluZWQgdXNpbmcgcnVudGltZSBj
aGVja3MgaW5zdGVhZC4KIC8vCiAvLyBGb3IgYWxsIG90aGVyIGRpZmZlcmVuY2VzLCBpZiBpdCB3
YXMgaW50cm9kdWNlZCBpbiB0aGlzIGZpbGUsIHRoZW4gdGhlCiAvLyBtYWludGFpbmVyIGZvcmdv
dCB0byBpbmNsdWRlIGl0IGluIHRoZSBsaXN0OyBvdGhlcndpc2UgaXQgaXMgYW4gdXBkYXRlIHRo
YXQKIC8vIHNob3VsZCBoYXZlIGJlZW4gYXBwbGllZCB0byB0aGlzIGZpbGUgYnV0IHdhcyBub3Qu
CiAKLXN0YXRpYyBIYXNoU2V0PFNjcm9sbGJhcio+KiBnU2Nyb2xsYmFyczsKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQGludGVyZmFjZSBTY3JvbGxiYXJQcmVmc09ic2VydmVyIDogTlNPYmplY3QK
K3R5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXIqLCBSZXRhaW5QdHI8V0tTY3JvbGxiYXJQYWludGVy
UmVmPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7CisKK3N0YXRpYyBTY3JvbGxiYXJQYWludGVyTWFw
KiBzY3JvbGxiYXJNYXAoKQogeworICAgIHN0YXRpYyBTY3JvbGxiYXJQYWludGVyTWFwKiBtYXAg
PSBuZXcgU2Nyb2xsYmFyUGFpbnRlck1hcDsKKyAgICByZXR1cm4gbWFwOworfQogCiB9CiAKK0Bp
bnRlcmZhY2UgU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciA6IE5TT2JqZWN0Cit7Cit9CisKICsgKHZv
aWQpcmVnaXN0ZXJBc09ic2VydmVyOwogKyAodm9pZClhcHBlYXJhbmNlUHJlZnNDaGFuZ2VkOihO
U05vdGlmaWNhdGlvbiopdGhlTm90aWZpY2F0aW9uOwogKyAodm9pZCliZWhhdmlvclByZWZzQ2hh
bmdlZDooTlNOb3RpZmljYXRpb24qKXRoZU5vdGlmaWNhdGlvbjsKQEAgLTc1LDEyICs4OCwxMiBA
QCBzdGF0aWMgSGFzaFNldDxTY3JvbGxiYXIqPiogZ1Njcm9sbGJhcnM7CiAgICAgVU5VU0VEX1BB
UkFNKHVudXNlZE5vdGlmaWNhdGlvbik7CiAKICAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjKj4oU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wcmVmZXJlbmNl
c0NoYW5nZWQoKTsKLSAgICBpZiAoIWdTY3JvbGxiYXJzKQorICAgIGlmIChzY3JvbGxiYXJNYXAo
KS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgSGFzaFNldDxTY3JvbGxiYXIqPjo6
aXRlcmF0b3IgZW5kID0gZ1Njcm9sbGJhcnMtPmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTY3Jv
bGxiYXIqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICgqaXQpLT5zdHlsZUNoYW5nZWQoKTsKLSAgICAgICAgKCppdCktPmlu
dmFsaWRhdGUoKTsKKyAgICBTY3JvbGxiYXJQYWludGVyTWFwOjppdGVyYXRvciBlbmQgPSBzY3Jv
bGxiYXJNYXAoKS0+ZW5kKCk7CisgICAgZm9yIChTY3JvbGxiYXJQYWludGVyTWFwOjppdGVyYXRv
ciBpdCA9IHNjcm9sbGJhck1hcCgpLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgaXQtPmZpcnN0LT5zdHlsZUNoYW5nZWQoKTsKKyAgICAgICAgaXQtPmZpcnN0LT5pbnZhbGlk
YXRlKCk7CiAgICAgfQogfQogCkBAIC0xMzMsMjQgKzE0NiwzNCBAQCBzdGF0aWMgdm9pZCB1cGRh
dGVBcnJvd1BsYWNlbWVudCgpCiAgICAgICAgIGdCdXR0b25QbGFjZW1lbnQgPSBTY3JvbGxiYXJC
dXR0b25zRG91YmxlU3RhcnQ7CiAgICAgZWxzZSBpZiAoW2J1dHRvblBsYWNlbWVudCBpc0VxdWFs
VG9TdHJpbmc6QCJEb3VibGVCb3RoIl0pCiAgICAgICAgIGdCdXR0b25QbGFjZW1lbnQgPSBTY3Jv
bGxiYXJCdXR0b25zRG91YmxlQm90aDsKLSAgICBlbHNlCi0gICAgICAgIGdCdXR0b25QbGFjZW1l
bnQgPSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOyAvLyBUaGUgZGVmYXVsdCBpcyBTY3JvbGxi
YXJCdXR0b25zRG91YmxlRW5kLgorICAgIGVsc2UgeworICAgICAgICBpZiAoaXNTY3JvbGxiYXJP
dmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgICAgICBnQnV0dG9uUGxhY2VtZW50ID0gU2Ny
b2xsYmFyQnV0dG9uc05vbmU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdCdXR0b25QbGFj
ZW1lbnQgPSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOworICAgIH0KIH0KIAogdm9pZCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKIHsKLSAgICBpZiAoIWdTY3JvbGxiYXJzKQotICAgICAgICBnU2Nyb2xsYmFycyA9IG5l
dyBIYXNoU2V0PFNjcm9sbGJhcio+OwotICAgIGdTY3JvbGxiYXJzLT5hZGQoc2Nyb2xsYmFyKTsK
KyAgICBib29sIGlzSG9yaXpvbnRhbCA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyOworICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBzY3JvbGxiYXJQYWlu
dGVyID0gd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihzY3JvbGxiYXItPmNvbnRyb2xTaXplKCksIGlz
SG9yaXpvbnRhbCk7CisgICAgc2Nyb2xsYmFyTWFwKCktPmFkZChzY3JvbGxiYXIsIHNjcm9sbGJh
clBhaW50ZXIpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVucmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgZ1Njcm9sbGJhcnMtPnJl
bW92ZShzY3JvbGxiYXIpOwotICAgIGlmIChnU2Nyb2xsYmFycy0+aXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGRlbGV0ZSBnU2Nyb2xsYmFyczsKLSAgICAgICAgZ1Njcm9sbGJhcnMgPSAwOwotICAgIH0K
KyAgICBzY3JvbGxiYXJNYXAoKS0+cmVtb3ZlKHNjcm9sbGJhcik7Cit9CisKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhciwgV0tTY3JvbGxiYXJQYWludGVyUmVmIG5ld1BhaW50ZXIpCit7CisgICAgc2Ny
b2xsYmFyTWFwKCktPnNldChzY3JvbGxiYXIsIG5ld1BhaW50ZXIpOworfQorCitXS1Njcm9sbGJh
clBhaW50ZXJSZWYgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRlckZvclNjcm9sbGJh
cihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICByZXR1cm4gc2Nyb2xsYmFyTWFwKCktPmdl
dChzY3JvbGxiYXIpLmdldCgpOwogfQogCiBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjKCkKQEAgLTE3OSw3ICsyMDIsMTggQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjOjpwcmVmZXJlbmNlc0NoYW5nZWQoKQogCiBpbnQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXpl
IGNvbnRyb2xTaXplKQogewotICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xT
aXplXTsKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAg
IHJldHVybiB3a1Njcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07Cit9CisKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QK
K3sKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHJl
dHVybiB3a1Njcm9sbGJhclBhaW50ZXJVc2VzT3ZlcmxheVNjcm9sbGVycygpOworICAgIGVsc2UK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBkb3VibGUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkKQEAgLTE5MSw3ICsyMjUsNyBAQCBk
b3VibGUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6YXV0b3Njcm9sbFRpbWVyRGVsYXkoKQog
ewogICAgIHJldHVybiBnQXV0b3Njcm9sbEJ1dHRvbkRlbGF5OwogfQotCisgICAgCiBTY3JvbGxi
YXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJ1dHRvbnNQbGFj
ZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBnQnV0dG9uUGxhY2VtZW50OwpAQCAtMTk5LDIw
ICsyMzMsMjggQEAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjOjpidXR0b25zUGxhY2VtZW50KCkgY29uc3QKIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIHJldHVy
biBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPwotICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6Ci0g
ICAgICAgICAgICAgc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0
aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV0pOworICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiBnQnV0
dG9uUGxhY2VtZW50ICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lCisgICAgICAgICAgICAgJiYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCisgICAgICAgICAg
ICAgPyBzY3JvbGxiYXItPndpZHRoKCkKKyAgICAgICAgICAgICA6IHNjcm9sbGJhci0+aGVpZ2h0
KCkpID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAt
IGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAogYm9vbCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
IHsKLSAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8KLSAgICAgICAgICAgICBzY3JvbGxiYXIt
PndpZHRoKCkgOgotICAgICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiBjQnV0
dG9uSW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSArIGNUaHVtYk1pbkxlbmd0aFtzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCldICsgMTsKKyAgICBpbnQgbWluTGVuZ3RoRm9yVGh1bWI7Cisg
ICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICBtaW5MZW5n
dGhGb3JUaHVtYiA9IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVlZGVkRm9yVGh1bWIo
c2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAg
IG1pbkxlbmd0aEZvclRodW1iID0gMiAqIGNCdXR0b25JbnNldFtzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCldICsgY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyAxOwor
ICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKKyAgICAgICAgICAgICBzY3JvbGxiYXItPndp
ZHRoKCkgOiAKKyAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSBtaW5MZW5ndGhG
b3JUaHVtYjsKIH0KIAogc3RhdGljIEludFJlY3QgYnV0dG9uUmVwYWludFJlY3QoY29uc3QgSW50
UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHN0YXJ0KQogeworICAgIEFTU0VSVChn
QnV0dG9uUGxhY2VtZW50ICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lKTsKKwogICAgIEludFJlY3Qg
cGFpbnRSZWN0KGJ1dHRvblJlY3QpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CiAgICAgICAgIHBhaW50UmVjdC5zZXRXaWR0aChjUmVhbEJ1dHRvbkxlbmd0
aFtjb250cm9sU2l6ZV0pOwpAQCAtMjMwLDEzICsyNzIsMTMgQEAgc3RhdGljIEludFJlY3QgYnV0
dG9uUmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50
YXRpb24KIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6YmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKLQorICAgIAogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0
b25TdGFydFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zTm9u
ZSB8fCBidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0KKyAgICAKICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9u
RW5kUGFydCAmJiAoYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNOb25lIHx8
IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlU3RhcnQgfHwgYnV0
dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNTaW5nbGUpKQogICAgICAgICByZXR1
cm4gcmVzdWx0OwotCisgICAgICAgIAogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlj
a25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKICAgICBib29sIG91dGVyQnV0dG9uID0g
cGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Ny
b2xsYmFyQnV0dG9uc0RvdWJsZVN0YXJ0IHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxi
YXJCdXR0b25zRG91YmxlQm90aCk7CiAgICAgaWYgKG91dGVyQnV0dG9uKSB7CkBAIC0yNDYsNyAr
Mjg4LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICAgICAgICAgIHJlc3VsdCA9IElu
dFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLCB0aGlja25lc3MsIGNPdXRlckJ1
dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldICsgcGFpbnRpbmcgPyBjT3V0ZXJC
dXR0b25PdmVybGFwIDogMCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotCisgICAg
CiAgICAgLy8gT3VyIHJlcGFpbnQgcmVjdCBpcyBzbGlnaHRseSBsYXJnZXIsIHNpbmNlIHdlIGFy
ZSBhIGJ1dHRvbiB0aGF0IGlzIGFkamFjZW50IHRvIHRoZSB0cmFjay4KICAgICBpZiAoc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50
IHN0YXJ0ID0gcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0ID8gc2Nyb2xsYmFyLT54KCkgOiBz
Y3JvbGxiYXItPngoKSArIHNjcm9sbGJhci0+d2lkdGgoKSAtIGNPdXRlckJ1dHRvbkxlbmd0aFtz
Y3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCldOwpAQCAtMjU1LDcgKzI5Nyw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAg
ICAgICAgIGludCBzdGFydCA9IHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCA/IHNjcm9sbGJh
ci0+eSgpIDogc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gY091dGVyQnV0
dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uTGVuZ3RoW3Njcm9s
bGJhci0+Y29udHJvbFNpemUoKV07CiAgICAgICAgIHJlc3VsdCA9IEludFJlY3Qoc2Nyb2xsYmFy
LT54KCksIHN0YXJ0LCB0aGlja25lc3MsIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpXSk7CiAgICAgfQotCisgICAgCiAgICAgaWYgKHBhaW50aW5nKQogICAgICAgICByZXR1
cm4gYnV0dG9uUmVwYWludFJlY3QocmVzdWx0LCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCksIHNj
cm9sbGJhci0+Y29udHJvbFNpemUoKSwgcGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtMjY0LDE3ICszMDYsMTcgQEAgSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmEKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6Zm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGlu
ZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKLQorICAgIAogICAgIGlmIChwYXJ0ID09IEZvcndh
cmRCdXR0b25FbmRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0dG9u
c05vbmUgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVTdGFy
dCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KKyAgICAKICAgICBpZiAocGFydCA9PSBGb3J3
YXJkQnV0dG9uU3RhcnRQYXJ0ICYmIChidXR0b25zUGxhY2VtZW50KCkgPT0gU2Nyb2xsYmFyQnV0
dG9uc05vbmUgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVF
bmQgfHwgYnV0dG9uc1BsYWNlbWVudCgpID09IFNjcm9sbGJhckJ1dHRvbnNTaW5nbGUpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCisgICAgICAgIAogICAgIGludCB0aGlja25lc3MgPSBzY3Jv
bGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKICAgICBpbnQgb3V0ZXJC
dXR0b25MZW5ndGggPSBjT3V0ZXJCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgp
XTsKICAgICBpbnQgYnV0dG9uTGVuZ3RoID0gY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCldOwotCisgICAgCiAgICAgYm9vbCBvdXRlckJ1dHRvbiA9IHBhcnQgPT0gRm9yd2Fy
ZEJ1dHRvbkVuZFBhcnQgJiYgKGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25z
RG91YmxlRW5kIHx8IGJ1dHRvbnNQbGFjZW1lbnQoKSA9PSBTY3JvbGxiYXJCdXR0b25zRG91Ymxl
Qm90aCk7CiAgICAgaWYgKG91dGVyQnV0dG9uKSB7CiAgICAgICAgIGlmIChzY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtMjg4LDcgKzMzMCw3IEBA
IEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9Ci0KKyAgICAKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gcGFydCA9PSBGb3J3YXJk
QnV0dG9uRW5kUGFydCA/IHNjcm9sbGJhci0+eCgpICsgc2Nyb2xsYmFyLT53aWR0aCgpIC0gYnV0
dG9uTGVuZ3RoIDogc2Nyb2xsYmFyLT54KCkgKyBvdXRlckJ1dHRvbkxlbmd0aDsKICAgICAgICAg
cmVzdWx0ID0gSW50UmVjdChzdGFydCwgc2Nyb2xsYmFyLT55KCksIGJ1dHRvbkxlbmd0aCwgdGhp
Y2tuZXNzKTsKQEAgLTMwNSw3ICszNDcsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZwogewog
ICAgIGlmIChwYWludGluZyB8fCAhaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1
cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKLQorICAgIAogICAgIEludFJlY3QgcmVzdWx0Owog
ICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpKTsKICAgICBpbnQgc3RhcnRXaWR0aCA9IDA7CkBAIC0zMzEsNyArMzczLDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGJvb2wgcGFpbnRpbmcKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KLQorICAgIAogICAgIGludCB0b3RhbFdpZHRoID0gc3RhcnRXaWR0aCArIGVuZFdp
ZHRoOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikKICAgICAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCkgKyBzdGFydFdpZHRo
LCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpIC0gdG90YWxXaWR0aCwgdGhpY2tu
ZXNzKTsKQEAgLTM0MCw3ICszODIsMTAgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcKIAogaW50
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIq
IHNjcm9sbGJhcikKIHsKLSAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV07CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQor
ICAgICAgICByZXR1cm4gd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgoc2Nyb2xsYmFyTWFw
KCktPmdldChzY3JvbGxiYXIpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBjVGh1
bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAogYm9vbCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQpAQCAtMzUyLDYgKzM5NywxMSBAQCBib29sIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1NbwogICAgIHJldHVybiBldnQuYWx0S2V5KCk7CiB9CiAKK2Jvb2wgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Ny
b2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4g
ZXZlbnQuYWx0S2V5KCk7Cit9CisKIHN0YXRpYyBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2Vk
U3RhdGUoU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIHN3aXRjaCAocGFydCkgewpAQCAtMzcw
LDYgKzQyMCwxOCBAQCBzdGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNj
cm9sbGJhclBhcnQgcGFydCkKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUgd2tTY3JvbGxlcktu
b2JTdHlsZSB0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
IHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJs
YXlTdHlsZURhcms6CisgICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlRGFyazsKKyAg
ICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OgorICAgICAgICByZXR1cm4gd2tTY3Jv
bGxlcktub2JTdHlsZUxpZ2h0OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB3a1Njcm9s
bGVyS25vYlN0eWxlRGVmYXVsdDsKKyAgICB9Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUJyaWRnZTo6
VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Ny
b2xsYmFyKSB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IFBsYXRmb3JtQnJpZGdlOjpTdGF0ZURpc2FibGVkOwpAQCAtMzgzLDYgKzQ0NSw0NiBAQCBzdGF0
aWMgUGxhdGZvcm1CcmlkZ2U6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVT
dGF0ZShTY3JvbGxiYXIqIHNjcgogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBh
aW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2
YWlsYWJsZSgpKSB7CisgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKKyAgICAgICAgZmxvYXQgb3Zl
cmhhbmcgPSAwOworCisgICAgICAgIGlmIChzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA8IDApIHsK
KyAgICAgICAgICAgIC8vIFNjcm9sbGVkIHBhc3QgdGhlIHRvcC4KKyAgICAgICAgICAgIHZhbHVl
ID0gMDsKKyAgICAgICAgICAgIG92ZXJoYW5nID0gLXNjcm9sbGJhci0+Y3VycmVudFBvcygpOwor
ICAgICAgICB9IGVsc2UgaWYgKHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSArIHNjcm9sbGJhci0+
Y3VycmVudFBvcygpID4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSkgeworICAgICAgICAgICAgLy8g
U2Nyb2xsZWQgcGFzdCB0aGUgYm90dG9tLgorICAgICAgICAgICAgdmFsdWUgPSAxOworICAgICAg
ICAgICAgb3ZlcmhhbmcgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlz
aWJsZVNpemUoKSAtIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBXaXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgc2Nyb2xsYWJsZSBhcmVhLgor
ICAgICAgICAgICAgaW50IG1heGltdW0gPSBzY3JvbGxiYXItPm1heGltdW0oKTsKKyAgICAgICAg
ICAgIGlmIChtYXhpbXVtID4gMCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjcm9sbGJhci0+
Y3VycmVudFBvcygpIC8gbWF4aW11bTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNjcm9sbEFuaW1hdG9y
TWFjKiBzY3JvbGxBbmltYXRvciA9IHN0YXRpY19jYXN0PFNjcm9sbEFuaW1hdG9yTWFjKj4oc2Ny
b2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxBbmltYXRvcigpKTsKKyAgICAgICAgc2Ny
b2xsQW5pbWF0b3ItPnNldElzRHJhd2luZ0ludG9MYXllcihjb250ZXh0LT5pc0NBTGF5ZXJDb250
ZXh0KCkpOworCisgICAgICAgIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShwYWludGVy
Rm9yU2Nyb2xsYmFyKHNjcm9sbGJhciksIHRvU2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShzY3Jv
bGxiYXItPnNjcm9sbGFibGVBcmVhKCktPnJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KCkpKTsKKyAgICAgICAgCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPmNsaXAoZGFtYWdlUmVjdCk7CisgICAg
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzY3JvbGxiYXItPmZyYW1lUmVjdCgpLngoKSwgc2Nyb2xs
YmFyLT5mcmFtZVJlY3QoKS55KCkpOworICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOworICAgICAgICB3a1Njcm9sbGJhclBhaW50ZXJQYWlu
dChzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjcm9sbGJhci0+ZW5hYmxlZCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0
YXRpY19jYXN0PENHRmxvYXQ+KHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSkgLSBvdmVyaGFuZykg
LyBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKKworICAgICAgICBzY3JvbGxBbmltYXRvci0+c2V0
SXNEcmF3aW5nSW50b0xheWVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CiAgICAgSElUaGVtZVRyYWNrRHJhd0luZm8gdHJhY2tJbmZvOwogICAgIHRyYWNrSW5mby52ZXJz
aW9uID0gMDsKICAgICB0cmFja0luZm8ua2luZCA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9
PSBSZWd1bGFyU2Nyb2xsYmFyID8ga1RoZW1lTWVkaXVtU2Nyb2xsQmFyIDoga1RoZW1lU21hbGxT
Y3JvbGxCYXI7CkBAIC00ODYsNCArNTg4LDMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KIH0K
IAogfQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94692</attachid>
            <date>2011-05-24 14:46:53 -0700</date>
            <delta_ts>2011-06-08 12:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59756-20110524144652.patch</filename>
            <type>text/plain</type>
            <size>16717</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODcxNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUw
NTQ5ZDM5ZTA1MDMwN2I1YWE4MzY2MTRlNDU5NTFhM2ZiZmM2ZDEuLjJkNTQ3MWU2ZDlkY2Q5YzQ1
NjU0NzIxZDUwZjYyYWVlNzhlODI1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA1LTI0ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJv
bWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAgRW5hYmxlICBXVEZf
VVNFX1dLX1NDUk9MTEJBUl9QQUlOVEVSIGZvciBDaHJvbWl1bSBNYWMuIFRoaXMgYWxsb3dzIHVz
IHRvIHVzZSBvdmVybGF5IHNjcm9sbGJhcnMgb24gZnV0dXJlIHZlcnNpb25zIG9mIE1hYyBPUyBY
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDUtMjMgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDQ3ZTUyMDI2
YzkyNjBmMDQyNmMwNDk0NjdkN2QzYzgwYWQ1NTc0OTAuLjZmNTRiMTFmMzU1ZmIzMTNkZmMwNjQ4
ZTk5MTk1NDY0ZmU4NjRmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAg
LTY0MCw2ICs2NDAsOCBAQAogI2RlZmluZSBXVEZfVVNFX0NGIDEKICNkZWZpbmUgV1RGX1VTRV9Q
VEhSRUFEUyAxCiAjZGVmaW5lIEhBVkVfUFRIUkVBRF9SV0xPQ0sgMQorCisjZGVmaW5lIFdURl9V
U0VfV0tfU0NST0xMQkFSX1BBSU5URVIgMQogI2VuZGlmCiAKICNpZiBQTEFURk9STShCUkVXTVAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNDk0ZWU3NDc2OTdhNTE0ZGM1NjdjNjg1NTU2ZTAxMTZkMmNmMjkzMy4u
ZjAwMGRmY2RjZTA4YTFkZDI1YjYxNTBiYjMwYTEwNjVhZGM1YTIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDExLTA1LTI0ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aHJvbWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAgU3luYyBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLm1tLy5oIHdpdGggU2Nyb2xsYmFyVGhlbWVNYWMubW0gdG8g
cGljayB1cCBzdXBwb3J0IGZvciBvdmVybGF5IHNjcm9sbGJhcnMuIFRoZSBvbmx5IGNoYW5nZXMg
YXJlIHJlbmFtaW5nIFNjcm9sbGJhclRoZW1lTWFjIHRvIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMgYW5kIHVzaW5nIHJ1bnRpbWUgY2hlY2tzIGluc3RlYWQgb2YgI2lmZGVmJ3MuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGlzIGNvZGUgaXMgb25seSBlbmFibGVkIG9uIGZ1dHVy
ZSB2ZXJzaW9ucyBvZiBNYWMgT1MgWC4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwOkFkZGVkIEludFBvaW50TWFjLiBXaXRoIFdURl9VU0VfV0tfU0NST0xMQkFSX1BBSU5URVIg
ZW5hYmxlZCB3ZSBub3cgbmVlZCB0aGlzIGZvciBJbnRQb2ludCB0byBOU1BvaW50IGNvbnZlcnNp
b24uCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxiYXJNYXApOgorICAgICAgICAoK1tTY3Jv
bGxiYXJQcmVmc09ic2VydmVyIGFwcGVhcmFuY2VQcmVmc0NoYW5nZWQ6XSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVBcnJvd1BsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjOjpyZWdpc3RlclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNldE5ld1BhaW50ZXJGb3JT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
cGFpbnRlckZvclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjOjpzY3JvbGxiYXJUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6dXNlc092ZXJsYXlTY3JvbGxiYXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6aGFzVGh1bWIpOgorICAgICAgICAo
V2ViQ29yZTo6YnV0dG9uUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRo
dW1iKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludCk6CisKIDIw
MTEtMDUtMjMgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKaW5kZXggODMzNmE4M2IwZDVhOTQ4MGIxY2Y5OGZkMGI3OGFiN2M1Yzc1
YTU2Zi4uYmM0ZWViYmE3YWRjZGNmOGRiNWJkY2M5OWU5NTY1NDUyN2IyYmEwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTEzNjgsNiArMTM2OCw3IEBACiAgICAg
ICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0U2l6ZU1hY1xc
Lm1tJCddLAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
bHlwaFBhZ2VUcmVlTm9kZU1hY1xcLmNwcCQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjXFwubW0kJ10sCisgICAgICAg
ICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFBvaW50TWFjXFwubW0k
J10sCiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFJl
Y3RNYWNcXC5tbSQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9tYWMvQmxv
Y2tFeGNlcHRpb25zXFwubW0kJ10sCiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0v
bWFjL0tpbGxSaW5nTWFjXFwubW0kJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKaW5kZXggMWFi
MmYxOGJjMDI5NDU1ZjA1YjQxNTY0OTVjNDkxMmMwOTBjNzg1OC4uNmY2NDVlOGNmZTkzZDk0MDY1
MWVjMjMyNjk0YWE5ODczY2Q3NWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApAQCAtMjcs
NiArMjcsNyBAQAogI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjX2gKICNkZWZpbmUg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hY19oCiAKKyNpbmNsdWRlICJTY3JvbGxiYXJPdmVybGF5
VXRpbGl0aWVzQ2hyb21pdW1NYWMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZS5oIgogCiAvLyBUaGlzIGZpbGUgKGFuZCBpdHMgYXNzb2NpYXRlZCAubW0gZmlsZSkgaXMgYSBj
bG9uZSBvZiBTY3JvbGxiYXJUaGVtZU1hYy5oLgpAQCAtNDQsNiArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0g
UmVndWxhclNjcm9sbGJhcik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGlu
dHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5
U2Nyb2xsYmFycygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3Jv
bGxUaW1lckRlbGF5KCk7CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXko
KTsKQEAgLTUzLDYgKzU1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXIqKTsKIAorICAgIHZvaWQgc2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3Jv
bGxiYXIqLCBXS1Njcm9sbGJhclBhaW50ZXJSZWYpOworICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJl
ZiBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciopOworCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCBib29sIGhhc1Ro
dW1iKFNjcm9sbGJhciopOwpAQCAtNjQsNiArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOwogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiBwdWJsaWM6CiAgICAgdm9p
ZCBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IGIw
YmE5NWQ3OTQxOTc2MmM1MWFkYzBhZWUwZTI5OTQ4NDNkNjBmMmYuLmMzYzY4YjcxZTAzYTJmODM0
YzRiODllOTZlMWZlYTk3MTI1ZDlkZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAt
MjksMTAgKzI5LDEzIEBACiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50Lmgi
CisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5oIgogI2luY2x1ZGUgIlNjcm9s
bFZpZXcuaCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CiAKQEAgLTUwLDE4ICs1MywyOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IC8vIC0gVGhlIGNsYXNzbmFtZSBjaGFuZ2UgZnJvbSBTY3JvbGxiYXJUaGVtZU1hYyB0byBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLgogLy8gLSBJbiBwYWludCgpIHRoZSBjb2RlIHRvIHBhaW50
IHRoZSB0cmFjaywgdGlja21hcmtzLCBhbmQgdGh1bWIgc2VwYXJhdGVseS4KIC8vIC0gSW4gcGFp
bnQoKSB0aGUgdGh1bWIgaXMgZHJhd24gdmlhIENocm9tZUJyaWRnZS9XZWJUaGVtZUVuZ2luZS4K
Ky8vIC0gVmFyaW91cyBmdW5jdGlvbnMgdGhhdCB3ZXJlIHNwbGl0IHVzaW5nICNpZiBVU0UoV0tf
U0NST0xMQkFSX1BBSU5URVIpCisvLyAgIGhhdmUgYmVlbiBjb21iaW5lZCB1c2luZyBydW50aW1l
IGNoZWNrcyBpbnN0ZWFkLgogLy8KIC8vIEZvciBhbGwgb3RoZXIgZGlmZmVyZW5jZXMsIGlmIGl0
IHdhcyBpbnRyb2R1Y2VkIGluIHRoaXMgZmlsZSwgdGhlbiB0aGUKIC8vIG1haW50YWluZXIgZm9y
Z290IHRvIGluY2x1ZGUgaXQgaW4gdGhlIGxpc3Q7IG90aGVyd2lzZSBpdCBpcyBhbiB1cGRhdGUg
dGhhdAogLy8gc2hvdWxkIGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoaXMgZmlsZSBidXQgd2FzIG5v
dC4KIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOworbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1AaW50ZXJmYWNlIFNjcm9sbGJhclByZWZzT2JzZXJ2ZXIgOiBOU09iamVj
dAordHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJhciosIFJldGFpblB0cjxXS1Njcm9sbGJhclBhaW50
ZXJSZWY+ID4gU2Nyb2xsYmFyUGFpbnRlck1hcDsKKworc3RhdGljIFNjcm9sbGJhclBhaW50ZXJN
YXAqIHNjcm9sbGJhck1hcCgpCiB7CisgICAgc3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIG1h
cCA9IG5ldyBTY3JvbGxiYXJQYWludGVyTWFwOworICAgIHJldHVybiBtYXA7Cit9CiAKIH0KIAor
QGludGVyZmFjZSBTY3JvbGxiYXJQcmVmc09ic2VydmVyIDogTlNPYmplY3QKK3sKK30KKwogKyAo
dm9pZClyZWdpc3RlckFzT2JzZXJ2ZXI7CiArICh2b2lkKWFwcGVhcmFuY2VQcmVmc0NoYW5nZWQ6
KE5TTm90aWZpY2F0aW9uKil0aGVOb3RpZmljYXRpb247CiArICh2b2lkKWJlaGF2aW9yUHJlZnND
aGFuZ2VkOihOU05vdGlmaWNhdGlvbiopdGhlTm90aWZpY2F0aW9uOwpAQCAtNzUsMTIgKzg5LDEy
IEBAIHN0YXRpYyBIYXNoU2V0PFNjcm9sbGJhcio+KiBnU2Nyb2xsYmFyczsKICAgICBVTlVTRURf
UEFSQU0odW51c2VkTm90aWZpY2F0aW9uKTsKIAogICAgIHN0YXRpY19jYXN0PFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMqPihTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKSktPnByZWZlcmVu
Y2VzQ2hhbmdlZCgpOwotICAgIGlmICghZ1Njcm9sbGJhcnMpCisgICAgaWYgKHNjcm9sbGJhck1h
cCgpLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBIYXNoU2V0PFNjcm9sbGJhcio+
OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFycy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNj
cm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdTY3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgKCppdCktPnN0eWxlQ2hhbmdlZCgpOwotICAgICAgICAoKml0KS0+
aW52YWxpZGF0ZSgpOworICAgIFNjcm9sbGJhclBhaW50ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IHNj
cm9sbGJhck1hcCgpLT5lbmQoKTsKKyAgICBmb3IgKFNjcm9sbGJhclBhaW50ZXJNYXA6Oml0ZXJh
dG9yIGl0ID0gc2Nyb2xsYmFyTWFwKCktPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBpdC0+Zmlyc3QtPnN0eWxlQ2hhbmdlZCgpOworICAgICAgICBpdC0+Zmlyc3QtPmludmFs
aWRhdGUoKTsKICAgICB9CiB9CiAKQEAgLTEyMiwxMCArMTM2LDEzIEBAIHN0YXRpYyBpbnQgY091
dGVyQnV0dG9uT3ZlcmxhcCA9IDI7CiBzdGF0aWMgZmxvYXQgZ0luaXRpYWxCdXR0b25EZWxheSA9
IDAuNWY7CiBzdGF0aWMgZmxvYXQgZ0F1dG9zY3JvbGxCdXR0b25EZWxheSA9IDAuMDVmOwogc3Rh
dGljIGJvb2wgZ0p1bXBPblRyYWNrQ2xpY2sgPSBmYWxzZTsKLXN0YXRpYyBTY3JvbGxiYXJCdXR0
b25zUGxhY2VtZW50IGdCdXR0b25QbGFjZW1lbnQgPSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5k
Oworc3RhdGljIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgZ0J1dHRvblBsYWNlbWVudCA9IGlz
U2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpID8gU2Nyb2xsYmFyQnV0dG9uc05vbmUgOiBT
Y3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOwogCiBzdGF0aWMgdm9pZCB1cGRhdGVBcnJvd1BsYWNl
bWVudCgpCiB7CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAg
ICAgICByZXR1cm47CisKICAgICBOU1N0cmluZyAqYnV0dG9uUGxhY2VtZW50ID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAiQXBwbGVTY3JvbGxC
YXJWYXJpYW50Il07CiAgICAgaWYgKFtidXR0b25QbGFjZW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAi
U2luZ2xlIl0pCiAgICAgICAgIGdCdXR0b25QbGFjZW1lbnQgPSBTY3JvbGxiYXJCdXR0b25zU2lu
Z2xlOwpAQCAtMTM0LDIzICsxNTEsMjkgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1l
bnQoKQogICAgIGVsc2UgaWYgKFtidXR0b25QbGFjZW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAiRG91
YmxlQm90aCJdKQogICAgICAgICBnQnV0dG9uUGxhY2VtZW50ID0gU2Nyb2xsYmFyQnV0dG9uc0Rv
dWJsZUJvdGg7CiAgICAgZWxzZQotICAgICAgICBnQnV0dG9uUGxhY2VtZW50ID0gU2Nyb2xsYmFy
QnV0dG9uc0RvdWJsZUVuZDsgLy8gVGhlIGRlZmF1bHQgaXMgU2Nyb2xsYmFyQnV0dG9uc0RvdWJs
ZUVuZC4KKyAgICAgICAgZ0J1dHRvblBsYWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVF
bmQ7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgaWYgKCFnU2Nyb2xsYmFycykKLSAgICAg
ICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXIqPjsKLSAgICBnU2Nyb2xsYmFy
cy0+YWRkKHNjcm9sbGJhcik7CisgICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKKyAgICBXS1Njcm9sbGJhclBhaW50
ZXJSZWYgc2Nyb2xsYmFyUGFpbnRlciA9IHdrTWFrZVNjcm9sbGJhclBhaW50ZXIoc2Nyb2xsYmFy
LT5jb250cm9sU2l6ZSgpLCBpc0hvcml6b250YWwpOworICAgIHNjcm9sbGJhck1hcCgpLT5hZGQo
c2Nyb2xsYmFyLCBzY3JvbGxiYXJQYWludGVyKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewot
ICAgIGdTY3JvbGxiYXJzLT5yZW1vdmUoc2Nyb2xsYmFyKTsKLSAgICBpZiAoZ1Njcm9sbGJhcnMt
PmlzRW1wdHkoKSkgewotICAgICAgICBkZWxldGUgZ1Njcm9sbGJhcnM7Ci0gICAgICAgIGdTY3Jv
bGxiYXJzID0gMDsKLSAgICB9CisgICAgc2Nyb2xsYmFyTWFwKCktPnJlbW92ZShzY3JvbGxiYXIp
OworfQorCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNldE5ld1BhaW50ZXJGb3JT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBuZXdQ
YWludGVyKQoreworICAgIHNjcm9sbGJhck1hcCgpLT5zZXQoc2Nyb2xsYmFyLCBuZXdQYWludGVy
KTsKK30KKworV0tTY3JvbGxiYXJQYWludGVyUmVmIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit7CisgICAgcmV0dXJu
IHNjcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKTsKIH0KIAogU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYzo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpCkBAIC0xNzksNyArMjAy
LDE4IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cHJlZmVyZW5jZXNDaGFuZ2Vk
KCkKIAogaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNjcm9sbGJhclRoaWNrbmVzcyhT
Y3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKIHsKLSAgICByZXR1cm4gY1Njcm9sbGJh
clRoaWNrbmVzc1tjb250cm9sU2l6ZV07CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2
YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gd2tTY3JvbGxiYXJUaGlja25lc3MoY29udHJvbFNp
emUpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGNTY3JvbGxiYXJUaGlja25lc3NbY29udHJv
bFNpemVdOworfQorCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnVzZXNPdmVybGF5
U2Nyb2xsYmFycygpIGNvbnN0Cit7CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gd2tTY3JvbGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3Jv
bGxlcnMoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKIH0KIAogZG91YmxlIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpCkBA
IC0xOTksMjAgKzIzMywyOCBAQCBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OmJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdAogCiBib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0g
ICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/Ci0gICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0
aCgpIDoKLSAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSAyICogKGNSZWFsQnV0
dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CisgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgp
ICYmIGdCdXR0b25QbGFjZW1lbnQgIT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUKKyAgICAgICAgICAg
ICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIKKyAg
ICAgICAgICAgICA/IHNjcm9sbGJhci0+d2lkdGgoKQorICAgICAgICAgICAgIDogc2Nyb2xsYmFy
LT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOwogfQog
CiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Omhhc1RodW1iKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogeworICAgIGludCBtaW5MZW5ndGhGb3JUaHVtYjsKKyAgICBpZiAoaXNTY3JvbGxi
YXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIG1pbkxlbmd0aEZvclRodW1iID0gd2tT
Y3JvbGxiYXJNaW5pbXVtVG90YWxMZW5ndGhOZWVkZWRGb3JUaHVtYihzY3JvbGxiYXJNYXAoKS0+
Z2V0KHNjcm9sbGJhcikuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbWluTGVuZ3RoRm9yVGh1
bWIgPSAyICogY0J1dHRvbkluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyBjVGh1bWJN
aW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSArIDE7CiAgICAgcmV0dXJuIHNjcm9s
bGJhci0+ZW5hYmxlZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhciA/CiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDoKLSAgICAgICAg
ICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSAyICogY0J1dHRvbkluc2V0W3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV0gKyBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgp
XSArIDE7CisgICAgICAgICAgICAgc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gbWluTGVuZ3RoRm9y
VGh1bWI7CiB9CiAKIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJl
Y3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxi
YXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9vbCBzdGFydCkKIHsKKyAgICBBU1NFUlQoZ0J1
dHRvblBsYWNlbWVudCAhPSBTY3JvbGxiYXJCdXR0b25zTm9uZSk7CisKICAgICBJbnRSZWN0IHBh
aW50UmVjdChidXR0b25SZWN0KTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNj
cm9sbGJhcikgewogICAgICAgICBwYWludFJlY3Quc2V0V2lkdGgoY1JlYWxCdXR0b25MZW5ndGhb
Y29udHJvbFNpemVdKTsKQEAgLTM0MCw3ICszODIsMTAgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRp
bmcKIAogaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Om1pbmltdW1UaHVtYkxlbmd0aChT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKLSAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9s
bGJhci0+Y29udHJvbFNpemUoKV07CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgoc2Ny
b2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAogYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJh
ciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQpAQCAtMzUyLDYgKzM5NywxMSBAQCBi
b29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1NbwogICAgIHJldHVybiBldnQuYWx0S2V5KCk7CiB9CiAKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9m
VGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAg
ICByZXR1cm4gZXZlbnQuYWx0S2V5KCk7Cit9CisKIHN0YXRpYyBpbnQgc2Nyb2xsYmFyUGFydFRv
SElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIHN3aXRjaCAocGFydCkg
ewpAQCAtMzcwLDYgKzQyMCwxOCBAQCBzdGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3Nl
ZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUgd2tT
Y3JvbGxlcktub2JTdHlsZSB0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoU2Nyb2xsYmFyT3Zl
cmxheVN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFNjcm9s
bGJhck92ZXJsYXlTdHlsZURhcms6CisgICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxl
RGFyazsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OgorICAgICAgICByZXR1
cm4gd2tTY3JvbGxlcktub2JTdHlsZUxpZ2h0OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biB3a1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdDsKKyAgICB9Cit9CisKIHN0YXRpYyBQbGF0Zm9y
bUJyaWRnZTo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9s
bGJhciogc2Nyb2xsYmFyKSB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtQnJpZGdlOjpTdGF0ZURpc2FibGVkOwpAQCAtMzgzLDYgKzQ0NSw0
NiBAQCBzdGF0aWMgUGxhdGZvcm1CcmlkZ2U6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0
ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcgogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CisgICAgaWYgKGlzU2Nyb2xsYmFyT3Zl
cmxheUFQSUF2YWlsYWJsZSgpKSB7CisgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKKyAgICAgICAg
ZmxvYXQgb3ZlcmhhbmcgPSAwOworCisgICAgICAgIGlmIChzY3JvbGxiYXItPmN1cnJlbnRQb3Mo
KSA8IDApIHsKKyAgICAgICAgICAgIC8vIFNjcm9sbGVkIHBhc3QgdGhlIHRvcC4KKyAgICAgICAg
ICAgIHZhbHVlID0gMDsKKyAgICAgICAgICAgIG92ZXJoYW5nID0gLXNjcm9sbGJhci0+Y3VycmVu
dFBvcygpOworICAgICAgICB9IGVsc2UgaWYgKHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSArIHNj
cm9sbGJhci0+Y3VycmVudFBvcygpID4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSkgeworICAgICAg
ICAgICAgLy8gU2Nyb2xsZWQgcGFzdCB0aGUgYm90dG9tLgorICAgICAgICAgICAgdmFsdWUgPSAx
OworICAgICAgICAgICAgb3ZlcmhhbmcgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9s
bGJhci0+dmlzaWJsZVNpemUoKSAtIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBXaXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgc2Nyb2xsYWJs
ZSBhcmVhLgorICAgICAgICAgICAgaW50IG1heGltdW0gPSBzY3JvbGxiYXItPm1heGltdW0oKTsK
KyAgICAgICAgICAgIGlmIChtYXhpbXVtID4gMCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNj
cm9sbGJhci0+Y3VycmVudFBvcygpIC8gbWF4aW11bTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjKiBzY3JvbGxBbmltYXRvciA9IHN0YXRpY19jYXN0PFNjcm9sbEFuaW1hdG9y
Q2hyb21pdW1NYWMqPihzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbEFuaW1hdG9y
KCkpOworICAgICAgICBzY3JvbGxBbmltYXRvci0+c2V0SXNEcmF3aW5nSW50b0xheWVyKGNvbnRl
eHQtPmlzQ0FMYXllckNvbnRleHQoKSk7CisKKyAgICAgICAgd2tTZXRTY3JvbGxiYXJQYWludGVy
S25vYlN0eWxlKHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKSwgdG9TY3JvbGxiYXJQYWlu
dGVyS25vYlN0eWxlKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+cmVjb21tZW5kZWRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoKSkpOworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPmNsaXAoZGFtYWdlUmVj
dCk7CisgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzY3JvbGxiYXItPmZyYW1lUmVjdCgpLngo
KSwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS55KCkpOworICAgICAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOworICAgICAgICB3a1Njcm9sbGJhclBh
aW50ZXJQYWludChzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhci0+ZW5hYmxlZCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN0YXRpY19jYXN0PENHRmxvYXQ+KHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSkgLSBv
dmVyaGFuZykgLyBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKKworICAgICAgICBzY3JvbGxBbmlt
YXRvci0+c2V0SXNEcmF3aW5nSW50b0xheWVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCiAgICAgSElUaGVtZVRyYWNrRHJhd0luZm8gdHJhY2tJbmZvOwogICAgIHRyYWNr
SW5mby52ZXJzaW9uID0gMDsKICAgICB0cmFja0luZm8ua2luZCA9IHNjcm9sbGJhci0+Y29udHJv
bFNpemUoKSA9PSBSZWd1bGFyU2Nyb2xsYmFyID8ga1RoZW1lTWVkaXVtU2Nyb2xsQmFyIDoga1Ro
ZW1lU21hbGxTY3JvbGxCYXI7CkBAIC00ODYsNCArNTg4LDMgQEAgYm9vbCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
KiBjb24KIH0KIAogfQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96452</attachid>
            <date>2011-06-08 12:10:37 -0700</date>
            <delta_ts>2011-06-08 14:46:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59756-20110608121036.patch</filename>
            <type>text/plain</type>
            <size>31571</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgzMjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDEw
YjFkMzJiNjY2ZTkzZTA1OWM2ZDI3YmVkODk1NTI1OGEyY2FmOWEuLmE3MTRiMTJjM2QxZGZlYzhl
ZTNkMGM2YmRjNzk0YTNmNDNhN2Y2NjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA2LTA4ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJv
bWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAgRW5hYmxlICBXVEZf
VVNFX1dLX1NDUk9MTEJBUl9QQUlOVEVSIGZvciBDaHJvbWl1bSBNYWMuIFRoaXMgYWxsb3dzIHVz
IHRvIHVzZSBvdmVybGF5IHNjcm9sbGJhcnMgb24gZnV0dXJlIHZlcnNpb25zIG9mIE1hYyBPUyBY
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDYtMDcgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDAzZDIyMDE5ZTBhMWE3NTZh
ZGQ3Njk4ZTc1YTMzMDAyNzRjNDkyYjguLjRmYzc5NjUxZmUzZmNjYmNmNjI1NzhmN2NjOGQ0M2E1
ODUxNWU4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTY0MCw2ICs2
NDAsOCBAQAogI2RlZmluZSBXVEZfVVNFX0NGIDEKICNkZWZpbmUgV1RGX1VTRV9QVEhSRUFEUyAx
CiAjZGVmaW5lIEhBVkVfUFRIUkVBRF9SV0xPQ0sgMQorCisjZGVmaW5lIFdURl9VU0VfV0tfU0NS
T0xMQkFSX1BBSU5URVIgMQogI2VuZGlmCiAKICNpZiBQTEFURk9STShCUkVXTVApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggN2FjMTJhYzhiN2VmNWNlZTdmOTZmOTBmN2FiYTRjNDM4M2ZiMTYxZi4uN2Y2YjBjZDQz
NDcxODhmYmRmOTAyOWRmZDA2YmQxZDFhYjZmNzgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5
IEBACisyMDExLTA2LTA4ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBN
YWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAgU3luYyBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjLm1tLy5oIHdpdGggU2Nyb2xsYmFyVGhlbWVNYWMubW0gdG8gcGljayB1cCBz
dXBwb3J0IGZvciBvdmVybGF5IHNjcm9sbGJhcnMuIFRoZSBvbmx5IGNoYW5nZXMgYXJlIHJlbmFt
aW5nIFNjcm9sbGJhclRoZW1lTWFjIHRvIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMgYW5kIHVz
aW5nIHJ1bnRpbWUgY2hlY2tzIGluc3RlYWQgb2YgI2lmZGVmJ3MuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBzaW5jZSB0aGlzIGNvZGUgaXMgb25seSBlbmFibGVkIG9uIGZ1dHVyZSB2ZXJzaW9u
cyBvZiBNYWMgT1MgWC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWMubW06IEFsbCBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBleGNlcHQgaW4gc2Ny
b2xsKCkgd2VyZSB0byBzd2FwICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpIHdpdGggcnVu
dGltZSBjaGVja3MuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFj
OjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWM6On5TY3JvbGxBbmltYXRvckNocm9taXVtTWFjKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6Om5vdGl0eVBvc2l0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpjb250ZW50
QXJlYVdpbGxQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjptb3VzZUVudGVyZWRDb250ZW50QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckNocm9taXVtTWFjOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6Om1vdXNlTW92ZWRJbkNvbnRlbnRBcmVh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OndpbGxTdGFy
dExpdmVSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yzo6Y29udGVudHNSZXNpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWM6OndpbGxFbmRMaXZlUmVzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWM6OmNvbnRlbnRBcmVhRGlkU2hvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpjb250ZW50QXJlYURpZEhpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6ZGlkQmVnaW5TY3JvbGxHZXN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmRpZEVu
ZFNjcm9sbEdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bU1hYzo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYzo6d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmRpZEFkZEhvcml6b250YWxT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6
d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYzo6Y2FuY2VsQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc0Nocm9taXVtTWFjLm1tOgorICAg
ICAgICAocHJlZmVycmVkU2Nyb2xsZXJTdHlsZSk6IERpc2FibGVkIG92ZXJsYXkgc2Nyb2xsYmFy
IHN0eWxlcyBkdWUgdG8gdHJhaWxpbmcgYXJ0aWZhY3RzLgorICAgICAgICAod2tTY3JvbGxiYXJQ
YWludGVyUGFpbnQpOiBGaXhlZCBhIHByb2JsZW0gd2hlcmUgdGhlIHNjcm9sbGJhciB0cmFjayB3
YXNuJ3QgYmVpbmcgZHJhd24uCisgICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJLbm9iUmVjdCk6
IEltcGxlbWVudGVkIGEgcHJldmlvdXNseSB1bmltcGxlbWVudGVkIGZ1bmN0aW9uLgorICAgICAg
ICAod2tTZXRTY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKTogSW1wbGVtZW50ZWQgYSBmdW5jdGlv
biB0aGF0J3Mgbm93IHN1cHBvcnRlZCBieSB0aGUgbGF0ZXN0IE1hYyBPUyBYIHNlZWRzLgorICAg
ICAgICAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKTogRW5hYmxlZCBuZXcgc2Nyb2xs
YmFyIGNvZGUuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWMubW06IFN5bmMgd2l0aCBTY3JvbGxiYXJUaGVtZU1hYy5tbS4KKyAgICAgICAgKFdl
YkNvcmU6OnNjcm9sbGJhck1hcCk6CisgICAgICAgICgrW1Njcm9sbGJhclByZWZzT2JzZXJ2ZXIg
YXBwZWFyYW5jZVByZWZzQ2hhbmdlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUFycm93
UGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnNjcm9sbGJh
clRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
Ojp1c2VzT3ZlcmxheVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYzo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpidXR0b25SZXBh
aW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpt
aW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToKKwogMjAxMS0wNi0wNyAgSWFuIEhlbmRl
cnNvbiAgPGlhbmhAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3Rl
aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxB
bmltYXRvckNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQppbmRleCAzZDc0N2M3NDcwZTlkOWY3YTM1NjEy
NjhjY2NjM2FjYTdjOTFjYzM0Li4zODBlMzZmMmU2NzY1NjYzNTMxZDNiMDM5MGNjOTJiOTAzOTcx
MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxB
bmltYXRvckNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0KQEAgLTUxNiwyMSArNTE2LDIxIEBAIFNj
cm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMoU2Nyb2xs
YWJsZUFyZWEqIHNjcm9sbGFibGVBCiAgICAgbV9zY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0
ZS5hZG9wdE5TKFtbU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
U2Nyb2xsQW5pbWF0b3I6dGhpc10pOwogICAgIG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyLmFkb3B0
TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xsQW5pbWF0aW9uSGVscGVyIikgYWxsb2Nd
IGluaXRXaXRoRGVsZWdhdGU6bV9zY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZS5nZXQoKV0p
OwogCi0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQotICAgIG1fc2Nyb2xsYmFyUGFpbnRl
ckNvbnRyb2xsZXJEZWxlZ2F0ZS5hZG9wdE5TKFtbU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxBbmltYXRvcjp0aGlzXSk7Ci0gICAgbV9zY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlciA9IHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
KG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSk7Ci0gICAgbV9zY3Jv
bGxiYXJQYWludGVyRGVsZWdhdGUuYWRvcHROUyhbW1Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhTY3JvbGxBbmltYXRvcjp0aGlzXSk7Ci0jZW5kaWYKKyAgICBpZiAoaXNT
Y3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgbV9zY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlckRlbGVnYXRlLmFkb3B0TlMoW1tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
ckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRoaXNdKTsKKyAgICAgICAg
bV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlciA9IHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSk7CisgICAg
ICAgIG1fc2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlLmFkb3B0TlMoW1tTY3JvbGxiYXJQYWludGVy
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6dGhpc10pOworICAgIH0KIH0K
IAogU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6flNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMo
KQogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICBbbV9zY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlckRlbGVnYXRlLmdldCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKLSAg
ICBbKGlkKW1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bmls
XTsKLSAgICBbbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGUuZ2V0KCkgc2Nyb2xsQW5pbWF0b3JE
ZXN0cm95ZWRdOwotICAgIFttX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlLmdldCgpIHNj
cm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKLSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92ZXJs
YXlBUElBdmFpbGFibGUoKSkgeworICAgICAgICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
ckRlbGVnYXRlLmdldCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKKyAgICAgICAgWyhpZClt
X3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpIHNldERlbGVnYXRlOm5pbF07CisgICAg
ICAgIFttX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSBzY3JvbGxBbmltYXRvckRlc3Ry
b3llZF07CisgICAgICAgIFttX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlLmdldCgpIHNj
cm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKKyAgICB9CiB9CiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bU1hYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3Jv
bGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikK
QEAgLTYzMiwxNDYgKzYzMiwxMjYgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpp
bW1lZGlhdGVTY3JvbGxCeURlbHRhWShmbG9hdCBkZWx0YVkpCiAKIHZvaWQgU2Nyb2xsQW5pbWF0
b3JDaHJvbWl1bU1hYzo6bm90aXR5UG9zaXRpb25DaGFuZ2VkKCkKIHsKLSNpZiBVU0UoV0tfU0NS
T0xMQkFSX1BBSU5URVIpCi0gICAgd2tDb250ZW50QXJlYVNjcm9sbGVkKG1fc2Nyb2xsYmFyUGFp
bnRlckNvbnRyb2xsZXIuZ2V0KCkpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3Zlcmxh
eUFQSUF2YWlsYWJsZSgpKQorICAgICAgICB3a0NvbnRlbnRBcmVhU2Nyb2xsZWQobV9zY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7CiAgICAgU2Nyb2xsQW5pbWF0b3I6Om5vdGl0eVBv
c2l0aW9uQ2hhbmdlZCgpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmNv
bnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5U
RVIpCi0gICAgd2tDb250ZW50QXJlYVdpbGxQYWludChtX3Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyLmdldCgpKTsKLSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFi
bGUoKSkKKyAgICAgICAgd2tDb250ZW50QXJlYVdpbGxQYWludChtX3Njcm9sbGJhclBhaW50ZXJD
b250cm9sbGVyLmdldCgpKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpt
b3VzZUVudGVyZWRDb250ZW50QXJlYSgpIGNvbnN0CiB7Ci0jaWYgVVNFKFdLX1NDUk9MTEJBUl9Q
QUlOVEVSKQotICAgIHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEobV9zY3JvbGxiYXJQYWludGVy
Q29udHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJ
QXZhaWxhYmxlKCkpCisgICAgICAgIHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEobV9zY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bU1hYzo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpIGNvbnN0CiB7Ci0jaWYgVVNFKFdLX1ND
Uk9MTEJBUl9QQUlOVEVSKQotICAgIHdrTW91c2VFeGl0ZWRDb250ZW50QXJlYShtX3Njcm9sbGJh
clBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92
ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgd2tNb3VzZUV4aXRlZENvbnRlbnRBcmVhKG1f
c2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWM6Om1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCkgY29uc3QKIHsKLSNpZiBV
U0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgd2tNb3VzZU1vdmVkSW5Db250ZW50QXJlYSht
X3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgorICAgIGlmIChpc1Nj
cm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgd2tNb3VzZU1vdmVkSW5Db250
ZW50QXJlYShtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsKIH0KIAogdm9pZCBT
Y3JvbGxBbmltYXRvckNocm9taXVtTWFjOjp3aWxsU3RhcnRMaXZlUmVzaXplKCkKIHsKLSNpZiBV
U0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgd2tXaWxsU3RhcnRMaXZlUmVzaXplKG1fc2Ny
b2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xs
YmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICB3a1dpbGxTdGFydExpdmVSZXNpemUo
bV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6Y29udGVudHNSZXNpemVkKCkgY29uc3QKIHsKLSNpZiBVU0UoV0tf
U0NST0xMQkFSX1BBSU5URVIpCi0gICAgd2tDb250ZW50QXJlYVJlc2l6ZWQobV9zY3JvbGxiYXJQ
YWludGVyQ29udHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVy
bGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHdrQ29udGVudEFyZWFSZXNpemVkKG1fc2Nyb2xs
YmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWM6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BB
SU5URVIpCi0gICAgd2tXaWxsRW5kTGl2ZVJlc2l6ZShtX3Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyLmdldCgpKTsKLSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFi
bGUoKSkKKyAgICAgICAgd2tXaWxsRW5kTGl2ZVJlc2l6ZShtX3Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyLmdldCgpKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpjb250
ZW50QXJlYURpZFNob3coKSBjb25zdAogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikK
LSAgICB3a0NvbnRlbnRBcmVhRGlkU2hvdyhtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdl
dCgpKTsKLSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkK
KyAgICAgICAgd2tDb250ZW50QXJlYURpZFNob3cobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
ci5nZXQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6Y29udGVudEFy
ZWFEaWRIaWRlKCkgY29uc3QKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAg
d2tDb250ZW50QXJlYURpZEhpZGUobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7
Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAg
ICAgIHdrQ29udGVudEFyZWFEaWRIaWRlKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0
KCkpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmRpZEJlZ2luU2Nyb2xs
R2VzdHVyZSgpIGNvbnN0CiB7Ci0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQotICAgIHdr
RGlkQmVnaW5TY3JvbGxHZXN0dXJlKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkp
OwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAg
ICAgICB3a0RpZEJlZ2luU2Nyb2xsR2VzdHVyZShtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
LmdldCgpKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpkaWRFbmRTY3Jv
bGxHZXN0dXJlKCkgY29uc3QKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAg
d2tEaWRFbmRTY3JvbGxHZXN0dXJlKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkp
OwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAg
ICAgICB3a0RpZEVuZFNjcm9sbEdlc3R1cmUobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5n
ZXQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6ZGlkQWRkVmVydGlj
YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgVVNFKFdLX1NDUk9MTEJB
Ul9QQUlOVEVSKQotICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyo+KFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjpuYXRpdmVUaGVtZSgpKS0+cGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwot
ICAgIHdrU2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKHBhaW50ZXIsIG1fc2Nyb2xsYmFyUGFp
bnRlckRlbGVnYXRlLmdldCgpKTsKLSAgICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxl
cihtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpLCBwYWludGVyLCBmYWxzZSk7Ci0g
ICAgaWYgKHNjcm9sbGFibGVBcmVhKCktPmluTGl2ZVJlc2l6ZSgpKQotICAgICAgICB3a1NldFNj
cm9sbGJhclBhaW50ZXJLbm9iQWxwaGEocGFpbnRlciwgMSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzY3JvbGxiYXIpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2
YWlsYWJsZSgpKSB7CisgICAgICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyo+KFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpKS0+cGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxi
YXIpOworICAgICAgICB3a1Njcm9sbGJhclBhaW50ZXJTZXREZWxlZ2F0ZShwYWludGVyLCBtX3Nj
cm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSk7CisgICAgICAgIHdrU2V0UGFpbnRlckZvclBh
aW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCksIHBhaW50
ZXIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhKCktPmluTGl2ZVJlc2l6ZSgp
KQorICAgICAgICAgICAgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKHBhaW50ZXIsIDEp
OworICAgIH0KIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjp3aWxsUmVtb3Zl
VmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0jaWYgVVNFKFdLX1ND
Uk9MTEJBUl9QQUlOVEVSKQotICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyo+KFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpKS0+cGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxi
YXIpOwotICAgIHdrU2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKHBhaW50ZXIsIG5pbCk7Ci0g
ICAgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRyb2xsZXIobV9zY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlci5nZXQoKSwgbmlsLCBmYWxzZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzY3Jv
bGxiYXIpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgp
KSB7CisgICAgICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyo+KFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lOjpuYXRpdmVUaGVtZSgpKS0+cGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOworICAg
ICAgICB3a1Njcm9sbGJhclBhaW50ZXJTZXREZWxlZ2F0ZShwYWludGVyLCBuaWwpOworICAgICAg
ICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxlcihtX3Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyLmdldCgpLCBuaWwsIGZhbHNlKTsKKyAgICB9CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0
b3JDaHJvbWl1bU1hYzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgV0tTY3JvbGxiYXJQ
YWludGVyUmVmIHBhaW50ZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjKj4oV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wYWlu
dGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0gICAgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVs
ZWdhdGUocGFpbnRlciwgbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGUuZ2V0KCkpOwotICAgIHdr
U2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXIuZ2V0KCksIHBhaW50ZXIsIHRydWUpOwotICAgIGlmIChzY3JvbGxhYmxlQXJlYSgpLT5pbkxp
dmVSZXNpemUoKSkKLSAgICAgICAgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKHBhaW50
ZXIsIDEpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Nyb2xsYmFyKTsKLSNlbmRpZgorICAg
IGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgeworICAgICAgICBXS1Njcm9s
bGJhclBhaW50ZXJSZWYgcGFpbnRlciA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMqPihXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKSkt
PnBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICAgICAgd2tTY3JvbGxiYXJQYWlu
dGVyU2V0RGVsZWdhdGUocGFpbnRlciwgbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGUuZ2V0KCkp
OworICAgICAgICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxlcihtX3Njcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyLmdldCgpLCBwYWludGVyLCB0cnVlKTsKKyAgICAgICAgaWYgKHNjcm9s
bGFibGVBcmVhKCktPmluTGl2ZVJlc2l6ZSgpKQorICAgICAgICAgICAgd2tTZXRTY3JvbGxiYXJQ
YWludGVyS25vYkFscGhhKHBhaW50ZXIsIDEpOworICAgIH0KIH0KIAogdm9pZCBTY3JvbGxBbmlt
YXRvckNocm9taXVtTWFjOjp3aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgV0tTY3Jv
bGxiYXJQYWludGVyUmVmIHBhaW50ZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjKj4oV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkp
LT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0gICAgd2tTY3JvbGxiYXJQYWludGVy
U2V0RGVsZWdhdGUocGFpbnRlciwgbmlsKTsKLSAgICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29u
dHJvbGxlcihtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpLCBuaWwsIHRydWUpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Nyb2xsYmFyKTsKLSNlbmRpZgorICAgIGlmIChpc1Nj
cm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgeworICAgICAgICBXS1Njcm9sbGJhclBhaW50
ZXJSZWYgcGFpbnRlciA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWMqPihXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKSktPnBhaW50ZXJG
b3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICAgICAgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVs
ZWdhdGUocGFpbnRlciwgbmlsKTsKKyAgICAgICAgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRy
b2xsZXIobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSwgbmlsLCB0cnVlKTsKKyAg
ICB9CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6Y2FuY2VsQW5pbWF0aW9u
cygpCiB7CiAgICAgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkID0gZmFsc2U7CiAKLSNpZiBV
U0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgaWYgKHNjcm9sbGJhclBhaW50VGltZXJJc0Fj
dGl2ZSgpKQotICAgICAgICBzdG9wU2Nyb2xsYmFyUGFpbnRUaW1lcigpOwotICAgIFttX3Njcm9s
bGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSBjYW5jZWxBbmltYXRpb25zXTsKLSNlbmRpZgorICAg
IGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgeworICAgICAgICBpZiAoc2Ny
b2xsYmFyUGFpbnRUaW1lcklzQWN0aXZlKCkpCisgICAgICAgICAgICBzdG9wU2Nyb2xsYmFyUGFp
bnRUaW1lcigpOworICAgICAgICBbbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGUuZ2V0KCkgY2Fu
Y2VsQW5pbWF0aW9uc107CisgICAgfQogfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc0Nocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc0Nocm9taXVtTWFjLm1tCmluZGV4IDc4ZmMz
MTljMGRmOTUwOWUxNTMzMDg5MzdkMTA1NWU1NzNjODUzYWEuLjgxNmFiMzlmYjhhMGI4OGFmZmQw
ZGY1MDVhYTU0Yzg5ZTFjZGIzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNDaHJvbWl1bU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVz
Q2hyb21pdW1NYWMubW0KQEAgLTYwLDYgKzYwLDcgQEAKIEBwcm9wZXJ0eSBDR0Zsb2F0IGtub2JB
bHBoYTsKIEBwcm9wZXJ0eSBDR0Zsb2F0IHRyYWNrQWxwaGE7CiBAcHJvcGVydHkgQ0dGbG9hdCBr
bm9iUHJvcG9ydGlvbjsKK0Bwcm9wZXJ0eSBOU0ludGVnZXIga25vYlN0eWxlOwogQHByb3BlcnR5
KGdldHRlcj1pc0VuYWJsZWQpIEJPT0wgZW5hYmxlZDsKIEBwcm9wZXJ0eShnZXR0ZXI9aXNIb3Jp
em9udGFsKSBCT09MIGhvcml6b250YWw7CiBAcHJvcGVydHkgZG91YmxlIGRvdWJsZVZhbHVlOwpA
QCAtNzUsNiArNzYsNyBAQAogLSAodm9pZClzZXRPdmVybGF5U2Nyb2xsZXJTdGF0ZTooTlNTY3Jv
bGxlclN0eWxlKXN0YXRlCiAgICAgICAgICAgICAgICBmb3JjZUltbWVkaWF0ZWx5OihCT09MKWZs
YWc7CiAtICh2b2lkKXNldERlbGVnYXRlOihpZClkZWxlZ2F0ZTsKKy0gKE5TUmVjdClyZWN0Rm9y
UGFydDooTlNVSW50ZWdlcilhcmcxOwogCiBAZW5kCiAKQEAgLTEyMiw2ICsxMjQsMTEgQEAgc3Rh
dGljIE5TQ29udHJvbFNpemUgc2Nyb2xsYmFyQ29udHJvbFNpemVUb05TQ29udHJvbFNpemUoaW50
IGNvbnRyb2xTaXplKQogCiBzdGF0aWMgTlNTY3JvbGxlclN0eWxlIHByZWZlcnJlZFNjcm9sbGVy
U3R5bGUoKQogeworICAgIC8vIFRPRE8oc2FpbCk6IERpc2FibGUgb3ZlcmxheSBzY3JvbGxiYXJz
IGZvciBub3cgdW50aWwgdGhlIGZvbGxvd2luZyBpc3N1ZXMgYXJlIGZpeGVkOgorICAgIC8vICMx
OiBJbnZhbGlkYXRpb24gaXNzdWVzIGNhdXNlcyB0aGUgc2Nyb2xsYmFyIHRvIGxlYXZlIHRyYWls
aW5nIGFydGlmYWN0cy4KKyAgICAvLyAjMjogRmluZCB0aWNrIG1hcmtzIG5lZWQgdG8gYmUgZHJh
d24gb24gdGhlIHNjcm9sbGJhciB0cmFjay4KKyAgICByZXR1cm4gTlNTY3JvbGxlclN0eWxlTGVn
YWN5OworCiAgICAgaWYgKFtOU1Njcm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
cHJlZmVycmVkU2Nyb2xsZXJTdHlsZSldKQogICAgICAgICByZXR1cm4gW05TU2Nyb2xsZXIgcHJl
ZmVycmVkU2Nyb2xsZXJTdHlsZV07CiAgICAgcmV0dXJuIE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeTsK
QEAgLTE1OSw2ICsxNjYsNyBAQCB2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlclBhaW50KFdLU2Nyb2xs
YmFyUGFpbnRlclJlZiBwYWludGVyLCBib29sIGVuYWJsZWQsIGRvdWJsZQogICAgICAgICBmcmFt
ZVJlY3Quc2l6ZS5oZWlnaHQgPSBbcGFpbnRlciB0cmFja1dpZHRoXTsKICAgICBlbHNlCiAgICAg
ICAgIGZyYW1lUmVjdC5zaXplLndpZHRoID0gW3BhaW50ZXIgdHJhY2tXaWR0aF07CisgICAgZnJh
bWVSZWN0Lm9yaWdpbiA9IE5TWmVyb1BvaW50OwogCiAgICAgW3BhaW50ZXIgZHJhd0tub2JTbG90
SW5SZWN0OmZyYW1lUmVjdCBoaWdobGlnaHQ6Tk9dOwogICAgIFtwYWludGVyIGRyYXdLbm9iXTsK
QEAgLTIzMCw3ICsyMzgsNyBAQCB2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJT
dHlsZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIHBhaW50ZQogCiBDR1JlY3Qgd2tT
Y3JvbGxiYXJQYWludGVyS25vYlJlY3QoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIpCiB7
Ci0gICAgcmV0dXJuIE5TUmVjdFRvQ0dSZWN0KE5TWmVyb1JlY3QpOworICAgIHJldHVybiBOU1Jl
Y3RUb0NHUmVjdChbcGFpbnRlciByZWN0Rm9yUGFydDpOU1Njcm9sbGVyS25vYl0pOwogfQogCiB2
b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYShXS1Njcm9sbGJhclBhaW50ZXJSZWYg
cGFpbnRlciwgQ0dGbG9hdCBhbHBoYSkKQEAgLTI0NSw3ICsyNTMsNyBAQCB2b2lkIHdrU2V0U2Ny
b2xsYmFyUGFpbnRlclRyYWNrQWxwaGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIENH
RmxvYXQgYWxwaAogCiB2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShXS1Njcm9s
bGJhclBhaW50ZXJSZWYgcGFpbnRlciwgd2tTY3JvbGxlcktub2JTdHlsZSBzdHlsZSkKIHsKLSAg
ICAvLyBUT0RPKHNhaWwpOiBBIGtub2Igc3R5bGUgQVBJIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHNl
ZWRzIGN1cnJlbnRseSBhdmFpbGFibGUuIAorICAgIFtwYWludGVyIHNldEtub2JTdHlsZTpzdHls
ZV07CiB9CiAKIFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgd2tNYWtlU2Nyb2xsYmFy
UGFpbnRlckNvbnRyb2xsZXIoaWQgcGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZSkKQEAgLTMyNSwx
MyArMzMzLDYgQEAgdm9pZCB3a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZsYXNoU2Nyb2xsZXJzKFdL
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHIKIAogYm9vbCBpc1Njcm9sbGJhck92
ZXJsYXlBUElBdmFpbGFibGUoKQogewotICAgIC8vIFRPRE8oc2FpbCk6IERpc2FibGUgb3Zlcmxh
eSBzY3JvbGxiYXJzIGZvciBub3cgdW50aWwgdGhlIGZvbGxvd2luZyBpc3N1ZXMgYXJlIGZpeGVk
OgotICAgIC8vICMxOiBJbnZhbGlkYXRpb24gaXNzdWVzIGNhdXNlcyB0aGUgc2Nyb2xsYmFyIHRv
IGxlYXZlIHRyYWlsaW5nIGFydGlmYWN0cy4KLSAgICAvLyAjMjogVmFyaW91cyBtZXNzYWdlcyBz
dWNoIGFzIGxpdmUgcmVzaXplIHN0YXJ0ZWQvZW5kZWQgbmVlZCB0byBiZSBwaXBlZCBmcm9tIHRo
ZSBVSS4KLSAgICAvLyAjMzogRmluZCB0aWNrIG1hcmtzIG5lZWQgdG8gYmUgZHJhd24gb24gdGhl
IHNjcm9sbGJhciB0cmFjay4KLSAgICAvLyAjNDogTmVlZCB0byBoYXZlIHRoZSB0aGVtZSBlbmdp
bmUgZHJhdyB0aGUgdGh1bWIuCi0gICAgcmV0dXJuIGZhbHNlOwotCiAgICAgc3RhdGljIGJvb2wg
YXBpQXZhaWxhYmxlID0gW2xvb2tVcE5TU2Nyb2xsZXJJbXBDbGFzcygpIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2Nyb2xsZXJJbXBXaXRoU3R5bGU6Y29udHJvbFNpemU6aG9yaXpvbnRh
bDpyZXBsYWNpbmdTY3JvbGxlckltcDopXSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtsb29rVXBOU1Njcm9sbGVySW1wUGFpckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHNjcm9sbGVyU3R5bGUpXTsKICAgICByZXR1cm4gYXBpQXZhaWxhYmxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4IDFhYjJmMThiYzAyOTQ1NWYwNWI0MTU2NDk1
YzQ5MTJjMDkwYzc4NTguLjZmNjQ1ZThjZmU5M2Q5NDA2NTFlYzIzMjY5NGFhOTg3M2NkNzVkZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hY19oCiAjZGVmaW5lIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWNfaAogCisjaW5jbHVkZSAiU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc0Nocm9taXVtTWFjLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKIAogLy8gVGhpcyBmaWxlIChh
bmQgaXRzIGFzc29jaWF0ZWQgLm1tIGZpbGUpIGlzIGEgY2xvbmUgb2YgU2Nyb2xsYmFyVGhlbWVN
YWMuaC4KQEAgLTQ0LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJh
clRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwogCiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAgIHZp
cnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CkBAIC01Myw2ICs1NSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAKKyAgICB2
b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgV0tTY3JvbGxiYXJQYWlu
dGVyUmVmKTsKKyAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlckZvclNjcm9sbGJhcihT
Y3JvbGxiYXIqKTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNj
cm9sbGJhciopOwogICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKQEAgLTY0
LDYgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXIqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKIAogcHVibGljOgogICAgIHZvaWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCBkZDZjY2EyZGViMjBlMDM2YzYwZjYyMDMz
MTNhNzc3NzMxODk4MDRiLi5hYTk3ZWU0YmUzMTliYTcwOWZkZGFiNWY4YmQyZTI3ZmExMzQ0ZjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTI5LDEwICsyOSwxMyBAQAogCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWMuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSA8Q2Fy
Ym9uL0NhcmJvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCkBAIC01NCwxOCAr
NTcsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAvLyAtIFRoZSBjbGFzc25hbWUgY2hh
bmdlIGZyb20gU2Nyb2xsYmFyVGhlbWVNYWMgdG8gU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy4K
IC8vIC0gSW4gcGFpbnQoKSB0aGUgY29kZSB0byBwYWludCB0aGUgdHJhY2ssIHRpY2ttYXJrcywg
YW5kIHRodW1iIHNlcGFyYXRlbHkuCiAvLyAtIEluIHBhaW50KCkgdGhlIHRodW1iIGlzIGRyYXdu
IHZpYSBDaHJvbWVCcmlkZ2UvV2ViVGhlbWVFbmdpbmUuCisvLyAtIFZhcmlvdXMgZnVuY3Rpb25z
IHRoYXQgd2VyZSBzcGxpdCB1c2luZyAjaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorLy8g
ICBoYXZlIGJlZW4gY29tYmluZWQgdXNpbmcgcnVudGltZSBjaGVja3MgaW5zdGVhZC4KIC8vCiAv
LyBGb3IgYWxsIG90aGVyIGRpZmZlcmVuY2VzLCBpZiBpdCB3YXMgaW50cm9kdWNlZCBpbiB0aGlz
IGZpbGUsIHRoZW4gdGhlCiAvLyBtYWludGFpbmVyIGZvcmdvdCB0byBpbmNsdWRlIGl0IGluIHRo
ZSBsaXN0OyBvdGhlcndpc2UgaXQgaXMgYW4gdXBkYXRlIHRoYXQKIC8vIHNob3VsZCBoYXZlIGJl
ZW4gYXBwbGllZCB0byB0aGlzIGZpbGUgYnV0IHdhcyBub3QuCiAKLXN0YXRpYyBIYXNoU2V0PFNj
cm9sbGJhcio+KiBnU2Nyb2xsYmFyczsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotQGludGVyZmFj
ZSBTY3JvbGxiYXJQcmVmc09ic2VydmVyIDogTlNPYmplY3QKK3R5cGVkZWYgSGFzaE1hcDxTY3Jv
bGxiYXIqLCBSZXRhaW5QdHI8V0tTY3JvbGxiYXJQYWludGVyUmVmPiA+IFNjcm9sbGJhclBhaW50
ZXJNYXA7CisKK3N0YXRpYyBTY3JvbGxiYXJQYWludGVyTWFwKiBzY3JvbGxiYXJNYXAoKQogewor
ICAgIHN0YXRpYyBTY3JvbGxiYXJQYWludGVyTWFwKiBtYXAgPSBuZXcgU2Nyb2xsYmFyUGFpbnRl
ck1hcDsKKyAgICByZXR1cm4gbWFwOworfQogCiB9CiAKK0BpbnRlcmZhY2UgU2Nyb2xsYmFyUHJl
ZnNPYnNlcnZlciA6IE5TT2JqZWN0Cit7Cit9CisKICsgKHZvaWQpcmVnaXN0ZXJBc09ic2VydmVy
OwogKyAodm9pZClhcHBlYXJhbmNlUHJlZnNDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiopdGhlTm90
aWZpY2F0aW9uOwogKyAodm9pZCliZWhhdmlvclByZWZzQ2hhbmdlZDooTlNOb3RpZmljYXRpb24q
KXRoZU5vdGlmaWNhdGlvbjsKQEAgLTc5LDEyICs5MywxMiBAQCBzdGF0aWMgSGFzaFNldDxTY3Jv
bGxiYXIqPiogZ1Njcm9sbGJhcnM7CiAgICAgVU5VU0VEX1BBUkFNKHVudXNlZE5vdGlmaWNhdGlv
bik7CiAKICAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKj4oU2Nyb2xs
YmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wcmVmZXJlbmNlc0NoYW5nZWQoKTsKLSAgICBpZiAo
IWdTY3JvbGxiYXJzKQorICAgIGlmIChzY3JvbGxiYXJNYXAoKS0+aXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgZW5kID0gZ1Njcm9s
bGJhcnMtPmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgaXQg
PSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICgqaXQp
LT5zdHlsZUNoYW5nZWQoKTsKLSAgICAgICAgKCppdCktPmludmFsaWRhdGUoKTsKKyAgICBTY3Jv
bGxiYXJQYWludGVyTWFwOjppdGVyYXRvciBlbmQgPSBzY3JvbGxiYXJNYXAoKS0+ZW5kKCk7Cisg
ICAgZm9yIChTY3JvbGxiYXJQYWludGVyTWFwOjppdGVyYXRvciBpdCA9IHNjcm9sbGJhck1hcCgp
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaXQtPmZpcnN0LT5zdHlsZUNo
YW5nZWQoKTsKKyAgICAgICAgaXQtPmZpcnN0LT5pbnZhbGlkYXRlKCk7CiAgICAgfQogfQogCkBA
IC0xMjYsMTAgKzE0MCwxMyBAQCBzdGF0aWMgaW50IGNPdXRlckJ1dHRvbk92ZXJsYXAgPSAyOwog
c3RhdGljIGZsb2F0IGdJbml0aWFsQnV0dG9uRGVsYXkgPSAwLjVmOwogc3RhdGljIGZsb2F0IGdB
dXRvc2Nyb2xsQnV0dG9uRGVsYXkgPSAwLjA1ZjsKIHN0YXRpYyBib29sIGdKdW1wT25UcmFja0Ns
aWNrID0gZmFsc2U7Ci1zdGF0aWMgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBnQnV0dG9uUGxh
Y2VtZW50ID0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZDsKK3N0YXRpYyBTY3JvbGxiYXJCdXR0
b25zUGxhY2VtZW50IGdCdXR0b25QbGFjZW1lbnQgPSBpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFp
bGFibGUoKSA/IFNjcm9sbGJhckJ1dHRvbnNOb25lIDogU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVu
ZDsKIAogc3RhdGljIHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1lbnQoKQogeworICAgIGlmIChpc1Nj
cm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTlNT
dHJpbmcgKmJ1dHRvblBsYWNlbWVudCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIG9iamVjdEZvcktleTpAIkFwcGxlU2Nyb2xsQmFyVmFyaWFudCJdOwogICAgIGlmIChb
YnV0dG9uUGxhY2VtZW50IGlzRXF1YWxUb1N0cmluZzpAIlNpbmdsZSJdKQogICAgICAgICBnQnV0
dG9uUGxhY2VtZW50ID0gU2Nyb2xsYmFyQnV0dG9uc1NpbmdsZTsKQEAgLTEzOCwyMyArMTU1LDI5
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFycm93UGxhY2VtZW50KCkKICAgICBlbHNlIGlmIChbYnV0
dG9uUGxhY2VtZW50IGlzRXF1YWxUb1N0cmluZzpAIkRvdWJsZUJvdGgiXSkKICAgICAgICAgZ0J1
dHRvblBsYWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVCb3RoOwogICAgIGVsc2UKLSAg
ICAgICAgZ0J1dHRvblBsYWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVFbmQ7IC8vIFRo
ZSBkZWZhdWx0IGlzIFNjcm9sbGJhckJ1dHRvbnNEb3VibGVFbmQuCisgICAgICAgIGdCdXR0b25Q
bGFjZW1lbnQgPSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOwogfQogCiB2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQogewotICAgIGlmICghZ1Njcm9sbGJhcnMpCi0gICAgICAgIGdTY3JvbGxiYXJzID0gbmV3IEhh
c2hTZXQ8U2Nyb2xsYmFyKj47Ci0gICAgZ1Njcm9sbGJhcnMtPmFkZChzY3JvbGxiYXIpOworICAg
IGJvb2wgaXNIb3Jpem9udGFsID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXI7CisgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHNjcm9sbGJhclBhaW50ZXIg
PSB3a01ha2VTY3JvbGxiYXJQYWludGVyKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSwgaXNIb3Jp
em9udGFsKTsKKyAgICBzY3JvbGxiYXJNYXAoKS0+YWRkKHNjcm9sbGJhciwgc2Nyb2xsYmFyUGFp
bnRlcik7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dW5yZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKLSAgICBnU2Nyb2xsYmFycy0+cmVtb3Zl
KHNjcm9sbGJhcik7Ci0gICAgaWYgKGdTY3JvbGxiYXJzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ZGVsZXRlIGdTY3JvbGxiYXJzOwotICAgICAgICBnU2Nyb2xsYmFycyA9IDA7Ci0gICAgfQorICAg
IHNjcm9sbGJhck1hcCgpLT5yZW1vdmUoc2Nyb2xsYmFyKTsKK30KKwordm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBXS1Njcm9sbGJhclBhaW50ZXJSZWYgbmV3UGFpbnRlcikKK3sKKyAgICBzY3JvbGxi
YXJNYXAoKS0+c2V0KHNjcm9sbGJhciwgbmV3UGFpbnRlcik7Cit9CisKK1dLU2Nyb2xsYmFyUGFp
bnRlclJlZiBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIHJldHVybiBzY3JvbGxiYXJNYXAoKS0+Z2V0KHNj
cm9sbGJhcikuZ2V0KCk7CiB9CiAKIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWMoKQpAQCAtMTgzLDcgKzIwNiwxOCBAQCB2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OnByZWZlcmVuY2VzQ2hhbmdlZCgpCiAKIGludCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUpCiB7Ci0gICAgcmV0dXJuIGNTY3JvbGxiYXJUaGlja25lc3NbY29udHJvbFNpemVd
OworICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuIHdrU2Nyb2xsYmFyVGhpY2tuZXNzKGNvbnRyb2xTaXplKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsKK30KKworYm9vbCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAorewor
ICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IHdrU2Nyb2xsYmFyUGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKCk7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGRvdWJsZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
Ojppbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKQpAQCAtMjAzLDIwICsyMzcsMjggQEAgU2Ny
b2xsYmFyQnV0dG9uc1BsYWNlbWVudCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpidXR0b25z
UGxhY2VtZW50KCkgY29uc3QKIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpoYXNC
dXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIHJldHVybiBzY3JvbGxiYXItPmVu
YWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIgPwotICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6Ci0gICAgICAgICAgICAgc2Ny
b2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0p
OworICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiBnQnV0dG9uUGxhY2VtZW50ICE9
IFNjcm9sbGJhckJ1dHRvbnNOb25lCisgICAgICAgICAgICAgJiYgKHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCisgICAgICAgICAgICAgPyBzY3JvbGxiYXIt
PndpZHRoKCkKKyAgICAgICAgICAgICA6IHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1Jl
YWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNl
dFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKKyAgICBpbnQgbWlu
TGVuZ3RoRm9yVGh1bWI7CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgp
KQorICAgICAgICBtaW5MZW5ndGhGb3JUaHVtYiA9IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVu
Z3RoTmVlZGVkRm9yVGh1bWIoc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpKTsK
KyAgICBlbHNlCisgICAgICAgIG1pbkxlbmd0aEZvclRodW1iID0gMiAqIGNCdXR0b25JbnNldFtz
Y3JvbGxiYXItPmNvbnRyb2xTaXplKCldICsgY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV0gKyAxOwogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPwogICAgICAgICAg
ICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6Ci0gICAgICAgICAgICAgc2Nyb2xsYmFyLT5oZWlnaHQo
KSkgPj0gMiAqIGNCdXR0b25JbnNldFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldICsgY1RodW1i
TWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyAxOworICAgICAgICAgICAgIHNj
cm9sbGJhci0+aGVpZ2h0KCkpID49IG1pbkxlbmd0aEZvclRodW1iOwogfQogCiBzdGF0aWMgSW50
UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNp
emUsIGJvb2wgc3RhcnQpCiB7CisgICAgQVNTRVJUKGdCdXR0b25QbGFjZW1lbnQgIT0gU2Nyb2xs
YmFyQnV0dG9uc05vbmUpOworCiAgICAgSW50UmVjdCBwYWludFJlY3QoYnV0dG9uUmVjdCk7CiAg
ICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgcGFp
bnRSZWN0LnNldFdpZHRoKGNSZWFsQnV0dG9uTGVuZ3RoW2NvbnRyb2xTaXplXSk7CkBAIC0zNDQs
NyArMzg2LDEwIEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6dHJhY2tSZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nCiAKIGludCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7
Ci0gICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwor
ICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IHdrU2Nyb2xsYmFyTWluaW11bVRodW1iTGVuZ3RoKHNjcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xs
YmFyKS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Nj
cm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2dCkKQEAgLTM1Niw2ICs0MDEsMTEgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW8K
ICAgICByZXR1cm4gZXZ0LmFsdEtleSgpOwogfQogCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgp
OworfQorCiBzdGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJh
clBhcnQgcGFydCkKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKQEAgLTM3NCw2ICs0MjQsMTggQEAg
c3RhdGljIGludCBzY3JvbGxiYXJQYXJ0VG9ISVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0IHBh
cnQpCiAgICAgfQogfQogCitzdGF0aWMgaW5saW5lIHdrU2Nyb2xsZXJLbm9iU3R5bGUgdG9TY3Jv
bGxiYXJQYWludGVyS25vYlN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzdHlsZSkKK3sKKyAg
ICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJrOgor
ICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURhcms7CisgICAgY2FzZSBTY3JvbGxi
YXJPdmVybGF5U3R5bGVMaWdodDoKKyAgICAgICAgcmV0dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVM
aWdodDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURl
ZmF1bHQ7CisgICAgfQorfQorCiBzdGF0aWMgUGxhdGZvcm1CcmlkZ2U6OlRoZW1lUGFpbnRTdGF0
ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikgewogICAg
IGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybUJyaWRn
ZTo6U3RhdGVEaXNhYmxlZDsKQEAgLTM4Nyw2ICs0NDksNDYgQEAgc3RhdGljIFBsYXRmb3JtQnJp
ZGdlOjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFy
KiBzY3IKIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1h
Z2VSZWN0KQogeworICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewor
ICAgICAgICBmbG9hdCB2YWx1ZSA9IDA7CisgICAgICAgIGZsb2F0IG92ZXJoYW5nID0gMDsKKwor
ICAgICAgICBpZiAoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPCAwKSB7CisgICAgICAgICAgICAv
LyBTY3JvbGxlZCBwYXN0IHRoZSB0b3AuCisgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAg
ICAgICBvdmVyaGFuZyA9IC1zY3JvbGxiYXItPmN1cnJlbnRQb3MoKTsKKyAgICAgICAgfSBlbHNl
IGlmIChzY3JvbGxiYXItPnZpc2libGVTaXplKCkgKyBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA+
IHNjcm9sbGJhci0+dG90YWxTaXplKCkpIHsKKyAgICAgICAgICAgIC8vIFNjcm9sbGVkIHBhc3Qg
dGhlIGJvdHRvbS4KKyAgICAgICAgICAgIHZhbHVlID0gMTsKKyAgICAgICAgICAgIG92ZXJoYW5n
ID0gc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgKyBzY3JvbGxiYXItPnZpc2libGVTaXplKCkgLSBz
Y3JvbGxiYXItPnRvdGFsU2l6ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
V2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIHNjcm9sbGFibGUgYXJlYS4KKyAgICAgICAgICAgIGlu
dCBtYXhpbXVtID0gc2Nyb2xsYmFyLT5tYXhpbXVtKCk7CisgICAgICAgICAgICBpZiAobWF4aW11
bSA+IDApCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSAv
IG1heGltdW07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFsdWUgPSAwOwor
ICAgICAgICB9CisKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyogc2Nyb2xsQW5p
bWF0b3IgPSBzdGF0aWNfY2FzdDxTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKj4oc2Nyb2xsYmFy
LT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxBbmltYXRvcigpKTsKKyAgICAgICAgc2Nyb2xsQW5p
bWF0b3ItPnNldElzRHJhd2luZ0ludG9MYXllcihjb250ZXh0LT5pc0NBTGF5ZXJDb250ZXh0KCkp
OworCisgICAgICAgIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShwYWludGVyRm9yU2Ny
b2xsYmFyKHNjcm9sbGJhciksIHRvU2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShzY3JvbGxiYXIt
PnNjcm9sbGFibGVBcmVhKCktPnJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpKTsK
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQp
OworICAgICAgICBjb250ZXh0LT5jbGlwKGRhbWFnZVJlY3QpOworICAgICAgICBjb250ZXh0LT50
cmFuc2xhdGUoc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS54KCksIHNjcm9sbGJhci0+ZnJhbWVSZWN0
KCkueSgpKTsKKyAgICAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4
dChjb250ZXh0KTsKKyAgICAgICAgd2tTY3JvbGxiYXJQYWludGVyUGFpbnQoc2Nyb2xsYmFyTWFw
KCktPmdldChzY3JvbGxiYXIpLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzY3JvbGxiYXItPmVuYWJsZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDxDR0Zs
b2F0PihzY3JvbGxiYXItPnZpc2libGVTaXplKCkpIC0gb3ZlcmhhbmcpIC8gc2Nyb2xsYmFyLT50
b3RhbFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyLT5m
cmFtZVJlY3QoKSk7CisKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3ItPnNldElzRHJhd2luZ0ludG9M
YXllcihmYWxzZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIEhJVGhlbWVU
cmFja0RyYXdJbmZvIHRyYWNrSW5mbzsKICAgICB0cmFja0luZm8udmVyc2lvbiA9IDA7CiAgICAg
dHJhY2tJbmZvLmtpbmQgPSBzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkgPT0gUmVndWxhclNjcm9s
bGJhciA/IGtUaGVtZU1lZGl1bVNjcm9sbEJhciA6IGtUaGVtZVNtYWxsU2Nyb2xsQmFyOwpAQCAt
NTAxLDQgKzYwMywzIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29uCiB9CiAKIH0KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96485</attachid>
            <date>2011-06-08 14:46:20 -0700</date>
            <delta_ts>2011-06-08 15:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59756-20110608144619.patch</filename>
            <type>text/plain</type>
            <size>31570</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgzMjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDEw
YjFkMzJiNjY2ZTkzZTA1OWM2ZDI3YmVkODk1NTI1OGEyY2FmOWEuLjc3MTdiNjlmZWZjODM1NDZk
Yjc2NjE3MmNhYmIxYTkyNzEzYzU3YTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA2LTA4ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJv
bWl1bSBNYWM6IEVuYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzU2CisKKyAgICAgICAgRW5hYmxlIFdURl9V
U0VfV0tfU0NST0xMQkFSX1BBSU5URVIgZm9yIENocm9taXVtIE1hYy4gVGhpcyBhbGxvd3MgdXMg
dG8gdXNlIG92ZXJsYXkgc2Nyb2xsYmFycyBvbiBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFgu
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wNi0wNyAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggMDNkMjIwMTllMGExYTc1NmFk
ZDc2OThlNzVhMzMwMDI3NGM0OTJiOC4uNGZjNzk2NTFmZTNmY2NiY2Y2MjU3OGY3Y2M4ZDQzYTU4
NTE1ZThkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtNjQwLDYgKzY0
MCw4IEBACiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEK
ICNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCisKKyNkZWZpbmUgV1RGX1VTRV9XS19TQ1JP
TExCQVJfUEFJTlRFUiAxCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEJSRVdNUCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3YWMxMmFjOGI3ZWY1Y2VlN2Y5NmY5MGY3YWJhNGM0MzgzZmIxNjFmLi43ZjZiMGNkNDM0
NzE4OGZiZGY5MDI5ZGZkMDZiZDFkMWFiNmY3ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTEtMDYtMDggIFNhaWxlc2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIE1h
YzogRW5hYmxlIG92ZXJsYXkgc2Nyb2xsYmFycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk3NTYKKworICAgICAgICBTeW5jIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWMubW0vLmggd2l0aCBTY3JvbGxiYXJUaGVtZU1hYy5tbSB0byBwaWNrIHVwIHN1
cHBvcnQgZm9yIG92ZXJsYXkgc2Nyb2xsYmFycy4gVGhlIG9ubHkgY2hhbmdlcyBhcmUgcmVuYW1p
bmcgU2Nyb2xsYmFyVGhlbWVNYWMgdG8gU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyBhbmQgdXNp
bmcgcnVudGltZSBjaGVja3MgaW5zdGVhZCBvZiAjaWZkZWYncy4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIHNpbmNlIHRoaXMgY29kZSBpcyBvbmx5IGVuYWJsZWQgb24gZnV0dXJlIHZlcnNpb25z
IG9mIE1hYyBPUyBYLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0
b3JDaHJvbWl1bU1hYy5tbTogQWxsIGNoYW5nZXMgdG8gdGhpcyBmaWxlIGV4Y2VwdCBpbiBzY3Jv
bGwoKSB3ZXJlIHRvIHN3YXAgI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikgd2l0aCBydW50
aW1lIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6
OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6flNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6bm90aXR5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmNvbnRlbnRB
cmVhV2lsbFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1N
YWM6Om1vdXNlRW50ZXJlZENvbnRlbnRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWM6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6bW91c2VNb3ZlZEluQ29udGVudEFyZWEp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6d2lsbFN0YXJ0
TGl2ZVJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFj
Ojpjb250ZW50c1Jlc2l6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bU1hYzo6d2lsbEVuZExpdmVSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6Y29udGVudEFyZWFEaWRTaG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmNvbnRlbnRBcmVhRGlkSGlkZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpkaWRCZWdpblNjcm9sbEdlc3R1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6ZGlkRW5k
U2Nyb2xsR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckNocm9taXVtTWFjOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6ZGlkQWRkSG9yaXpvbnRhbFNj
cm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjp3
aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckNocm9taXVtTWFjOjpjYW5jZWxBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMubW06CisgICAg
ICAgIChwcmVmZXJyZWRTY3JvbGxlclN0eWxlKTogRGlzYWJsZWQgb3ZlcmxheSBzY3JvbGxiYXIg
c3R5bGVzIGR1ZSB0byB0cmFpbGluZyBhcnRpZmFjdHMuCisgICAgICAgICh3a1Njcm9sbGJhclBh
aW50ZXJQYWludCk6IEZpeGVkIGEgcHJvYmxlbSB3aGVyZSB0aGUgc2Nyb2xsYmFyIHRyYWNrIHdh
c24ndCBiZWluZyBkcmF3bi4KKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0KTog
SW1wbGVtZW50ZWQgYSBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisgICAgICAg
ICh3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUpOiBJbXBsZW1lbnRlZCBhIGZ1bmN0aW9u
IHRoYXQncyBub3cgc3VwcG9ydGVkIGJ5IHRoZSBsYXRlc3QgTWFjIE9TIFggc2VlZHMuCisgICAg
ICAgIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUpOiBFbmFibGVkIG5ldyBzY3JvbGxi
YXIgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbTogU3luYyB3aXRoIFNjcm9sbGJhclRoZW1lTWFjLm1tLgorICAgICAgICAoV2Vi
Q29yZTo6c2Nyb2xsYmFyTWFwKToKKyAgICAgICAgKCtbU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciBh
cHBlYXJhbmNlUHJlZnNDaGFuZ2VkOl0pOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlQXJyb3dQ
bGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYzo6dW5yZWdpc3RlclNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50ZXJGb3JTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6c2Nyb2xsYmFy
VGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnVzZXNPdmVybGF5U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1dHRvblJlcGFp
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Om1p
bmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjp0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQpOgorCiAyMDExLTA2LTA3ICBJYW4gSGVuZGVy
c29uICA8aWFuaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCmluZGV4IDNkNzQ3Yzc0NzBlOWQ5ZjdhMzU2MTI2
OGNjY2MzYWNhN2M5MWNjMzQuLjM4MGUzNmYyZTY3NjU2NjM1MzFkM2IwMzkwY2M5MmI5MDM5NzEx
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQpAQCAtNTE2LDIxICs1MTYsMjEgQEAgU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyhTY3JvbGxh
YmxlQXJlYSogc2Nyb2xsYWJsZUEKICAgICBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRl
LmFkb3B0TlMoW1tTY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhT
Y3JvbGxBbmltYXRvcjp0aGlzXSk7CiAgICAgbV9zY3JvbGxBbmltYXRpb25IZWxwZXIuYWRvcHRO
UyhbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxBbmltYXRpb25IZWxwZXIiKSBhbGxvY10g
aW5pdFdpdGhEZWxlZ2F0ZTptX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlLmdldCgpXSk7
CiAKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgbV9zY3JvbGxiYXJQYWludGVy
Q29udHJvbGxlckRlbGVnYXRlLmFkb3B0TlMoW1tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRoaXNdKTsKLSAgICBtX3Njcm9s
bGJhclBhaW50ZXJDb250cm9sbGVyID0gd2tNYWtlU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIo
bV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRlLmdldCgpKTsKLSAgICBtX3Njcm9s
bGJhclBhaW50ZXJEZWxlZ2F0ZS5hZG9wdE5TKFtbU2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRoaXNdKTsKLSNlbmRpZgorICAgIGlmIChpc1Nj
cm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgeworICAgICAgICBtX3Njcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyRGVsZWdhdGUuYWRvcHROUyhbW1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6dGhpc10pOworICAgICAgICBt
X3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyID0gd2tNYWtlU2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXIobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRlLmdldCgpKTsKKyAgICAg
ICAgbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGUuYWRvcHROUyhbW1Njcm9sbGJhclBhaW50ZXJE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxBbmltYXRvcjp0aGlzXSk7CisgICAgfQogfQog
CiBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjp+U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYygp
CiB7Ci0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQotICAgIFttX3Njcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwotICAg
IFsoaWQpbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSBzZXREZWxlZ2F0ZTpuaWxd
OwotICAgIFttX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSBzY3JvbGxBbmltYXRvckRl
c3Ryb3llZF07Ci0gICAgW21fc2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUuZ2V0KCkgc2Ny
b2xsQW5pbWF0b3JEZXN0cm95ZWRdOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3Zlcmxh
eUFQSUF2YWlsYWJsZSgpKSB7CisgICAgICAgIFttX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
RGVsZWdhdGUuZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOworICAgICAgICBbKGlkKW1f
c2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICAg
ICAgW21fc2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlLmdldCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJv
eWVkXTsKKyAgICAgICAgW21fc2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUuZ2V0KCkgc2Ny
b2xsQW5pbWF0b3JEZXN0cm95ZWRdOworICAgIH0KIH0KIAogYm9vbCBTY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQpA
QCAtNjMyLDE0NiArNjMyLDEyNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6Omlt
bWVkaWF0ZVNjcm9sbEJ5RGVsdGFZKGZsb2F0IGRlbHRhWSkKIAogdm9pZCBTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpub3RpdHlQb3NpdGlvbkNoYW5nZWQoKQogewotI2lmIFVTRShXS19TQ1JP
TExCQVJfUEFJTlRFUikKLSAgICB3a0NvbnRlbnRBcmVhU2Nyb2xsZWQobV9zY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5
QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHdrQ29udGVudEFyZWFTY3JvbGxlZChtX3Njcm9sbGJh
clBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsKICAgICBTY3JvbGxBbmltYXRvcjo6bm90aXR5UG9z
aXRpb25DaGFuZ2VkKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6Y29u
dGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdAogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRF
UikKLSAgICB3a0NvbnRlbnRBcmVhV2lsbFBhaW50KG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXIuZ2V0KCkpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJs
ZSgpKQorICAgICAgICB3a0NvbnRlbnRBcmVhV2lsbFBhaW50KG1fc2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXIuZ2V0KCkpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6Om1v
dXNlRW50ZXJlZENvbnRlbnRBcmVhKCkgY29uc3QKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BB
SU5URVIpCi0gICAgd2tNb3VzZUVudGVyZWRDb250ZW50QXJlYShtX3Njcm9sbGJhclBhaW50ZXJD
b250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElB
dmFpbGFibGUoKSkKKyAgICAgICAgd2tNb3VzZUVudGVyZWRDb250ZW50QXJlYShtX3Njcm9sbGJh
clBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9t
aXVtTWFjOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkgY29uc3QKIHsKLSNpZiBVU0UoV0tfU0NS
T0xMQkFSX1BBSU5URVIpCi0gICAgd2tNb3VzZUV4aXRlZENvbnRlbnRBcmVhKG1fc2Nyb2xsYmFy
UGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3Zl
cmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICB3a01vdXNlRXhpdGVkQ29udGVudEFyZWEobV9z
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0
b3JDaHJvbWl1bU1hYzo6bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKSBjb25zdAogewotI2lmIFVT
RShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICB3a01vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKG1f
c2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkpOwotI2VuZGlmCisgICAgaWYgKGlzU2Ny
b2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICB3a01vdXNlTW92ZWRJbkNvbnRl
bnRBcmVhKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkpOwogfQogCiB2b2lkIFNj
cm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OndpbGxTdGFydExpdmVSZXNpemUoKQogewotI2lmIFVT
RShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICB3a1dpbGxTdGFydExpdmVSZXNpemUobV9zY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxi
YXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHdrV2lsbFN0YXJ0TGl2ZVJlc2l6ZSht
X3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsKIH0KIAogdm9pZCBTY3JvbGxBbmlt
YXRvckNocm9taXVtTWFjOjpjb250ZW50c1Jlc2l6ZWQoKSBjb25zdAogewotI2lmIFVTRShXS19T
Q1JPTExCQVJfUEFJTlRFUikKLSAgICB3a0NvbnRlbnRBcmVhUmVzaXplZChtX3Njcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92ZXJs
YXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgd2tDb250ZW50QXJlYVJlc2l6ZWQobV9zY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bU1hYzo6d2lsbEVuZExpdmVSZXNpemUoKQogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJ
TlRFUikKLSAgICB3a1dpbGxFbmRMaXZlUmVzaXplKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXIuZ2V0KCkpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJs
ZSgpKQorICAgICAgICB3a1dpbGxFbmRMaXZlUmVzaXplKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXIuZ2V0KCkpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmNvbnRl
bnRBcmVhRGlkU2hvdygpIGNvbnN0CiB7Ci0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQot
ICAgIHdrQ29udGVudEFyZWFEaWRTaG93KG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0
KCkpOwotI2VuZGlmCisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQor
ICAgICAgICB3a0NvbnRlbnRBcmVhRGlkU2hvdyhtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
LmdldCgpKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpjb250ZW50QXJl
YURpZEhpZGUoKSBjb25zdAogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICB3
a0NvbnRlbnRBcmVhRGlkSGlkZShtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsK
LSNlbmRpZgorICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAg
ICAgd2tDb250ZW50QXJlYURpZEhpZGUobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQo
KSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6ZGlkQmVnaW5TY3JvbGxH
ZXN0dXJlKCkgY29uc3QKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgd2tE
aWRCZWdpblNjcm9sbEdlc3R1cmUobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7
Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAg
ICAgIHdrRGlkQmVnaW5TY3JvbGxHZXN0dXJlKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIu
Z2V0KCkpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmRpZEVuZFNjcm9s
bEdlc3R1cmUoKSBjb25zdAogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICB3
a0RpZEVuZFNjcm9sbEdlc3R1cmUobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7
Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAg
ICAgIHdrRGlkRW5kU2Nyb2xsR2VzdHVyZShtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdl
dCgpKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpkaWRBZGRWZXJ0aWNh
bFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKLSNpZiBVU0UoV0tfU0NST0xMQkFS
X1BBSU5URVIpCi0gICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKj4oV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0g
ICAgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVsZWdhdGUocGFpbnRlciwgbV9zY3JvbGxiYXJQYWlu
dGVyRGVsZWdhdGUuZ2V0KCkpOwotICAgIHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVy
KG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCksIHBhaW50ZXIsIGZhbHNlKTsKLSAg
ICBpZiAoc2Nyb2xsYWJsZUFyZWEoKS0+aW5MaXZlUmVzaXplKCkpCi0gICAgICAgIHdrU2V0U2Ny
b2xsYmFyUGFpbnRlcktub2JBbHBoYShwYWludGVyLCAxKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHNjcm9sbGJhcik7Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpIHsKKyAgICAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKj4oV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJh
cik7CisgICAgICAgIHdrU2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKHBhaW50ZXIsIG1fc2Ny
b2xsYmFyUGFpbnRlckRlbGVnYXRlLmdldCgpKTsKKyAgICAgICAgd2tTZXRQYWludGVyRm9yUGFp
bnRlckNvbnRyb2xsZXIobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSwgcGFpbnRl
ciwgZmFsc2UpOworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEoKS0+aW5MaXZlUmVzaXplKCkp
CisgICAgICAgICAgICB3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEocGFpbnRlciwgMSk7
CisgICAgfQogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OndpbGxSZW1vdmVW
ZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKLSNpZiBVU0UoV0tfU0NS
T0xMQkFSX1BBSU5URVIpCi0gICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKj4oV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJh
cik7Ci0gICAgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVsZWdhdGUocGFpbnRlciwgbmlsKTsKLSAg
ICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxlcihtX3Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyLmdldCgpLCBuaWwsIGZhbHNlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNjcm9s
bGJhcik7Ci0jZW5kaWYKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkp
IHsKKyAgICAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKj4oV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWU6Om5hdGl2ZVRoZW1lKCkpLT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAg
ICAgIHdrU2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKHBhaW50ZXIsIG5pbCk7CisgICAgICAg
IHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXIuZ2V0KCksIG5pbCwgZmFsc2UpOworICAgIH0KIH0KIAogdm9pZCBTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICBXS1Njcm9sbGJhclBh
aW50ZXJSZWYgcGFpbnRlciA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWMqPihXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKSktPnBhaW50
ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKLSAgICB3a1Njcm9sbGJhclBhaW50ZXJTZXREZWxl
Z2F0ZShwYWludGVyLCBtX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSk7Ci0gICAgd2tT
ZXRQYWludGVyRm9yUGFpbnRlckNvbnRyb2xsZXIobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
ci5nZXQoKSwgcGFpbnRlciwgdHJ1ZSk7Ci0gICAgaWYgKHNjcm9sbGFibGVBcmVhKCktPmluTGl2
ZVJlc2l6ZSgpKQotICAgICAgICB3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEocGFpbnRl
ciwgMSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOwotI2VuZGlmCisgICAg
aWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CisgICAgICAgIFdLU2Nyb2xs
YmFyUGFpbnRlclJlZiBwYWludGVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYyo+KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpKS0+
cGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOworICAgICAgICB3a1Njcm9sbGJhclBhaW50
ZXJTZXREZWxlZ2F0ZShwYWludGVyLCBtX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSk7
CisgICAgICAgIHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFp
bnRlckNvbnRyb2xsZXIuZ2V0KCksIHBhaW50ZXIsIHRydWUpOworICAgICAgICBpZiAoc2Nyb2xs
YWJsZUFyZWEoKS0+aW5MaXZlUmVzaXplKCkpCisgICAgICAgICAgICB3a1NldFNjcm9sbGJhclBh
aW50ZXJLbm9iQWxwaGEocGFpbnRlciwgMSk7CisgICAgfQogfQogCiB2b2lkIFNjcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWM6OndpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQogewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICBXS1Njcm9s
bGJhclBhaW50ZXJSZWYgcGFpbnRlciA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMqPihXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKSkt
PnBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKLSAgICB3a1Njcm9sbGJhclBhaW50ZXJT
ZXREZWxlZ2F0ZShwYWludGVyLCBuaWwpOwotICAgIHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250
cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCksIG5pbCwgdHJ1ZSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOwotI2VuZGlmCisgICAgaWYgKGlzU2Ny
b2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CisgICAgICAgIFdLU2Nyb2xsYmFyUGFpbnRl
clJlZiBwYWludGVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYyo+KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpKS0+cGFpbnRlckZv
clNjcm9sbGJhcihzY3JvbGxiYXIpOworICAgICAgICB3a1Njcm9sbGJhclBhaW50ZXJTZXREZWxl
Z2F0ZShwYWludGVyLCBuaWwpOworICAgICAgICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJv
bGxlcihtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpLCBuaWwsIHRydWUpOworICAg
IH0KIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpjYW5jZWxBbmltYXRpb25z
KCkKIHsKICAgICBtX2hhdmVTY3JvbGxlZFNpbmNlUGFnZUxvYWQgPSBmYWxzZTsKIAotI2lmIFVT
RShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICBpZiAoc2Nyb2xsYmFyUGFpbnRUaW1lcklzQWN0
aXZlKCkpCi0gICAgICAgIHN0b3BTY3JvbGxiYXJQYWludFRpbWVyKCk7Ci0gICAgW21fc2Nyb2xs
YmFyUGFpbnRlckRlbGVnYXRlLmdldCgpIGNhbmNlbEFuaW1hdGlvbnNdOwotI2VuZGlmCisgICAg
aWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CisgICAgICAgIGlmIChzY3Jv
bGxiYXJQYWludFRpbWVySXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHN0b3BTY3JvbGxiYXJQYWlu
dFRpbWVyKCk7CisgICAgICAgIFttX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSBjYW5j
ZWxBbmltYXRpb25zXTsKKyAgICB9CiB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVy
bGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMubW0KaW5kZXggNzhmYzMx
OWMwZGY5NTA5ZTE1MzMwODkzN2QxMDU1ZTU3M2M4NTNhYS4uODE2YWIzOWZiOGEwYjg4YWZmZDBk
ZjUwNWFhNTRjODllMWNkYjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc0Nocm9taXVtTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXND
aHJvbWl1bU1hYy5tbQpAQCAtNjAsNiArNjAsNyBAQAogQHByb3BlcnR5IENHRmxvYXQga25vYkFs
cGhhOwogQHByb3BlcnR5IENHRmxvYXQgdHJhY2tBbHBoYTsKIEBwcm9wZXJ0eSBDR0Zsb2F0IGtu
b2JQcm9wb3J0aW9uOworQHByb3BlcnR5IE5TSW50ZWdlciBrbm9iU3R5bGU7CiBAcHJvcGVydHko
Z2V0dGVyPWlzRW5hYmxlZCkgQk9PTCBlbmFibGVkOwogQHByb3BlcnR5KGdldHRlcj1pc0hvcml6
b250YWwpIEJPT0wgaG9yaXpvbnRhbDsKIEBwcm9wZXJ0eSBkb3VibGUgZG91YmxlVmFsdWU7CkBA
IC03NSw2ICs3Niw3IEBACiAtICh2b2lkKXNldE92ZXJsYXlTY3JvbGxlclN0YXRlOihOU1Njcm9s
bGVyU3R5bGUpc3RhdGUKICAgICAgICAgICAgICAgIGZvcmNlSW1tZWRpYXRlbHk6KEJPT0wpZmxh
ZzsKIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkKWRlbGVnYXRlOworLSAoTlNSZWN0KXJlY3RGb3JQ
YXJ0OihOU1VJbnRlZ2VyKWFyZzE7CiAKIEBlbmQKIApAQCAtMTIyLDYgKzEyNCwxMSBAQCBzdGF0
aWMgTlNDb250cm9sU2l6ZSBzY3JvbGxiYXJDb250cm9sU2l6ZVRvTlNDb250cm9sU2l6ZShpbnQg
Y29udHJvbFNpemUpCiAKIHN0YXRpYyBOU1Njcm9sbGVyU3R5bGUgcHJlZmVycmVkU2Nyb2xsZXJT
dHlsZSgpCiB7CisgICAgLy8gVE9ETyhzYWlsKTogRGlzYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMg
Zm9yIG5vdyB1bnRpbCB0aGUgZm9sbG93aW5nIGlzc3VlcyBhcmUgZml4ZWQ6CisgICAgLy8gIzE6
IEludmFsaWRhdGlvbiBpc3N1ZXMgY2F1c2VzIHRoZSBzY3JvbGxiYXIgdG8gbGVhdmUgdHJhaWxp
bmcgYXJ0aWZhY3RzLgorICAgIC8vICMyOiBGaW5kIHRpY2sgbWFya3MgbmVlZCB0byBiZSBkcmF3
biBvbiB0aGUgc2Nyb2xsYmFyIHRyYWNrLgorICAgIHJldHVybiBOU1Njcm9sbGVyU3R5bGVMZWdh
Y3k7CisKICAgICBpZiAoW05TU2Nyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihw
cmVmZXJyZWRTY3JvbGxlclN0eWxlKV0pCiAgICAgICAgIHJldHVybiBbTlNTY3JvbGxlciBwcmVm
ZXJyZWRTY3JvbGxlclN0eWxlXTsKICAgICByZXR1cm4gTlNTY3JvbGxlclN0eWxlTGVnYWN5OwpA
QCAtMTU5LDYgKzE2Niw3IEBAIHZvaWQgd2tTY3JvbGxiYXJQYWludGVyUGFpbnQoV0tTY3JvbGxi
YXJQYWludGVyUmVmIHBhaW50ZXIsIGJvb2wgZW5hYmxlZCwgZG91YmxlCiAgICAgICAgIGZyYW1l
UmVjdC5zaXplLmhlaWdodCA9IFtwYWludGVyIHRyYWNrV2lkdGhdOwogICAgIGVsc2UKICAgICAg
ICAgZnJhbWVSZWN0LnNpemUud2lkdGggPSBbcGFpbnRlciB0cmFja1dpZHRoXTsKKyAgICBmcmFt
ZVJlY3Qub3JpZ2luID0gTlNaZXJvUG9pbnQ7CiAKICAgICBbcGFpbnRlciBkcmF3S25vYlNsb3RJ
blJlY3Q6ZnJhbWVSZWN0IGhpZ2hsaWdodDpOT107CiAgICAgW3BhaW50ZXIgZHJhd0tub2JdOwpA
QCAtMjMwLDcgKzIzOCw3IEBAIHZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclN0
eWxlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgcGFpbnRlCiAKIENHUmVjdCB3a1Nj
cm9sbGJhclBhaW50ZXJLbm9iUmVjdChXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlcikKIHsK
LSAgICByZXR1cm4gTlNSZWN0VG9DR1JlY3QoTlNaZXJvUmVjdCk7CisgICAgcmV0dXJuIE5TUmVj
dFRvQ0dSZWN0KFtwYWludGVyIHJlY3RGb3JQYXJ0Ok5TU2Nyb2xsZXJLbm9iXSk7CiB9CiAKIHZv
aWQgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBw
YWludGVyLCBDR0Zsb2F0IGFscGhhKQpAQCAtMjQ1LDcgKzI1Myw3IEBAIHZvaWQgd2tTZXRTY3Jv
bGxiYXJQYWludGVyVHJhY2tBbHBoYShXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlciwgQ0dG
bG9hdCBhbHBoCiAKIHZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKFdLU2Nyb2xs
YmFyUGFpbnRlclJlZiBwYWludGVyLCB3a1Njcm9sbGVyS25vYlN0eWxlIHN0eWxlKQogewotICAg
IC8vIFRPRE8oc2FpbCk6IEEga25vYiBzdHlsZSBBUEkgZG9lc24ndCBleGlzdCBpbiB0aGUgc2Vl
ZHMgY3VycmVudGx5IGF2YWlsYWJsZS4gCisgICAgW3BhaW50ZXIgc2V0S25vYlN0eWxlOnN0eWxl
XTsKIH0KIAogV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiB3a01ha2VTY3JvbGxiYXJQ
YWludGVyQ29udHJvbGxlcihpZCBwYWludGVyQ29udHJvbGxlckRlbGVnYXRlKQpAQCAtMzI1LDEz
ICszMzMsNiBAQCB2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlckZvcmNlRmxhc2hTY3JvbGxlcnMoV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cgogCiBib29sIGlzU2Nyb2xsYmFyT3Zl
cmxheUFQSUF2YWlsYWJsZSgpCiB7Ci0gICAgLy8gVE9ETyhzYWlsKTogRGlzYWJsZSBvdmVybGF5
IHNjcm9sbGJhcnMgZm9yIG5vdyB1bnRpbCB0aGUgZm9sbG93aW5nIGlzc3VlcyBhcmUgZml4ZWQ6
Ci0gICAgLy8gIzE6IEludmFsaWRhdGlvbiBpc3N1ZXMgY2F1c2VzIHRoZSBzY3JvbGxiYXIgdG8g
bGVhdmUgdHJhaWxpbmcgYXJ0aWZhY3RzLgotICAgIC8vICMyOiBWYXJpb3VzIG1lc3NhZ2VzIHN1
Y2ggYXMgbGl2ZSByZXNpemUgc3RhcnRlZC9lbmRlZCBuZWVkIHRvIGJlIHBpcGVkIGZyb20gdGhl
IFVJLgotICAgIC8vICMzOiBGaW5kIHRpY2sgbWFya3MgbmVlZCB0byBiZSBkcmF3biBvbiB0aGUg
c2Nyb2xsYmFyIHRyYWNrLgotICAgIC8vICM0OiBOZWVkIHRvIGhhdmUgdGhlIHRoZW1lIGVuZ2lu
ZSBkcmF3IHRoZSB0aHVtYi4KLSAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBzdGF0aWMgYm9vbCBh
cGlBdmFpbGFibGUgPSBbbG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzY3JvbGxlckltcFdpdGhTdHlsZTpjb250cm9sU2l6ZTpob3Jpem9udGFs
OnJlcGxhY2luZ1Njcm9sbGVySW1wOildICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW2xvb2tVcE5TU2Nyb2xsZXJJbXBQYWlyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2Nyb2xsZXJTdHlsZSldOwogICAgIHJldHVybiBhcGlBdmFpbGFibGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLmgKaW5kZXggMWFiMmYxOGJjMDI5NDU1ZjA1YjQxNTY0OTVj
NDkxMmMwOTBjNzg1OC4uNmY2NDVlOGNmZTkzZDk0MDY1MWVjMjMyNjk0YWE5ODczY2Q3NWRkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjX2gKICNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Y19oCiAKKyNpbmNsdWRlICJTY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMuaCIK
ICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIgogCiAvLyBUaGlzIGZpbGUgKGFu
ZCBpdHMgYXNzb2NpYXRlZCAubW0gZmlsZSkgaXMgYSBjbG9uZSBvZiBTY3JvbGxiYXJUaGVtZU1h
Yy5oLgpAQCAtNDQsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CiAgICAgdmly
dHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsKQEAgLTUzLDYgKzU1LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKIAorICAgIHZv
aWQgc2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqLCBXS1Njcm9sbGJhclBhaW50
ZXJSZWYpOworICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyRm9yU2Nyb2xsYmFyKFNj
cm9sbGJhciopOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Ny
b2xsYmFyKik7CiAgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOwpAQCAtNjQs
NiArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhciopOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Ny
b2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOwogCiBwdWJsaWM6CiAgICAgdm9pZCBwcmVmZXJlbmNlc0NoYW5nZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IGRkNmNjYTJkZWIyMGUwMzZjNjBmNjIwMzMx
M2E3Nzc3MzE4OTgwNGIuLmFhOTdlZTRiZTMxOWJhNzA5ZmRkYWI1ZjhiZDJlMjdmYTEzNDRmMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtMjksMTAgKzI5LDEzIEBACiAKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkxv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
b3JDaHJvbWl1bU1hYy5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlIDxDYXJi
b24vQ2FyYm9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTU0LDE4ICs1
NywyOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC8vIC0gVGhlIGNsYXNzbmFtZSBjaGFu
Z2UgZnJvbSBTY3JvbGxiYXJUaGVtZU1hYyB0byBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLgog
Ly8gLSBJbiBwYWludCgpIHRoZSBjb2RlIHRvIHBhaW50IHRoZSB0cmFjaywgdGlja21hcmtzLCBh
bmQgdGh1bWIgc2VwYXJhdGVseS4KIC8vIC0gSW4gcGFpbnQoKSB0aGUgdGh1bWIgaXMgZHJhd24g
dmlhIENocm9tZUJyaWRnZS9XZWJUaGVtZUVuZ2luZS4KKy8vIC0gVmFyaW91cyBmdW5jdGlvbnMg
dGhhdCB3ZXJlIHNwbGl0IHVzaW5nICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisvLyAg
IGhhdmUgYmVlbiBjb21iaW5lZCB1c2luZyBydW50aW1lIGNoZWNrcyBpbnN0ZWFkLgogLy8KIC8v
IEZvciBhbGwgb3RoZXIgZGlmZmVyZW5jZXMsIGlmIGl0IHdhcyBpbnRyb2R1Y2VkIGluIHRoaXMg
ZmlsZSwgdGhlbiB0aGUKIC8vIG1haW50YWluZXIgZm9yZ290IHRvIGluY2x1ZGUgaXQgaW4gdGhl
IGxpc3Q7IG90aGVyd2lzZSBpdCBpcyBhbiB1cGRhdGUgdGhhdAogLy8gc2hvdWxkIGhhdmUgYmVl
biBhcHBsaWVkIHRvIHRoaXMgZmlsZSBidXQgd2FzIG5vdC4KIAotc3RhdGljIEhhc2hTZXQ8U2Ny
b2xsYmFyKj4qIGdTY3JvbGxiYXJzOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1AaW50ZXJmYWNl
IFNjcm9sbGJhclByZWZzT2JzZXJ2ZXIgOiBOU09iamVjdAordHlwZWRlZiBIYXNoTWFwPFNjcm9s
bGJhciosIFJldGFpblB0cjxXS1Njcm9sbGJhclBhaW50ZXJSZWY+ID4gU2Nyb2xsYmFyUGFpbnRl
ck1hcDsKKworc3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgpCiB7Cisg
ICAgc3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIG1hcCA9IG5ldyBTY3JvbGxiYXJQYWludGVy
TWFwOworICAgIHJldHVybiBtYXA7Cit9CiAKIH0KIAorQGludGVyZmFjZSBTY3JvbGxiYXJQcmVm
c09ic2VydmVyIDogTlNPYmplY3QKK3sKK30KKwogKyAodm9pZClyZWdpc3RlckFzT2JzZXJ2ZXI7
CiArICh2b2lkKWFwcGVhcmFuY2VQcmVmc0NoYW5nZWQ6KE5TTm90aWZpY2F0aW9uKil0aGVOb3Rp
ZmljYXRpb247CiArICh2b2lkKWJlaGF2aW9yUHJlZnNDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiop
dGhlTm90aWZpY2F0aW9uOwpAQCAtNzksMTIgKzkzLDEyIEBAIHN0YXRpYyBIYXNoU2V0PFNjcm9s
bGJhcio+KiBnU2Nyb2xsYmFyczsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZpY2F0aW9u
KTsKIAogICAgIHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMqPihTY3JvbGxi
YXJUaGVtZTo6bmF0aXZlVGhlbWUoKSktPnByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAgIGlmICgh
Z1Njcm9sbGJhcnMpCisgICAgaWYgKHNjcm9sbGJhck1hcCgpLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xs
YmFycy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9
IGdTY3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgKCppdCkt
PnN0eWxlQ2hhbmdlZCgpOwotICAgICAgICAoKml0KS0+aW52YWxpZGF0ZSgpOworICAgIFNjcm9s
bGJhclBhaW50ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IHNjcm9sbGJhck1hcCgpLT5lbmQoKTsKKyAg
ICBmb3IgKFNjcm9sbGJhclBhaW50ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gc2Nyb2xsYmFyTWFwKCkt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpdC0+Zmlyc3QtPnN0eWxlQ2hh
bmdlZCgpOworICAgICAgICBpdC0+Zmlyc3QtPmludmFsaWRhdGUoKTsKICAgICB9CiB9CiAKQEAg
LTEyNiwxMCArMTQwLDEzIEBAIHN0YXRpYyBpbnQgY091dGVyQnV0dG9uT3ZlcmxhcCA9IDI7CiBz
dGF0aWMgZmxvYXQgZ0luaXRpYWxCdXR0b25EZWxheSA9IDAuNWY7CiBzdGF0aWMgZmxvYXQgZ0F1
dG9zY3JvbGxCdXR0b25EZWxheSA9IDAuMDVmOwogc3RhdGljIGJvb2wgZ0p1bXBPblRyYWNrQ2xp
Y2sgPSBmYWxzZTsKLXN0YXRpYyBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGdCdXR0b25QbGFj
ZW1lbnQgPSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOworc3RhdGljIFNjcm9sbGJhckJ1dHRv
bnNQbGFjZW1lbnQgZ0J1dHRvblBsYWNlbWVudCA9IGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWls
YWJsZSgpID8gU2Nyb2xsYmFyQnV0dG9uc05vbmUgOiBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5k
OwogCiBzdGF0aWMgdm9pZCB1cGRhdGVBcnJvd1BsYWNlbWVudCgpCiB7CisgICAgaWYgKGlzU2Ny
b2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBOU1N0
cmluZyAqYnV0dG9uUGxhY2VtZW50ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gb2JqZWN0Rm9yS2V5OkAiQXBwbGVTY3JvbGxCYXJWYXJpYW50Il07CiAgICAgaWYgKFti
dXR0b25QbGFjZW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAiU2luZ2xlIl0pCiAgICAgICAgIGdCdXR0
b25QbGFjZW1lbnQgPSBTY3JvbGxiYXJCdXR0b25zU2luZ2xlOwpAQCAtMTM4LDIzICsxNTUsMjkg
QEAgc3RhdGljIHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1lbnQoKQogICAgIGVsc2UgaWYgKFtidXR0
b25QbGFjZW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAiRG91YmxlQm90aCJdKQogICAgICAgICBnQnV0
dG9uUGxhY2VtZW50ID0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUJvdGg7CiAgICAgZWxzZQotICAg
ICAgICBnQnV0dG9uUGxhY2VtZW50ID0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZDsgLy8gVGhl
IGRlZmF1bHQgaXMgU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZUVuZC4KKyAgICAgICAgZ0J1dHRvblBs
YWNlbWVudCA9IFNjcm9sbGJhckJ1dHRvbnNEb3VibGVFbmQ7CiB9CiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CiB7Ci0gICAgaWYgKCFnU2Nyb2xsYmFycykKLSAgICAgICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFz
aFNldDxTY3JvbGxiYXIqPjsKLSAgICBnU2Nyb2xsYmFycy0+YWRkKHNjcm9sbGJhcik7CisgICAg
Ym9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcjsKKyAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgc2Nyb2xsYmFyUGFpbnRlciA9
IHdrTWFrZVNjcm9sbGJhclBhaW50ZXIoc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLCBpc0hvcml6
b250YWwpOworICAgIHNjcm9sbGJhck1hcCgpLT5hZGQoc2Nyb2xsYmFyLCBzY3JvbGxiYXJQYWlu
dGVyKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp1bnJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIGdTY3JvbGxiYXJzLT5yZW1vdmUo
c2Nyb2xsYmFyKTsKLSAgICBpZiAoZ1Njcm9sbGJhcnMtPmlzRW1wdHkoKSkgewotICAgICAgICBk
ZWxldGUgZ1Njcm9sbGJhcnM7Ci0gICAgICAgIGdTY3JvbGxiYXJzID0gMDsKLSAgICB9CisgICAg
c2Nyb2xsYmFyTWFwKCktPnJlbW92ZShzY3JvbGxiYXIpOworfQorCit2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBuZXdQYWludGVyKQoreworICAgIHNjcm9sbGJh
ck1hcCgpLT5zZXQoc2Nyb2xsYmFyLCBuZXdQYWludGVyKTsKK30KKworV0tTY3JvbGxiYXJQYWlu
dGVyUmVmIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50ZXJGb3JTY3JvbGxiYXIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCit7CisgICAgcmV0dXJuIHNjcm9sbGJhck1hcCgpLT5nZXQoc2Ny
b2xsYmFyKS5nZXQoKTsKIH0KIAogU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6U2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYygpCkBAIC0xODMsNyArMjA2LDE4IEBAIHZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYzo6cHJlZmVyZW5jZXNDaGFuZ2VkKCkKIAogaW50IFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWM6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSkKIHsKLSAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07
CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gd2tTY3JvbGxiYXJUaGlja25lc3MoY29udHJvbFNpemUpOworICAgIGVsc2UKKyAgICAgICAg
cmV0dXJuIGNTY3JvbGxiYXJUaGlja25lc3NbY29udHJvbFNpemVdOworfQorCitib29sIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4g
d2tTY3JvbGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3JvbGxlcnMoKTsKKyAgICBlbHNlCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogZG91YmxlIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpCkBAIC0yMDMsMjAgKzIzNywyOCBAQCBTY3Jv
bGxiYXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OmJ1dHRvbnNQ
bGFjZW1lbnQoKSBjb25zdAogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6Omhhc0J1
dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5h
YmxlZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/Ci0gICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDoKLSAgICAgICAgICAgICBzY3Jv
bGxiYXItPmhlaWdodCgpKSA+PSAyICogKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7
CisgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIGdCdXR0b25QbGFjZW1lbnQgIT0g
U2Nyb2xsYmFyQnV0dG9uc05vbmUKKyAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIKKyAgICAgICAgICAgICA/IHNjcm9sbGJhci0+
d2lkdGgoKQorICAgICAgICAgICAgIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVh
bEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0
W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOwogfQogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogeworICAgIGludCBtaW5M
ZW5ndGhGb3JUaHVtYjsKKyAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkp
CisgICAgICAgIG1pbkxlbmd0aEZvclRodW1iID0gd2tTY3JvbGxiYXJNaW5pbXVtVG90YWxMZW5n
dGhOZWVkZWRGb3JUaHVtYihzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkpOwor
ICAgIGVsc2UKKyAgICAgICAgbWluTGVuZ3RoRm9yVGh1bWIgPSAyICogY0J1dHRvbkluc2V0W3Nj
cm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpXSArIDE7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/CiAgICAgICAgICAg
ICAgc2Nyb2xsYmFyLT53aWR0aCgpIDoKLSAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgp
KSA+PSAyICogY0J1dHRvbkluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gKyBjVGh1bWJN
aW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSArIDE7CisgICAgICAgICAgICAgc2Ny
b2xsYmFyLT5oZWlnaHQoKSkgPj0gbWluTGVuZ3RoRm9yVGh1bWI7CiB9CiAKIHN0YXRpYyBJbnRS
ZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6
ZSwgYm9vbCBzdGFydCkKIHsKKyAgICBBU1NFUlQoZ0J1dHRvblBsYWNlbWVudCAhPSBTY3JvbGxi
YXJCdXR0b25zTm9uZSk7CisKICAgICBJbnRSZWN0IHBhaW50UmVjdChidXR0b25SZWN0KTsKICAg
ICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBwYWlu
dFJlY3Quc2V0V2lkdGgoY1JlYWxCdXR0b25MZW5ndGhbY29udHJvbFNpemVdKTsKQEAgLTM0NCw3
ICszODYsMTAgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcKIAogaW50IFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsK
LSAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07Cisg
ICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4g
d2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgoc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxi
YXIpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZ0KQpAQCAtMzU2LDYgKzQwMSwxMSBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nbwog
ICAgIHJldHVybiBldnQuYWx0S2V5KCk7CiB9CiAKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4gZXZlbnQuYWx0S2V5KCk7
Cit9CisKIHN0YXRpYyBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFy
UGFydCBwYXJ0KQogewogICAgIHN3aXRjaCAocGFydCkgewpAQCAtMzc0LDYgKzQyNCwxOCBAQCBz
dGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFy
dCkKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUgd2tTY3JvbGxlcktub2JTdHlsZSB0b1Njcm9s
bGJhclBhaW50ZXJLbm9iU3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHN0eWxlKQoreworICAg
IHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURhcms6Cisg
ICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlRGFyazsKKyAgICBjYXNlIFNjcm9sbGJh
ck92ZXJsYXlTdHlsZUxpZ2h0OgorICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZUxp
Z2h0OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlRGVm
YXVsdDsKKyAgICB9Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUJyaWRnZTo6VGhlbWVQYWludFN0YXRl
IHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7CiAgICAg
aWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtQnJpZGdl
OjpTdGF0ZURpc2FibGVkOwpAQCAtMzg3LDYgKzQ0OSw0NiBAQCBzdGF0aWMgUGxhdGZvcm1Ccmlk
Z2U6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIq
IHNjcgogCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpCiB7CisgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7Cisg
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKKyAgICAgICAgZmxvYXQgb3ZlcmhhbmcgPSAwOworCisg
ICAgICAgIGlmIChzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA8IDApIHsKKyAgICAgICAgICAgIC8v
IFNjcm9sbGVkIHBhc3QgdGhlIHRvcC4KKyAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAg
ICAgIG92ZXJoYW5nID0gLXNjcm9sbGJhci0+Y3VycmVudFBvcygpOworICAgICAgICB9IGVsc2Ug
aWYgKHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSArIHNjcm9sbGJhci0+Y3VycmVudFBvcygpID4g
c2Nyb2xsYmFyLT50b3RhbFNpemUoKSkgeworICAgICAgICAgICAgLy8gU2Nyb2xsZWQgcGFzdCB0
aGUgYm90dG9tLgorICAgICAgICAgICAgdmFsdWUgPSAxOworICAgICAgICAgICAgb3Zlcmhhbmcg
PSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSAtIHNj
cm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBX
aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgc2Nyb2xsYWJsZSBhcmVhLgorICAgICAgICAgICAgaW50
IG1heGltdW0gPSBzY3JvbGxiYXItPm1heGltdW0oKTsKKyAgICAgICAgICAgIGlmIChtYXhpbXVt
ID4gMCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjcm9sbGJhci0+Y3VycmVudFBvcygpIC8g
bWF4aW11bTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7Cisg
ICAgICAgIH0KKworICAgICAgICBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKiBzY3JvbGxBbmlt
YXRvciA9IHN0YXRpY19jYXN0PFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMqPihzY3JvbGxiYXIt
PnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbEFuaW1hdG9yKCkpOworICAgICAgICBzY3JvbGxBbmlt
YXRvci0+c2V0SXNEcmF3aW5nSW50b0xheWVyKGNvbnRleHQtPmlzQ0FMYXllckNvbnRleHQoKSk7
CisKKyAgICAgICAgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKHBhaW50ZXJGb3JTY3Jv
bGxiYXIoc2Nyb2xsYmFyKSwgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKHNjcm9sbGJhci0+
c2Nyb2xsYWJsZUFyZWEoKS0+cmVjb21tZW5kZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSkpOwor
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7
CisgICAgICAgIGNvbnRleHQtPmNsaXAoZGFtYWdlUmVjdCk7CisgICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZShzY3JvbGxiYXItPmZyYW1lUmVjdCgpLngoKSwgc2Nyb2xsYmFyLT5mcmFtZVJlY3Qo
KS55KCkpOworICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KGNvbnRleHQpOworICAgICAgICB3a1Njcm9sbGJhclBhaW50ZXJQYWludChzY3JvbGxiYXJNYXAo
KS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGJhci0+ZW5hYmxlZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PENHRmxv
YXQ+KHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSkgLSBvdmVyaGFuZykgLyBzY3JvbGxiYXItPnRv
dGFsU2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXItPmZy
YW1lUmVjdCgpKTsKKworICAgICAgICBzY3JvbGxBbmltYXRvci0+c2V0SXNEcmF3aW5nSW50b0xh
eWVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgSElUaGVtZVRy
YWNrRHJhd0luZm8gdHJhY2tJbmZvOwogICAgIHRyYWNrSW5mby52ZXJzaW9uID0gMDsKICAgICB0
cmFja0luZm8ua2luZCA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBSZWd1bGFyU2Nyb2xs
YmFyID8ga1RoZW1lTWVkaXVtU2Nyb2xsQmFyIDoga1RoZW1lU21hbGxTY3JvbGxCYXI7CkBAIC01
MDEsNCArNjAzLDMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KIH0KIAogfQotCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>