<?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>83283</bug_id>
          
          <creation_ts>2012-04-05 08:32:09 -0700</creation_ts>
          <short_desc>[chromium] Ensure that animations continue to run when transform-style is changed</short_desc>
          <delta_ts>2012-05-11 11:03:37 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>84033</dependson>
          <blocked>85813</blocked>
    
    <blocked>86109</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596589</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-04-05 08:32:09 -0700</bug_when>
    <thetext>The current sync logic avoids pushing running animations to the impl thread because they should already be there. However, if the impl thread layer tree has been recreated (due to being backgrounded/unbackgrounded), then we do need to push the running animations across to the impl thread.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596593</commentid>
    <comment_count>1</comment_count>
      <attachid>135833</attachid>
    <who name="">vollick</who>
    <bug_when>2012-04-05 08:34:58 -0700</bug_when>
    <thetext>Created attachment 135833
Patch

Ensures that we do push running animation to the impl thread when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596649</commentid>
    <comment_count>2</comment_count>
      <attachid>135833</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-05 09:57:51 -0700</bug_when>
    <thetext>Comment on attachment 135833
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCActiveAnimation.cpp:-135
&gt; -void CCActiveAnimation::synchronizeProperties(CCActiveAnimation* other)

not used any longer?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:-250
&gt; -        if (!m_activeAnimations[i]-&gt;needsSynchronizedStartTime())

Hoist m_activeAnimations[i] to a temp var.

Possibly, move the body of this loop to CCActiveAnimation where pushProps used to was? Not sure... but this all feels like animation &quot;push&quot; logic.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:252
&gt; +        if (controllerImpl-&gt;m_initialized &amp;&amp; !m_activeAnimations[i]-&gt;needsSynchronizedStartTime())

Can you come up with a better name. ActivatedOnImplThread?

Having a hard time understanding why this is conditional on initialize. Document why.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:258
&gt; +        // If controllerImpl is uninitialized and the animation does not need a synchronized start

Again, unitialized isn&apos;t conveying purpose here. This whole comment block really breaks my head. Your comment text says if (!uninitialized) but then your branch is actually the reverse, which makes it hard to associate the explanation with the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597189</commentid>
    <comment_count>3</comment_count>
      <attachid>135977</attachid>
    <who name="">vollick</who>
    <bug_when>2012-04-05 21:11:09 -0700</bug_when>
    <thetext>Created attachment 135977
Patch

Ensures that we do push running animation to the impl thread when necessary.(In reply to comment #2)
&gt; (From update of attachment 135833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135833&amp;action=review
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCActiveAnimation.cpp:-135
&gt; &gt; -void CCActiveAnimation::synchronizeProperties(CCActiveAnimation* other)
&gt;
&gt; not used any longer?
Nope, it&apos;s dead code.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:-250
&gt; &gt; -        if (!m_activeAnimations[i]-&gt;needsSynchronizedStartTime())
&gt;
&gt; Hoist m_activeAnimations[i] to a temp var.
Done.
&gt;
&gt; Possibly, move the body of this loop to CCActiveAnimation where pushProps used to was? Not sure... but this all feels like animation &quot;push&quot; logic.
Hmm. I can&apos;t see a nice way of doing that. The function would conditionally create the new animation and return it and we would add it to the impl thread controller in this loop?
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:252
&gt; &gt; +        if (controllerImpl-&gt;m_initialized &amp;&amp; !m_activeAnimations[i]-&gt;needsSynchronizedStartTime())
&gt;
&gt; Can you come up with a better name. ActivatedOnImplThread?
I renamed it m_hasSynchronizedWithMainThread since it&apos;s meant to indicate that we&apos;ve done at least one sync.
&gt;
&gt; Having a hard time understanding why this is conditional on initialize. Document why.
Updated the comment.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:258
&gt; &gt; +        // If controllerImpl is uninitialized and the animation does not need a synchronized start
&gt;
&gt; Again, unitialized isn&apos;t conveying purpose here. This whole comment block really breaks my head. Your comment text says if (!uninitialized) but then your branch is actually the reverse, which makes it hard to associate the explanation with the code.
Renamed the variable and updated the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600674</commentid>
    <comment_count>4</comment_count>
      <attachid>136777</attachid>
    <who name="">vollick</who>
    <bug_when>2012-04-11 16:08:57 -0700</bug_when>
    <thetext>Created attachment 136777
Patch

Added code to ensure that when we switch the primary layer in GraphicsLayerChromium,
we also transfer the layer animation controller and all its animations (and force
a transfer of all animations to the cc thread).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600688</commentid>
    <comment_count>5</comment_count>
      <attachid>136777</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-11 16:22:44 -0700</bug_when>
    <thetext>Comment on attachment 136777
Patch

This is a case where I think having layout test coverage (in addition to the unit test) makes sense since this layer transferring behavior is pretty particular to how the GraphicsLayer interface works.  Do we run layout tests with this animation path on currently?  What do we need to do to get there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600778</commentid>
    <comment_count>6</comment_count>
      <attachid>136777</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-11 18:06:39 -0700</bug_when>
    <thetext>Comment on attachment 136777
Patch

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

+1 to layout test to test this case. Do we need something else that tests the transfer code?

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:589
&gt; +        m_transformLayer-&gt;layerAnimationController()-&gt;setForceSync();

is this forceSync required? Does it make sense for setting an animation controller to internally force sync?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612615</commentid>
    <comment_count>7</comment_count>
      <attachid>139450</attachid>
    <who name="">vollick</who>
    <bug_when>2012-04-30 07:25:25 -0700</bug_when>
    <thetext>Created attachment 139450
Patch

(In reply to comment #6)
&gt; (From update of attachment 136777 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136777&amp;action=review
&gt;
&gt; +1 to layout test to test this case. Do we need something else that tests the transfer code?
Would it be acceptable to submit the layout test in a separate CL? Layout tests with threaded animation have been delayed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:589
&gt; &gt; +        m_transformLayer-&gt;layerAnimationController()-&gt;setForceSync();
&gt;
&gt; is this forceSync required? Does it make sense for setting an animation controller to internally force sync?
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613592</commentid>
    <comment_count>8</comment_count>
      <attachid>139660</attachid>
    <who name="">vollick</who>
    <bug_when>2012-05-01 12:53:51 -0700</bug_when>
    <thetext>Created attachment 139660
Patch

I&apos;ve added another unit test to cover the GraphicsLayerChromium portion of the CL.
Would this be acceptable in place of a layout test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614046</commentid>
    <comment_count>9</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-02 00:09:22 -0700</bug_when>
    <thetext>Sorry, I agree with james here. I think you need to do a real layout test...

Look at the animation layout tests for examples... I know its different feeling than layout testing, but all you&apos;re trying to do is come up with a reduced html version of the thing that failed on us originally, and then check it in as a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614047</commentid>
    <comment_count>10</comment_count>
      <attachid>139660</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-02 00:10:47 -0700</bug_when>
    <thetext>Comment on attachment 139660
Patch

Patch itself, LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620721</commentid>
    <comment_count>11</comment_count>
      <attachid>141199</attachid>
    <who name="">vollick</who>
    <bug_when>2012-05-10 10:59:31 -0700</bug_when>
    <thetext>Created attachment 141199
Patch

Added layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620796</commentid>
    <comment_count>12</comment_count>
      <attachid>141210</attachid>
    <who name="">vollick</who>
    <bug_when>2012-05-10 11:42:06 -0700</bug_when>
    <thetext>Created attachment 141210
Patch

Updating layout test so that there is no visible text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620805</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 11:46:44 -0700</bug_when>
    <thetext>Attachment 141210 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/anim...&quot; exit_code: 1
LayoutTests/platform/chromium/test_expectations.txt:3891:  More specific entry on line 2976 overrides line 3891 fast/images/color-jpeg-with-color-profile.html  [test/expectations] [5]
LayoutTests/platform/chromium/test_expectations.txt:3927:  Duplicate or ambiguous expectation. tables/mozilla/bugs/bug1188.html  [test/expectations] [5]
Total errors found: 2 in 15 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>620822</commentid>
    <comment_count>14</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-05-10 11:58:40 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Attachment 141210 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/anim...&quot; exit_code: 1
&gt; LayoutTests/platform/chromium/test_expectations.txt:3891:  More specific entry on line 2976 overrides line 3891 fast/images/color-jpeg-with-color-profile.html  [test/expectations] [5]
&gt; LayoutTests/platform/chromium/test_expectations.txt:3927:  Duplicate or ambiguous expectation. tables/mozilla/bugs/bug1188.html  [test/expectations] [5]
&gt; Total errors found: 2 in 15 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

These aren&apos;t my changes (double checked the diff). Not sure what&apos;s making the style bot unhappy here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621162</commentid>
    <comment_count>15</comment_count>
      <attachid>141210</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-10 17:47:12 -0700</bug_when>
    <thetext>Comment on attachment 141210
Patch

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

&gt; LayoutTests/animations/change-transform-style-during-animation-expected.txt:1
&gt; +layer at (0,0) size 800x600

we shouldn&apos;t have a render tree dump on this - use layoutTestController.dumpAsText(true) to suppress this output and have the output just be the textContent of the document (i.e. the string &quot;PASS - ...&quot;

&gt; LayoutTests/platform/chromium/test_expectations.txt:3886
&gt; +// Will need to rebaseline once results are generated for these platforms

if you fix the test to output only text+pixels instead of a render tree you won&apos;t need this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621288</commentid>
    <comment_count>16</comment_count>
      <attachid>141331</attachid>
    <who name="">vollick</who>
    <bug_when>2012-05-10 22:56:26 -0700</bug_when>
    <thetext>Created attachment 141331
Patch

There was some logic added to CCLayerAnimationController to handle the case where we&apos;ve dropped the impl tree. Since this is no longer done, I&apos;ve removed this code.

(In reply to comment #15)
&gt; (From update of attachment 141210 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141210&amp;action=review
&gt;
&gt; &gt; LayoutTests/animations/change-transform-style-during-animation-expected.txt:1
&gt; &gt; +layer at (0,0) size 800x600
&gt;
&gt; we shouldn&apos;t have a render tree dump on this - use layoutTestController.dumpAsText(true) to suppress this output and have the output just be the textContent of the document (i.e. the string &quot;PASS - ...&quot;
Done.
&gt;
&gt; &gt; LayoutTests/platform/chromium/test_expectations.txt:3886
&gt; &gt; +// Will need to rebaseline once results are generated for these platforms
&gt;
&gt; if you fix the test to output only text+pixels instead of a render tree you won&apos;t need this
Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621776</commentid>
    <comment_count>17</comment_count>
      <attachid>141331</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-11 10:34:07 -0700</bug_when>
    <thetext>Comment on attachment 141331
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621813</commentid>
    <comment_count>18</comment_count>
      <attachid>141331</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 11:03:31 -0700</bug_when>
    <thetext>Comment on attachment 141331
Patch

Clearing flags on attachment: 141331

Committed r116786: &lt;http://trac.webkit.org/changeset/116786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621814</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 11:03:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135833</attachid>
            <date>2012-04-05 08:34:58 -0700</date>
            <delta_ts>2012-04-05 21:11:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120405113456.patch</filename>
            <type>text/plain</type>
            <size>9672</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJkNjYyOGYwNDY0ZjY2
MzA0MjRmOWYxMjA1OGNhZDMyODFkNWVlMi4uNzgxODUyYWQ4NjY4MWIzMTk5ZDQ1N2VkNTcwMmVk
ODI0NmQ1YWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTA1ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2hv
dWxkIHN5bmNocm9uaXplIHJ1bm5pbmcgYW5pbWF0aW9ucyBpZiB0aGUgaW1wbCB0aHJlYWQgY29u
dHJvbGxlciBoYXMganVzdCBiZWVuIHJlY3JlYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgaW4gQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJUZXN0LmRvU3luY1J1bm5pbmdBbmltYXRpb25zV2hlbkNvbnRyb2xsZXJJc1VuaW5pdGlhbGl6
ZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fj
dGl2ZUFuaW1hdGlvbi5oOgorICAgICAgICAoQ0NBY3RpdmVBbmltYXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6
CisKIDIwMTItMDQtMDUgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgSGlkZSBkYXRhbGlzdCBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVjMjZkOGI4YzM5Zjg5ZmRiMzJhOTc4MzZhMzQzYTZhZTZmNThiZWIuLjYxZmQzYzk1YjNlMjNj
MWJkNWFjOWUxNTQzYTgwNWZjOGYxODA2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMDUgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBTaG91bGQgc3luY2hyb25pemUgcnVubmluZyBh
bmltYXRpb25zIGlmIHRoZSBpbXBsIHRocmVhZCBjb250cm9sbGVyIGhhcyBqdXN0IGJlZW4gcmVj
cmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpURVNUKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKwogMjAxMi0wNC0wNSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbY2hyb21pdW1dIGNsZWFuIHVwIFdEVEZDOjpzYXZlQXMgYWZ0ZXIgbWlncmF0aW9uIHRv
IHNhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwCmluZGV4IDI2MGQ3ZDQ3
ZTNiMzFiNjJmNTliMWRhODA2MGFjZDViNzg3MzcyYWMuLjFhYmY5ZmNmZWM1MjUwY2JiNThkNzQ2
MDVmYTFkNGIxMDI5MDZlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAK
QEAgLTEzMiwyNSArMTMyLDQgQEAgUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gQ0NBY3Rp
dmVBbmltYXRpb246OmNsb25lRm9ySW1wbFRocmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmV0
dXJuLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDQ0FjdGl2ZUFuaW1hdGlvbjo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKENDQWN0aXZlQW5pbWF0aW9uKiBvdGhlcikKLXsKLSAgICAvLyBJdCBpcyBwb3Nz
aWJsZSBmb3IgdGhlIGltcGwgdGhyZWFkIHRvIGluaXRpYXRlIGEgcnVuIHN0YXRlIGNoYW5nZS4K
LSAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgYW5pbWF0aW9uIHdhcyB3YWl0aW5nIGZvciBh
IGZ1dHVyZSBldmVudCB0byB0YWtlCi0gICAgLy8gcGxhY2UsIGFuZCB0aGUgZXZlbnQgaGFzIGhh
cHBlbmVkLiBJbiB0aGF0IGNhc2UsIHdlIHdhbnQgJ3RoaXMnIHRvCi0gICAgLy8gYXNzdW1lIHRo
ZSBpbXBsIHRocmVhZCdzIHJ1biBzdGF0ZSBhbmQgc3RhcnQgdGltZS4KLSAgICBpZiAoaXNXYWl0
aW5nKCkgJiYgb3RoZXItPmlzUnVubmluZ09ySGFzUnVuKCkpIHsKLSAgICAgICAgbV9ydW5TdGF0
ZSA9IG90aGVyLT5tX3J1blN0YXRlOwotICAgICAgICBtX3N0YXJ0VGltZSA9IG90aGVyLT5tX3N0
YXJ0VGltZTsKLSAgICB9IGVsc2UgewotICAgICAgICBvdGhlci0+bV9ydW5TdGF0ZSA9IG1fcnVu
U3RhdGU7Ci0gICAgICAgIG90aGVyLT5tX3N0YXJ0VGltZSA9IG1fc3RhcnRUaW1lOwotICAgIH0K
LQotICAgIC8vIENoYW5nZSBpbiBzdGF0ZSByZWxhdGVkIHRvIGl0ZXJhdGlvbnMgYW5kIHBhdXNl
IGlzIGFsd2F5cyBpbml0aWF0ZWQgZnJvbQotICAgIC8vIHRoZSBtYWluIHRocmVhZCwgc28gaXQg
aXMgc2FmZSB0byBwdXNoIHByb3BlcnRpZXMgaW4gdGhhdCBkaXJlY3Rpb24uCi0gICAgb3RoZXIt
Pm1faXRlcmF0aW9ucyA9IG1faXRlcmF0aW9uczsKLSAgICBvdGhlci0+bV9wYXVzZVRpbWUgPSBt
X3BhdXNlVGltZTsKLSAgICBvdGhlci0+bV90b3RhbFBhdXNlZFRpbWUgPSBtX3RvdGFsUGF1c2Vk
VGltZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5p
bWF0aW9uLmgKaW5kZXggNWRiODNhZjk1NjIxZjY1MGYzZGZjM2VlYzMxNGQ0OGRkYzk0ZTRmNS4u
MzlkNmRjMGYzZTYyZDExODQ3YTllZmE2ZDM0NzFkZDEzYjA2MTMxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FjdGl2ZUFuaW1hdGlvbi5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHVibGljOgogCiAgICAgUGFz
c093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gY2xvbmVGb3JJbXBsVGhyZWFkKCkgY29uc3Q7CiAK
LSAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydGllcyhDQ0FjdGl2ZUFuaW1hdGlvbiopOwotCiBw
cml2YXRlOgogICAgIENDQWN0aXZlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBbmltYXRpb25DdXJ2
ZT4sIGludCBhbmltYXRpb25JZCwgaW50IGdyb3VwSWQsIFRhcmdldFByb3BlcnR5KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDdm
NWE5MjhlOGNlMTk5MGEzOWM2M2ZkYTVjNGJiZGExN2RlOTNhOTAuLjY3MDliMGM1OWZhODhhZDg5
MWJlYjdiNzBjYTI5YmFkNDhkNmM2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTExMyw3ICsxMTMsOCBAQCBQYXNzT3duUHRyPEND
QWN0aXZlQW5pbWF0aW9uPiBjcmVhdGVBY3RpdmVBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbAogfSAvLyBuYW1lcGFjZQogCiBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICA6IG1faW5pdGlhbGl6ZWQo
ZmFsc2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKQEAgLTE3OSw2ICsxODAsNyBA
QCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoQW5pbWF0aW9uVXBkYXRlc1Rv
KENDTGF5ZXJBbmltYXRpb25Db250cm9sbAogewogICAgIHB1c2hOZXdBbmltYXRpb25zVG9JbXBs
VGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKICAgICByZW1vdmVBbmltYXRpb25zQ29tcGxldGVkT25N
YWluVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKKyAgICBjb250cm9sbGVySW1wbC0+bV9pbml0aWFs
aXplZCA9IHRydWU7CiB9CiAKIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1h
dGUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKiBldmVudHMp
CkBAIC0yNDcsMTMgKzI0OSwxOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpw
dXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xheWVyQW5pbWF0aW9uQwogICAgICAgICAv
LyB0byBiZSBjb3BpZWQgb3ZlciBhbmQgc3RhcnRlZDsgaXQgbWF5IGhhdmUgYWxyZWFkeSBmaW5p
c2hlZC4gSW4gdGhpcyBjYXNlLCB0aGUgaW1wbCB0aHJlYWQgYW5pbWF0aW9uCiAgICAgICAgIC8v
IHdpbGwgaGF2ZSBhbHJlYWR5IG5vdGlmaWVkIHRoYXQgaXQgaGFzIHN0YXJ0ZWQgYW5kIHRoZSBt
YWluIHRocmVhZCBhbmltYXRpb24gd2lsbCBubyBsb25nZXIgbmVlZAogICAgICAgICAvLyBhIHN5
bmNocm9uaXplZCBzdGFydCB0aW1lLgotICAgICAgICBpZiAoIW1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSkKKyAgICAgICAgaWYgKGNvbnRyb2xsZXJJ
bXBsLT5tX2luaXRpYWxpemVkICYmICFtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3luY2hy
b25pemVkU3RhcnRUaW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVG
b3JJbXBsVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQoIXRvQWRkLT5uZWVkc1N5bmNocm9uaXpl
ZFN0YXJ0VGltZSgpKTsKLSAgICAgICAgLy8gVGhlIG5ldyBhbmltYXRpb24gc2hvdWxkIGJlIHNl
dCB0byBydW4gYXMgc29vbiBhcyBwb3NzaWJsZS4KLSAgICAgICAgdG9BZGQtPnNldFJ1blN0YXRl
KENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5LCAwKTsKKwor
ICAgICAgICAvLyBJZiBjb250cm9sbGVySW1wbCBpcyB1bmluaXRpYWxpemVkIGFuZCB0aGUgYW5p
bWF0aW9uIGRvZXMgbm90IG5lZWQgYSBzeW5jaHJvbml6ZWQgc3RhcnQKKyAgICAgICAgLy8gdGlt
ZSwgdGhlbiB0aGUgY2MgbGF5ZXIgdHJlZSBoYXMganVzdCBiZWVuIHJlY3JlYXRlZCBhbmQgd2Ug
bXVzdCBmYWl0aGZ1bGx5IGNvcHkgZXZlcnkKKyAgICAgICAgLy8gYml0IG9mIHN0YXRlIHRvIHRo
ZSBpbXBsIHRocmVhZCdzIGFuaW1hdGlvbi4gT3RoZXJ3aXNlLCBpdCBpcyBhIG5ldyBhbmltYXRp
b24gYW5kIHNob3VsZCBiZQorICAgICAgICAvLyBzZXQgdG8gcnVuIGFzIHNvb24gYXMgcG9zc2li
bGUuCisgICAgICAgIGlmIChjb250cm9sbGVySW1wbC0+bV9pbml0aWFsaXplZCB8fCBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKCkpCisgICAgICAgICAg
ICB0b0FkZC0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JUYXJnZXRB
dmFpbGFiaWxpdHksIDApOworCiAgICAgICAgIGNvbnRyb2xsZXJJbXBsLT5hZGQodG9BZGQucmVs
ZWFzZSgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIuaAppbmRleCBiOTY1MmQwODkxNzFjOGFiMmM3MWE2NWYxYTAzNmM0OWQ2Yzg0N2M0
Li40NGIwZGNjOTU4OGZkMzY5YTgyODk0MGFiNGRkNDhjMjEzMmI3MmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTEwNyw2ICsxMDcsOSBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSk7CiAKKyAgICAvLyBBIGxheWVyIGFuaW1hdGlvbiBjb250cm9sbGVyIGlzIGluaXRpYWxpemVk
IGFmdGVyIGl0cyBmaXJzdCBzeW5jLgorICAgIGJvb2wgbV9pbml0aWFsaXplZDsKKwogICAgIEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBWZWN0b3I8T3du
UHRyPENDQWN0aXZlQW5pbWF0aW9uPiA+IG1fYWN0aXZlQW5pbWF0aW9uczsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyVGVzdC5jcHAKaW5kZXggMTEzYjYzOWUzNmQ4MDkxYTE1OWUyMDA0NjNlMTdi
ZDU3NTFkZjQ2MS4uZWQ1M2VjMzdmZWI0ZmJiMzA3N2Q2ZjNlMWJlOWI3NjA0ZTFmOWI5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcApAQCAtMTcxLDYgKzE3MSwzNiBAQCBURVNUKEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgZG9Ob3RTeW5jRmluaXNoZWRBbmltYXRpb24p
CiAgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwg
Q0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKIH0KIAorVEVTVChDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlclRlc3QsIGRvU3luY1J1bm5pbmdBbmltYXRpb25zV2hlbkNvbnRyb2xsZXJJc1Vu
aW5pdGlhbGl6ZWQpCit7CisgICAgRmFrZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCBk
dW1teUltcGw7CisgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9s
bGVySW1wbChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKCZkdW1teUltcGwpKTsK
KyAgICBGYWtlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IGR1bW15OworICAgIE93blB0
cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gY29udHJvbGxlcihDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcjo6Y3JlYXRlKCZkdW1teSkpOworCisgICAgRVhQRUNUX0ZBTFNFKGNvbnRyb2xs
ZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkp
KTsKKworICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9Db250cm9sbGVyKCpjb250cm9sbGVyLCAx
LCAwLCAxLCBmYWxzZSk7CisKKyAgICBjb250cm9sbGVyLT5wdXNoQW5pbWF0aW9uVXBkYXRlc1Rv
KGNvbnRyb2xsZXJJbXBsLmdldCgpKTsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXJJbXBs
LT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxp
dHksIGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRp
b246Ok9wYWNpdHkpLT5ydW5TdGF0ZSgpKTsKKworICAgIC8vIE5vdGlmeSBtYWluIHRocmVhZCBj
b250cm9sbGVyIHRoYXQgdGhlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4KKyAgICBjb250cm9sbGVy
LT5ub3RpZnlBbmltYXRpb25TdGFydGVkKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KDAsIDAsIEND
QWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCAwKSk7CisKKyAgICAvLyBSZWNyZWF0ZSB0aGUgaW1w
bCB0aHJlYWQgY29udHJvbGxlci4KKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI+IHVuaW5pdGlhbGl6ZWRDb250cm9sbGVySW1wbChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cjo6Y3JlYXRlKCZkdW1teUltcGwpKTsKKworICAgIEVYUEVDVF9GQUxTRSh1bmluaXRpYWxpemVk
Q29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6
T3BhY2l0eSkpOworCisgICAgY29udHJvbGxlci0+cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyh1bmlu
aXRpYWxpemVkQ29udHJvbGxlckltcGwuZ2V0KCkpOworCisgICAgLy8gVGhlIG1haW4gdGhyZWFk
IGhhcyBhIHJ1bm5pbmcgYW5pbWF0aW9uLCBpdCBzaG91bGQgc3RpbGwgYmUgc3luYydkIGJlY2F1
c2UgdGhlIGNvbnRyb2xsZXIgaXMgdW5pbml0aWFsaXplZC4KKyAgICBFWFBFQ1RfVFJVRSh1bmlu
aXRpYWxpemVkQ29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFu
aW1hdGlvbjo6T3BhY2l0eSkpOworfQorCiAvLyBUZXN0cyB0aGF0IHRyYW5zaXRpb25pbmcgb3Bh
Y2l0eSBmcm9tIDAgdG8gMSB3b3JrcyBhcyBleHBlY3RlZC4KIFRFU1QoQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJUZXN0LCBUcml2aWFsVHJhbnNpdGlvbikKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135977</attachid>
            <date>2012-04-05 21:11:09 -0700</date>
            <delta_ts>2012-04-11 16:08:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120406001108.patch</filename>
            <type>text/plain</type>
            <size>10976</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJkNjYyOGYwNDY0ZjY2
MzA0MjRmOWYxMjA1OGNhZDMyODFkNWVlMi4uNzgxODUyYWQ4NjY4MWIzMTk5ZDQ1N2VkNTcwMmVk
ODI0NmQ1YWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTA1ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2hv
dWxkIHN5bmNocm9uaXplIHJ1bm5pbmcgYW5pbWF0aW9ucyBpZiB0aGUgaW1wbCB0aHJlYWQgY29u
dHJvbGxlciBoYXMganVzdCBiZWVuIHJlY3JlYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgaW4gQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJUZXN0LmRvU3luY1J1bm5pbmdBbmltYXRpb25zV2hlbkNvbnRyb2xsZXJJc1VuaW5pdGlhbGl6
ZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fj
dGl2ZUFuaW1hdGlvbi5oOgorICAgICAgICAoQ0NBY3RpdmVBbmltYXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6
CisKIDIwMTItMDQtMDUgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgSGlkZSBkYXRhbGlzdCBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVjMjZkOGI4YzM5Zjg5ZmRiMzJhOTc4MzZhMzQzYTZhZTZmNThiZWIuLjYxZmQzYzk1YjNlMjNj
MWJkNWFjOWUxNTQzYTgwNWZjOGYxODA2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMDUgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBTaG91bGQgc3luY2hyb25pemUgcnVubmluZyBh
bmltYXRpb25zIGlmIHRoZSBpbXBsIHRocmVhZCBjb250cm9sbGVyIGhhcyBqdXN0IGJlZW4gcmVj
cmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpURVNUKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKwogMjAxMi0wNC0wNSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbY2hyb21pdW1dIGNsZWFuIHVwIFdEVEZDOjpzYXZlQXMgYWZ0ZXIgbWlncmF0aW9uIHRv
IHNhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwCmluZGV4IDI2MGQ3ZDQ3
ZTNiMzFiNjJmNTliMWRhODA2MGFjZDViNzg3MzcyYWMuLjFhYmY5ZmNmZWM1MjUwY2JiNThkNzQ2
MDVmYTFkNGIxMDI5MDZlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAK
QEAgLTEzMiwyNSArMTMyLDQgQEAgUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gQ0NBY3Rp
dmVBbmltYXRpb246OmNsb25lRm9ySW1wbFRocmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmV0
dXJuLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDQ0FjdGl2ZUFuaW1hdGlvbjo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKENDQWN0aXZlQW5pbWF0aW9uKiBvdGhlcikKLXsKLSAgICAvLyBJdCBpcyBwb3Nz
aWJsZSBmb3IgdGhlIGltcGwgdGhyZWFkIHRvIGluaXRpYXRlIGEgcnVuIHN0YXRlIGNoYW5nZS4K
LSAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgYW5pbWF0aW9uIHdhcyB3YWl0aW5nIGZvciBh
IGZ1dHVyZSBldmVudCB0byB0YWtlCi0gICAgLy8gcGxhY2UsIGFuZCB0aGUgZXZlbnQgaGFzIGhh
cHBlbmVkLiBJbiB0aGF0IGNhc2UsIHdlIHdhbnQgJ3RoaXMnIHRvCi0gICAgLy8gYXNzdW1lIHRo
ZSBpbXBsIHRocmVhZCdzIHJ1biBzdGF0ZSBhbmQgc3RhcnQgdGltZS4KLSAgICBpZiAoaXNXYWl0
aW5nKCkgJiYgb3RoZXItPmlzUnVubmluZ09ySGFzUnVuKCkpIHsKLSAgICAgICAgbV9ydW5TdGF0
ZSA9IG90aGVyLT5tX3J1blN0YXRlOwotICAgICAgICBtX3N0YXJ0VGltZSA9IG90aGVyLT5tX3N0
YXJ0VGltZTsKLSAgICB9IGVsc2UgewotICAgICAgICBvdGhlci0+bV9ydW5TdGF0ZSA9IG1fcnVu
U3RhdGU7Ci0gICAgICAgIG90aGVyLT5tX3N0YXJ0VGltZSA9IG1fc3RhcnRUaW1lOwotICAgIH0K
LQotICAgIC8vIENoYW5nZSBpbiBzdGF0ZSByZWxhdGVkIHRvIGl0ZXJhdGlvbnMgYW5kIHBhdXNl
IGlzIGFsd2F5cyBpbml0aWF0ZWQgZnJvbQotICAgIC8vIHRoZSBtYWluIHRocmVhZCwgc28gaXQg
aXMgc2FmZSB0byBwdXNoIHByb3BlcnRpZXMgaW4gdGhhdCBkaXJlY3Rpb24uCi0gICAgb3RoZXIt
Pm1faXRlcmF0aW9ucyA9IG1faXRlcmF0aW9uczsKLSAgICBvdGhlci0+bV9wYXVzZVRpbWUgPSBt
X3BhdXNlVGltZTsKLSAgICBvdGhlci0+bV90b3RhbFBhdXNlZFRpbWUgPSBtX3RvdGFsUGF1c2Vk
VGltZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5p
bWF0aW9uLmgKaW5kZXggNWRiODNhZjk1NjIxZjY1MGYzZGZjM2VlYzMxNGQ0OGRkYzk0ZTRmNS4u
MzlkNmRjMGYzZTYyZDExODQ3YTllZmE2ZDM0NzFkZDEzYjA2MTMxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FjdGl2ZUFuaW1hdGlvbi5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHVibGljOgogCiAgICAgUGFz
c093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gY2xvbmVGb3JJbXBsVGhyZWFkKCkgY29uc3Q7CiAK
LSAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydGllcyhDQ0FjdGl2ZUFuaW1hdGlvbiopOwotCiBw
cml2YXRlOgogICAgIENDQWN0aXZlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBbmltYXRpb25DdXJ2
ZT4sIGludCBhbmltYXRpb25JZCwgaW50IGdyb3VwSWQsIFRhcmdldFByb3BlcnR5KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDdm
NWE5MjhlOGNlMTk5MGEzOWM2M2ZkYTVjNGJiZGExN2RlOTNhOTAuLjhkNDhlNzM4NWI0ZWVmYjlm
N2IxMTk4OGRjMzhkNmQwMmU3MjVlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTExMyw3ICsxMTMsOCBAQCBQYXNzT3duUHRyPEND
QWN0aXZlQW5pbWF0aW9uPiBjcmVhdGVBY3RpdmVBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbAogfSAvLyBuYW1lcGFjZQogCiBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICA6IG1faGFzU3luY2hyb25p
emVkV2l0aE1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAK
QEAgLTE3OSw2ICsxODAsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNo
QW5pbWF0aW9uVXBkYXRlc1RvKENDTGF5ZXJBbmltYXRpb25Db250cm9sbAogewogICAgIHB1c2hO
ZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKICAgICByZW1vdmVBbmlt
YXRpb25zQ29tcGxldGVkT25NYWluVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKKyAgICBjb250cm9s
bGVySW1wbC0+bV9oYXNTeW5jaHJvbml6ZWRXaXRoTWFpblRocmVhZCA9IHRydWU7CiB9CiAKIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1Rp
bWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKiBldmVudHMpCkBAIC0yMzksMjEgKzI0MSwzMSBA
QCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1w
bFRocmVhZChDQ0xheWVyQW5pbWF0aW9uQwogewogICAgIC8vIEFueSBuZXcgYW5pbWF0aW9ucyBv
d25lZCBieSB0aGUgbWFpbiB0aHJlYWQncyBjb250cm9sbGVyIGFyZSBjbG9uZWQgYW5kIGFkZGUg
dG8gdGhlIGltcGwgdGhyZWFkJ3MgY29udHJvbGxlci4KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBDQ0FjdGl2ZUFu
aW1hdGlvbiogY3VycmVudEFuaW1hdGlvbiA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS5nZXQoKTsK
KwogICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGlzIGFscmVhZHkgcnVubmluZyBvbiB0aGUg
aW1wbCB0aHJlYWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29weSBpdCBvdmVyLgotICAgICAgICBp
ZiAoY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbihtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSkpCisg
ICAgICAgIGlmIChjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKGN1cnJlbnRBbmlt
YXRpb24tPmdyb3VwKCksIGN1cnJlbnRBbmltYXRpb24tPnRhcmdldFByb3BlcnR5KCkpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBpcyBub3Qg
cnVubmluZyBvbiB0aGUgaW1wbCB0aHJlYWQsIGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4g
dGhhdCBpdCBuZWVkcwotICAgICAgICAvLyB0byBiZSBjb3BpZWQgb3ZlciBhbmQgc3RhcnRlZDsg
aXQgbWF5IGhhdmUgYWxyZWFkeSBmaW5pc2hlZC4gSW4gdGhpcyBjYXNlLCB0aGUgaW1wbCB0aHJl
YWQgYW5pbWF0aW9uCi0gICAgICAgIC8vIHdpbGwgaGF2ZSBhbHJlYWR5IG5vdGlmaWVkIHRoYXQg
aXQgaGFzIHN0YXJ0ZWQgYW5kIHRoZSBtYWluIHRocmVhZCBhbmltYXRpb24gd2lsbCBubyBsb25n
ZXIgbmVlZAotICAgICAgICAvLyBhIHN5bmNocm9uaXplZCBzdGFydCB0aW1lLgotICAgICAgICBp
ZiAoIW1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSkK
KyAgICAgICAgLy8gSWYgdGhlIGltcGwgdGhyZWFkIGNvbnRyb2xsZXIgaGFzIG5vdCBzeW5jaHJv
bml6ZWQgd2l0aCB0aGUgbWFpbiB0aHJlYWQgeWV0LAorICAgICAgICAvLyBpdCBkb2Vzbid0IG1h
dHRlciB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5pbmcsIHdlIG11c3QgcHVz
aCBpdCB0bworICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQuIE90aGVyd2lzZSwgd2Ugc2hvdWxk
IG5ldmVyIHB1c2ggYSBydW5uaW5nIGFuaW1hdGlvbi4gVGhlCisgICAgICAgIC8vIGFuaW1hdGlv
biBtYXkgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkIG9uIHRoZSBpbXBsIHRocmVhZCBhbmQgd2Ugd291
bGQgYmUKKyAgICAgICAgLy8gaW5jb3JyZWN0bHkgcmUtYWRkaW5nIGl0IGluIHRoaXMgY2FzZS4K
KyAgICAgICAgaWYgKGNvbnRyb2xsZXJJbXBsLT5tX2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhy
ZWFkICYmICFjdXJyZW50QW5pbWF0aW9uLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9u
PiB0b0FkZChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmNsb25lRm9ySW1wbFRocmVhZCgpKTsKKyAg
ICAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZChjdXJyZW50QW5pbWF0aW9uLT5j
bG9uZUZvckltcGxUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghdG9BZGQtPm5lZWRzU3luY2hy
b25pemVkU3RhcnRUaW1lKCkpOwotICAgICAgICAvLyBUaGUgbmV3IGFuaW1hdGlvbiBzaG91bGQg
YmUgc2V0IHRvIHJ1biBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgICAgICB0b0FkZC0+c2V0UnVu
U3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHksIDAp
OworCisgICAgICAgIC8vIElmIGNvbnRyb2xsZXJJbXBsIGhhcyBiZWVuIHN5bmNocm9uaXplZCwg
dGhlbiB0aGlzIGlzIGEgbmV3IGFuaW1hdGlvbiBhbmQKKyAgICAgICAgLy8gc2hvdWxkIGJlIGlu
IHRoZSB3YWl0aW5nIGZvciB0YXJnZXQgYXZhaWxhYmlsaXRpeSBzdGF0ZS4gSWYgdGhlIGFjdGl2
ZQorICAgICAgICAvLyBhbmltYXRpb24gc3RpbGwgbmVlZHMgYSBzeW5jaHJvbml6ZWQgc3RhcnQg
dGltZSwgd2UgbmVlZCBpdCB0byBzdGFydCBvbgorICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQs
IHNvIHdlJ2xsIGFsc28gcHV0IGl0IGluIHRoZSB3YWl0aW5nIGZvciB0YXJnZXQgYXZhaWxhYmls
aXR5CisgICAgICAgIC8vIHN0YXRlLgorICAgICAgICBpZiAoY29udHJvbGxlckltcGwtPm1faGFz
U3luY2hyb25pemVkV2l0aE1haW5UaHJlYWQgfHwgY3VycmVudEFuaW1hdGlvbi0+bmVlZHNTeW5j
aHJvbml6ZWRTdGFydFRpbWUoKSkKKyAgICAgICAgICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0Fj
dGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSwgMCk7CisKICAgICAg
ICAgY29udHJvbGxlckltcGwtPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCmluZGV4IGI5NjUyZDA4
OTE3MWM4YWIyYzcxYTY1ZjFhMDM2YzQ5ZDZjODQ3YzQuLjhjMWYyODNlN2YzZTI1ZTE5YjMyM2Jl
MzhmZGU0MTcyZjJkMDc1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIuaApAQCAtMTA3LDYgKzEwNyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRp
Y2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAorICAgIC8vIEEgbGF5ZXIgYW5p
bWF0aW9uIGNvbnRyb2xsZXIgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgaXRzIGZpcnN0IHN5bmMuCisg
ICAgYm9vbCBtX2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhyZWFkOworCiAgICAgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxPd25QdHI8Q0NB
Y3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJUZXN0LmNwcAppbmRleCAxMTNiNjM5ZTM2ZDgwOTFhMTU5ZTIwMDQ2M2UxN2JkNTc1MWRm
NDYxLi5lZDUzZWMzN2ZlYjRmYmIzMDc3ZDZmM2UxYmU5Yjc2MDRlMWY5YjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlclRlc3QuY3BwCkBAIC0xNzEsNiArMTcxLDM2IEBAIFRFU1QoQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBkb05vdFN5bmNGaW5pc2hlZEFuaW1hdGlvbikKICAgICBF
WFBFQ1RfRkFMU0UoY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2
ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogfQogCitURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyVGVzdCwgZG9TeW5jUnVubmluZ0FuaW1hdGlvbnNXaGVuQ29udHJvbGxlcklzVW5pbml0aWFs
aXplZCkKK3sKKyAgICBGYWtlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IGR1bW15SW1w
bDsKKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGNvbnRyb2xsZXJJbXBs
KENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15SW1wbCkpOworICAgIEZh
a2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7CisgICAgT3duUHRyPENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyOjpjcmVhdGUoJmR1bW15KSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlckltcGwt
PmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworCisg
ICAgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0NvbnRyb2xsZXIoKmNvbnRyb2xsZXIsIDEsIDAsIDEs
IGZhbHNlKTsKKworICAgIGNvbnRyb2xsZXItPnB1c2hBbmltYXRpb25VcGRhdGVzVG8oY29udHJv
bGxlckltcGwuZ2V0KCkpOworCisgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlckltcGwtPmdldEFj
dGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIEVYUEVD
VF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSwgY29u
dHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3Bh
Y2l0eSktPnJ1blN0YXRlKCkpOworCisgICAgLy8gTm90aWZ5IG1haW4gdGhyZWFkIGNvbnRyb2xs
ZXIgdGhhdCB0aGUgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgIGNvbnRyb2xsZXItPm5vdGlm
eUFuaW1hdGlvblN0YXJ0ZWQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQoMCwgMCwgQ0NBY3RpdmVB
bmltYXRpb246Ok9wYWNpdHksIDApKTsKKworICAgIC8vIFJlY3JlYXRlIHRoZSBpbXBsIHRocmVh
ZCBjb250cm9sbGVyLgorICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gdW5p
bml0aWFsaXplZENvbnRyb2xsZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVh
dGUoJmR1bW15SW1wbCkpOworCisgICAgRVhQRUNUX0ZBTFNFKHVuaW5pdGlhbGl6ZWRDb250cm9s
bGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5
KSk7CisKKyAgICBjb250cm9sbGVyLT5wdXNoQW5pbWF0aW9uVXBkYXRlc1RvKHVuaW5pdGlhbGl6
ZWRDb250cm9sbGVySW1wbC5nZXQoKSk7CisKKyAgICAvLyBUaGUgbWFpbiB0aHJlYWQgaGFzIGEg
cnVubmluZyBhbmltYXRpb24sIGl0IHNob3VsZCBzdGlsbCBiZSBzeW5jJ2QgYmVjYXVzZSB0aGUg
Y29udHJvbGxlciBpcyB1bmluaXRpYWxpemVkLgorICAgIEVYUEVDVF9UUlVFKHVuaW5pdGlhbGl6
ZWRDb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9u
OjpPcGFjaXR5KSk7Cit9CisKIC8vIFRlc3RzIHRoYXQgdHJhbnNpdGlvbmluZyBvcGFjaXR5IGZy
b20gMCB0byAxIHdvcmtzIGFzIGV4cGVjdGVkLgogVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlclRlc3QsIFRyaXZpYWxUcmFuc2l0aW9uKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136777</attachid>
            <date>2012-04-11 16:08:57 -0700</date>
            <delta_ts>2012-04-30 07:25:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120411160856.patch</filename>
            <type>text/plain</type>
            <size>17159</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYzBkMWVhNTY1ODM5
ZDExNzc5M2JmODhiYmVhODJmOTVkYTk4OS4uOTBhZDU1YzBiODU3YzlmMGY2ZGE0MGE0YWQ1MjJm
Y2E5NTJhYmNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA0LTExICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUg
aXMgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0IGluIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5kb1N5bmNSdW5uaW5nQW5p
bWF0aW9uc1doZW5Db250cm9sbGVySXNVbmluaXRpYWxpemVkCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldExheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpyZWxlYXNlTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZl
QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FjdGl2ZUFuaW1hdGlvbi5oOgorICAgICAgICAoQ0NBY3RpdmVBbmltYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlcjo6cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1
c2hOZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyOjpyZXBsYWNlSW1wbFRocmVhZEFuaW1hdGlvbnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0Rm9yY2VTeW5jKToKKwogMjAx
Mi0wNC0xMSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gRHJhdyBtaXNzaW5nIGxheWVyIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBjaGVja2Vy
Ym9hcmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDEyN2U0N2ZkNWQwYzc0MDk3Nzhm
Y2M0YTg1NmUyZmVhYTViNDE3MjMuLjA3MjU0MjMzYWJmNGQ2ZjA2MDcyMTc1MDQ1ODgwM2ZlZWNl
ZWQ2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MDQtMTEgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBFbnN1cmUgdGhhdCBhbmltYXRpb25zIGNvbnRpbnVlIHRvIHJ1biB3aGVuIHRyYW5z
Zm9ybS1zdHlsZSBpcyBjaGFuZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcDoK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKwog
MjAxMi0wNC0xMSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gRHJhdyBtaXNzaW5nIGxheWVyIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBjaGVj
a2VyYm9hcmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCA4NmVi
ZjIzMzdkNDkxNzkzOWI4ODQzODhmOTE0NTYxNWIxNGVhMTY1Li45MTAyNDMxNWYwOTkyYTY0NTQ5
YzMwNjQ0ODg3NDgxNDI1NDZmZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6d2ls
bEJlRGVzdHJveWVkKCkKICAgICAgICAgLy8gQmUgc3VyZSB0byByZXNldCB0aGUgZGVsZWdhdGUs
IGp1c3QgaW4gY2FzZS4KICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZSgwKTsKICAgICB9Ci0gICAgCisKICAgICBHcmFwaGljc0xheWVyOjp3aWxsQmVE
ZXN0cm95ZWQoKTsKIH0KIApAQCAtNTg1LDYgKzU4NSw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgbV90cmFuc2Zvcm1MYXll
ciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5z
ZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJB
bmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5
ZXJBbmltYXRpb25Db250cm9sbGVyKG1fbGF5ZXItPnJlbGVhc2VMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIoKSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcigpLT5zZXRGb3JjZVN5bmMoKTsKIAogICAgICAgICAvLyBDb3B5IHRoZSBwb3NpdGlvbiBm
cm9tIHRoaXMgbGF5ZXIuCiAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKQEAgLTYxNiw2
ICs2MTgsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2
ZXMzRCgpCiAgICAgICAgIGlmIChtX3RyYW5zZm9ybUxheWVyLT5wYXJlbnQoKSkKICAgICAgICAg
ICAgIG1fdHJhbnNmb3JtTGF5ZXItPnBhcmVudCgpLT5yZXBsYWNlQ2hpbGQobV90cmFuc2Zvcm1M
YXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiAKKyAgICAgICAgbV9sYXllci0+c2V0TGF5ZXJB
bmltYXRpb25Db250cm9sbGVyKG1fdHJhbnNmb3JtTGF5ZXItPnJlbGVhc2VMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIoKSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxl
cigpLT5zZXRGb3JjZVN5bmMoKTsKKwogICAgICAgICAvLyBSZWxlYXNlIHRoZSB0cmFuc2Zvcm0g
bGF5ZXIuCiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVsZWdh
dGUoMCk7CiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAppbmRleCAxMGQ4NGM1NTMzMGY4NmRhNDE5YTgwOWJiNGQwNGNmZDcyMTg2YzA5Li5jNDQzNGEz
MWNiMWRkYmU2NDA0NDZjZjlmYmU3MWU5MjQwZDI3NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cApAQCAtNjE4LDkgKzYxOCwxNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnJlc3VtZUFuaW1hdGlv
bnMoKQogdm9pZCBMYXllckNocm9taXVtOjpzZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoUGFz
c093blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gbGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKQogewogICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyID0gbGF5ZXJBbmltYXRpb25D
b250cm9sbGVyOworICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5zZXRDbGllbnQodGhp
cyk7CiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAorUGFzc093blB0cjxDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcj4gTGF5ZXJDaHJvbWl1bTo6cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcigpCit7CisgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiB0b1JldHVy
biA9IG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLnJlbGVhc2UoKTsKKyAgICBtX2xheWVyQW5p
bWF0aW9uQ29udHJvbGxlciA9IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUodGhp
cyk7CisgICAgcmV0dXJuIHRvUmV0dXJuLnJlbGVhc2UoKTsKK30KKwogYm9vbCBMYXllckNocm9t
aXVtOjpoYXNBY3RpdmVBbmltYXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2xheWVyQW5p
bWF0aW9uQ29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
aW5kZXggNmM4ZWE2ZTViNWRlNmY4YjAzZGVlNGJiYjk0ZTgzNDRkYjFkMjNjMC4uMmY1NTMwMjFl
YjA4MjA4ZDQ3YWM3YTkyOTkzY2FiZWMyMjJiNmExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAt
MjM4LDYgKzIzOCw3IEBAIHB1YmxpYzoKIAogICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKFBh
c3NPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+KTsKKyAgICBQYXNzT3duUHRyPEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiByZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KCk7CiAKICAgICB2b2lkIHNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoQ0NMYXllckFuaW1hdGlv
bkRlbGVnYXRlKiBsYXllckFuaW1hdGlvbkRlbGVnYXRlKSB7IG1fbGF5ZXJBbmltYXRpb25EZWxl
Z2F0ZSA9IGxheWVyQW5pbWF0aW9uRGVsZWdhdGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVB
bmltYXRpb24uY3BwCmluZGV4IDI2MGQ3ZDQ3ZTNiMzFiNjJmNTliMWRhODA2MGFjZDViNzg3Mzcy
YWMuLjFhYmY5ZmNmZWM1MjUwY2JiNThkNzQ2MDVmYTFkNGIxMDI5MDZlNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTEzMiwyNSArMTMyLDQgQEAgUGFzc093blB0
cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gQ0NBY3RpdmVBbmltYXRpb246OmNsb25lRm9ySW1wbFRocmVh
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmV0dXJuLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6c3luY2hyb25pemVQcm9wZXJ0aWVzKENDQWN0aXZlQW5pbWF0aW9uKiBv
dGhlcikKLXsKLSAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGltcGwgdGhyZWFkIHRvIGlu
aXRpYXRlIGEgcnVuIHN0YXRlIGNoYW5nZS4KLSAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUg
YW5pbWF0aW9uIHdhcyB3YWl0aW5nIGZvciBhIGZ1dHVyZSBldmVudCB0byB0YWtlCi0gICAgLy8g
cGxhY2UsIGFuZCB0aGUgZXZlbnQgaGFzIGhhcHBlbmVkLiBJbiB0aGF0IGNhc2UsIHdlIHdhbnQg
J3RoaXMnIHRvCi0gICAgLy8gYXNzdW1lIHRoZSBpbXBsIHRocmVhZCdzIHJ1biBzdGF0ZSBhbmQg
c3RhcnQgdGltZS4KLSAgICBpZiAoaXNXYWl0aW5nKCkgJiYgb3RoZXItPmlzUnVubmluZ09ySGFz
UnVuKCkpIHsKLSAgICAgICAgbV9ydW5TdGF0ZSA9IG90aGVyLT5tX3J1blN0YXRlOwotICAgICAg
ICBtX3N0YXJ0VGltZSA9IG90aGVyLT5tX3N0YXJ0VGltZTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBvdGhlci0+bV9ydW5TdGF0ZSA9IG1fcnVuU3RhdGU7Ci0gICAgICAgIG90aGVyLT5tX3N0YXJ0
VGltZSA9IG1fc3RhcnRUaW1lOwotICAgIH0KLQotICAgIC8vIENoYW5nZSBpbiBzdGF0ZSByZWxh
dGVkIHRvIGl0ZXJhdGlvbnMgYW5kIHBhdXNlIGlzIGFsd2F5cyBpbml0aWF0ZWQgZnJvbQotICAg
IC8vIHRoZSBtYWluIHRocmVhZCwgc28gaXQgaXMgc2FmZSB0byBwdXNoIHByb3BlcnRpZXMgaW4g
dGhhdCBkaXJlY3Rpb24uCi0gICAgb3RoZXItPm1faXRlcmF0aW9ucyA9IG1faXRlcmF0aW9uczsK
LSAgICBvdGhlci0+bV9wYXVzZVRpbWUgPSBtX3BhdXNlVGltZTsKLSAgICBvdGhlci0+bV90b3Rh
bFBhdXNlZFRpbWUgPSBtX3RvdGFsUGF1c2VkVGltZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmgKaW5kZXggNWRiODNhZjk1NjIxZjY1
MGYzZGZjM2VlYzMxNGQ0OGRkYzk0ZTRmNS4uMzlkNmRjMGYzZTYyZDExODQ3YTllZmE2ZDM0NzFk
ZDEzYjA2MTMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oCkBAIC0xMDMsOCAr
MTAzLDYgQEAgcHVibGljOgogCiAgICAgUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gY2xv
bmVGb3JJbXBsVGhyZWFkKCkgY29uc3Q7CiAKLSAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydGll
cyhDQ0FjdGl2ZUFuaW1hdGlvbiopOwotCiBwcml2YXRlOgogICAgIENDQWN0aXZlQW5pbWF0aW9u
KFBhc3NPd25QdHI8Q0NBbmltYXRpb25DdXJ2ZT4sIGludCBhbmltYXRpb25JZCwgaW50IGdyb3Vw
SWQsIFRhcmdldFByb3BlcnR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDdmNWE5MjhlOGNlMTk5MGEzOWM2M2ZkYTVjNGJiZGEx
N2RlOTNhOTAuLjEwZTc3MGJhZjk5N2M0YjgxZDQ2YjM0ODFhOGNjYTJiZGY1OTI3ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEx
Myw3ICsxMTMsOSBAQCBQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBjcmVhdGVBY3RpdmVB
bmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogfSAvLyBuYW1lcGFjZQogCiBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNs
aWVudCkKKyAgICA6IG1faGFzU3luY2hyb25pemVkV2l0aE1haW5UaHJlYWQoZmFsc2UpCisgICAg
LCBtX2ZvcmNlU3luYyhmYWxzZSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKIH0KIApAQCAt
MTc3LDggKzE3OSwxNCBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpyZXN1bWVB
bmltYXRpb25zKCkKIC8vIGFyZSBrZXB0IGluIHN5bmMuCiB2b2lkIENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyOjpwdXNoQW5pbWF0aW9uVXBkYXRlc1RvKENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKiBjb250cm9sbGVySW1wbCkKIHsKLSAgICBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVh
ZChjb250cm9sbGVySW1wbCk7Ci0gICAgcmVtb3ZlQW5pbWF0aW9uc0NvbXBsZXRlZE9uTWFpblRo
cmVhZChjb250cm9sbGVySW1wbCk7CisgICAgaWYgKG1fZm9yY2VTeW5jKSB7CisgICAgICAgIHJl
cGxhY2VJbXBsVGhyZWFkQW5pbWF0aW9ucyhjb250cm9sbGVySW1wbCk7CisgICAgICAgIG1fZm9y
Y2VTeW5jID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHVzaE5ld0FuaW1hdGlvbnNU
b0ltcGxUaHJlYWQoY29udHJvbGxlckltcGwpOworICAgICAgICByZW1vdmVBbmltYXRpb25zQ29t
cGxldGVkT25NYWluVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKKyAgICB9CisgICAgY29udHJvbGxl
ckltcGwtPm1faGFzU3luY2hyb25pemVkV2l0aE1haW5UaHJlYWQgPSB0cnVlOwogfQogCiB2b2lk
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1l
LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciogZXZlbnRzKQpAQCAtMjM1LDI1ICsyNDMsNDAgQEAg
dm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChj
b25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWQKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXI6OnNldENsaWVudChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCog
Y2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCiB2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwpCiB7CiAgICAgLy8gQW55IG5ldyBhbmlt
YXRpb25zIG93bmVkIGJ5IHRoZSBtYWluIHRocmVhZCdzIGNvbnRyb2xsZXIgYXJlIGNsb25lZCBh
bmQgYWRkZSB0byB0aGUgaW1wbCB0aHJlYWQncyBjb250cm9sbGVyLgogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIEND
QWN0aXZlQW5pbWF0aW9uKiBjdXJyZW50QW5pbWF0aW9uID0gbV9hY3RpdmVBbmltYXRpb25zW2ld
LmdldCgpOworCiAgICAgICAgIC8vIElmIHRoZSBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5uaW5n
IG9uIHRoZSBpbXBsIHRocmVhZCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjb3B5IGl0IG92ZXIuCi0g
ICAgICAgIGlmIChjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0
eSgpKSkKKyAgICAgICAgaWYgKGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oY3Vy
cmVudEFuaW1hdGlvbi0+Z3JvdXAoKSwgY3VycmVudEFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVydHko
KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9u
IGlzIG5vdCBydW5uaW5nIG9uIHRoZSBpbXBsIHRocmVhZCwgaXQgZG9lcyBub3QgbmVjZXNzYXJp
bHkgbWVhbiB0aGF0IGl0IG5lZWRzCi0gICAgICAgIC8vIHRvIGJlIGNvcGllZCBvdmVyIGFuZCBz
dGFydGVkOyBpdCBtYXkgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkLiBJbiB0aGlzIGNhc2UsIHRoZSBp
bXBsIHRocmVhZCBhbmltYXRpb24KLSAgICAgICAgLy8gd2lsbCBoYXZlIGFscmVhZHkgbm90aWZp
ZWQgdGhhdCBpdCBoYXMgc3RhcnRlZCBhbmQgdGhlIG1haW4gdGhyZWFkIGFuaW1hdGlvbiB3aWxs
IG5vIGxvbmdlciBuZWVkCi0gICAgICAgIC8vIGEgc3luY2hyb25pemVkIHN0YXJ0IHRpbWUuCi0g
ICAgICAgIGlmICghbV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0
VGltZSgpKQorICAgICAgICAvLyBJZiB0aGUgaW1wbCB0aHJlYWQgY29udHJvbGxlciBoYXMgbm90
IHN5bmNocm9uaXplZCB3aXRoIHRoZSBtYWluIHRocmVhZCB5ZXQsCisgICAgICAgIC8vIGl0IGRv
ZXNuJ3QgbWF0dGVyIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gaXMgcnVubmluZywgd2Ug
bXVzdCBwdXNoIGl0IHRvCisgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZC4gT3RoZXJ3aXNlLCB3
ZSBzaG91bGQgbmV2ZXIgcHVzaCBhIHJ1bm5pbmcgYW5pbWF0aW9uLiBUaGUKKyAgICAgICAgLy8g
YW5pbWF0aW9uIG1heSBoYXZlIGFscmVhZHkgZmluaXNoZWQgb24gdGhlIGltcGwgdGhyZWFkIGFu
ZCB3ZSB3b3VsZCBiZQorICAgICAgICAvLyBpbmNvcnJlY3RseSByZS1hZGRpbmcgaXQgaW4gdGhp
cyBjYXNlLgorICAgICAgICBpZiAoY29udHJvbGxlckltcGwtPm1faGFzU3luY2hyb25pemVkV2l0
aE1haW5UaHJlYWQgJiYgIWN1cnJlbnRBbmltYXRpb24tPm5lZWRzU3luY2hyb25pemVkU3RhcnRU
aW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8Q0NBY3RpdmVB
bmltYXRpb24+IHRvQWRkKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVGb3JJbXBsVGhyZWFk
KCkpOworICAgICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKGN1cnJlbnRBbmlt
YXRpb24tPmNsb25lRm9ySW1wbFRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCF0b0FkZC0+bmVl
ZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7Ci0gICAgICAgIC8vIFRoZSBuZXcgYW5pbWF0aW9u
IHNob3VsZCBiZSBzZXQgdG8gcnVuIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgICAgIHRvQWRk
LT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJp
bGl0eSwgMCk7CisKKyAgICAgICAgLy8gSWYgY29udHJvbGxlckltcGwgaGFzIGJlZW4gc3luY2hy
b25pemVkLCB0aGVuIHRoaXMgaXMgYSBuZXcgYW5pbWF0aW9uIGFuZAorICAgICAgICAvLyBzaG91
bGQgYmUgaW4gdGhlIHdhaXRpbmcgZm9yIHRhcmdldCBhdmFpbGFiaWxpdGl5IHN0YXRlLiBJZiB0
aGUgYWN0aXZlCisgICAgICAgIC8vIGFuaW1hdGlvbiBzdGlsbCBuZWVkcyBhIHN5bmNocm9uaXpl
ZCBzdGFydCB0aW1lLCB3ZSBuZWVkIGl0IHRvIHN0YXJ0IG9uCisgICAgICAgIC8vIHRoZSBpbXBs
IHRocmVhZCwgc28gd2UnbGwgYWxzbyBwdXQgaXQgaW4gdGhlIHdhaXRpbmcgZm9yIHRhcmdldCBh
dmFpbGFiaWxpdHkKKyAgICAgICAgLy8gc3RhdGUuCisgICAgICAgIGlmIChjb250cm9sbGVySW1w
bC0+bV9oYXNTeW5jaHJvbml6ZWRXaXRoTWFpblRocmVhZCB8fCBjdXJyZW50QW5pbWF0aW9uLT5u
ZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgpKQorICAgICAgICAgICAgdG9BZGQtPnNldFJ1blN0
YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5LCAwKTsK
KwogICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAgICAgfQog
fQpAQCAtMzk0LDYgKzQxNywxMyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpw
dXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpCiAgICAgfQogfQogCit2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjpyZXBsYWNlSW1wbFRocmVhZEFuaW1hdGlvbnMoQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXJJbXBsKQoreworICAgIGNvbnRyb2xsZXJJbXBsLT5tX2Fj
dGl2ZUFuaW1hdGlvbnMuY2xlYXIoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0
aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgY29udHJvbGxlckltcGwtPmFkZCht
X2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmNsb25lRm9ySW1wbFRocmVhZCgpKTsKK30KKwogdm9pZCBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6dGlja0FuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y1RpbWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlci5oCmluZGV4IGI5NjUyZDA4OTE3MWM4YWIyYzcxYTY1ZjFhMDM2YzQ5ZDZjODQ3YzQuLjAz
MjYzM2VhNjE5NzdhNDcxMmYwMzY2NzgyMzRiZjQ0NTI0N2JkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtOTAsNiArOTAsMTIgQEAgcHVi
bGljOgogICAgIC8vIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgbWFpbiB0aHJl
YWQgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZS4KICAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQmKTsKIAorICAgIC8vIElmIGEgc3luYyBp
cyBmb3JjZWQsIHRoZW4gdGhlIG5leHQgdGltZSBhbmltYXRpb25zIHVwZGF0ZXMgYXJlIHB1c2hl
ZCB0byB0aGUgaW1wbAorICAgIC8vIHRocmVhZCwgYWxsIGFuaW1hdGlvbnMgd2lsbCBiZSB0cmFu
c2ZlcnJlZC4KKyAgICB2b2lkIHNldEZvcmNlU3luYygpIHsgbV9mb3JjZVN5bmMgPSB0cnVlOyB9
CisKKyAgICB2b2lkIHNldENsaWVudChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCop
OworCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIo
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqKTsKIApAQCAtMTA0LDkgKzExMCwxNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWls
YWJpbGl0eShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqKTsK
ICAgICB2b2lkIHJlc29sdmVDb25mbGljdHMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIHZv
aWQgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHJlcGxhY2VJbXBsVGhyZWFk
QW5pbWF0aW9ucyhDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopOwogCiAgICAgdm9pZCB0aWNr
QW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSk7CiAKKyAgICAvLyBBIGxheWVyIGFuaW1h
dGlvbiBjb250cm9sbGVyIGlzIGluaXRpYWxpemVkIGFmdGVyIGl0cyBmaXJzdCBzeW5jLgorICAg
IGJvb2wgbV9oYXNTeW5jaHJvbml6ZWRXaXRoTWFpblRocmVhZDsKKworICAgIC8vIElmIHRoaXMg
aXMgdHJ1ZSwgd2UgZm9yY2UgYSBzeW5jIHRvIHRoZSBpbXBsIHRocmVhZC4KKyAgICBib29sIG1f
Zm9yY2VTeW5jOworCiAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqIG1fY2xp
ZW50OwogICAgIFZlY3RvcjxPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmlt
YXRpb25zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcAppbmRleCAxMTNiNjM5ZTM2
ZDgwOTFhMTU5ZTIwMDQ2M2UxN2JkNTc1MWRmNDYxLi5lZDUzZWMzN2ZlYjRmYmIzMDc3ZDZmM2Ux
YmU5Yjc2MDRlMWY5YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCkBAIC0xNzEs
NiArMTcxLDM2IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBkb05vdFN5
bmNGaW5pc2hlZEFuaW1hdGlvbikKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlckltcGwtPmdl
dEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogfQogCitU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgZG9TeW5jUnVubmluZ0FuaW1hdGlv
bnNXaGVuQ29udHJvbGxlcklzVW5pbml0aWFsaXplZCkKK3sKKyAgICBGYWtlTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyQ2xpZW50IGR1bW15SW1wbDsKKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXI+IGNvbnRyb2xsZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpj
cmVhdGUoJmR1bW15SW1wbCkpOworICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQgZHVtbXk7CisgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9s
bGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7CisKKyAgICBF
WFBFQ1RfRkFMU0UoY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2
ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworCisgICAgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0NvbnRy
b2xsZXIoKmNvbnRyb2xsZXIsIDEsIDAsIDEsIGZhbHNlKTsKKworICAgIGNvbnRyb2xsZXItPnB1
c2hBbmltYXRpb25VcGRhdGVzVG8oY29udHJvbGxlckltcGwuZ2V0KCkpOworCisgICAgRVhQRUNU
X1RSVUUoY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1h
dGlvbjo6T3BhY2l0eSkpOworICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGlu
Z0ZvclRhcmdldEF2YWlsYWJpbGl0eSwgY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlv
bigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnJ1blN0YXRlKCkpOworCisgICAgLy8g
Tm90aWZ5IG1haW4gdGhyZWFkIGNvbnRyb2xsZXIgdGhhdCB0aGUgYW5pbWF0aW9uIGhhcyBzdGFy
dGVkLgorICAgIGNvbnRyb2xsZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoQ0NBbmltYXRpb25T
dGFydGVkRXZlbnQoMCwgMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHksIDApKTsKKworICAg
IC8vIFJlY3JlYXRlIHRoZSBpbXBsIHRocmVhZCBjb250cm9sbGVyLgorICAgIE93blB0cjxDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gdW5pbml0aWFsaXplZENvbnRyb2xsZXJJbXBsKENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15SW1wbCkpOworCisgICAgRVhQRUNU
X0ZBTFNFKHVuaW5pdGlhbGl6ZWRDb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAs
IENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CisKKyAgICBjb250cm9sbGVyLT5wdXNoQW5p
bWF0aW9uVXBkYXRlc1RvKHVuaW5pdGlhbGl6ZWRDb250cm9sbGVySW1wbC5nZXQoKSk7CisKKyAg
ICAvLyBUaGUgbWFpbiB0aHJlYWQgaGFzIGEgcnVubmluZyBhbmltYXRpb24sIGl0IHNob3VsZCBz
dGlsbCBiZSBzeW5jJ2QgYmVjYXVzZSB0aGUgY29udHJvbGxlciBpcyB1bmluaXRpYWxpemVkLgor
ICAgIEVYUEVDVF9UUlVFKHVuaW5pdGlhbGl6ZWRDb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5p
bWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7Cit9CisKIC8vIFRlc3RzIHRo
YXQgdHJhbnNpdGlvbmluZyBvcGFjaXR5IGZyb20gMCB0byAxIHdvcmtzIGFzIGV4cGVjdGVkLgog
VEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIFRyaXZpYWxUcmFuc2l0aW9uKQog
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139450</attachid>
            <date>2012-04-30 07:25:25 -0700</date>
            <delta_ts>2012-05-01 12:53:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120430102524.patch</filename>
            <type>text/plain</type>
            <size>16480</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRkNDcyZTAxZGViOWZk
MjA1NjM1MzFkYzVmNDJiNGNhZjE4NmI1Ny4uZjY3NDAwNGU5YjA2MTliODIwMjJlZTViYzJmZjE1
YjM3OTZlZGJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTMwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUg
aXMgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0ZWQgaW4gQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmRvU3luY1J1bm5pbmdB
bmltYXRpb25zV2hlbkNvbnRyb2xsZXJJc1VuaW5pdGlhbGl6ZWQKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJBbmltYXRpb25Db250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnJlbGVhc2VMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1c2hBbmltYXRpb25VcGRhdGVzVG8p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVwbGFj
ZUltcGxUaHJlYWRBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXI6OnNldEZvcmNlU3luYyk6CisKIDIwMTItMDQtMzAgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFByb3RlY3QgY3VycmVudCBlbGVtZW50IGluIEhU
TUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBkODI2NTI1MDdjN2E1MGU0NTQ3NWFkYTBmNGRhN2M3ZGI4NDRmN2Y1Li4wMjc1M2Y5OWJj
NThjMDY2ODRkOTA1Yzg5MzM2ZWZmMjkxZDI0Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTMwICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHRoYXQgYW5pbWF0aW9ucyBj
b250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUgaXMgY2hhbmdlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMyODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6Cisg
ICAgICAgIChXZWJLaXRUZXN0cyk6CisKIDIwMTItMDQtMjkgIE1hcmsgUGlsZ3JpbSAgPHBpbGdy
aW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQ2FsbCBoaWdoVXNhZ2VEZWx0
YU1CIGRpcmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCAz
YzZkOTI0YmIyNDA3NTE3MGNjOTAxODVjYWZiNzJhNTcxYjljYmJlLi42YjM1ODQ1ZGQ0ZjliZmRi
MzFlYWI1MTMzMDgzMzFhY2IyMzY2OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTU4OCw2ICs1ODgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0UHJlc2Vy
dmVzM0QodHJ1ZSk7CiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldExheWVyQW5pbWF0aW9u
RGVsZWdhdGUodGhpcyk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldExheWVyQW5pbWF0
aW9uQ29udHJvbGxlcihtX2xheWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkp
OwogCiAgICAgICAgIC8vIENvcHkgdGhlIHBvc2l0aW9uIGZyb20gdGhpcyBsYXllci4KICAgICAg
ICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwpAQCAtNjE5LDYgKzYyMCw5IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgaWYgKG1f
dHJhbnNmb3JtTGF5ZXItPnBhcmVudCgpKQogICAgICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+
cGFyZW50KCktPnJlcGxhY2VDaGlsZChtX3RyYW5zZm9ybUxheWVyLmdldCgpLCBtX2xheWVyLmdl
dCgpKTsKIAorICAgICAgICBtX2xheWVyLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKHRoaXMp
OworICAgICAgICBtX2xheWVyLT5zZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIobV90cmFuc2Zv
cm1MYXllci0+cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpKTsKKwogICAgICAgICAv
LyBSZWxlYXNlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIt
PnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoMCk7CiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0OGM1NzU0OTc2MGMxNjMxNGJlNzhkMGM5
OGU4M2JlNmE5OGNmOWY1Li5kZWZhNjBmNzgzM2YyODFmMGQ3YmJiMTc2MTUxYjY5ZjMxNTE3OWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNjM2LDkgKzYzNiwyMCBAQCB2b2lkIExheWVy
Q2hyb21pdW06OnJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiB2b2lkIExh
eWVyQ2hyb21pdW06OnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcihQYXNzT3duUHRyPENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyPiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIpCiB7CiAgICAg
bV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIgPSBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXI7Cisg
ICAgaWYgKG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKSB7CisgICAgICAgIG1fbGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLT5zZXRDbGllbnQodGhpcyk7CisgICAgICAgIG1fbGF5ZXJBbmltYXRp
b25Db250cm9sbGVyLT5zZXRGb3JjZVN5bmMoKTsKKyAgICB9CiAgICAgc2V0TmVlZHNDb21taXQo
KTsKIH0KIAorUGFzc093blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gTGF5ZXJDaHJv
bWl1bTo6cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpCit7CisgICAgT3duUHRyPEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiB0b1JldHVybiA9IG1fbGF5ZXJBbmltYXRpb25Db250
cm9sbGVyLnJlbGVhc2UoKTsKKyAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlciA9IENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIHRvUmV0dXJu
LnJlbGVhc2UoKTsKK30KKwogYm9vbCBMYXllckNocm9taXVtOjpoYXNBY3RpdmVBbmltYXRpb24o
KSBjb25zdAogewogICAgIHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+aGFzQWN0
aXZlQW5pbWF0aW9uKCk7CkBAIC02NDcsNyArNjU4LDggQEAgYm9vbCBMYXllckNocm9taXVtOjpo
YXNBY3RpdmVBbmltYXRpb24oKSBjb25zdAogdm9pZCBMYXllckNocm9taXVtOjpub3RpZnlBbmlt
YXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmIGV2ZW50LCBkb3VibGUgd2FsbENs
b2NrVGltZSkKIHsKICAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+bm90aWZ5QW5pbWF0
aW9uU3RhcnRlZChldmVudCk7Ci0gICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlB
bmltYXRpb25TdGFydGVkKHdhbGxDbG9ja1RpbWUpOworICAgIGlmIChtX2xheWVyQW5pbWF0aW9u
RGVsZWdhdGUpCisgICAgICAgIG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0
aW9uU3RhcnRlZCh3YWxsQ2xvY2tUaW1lKTsKIH0KIAogdm9pZCBMYXllckNocm9taXVtOjpub3Rp
ZnlBbmltYXRpb25GaW5pc2hlZChkb3VibGUgd2FsbENsb2NrVGltZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAppbmRleCBkNTk0ODQwMDc4ODk0NzZhZWNmYmMyYjIzNDYzMDNkMWQ2NzU0YjI1Li4xOWNlNjY3
M2ZjOTk5OTA3M2Q5OWFlNjBhMGM3OTA3MGY2YTNhZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBA
IC0yNDUsNiArMjQ1LDcgQEAgcHVibGljOgogCiAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIqIGxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fbGF5ZXJBbmltYXRpb25D
b250cm9sbGVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIo
UGFzc093blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4pOworICAgIFBhc3NPd25QdHI8
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IHJlbGVhc2VMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIoKTsKIAogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShDQ0xheWVyQW5pbWF0
aW9uRGVsZWdhdGUqIGxheWVyQW5pbWF0aW9uRGVsZWdhdGUpIHsgbV9sYXllckFuaW1hdGlvbkRl
bGVnYXRlID0gbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMTk5MTkyZDUyYTQ0OGFkYzli
ZTQyYTMyZGRiMDgwMjdmZjZjZDczZS4uYWYzNzcwZTk1ZDkyMzA0OGUxOTk2OWIwYThjOGNjYzc0
ZGQxMDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyLmNwcApAQCAtMTE2LDcgKzExNiw5IEBAIFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+
IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsCiB9IC8v
IG5hbWVwYWNlCiAKIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcihDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCogY2xpZW50KQotICAg
IDogbV9jbGllbnQoY2xpZW50KQorICAgIDogbV9oYXNTeW5jaHJvbml6ZWRXaXRoTWFpblRocmVh
ZChmYWxzZSkKKyAgICAsIG1fZm9yY2VTeW5jKGZhbHNlKQorICAgICwgbV9jbGllbnQoY2xpZW50
KQogewogfQogCkBAIC0xOTUsOSArMTk3LDE1IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAvLyBhcmUga2Vw
dCBpbiBzeW5jLgogdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaEFuaW1hdGlv
blVwZGF0ZXNUbyhDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwpCiB7
Ci0gICAgcHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJlYWQoY29udHJvbGxlckltcGwpOwotICAg
IHJlbW92ZUFuaW1hdGlvbnNDb21wbGV0ZWRPbk1haW5UaHJlYWQoY29udHJvbGxlckltcGwpOwot
ICAgIHB1c2hQcm9wZXJ0aWVzVG9JbXBsVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKKyAgICBpZiAo
bV9mb3JjZVN5bmMpIHsKKyAgICAgICAgcmVwbGFjZUltcGxUaHJlYWRBbmltYXRpb25zKGNvbnRy
b2xsZXJJbXBsKTsKKyAgICAgICAgbV9mb3JjZVN5bmMgPSBmYWxzZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChjb250cm9sbGVySW1wbCk7Cisg
ICAgICAgIHJlbW92ZUFuaW1hdGlvbnNDb21wbGV0ZWRPbk1haW5UaHJlYWQoY29udHJvbGxlcklt
cGwpOworICAgICAgICBwdXNoUHJvcGVydGllc1RvSW1wbFRocmVhZChjb250cm9sbGVySW1wbCk7
CisgICAgfQorICAgIGNvbnRyb2xsZXJJbXBsLT5tX2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhy
ZWFkID0gdHJ1ZTsKIH0KIAogdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0
ZShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqIGV2ZW50cykK
QEAgLTI0NSw4ICsyNTMsNyBAQCBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjppc0Fu
aW1hdGluZ1Byb3BlcnR5KENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcgogdm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1h
dGlvbkV2ZW50JiBldmVudCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZl
QW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25z
W2ldLT5ncm91cCgpID09IGV2ZW50Lmdyb3VwSWQgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50
YXJnZXRQcm9wZXJ0eSgpID09IGV2ZW50LnRhcmdldFByb3BlcnR5KSB7Ci0gICAgICAgICAgICBB
U1NFUlQobV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgp
KTsKKyAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBldmVudC5n
cm91cElkICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSA9PSBldmVu
dC50YXJnZXRQcm9wZXJ0eSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3luY2hyb25p
emVkU3RhcnRUaW1lKCkpIHsKICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0
TmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoZmFsc2UpOwogICAgICAgICAgICAgbV9hY3RpdmVB
bmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUoZXZlbnQubW9ub3RvbmljVGltZSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yNTQsMjUgKzI2MSw0MCBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uRXZlbnQm
CiAgICAgfQogfQogCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzZXRDbGllbnQo
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVu
dCA9IGNsaWVudDsKK30KKwogdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaE5l
d0FuaW1hdGlvbnNUb0ltcGxUaHJlYWQoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRy
b2xsZXJJbXBsKSBjb25zdAogewogICAgIC8vIEFueSBuZXcgYW5pbWF0aW9ucyBvd25lZCBieSB0
aGUgbWFpbiB0aHJlYWQncyBjb250cm9sbGVyIGFyZSBjbG9uZWQgYW5kIGFkZGUgdG8gdGhlIGlt
cGwgdGhyZWFkJ3MgY29udHJvbGxlci4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0
aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBDQ0FjdGl2ZUFuaW1hdGlvbiog
Y3VycmVudEFuaW1hdGlvbiA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS5nZXQoKTsKKwogICAgICAg
ICAvLyBJZiB0aGUgYW5pbWF0aW9uIGlzIGFscmVhZHkgcnVubmluZyBvbiB0aGUgaW1wbCB0aHJl
YWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29weSBpdCBvdmVyLgotICAgICAgICBpZiAoY29udHJv
bGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbihtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3Vw
KCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSkpCisgICAgICAgIGlm
IChjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKGN1cnJlbnRBbmltYXRpb24tPmdy
b3VwKCksIGN1cnJlbnRBbmltYXRpb24tPnRhcmdldFByb3BlcnR5KCkpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBpcyBub3QgcnVubmluZyBv
biB0aGUgaW1wbCB0aHJlYWQsIGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCBpdCBu
ZWVkcwotICAgICAgICAvLyB0byBiZSBjb3BpZWQgb3ZlciBhbmQgc3RhcnRlZDsgaXQgbWF5IGhh
dmUgYWxyZWFkeSBmaW5pc2hlZC4gSW4gdGhpcyBjYXNlLCB0aGUgaW1wbCB0aHJlYWQgYW5pbWF0
aW9uCi0gICAgICAgIC8vIHdpbGwgaGF2ZSBhbHJlYWR5IG5vdGlmaWVkIHRoYXQgaXQgaGFzIHN0
YXJ0ZWQgYW5kIHRoZSBtYWluIHRocmVhZCBhbmltYXRpb24gd2lsbCBubyBsb25nZXIgbmVlZAot
ICAgICAgICAvLyBhIHN5bmNocm9uaXplZCBzdGFydCB0aW1lLgotICAgICAgICBpZiAoIW1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSkKKyAgICAgICAg
Ly8gSWYgdGhlIGltcGwgdGhyZWFkIGNvbnRyb2xsZXIgaGFzIG5vdCBzeW5jaHJvbml6ZWQgd2l0
aCB0aGUgbWFpbiB0aHJlYWQgeWV0LAorICAgICAgICAvLyBpdCBkb2Vzbid0IG1hdHRlciB3aGV0
aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5pbmcsIHdlIG11c3QgcHVzaCBpdCB0bwor
ICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQuIE90aGVyd2lzZSwgd2Ugc2hvdWxkIG5ldmVyIHB1
c2ggYSBydW5uaW5nIGFuaW1hdGlvbi4gVGhlCisgICAgICAgIC8vIGFuaW1hdGlvbiBtYXkgaGF2
ZSBhbHJlYWR5IGZpbmlzaGVkIG9uIHRoZSBpbXBsIHRocmVhZCBhbmQgd2Ugd291bGQgYmUKKyAg
ICAgICAgLy8gaW5jb3JyZWN0bHkgcmUtYWRkaW5nIGl0IGluIHRoaXMgY2FzZS4KKyAgICAgICAg
aWYgKGNvbnRyb2xsZXJJbXBsLT5tX2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhyZWFkICYmICFj
dXJyZW50QW5pbWF0aW9uLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZCht
X2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmNsb25lRm9ySW1wbFRocmVhZCgpKTsKKyAgICAgICAgT3du
UHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZChjdXJyZW50QW5pbWF0aW9uLT5jbG9uZUZvcklt
cGxUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghdG9BZGQtPm5lZWRzU3luY2hyb25pemVkU3Rh
cnRUaW1lKCkpOwotICAgICAgICAvLyBUaGUgbmV3IGFuaW1hdGlvbiBzaG91bGQgYmUgc2V0IHRv
IHJ1biBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgICAgICB0b0FkZC0+c2V0UnVuU3RhdGUoQ0NB
Y3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHksIDApOworCisgICAg
ICAgIC8vIElmIGNvbnRyb2xsZXJJbXBsIGhhcyBiZWVuIHN5bmNocm9uaXplZCwgdGhlbiB0aGlz
IGlzIGEgbmV3IGFuaW1hdGlvbiBhbmQKKyAgICAgICAgLy8gc2hvdWxkIGJlIGluIHRoZSB3YWl0
aW5nIGZvciB0YXJnZXQgYXZhaWxhYmlsaXRpeSBzdGF0ZS4gSWYgdGhlIGFjdGl2ZQorICAgICAg
ICAvLyBhbmltYXRpb24gc3RpbGwgbmVlZHMgYSBzeW5jaHJvbml6ZWQgc3RhcnQgdGltZSwgd2Ug
bmVlZCBpdCB0byBzdGFydCBvbgorICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQsIHNvIHdlJ2xs
IGFsc28gcHV0IGl0IGluIHRoZSB3YWl0aW5nIGZvciB0YXJnZXQgYXZhaWxhYmlsaXR5CisgICAg
ICAgIC8vIHN0YXRlLgorICAgICAgICBpZiAoY29udHJvbGxlckltcGwtPm1faGFzU3luY2hyb25p
emVkV2l0aE1haW5UaHJlYWQgfHwgY3VycmVudEFuaW1hdGlvbi0+bmVlZHNTeW5jaHJvbml6ZWRT
dGFydFRpbWUoKSkKKyAgICAgICAgICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1h
dGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSwgMCk7CisKICAgICAgICAgY29udHJv
bGxlckltcGwtPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogICAgIH0KIH0KQEAgLTQyOSw2ICs0NTEs
MTMgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1h
dGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUsIEMKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2VJbXBsVGhyZWFkQW5pbWF0aW9ucyhDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwpIGNvbnN0Cit7CisgICAgY29udHJvbGxl
ckltcGwtPm1fYWN0aXZlQW5pbWF0aW9ucy5jbGVhcigpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBjb250cm9sbGVy
SW1wbC0+YWRkKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVGb3JJbXBsVGhyZWFkKCkpOwor
fQorCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjp0aWNrQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZl
QW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmgKaW5kZXggZTIyZjgwNTRkNjIzMjA3YzRkNzBjMzEyMWZiMWIwMzk1
YTJlNjMwMi4uMzFlNzNkMzFjODQ0OTFiZjZiNjEzMTcxYjcyN2NhNWY2NmRhMDczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC05MCw2ICs5
MCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gZnVuY3Rpb24gdXBkYXRlcyB0aGUgY29ycmVzcG9uZGlu
ZyBtYWluIHRocmVhZCBhbmltYXRpb24ncyBzdGFydCB0aW1lLgogICAgIHZvaWQgbm90aWZ5QW5p
bWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvbkV2ZW50Jik7CiAKKyAgICAvLyBJZiBhIHN5
bmMgaXMgZm9yY2VkLCB0aGVuIHRoZSBuZXh0IHRpbWUgYW5pbWF0aW9ucyB1cGRhdGVzIGFyZSBw
dXNoZWQgdG8gdGhlIGltcGwKKyAgICAvLyB0aHJlYWQsIGFsbCBhbmltYXRpb25zIHdpbGwgYmUg
dHJhbnNmZXJyZWQuCisgICAgdm9pZCBzZXRGb3JjZVN5bmMoKSB7IG1fZm9yY2VTeW5jID0gdHJ1
ZTsgfQorCisgICAgdm9pZCBzZXRDbGllbnQoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQqKTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50Kik7CiAKQEAgLTk5LDYgKzEwNSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlQW5pbWF0aW9u
c0NvbXBsZXRlZE9uTWFpblRocmVhZChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0
OwogICAgIHZvaWQgcHVzaFByb3BlcnRpZXNUb0ltcGxUaHJlYWQoQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIqKSBjb25zdDsKKyAgICB2b2lkIHJlcGxhY2VJbXBsVGhyZWFkQW5pbWF0aW9ucyhD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydEFuaW1h
dGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yKik7CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRU
aW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciopOwpAQCAt
MTA4LDYgKzExNSwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSk7CiAKKyAgICAvLyBBIGxheWVyIGFuaW1hdGlvbiBjb250cm9sbGVy
IGlzIGluaXRpYWxpemVkIGFmdGVyIGl0cyBmaXJzdCBzeW5jLgorICAgIGJvb2wgbV9oYXNTeW5j
aHJvbml6ZWRXaXRoTWFpblRocmVhZDsKKworICAgIC8vIElmIHRoaXMgaXMgdHJ1ZSwgd2UgZm9y
Y2UgYSBzeW5jIHRvIHRoZSBpbXBsIHRocmVhZC4KKyAgICBib29sIG1fZm9yY2VTeW5jOworCiAg
ICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3Rv
cjxPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcAppbmRleCBmYTk1YTJhYzVhOWZjNzFjYzY3ZTRjNzE1
YjdiMjgzMzAyMGY0MThlLi41ZDQwY2JjNTY2YzExZTIzMTEzYjY0NGQ2OGM5YmVjNmE1NDhlYjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCkBAIC0yNzEsNiArMjcxLDM2IEBAIFRF
U1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBkb05vdFN5bmNGaW5pc2hlZEFuaW1h
dGlvbikKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlv
bigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogfQogCitURVNUKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyVGVzdCwgZG9TeW5jUnVubmluZ0FuaW1hdGlvbnNXaGVuQ29udHJvbGxl
cklzVW5pbml0aWFsaXplZCkKK3sKKyAgICBGYWtlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xp
ZW50IGR1bW15SW1wbDsKKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGNv
bnRyb2xsZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15SW1w
bCkpOworICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7CisgICAg
T3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9sbGVyKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoY29u
dHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3Bh
Y2l0eSkpOworCisgICAgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0NvbnRyb2xsZXIoKmNvbnRyb2xs
ZXIsIDEsIDAsIDEsIGZhbHNlKTsKKworICAgIGNvbnRyb2xsZXItPnB1c2hBbmltYXRpb25VcGRh
dGVzVG8oY29udHJvbGxlckltcGwuZ2V0KCkpOworCisgICAgRVhQRUNUX1RSVUUoY29udHJvbGxl
ckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkp
OworICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWls
YWJpbGl0eSwgY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFu
aW1hdGlvbjo6T3BhY2l0eSktPnJ1blN0YXRlKCkpOworCisgICAgLy8gTm90aWZ5IG1haW4gdGhy
ZWFkIGNvbnRyb2xsZXIgdGhhdCB0aGUgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgIGNvbnRy
b2xsZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoQ0NBbmltYXRpb25FdmVudChDQ0FuaW1hdGlv
bkV2ZW50OjpTdGFydGVkLCAwLCAwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSwgMCkpOwor
CisgICAgLy8gUmVjcmVhdGUgdGhlIGltcGwgdGhyZWFkIGNvbnRyb2xsZXIuCisgICAgT3duUHRy
PENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiB1bmluaXRpYWxpemVkQ29udHJvbGxlckltcGwo
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXlJbXBsKSk7CisKKyAgICBF
WFBFQ1RfRkFMU0UodW5pbml0aWFsaXplZENvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRp
b24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKKworICAgIGNvbnRyb2xsZXItPnB1
c2hBbmltYXRpb25VcGRhdGVzVG8odW5pbml0aWFsaXplZENvbnRyb2xsZXJJbXBsLmdldCgpKTsK
KworICAgIC8vIFRoZSBtYWluIHRocmVhZCBoYXMgYSBydW5uaW5nIGFuaW1hdGlvbiwgaXQgc2hv
dWxkIHN0aWxsIGJlIHN5bmMnZCBiZWNhdXNlIHRoZSBjb250cm9sbGVyIGlzIHVuaW5pdGlhbGl6
ZWQuCisgICAgRVhQRUNUX1RSVUUodW5pbml0aWFsaXplZENvbnRyb2xsZXJJbXBsLT5nZXRBY3Rp
dmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKK30KKwogLy8gVGVz
dHMgdGhhdCB0cmFuc2l0aW9uaW5nIG9wYWNpdHkgZnJvbSAwIHRvIDEgd29ya3MgYXMgZXhwZWN0
ZWQuCiBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgVHJpdmlhbFRyYW5zaXRp
b24pCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139660</attachid>
            <date>2012-05-01 12:53:51 -0700</date>
            <delta_ts>2012-05-10 10:59:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120501155350.patch</filename>
            <type>text/plain</type>
            <size>21473</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRkNDcyZTAxZGViOWZk
MjA1NjM1MzFkYzVmNDJiNGNhZjE4NmI1Ny4uNTNhMDM2YjQ2MDQ0YTQxNGE4MDQ3N2VhNzhmM2Nl
YzQ5MmVmYjZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTAxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUg
aXMgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0ZWQgaW46CisgICAgICAgICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5k
b1N5bmNSdW5uaW5nQW5pbWF0aW9uc1doZW5Db250cm9sbGVySXNVbmluaXRpYWxpemVkCisgICAg
ICAgICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QudXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRFdp
dGhBbmltYXRpb25zCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpyZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OkNDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyOjpwdXNoQW5pbWF0aW9uVXBkYXRlc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzZXRDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cjo6cHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2VJbXBsVGhyZWFkQW5pbWF0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzZXRGb3JjZVN5bmMpOgor
CiAyMDEyLTA0LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQcm90ZWN0IGN1cnJlbnQgZWxlbWVudCBpbiBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxl
U2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDgyNjUyNTA3YzdhNTBlNDU0NzVh
ZGEwZjRkYTdjN2RiODQ0ZjdmNS4uNmY3YTZjZGI3ZDQ4ZWI5NjBjNmQ4MWEwMDJlYjNkZWJhMGYw
MDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0w
NS0wMSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEVuc3VyZSB0aGF0IGFuaW1hdGlvbnMgY29udGludWUgdG8gcnVuIHdoZW4gdHJhbnNm
b3JtLXN0eWxlIGlzIGNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzMjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAg
ICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAgICAqIHRlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKE1vY2tH
cmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhpY3NM
YXllckNsaWVudDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6TW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQ6Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6TW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQ6OnBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tHcmFwaGljc0xheWVyQ2xpZW50OjpzaG93RGVidWdC
b3JkZXJzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhpY3NMYXllckNsaWVudDo6
c2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAx
Mi0wNC0yOSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBDYWxsIGhpZ2hVc2FnZURlbHRhTUIgZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDNjNmQ5MjRiYjI0MDc1MTcwY2M5MDE4NWNhZmI3
MmE1NzFiOWNiYmUuLjZiMzU4NDVkZDRmOWJmZGIzMWVhYjUxMzMwODMzMWFjYjIzNjY5MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTg4LDYgKzU4OCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAg
ICAgICAgbV90cmFuc2Zvcm1MYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgbV90cmFu
c2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90
cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKG1fbGF5ZXItPnJlbGVh
c2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSk7CiAKICAgICAgICAgLy8gQ29weSB0aGUgcG9z
aXRpb24gZnJvbSB0aGlzIGxheWVyLgogICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBA
IC02MTksNiArNjIwLDkgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVy
UHJlc2VydmVzM0QoKQogICAgICAgICBpZiAobV90cmFuc2Zvcm1MYXllci0+cGFyZW50KCkpCiAg
ICAgICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5wYXJlbnQoKS0+cmVwbGFjZUNoaWxkKG1fdHJh
bnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwogCisgICAgICAgIG1fbGF5ZXItPnNl
dExheWVyQW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgICAgIG1fbGF5ZXItPnNldExheWVy
QW5pbWF0aW9uQ29udHJvbGxlcihtX3RyYW5zZm9ybUxheWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKCkpOworCiAgICAgICAgIC8vIFJlbGVhc2UgdGhlIHRyYW5zZm9ybSBsYXll
ci4KICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSgw
KTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDQ4YzU3NTQ5NzYwYzE2MzE0YmU3OGQwYzk4ZTgzYmU2YTk4Y2Y5ZjUuLmRlZmE2MGY3ODMz
ZjI4MWYwZDdiYmIxNzYxNTFiNjlmMzE1MTc5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBA
IC02MzYsOSArNjM2LDIwIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucyhk
b3VibGUgbW9ub3RvbmljVGltZSkKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKFBhc3NPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGxheWVy
QW5pbWF0aW9uQ29udHJvbGxlcikKIHsKICAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlciA9
IGxheWVyQW5pbWF0aW9uQ29udHJvbGxlcjsKKyAgICBpZiAobV9sYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIpIHsKKyAgICAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPnNldENsaWVudCh0
aGlzKTsKKyAgICAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPnNldEZvcmNlU3luYygp
OworICAgIH0KICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCitQYXNzT3duUHRyPENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyPiBMYXllckNocm9taXVtOjpyZWxlYXNlTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyKCkKK3sKKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IHRv
UmV0dXJuID0gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIucmVsZWFzZSgpOworICAgIG1fbGF5
ZXJBbmltYXRpb25Db250cm9sbGVyID0gQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICByZXR1cm4gdG9SZXR1cm4ucmVsZWFzZSgpOworfQorCiBib29sIExheWVy
Q2hyb21pdW06Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKQEAgLTY0Nyw3ICs2
NTgsOCBAQCBib29sIExheWVyQ2hyb21pdW06Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiB2
b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRp
b25FdmVudCYgZXZlbnQsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIG1fbGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKGV2ZW50KTsKLSAgICBtX2xh
eWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQod2FsbENsb2NrVGlt
ZSk7CisgICAgaWYgKG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgbV9sYXllckFu
aW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHdhbGxDbG9ja1RpbWUpOwog
fQogCiB2b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSB3
YWxsQ2xvY2tUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQ1OTQ4NDAwNzg4OTQ3NmFlY2Zi
YzJiMjM0NjMwM2QxZDY3NTRiMjUuLjE5Y2U2NjczZmM5OTk5MDczZDk5YWU2MGEwYzc5MDcwZjZh
M2FkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTI0NSw2ICsyNDUsNyBAQCBwdWJsaWM6CiAK
ICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KCkgeyByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICB2b2lk
IHNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcihQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyPik7CisgICAgUGFzc093blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4g
cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBzZXRMYXllckFu
aW1hdGlvbkRlbGVnYXRlKENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSogbGF5ZXJBbmltYXRpb25E
ZWxlZ2F0ZSkgeyBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUgPSBsYXllckFuaW1hdGlvbkRlbGVn
YXRlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmNwcAppbmRleCAxOTkxOTJkNTJhNDQ4YWRjOWJlNDJhMzJkZGIwODAyN2ZmNmNkNzNlLi5hZjM3
NzBlOTVkOTIzMDQ4ZTE5OTY5YjBhOGM4Y2NjNzRkZDEwMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMTYsNyArMTE2LDkgQEAg
UGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKIH0gLy8gbmFtZXBhY2UKIAogQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXI6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgOiBt
X2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhyZWFkKGZhbHNlKQorICAgICwgbV9mb3JjZVN5bmMo
ZmFsc2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKQEAgLTE5NSw5ICsxOTcsMTUg
QEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSkKIC8vIGFyZSBrZXB0IGluIHN5bmMuCiB2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpwdXNoQW5pbWF0aW9uVXBkYXRlc1RvKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyKiBjb250cm9sbGVySW1wbCkKIHsKLSAgICBwdXNoTmV3QW5pbWF0aW9uc1RvSW1w
bFRocmVhZChjb250cm9sbGVySW1wbCk7Ci0gICAgcmVtb3ZlQW5pbWF0aW9uc0NvbXBsZXRlZE9u
TWFpblRocmVhZChjb250cm9sbGVySW1wbCk7Ci0gICAgcHVzaFByb3BlcnRpZXNUb0ltcGxUaHJl
YWQoY29udHJvbGxlckltcGwpOworICAgIGlmIChtX2ZvcmNlU3luYykgeworICAgICAgICByZXBs
YWNlSW1wbFRocmVhZEFuaW1hdGlvbnMoY29udHJvbGxlckltcGwpOworICAgICAgICBtX2ZvcmNl
U3luYyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2hOZXdBbmltYXRpb25zVG9J
bXBsVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKKyAgICAgICAgcmVtb3ZlQW5pbWF0aW9uc0NvbXBs
ZXRlZE9uTWFpblRocmVhZChjb250cm9sbGVySW1wbCk7CisgICAgICAgIHB1c2hQcm9wZXJ0aWVz
VG9JbXBsVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsKKyAgICB9CisgICAgY29udHJvbGxlckltcGwt
Pm1faGFzU3luY2hyb25pemVkV2l0aE1haW5UaHJlYWQgPSB0cnVlOwogfQogCiB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciogZXZlbnRzKQpAQCAtMjQ1LDggKzI1Myw3IEBAIGJvb2wgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmlzQW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmlt
YXRpb246OlRhcmdldFByCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpub3RpZnlB
bmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmIGV2ZW50KQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCkgPT0gZXZlbnQuZ3JvdXBJ
ZCAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkgPT0gZXZlbnQudGFy
Z2V0UHJvcGVydHkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
Pm5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKCkpOworICAgICAgICBpZiAobV9hY3RpdmVBbmlt
YXRpb25zW2ldLT5ncm91cCgpID09IGV2ZW50Lmdyb3VwSWQgJiYgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT50YXJnZXRQcm9wZXJ0eSgpID09IGV2ZW50LnRhcmdldFByb3BlcnR5ICYmIG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSkgewogICAgICAgICAg
ICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZShm
YWxzZSk7CiAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShl
dmVudC5tb25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1NCwyNSArMjYx
LDQwIEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXI6OnNldENsaWVudChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNs
aWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCiB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwpIGNvbnN0CiB7CiAgICAgLy8g
QW55IG5ldyBhbmltYXRpb25zIG93bmVkIGJ5IHRoZSBtYWluIHRocmVhZCdzIGNvbnRyb2xsZXIg
YXJlIGNsb25lZCBhbmQgYWRkZSB0byB0aGUgaW1wbCB0aHJlYWQncyBjb250cm9sbGVyLgogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIENDQWN0aXZlQW5pbWF0aW9uKiBjdXJyZW50QW5pbWF0aW9uID0gbV9hY3RpdmVB
bmltYXRpb25zW2ldLmdldCgpOworCiAgICAgICAgIC8vIElmIHRoZSBhbmltYXRpb24gaXMgYWxy
ZWFkeSBydW5uaW5nIG9uIHRoZSBpbXBsIHRocmVhZCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjb3B5
IGl0IG92ZXIuCi0gICAgICAgIGlmIChjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9u
KG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50
YXJnZXRQcm9wZXJ0eSgpKSkKKyAgICAgICAgaWYgKGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVB
bmltYXRpb24oY3VycmVudEFuaW1hdGlvbi0+Z3JvdXAoKSwgY3VycmVudEFuaW1hdGlvbi0+dGFy
Z2V0UHJvcGVydHkoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBJZiB0
aGUgYW5pbWF0aW9uIGlzIG5vdCBydW5uaW5nIG9uIHRoZSBpbXBsIHRocmVhZCwgaXQgZG9lcyBu
b3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IGl0IG5lZWRzCi0gICAgICAgIC8vIHRvIGJlIGNvcGll
ZCBvdmVyIGFuZCBzdGFydGVkOyBpdCBtYXkgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkLiBJbiB0aGlz
IGNhc2UsIHRoZSBpbXBsIHRocmVhZCBhbmltYXRpb24KLSAgICAgICAgLy8gd2lsbCBoYXZlIGFs
cmVhZHkgbm90aWZpZWQgdGhhdCBpdCBoYXMgc3RhcnRlZCBhbmQgdGhlIG1haW4gdGhyZWFkIGFu
aW1hdGlvbiB3aWxsIG5vIGxvbmdlciBuZWVkCi0gICAgICAgIC8vIGEgc3luY2hyb25pemVkIHN0
YXJ0IHRpbWUuCi0gICAgICAgIGlmICghbV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNo
cm9uaXplZFN0YXJ0VGltZSgpKQorICAgICAgICAvLyBJZiB0aGUgaW1wbCB0aHJlYWQgY29udHJv
bGxlciBoYXMgbm90IHN5bmNocm9uaXplZCB3aXRoIHRoZSBtYWluIHRocmVhZCB5ZXQsCisgICAg
ICAgIC8vIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gaXMg
cnVubmluZywgd2UgbXVzdCBwdXNoIGl0IHRvCisgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZC4g
T3RoZXJ3aXNlLCB3ZSBzaG91bGQgbmV2ZXIgcHVzaCBhIHJ1bm5pbmcgYW5pbWF0aW9uLiBUaGUK
KyAgICAgICAgLy8gYW5pbWF0aW9uIG1heSBoYXZlIGFscmVhZHkgZmluaXNoZWQgb24gdGhlIGlt
cGwgdGhyZWFkIGFuZCB3ZSB3b3VsZCBiZQorICAgICAgICAvLyBpbmNvcnJlY3RseSByZS1hZGRp
bmcgaXQgaW4gdGhpcyBjYXNlLgorICAgICAgICBpZiAoY29udHJvbGxlckltcGwtPm1faGFzU3lu
Y2hyb25pemVkV2l0aE1haW5UaHJlYWQgJiYgIWN1cnJlbnRBbmltYXRpb24tPm5lZWRzU3luY2hy
b25pemVkU3RhcnRUaW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVG
b3JJbXBsVGhyZWFkKCkpOworICAgICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRk
KGN1cnJlbnRBbmltYXRpb24tPmNsb25lRm9ySW1wbFRocmVhZCgpKTsKICAgICAgICAgQVNTRVJU
KCF0b0FkZC0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7Ci0gICAgICAgIC8vIFRoZSBu
ZXcgYW5pbWF0aW9uIHNob3VsZCBiZSBzZXQgdG8gcnVuIGFzIHNvb24gYXMgcG9zc2libGUuCi0g
ICAgICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRh
cmdldEF2YWlsYWJpbGl0eSwgMCk7CisKKyAgICAgICAgLy8gSWYgY29udHJvbGxlckltcGwgaGFz
IGJlZW4gc3luY2hyb25pemVkLCB0aGVuIHRoaXMgaXMgYSBuZXcgYW5pbWF0aW9uIGFuZAorICAg
ICAgICAvLyBzaG91bGQgYmUgaW4gdGhlIHdhaXRpbmcgZm9yIHRhcmdldCBhdmFpbGFiaWxpdGl5
IHN0YXRlLiBJZiB0aGUgYWN0aXZlCisgICAgICAgIC8vIGFuaW1hdGlvbiBzdGlsbCBuZWVkcyBh
IHN5bmNocm9uaXplZCBzdGFydCB0aW1lLCB3ZSBuZWVkIGl0IHRvIHN0YXJ0IG9uCisgICAgICAg
IC8vIHRoZSBpbXBsIHRocmVhZCwgc28gd2UnbGwgYWxzbyBwdXQgaXQgaW4gdGhlIHdhaXRpbmcg
Zm9yIHRhcmdldCBhdmFpbGFiaWxpdHkKKyAgICAgICAgLy8gc3RhdGUuCisgICAgICAgIGlmIChj
b250cm9sbGVySW1wbC0+bV9oYXNTeW5jaHJvbml6ZWRXaXRoTWFpblRocmVhZCB8fCBjdXJyZW50
QW5pbWF0aW9uLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgpKQorICAgICAgICAgICAgdG9B
ZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxh
YmlsaXR5LCAwKTsKKwogICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkKHRvQWRkLnJlbGVhc2Uo
KSk7CiAgICAgfQogfQpAQCAtNDI5LDYgKzQ1MSwxMyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSwg
QwogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZUlt
cGxUaHJlYWRBbmltYXRpb25zKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVy
SW1wbCkgY29uc3QKK3sKKyAgICBjb250cm9sbGVySW1wbC0+bV9hY3RpdmVBbmltYXRpb25zLmNs
ZWFyKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGNvbnRyb2xsZXJJbXBsLT5hZGQobV9hY3RpdmVBbmltYXRpb25z
W2ldLT5jbG9uZUZvckltcGxUaHJlYWQoKSk7Cit9CisKIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXI6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaAppbmRleCBlMjJm
ODA1NGQ2MjMyMDdjNGQ3MGMzMTIxZmIxYjAzOTVhMmU2MzAyLi4zMWU3M2QzMWM4NDQ5MWJmNmI2
MTMxNzFiNzI3Y2E1ZjY2ZGEwNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmgKQEAgLTkwLDYgKzkwLDEyIEBAIHB1YmxpYzoKICAgICAvLyBmdW5j
dGlvbiB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIG1haW4gdGhyZWFkIGFuaW1hdGlvbidzIHN0
YXJ0IHRpbWUuCiAgICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0
aW9uRXZlbnQmKTsKIAorICAgIC8vIElmIGEgc3luYyBpcyBmb3JjZWQsIHRoZW4gdGhlIG5leHQg
dGltZSBhbmltYXRpb25zIHVwZGF0ZXMgYXJlIHB1c2hlZCB0byB0aGUgaW1wbAorICAgIC8vIHRo
cmVhZCwgYWxsIGFuaW1hdGlvbnMgd2lsbCBiZSB0cmFuc2ZlcnJlZC4KKyAgICB2b2lkIHNldEZv
cmNlU3luYygpIHsgbV9mb3JjZVN5bmMgPSB0cnVlOyB9CisKKyAgICB2b2lkIHNldENsaWVudChD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCopOworCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJDbGllbnQqKTsKIApAQCAtOTksNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1c2hO
ZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKikgY29u
c3Q7CiAgICAgdm9pZCByZW1vdmVBbmltYXRpb25zQ29tcGxldGVkT25NYWluVGhyZWFkKENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyKikgY29uc3Q7CiAgICAgdm9pZCBwdXNoUHJvcGVydGllc1Rv
SW1wbFRocmVhZChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0OworICAgIHZvaWQg
cmVwbGFjZUltcGxUaHJlYWRBbmltYXRpb25zKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKikg
Y29uc3Q7CiAKICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhkb3Vi
bGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqKTsKICAgICB2b2lkIHN0
YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUsIEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yKik7CkBAIC0xMDgsNiArMTE1LDEyIEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAorICAgIC8v
IEEgbGF5ZXIgYW5pbWF0aW9uIGNvbnRyb2xsZXIgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgaXRzIGZp
cnN0IHN5bmMuCisgICAgYm9vbCBtX2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhyZWFkOworCisg
ICAgLy8gSWYgdGhpcyBpcyB0cnVlLCB3ZSBmb3JjZSBhIHN5bmMgdG8gdGhlIGltcGwgdGhyZWFk
LgorICAgIGJvb2wgbV9mb3JjZVN5bmM7CisKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckNsaWVudCogbV9jbGllbnQ7CiAgICAgVmVjdG9yPE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4g
PiBtX2FjdGl2ZUFuaW1hdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5k
ZXggMGU4MjI4YTZlODkwZDVmMzc0MDQ3ZmMzYTgxNzFiODlkMTM4OWFhOS4uNzU5OGJkZGFlMjdh
OGQ0ZDIzMzllNjA3NjcyMGUwZmFlZTU2NTIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpCkBAIC0xMDMsNiArMTAzLDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9GbG9hdFF1YWRUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCcsCisgICAgICAgICAgICAndGVzdHMvR3Jh
cGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRp
bmdVdGlsaXRpZXNUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCS2V5UGF0aFRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCmluZGV4IGZhOTVhMmFjNWE5ZmM3MWNjNjdlNGM3MTVi
N2IyODMzMDIwZjQxOGUuLjVkNDBjYmM1NjZjMTFlMjMxMTNiNjQ0ZDY4YzliZWM2YTU0OGViMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKQEAgLTI3MSw2ICsyNzEsMzYgQEAgVEVT
VChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIGRvTm90U3luY0ZpbmlzaGVkQW5pbWF0
aW9uKQogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9u
KDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiB9CiAKK1RFU1QoQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJUZXN0LCBkb1N5bmNSdW5uaW5nQW5pbWF0aW9uc1doZW5Db250cm9sbGVy
SXNVbmluaXRpYWxpemVkKQoreworICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQgZHVtbXlJbXBsOworICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gY29u
dHJvbGxlckltcGwoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXlJbXBs
KSk7CisgICAgRmFrZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCBkdW1teTsKKyAgICBP
d25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGNvbnRyb2xsZXIoQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKKworICAgIEVYUEVDVF9GQUxTRShjb250
cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFj
aXR5KSk7CisKKyAgICBhZGRPcGFjaXR5VHJhbnNpdGlvblRvQ29udHJvbGxlcigqY29udHJvbGxl
ciwgMSwgMCwgMSwgZmFsc2UpOworCisgICAgY29udHJvbGxlci0+cHVzaEFuaW1hdGlvblVwZGF0
ZXNUbyhjb250cm9sbGVySW1wbC5nZXQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVy
SW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7
CisgICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxh
YmlsaXR5LCBjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5p
bWF0aW9uOjpPcGFjaXR5KS0+cnVuU3RhdGUoKSk7CisKKyAgICAvLyBOb3RpZnkgbWFpbiB0aHJl
YWQgY29udHJvbGxlciB0aGF0IHRoZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQuCisgICAgY29udHJv
bGxlci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChDQ0FuaW1hdGlvbkV2ZW50KENDQW5pbWF0aW9u
RXZlbnQ6OlN0YXJ0ZWQsIDAsIDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCAwKSk7CisK
KyAgICAvLyBSZWNyZWF0ZSB0aGUgaW1wbCB0aHJlYWQgY29udHJvbGxlci4KKyAgICBPd25QdHI8
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IHVuaW5pdGlhbGl6ZWRDb250cm9sbGVySW1wbChD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKCZkdW1teUltcGwpKTsKKworICAgIEVY
UEVDVF9GQUxTRSh1bmluaXRpYWxpemVkQ29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlv
bigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworCisgICAgY29udHJvbGxlci0+cHVz
aEFuaW1hdGlvblVwZGF0ZXNUbyh1bmluaXRpYWxpemVkQ29udHJvbGxlckltcGwuZ2V0KCkpOwor
CisgICAgLy8gVGhlIG1haW4gdGhyZWFkIGhhcyBhIHJ1bm5pbmcgYW5pbWF0aW9uLCBpdCBzaG91
bGQgc3RpbGwgYmUgc3luYydkIGJlY2F1c2UgdGhlIGNvbnRyb2xsZXIgaXMgdW5pbml0aWFsaXpl
ZC4KKyAgICBFWFBFQ1RfVFJVRSh1bmluaXRpYWxpemVkQ29udHJvbGxlckltcGwtPmdldEFjdGl2
ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworfQorCiAvLyBUZXN0
cyB0aGF0IHRyYW5zaXRpb25pbmcgb3BhY2l0eSBmcm9tIDAgdG8gMSB3b3JrcyBhcyBleHBlY3Rl
ZC4KIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBUcml2aWFsVHJhbnNpdGlv
bikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NM
YXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YWQzMjYyMTVjZjNiODFkYmVh
ZTU0YTEwNzU1ZDUwZmU0ZjA5MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIE1vY2tH
cmFwaGljc0xheWVyQ2xpZW50IDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgeworICBwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhp
Y3NMYXllciosIGRvdWJsZSB0aW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1Jl
cXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NM
YXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkgeyB9CisgICAgdmlydHVh
bCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBH
cmFwaGljc0xheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKK1RFU1QoR3JhcGhp
Y3NMYXllckNocm9taXVtVGVzdCwgdXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRFdpdGhBbmltYXRpb25z
KQoreworICAgIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50IGNsaWVudDsKKyAgICBPd25QdHI8R3Jh
cGhpY3NMYXllckNocm9taXVtPiBncmFwaGljc0xheWVyID0gc3RhdGljX3BvaW50ZXJfY2FzdDxH
cmFwaGljc0xheWVyQ2hyb21pdW0+KEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgmY2xpZW50KSk7Cisg
ICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci5nZXQoKSk7CisKKyAgICBMYXllckNocm9taXVt
KiBwbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KGdyYXBoaWNzTGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllcik7CisK
KyAgICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwor
CisgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBmbG9hdEFuaW1hdGlvbihDQ0FjdGl2ZUFu
aW1hdGlvbjo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRBbmltYXRpb25DdXJ2ZSksIDAs
IDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CisgICAgcGxhdGZvcm1MYXllci0+bGF5
ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmFkZChmbG9hdEFuaW1hdGlvbi5yZWxlYXNlKCkpOwor
CisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwor
CisgICAgZ3JhcGhpY3NMYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisKKyAgICBwbGF0Zm9y
bUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KGdyYXBoaWNzTGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllcik7CisKKyAgICBBU1NF
UlRfVFJVRShwbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CisgICAgcGxhdGZv
cm1MYXllci0+cmVtb3ZlQW5pbWF0aW9uKDApOworICAgIEFTU0VSVF9GQUxTRShwbGF0Zm9ybUxh
eWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CisKKyAgICBncmFwaGljc0xheWVyLT5zZXRQcmVz
ZXJ2ZXMzRChmYWxzZSk7CisKKyAgICBwbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJD
aHJvbWl1bSo+KGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RS
VUUocGxhdGZvcm1MYXllcik7CisKKyAgICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXllci0+aGFz
QWN0aXZlQW5pbWF0aW9uKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141199</attachid>
            <date>2012-05-10 10:59:31 -0700</date>
            <delta_ts>2012-05-10 11:42:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120510135929.patch</filename>
            <type>text/plain</type>
            <size>31450</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVjYjljMTQ1YzMzNWVj
MjJiYTg0MDQ1MWRjODFiY2I4NTkwZWU1OC4uMDdmOTRlNTVjYTdiN2Q5NWQ2NzNiNzdjZTM5OTEw
M2VmYmNlNTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA1LTEwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUg
aXMgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIHRyYW5zZm9ybS1zdHlsZSBpcyBjaGFuZ2VkLCBlbnN1cmUgdGhhdCB3ZSB0cmFuc2Zl
ciBhbmltYXRpb25zIHNvIHRoYXQgdGhleQorICAgICAgICBjb250aW51ZSB0aWNraW5nLgorCisg
ICAgICAgIFVuaXQgdGVzdGVkIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QudXBkYXRlTGF5
ZXJQcmVzZXJ2ZXMzRFdpdGhBbmltYXRpb25zCisKKyAgICAgICAgVGVzdDogYW5pbWF0aW9ucy9j
aGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24uaHRtbAorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2
ZXMzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cmVsZWFzZUxh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExh
eWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaEFuaW1hdGlvblVwZGF0
ZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90
aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1c2hOZXdBbmltYXRpb25zVG9JbXBs
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpy
ZXBsYWNlSW1wbFRocmVhZEFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6c2V0Rm9yY2VTeW5jKToKKwogMjAxMi0wNS0xMCAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBJbXBs
ZW1lbnQgZml0LXRvLXdpZHRoIGJlaGF2aW91cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA0MzFhOTg0YWRjZDhmMTczYWMwMTY3YmQ2MDNiNjU4ZjI0YTBjYWNlLi5jODFlODM5NjlhNWU4
ODQ1MTNlY2QwZDgxNGNmZTUxMmI2YTA1YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTEwICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHRoYXQgYW5pbWF0aW9ucyBjb250
aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUgaXMgY2hhbmdlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMyODMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICogdGVz
dHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
VGVzdHMpOgorICAgICAgICAoTW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6Ok1vY2tHcmFwaGljc0xheWVyQ2xpZW50Ojpub3RpZnlBbmltYXRpb25TdGFydGVk
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhpY3NMYXllckNsaWVudDo6bm90aWZ5
U3luY1JlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhpY3NMYXllckNs
aWVudDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0dyYXBoaWNz
TGF5ZXJDbGllbnQ6OnNob3dEZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1v
Y2tHcmFwaGljc0xheWVyQ2xpZW50OjpzaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlRFU1QpOgorCiAyMDEyLTA1LTA5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIE1hcmsgQ0NMYXllclRyZWVIb3N0VGVzdFNl
dE5lZWRzQ29tbWl0Mi5ydW5NdWx0aVRocmVhZCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDllZjMxYjI1YmMzZmMxNjBiYmRjMDk2OTJiNzI5NWQzZDk2OTA0
ZDAuLjk0MzE3MzUwNGJiNGQ1YTUyOWVhM2M2ZmE1ZDU5ZTNiNGU2YmEyNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgbV90
cmFuc2Zvcm1MYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgICAgICBtX3RyYW5z
Zm9ybUxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXll
ci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zvcm1M
YXllci0+c2V0TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKG1fbGF5ZXItPnJlbGVhc2VMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIoKSk7CiAKICAgICAgICAgLy8gQ29weSB0aGUgcG9zaXRpb24gZnJv
bSB0aGlzIGxheWVyLgogICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC02MzgsNiAr
NjM5LDkgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVz
M0QoKQogICAgICAgICBpZiAobV90cmFuc2Zvcm1MYXllci0+cGFyZW50KCkpCiAgICAgICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyLT5wYXJlbnQoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5
ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwogCisgICAgICAgIG1fbGF5ZXItPnNldExheWVyQW5p
bWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgICAgIG1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9u
Q29udHJvbGxlcihtX3RyYW5zZm9ybUxheWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKCkpOworCiAgICAgICAgIC8vIFJlbGVhc2UgdGhlIHRyYW5zZm9ybSBsYXllci4KICAgICAg
ICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSgwKTsKICAgICAg
ICAgbV90cmFuc2Zvcm1MYXllciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGM3Zjdi
MzFiOTViMzBjYTNkYzEyNGVjMzdjNzg5Y2E4ZDQ5YmY0MzguLjFhMGU2NzA4OWYxM2VkYzMwMDJj
MTA3YTNlYjVjMWExYWZhYzgwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02MzQsOSAr
NjM0LDIwIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljVGltZSkKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKFBhc3NPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGxheWVyQW5pbWF0aW9u
Q29udHJvbGxlcikKIHsKICAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlciA9IGxheWVyQW5p
bWF0aW9uQ29udHJvbGxlcjsKKyAgICBpZiAobV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIpIHsK
KyAgICAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPnNldENsaWVudCh0aGlzKTsKKyAg
ICAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPnNldEZvcmNlU3luYygpOworICAgIH0K
ICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCitQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyPiBMYXllckNocm9taXVtOjpyZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KCkKK3sKKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IHRvUmV0dXJuID0g
bV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIucmVsZWFzZSgpOworICAgIG1fbGF5ZXJBbmltYXRp
b25Db250cm9sbGVyID0gQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSh0aGlzKTsK
KyAgICByZXR1cm4gdG9SZXR1cm4ucmVsZWFzZSgpOworfQorCiBib29sIExheWVyQ2hyb21pdW06
Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGF5ZXJBbmltYXRp
b25Db250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKQEAgLTY0NSw3ICs2NTYsOCBAQCBi
b29sIExheWVyQ2hyb21pdW06Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiB2b2lkIExheWVy
Q2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYg
ZXZlbnQsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIG1fbGF5ZXJBbmltYXRpb25Db250
cm9sbGVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKGV2ZW50KTsKLSAgICBtX2xheWVyQW5pbWF0
aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQod2FsbENsb2NrVGltZSk7CisgICAg
aWYgKG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgbV9sYXllckFuaW1hdGlvbkRl
bGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHdhbGxDbG9ja1RpbWUpOwogfQogCiB2b2lk
IExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSB3YWxsQ2xvY2tU
aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDllN2ZjZTUwYzU5YWM4MzlkM2QyZjkwZTA5ZjUx
YjRiNDBjNTk5ZjIuLmE1OTBiZDJjMzFhMDViNTRiNWVmOGIxNWNiYWQ5ODU3MDVkMjE3ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwdWJsaWM6CiAKICAgICBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkgeyByZXR1
cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldExheWVy
QW5pbWF0aW9uQ29udHJvbGxlcihQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
Pik7CisgICAgUGFzc093blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gcmVsZWFzZUxh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbkRl
bGVnYXRlKENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSogbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSkg
eyBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUgPSBsYXllckFuaW1hdGlvbkRlbGVnYXRlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRl
eCAyZWUxODg4NDhhMDE0ZWQ1ZWM5NGIwYjc5ZGU3YWFiMTA4YTFmOTYxLi5hODVjOGFhM2Y2MmE3
YThiZDZiZjQ4MzBiNjQ5MjI2MDNjZjQ0ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMjQsNyArMTI0LDkgQEAgUGFzc093blB0
cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWwKIH0gLy8gbmFtZXBhY2UKIAogQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgOiBtX2hhc1N5bmNo
cm9uaXplZFdpdGhNYWluVGhyZWFkKGZhbHNlKQorICAgICwgbV9mb3JjZVN5bmMoZmFsc2UpCisg
ICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKQEAgLTIwMyw5ICsyMDUsMTUgQEAgdm9pZCBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rv
bmljVGltZSkKIC8vIGFyZSBrZXB0IGluIHN5bmMuCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyOjpwdXNoQW5pbWF0aW9uVXBkYXRlc1RvKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KiBjb250cm9sbGVySW1wbCkKIHsKLSAgICBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChj
b250cm9sbGVySW1wbCk7Ci0gICAgcmVtb3ZlQW5pbWF0aW9uc0NvbXBsZXRlZE9uTWFpblRocmVh
ZChjb250cm9sbGVySW1wbCk7Ci0gICAgcHVzaFByb3BlcnRpZXNUb0ltcGxUaHJlYWQoY29udHJv
bGxlckltcGwpOworICAgIGlmIChtX2ZvcmNlU3luYykgeworICAgICAgICByZXBsYWNlSW1wbFRo
cmVhZEFuaW1hdGlvbnMoY29udHJvbGxlckltcGwpOworICAgICAgICBtX2ZvcmNlU3luYyA9IGZh
bHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2hOZXdBbmltYXRpb25zVG9JbXBsVGhyZWFk
KGNvbnRyb2xsZXJJbXBsKTsKKyAgICAgICAgcmVtb3ZlQW5pbWF0aW9uc0NvbXBsZXRlZE9uTWFp
blRocmVhZChjb250cm9sbGVySW1wbCk7CisgICAgICAgIHB1c2hQcm9wZXJ0aWVzVG9JbXBsVGhy
ZWFkKGNvbnRyb2xsZXJJbXBsKTsKKyAgICB9CisgICAgY29udHJvbGxlckltcGwtPm1faGFzU3lu
Y2hyb25pemVkV2l0aE1haW5UaHJlYWQgPSB0cnVlOwogfQogCiB2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3RvciogZXZlbnRzKQpAQCAtMjUzLDggKzI2MSw3IEBAIGJvb2wgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OmlzQW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmltYXRpb246OlRh
cmdldFByCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpub3RpZnlBbmltYXRpb25T
dGFydGVkKGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmIGV2ZW50KQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCkgPT0gZXZlbnQuZ3JvdXBJZCAmJiBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkgPT0gZXZlbnQudGFyZ2V0UHJvcGVy
dHkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3lu
Y2hyb25pemVkU3RhcnRUaW1lKCkpOworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ld
LT5ncm91cCgpID09IGV2ZW50Lmdyb3VwSWQgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJn
ZXRQcm9wZXJ0eSgpID09IGV2ZW50LnRhcmdldFByb3BlcnR5ICYmIG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSkgewogICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZShmYWxzZSk7CiAg
ICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShldmVudC5tb25v
dG9uaWNUaW1lKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2MiwyNiArMjY5LDQwIEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgQ0NBbmltYXRpb25FdmVudCYKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXI6OnNldENsaWVudChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCogY2xp
ZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCiB2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwpIGNvbnN0CiB7CiAgICAgLy8gQW55IG5ldyBh
bmltYXRpb25zIG93bmVkIGJ5IHRoZSBtYWluIHRocmVhZCdzIGNvbnRyb2xsZXIgYXJlIGNsb25l
ZCBhbmQgYWRkZSB0byB0aGUgaW1wbCB0aHJlYWQncyBjb250cm9sbGVyLgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAg
IENDQWN0aXZlQW5pbWF0aW9uKiBjdXJyZW50QW5pbWF0aW9uID0gbV9hY3RpdmVBbmltYXRpb25z
W2ldLmdldCgpOworCiAgICAgICAgIC8vIElmIHRoZSBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5u
aW5nIG9uIHRoZSBpbXBsIHRocmVhZCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjb3B5IGl0IG92ZXIu
Ci0gICAgICAgIGlmIChjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9w
ZXJ0eSgpKSkKKyAgICAgICAgaWYgKGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24o
Y3VycmVudEFuaW1hdGlvbi0+Z3JvdXAoKSwgY3VycmVudEFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVy
dHkoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBJZiB0aGUgYW5pbWF0
aW9uIGlzIG5vdCBydW5uaW5nIG9uIHRoZSBpbXBsIHRocmVhZCwgaXQgZG9lcyBub3QgbmVjZXNz
YXJpbHkgbWVhbiB0aGF0IGl0IG5lZWRzCi0gICAgICAgIC8vIHRvIGJlIGNvcGllZCBvdmVyIGFu
ZCBzdGFydGVkOyBpdCBtYXkgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkLiBJbiB0aGlzIGNhc2UsIHRo
ZSBpbXBsIHRocmVhZCBhbmltYXRpb24KLSAgICAgICAgLy8gd2lsbCBoYXZlIGFscmVhZHkgbm90
aWZpZWQgdGhhdCBpdCBoYXMgc3RhcnRlZCBhbmQgdGhlIG1haW4gdGhyZWFkIGFuaW1hdGlvbiB3
aWxsIG5vIGxvbmdlciBuZWVkCi0gICAgICAgIC8vIGEgc3luY2hyb25pemVkIHN0YXJ0IHRpbWUu
Ci0gICAgICAgIGlmICghbV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNocm9uaXplZFN0
YXJ0VGltZSgpKQorICAgICAgICAvLyBJZiB0aGUgaW1wbCB0aHJlYWQgY29udHJvbGxlciBoYXMg
bm90IHN5bmNocm9uaXplZCB3aXRoIHRoZSBtYWluIHRocmVhZCB5ZXQsCisgICAgICAgIC8vIGl0
IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gaXMgcnVubmluZywg
d2UgbXVzdCBwdXNoIGl0IHRvCisgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZC4gT3RoZXJ3aXNl
LCB3ZSBzaG91bGQgbmV2ZXIgcHVzaCBhIHJ1bm5pbmcgYW5pbWF0aW9uLiBUaGUKKyAgICAgICAg
Ly8gYW5pbWF0aW9uIG1heSBoYXZlIGFscmVhZHkgZmluaXNoZWQgb24gdGhlIGltcGwgdGhyZWFk
IGFuZCB3ZSB3b3VsZCBiZQorICAgICAgICAvLyBpbmNvcnJlY3RseSByZS1hZGRpbmcgaXQgaW4g
dGhpcyBjYXNlLgorICAgICAgICBpZiAoY29udHJvbGxlckltcGwtPm1faGFzU3luY2hyb25pemVk
V2l0aE1haW5UaHJlYWQgJiYgIWN1cnJlbnRBbmltYXRpb24tPm5lZWRzU3luY2hyb25pemVkU3Rh
cnRUaW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8Q0NBY3Rp
dmVBbmltYXRpb24+IHRvQWRkKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVGb3JJbXBsVGhy
ZWFkKCkpOworICAgICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKGN1cnJlbnRB
bmltYXRpb24tPmNsb25lRm9ySW1wbFRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCF0b0FkZC0+
bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7Ci0gICAgICAgIC8vIFRoZSBuZXcgYW5pbWF0
aW9uIHNob3VsZCBiZSBzZXQgdG8gcnVuIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgICAgIHRv
QWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWls
YWJpbGl0eSwgMCk7Ci0gICAgICAgIHRvQWRkLT5zZXRTdGFydFRpbWUoMCk7CisgICAgICAgIC8v
IElmIGNvbnRyb2xsZXJJbXBsIGhhcyBiZWVuIHN5bmNocm9uaXplZCwgdGhlbiB0aGlzIGlzIGEg
bmV3IGFuaW1hdGlvbiBhbmQKKyAgICAgICAgLy8gc2hvdWxkIGJlIGluIHRoZSB3YWl0aW5nIGZv
ciB0YXJnZXQgYXZhaWxhYmlsaXRpeSBzdGF0ZS4gSWYgdGhlIGFjdGl2ZQorICAgICAgICAvLyBh
bmltYXRpb24gc3RpbGwgbmVlZHMgYSBzeW5jaHJvbml6ZWQgc3RhcnQgdGltZSwgd2UgbmVlZCBp
dCB0byBzdGFydCBvbgorICAgICAgICAvLyB0aGUgaW1wbCB0aHJlYWQsIHNvIHdlJ2xsIGFsc28g
cHV0IGl0IGluIHRoZSB3YWl0aW5nIGZvciB0YXJnZXQgYXZhaWxhYmlsaXR5CisgICAgICAgIC8v
IHN0YXRlLgorICAgICAgICBpZiAoY29udHJvbGxlckltcGwtPm1faGFzU3luY2hyb25pemVkV2l0
aE1haW5UaHJlYWQgfHwgY3VycmVudEFuaW1hdGlvbi0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRp
bWUoKSkgeworICAgICAgICAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9u
OjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5LCAwKTsKKyAgICAgICAgICAgIHRvQWRkLT5z
ZXRTdGFydFRpbWUoMCk7CisgICAgICAgIH0KICAgICAgICAgY29udHJvbGxlckltcGwtPmFkZCh0
b0FkZC5yZWxlYXNlKCkpOwogICAgIH0KIH0KQEAgLTQzOCw2ICs0NTksMTMgQEAgdm9pZCBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoZG91YmxlIG1v
bm90b25pY1RpbWUsIEMKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI6OnJlcGxhY2VJbXBsVGhyZWFkQW5pbWF0aW9ucyhDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ciogY29udHJvbGxlckltcGwpIGNvbnN0Cit7CisgICAgY29udHJvbGxlckltcGwtPm1fYWN0aXZl
QW5pbWF0aW9ucy5jbGVhcigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVB
bmltYXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkKG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVGb3JJbXBsVGhyZWFkKCkpOworfQorCiB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXpl
KCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmgKaW5kZXggZTIyZjgwNTRkNjIzMjA3YzRkNzBjMzEyMWZiMWIwMzk1YTJlNjMwMi4uMzFlNzNk
MzFjODQ0OTFiZjZiNjEzMTcxYjcyN2NhNWY2NmRhMDczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC05MCw2ICs5MCwxMiBAQCBwdWJsaWM6
CiAgICAgLy8gZnVuY3Rpb24gdXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyBtYWluIHRocmVhZCBh
bmltYXRpb24ncyBzdGFydCB0aW1lLgogICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChj
b25zdCBDQ0FuaW1hdGlvbkV2ZW50Jik7CiAKKyAgICAvLyBJZiBhIHN5bmMgaXMgZm9yY2VkLCB0
aGVuIHRoZSBuZXh0IHRpbWUgYW5pbWF0aW9ucyB1cGRhdGVzIGFyZSBwdXNoZWQgdG8gdGhlIGlt
cGwKKyAgICAvLyB0aHJlYWQsIGFsbCBhbmltYXRpb25zIHdpbGwgYmUgdHJhbnNmZXJyZWQuCisg
ICAgdm9pZCBzZXRGb3JjZVN5bmMoKSB7IG1fZm9yY2VTeW5jID0gdHJ1ZTsgfQorCisgICAgdm9p
ZCBzZXRDbGllbnQoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqKTsKKwogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyQ2xpZW50Kik7CiAKQEAgLTk5LDYgKzEwNSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlciopIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlQW5pbWF0aW9uc0NvbXBsZXRlZE9uTWFp
blRocmVhZChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0OwogICAgIHZvaWQgcHVz
aFByb3BlcnRpZXNUb0ltcGxUaHJlYWQoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIqKSBjb25z
dDsKKyAgICB2b2lkIHJlcGxhY2VJbXBsVGhyZWFkQW5pbWF0aW9ucyhDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlciopIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
TmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKik7
CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBtb25v
dG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciopOwpAQCAtMTA4LDYgKzExNSwxMiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCB0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSk7CiAKKyAgICAvLyBBIGxheWVyIGFuaW1hdGlvbiBjb250cm9sbGVyIGlzIGluaXRpYWxpemVk
IGFmdGVyIGl0cyBmaXJzdCBzeW5jLgorICAgIGJvb2wgbV9oYXNTeW5jaHJvbml6ZWRXaXRoTWFp
blRocmVhZDsKKworICAgIC8vIElmIHRoaXMgaXMgdHJ1ZSwgd2UgZm9yY2UgYSBzeW5jIHRvIHRo
ZSBpbXBsIHRocmVhZC4KKyAgICBib29sIG1fZm9yY2VTeW5jOworCiAgICAgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxPd25QdHI8Q0NBY3Rp
dmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCmluZGV4IGZjMjY3NDdjNmU5MWJiZWZlZWU5NjY1YTFkZTVkMDBmNzQ1NWQyYmYu
LmM0ZDA1NTFmYWZjYjczZDIxMTViZjk3YzYyZGY2NTY5Y2RkNzY2NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgICAgICAgICAndGVzdHMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1l
VGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgn
LAorICAgICAgICAgICAgJ3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0lEQktleVBhdGhUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCTGV2
ZWxEQkNvZGluZ1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcAppbmRleCAx
ZDU0MDlmOThlZGQxYTM5NGVlNGY5OTlkYTZkNDc1MmNhNjY1OGUzLi4yNzc3ZmJhNGQxZjZhOGQ0
YzcxZWU0MjI5MGU4YzA3OGUzOWQ5NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3Bw
CkBAIC0zNjUsNiArMzY1LDM2IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0
LCBkb05vdFN5bmNGaW5pc2hlZEFuaW1hdGlvbikKICAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxl
ckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkp
OwogfQogCitURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgZG9TeW5jUnVubmlu
Z0FuaW1hdGlvbnNXaGVuQ29udHJvbGxlcklzVW5pbml0aWFsaXplZCkKK3sKKyAgICBGYWtlTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IGR1bW15SW1wbDsKKyAgICBPd25QdHI8Q0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXI+IGNvbnRyb2xsZXJJbXBsKENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyOjpjcmVhdGUoJmR1bW15SW1wbCkpOworICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJDbGllbnQgZHVtbXk7CisgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
PiBjb250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7
CisKKyAgICBFWFBFQ1RfRkFMU0UoY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigw
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworCisgICAgYWRkT3BhY2l0eVRyYW5zaXRp
b25Ub0NvbnRyb2xsZXIoKmNvbnRyb2xsZXIsIDEsIDAsIDEsIGZhbHNlKTsKKworICAgIGNvbnRy
b2xsZXItPnB1c2hBbmltYXRpb25VcGRhdGVzVG8oY29udHJvbGxlckltcGwuZ2V0KCkpOworCisg
ICAgRVhQRUNUX1RSVUUoY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlv
bjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSwgY29udHJvbGxlckltcGwtPmdldEFjdGl2
ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSktPnJ1blN0YXRlKCkpOwor
CisgICAgLy8gTm90aWZ5IG1haW4gdGhyZWFkIGNvbnRyb2xsZXIgdGhhdCB0aGUgYW5pbWF0aW9u
IGhhcyBzdGFydGVkLgorICAgIGNvbnRyb2xsZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoQ0NB
bmltYXRpb25FdmVudChDQ0FuaW1hdGlvbkV2ZW50OjpTdGFydGVkLCAwLCAwLCBDQ0FjdGl2ZUFu
aW1hdGlvbjo6T3BhY2l0eSwgMCkpOworCisgICAgLy8gUmVjcmVhdGUgdGhlIGltcGwgdGhyZWFk
IGNvbnRyb2xsZXIuCisgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiB1bmlu
aXRpYWxpemVkQ29udHJvbGxlckltcGwoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0
ZSgmZHVtbXlJbXBsKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UodW5pbml0aWFsaXplZENvbnRyb2xs
ZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkp
KTsKKworICAgIGNvbnRyb2xsZXItPnB1c2hBbmltYXRpb25VcGRhdGVzVG8odW5pbml0aWFsaXpl
ZENvbnRyb2xsZXJJbXBsLmdldCgpKTsKKworICAgIC8vIFRoZSBtYWluIHRocmVhZCBoYXMgYSBy
dW5uaW5nIGFuaW1hdGlvbiwgaXQgc2hvdWxkIHN0aWxsIGJlIHN5bmMnZCBiZWNhdXNlIHRoZSBj
b250cm9sbGVyIGlzIHVuaW5pdGlhbGl6ZWQuCisgICAgRVhQRUNUX1RSVUUodW5pbml0aWFsaXpl
ZENvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246
Ok9wYWNpdHkpKTsKK30KKwogLy8gVGVzdHMgdGhhdCB0cmFuc2l0aW9uaW5nIG9wYWNpdHkgZnJv
bSAwIHRvIDEgd29ya3MgYXMgZXhwZWN0ZWQuCiBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyVGVzdCwgVHJpdmlhbFRyYW5zaXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zOWFkMzI2MjE1Y2YzYjgxZGJlYWU1NGExMDc1NWQ1MGZlNGYwOTA2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2hyb21pdW0uaCIKKworI2luY2x1ZGUg
IkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOworCitu
YW1lc3BhY2UgeworCitjbGFzcyBNb2NrR3JhcGhpY3NMYXllckNsaWVudCA6IHB1YmxpYyBHcmFw
aGljc0xheWVyQ2xpZW50IHsKKyAgcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmlt
YXRpb25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdy
YXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0
JiBpbkNsaXApIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBz
aG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Cit9OworCitURVNUKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QsIHVwZGF0ZUxheWVy
UHJlc2VydmVzM0RXaXRoQW5pbWF0aW9ucykKK3sKKyAgICBNb2NrR3JhcGhpY3NMYXllckNsaWVu
dCBjbGllbnQ7CisgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXJDaHJvbWl1bT4gZ3JhcGhpY3NMYXll
ciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtPihHcmFwaGljc0xh
eWVyOjpjcmVhdGUoJmNsaWVudCkpOworICAgIEFTU0VSVF9UUlVFKGdyYXBoaWNzTGF5ZXIuZ2V0
KCkpOworCisgICAgTGF5ZXJDaHJvbWl1bSogcGxhdGZvcm1MYXllciA9IHN0YXRpY19jYXN0PExh
eWVyQ2hyb21pdW0qPihncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIEFTU0VS
VF9UUlVFKHBsYXRmb3JtTGF5ZXIpOworCisgICAgQVNTRVJUX0ZBTFNFKHBsYXRmb3JtTGF5ZXIt
Pmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKworICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4g
ZmxvYXRBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OmNyZWF0ZShhZG9wdFB0cihuZXcgRmFr
ZUZsb2F0QW5pbWF0aW9uQ3VydmUpLCAwLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkp
OworICAgIHBsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGQoZmxv
YXRBbmltYXRpb24ucmVsZWFzZSgpKTsKKworICAgIEFTU0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXIt
Pmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKworICAgIGdyYXBoaWNzTGF5ZXItPnNldFByZXNlcnZl
czNEKHRydWUpOworCisgICAgcGxhdGZvcm1MYXllciA9IHN0YXRpY19jYXN0PExheWVyQ2hyb21p
dW0qPihncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIEFTU0VSVF9UUlVFKHBs
YXRmb3JtTGF5ZXIpOworCisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOworICAgIHBsYXRmb3JtTGF5ZXItPnJlbW92ZUFuaW1hdGlvbigwKTsKKyAg
ICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworCisg
ICAgZ3JhcGhpY3NMYXllci0+c2V0UHJlc2VydmVzM0QoZmFsc2UpOworCisgICAgcGxhdGZvcm1M
YXllciA9IHN0YXRpY19jYXN0PExheWVyQ2hyb21pdW0qPihncmFwaGljc0xheWVyLT5wbGF0Zm9y
bUxheWVyKCkpOworICAgIEFTU0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXIpOworCisgICAgQVNTRVJU
X0ZBTFNFKHBsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5NmE3ZjZhZWZhZDAyYWNkMjNhNmZlMTQxZmY1MDhlZTgxZWFkODIz
Li5hZWMxMzg5MDVhNGM5NzE3N2Y5ZWViODU3OTBhMzNiNjIxNWM3Y2IyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDUtMTAgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBFbnN1cmUgdGhhdCBhbmltYXRpb25zIGNvbnRpbnVlIHRv
IHJ1biB3aGVuIHRyYW5zZm9ybS1zdHlsZSBpcyBjaGFuZ2VkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3Jt
LXN0eWxlLWR1cmluZy1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBh
bmltYXRpb25zL2NoYW5nZS10cmFuc2Zvcm0tc3R5bGUtZHVyaW5nLWFuaW1hdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9hbmltYXRpb25zL2NoYW5n
ZS10cmFuc2Zvcm0tc3R5bGUtZHVyaW5nLWFuaW1hdGlvbi1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAx
Mi0wNS0xMCAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNv
bT4KIAogICAgICAgICBbRUZMXSBMYXlvdXRUZXN0Q29udHJvbGxlciBuZWVkcyBpbXBsZW1lbnRh
dGlvbiBvZiBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1kdXJpbmctYW5pbWF0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1z
dHlsZS1kdXJpbmctYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjVkNGY2MjVi
N2IzYTc4NDk2NWVjNWI4MGU0ZjQ0YTk2ZDNhYTcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4OAorICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKK2xheWVyIGF0ICgxMDgsOCkgc2l6
ZSAxMDB4MTAwCisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMTAwLDApIHNp
emUgMTAweDEwMCBbYmdjb2xvcj0jMDA4MDAwXQorbGF5ZXIgYXQgKDEwOCw4KSBzaXplIDEwMHgx
MDAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgxMDAsMCkgc2l6ZSAxMDB4
MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCitsYXllciBhdCAoMTAwLDE1MCkgc2l6ZSAyNTl4MjAKKyAg
UmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgxMDAsMTUwKSBzaXplIDI1OXgyMAor
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI1OXgxOQorICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMjU5OiAiUEFTUyAtIENvbXB1dGVkIGZpbmFsIHBvc2l0aW9uIGlz
IGNvcnJlY3QuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2UtdHJh
bnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1kdXJpbmctYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDkzNjkxMmM4NjFmMzRlOTFlODI0NTBmMjRkOGQ3NjBlMzc4ZjkyOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1kdXJp
bmctYW5pbWF0aW9uLmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgI2NvbnRhaW5lciB7CisgICAgICAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWigwcHgpOworICAgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNDAw
OworICAgIH0KKworICAgICNyZXZlYWxlZCB7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgICBsZWZ0OiAxMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9CisKKyAgICAjYW5pbWF0
ZWQgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgbGVmdDogMTAwcHg7CisgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgYmFja2dyb3VuZC1j
b2xvcjogcmVkOworICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMTBweCk7Cisg
ICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7CisgICAgICAtd2Via2l0
LWFuaW1hdGlvbi1kdXJhdGlvbjogMTAwbXM7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxs
LW1vZGU6IGJvdGg7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxp
bmVhcjsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKKyAgICB9
CisKKyAgICAjcmVzdWx0IHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIHRvcDog
MTUwcHg7CisgICAgICBsZWZ0OiAxMDBweDsKKyAgICB9CisKKyAgICBALXdlYmtpdC1rZXlmcmFt
ZXMgYW5pbSB7CisgICAgICBmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4
KSB0cmFuc2xhdGVYKDBweCk7IH0KKyAgICAgIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5z
bGF0ZVooMjAwcHgpIHRyYW5zbGF0ZVgoLTIwMHB4KTsgfQorICAgIH0KKyAgIDwvc3R5bGU+CisK
KyAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyI+PC9z
Y3JpcHQ+CisgICA8c2NyaXB0PgorICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICB9
CisKKyAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRG9uZSgpCisgICAgIHsKKyAgICAgICB2YXIgYW5p
bWF0ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5pbWF0ZWQnKTsKKyAgICAgICB2YXIg
cmVzdWx0OworICAgICAgIHZhciBleHBlY3RlZCA9IFsxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAw
LCAwLCAxLCAwLCAtMjAwLCAwLCAyMDAsIDFdOworICAgICAgIHZhciBjb21wdXRlZCA9IGdldFBy
b3BlcnR5VmFsdWUoIndlYmtpdFRyYW5zZm9ybSIsICJhbmltYXRlZCIpOworICAgICAgIGlmIChj
b21wYXJlUHJvcGVydHlWYWx1ZSgid2Via2l0VHJhbnNmb3JtIiwgY29tcHV0ZWQsIGV4cGVjdGVk
LCAwLjAwMikpIHsKKyAgICAgICAgIHJlc3VsdCA9ICJQQVNTIC0gQ29tcHV0ZWQgZmluYWwgcG9z
aXRpb24gaXMgY29ycmVjdC4iOworICAgICAgIH0gZWxzZSB7CisgICAgICAgICByZXN1bHQgPSAi
RkFJTCAtIENvbXB1dGVkIGZpbmFsIHBvc2l0aW9uIGlzIGluY29ycmVjdC4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkICsgIiwgZ290ICIgKyBjb21wdXRlZDsKKyAgICAgICB9CisgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKKyAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgIH0KKworICAgICBmdW5jdGlv
biBhbmltYXRpb25TdGFydGVkKCkKKyAgICAgeworICAgICAgIHZhciBhbmltYXRlZCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhbmltYXRlZCcpOworICAgICAgIGFuaW1hdGVkLnN0eWxlLndl
YmtpdFRyYW5zZm9ybVN0eWxlID0gJ2ZsYXQnOworICAgICB9CisKKyAgICAgZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKKyAgICAgeworICAgICAgIHZhciBhbmltYXRlZCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhbmltYXRlZCcpOworICAgICAgIGFuaW1hdGVkLnN0eWxlLndlYmtpdEFuaW1hdGlv
bk5hbWUgPSAiYW5pbSI7CisgICAgICAgYW5pbWF0ZWQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0
QW5pbWF0aW9uRW5kJywgYW5pbWF0aW9uRG9uZSk7CisgICAgICAgd2FpdEZvckFuaW1hdGlvblRv
U3RhcnQoYW5pbWF0ZWQsIGFuaW1hdGlvblN0YXJ0ZWQpOworICAgICB9CisgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgorICA8IS0tIFRlc3QgZm9yIERS
VCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgpIEFQSSBvbiBhbmltYXRpb25z
IHdpdGggbXVsdGlwbGUga2V5ZnJhbWVzIC0tPgorICA8ZGl2IGlkPSJjb250YWluZXIiPgorICAg
IDxkaXYgaWQ9InJldmVhbGVkIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbmltYXRlZCI+PC9kaXY+
CisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5pbWF0aW9u
cy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24tZXhwZWN0ZWQucG5nIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5pbWF0aW9ucy9jaGFuZ2UtdHJh
bnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24tZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdm
NWYyNDdiZDRhNjY5ZjlmODFmMzA1OTgxYTdlYmExYTFhYWVkMzkKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDU0NTMKemNtZUkwWDtoT305PiFscXY9c3E2Q3xjUV5YJHg5e2t0em1jaTVzT0I2eyFt
WmdyRkRAWGIxI0MycWRKQSkmJj5GCnpLfHRCa1ZnKXJvNUN7a2ZpSE0zNDdCdlFCTzlYX0ZnYj1t
X3ZkP0FDJSU/ZUxQQ3NfJG1AbW4+Wl9hKTFgYHFYRwp6e29udCtlRTUpYGBOfEN8QXFYPHh8Sn1Z
SEFqbzdSMVQ3OHpXR05VfnlKb0V1X31aTjg4PU0/QDFgYD5WTThIQykKelBlKC18KzsoaT13KUxC
KyhfMW1GcmArOTZ5U1pVQEFQYGFSUUxiQkVvJXgzXkxDX2t9eyhaWlRyV1ZRdnNPM1J+CnpxMU5k
bi1fYEp1PCRGR31JJSlXMlB3M3shb3hZZyg4fVc1LTk0bnVQNyNBKjU+JVEhNUpBUnxIIWxVJnNo
bVdyMAp6V2pleVhIaEk8bko4KTxHPnhQN3REXkh5TmxWOExPeEkmNU5QeiZYPWBpV1dmMEl6OUUp
QW5BUXN3NFBfMyVqKUoKekUpUWEhNlJrXn0oYnJaRGdQPDI0QmN9cig9emExUlJTQClLbktpV1Eq
NWpxbkNzeDRfYmFKVH53RENhMTY2a3lwCnpzb0UpRj1hflhnTl9BTzYrYXw2b3kkNXBGbFQ4MTh7
WmtuOSk3Rz01Jn16czNHUmVuM28mVGRzUCpxbkEzc0JpWQp6Jj5gcFc9S3Q5SktrQk1+cnttbX5W
Rn0rfVVHR1llekhQTm5GREtQa2d3fGlUS34kRU5tNjQ5JWEwKXgoS3dfdGQKenhWLT5APENoLTlW
eks5WHd8XlBlVTRHam1YezxNej02JitYZERkaGpvbGNpTXh+UEg1UThpO0Q0I3cxM2paaTJnCnom
NW03akt4WElgcnFfazFvOz0tZE1VKnBwRWJ5YjNFektUcEp7ViFYODt1clNGdF5EcGN+PXdOI1px
dXNffFowYAp6UVFafmJITkNHVC11WmFCZC1DfEpLNHpSdkgmP0lmMmN1OHh4cTcrMHpyTzMxPnF1
IXF7RCRfQEtRfH5pK0ZUZl8KemBwb01ScUtIQ2x4bkxnSWRjRFhrdTZ4PkMrNUFYZSpTYFpOOUFG
I0xNT3E9REMjOz96PndiMStvdSU3cTlHRWdVCnp2aU9tPkk2ZU12Jkg/MEw9dWl3NmdEUmZ6Q19M
NUlYUDdUKG5pci1RNiYxbWBJPXRRantIUGJFJCh+PWNwe2paNAp6WlUkezlMNWVnP1hRQDt3PUAx
eCZ2bkh4ej89OUozOXYmM2IpNUIzUWskT28wU1BRLTQxVUV4fUVHU0k1VFI1dGIKekJeXitKWDx5
djxxRnxvKDRXPj1UO1FFamtyYmNlPHFEQyRebSlIaXg3XiQ2V0h1OVc8b2xZLUk0R2ooc0QmeSpL
CnpCMk4xSldKOGtKcGpTfGwkPldGaHJKYkZmMCh3eDdlUiFKV0V8YzIwe040NmNHaSVyX1BodmJK
WV5gdE5YaWt0bAp6eTQwMy11d2FMSWpJcE0zQ3cpez88Vm0hanVoclZqeTVHYypycnRNUyRsMkBO
WUswdHJJWVVoPWd+fHxUMzQwOWMKekVeM0N2QU4+R2IxTk5ifUNmZD93JEhXRGpfPVExNU1pNGlx
dztEcyRfS1A/UiYpXihgTXJKOztzdyFyeG40Oz5YCnpHZFBWVGlvVUcqY3pMakU7XyVieWt5aGx+
dEckQUpDbUk+d1J+c1Y7Jjk8fCVUVH1+eT9ifVkjJSlQJGoyUy0pXgp6d2tmbCRJOEZMQHwxQmlS
LU1sU0xiOGlDZ2VDdllkdSt2VHtRTURJRkx2YzthSDF+QVhNOUhTPndqTUpBTWgzSH4Kek56YlBs
PTVrI15XQkl8JVNWMyhKfEp5OGtKc3F1b0t6YWg0PjZjfCtAd31ZISVZJUhlNFVVfkNJMkpAbVBD
bENDCnpvSF5gLVJLR01gY1ZhNzBkdztnME9Ffil4X1g9TnhuakBrek9IJHZUVUQ0T3lrN0xRfXE7
RiVsLUFBQHc9dEBALQp6TmQ7d0xOMDU3M0tDYGopUEQ+V0ROcy1VNS1nWndNWm1+cD8rdDJ3ZHln
ejU8Y3dsXkQ7PlhsP0IxKClzY1BNYDgKeilANUpxSi1YJUBnUX1PXkB5a2pmNUlQRHlsRWpAdyUy
MzltO1lfWT42cGxkdzhLXnApNyU5QHRRSEAjPUBhKzZOCnoqUW1HaU9qKHR8azV+bUgqVXlVX0F9
KD9iTj04am9NO31OQUtMRHghKXNpdn0oJm9hJDQ/biVeOHdkLW5gJSVROQp6ZlFZUjNPcXFEe3Yp
VE9RQVMqQFEyZWkrX3NCZEpFZngySiQ9ank9SmdOKzI0VGhFRXYwK0ZzMSM+NGo0MntKT20Keik4
KSlReXh2bFA7N25md2lrQTZadz8lPXduSWlAY1NDR2VVTUBNeFFIaGAjNXc1a3Bva34/YTc1e3Ek
Yj5VI29pCnpXU3BmTCVmcCkqXkZ2WCYqLWluSTszSm9aKXlFSXMzJXJ2ckp9Z25kRyVPZWZtNkR3
TlZ9QmkxQFpneHpZODtubAp6Zik8WCZedHtiX21HRUA9ezZKRklWel98QUZ9Jk8mc3pHZ0hKSjtm
MU5DO2Q1KHY3MjJIclQ2KD0jY0EqcGs8R3oKenJ+OHYkV1J+MCRIcyRaWV9MOyVpaHE/RHp0bnt7
PG81NWJZQFR3VU0re31sVUFSa3pkN29HfXMocmdGOUkxIURzCnpjfmc0IThla1o9PHlhKzBCTHhx
QWpLfEEkKFNDNDNxSC19eHBENS1HUD9fTn11VC11akQxcnNjQn5vZXJQQ19qNgp6MWViJH1JR0Rm
dmUoc0UxRUAjSERIQnZlPStzP2hwIW9sWitpLVFPTHdeMStwITdRKHQ3bnI9VFpvRWEjbEZwSioK
eiV4MiFBJjs0XkA2MWcwRVlkPXEtTTA3JkBjPjc8NkV9NTRleExwaypkP0JhUj4mJEZSSEJJe2xQ
ZDttIUstUV5qCnp0Q3R2RkhXJj9Cb0E4YX40PiRaWXtVb2hRNG90Tmt0UjlgbG1Yc0QwWEp7bCNx
SV56MHk+eERjPCNGQiQzdE0rdAp6Y307JVRfXnBuJmVFem02RF9LeXRzK18zbWpoPiZJdE13WHdV
bHRnZUc1dV92cj5DZDVpKU5KNDg1WE85TyR2UmYKemQzUllYRWV+eSYwVT87dSYzMEt2SXFxI0Bj
UV9ZaDE+QGRUbyRQUjRrQFJacHFLbT94SCpJUFNSUjZzRXc7Ym83CnpOO0g+fmxHc3hiOGV+TSM+
Z3d3NWBzYTFxVSReJmUpYStgMVRwJCZROHBiTSFMWHd5PUtpRT94OE1eNE8yblBENwp6fENXWGlf
c2ZiTzxYWU4keHI1WCsoP1cxSzlQYCFTcCNFfEl4Z19Jej1JOXYxKDZ9JnNDNjMxaElDPTFNWG5l
ejYKelAoZWIzVHE+MzRXRmVnQnQjTEA3YyZIJFlKcTAhPVAyeHpfYG1vJVcqLW1nWWhiKHo+SCkq
Vz5eWSNPV0tGbkIqCnpUPmBZUDJ0ViNNZVhmb1RjV0dWbS1rdEp6SH1RS3EjaitiejdMNyhETWM0
dHh1MFNwey1gc3A4N1ZkTnQpNjNeNAp6ejRsJF81PmgpM05RXjtRYD99Jmt5bH5LdWB2RCZmZzFt
KGgyYkhSUlR1ezEyUm1ed3gwMXQ1VGtlTGw0ZW5LTVkKejFzdjk/WE9XdU1TPjNgdFgkR35wM3Up
OVRXanpYRVErajhpTV81PUcxfnZLYTtoanlIVlhUeEtqMmZfalVkTjg+CnpzVnYjbCRZUmtZNnVr
XkI7IT0mM1ZYUjg3S3w/ZEAjRGJzMWctTTsrMFhffURDa30/R2lAdCR7PjV+bmg3TG1xbwp6JWVw
SipMYl8lUSFCdm1uJCtDQShoKX5hckI3fmB0JUpSajYpRUNFfjRFPytnXytsJEBhLWR8QjxEdFN9
c3heK0kKemp0WDFAWjxfbDduK0VXMyZ1OFdzdklgKzEqVDh0TGs8WklSbjZXKlRWVzQ4VGs2aGht
VllsPEJfdVprSUx8X3ZoCno/KzNZWVZJJkkmWGdCYUVRTXQlTU9eIT5lMWxRLUx7OT9ROSEpQ3k8
I1pfQFFvUzw7aD1vMiV6Wk4hWWd2Xit6YQp6QDlAdmVxTiNgXz4lR3BwRWk8VyZrPmZzPGlPQXsh
dX1ASGl1MDdpNGhfe35FNlJ6Izk9ZVJ8Ky13TDJlant1MD4KemNXQkBxK15ZbWc9KlZ9QWR3Vllz
bCMyUVJKUCtfWWtWfXt6ZWtQekBfQkpleG1eLTttO2d1YG12bUZuSClTZH4lCnopfCM0R1UpfHMp
byNEWW4pZmlyQGtMbj5QaUdZMU0zXkhjby05emReaSRoIVcwOHFMRUFAVHdObEpMdkdWPlBJcgp6
PUFrbzQoem98UC1KYi1uN1Z5VUw1fFBtYFoqb0ZCI3RZfU42TmE5RW4oa2NyWHQ7PGRZeWNLanV4
QzNCaFNec2wKelI0cDRPRiE8K2ZrJmxsRHZyYGpXY0VeZHxDNnFTPHZTbmpeUE1zVE01dmkmZ253
PHkhITw+WEtMemVXMmM2UnxMCno8eXZaNHo/bHFnIU0zUk9Hc1NCbTdxI3s3PistcFV4fGpTQjgw
N3hkIVliPzVEcXl7bU88K1NTdmJ9RnU7bk5DRAp6cHxYfDZHViVJWWJRPFk8PEduKXI9cH5RdT9e
JGQlTkxOPD50TF53N2ZBUmQtNH1FTTJlYGs7SyhKQ0xVXjNmX0UKaCZ5ZkRWaj91SVo7ZW9pYngm
MHdqYTZTc3tfZFQ/KWEhPHJ4e3tnNn42KXlrKQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CmluZGV4IGE2NGFkMjNjZjI5YWQ3Y2NkMjY5MDk2MDNiM2Y0OGI5ODBmNzNlOTIuLjVhNjg1M2Ji
NjMxNDQzZTdkMzJhOWQ0MjMzMGFkNjQ2ZjU5MzU4MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTM4ODMsNiArMzg4
Myw5IEBAIEJVR1dLODU1MzIgU0tJUCA6IGZhc3Qvc3ViLXBpeGVsL3NpemUtb2YtYm94LXdpdGgt
em9vbS5odG1sID0gRkFJTAogCiBCVUdXSzY4NzQ0IDogZmFzdC9ibG9jay9mbG9hdC9mbG9hdC1u
b3QtcmVtb3ZlZC1mcm9tLW5leHQtc2libGluZzQuaHRtbCA9IElNQUdFCiAKKy8vIFdpbGwgbmVl
ZCB0byByZWJhc2VsaW5lIG9uY2UgcmVzdWx0cyBhcmUgZ2VuZXJhdGVkIGZvciB0aGVzZSBwbGF0
Zm9ybXMKK0JVR1dLODYxMDkgV0lOIE1BQyA6IGFuaW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1z
dHlsZS1kdXJpbmctYW5pbWF0aW9uLmh0bWwgPSBNSVNTSU5HCisKIC8vIElFVEMgZmxleGJveCBm
YWlsdXJlcwogQlVHV0s4NTIxMSA6IGlldGVzdGNlbnRlci9jc3MzL2ZsZXhib3gvZmxleGJveC1h
bGlnbi1zdHJldGNoLTAwMS5odG0gPSBJTUFHRQogQlVHV0s4NTIxMiA6IGlldGVzdGNlbnRlci9j
c3MzL2ZsZXhib3gvZmxleGJveC1sYXlvdXQtMDAyLmh0bSA9IElNQUdFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141210</attachid>
            <date>2012-05-10 11:42:06 -0700</date>
            <delta_ts>2012-05-10 22:56:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120510144205.patch</filename>
            <type>text/plain</type>
            <size>28071</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVjYjljMTQ1YzMzNWVj
MjJiYTg0MDQ1MWRjODFiY2I4NTkwZWU1OC4uZDZkYjhjOWQ4OTMwMWExNWVjZDViMTNlODEzM2M3
YjU1ZmFkMWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA1LTEwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUg
aXMgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIHN1cmUgdGhhdCB3ZSB0cmFuc2ZlciBhbmltYXRpb25zIHdoZW4gY2hhbmdpbmcgbGF5
ZXJzIGR1ZSB0byBhIHRyYW5zZm9ybS1zdHlsZSBjaGFuZ2UuCisgICAgICAgIFVuaXQgdGVzdGVk
IGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QudXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRFdpdGhB
bmltYXRpb25zCisKKyAgICAgICAgVGVzdDogYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0
eWxlLWR1cmluZy1hbmltYXRpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
OjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0Q2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OnB1c2hOZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpyZXBsYWNlSW1wbFRocmVhZEFu
aW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0
Rm9yY2VTeW5jKToKKwogMjAxMi0wNS0xMCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxr
ZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBJbXBsZW1lbnQgZml0LXRvLXdpZHRo
IGJlaGF2aW91cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0MzFhOTg0YWRjZDhmMTcz
YWMwMTY3YmQ2MDNiNjU4ZjI0YTBjYWNlLi5jODFlODM5NjlhNWU4ODQ1MTNlY2QwZDgxNGNmZTUx
MmI2YTA1YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisy
MDEyLTA1LTEwICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gRW5zdXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0
cmFuc2Zvcm0tc3R5bGUgaXMgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6
CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICogdGVzdHMvR3JhcGhpY3NMYXllckNo
cm9taXVtVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAgICAo
TW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tHcmFw
aGljc0xheWVyQ2xpZW50Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpNb2NrR3JhcGhpY3NMYXllckNsaWVudDo6bm90aWZ5U3luY1JlcXVpcmVkKToKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhpY3NMYXllckNsaWVudDo6cGFpbnRDb250ZW50
cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQ6OnNob3dE
ZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tHcmFwaGljc0xheWVyQ2xp
ZW50OjpzaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgor
CiAyMDEyLTA1LTA5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbQ2hyb21pdW1dIE1hcmsgQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzQ29tbWl0Mi5ydW5N
dWx0aVRocmVhZCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDllZjMxYjI1YmMzZmMxNjBiYmRjMDk2OTJiNzI5NWQzZDk2OTA0ZDAuLjk0MzE3MzUwNGJiNGQ1
YTUyOWVhM2M2ZmE1ZDU5ZTNiNGU2YmEyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRQcmVz
ZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKG1fbGF5ZXItPnJlbGVhc2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIo
KSk7CiAKICAgICAgICAgLy8gQ29weSB0aGUgcG9zaXRpb24gZnJvbSB0aGlzIGxheWVyLgogICAg
ICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC02MzgsNiArNjM5LDkgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogICAgICAgICBpZiAo
bV90cmFuc2Zvcm1MYXllci0+cGFyZW50KCkpCiAgICAgICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LT5wYXJlbnQoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXIu
Z2V0KCkpOwogCisgICAgICAgIG1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUodGhp
cyk7CisgICAgICAgIG1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcihtX3RyYW5z
Zm9ybUxheWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOworCiAgICAgICAg
IC8vIFJlbGVhc2UgdGhlIHRyYW5zZm9ybSBsYXllci4KICAgICAgICAgbV90cmFuc2Zvcm1MYXll
ci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSgwKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXll
ciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGM3ZjdiMzFiOTViMzBjYTNkYzEyNGVj
MzdjNzg5Y2E4ZDQ5YmY0MzguLjFhMGU2NzA4OWYxM2VkYzMwMDJjMTA3YTNlYjVjMWExYWZhYzgw
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02MzQsOSArNjM0LDIwIEBAIHZvaWQgTGF5
ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKFBhc3NPd25QdHI8Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGxheWVyQW5pbWF0aW9uQ29udHJvbGxlcikKIHsKICAg
ICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlciA9IGxheWVyQW5pbWF0aW9uQ29udHJvbGxlcjsK
KyAgICBpZiAobV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIpIHsKKyAgICAgICAgbV9sYXllckFu
aW1hdGlvbkNvbnRyb2xsZXItPnNldENsaWVudCh0aGlzKTsKKyAgICAgICAgbV9sYXllckFuaW1h
dGlvbkNvbnRyb2xsZXItPnNldEZvcmNlU3luYygpOworICAgIH0KICAgICBzZXROZWVkc0NvbW1p
dCgpOwogfQogCitQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBMYXllckNo
cm9taXVtOjpyZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkKK3sKKyAgICBPd25QdHI8
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IHRvUmV0dXJuID0gbV9sYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIucmVsZWFzZSgpOworICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyID0gQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gdG9SZXR1
cm4ucmVsZWFzZSgpOworfQorCiBib29sIExheWVyQ2hyb21pdW06Omhhc0FjdGl2ZUFuaW1hdGlv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5oYXNB
Y3RpdmVBbmltYXRpb24oKTsKQEAgLTY0NSw3ICs2NTYsOCBAQCBib29sIExheWVyQ2hyb21pdW06
Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiB2b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYgZXZlbnQsIGRvdWJsZSB3YWxs
Q2xvY2tUaW1lKQogewogICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5ub3RpZnlBbmlt
YXRpb25TdGFydGVkKGV2ZW50KTsKLSAgICBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5vdGlm
eUFuaW1hdGlvblN0YXJ0ZWQod2FsbENsb2NrVGltZSk7CisgICAgaWYgKG1fbGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZSkKKyAgICAgICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlBbmlt
YXRpb25TdGFydGVkKHdhbGxDbG9ja1RpbWUpOwogfQogCiB2b2lkIExheWVyQ2hyb21pdW06Om5v
dGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDllN2ZjZTUwYzU5YWM4MzlkM2QyZjkwZTA5ZjUxYjRiNDBjNTk5ZjIuLmE1OTBi
ZDJjMzFhMDViNTRiNWVmOGIxNWNiYWQ5ODU3MDVkMjE3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
QEAgLTI0MCw2ICsyNDAsNyBAQCBwdWJsaWM6CiAKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkgeyByZXR1cm4gbV9sYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldExheWVyQW5pbWF0aW9uQ29udHJvbGxl
cihQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPik7CisgICAgUGFzc093blB0
cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gcmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcigpOwogCiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKENDTGF5ZXJBbmlt
YXRpb25EZWxlZ2F0ZSogbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSkgeyBtX2xheWVyQW5pbWF0aW9u
RGVsZWdhdGUgPSBsYXllckFuaW1hdGlvbkRlbGVnYXRlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAyZWUxODg4NDhhMDE0ZWQ1
ZWM5NGIwYjc5ZGU3YWFiMTA4YTFmOTYxLi5hODVjOGFhM2Y2MmE3YThiZDZiZjQ4MzBiNjQ5MjI2
MDNjZjQ0ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC0xMjQsNyArMTI0LDkgQEAgUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlv
bj4gY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKIH0g
Ly8gbmFtZXBhY2UKIAogQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OkNDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50KiBjbGllbnQpCi0g
ICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgOiBtX2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhy
ZWFkKGZhbHNlKQorICAgICwgbV9mb3JjZVN5bmMoZmFsc2UpCisgICAgLCBtX2NsaWVudChjbGll
bnQpCiB7CiB9CiAKQEAgLTIwMyw5ICsyMDUsMTUgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKIC8vIGFyZSBr
ZXB0IGluIHN5bmMuCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoQW5pbWF0
aW9uVXBkYXRlc1RvKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVySW1wbCkK
IHsKLSAgICBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChjb250cm9sbGVySW1wbCk7Ci0g
ICAgcmVtb3ZlQW5pbWF0aW9uc0NvbXBsZXRlZE9uTWFpblRocmVhZChjb250cm9sbGVySW1wbCk7
Ci0gICAgcHVzaFByb3BlcnRpZXNUb0ltcGxUaHJlYWQoY29udHJvbGxlckltcGwpOworICAgIGlm
IChtX2ZvcmNlU3luYykgeworICAgICAgICByZXBsYWNlSW1wbFRocmVhZEFuaW1hdGlvbnMoY29u
dHJvbGxlckltcGwpOworICAgICAgICBtX2ZvcmNlU3luYyA9IGZhbHNlOworICAgIH0gZWxzZSB7
CisgICAgICAgIHB1c2hOZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKGNvbnRyb2xsZXJJbXBsKTsK
KyAgICAgICAgcmVtb3ZlQW5pbWF0aW9uc0NvbXBsZXRlZE9uTWFpblRocmVhZChjb250cm9sbGVy
SW1wbCk7CisgICAgICAgIHB1c2hQcm9wZXJ0aWVzVG9JbXBsVGhyZWFkKGNvbnRyb2xsZXJJbXBs
KTsKKyAgICB9CisgICAgY29udHJvbGxlckltcGwtPm1faGFzU3luY2hyb25pemVkV2l0aE1haW5U
aHJlYWQgPSB0cnVlOwogfQogCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjphbmlt
YXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciogZXZlbnRz
KQpAQCAtMjUzLDggKzI2MSw3IEBAIGJvb2wgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Omlz
QW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByCiB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5p
bWF0aW9uRXZlbnQmIGV2ZW50KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3Rp
dmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPmdyb3VwKCkgPT0gZXZlbnQuZ3JvdXBJZCAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnRhcmdldFByb3BlcnR5KCkgPT0gZXZlbnQudGFyZ2V0UHJvcGVydHkpIHsKLSAgICAgICAgICAg
IEFTU0VSVChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1l
KCkpOworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpID09IGV2ZW50
Lmdyb3VwSWQgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpID09IGV2
ZW50LnRhcmdldFByb3BlcnR5ICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+bmVlZHNTeW5jaHJv
bml6ZWRTdGFydFRpbWUoKSkgewogICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5z
ZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZShmYWxzZSk7CiAgICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShldmVudC5tb25vdG9uaWNUaW1lKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTI2MiwyNiArMjY5LDQwIEBAIHZvaWQgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25FdmVu
dCYKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnNldENsaWVu
dChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xp
ZW50ID0gY2xpZW50OworfQorCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNo
TmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogY29u
dHJvbGxlckltcGwpIGNvbnN0CiB7CiAgICAgLy8gQW55IG5ldyBhbmltYXRpb25zIG93bmVkIGJ5
IHRoZSBtYWluIHRocmVhZCdzIGNvbnRyb2xsZXIgYXJlIGNsb25lZCBhbmQgYWRkZSB0byB0aGUg
aW1wbCB0aHJlYWQncyBjb250cm9sbGVyLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9h
Y3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIENDQWN0aXZlQW5pbWF0aW9u
KiBjdXJyZW50QW5pbWF0aW9uID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLmdldCgpOworCiAgICAg
ICAgIC8vIElmIHRoZSBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nIG9uIHRoZSBpbXBsIHRo
cmVhZCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjb3B5IGl0IG92ZXIuCi0gICAgICAgIGlmIChjb250
cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3Jv
dXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpKSkKKyAgICAgICAg
aWYgKGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oY3VycmVudEFuaW1hdGlvbi0+
Z3JvdXAoKSwgY3VycmVudEFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVydHkoKSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGlzIG5vdCBydW5uaW5n
IG9uIHRoZSBpbXBsIHRocmVhZCwgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IGl0
IG5lZWRzCi0gICAgICAgIC8vIHRvIGJlIGNvcGllZCBvdmVyIGFuZCBzdGFydGVkOyBpdCBtYXkg
aGF2ZSBhbHJlYWR5IGZpbmlzaGVkLiBJbiB0aGlzIGNhc2UsIHRoZSBpbXBsIHRocmVhZCBhbmlt
YXRpb24KLSAgICAgICAgLy8gd2lsbCBoYXZlIGFscmVhZHkgbm90aWZpZWQgdGhhdCBpdCBoYXMg
c3RhcnRlZCBhbmQgdGhlIG1haW4gdGhyZWFkIGFuaW1hdGlvbiB3aWxsIG5vIGxvbmdlciBuZWVk
Ci0gICAgICAgIC8vIGEgc3luY2hyb25pemVkIHN0YXJ0IHRpbWUuCi0gICAgICAgIGlmICghbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgpKQorICAgICAg
ICAvLyBJZiB0aGUgaW1wbCB0aHJlYWQgY29udHJvbGxlciBoYXMgbm90IHN5bmNocm9uaXplZCB3
aXRoIHRoZSBtYWluIHRocmVhZCB5ZXQsCisgICAgICAgIC8vIGl0IGRvZXNuJ3QgbWF0dGVyIHdo
ZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gaXMgcnVubmluZywgd2UgbXVzdCBwdXNoIGl0IHRv
CisgICAgICAgIC8vIHRoZSBpbXBsIHRocmVhZC4gT3RoZXJ3aXNlLCB3ZSBzaG91bGQgbmV2ZXIg
cHVzaCBhIHJ1bm5pbmcgYW5pbWF0aW9uLiBUaGUKKyAgICAgICAgLy8gYW5pbWF0aW9uIG1heSBo
YXZlIGFscmVhZHkgZmluaXNoZWQgb24gdGhlIGltcGwgdGhyZWFkIGFuZCB3ZSB3b3VsZCBiZQor
ICAgICAgICAvLyBpbmNvcnJlY3RseSByZS1hZGRpbmcgaXQgaW4gdGhpcyBjYXNlLgorICAgICAg
ICBpZiAoY29udHJvbGxlckltcGwtPm1faGFzU3luY2hyb25pemVkV2l0aE1haW5UaHJlYWQgJiYg
IWN1cnJlbnRBbmltYXRpb24tPm5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRk
KG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVGb3JJbXBsVGhyZWFkKCkpOworICAgICAgICBP
d25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKGN1cnJlbnRBbmltYXRpb24tPmNsb25lRm9y
SW1wbFRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCF0b0FkZC0+bmVlZHNTeW5jaHJvbml6ZWRT
dGFydFRpbWUoKSk7Ci0gICAgICAgIC8vIFRoZSBuZXcgYW5pbWF0aW9uIHNob3VsZCBiZSBzZXQg
dG8gcnVuIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShD
Q0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSwgMCk7Ci0gICAg
ICAgIHRvQWRkLT5zZXRTdGFydFRpbWUoMCk7CisgICAgICAgIC8vIElmIGNvbnRyb2xsZXJJbXBs
IGhhcyBiZWVuIHN5bmNocm9uaXplZCwgdGhlbiB0aGlzIGlzIGEgbmV3IGFuaW1hdGlvbiBhbmQK
KyAgICAgICAgLy8gc2hvdWxkIGJlIGluIHRoZSB3YWl0aW5nIGZvciB0YXJnZXQgYXZhaWxhYmls
aXRpeSBzdGF0ZS4gSWYgdGhlIGFjdGl2ZQorICAgICAgICAvLyBhbmltYXRpb24gc3RpbGwgbmVl
ZHMgYSBzeW5jaHJvbml6ZWQgc3RhcnQgdGltZSwgd2UgbmVlZCBpdCB0byBzdGFydCBvbgorICAg
ICAgICAvLyB0aGUgaW1wbCB0aHJlYWQsIHNvIHdlJ2xsIGFsc28gcHV0IGl0IGluIHRoZSB3YWl0
aW5nIGZvciB0YXJnZXQgYXZhaWxhYmlsaXR5CisgICAgICAgIC8vIHN0YXRlLgorICAgICAgICBp
ZiAoY29udHJvbGxlckltcGwtPm1faGFzU3luY2hyb25pemVkV2l0aE1haW5UaHJlYWQgfHwgY3Vy
cmVudEFuaW1hdGlvbi0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSkgeworICAgICAgICAg
ICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0
QXZhaWxhYmlsaXR5LCAwKTsKKyAgICAgICAgICAgIHRvQWRkLT5zZXRTdGFydFRpbWUoMCk7Cisg
ICAgICAgIH0KICAgICAgICAgY29udHJvbGxlckltcGwtPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwog
ICAgIH0KIH0KQEAgLTQzOCw2ICs0NTksMTMgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUsIEMKICAg
ICB9CiB9CiAKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2VJbXBsVGhy
ZWFkQW5pbWF0aW9ucyhDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwp
IGNvbnN0Cit7CisgICAgY29udHJvbGxlckltcGwtPm1fYWN0aXZlQW5pbWF0aW9ucy5jbGVhcigp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsg
KytpKQorICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
Y2xvbmVGb3JJbXBsVGhyZWFkKCkpOworfQorCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggZTIyZjgwNTRk
NjIzMjA3YzRkNzBjMzEyMWZiMWIwMzk1YTJlNjMwMi4uODU0Yjg4ZDZiZDFhMjUxZmU4MDFmNWVm
YWRlYjBiZjI2OWVkMTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlci5oCkBAIC05MCw2ICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gZnVuY3Rpb24g
dXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyBtYWluIHRocmVhZCBhbmltYXRpb24ncyBzdGFydCB0
aW1lLgogICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvbkV2
ZW50Jik7CiAKKyAgICAvLyBJZiBhIHN5bmMgaXMgZm9yY2VkLCB0aGVuIHRoZSBuZXh0IHRpbWUg
YW5pbWF0aW9uIHVwZGF0ZXMgYXJlIHB1c2hlZCB0byB0aGUgaW1wbAorICAgIC8vIHRocmVhZCwg
YWxsIGFuaW1hdGlvbnMgd2lsbCBiZSB0cmFuc2ZlcnJlZC4KKyAgICB2b2lkIHNldEZvcmNlU3lu
YygpIHsgbV9mb3JjZVN5bmMgPSB0cnVlOyB9CisKKyAgICB2b2lkIHNldENsaWVudChDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCopOworCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQqKTsKIApAQCAtOTksNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1c2hOZXdBbmlt
YXRpb25zVG9JbXBsVGhyZWFkKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKikgY29uc3Q7CiAg
ICAgdm9pZCByZW1vdmVBbmltYXRpb25zQ29tcGxldGVkT25NYWluVGhyZWFkKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKikgY29uc3Q7CiAgICAgdm9pZCBwdXNoUHJvcGVydGllc1RvSW1wbFRo
cmVhZChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0OworICAgIHZvaWQgcmVwbGFj
ZUltcGxUaHJlYWRBbmltYXRpb25zKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKikgY29uc3Q7
CiAKICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhkb3VibGUgbW9u
b3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqKTsKICAgICB2b2lkIHN0YXJ0QW5p
bWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yKik7CkBAIC0xMDgsNiArMTE1LDEyIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAorICAgIC8vIEEgbGF5
ZXIgYW5pbWF0aW9uIGNvbnRyb2xsZXIgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgaXRzIGZpcnN0IHN5
bmMuCisgICAgYm9vbCBtX2hhc1N5bmNocm9uaXplZFdpdGhNYWluVGhyZWFkOworCisgICAgLy8g
SWYgdGhpcyBpcyB0cnVlLCB3ZSBmb3JjZSBhIHN5bmMgdG8gdGhlIGltcGwgdGhyZWFkLgorICAg
IGJvb2wgbV9mb3JjZVN5bmM7CisKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgVmVjdG9yPE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gPiBtX2Fj
dGl2ZUFuaW1hdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggZmMy
Njc0N2M2ZTkxYmJlZmVlZTk2NjVhMWRlNWQwMGY3NDU1ZDJiZi4uYzRkMDU1MWZhZmNiNzNkMjEx
NWJmOTdjNjJkZjY1NjljZGQ3NjY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBA
IC0xMDUsNiArMTA1LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZUxvYWRlckNsaWVudElt
cGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCcsCisgICAgICAgICAgICAndGVz
dHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lE
QkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCS2V5UGF0
aFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCmluZGV4IDFkNTQwOWY5OGVkZDFhMzk0ZWU0
Zjk5OWRhNmQ0NzUyY2E2NjU4ZTMuLjI3NzdmYmE0ZDFmNmE4ZDRjNzFlZTQyMjkwZThjMDc4ZTM5
ZDk0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKQEAgLTM2NSw2ICszNjUsMzYg
QEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIGRvTm90U3luY0ZpbmlzaGVk
QW5pbWF0aW9uKQogICAgIEVYUEVDVF9GQUxTRShjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5p
bWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiB9CiAKK1RFU1QoQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBkb1N5bmNSdW5uaW5nQW5pbWF0aW9uc1doZW5Db250
cm9sbGVySXNVbmluaXRpYWxpemVkKQoreworICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJDbGllbnQgZHVtbXlJbXBsOworICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cj4gY29udHJvbGxlckltcGwoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVt
bXlJbXBsKSk7CisgICAgRmFrZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCBkdW1teTsK
KyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGNvbnRyb2xsZXIoQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKKworICAgIEVYUEVDVF9GQUxT
RShjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9u
OjpPcGFjaXR5KSk7CisKKyAgICBhZGRPcGFjaXR5VHJhbnNpdGlvblRvQ29udHJvbGxlcigqY29u
dHJvbGxlciwgMSwgMCwgMSwgZmFsc2UpOworCisgICAgY29udHJvbGxlci0+cHVzaEFuaW1hdGlv
blVwZGF0ZXNUbyhjb250cm9sbGVySW1wbC5nZXQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShjb250
cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFj
aXR5KSk7CisgICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0
QXZhaWxhYmlsaXR5LCBjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0
aXZlQW5pbWF0aW9uOjpPcGFjaXR5KS0+cnVuU3RhdGUoKSk7CisKKyAgICAvLyBOb3RpZnkgbWFp
biB0aHJlYWQgY29udHJvbGxlciB0aGF0IHRoZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQuCisgICAg
Y29udHJvbGxlci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChDQ0FuaW1hdGlvbkV2ZW50KENDQW5p
bWF0aW9uRXZlbnQ6OlN0YXJ0ZWQsIDAsIDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCAw
KSk7CisKKyAgICAvLyBSZWNyZWF0ZSB0aGUgaW1wbCB0aHJlYWQgY29udHJvbGxlci4KKyAgICBP
d25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IHVuaW5pdGlhbGl6ZWRDb250cm9sbGVy
SW1wbChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKCZkdW1teUltcGwpKTsKKwor
ICAgIEVYUEVDVF9GQUxTRSh1bmluaXRpYWxpemVkQ29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFu
aW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworCisgICAgY29udHJvbGxl
ci0+cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyh1bmluaXRpYWxpemVkQ29udHJvbGxlckltcGwuZ2V0
KCkpOworCisgICAgLy8gVGhlIG1haW4gdGhyZWFkIGhhcyBhIHJ1bm5pbmcgYW5pbWF0aW9uLCBp
dCBzaG91bGQgc3RpbGwgYmUgc3luYydkIGJlY2F1c2UgdGhlIGNvbnRyb2xsZXIgaXMgdW5pbml0
aWFsaXplZC4KKyAgICBFWFBFQ1RfVFJVRSh1bmluaXRpYWxpemVkQ29udHJvbGxlckltcGwtPmdl
dEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworfQorCiAv
LyBUZXN0cyB0aGF0IHRyYW5zaXRpb25pbmcgb3BhY2l0eSBmcm9tIDAgdG8gMSB3b3JrcyBhcyBl
eHBlY3RlZC4KIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBUcml2aWFsVHJh
bnNpdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3Jh
cGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YWQzMjYyMTVjZjNi
ODFkYmVhZTU0YTEwNzU1ZDUwZmU0ZjA5MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0wLDAg
KzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29t
bW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CisKK25hbWVzcGFjZSB7CisKK2NsYXNz
IE1vY2tHcmFwaGljc0xheWVyQ2xpZW50IDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewor
ICBwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3Qg
R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkgeyB9CisgICAg
dmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihj
b25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKK1RFU1Qo
R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgdXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRFdpdGhBbmlt
YXRpb25zKQoreworICAgIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50IGNsaWVudDsKKyAgICBPd25Q
dHI8R3JhcGhpY3NMYXllckNocm9taXVtPiBncmFwaGljc0xheWVyID0gc3RhdGljX3BvaW50ZXJf
Y2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0+KEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgmY2xpZW50
KSk7CisgICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci5nZXQoKSk7CisKKyAgICBMYXllckNo
cm9taXVtKiBwbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KGdyYXBo
aWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXll
cik7CisKKyAgICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9u
KCkpOworCisgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBmbG9hdEFuaW1hdGlvbihDQ0Fj
dGl2ZUFuaW1hdGlvbjo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRBbmltYXRpb25DdXJ2
ZSksIDAsIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CisgICAgcGxhdGZvcm1MYXll
ci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmFkZChmbG9hdEFuaW1hdGlvbi5yZWxlYXNl
KCkpOworCisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9u
KCkpOworCisgICAgZ3JhcGhpY3NMYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisKKyAgICBw
bGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KGdyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllcik7CisKKyAg
ICBBU1NFUlRfVFJVRShwbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CisgICAg
cGxhdGZvcm1MYXllci0+cmVtb3ZlQW5pbWF0aW9uKDApOworICAgIEFTU0VSVF9GQUxTRShwbGF0
Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CisKKyAgICBncmFwaGljc0xheWVyLT5z
ZXRQcmVzZXJ2ZXMzRChmYWxzZSk7CisKKyAgICBwbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8
TGF5ZXJDaHJvbWl1bSo+KGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNT
RVJUX1RSVUUocGxhdGZvcm1MYXllcik7CisKKyAgICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXll
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk2
YTdmNmFlZmFkMDJhY2QyM2E2ZmUxNDFmZjUwOGVlODFlYWQ4MjMuLmFlYzEzODkwNWE0Yzk3MTc3
ZjllZWI4NTc5MGEzM2I2MjE1YzdjYjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0x
MCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEVuc3VyZSB0aGF0IGFuaW1hdGlvbnMgY29udGludWUgdG8gcnVuIHdoZW4gdHJhbnNmb3Jt
LXN0eWxlIGlzIGNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgzMjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBhbmltYXRpb25zL2NoYW5nZS10cmFuc2Zvcm0tc3R5bGUtZHVyaW5nLWFuaW1h
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvY2hhbmdlLXRy
YW5zZm9ybS1zdHlsZS1kdXJpbmctYW5pbWF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1k
dXJpbmctYW5pbWF0aW9uLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDEyLTA1LTEwICBBbGV4YW5kZXIg
U2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxd
IExheW91dFRlc3RDb250cm9sbGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIHNldFRhYktleUN5
Y2xlc1Rocm91Z2hFbGVtZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9j
aGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MGRjOGYwNWQ3OTk2ZGE3OGJkZjc4YjhjMDEx
Y2U3YjFmODQ4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2No
YW5nZS10cmFuc2Zvcm0tc3R5bGUtZHVyaW5nLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4CisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4MAorbGF5ZXIgYXQgKDEwOCw4KSBzaXplIDEwMHgxMDAKKyAgUmVuZGVy
QmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgxMDAsMCkgc2l6ZSAxMDB4MTAwIFtiZ2NvbG9y
PSMwMDgwMDBdCitsYXllciBhdCAoMTA4LDgpIHNpemUgMTAweDEwMAorICBSZW5kZXJCbG9jayAo
cG9zaXRpb25lZCkge0RJVn0gYXQgKDEwMCwwKSBzaXplIDEwMHgxMDAgW2JnY29sb3I9I0ZGMDAw
MF0KK2xheWVyIGF0ICg4LDgpIHNpemUgMjU5eDIwCisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVk
KSB7RElWfSBhdCAoOCw4KSBzaXplIDI1OXgyMAorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDI1OXgxOQorICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjU5OiAiUEFT
UyAtIENvbXB1dGVkIGZpbmFsIHBvc2l0aW9uIGlzIGNvcnJlY3QuIgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRp
b24uaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1k
dXJpbmctYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M1YTdmZThjNDYxZWM0MzYxZmZkNDk0
MGQyMjA3ZmZkNzE1YzhiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1kdXJpbmctYW5pbWF0aW9uLmh0bWwKQEAgLTAsMCAr
MSw4NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAg
I2NvbnRhaW5lciB7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwcHgpOwor
ICAgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogNDAwOworICAgIH0KKworICAgICNyZXZlYWxlZCB7
CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsKKyAgICB9CisKKyAgICAjYW5pbWF0ZWQgeworICAgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgICAgbGVmdDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMTBweCk7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHls
ZTogcHJlc2VydmUtM2Q7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTAwbXM7
CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CisgICAgICAtd2Via2l0
LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgICAgIC13ZWJraXQtYW5pbWF0
aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKKyAgICB9CisKKyAgICAjcmVzdWx0IHsKKyAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgICB9CisKKyAg
ICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbSB7CisgICAgICBmcm9tIHsgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVooMHB4KSB0cmFuc2xhdGVYKDBweCk7IH0KKyAgICAgIHRvIHsgLXdlYmtp
dC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMjAwcHgpIHRyYW5zbGF0ZVgoLTIwMHB4KTsgfQorICAg
IH0KKyAgIDwvc3R5bGU+CisKKyAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLXRl
c3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+CisgICA8c2NyaXB0PgorICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICB9CisKKyAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRG9uZSgpCisgICAg
IHsKKyAgICAgICB2YXIgYW5pbWF0ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5pbWF0
ZWQnKTsKKyAgICAgICB2YXIgcmVzdWx0OworICAgICAgIHZhciBleHBlY3RlZCA9IFsxLCAwLCAw
LCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAtMjAwLCAwLCAyMDAsIDFdOworICAgICAgIHZh
ciBjb21wdXRlZCA9IGdldFByb3BlcnR5VmFsdWUoIndlYmtpdFRyYW5zZm9ybSIsICJhbmltYXRl
ZCIpOworICAgICAgIGlmIChjb21wYXJlUHJvcGVydHlWYWx1ZSgid2Via2l0VHJhbnNmb3JtIiwg
Y29tcHV0ZWQsIGV4cGVjdGVkLCAwLjAwMikpIHsKKyAgICAgICAgIHJlc3VsdCA9ICJQQVNTIC0g
Q29tcHV0ZWQgZmluYWwgcG9zaXRpb24gaXMgY29ycmVjdC4iOworICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICByZXN1bHQgPSAiRkFJTCAtIENvbXB1dGVkIGZpbmFsIHBvc2l0aW9uIGlzIGluY29y
cmVjdC4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiwgZ290ICIgKyBjb21wdXRlZDsKKyAgICAg
ICB9CisgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9
IHJlc3VsdDsKKyAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
IH0KKworICAgICBmdW5jdGlvbiBhbmltYXRpb25TdGFydGVkKCkKKyAgICAgeworICAgICAgIHZh
ciBhbmltYXRlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbmltYXRlZCcpOworICAgICAg
IGFuaW1hdGVkLnN0eWxlLndlYmtpdFRyYW5zZm9ybVN0eWxlID0gJ2ZsYXQnOworICAgICB9CisK
KyAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKKyAgICAgeworICAgICAgIHZhciBhbmltYXRlZCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbmltYXRlZCcpOworICAgICAgIGFuaW1hdGVkLnN0
eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgPSAiYW5pbSI7CisgICAgICAgYW5pbWF0ZWQuYWRkRXZl
bnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uRW5kJywgYW5pbWF0aW9uRG9uZSk7CisgICAgICAg
d2FpdEZvckFuaW1hdGlvblRvU3RhcnQoYW5pbWF0ZWQsIGFuaW1hdGlvblN0YXJ0ZWQpOworICAg
ICB9CisgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgor
ICA8IS0tIFRlc3QgZm9yIERSVCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgp
IEFQSSBvbiBhbmltYXRpb25zIHdpdGggbXVsdGlwbGUga2V5ZnJhbWVzIC0tPgorICA8ZGl2IGlk
PSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9InJldmVhbGVkIj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJhbmltYXRlZCI+PC9kaXY+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbGludXgvYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRp
b24tZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5p
bWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24tZXhwZWN0ZWQu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRjYzUxMmM5MTk1NmJhNjNiNjI4MGNjZmQ5MWNlYTZhM2Q0M2YxNTAK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjIKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlV
eyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuNTlgCno8VFQ/WEJNWlkrdnM0MyVx
fnozT09VcTtmXkNXWUZ3OFVnMWJDYWxUT0JPUlFhMkBiO2FTVy1MXlkrZGAmTGEqeQp6RUMrOE51
OVNBeVFAXjtPVnI1c3R5azVCfDxJbF90M3FJZXNXbmckPCFvPHk+cHRnYTVBcWtVbHtULXV2I1E5
c2MKejR+P0lGRTlZKGF5ZmNCMztSdVR1Z00tZn5XOVM5S3dLSCQtRikkUX1pMGQjayVzOVpyKDdg
IyU3IThFY2xyV2tMCnBNc3ZZdkUqUS1QcXEkJl48Ym9VQW84NVU9VXZVeD4wNSpVYkpZREA8KTtU
M0swUlgqRzcyXk5eCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggYTY0YWQyM2Nm
MjlhZDdjY2QyNjkwOTYwM2IzZjQ4Yjk4MGY3M2U5Mi4uNWE2ODUzYmI2MzE0NDNlN2QzMmE5ZDQy
MzMwYWQ2NDZmNTkzNTgzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMzg4Myw2ICszODgzLDkgQEAgQlVHV0s4NTUz
MiBTS0lQIDogZmFzdC9zdWItcGl4ZWwvc2l6ZS1vZi1ib3gtd2l0aC16b29tLmh0bWwgPSBGQUlM
CiAKIEJVR1dLNjg3NDQgOiBmYXN0L2Jsb2NrL2Zsb2F0L2Zsb2F0LW5vdC1yZW1vdmVkLWZyb20t
bmV4dC1zaWJsaW5nNC5odG1sID0gSU1BR0UKIAorLy8gV2lsbCBuZWVkIHRvIHJlYmFzZWxpbmUg
b25jZSByZXN1bHRzIGFyZSBnZW5lcmF0ZWQgZm9yIHRoZXNlIHBsYXRmb3JtcworQlVHV0s4NjEw
OSBXSU4gTUFDIDogYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmlt
YXRpb24uaHRtbCA9IE1JU1NJTkcKKwogLy8gSUVUQyBmbGV4Ym94IGZhaWx1cmVzCiBCVUdXSzg1
MjExIDogaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9mbGV4Ym94LWFsaWduLXN0cmV0Y2gtMDAx
Lmh0bSA9IElNQUdFCiBCVUdXSzg1MjEyIDogaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9mbGV4
Ym94LWxheW91dC0wMDIuaHRtID0gSU1BR0UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141331</attachid>
            <date>2012-05-10 22:56:26 -0700</date>
            <delta_ts>2012-05-11 11:03:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83283-20120511015624.patch</filename>
            <type>text/plain</type>
            <size>21616</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDgwYjdlYjE2MjY5MWZj
NmI1ZmFlNDQwN2VjMjNhMDZkMmU1YzIwNS4uZWViMTI1ZTUzYzI3ZWNhZDFlYTIwY2I3MWRjZTdi
OTczYjE3MjJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA1LTEwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5z
dXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUg
aXMgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMyODMKKworICAgICAgICBNYWtlIHN1cmUgdGhhdCB3ZSB0cmFuc2ZlciBhbmltYXRpb25z
IHdoZW4gY2hhbmdpbmcgbGF5ZXJzIGR1ZSB0byBhIHRyYW5zZm9ybS1zdHlsZSBjaGFuZ2UuCisg
ICAgICAgIFVuaXQgdGVzdGVkIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QudXBkYXRlTGF5
ZXJQcmVzZXJ2ZXMzRFdpdGhBbmltYXRpb25zCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0
eWxlLWR1cmluZy1hbmltYXRpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
OjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0Q2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OnB1c2hOZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpyZXBsYWNlSW1wbFRocmVhZEFu
aW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0
Rm9yY2VTeW5jKToKKwogMjAxMi0wNS0xMCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgV2ViS2l0IHNob3VsZCBzdXBwb3J0IHRhYi1zaXplLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwNDdmOWJjM2VhNDJkNGNhN2E1MGVlMDA2ZTUxZTVkNGM1
YWI0NjhlLi4yMmVlOGQ4MzViMGMxMmI2YmY1MGE1MGQ4NDUwMGQ0ZTAwN2JhZTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA1LTEwICBJYW4gVm9s
bGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJl
IHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5bGUgaXMg
Y2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODMyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKE1vY2tHcmFwaGlj
c0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhpY3NMYXllckNs
aWVudDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9j
a0dyYXBoaWNzTGF5ZXJDbGllbnQ6Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6TW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQ6OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6Ok1vY2tHcmFwaGljc0xheWVyQ2xpZW50OjpzaG93RGVidWdCb3JkZXJz
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhpY3NMYXllckNsaWVudDo6c2hvd1Jl
cGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAxMi0wNS0x
MCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViS2l0
IHNob3VsZCBzdXBwb3J0IHRhYi1zaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggOWVmMzFiMjViYzNmYzE2MGJiZGMwOTY5MmI3Mjk1ZDNkOTY5MDRkMC4uOTQz
MTczNTA0YmI0ZDVhNTI5ZWEzYzZmYTVkNTllM2I0ZTZiYTI3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC02MDcsNiArNjA3LDcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogICAgICAgICBtX3RyYW5zZm9y
bUxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fdHJhbnNmb3JtTGF5
ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRM
YXllckFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5z
ZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIobV9sYXllci0+cmVsZWFzZUxheWVyQW5pbWF0aW9u
Q29udHJvbGxlcigpKTsKIAogICAgICAgICAvLyBDb3B5IHRoZSBwb3NpdGlvbiBmcm9tIHRoaXMg
bGF5ZXIuCiAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKQEAgLTYzOCw2ICs2MzksOSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiAg
ICAgICAgIGlmIChtX3RyYW5zZm9ybUxheWVyLT5wYXJlbnQoKSkKICAgICAgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXItPnBhcmVudCgpLT5yZXBsYWNlQ2hpbGQobV90cmFuc2Zvcm1MYXllci5nZXQo
KSwgbV9sYXllci5nZXQoKSk7CiAKKyAgICAgICAgbV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25E
ZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKG1fdHJhbnNmb3JtTGF5ZXItPnJlbGVhc2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSk7
CisKICAgICAgICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxheWVyLgogICAgICAgICBtX3Ry
YW5zZm9ybUxheWVyLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKDApOwogICAgICAgICBtX3Ry
YW5zZm9ybUxheWVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjk0YWFkNjBlNGU2
ODg2MTkwZTIxYzJlOGMyMDZjZjQyNjdlYTEwMS4uOTk5ZDBiZmMzNjAyMTY1OTBhMTdmMGUyMmFi
N2Q1NTJjODUzMGVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTYzMiw5ICs2MzIsMjAg
QEAgdm9pZCBMYXllckNocm9taXVtOjpyZXN1bWVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNU
aW1lKQogdm9pZCBMYXllckNocm9taXVtOjpzZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoUGFz
c093blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gbGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKQogewogICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyID0gbGF5ZXJBbmltYXRpb25D
b250cm9sbGVyOworICAgIGlmIChtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlcikgeworICAgICAg
ICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+c2V0Q2xpZW50KHRoaXMpOworICAgICAgICBt
X2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+c2V0Rm9yY2VTeW5jKCk7CisgICAgfQogICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiB9CiAKK1Bhc3NPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI+IExheWVyQ2hyb21pdW06OnJlbGVhc2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKQorewor
ICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gdG9SZXR1cm4gPSBtX2xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5yZWxlYXNlKCk7CisgICAgbV9sYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIgPSBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMpOworICAgIHJl
dHVybiB0b1JldHVybi5yZWxlYXNlKCk7Cit9CisKIGJvb2wgTGF5ZXJDaHJvbWl1bTo6aGFzQWN0
aXZlQW5pbWF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRy
b2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpOwpAQCAtNjQzLDcgKzY1NCw4IEBAIGJvb2wgTGF5
ZXJDaHJvbWl1bTo6aGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3QKIHZvaWQgTGF5ZXJDaHJvbWl1
bTo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvbkV2ZW50JiBldmVudCwg
ZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIt
Pm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZXZlbnQpOwotICAgIG1fbGF5ZXJBbmltYXRpb25EZWxl
Z2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh3YWxsQ2xvY2tUaW1lKTsKKyAgICBpZiAobV9s
YXllckFuaW1hdGlvbkRlbGVnYXRlKQorICAgICAgICBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUt
Pm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQod2FsbENsb2NrVGltZSk7CiB9CiAKIHZvaWQgTGF5ZXJD
aHJvbWl1bTo6bm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoZG91YmxlIHdhbGxDbG9ja1RpbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKaW5kZXggOWU3ZmNlNTBjNTlhYzgzOWQzZDJmOTBlMDlmNTFiNGI0MGM1
OTlmMi4uYTU5MGJkMmMzMWEwNWI1NGI1ZWY4YjE1Y2JhZDk4NTcwNWQyMTdlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaApAQCAtMjQwLDYgKzI0MCw3IEBAIHB1YmxpYzoKIAogICAgIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKFBhc3NPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+KTsKKyAg
ICBQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiByZWxlYXNlTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKCk7CiAKICAgICB2b2lkIHNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUo
Q0NMYXllckFuaW1hdGlvbkRlbGVnYXRlKiBsYXllckFuaW1hdGlvbkRlbGVnYXRlKSB7IG1fbGF5
ZXJBbmltYXRpb25EZWxlZ2F0ZSA9IGxheWVyQW5pbWF0aW9uRGVsZWdhdGU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGRmNTBi
ZTgzNDZhMDFjNGUwZDk3ZmFmZGQ1MzAzN2U0MWQyYjgyNTAuLjk4ZjQwMTQ0OGI0OWM3NDJjMmE4
Zjc2OTUxMTgyY2ZlMmI3YjVlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEyNCw3ICsxMjQsOCBAQCBQYXNzT3duUHRyPENDQWN0
aXZlQW5pbWF0aW9uPiBjcmVhdGVBY3RpdmVBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogfSAvLyBuYW1lcGFjZQogCiBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQq
IGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICA6IG1fZm9yY2VTeW5jKGZhbHNl
KQorICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQogCkBAIC0yMDMsOSArMjA0LDE0IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1v
bm90b25pY1RpbWUpCiAvLyBhcmUga2VwdCBpbiBzeW5jLgogdm9pZCBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcjo6cHVzaEFuaW1hdGlvblVwZGF0ZXNUbyhDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlciogY29udHJvbGxlckltcGwpCiB7Ci0gICAgcHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJl
YWQoY29udHJvbGxlckltcGwpOwotICAgIHJlbW92ZUFuaW1hdGlvbnNDb21wbGV0ZWRPbk1haW5U
aHJlYWQoY29udHJvbGxlckltcGwpOwotICAgIHB1c2hQcm9wZXJ0aWVzVG9JbXBsVGhyZWFkKGNv
bnRyb2xsZXJJbXBsKTsKKyAgICBpZiAobV9mb3JjZVN5bmMpIHsKKyAgICAgICAgcmVwbGFjZUlt
cGxUaHJlYWRBbmltYXRpb25zKGNvbnRyb2xsZXJJbXBsKTsKKyAgICAgICAgbV9mb3JjZVN5bmMg
PSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRo
cmVhZChjb250cm9sbGVySW1wbCk7CisgICAgICAgIHJlbW92ZUFuaW1hdGlvbnNDb21wbGV0ZWRP
bk1haW5UaHJlYWQoY29udHJvbGxlckltcGwpOworICAgICAgICBwdXNoUHJvcGVydGllc1RvSW1w
bFRocmVhZChjb250cm9sbGVySW1wbCk7CisgICAgfQogfQogCiB2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3RvciogZXZlbnRzKQpAQCAtMjUzLDggKzI1OSw3IEBAIGJvb2wgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OmlzQW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmltYXRpb246OlRh
cmdldFByCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpub3RpZnlBbmltYXRpb25T
dGFydGVkKGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmIGV2ZW50KQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCkgPT0gZXZlbnQuZ3JvdXBJZCAmJiBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkgPT0gZXZlbnQudGFyZ2V0UHJvcGVy
dHkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3lu
Y2hyb25pemVkU3RhcnRUaW1lKCkpOworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ld
LT5ncm91cCgpID09IGV2ZW50Lmdyb3VwSWQgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJn
ZXRQcm9wZXJ0eSgpID09IGV2ZW50LnRhcmdldFByb3BlcnR5ICYmIG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSkgewogICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZShmYWxzZSk7CiAg
ICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShldmVudC5tb25v
dG9uaWNUaW1lKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2Miw2ICsyNjcsMTEgQEAgdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25z
dCBDQ0FuaW1hdGlvbkV2ZW50JgogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcjo6c2V0Q2xpZW50KENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50KiBjbGll
bnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKIHZvaWQgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXI6OnB1c2hOZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKiBjb250cm9sbGVySW1wbCkgY29uc3QKIHsKICAgICAvLyBBbnkgbmV3IGFu
aW1hdGlvbnMgb3duZWQgYnkgdGhlIG1haW4gdGhyZWFkJ3MgY29udHJvbGxlciBhcmUgY2xvbmVk
IGFuZCBhZGRlIHRvIHRoZSBpbXBsIHRocmVhZCdzIGNvbnRyb2xsZXIuCkBAIC0yODEsNiArMjkx
LDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaE5ld0FuaW1hdGlvbnNU
b0ltcGxUaHJlYWQoQ0NMYXllckFuaW1hdGlvbkMKICAgICAgICAgQVNTRVJUKCF0b0FkZC0+bmVl
ZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7CiAgICAgICAgIC8vIFRoZSBuZXcgYW5pbWF0aW9u
IHNob3VsZCBiZSBzZXQgdG8gcnVuIGFzIHNvb24gYXMgcG9zc2libGUuCiAgICAgICAgIHRvQWRk
LT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJp
bGl0eSwgMCk7CisgICAgICAgIHRvQWRkLT5zZXRTdGFydFRpbWUoMCk7CiAgICAgICAgIGNvbnRy
b2xsZXJJbXBsLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKICAgICB9CiB9CkBAIC00MzcsNiArNDQ4
LDEzIEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1cmdlRmluaXNoZWRBbmlt
YXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDCiAgICAgfQogfQogCit2b2lkIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyOjpyZXBsYWNlSW1wbFRocmVhZEFuaW1hdGlvbnMoQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXJJbXBsKSBjb25zdAoreworICAgIGNvbnRyb2xs
ZXJJbXBsLT5tX2FjdGl2ZUFuaW1hdGlvbnMuY2xlYXIoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgY29udHJvbGxl
ckltcGwtPmFkZChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmNsb25lRm9ySW1wbFRocmVhZCgpKTsK
K30KKwogdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6dGlja0FuaW1hdGlvbnMoZG91
YmxlIG1vbm90b25pY1RpbWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2
ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlci5oCmluZGV4IGUyMmY4MDU0ZDYyMzIwN2M0ZDcwYzMxMjFmYjFiMDM5
NWEyZTYzMDIuLmFjNzI4N2Y3MTFlMjMwM2FhMDkzYTcxMmM1YzU5MWExMGUzMWMzZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtOTAsNiAr
OTAsMTIgQEAgcHVibGljOgogICAgIC8vIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRp
bmcgbWFpbiB0aHJlYWQgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZS4KICAgICB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYpOwogCisgICAgLy8gSWYgYSBz
eW5jIGlzIGZvcmNlZCwgdGhlbiB0aGUgbmV4dCB0aW1lIGFuaW1hdGlvbiB1cGRhdGVzIGFyZSBw
dXNoZWQgdG8gdGhlIGltcGwKKyAgICAvLyB0aHJlYWQsIGFsbCBhbmltYXRpb25zIHdpbGwgYmUg
dHJhbnNmZXJyZWQuCisgICAgdm9pZCBzZXRGb3JjZVN5bmMoKSB7IG1fZm9yY2VTeW5jID0gdHJ1
ZTsgfQorCisgICAgdm9pZCBzZXRDbGllbnQoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGll
bnQqKTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50Kik7CiAKQEAgLTk5LDYgKzEwNSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlQW5pbWF0aW9u
c0NvbXBsZXRlZE9uTWFpblRocmVhZChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0
OwogICAgIHZvaWQgcHVzaFByb3BlcnRpZXNUb0ltcGxUaHJlYWQoQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIqKSBjb25zdDsKKyAgICB2b2lkIHJlcGxhY2VJbXBsVGhyZWFkQW5pbWF0aW9ucyhD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciopIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydEFuaW1h
dGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yKik7CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRU
aW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciopOwpAQCAt
MTA4LDYgKzExNSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJs
ZSBtb25vdG9uaWNUaW1lKTsKIAorICAgIC8vIElmIHRoaXMgaXMgdHJ1ZSwgd2UgZm9yY2UgYSBz
eW5jIHRvIHRoZSBpbXBsIHRocmVhZC4KKyAgICBib29sIG1fZm9yY2VTeW5jOworCiAgICAgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFZlY3RvcjxPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+ID4gbV9hY3RpdmVBbmltYXRpb25zOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCmluZGV4IGY0MDk1MWFmZTBmZjMzYzFkMGQ2MThlNmU0N2VhNGRh
M2Y3Mzk5OTEuLmJiMmUzYmQzMmM4YTVkMjZmYTNkNGIyZmE1ZWY3NmI0ZTdjNjI5M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgICAgICAg
ICAndGVzdHMvRnJhbWVMb2FkZXJDbGllbnRJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RI
ZWxwZXJzLmgnLAorICAgICAgICAgICAgJ3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL0lEQktleVBhdGhUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM5YWQzMjYyMTVjZjNiODFkYmVhZTU0YTEwNzU1ZDUwZmU0ZjA5MDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAi
Q0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50IDogcHVibGljIEdyYXBo
aWNzTGF5ZXJDbGllbnQgeworICBwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1h
dGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3Qm
IGluQ2xpcCkgeyB9CisgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3Jh
cGhpY3NMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNo
b3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KK307CisKK1RFU1QoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgdXBkYXRlTGF5ZXJQ
cmVzZXJ2ZXMzRFdpdGhBbmltYXRpb25zKQoreworICAgIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50
IGNsaWVudDsKKyAgICBPd25QdHI8R3JhcGhpY3NMYXllckNocm9taXVtPiBncmFwaGljc0xheWVy
ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0+KEdyYXBoaWNzTGF5
ZXI6OmNyZWF0ZSgmY2xpZW50KSk7CisgICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci5nZXQo
KSk7CisKKyAgICBMYXllckNocm9taXVtKiBwbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5
ZXJDaHJvbWl1bSo+KGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJU
X1RSVUUocGxhdGZvcm1MYXllcik7CisKKyAgICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXllci0+
aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworCisgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBm
bG9hdEFuaW1hdGlvbihDQ0FjdGl2ZUFuaW1hdGlvbjo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBGYWtl
RmxvYXRBbmltYXRpb25DdXJ2ZSksIDAsIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7
CisgICAgcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmFkZChmbG9h
dEFuaW1hdGlvbi5yZWxlYXNlKCkpOworCisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllci0+
aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworCisgICAgZ3JhcGhpY3NMYXllci0+c2V0UHJlc2VydmVz
M0QodHJ1ZSk7CisKKyAgICBwbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1
bSo+KGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUocGxh
dGZvcm1MYXllcik7CisKKyAgICBBU1NFUlRfVFJVRShwbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVB
bmltYXRpb24oKSk7CisgICAgcGxhdGZvcm1MYXllci0+cmVtb3ZlQW5pbWF0aW9uKDApOworICAg
IEFTU0VSVF9GQUxTRShwbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CisKKyAg
ICBncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRChmYWxzZSk7CisKKyAgICBwbGF0Zm9ybUxh
eWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KGdyYXBoaWNzTGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllcik7CisKKyAgICBBU1NFUlRf
RkFMU0UocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGQyMzk5MTFiZDkzYjJlMWY3NjQ2ZDkxNjMzY2ExMzBmN2I0MTIyY2Qu
LmQ5MDZkNGU2OWI0MDI2NGE3MWVkMTQzZmI2MmQxNmJmZTUwYjhlNzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMi0wNS0xMCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSB0aGF0IGFuaW1hdGlvbnMgY29udGludWUgdG8g
cnVuIHdoZW4gdHJhbnNmb3JtLXN0eWxlIGlzIGNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhbmltYXRpb25zL2NoYW5nZS10cmFuc2Zvcm0t
c3R5bGUtZHVyaW5nLWFuaW1hdGlvbi1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGFu
aW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1kdXJpbmctYW5pbWF0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxl
LWR1cmluZy1hbmltYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMTAgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViS2l0IHNob3VsZCBzdXBwb3J0
IHRhYi1zaXplLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2UtdHJh
bnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24tZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9jaGFuZ2UtdHJhbnNmb3JtLXN0eWxlLWR1cmluZy1hbmltYXRpb24tZXhwZWN0
ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRjYzUxMmM5MTk1NmJhNjNiNjI4MGNjZmQ5MWNlYTZhM2Q0M2Yx
NTAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjIKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuNTlgCno8VFQ/WEJNWlkrdnM0
MyVxfnozT09VcTtmXkNXWUZ3OFVnMWJDYWxUT0JPUlFhMkBiO2FTVy1MXlkrZGAmTGEqeQp6RUMr
OE51OVNBeVFAXjtPVnI1c3R5azVCfDxJbF90M3FJZXNXbmckPCFvPHk+cHRnYTVBcWtVbHtULXV2
I1E5c2MKejR+P0lGRTlZKGF5ZmNCMztSdVR1Z00tZn5XOVM5S3dLSCQtRikkUX1pMGQjayVzOVpy
KDdgIyU3IThFY2xyV2tMCnBNc3ZZdkUqUS1QcXEkJl48Ym9VQW84NVU9VXZVeD4wNSpVYkpZREA8
KTtUM0swUlgqRzcyXk5eCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS10cmFuc2Zvcm0tc3R5bGUtZHVyaW5nLWFuaW1hdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS10cmFuc2Zvcm0t
c3R5bGUtZHVyaW5nLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhYTEyZTk1
NzlmMjUxZDkzMWZiMTcyNDc3NTQzYzE5YmNlNzc3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLXRyYW5zZm9ybS1zdHlsZS1kdXJpbmctYW5pbWF0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTIC0gQ29tcHV0ZWQgZmluYWwgcG9zaXRp
b24gaXMgY29ycmVjdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdl
LXRyYW5zZm9ybS1zdHlsZS1kdXJpbmctYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL2NoYW5nZS10cmFuc2Zvcm0tc3R5bGUtZHVyaW5nLWFuaW1hdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA5YmM5ODA3NDM5YWMzMGRmY2RhZGNhOWExMjY5YjgxMWFmMmE1MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS10cmFuc2Zvcm0tc3R5bGUt
ZHVyaW5nLWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgICNjb250YWluZXIgeworICAgICAgLXdlYmtp
dC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4KTsKKyAgICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6
IDQwMDsKKyAgICB9CisKKyAgICAjcmV2ZWFsZWQgeworICAgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgICAgbGVmdDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgI2Fu
aW1hdGVkIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIGxlZnQ6IDEwMHB4Owor
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGJhY2tncm91
bmQtY29sb3I6IHJlZDsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDEwcHgp
OworICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOworICAgICAgLXdl
YmtpdC1hbmltYXRpb24tZHVyYXRpb246IDEwMG1zOworICAgICAgLXdlYmtpdC1hbmltYXRpb24t
ZmlsbC1tb2RlOiBib3RoOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9u
OiBsaW5lYXI7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7Cisg
ICAgfQorCisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0geworICAgICAgZnJvbSB7IC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCkgdHJhbnNsYXRlWCgwcHgpOyB9CisgICAgICB0
byB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDIwMHB4KSB0cmFuc2xhdGVYKC0yMDBw
eCk7IH0KKyAgICB9CisgICA8L3N0eWxlPgorCisgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Fu
aW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICAgPHNjcmlwdD4KKyAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgIH0KKworICAgICBmdW5jdGlvbiBhbmltYXRpb25Eb25lKCkKKyAgICAgewor
ICAgICAgIHZhciBhbmltYXRlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbmltYXRlZCcp
OworICAgICAgIHZhciByZXN1bHQ7CisgICAgICAgdmFyIGV4cGVjdGVkID0gWzEsIDAsIDAsIDAs
IDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIC0yMDAsIDAsIDIwMCwgMV07CisgICAgICAgdmFyIGNv
bXB1dGVkID0gZ2V0UHJvcGVydHlWYWx1ZSgid2Via2l0VHJhbnNmb3JtIiwgImFuaW1hdGVkIik7
CisgICAgICAgaWYgKGNvbXBhcmVQcm9wZXJ0eVZhbHVlKCJ3ZWJraXRUcmFuc2Zvcm0iLCBjb21w
dXRlZCwgZXhwZWN0ZWQsIDAuMDAyKSkgeworICAgICAgICAgcmVzdWx0ID0gIlBBU1MgLSBDb21w
dXRlZCBmaW5hbCBwb3NpdGlvbiBpcyBjb3JyZWN0LiI7CisgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgIHJlc3VsdCA9ICJGQUlMIC0gQ29tcHV0ZWQgZmluYWwgcG9zaXRpb24gaXMgaW5jb3JyZWN0
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAiLCBnb3QgIiArIGNvbXB1dGVkOworICAgICAgIH0K
KyAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVz
dWx0OworICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgfQor
CisgICAgIGZ1bmN0aW9uIGFuaW1hdGlvblN0YXJ0ZWQoKQorICAgICB7CisgICAgICAgdmFyIGFu
aW1hdGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FuaW1hdGVkJyk7CisgICAgICAgYW5p
bWF0ZWQuc3R5bGUud2Via2l0VHJhbnNmb3JtU3R5bGUgPSAnZmxhdCc7CisgICAgIH0KKworICAg
ICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAgICB7CisgICAgICAgdmFyIGFuaW1hdGVkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FuaW1hdGVkJyk7CisgICAgICAgYW5pbWF0ZWQuc3R5bGUu
d2Via2l0QW5pbWF0aW9uTmFtZSA9ICJhbmltIjsKKyAgICAgICBhbmltYXRlZC5hZGRFdmVudExp
c3RlbmVyKCd3ZWJraXRBbmltYXRpb25FbmQnLCBhbmltYXRpb25Eb25lKTsKKyAgICAgICB3YWl0
Rm9yQW5pbWF0aW9uVG9TdGFydChhbmltYXRlZCwgYW5pbWF0aW9uU3RhcnRlZCk7CisgICAgIH0K
KyAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+CisgIDwh
LS0gVGVzdCBmb3IgRFJUIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKCkgQVBJ
IG9uIGFuaW1hdGlvbnMgd2l0aCBtdWx0aXBsZSBrZXlmcmFtZXMgLS0+CisgIDxkaXYgaWQ9ImNv
bnRhaW5lciI+CisgICAgPGRpdiBpZD0icmV2ZWFsZWQiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFu
aW1hdGVkIj48L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>