<?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>142870</bug_id>
          
          <creation_ts>2015-03-19 11:26:37 -0700</creation_ts>
          <short_desc>CSS Animations with triggers should map scroll position to duration</short_desc>
          <delta_ts>2015-03-20 10:28:22 -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>Animations</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078558</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-19 11:26:37 -0700</bug_when>
    <thetext>Expose a prototype implementation of what will eventually be called animation-timebase, mapping the scroll location to the duration of an animation. This only applies if the animation has a start and end trigger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078571</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-19 11:48:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/20227244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078658</commentid>
    <comment_count>2</comment_count>
      <attachid>249067</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-19 15:42:22 -0700</bug_when>
    <thetext>Created attachment 249067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078667</commentid>
    <comment_count>3</comment_count>
      <attachid>249067</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-19 15:53:32 -0700</bug_when>
    <thetext>Comment on attachment 249067
Patch

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

&gt; Source/WebCore/css/CSSToStyleMap.cpp:539
&gt; +        bool hasEnd = false;

I don&apos;t think you need the hasEnd variable.

&gt; Source/WebCore/page/animation/AnimationBase.cpp:482
&gt; +    // time is determined by the scroll position.

We should stop calling this elapsedTime

&gt; Source/WebCore/page/animation/AnimationBase.cpp:710
&gt; +        if (scrollTrigger.hasEndValue() &amp;&amp; m_object) {

Can we make m_object a reference (later)?

&gt; Source/WebCore/page/animation/AnimationBase.cpp:711
&gt; +            float offset = m_object-&gt;view().frameView().scrollOffsetForFixedPosition().height().toFloat();

I think we should snapshot the scroll position when we snapshot the animation time. Fetching it all over the place feels error-prone.

&gt; Source/WebCore/page/animation/AnimationBase.cpp:718
&gt; +            return m_animation-&gt;duration() * (offset - startValue) / (endValue - startValue);

What if endValue == startValue?

Please add a test for this case.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:871
&gt; +        ScrollAnimationTrigger&amp; scrollTrigger = downcast&lt;ScrollAnimationTrigger&gt;(*anim-&gt;trigger().get());
&gt; +        if (scrollTrigger.hasEndValue())

What about startValue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078714</commentid>
    <comment_count>4</comment_count>
      <attachid>249076</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-19 18:52:07 -0700</bug_when>
    <thetext>Created attachment 249076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078715</commentid>
    <comment_count>5</comment_count>
      <attachid>249067</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-19 18:52:20 -0700</bug_when>
    <thetext>Comment on attachment 249067
Patch

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

&gt;&gt; Source/WebCore/css/CSSToStyleMap.cpp:539
&gt;&gt; +        bool hasEnd = false;
&gt; 
&gt; I don&apos;t think you need the hasEnd variable.

I removed it but it means I have two calls to setTrigger, each side of the conditional.

&gt;&gt; Source/WebCore/page/animation/AnimationBase.cpp:482
&gt;&gt; +    // time is determined by the scroll position.
&gt; 
&gt; We should stop calling this elapsedTime

Agreed. I&apos;ll do that in a followup patch.

&gt;&gt; Source/WebCore/page/animation/AnimationBase.cpp:710
&gt;&gt; +        if (scrollTrigger.hasEndValue() &amp;&amp; m_object) {
&gt; 
&gt; Can we make m_object a reference (later)?

Yes.

&gt;&gt; Source/WebCore/page/animation/AnimationBase.cpp:711
&gt;&gt; +            float offset = m_object-&gt;view().frameView().scrollOffsetForFixedPosition().height().toFloat();
&gt; 
&gt; I think we should snapshot the scroll position when we snapshot the animation time. Fetching it all over the place feels error-prone.

Done

&gt;&gt; Source/WebCore/page/animation/AnimationBase.cpp:718
&gt;&gt; +            return m_animation-&gt;duration() * (offset - startValue) / (endValue - startValue);
&gt; 
&gt; What if endValue == startValue?
&gt; 
&gt; Please add a test for this case.

OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078716</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-19 18:52:42 -0700</bug_when>
    <thetext>Checking the patch on EWS before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078717</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-19 18:54:40 -0700</bug_when>
    <thetext>Attachment 249076 did not pass style-queue:


ERROR: Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 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>1078741</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-19 21:48:38 -0700</bug_when>
    <thetext>Committed r181778: &lt;http://trac.webkit.org/changeset/181778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078882</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-20 10:28:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed r181778: &lt;http://trac.webkit.org/changeset/181778&gt;

This broke animations/trigger-container-scroll-empty.html on Windows and EFL:

https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=animations%2Ftrigger-container-scroll-empty.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249067</attachid>
            <date>2015-03-19 15:42:22 -0700</date>
            <delta_ts>2015-03-19 15:53:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142870-20150319154150.patch</filename>
            <type>text/plain</type>
            <size>18169</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk1MjNmMDQyNzE5ZmFm
Njk0OTJhMDg2N2ZkZDc5NGE3ZGU1NTkxZC4uM2U4ZmQyMThlODU0YzZmNGZhMDhhMGU3OWViMGVk
YWI5ZTcwMGQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTAzLTE5ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgQW5pbWF0aW9ucyB3aXRo
IHRyaWdnZXJzIHNob3VsZCBtYXAgc2Nyb2xsIHBvc2l0aW9uIHRvIGR1cmF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4NzAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzIwMjI3MjQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIHByb3RvdHlwZSBpbXBsZW1lbnRhdGlvbiBvZiB3
aGF0IHdpbGwgZXZlbnR1YWxseSBiZSBjYWxsZWQKKyAgICAgICAgYW5pbWF0aW9uLXRpbWViYXNl
LCBtYXBwaW5nIHRoZSBzY3JvbGwgbG9jYXRpb24gdG8gdGhlIGR1cmF0aW9uIG9mIGFuCisgICAg
ICAgIGFuaW1hdGlvbi4gVGhpcyBvbmx5IGFwcGxpZXMgaWYgdGhlIGFuaW1hdGlvbiBoYXMgYSBz
dGFydCBhbmQgZW5kCisgICAgICAgIHRyaWdnZXIuCisKKyAgICAgICAgVGVzdDogYW5pbWF0aW9u
cy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtYm91bmRhcmllcy5odG1sCisKKyAgICAgICAgKiBj
c3MvQ1NTVG9TdHlsZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25UcmlnZ2VyKTogRml4IGEgYnVnIHdoZXJlIEkgd2Fzbid0CisgICAgICAgIHRl
bGxpbmcgdGhlIFNjcm9sbEFuaW1hdGlvblRyaWdnZXIgb2JqZWN0IHdoZXRoZXIgb3Igbm90IGl0
IGhhZAorICAgICAgICBhbiBlbmQgdmFsdWUuIFRoaXMgd2Fzbid0IHZpc2libGUgYmVmb3JlIGJl
Y2F1c2Ugd2Ugd2VyZSBub3QgdXNpbmcKKyAgICAgICAgdGhlIGVuZCB2YWx1ZS4KKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCk6IEFkZCBhIGNvbW1lbnQg
YW5kCisgICAgICAgIGNoYW5nZSB0byB1c2luZyBhIGRvd25jYXN0LgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UpOiBDaGFuZ2UgdG8gZG93bmNhc3Qu
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpmcmVlemVBdFRpbWUpOiBXaGl0ZXNw
YWNlIGNsZWFudXAuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpnZXRFbGFwc2Vk
VGltZSk6IENhbGN1bGF0ZSB0aGUgZWxhcHNlZFRpbWUgYmFzZWQKKyAgICAgICAgb24gdGhlIHNj
cm9sbCBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgc3RhcnQgYW5kIGVuZCB0cmlnZ2VyIHNwb3Rz
LgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlv
bnMpOiBTaW5jZSB0aGlzCisgICAgICAgIGNhbiBwb3RlbnRpYWxseSBjYWxsIGludG8gYmVnaW5B
bmltYXRpb25VcGRhdGVUaW1lLCBpdCBzaG91bGQgaGF2ZQorICAgICAgICBhbiB1cGRhdGUgYmxv
Y2tlci4gVGhpcyBmaXhlcyB0aGUgYXNzZXJ0IHdlIHdlcmUgc2VlaW5nIGluIHRlc3RzLgorICAg
ICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmg6IEFkZCBkb3duY2Fz
dCBtYWNyb3MuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uQ2FuQmVB
Y2NlbGVyYXRlZCk6IElmIHdlIGhhdmUgYW4KKyAgICAgICAgYW5pbWF0aW9uIG9mIHRoaXMgc29y
dCwgd2UgY2FuJ3QgdXNlIGEgQ0FBbmltYXRpb24uCisKIDIwMTUtMDMtMTkgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNjcm9sbGJh
cnMgbG9vayBiYWQgd2l0aCBHVEsrIDMuMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNw
cAppbmRleCAxYzI5ODBjOGFmMTQ5YzRjYjY2MGQ2YTBkOGZmMmY4ZjJjYWI4NWUyLi4wYzBkODVk
YjRiNzAyZThkNTk4NzdiZmU5OTM3NTY5YjQzNzIzOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwCkBAIC01MzYsMTIgKzUzNiwxNCBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEFuaW1hdGlvblRyaWdnZXIoQW5pbWF0aW9uJiBhbmltYXRpb24sIENTU1ZhbHVlJiB2YWx1ZSkK
ICAgICAgICAgTGVuZ3RoIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxM
ZW5ndGg+KG1fcmVzb2x2ZXItPnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsK
IAogICAgICAgICBMZW5ndGggZW5kTGVuZ3RoOworICAgICAgICBib29sIGhhc0VuZCA9IGZhbHNl
OwogICAgICAgICBpZiAoc2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKSB7CiAgICAgICAgICAg
ICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogZW5kVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oc2Nyb2xsVHJpZ2dlci5lbmRWYWx1ZSgpKTsKICAgICAgICAgICAgIGVuZExlbmd0
aCA9IGVuZFZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4obV9yZXNvbHZlci0+c3RhdGUoKS5j
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOworICAgICAgICAgICAgaGFzRW5kID0gdHJ1ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIGFuaW1hdGlvbi5zZXRUcmlnZ2VyKFNjcm9sbEFuaW1hdGlv
blRyaWdnZXI6OmNyZWF0ZShzdGFydExlbmd0aCwgZW5kTGVuZ3RoKSk7CisgICAgICAgIGFuaW1h
dGlvbi5zZXRUcmlnZ2VyKFNjcm9sbEFuaW1hdGlvblRyaWdnZXI6OmNyZWF0ZShzdGFydExlbmd0
aCwgZW5kTGVuZ3RoLCBoYXNFbmQpKTsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggZWI0YzQyNDU0Nzk5
N2JmOWI3NTA0N2VlNTZlMmQ1MjZhYzVhYjljZS4uMDIwZDkzOWE0MmFmNDZmYTY3Yjg5NWI0MjI1
YTdiYzdmZGEwNjZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKQEAgLTQ2Myw4ICs0NjMsOCBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZp
cmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCgpCiAgICAgICAgIGlmIChtX2FuaW1hdGlvbi0+dHJp
Z2dlcigpICYmIG1fYW5pbWF0aW9uLT50cmlnZ2VyKCktPmlzU2Nyb2xsQW5pbWF0aW9uVHJpZ2dl
cigpKSB7CiAgICAgICAgICAgICBpZiAobV9vYmplY3QpIHsKICAgICAgICAgICAgICAgICBMYXlv
dXRTaXplIG9mZnNldCA9IG1fb2JqZWN0LT52aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xsT2Zmc2V0
Rm9yRml4ZWRQb3NpdGlvbigpOwotICAgICAgICAgICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdn
ZXIqIHNjcm9sbFRyaWdnZXIgPSBzdGF0aWNfY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyKj4o
bV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9mZnNl
dC5oZWlnaHQoKS50b0Zsb2F0KCkgPiBzY3JvbGxUcmlnZ2VyLT5zdGFydFZhbHVlKCkudmFsdWUo
KSkKKyAgICAgICAgICAgICAgICBTY3JvbGxBbmltYXRpb25UcmlnZ2VyJiBzY3JvbGxUcmlnZ2Vy
ID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcj4oKm1fYW5pbWF0aW9uLT50cmlnZ2Vy
KCkuZ2V0KCkpOworICAgICAgICAgICAgICAgIGlmIChvZmZzZXQuaGVpZ2h0KCkudG9GbG9hdCgp
ID4gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFsdWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJl
ZCwgMCk7CiAgICAgICAgICAgICB9CiAKQEAgLTQ3NSw5ICs0NzUsMTEgQEAgdm9pZCBBbmltYXRp
b25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQoKQogICAgICAgICAgICAgdXBkYXRl
U3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCwgMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBkb3VibGUgZWxhcHNlZER1cmF0aW9u
ID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZTsKICNpZiBFTkFCTEUo
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikKKyAgICAvLyBJZiB3ZSBhcmUgYSB0cmlnZ2VyZWQgYW5p
bWF0aW9uIHRoYXQgZGVwZW5kcyBvbiBzY3JvbGwsIG91ciBlbGFwc2VkCisgICAgLy8gdGltZSBp
cyBkZXRlcm1pbmVkIGJ5IHRoZSBzY3JvbGwgcG9zaXRpb24uCiAgICAgaWYgKG1fYW5pbWF0aW9u
LT50cmlnZ2VyKCkgJiYgbV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25U
cmlnZ2VyKCkpCiAgICAgICAgIGVsYXBzZWREdXJhdGlvbiA9IGdldEVsYXBzZWRUaW1lKCk7CiAj
ZW5kaWYKQEAgLTU0NCw4ICs1NDYsOCBAQCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4
dFNlcnZpY2UoKQogICAgICAgICBpZiAobV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxB
bmltYXRpb25UcmlnZ2VyKCkpIHsKICAgICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAg
ICAgICAgICAgIGZsb2F0IGN1cnJlbnRTY3JvbGxPZmZzZXQgPSBtX29iamVjdC0+dmlldygpLmZy
YW1lVmlldygpLnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKS5oZWlnaHQoKS50b0Zsb2F0
KCk7Ci0gICAgICAgICAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciogc2Nyb2xsVHJpZ2dl
ciA9IHN0YXRpY19jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXIqPihtX2FuaW1hdGlvbi0+dHJp
Z2dlcigpLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNjcm9sbE9mZnNldCA+
PSBzY3JvbGxUcmlnZ2VyLT5zdGFydFZhbHVlKCkudmFsdWUoKSAmJiAoIXNjcm9sbFRyaWdnZXIt
Pmhhc0VuZFZhbHVlKCkgfHwgY3VycmVudFNjcm9sbE9mZnNldCA8PSBzY3JvbGxUcmlnZ2VyLT5l
bmRWYWx1ZSgpLnZhbHVlKCkpKQorICAgICAgICAgICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdn
ZXImIHNjcm9sbFRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9h
bmltYXRpb24tPnRyaWdnZXIoKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRT
Y3JvbGxPZmZzZXQgPj0gc2Nyb2xsVHJpZ2dlci5zdGFydFZhbHVlKCkudmFsdWUoKSAmJiAoIXNj
cm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUoKSB8fCBjdXJyZW50U2Nyb2xsT2Zmc2V0IDw9IHNjcm9s
bFRyaWdnZXIuZW5kVmFsdWUoKS52YWx1ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC02ODIsNyArNjg0
LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmcmVlemVBdFRpbWUoZG91YmxlIHQpCiAgICAgICAg
IG9uQW5pbWF0aW9uU3RhcnRSZXNwb25zZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7
CiAgICAgfQogCi0gICAgQVNTRVJUKG1fc3RhcnRUaW1lKTsgICAgICAgIC8vIGlmIG1fc3RhcnRU
aW1lIGlzIHplcm8sIHdlIGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBw
YXVzZSB0aW1lLgorICAgIEFTU0VSVChtX3N0YXJ0VGltZSk7IC8vIElmIG1fc3RhcnRUaW1lIGlz
IHplcm8sIHdlIGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBwYXVzZSB0
aW1lLgogICAgIGlmICh0IDw9IG1fYW5pbWF0aW9uLT5kZWxheSgpKQogICAgICAgICBtX3BhdXNl
VGltZSA9IG1fc3RhcnRUaW1lOwogICAgIGVsc2UKQEAgLTcwMiw2ICs3MDQsMjIgQEAgZG91Ymxl
IEFuaW1hdGlvbkJhc2U6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIGNvbnN0CiAKIGRvdWJs
ZSBBbmltYXRpb25CYXNlOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKENT
U19BTklNQVRJT05TX0xFVkVMXzIpCisgICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkgJiYg
bV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKKyAg
ICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNj
cm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKKyAg
ICAgICAgaWYgKHNjcm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUoKSAmJiBtX29iamVjdCkgeworICAg
ICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gbV9vYmplY3QtPnZpZXcoKS5mcmFtZVZpZXcoKS5zY3Jv
bGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkuaGVpZ2h0KCkudG9GbG9hdCgpOworICAgICAgICAg
ICAgZmxvYXQgc3RhcnRWYWx1ZSA9IHNjcm9sbFRyaWdnZXIuc3RhcnRWYWx1ZSgpLnZhbHVlKCk7
CisgICAgICAgICAgICBpZiAob2Zmc2V0IDwgc3RhcnRWYWx1ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIGZsb2F0IGVuZFZhbHVlID0gc2Nyb2xsVHJpZ2dlci5lbmRW
YWx1ZSgpLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gZW5kVmFsdWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpOworICAgICAgICAgICAg
cmV0dXJuIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpICogKG9mZnNldCAtIHN0YXJ0VmFsdWUpIC8g
KGVuZFZhbHVlIC0gc3RhcnRWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAg
IGlmIChwYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIG1fcGF1c2VUaW1lIC0gbV9zdGFydFRpbWU7
CiAgICAgaWYgKG1fc3RhcnRUaW1lIDw9IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDY0NTJhODk1ZTUzMWYw
M2JkMDQ5ZmNlZGM1YTA5NDhmZWE5OWM5OWQuLmY1MzVkYTkxOTRiOTliZDBkZjM0MDQwNzY0ZWI4
ZDI5OWM0YzBjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMTEsNiArMTExLDcgQEAgYm9vbCBBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZTo6Y2xlYXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAKIGRv
dWJsZSBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFu
Z2VkIGNhbGxTZXRDaGFuZ2VkLyogPSBEb05vdENhbGxTZXRDaGFuZ2VkKi8pCiB7CisgICAgQW5p
bWF0aW9uUHJpdmF0ZVVwZGF0ZUJsb2NrIHVwZGF0ZUJsb2NrKCp0aGlzKTsKICAgICBkb3VibGUg
dGltZVRvTmV4dFNlcnZpY2UgPSAtMTsKICAgICBib29sIGNhbGxlZFNldENoYW5nZWQgPSBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvblRyaWdnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25UcmlnZ2VyLmgKaW5kZXggMWUxMzFhMjcwMzZlMjg1ZTYyNzcxOTliOGM5NzgxYTg1YTMxNDM3
MS4uZDQwY2Q0N2U2MzVmZmNjZjQ4MmU0Njg2ZTJmNDc1ODlmNWNjNWEzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0OSw2ICsxNTAsMTQgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoVG9DbGFzc05hbWUsIFRyaWdnZXJUZXN0KSBcCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvQ2xhc3NOYW1lKSBcCitzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QW5pbWF0aW9uVHJpZ2dlciYgdHJpZ2dlcikgeyBy
ZXR1cm4gdHJpZ2dlci5UcmlnZ2VyVGVzdCgpOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fVFJJR0dFUihBdXRvQW5p
bWF0aW9uVHJpZ2dlciwgaXNBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0FOSU1BVElPTl9UUklHR0VSKFNjcm9sbEFuaW1hdGlvblRyaWdnZXIsIGlzU2Nyb2xs
QW5pbWF0aW9uVHJpZ2dlcik7CisKICNlbmRpZgogCiAjZW5kaWYgLy8gQW5pbWF0aW9uVHJpZ2dl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAppbmRleCA2ZWI4ZDkyMTc1NDQyYTBiODRlNjNiYWQ5OGE0ZTRkMzQ1
NmRkMmRkLi41MjhlY2ZlMTI2Y2ZmNzUxYjE5OTc1Njc0NTEzOTM0NjE2YWYwMGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKQEAgLTg2NCw2ICs4NjQsMTUgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFuaW1h
dGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGkKICAg
ICBpZiAoYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbih2YWx1ZUxpc3QsIGFuaW0pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxf
MikKKyAgICAvLyBJZiB0aGVyZSBpcyBhIHRyaWdnZXIgdGhhdCBkZXBlbmRzIG9uIHRoZSBzY3Jv
bGwgcG9zaXRpb24sIHdlIGNhbm5vdCBhY2NlbGVyYXRlIHRoZSBhbmltYXRpb24uCisgICAgaWYg
KGFuaW0tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKKyAgICAgICAg
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFu
aW1hdGlvblRyaWdnZXI+KCphbmltLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgICAgICBpZiAoc2Ny
b2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OTk1MjA4M2VjZjc3
ZTkyMThkNmViNmQ5M2UyNDM2NzA1MGRkZWI4Li42OGQ2N2UzYjg2MWY1YjAyNDM5YjIzMTQwMThh
ZWVlZjlhYzMxZTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTUtMDMtMTkgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisgICAgICAgIENTUyBBbmltYXRpb25zIHdpdGggdHJp
Z2dlcnMgc2hvdWxkIG1hcCBzY3JvbGwgcG9zaXRpb24gdG8gZHVyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg3MAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjAyMjcyNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgdGhhdCBleGVyY2lzZXMgYW4gYW5pbWF0aW9u
IHRyaWdnZXIgb3ZlciBhIHNjcm9sbAorICAgICAgICByZWdpb24uIEFsc28sIHVuc2tpcCBhIHRl
c3QgdGhhdCB3YXMgZmFpbGluZyBkdWUgdG8gYSBidWcgZml4ZWQKKyAgICAgICAgaW4gdGhpcyBw
YXRjaC4KKworICAgICAgICAqIGFuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWJv
dW5kYXJpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL3RyaWdn
ZXItY29udGFpbmVyLXNjcm9sbC1ib3VuZGFyaWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorCisyMDE1LTAzLTE5ICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0Mjc5MAogCiAgICAgICAgIFRlbXBvcmFyaWx5IHNraXAgYW5pbWF0aW9ucy90cmlnZ2Vy
LWNvbnRhaW5lci1zY3JvbGwtc2ltcGxlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWJvdW5kYXJpZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtYm91bmRh
cmllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIxMDkyNDY0NDJjZmMyN2Y2ZGUzZjllMzFi
ODc2NDk4OGQ3YjkwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
dHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWJvdW5kYXJpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1RoaXMgZWxlbWVudCBzaG91bGQgYmVnaW4gYW5pbWF0aW5nIG9ubHkgd2hlbiB0
aGUgcGFnZSBzY3JvbGxzIHRvIDIwcHggZnJvbSB0aGUgdG9wLiBJdCB0aGVuIGFuaW1hdGVzIHNt
b290aGx5LCBtb3ZpbmcgMTAwcHggdG8gdGhlIGxlZnQgb3ZlciB0aGUgbmV4dCAxMDBweCBvZiBz
Y3JvbGxpbmcuIFJlbWVtYmVyIHRvIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIGJlZm9y
ZSByZWxvYWRpbmchCisKK1BBU1M6IFZhbHVlIGJlZm9yZSBhbmltYXRpb24gaXMgYXBwbGllZCBp
cyBhdXRvCitQQVNTOiBWYWx1ZSB3aXRoIGFuaW1hdGlvbiBidXQgbm8gc2Nyb2xsIHdhcyAwcHgK
K1BBU1M6IFZhbHVlIHdpdGggc2Nyb2xsIGFtb3VudCBvZiAxMCB3YXMgMTBweAorUEFTUzogVmFs
dWUgd2l0aCBzY3JvbGwgYW1vdW50IG9mIDIwIHdhcyAyMHB4CitQQVNTOiBWYWx1ZSB3aXRoIHNj
cm9sbCBhbW91bnQgb2YgMzAgd2FzIDMwcHgKK1BBU1M6IFZhbHVlIHdpdGggc2Nyb2xsIGFtb3Vu
dCBvZiA0MCB3YXMgNDBweAorUEFTUzogVmFsdWUgd2l0aCBzY3JvbGwgYW1vdW50IG9mIDUwIHdh
cyA1MHB4CitQQVNTOiBWYWx1ZSB3aXRoIHNjcm9sbCBhbW91bnQgb2YgNjAgd2FzIDYwcHgKK1BB
U1M6IFZhbHVlIHdpdGggc2Nyb2xsIGFtb3VudCBvZiA3MCB3YXMgNzBweAorUEFTUzogVmFsdWUg
d2l0aCBzY3JvbGwgYW1vdW50IG9mIDgwIHdhcyA4MHB4CitQQVNTOiBWYWx1ZSB3aXRoIHNjcm9s
bCBhbW91bnQgb2YgOTAgd2FzIDkwcHgKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtYm91bmRhcmllcy5odG1sIGIvTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtYm91bmRhcmllcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcxN2IwZTU2NDk0OTFjY2ZkNjQzOWM1ZWI2NTE2MzAwYjNlZmIzZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNj
cm9sbC1ib3VuZGFyaWVzLmh0bWwKQEAgLTAsMCArMSw5NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
c3R5bGU+Citib2R5IHsKKyAgICBoZWlnaHQ6IDIwMDBweDsKK30KKworI2JveCB7CisgICAgcG9z
aXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiAyMHB4OworICAgIGhlaWdodDogMjBweDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworfQorCisuYW5pbWF0aW5nIHsKKyAgICBhbmltYXRp
b24tbmFtZTogc2xpZGU7CisgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxbXM7CisgICAgYW5pbWF0
aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CisgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjog
bGluZWFyOworICAgIC13ZWJraXQtYW5pbWF0aW9uLXRyaWdnZXI6IGNvbnRhaW5lci1zY3JvbGwo
MjBweCwgMTIwcHgpOworfQorCitALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUgeworICBmcm9tIHsK
KyAgICAgIGxlZnQ6IDBweDsKKyAgfQorICB0byB7CisgICAgICBsZWZ0OiAxMDBweDsKKyAgfQor
fQorPC9zdHlsZT4KKzxzY3JpcHQ+CisKK3ZhciByZXN1bHRzOwordmFyIGJveDsKKwordmFyIHNj
cm9sbE1pbiA9IDIwOwordmFyIHNjcm9sbE1heCA9IDEyMDsKKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy50
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICByZXN1bHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKTsKKyAgICBib3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94Iik7CisgICAgdmFyIGxlZnRWYWx1ZSA9IHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGJveCkubGVmdDsKKyAgICBpZiAobGVmdFZhbHVlID09ICJh
dXRvIikKKyAgICAgICAgcmVzdWx0cy5pbm5lckhUTUwgPSAiUEFTUzogVmFsdWUgYmVmb3JlIGFu
aW1hdGlvbiBpcyBhcHBsaWVkIGlzIGF1dG88YnI+IjsKKyAgICBlbHNlCisgICAgICAgIHJlc3Vs
dHMuaW5uZXJIVE1MID0gIkZBSUw6IFZhbHVlIGJlZm9yZSBhbmltYXRpb24gaXMgYXBwbGllZCBz
aG91bGQgYmUgYXV0bywgd2FzICIgKyBsZWZ0VmFsdWUgKyAiPGJyPiI7CisgICAgYm94LmNsYXNz
TmFtZSA9ICJhbmltYXRpbmciOworICAgIHNldFRpbWVvdXQoY2hlY2tWYWx1ZVdpdGhvdXRTY3Jv
bGwsIDApOworfQorCitmdW5jdGlvbiBjaGVja1ZhbHVlV2l0aG91dFNjcm9sbCgpIHsKKyAgICB2
YXIgbGVmdFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoYm94KS5sZWZ0OworICAgIGlm
IChsZWZ0VmFsdWUgPT0gIjBweCIpCisgICAgICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9ICJQQVNT
OiBWYWx1ZSB3aXRoIGFuaW1hdGlvbiBidXQgbm8gc2Nyb2xsIHdhcyAwcHg8YnI+IjsKKyAgICBl
bHNlCisgICAgICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9ICJGQUlMOiBWYWx1ZSB3aXRoIGFuaW1h
dGlvbiBidXQgbm8gc2Nyb2xsIHNob3VsZCBiZSAwcHgsIHdhcyAiICsgbGVmdFZhbHVlICsgIjxi
cj4iOworCisgICAgd2luZG93LnNjcm9sbFRvKDAsIHNjcm9sbE1pbiArIDEwKTsKKyAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2hlY2tWYWx1ZVdpdGhTY3JvbGwoMTApOwor
ICAgIH0sIDApOworfQorCitmdW5jdGlvbiBjaGVja1ZhbHVlV2l0aFNjcm9sbChzY3JvbGxBbW91
bnQpIHsKKyAgICB2YXIgbGVmdFZhbHVlID0gTWF0aC5yb3VuZCh3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShib3gpLmdldFByb3BlcnR5Q1NTVmFsdWUoImxlZnQiKS5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpKTsKKworICAgIGlmIChsZWZ0VmFsdWUgPT0gc2Nyb2xs
QW1vdW50KQorICAgICAgICByZXN1bHRzLmlubmVySFRNTCArPSAiUEFTUzogVmFsdWUgd2l0aCBz
Y3JvbGwgYW1vdW50IG9mICIgKyBzY3JvbGxBbW91bnQgKyAiIHdhcyAiICsgc2Nyb2xsQW1vdW50
ICsgInB4PGJyPiI7CisgICAgZWxzZQorICAgICAgICByZXN1bHRzLmlubmVySFRNTCArPSAiRkFJ
TDogVmFsdWUgd2l0aCBzY3JvbGwgYW1vdW50IG9mICIgKyBzY3JvbGxBbW91bnQgKyAiIHNob3Vs
ZCBiZSAiICsgc2Nyb2xsQW1vdW50ICsgInB4LCB3YXMgIiArIGxlZnRWYWx1ZSArICJweDxicj4i
OworCisgICAgaWYgKHNjcm9sbE1pbiArIHNjcm9sbEFtb3VudCArIDEwIDwgc2Nyb2xsTWF4KSB7
CisgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBzY3JvbGxNaW4gKyBzY3JvbGxBbW91bnQgKyAx
MCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tW
YWx1ZVdpdGhTY3JvbGwoc2Nyb2xsQW1vdW50ICsgMTApOworICAgICAgICB9LCAwKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB3aW5k
b3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHJ1blRlc3QsIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzxwPlRoaXMg
ZWxlbWVudCBzaG91bGQgYmVnaW4gYW5pbWF0aW5nIG9ubHkgd2hlbiB0aGUgcGFnZSBzY3JvbGxz
IHRvIDIwcHggZnJvbQordGhlIHRvcC4gSXQgdGhlbiBhbmltYXRlcyBzbW9vdGhseSwgbW92aW5n
IDEwMHB4IHRvIHRoZSBsZWZ0IG92ZXIgdGhlIG5leHQKKzEwMHB4IG9mIHNjcm9sbGluZy4gUmVt
ZW1iZXIgdG8gc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UgYmVmb3JlIHJlbG9hZGluZyE8
L3A+Cis8ZGl2IGlkPSJib3giPjwvZGl2PgorCis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmNkN2FlYWJmN2Y4
YjE1MjhkY2ZhNmVjZGI5NTMxZWRhY2QwYjg5Ni4uYzg5YTZkM2JlZGExMTEyYjFhZWNkN2FmNzQ5
YWFlMjk0YjE2NzU4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTY2LDYgKzY2LDcgQEAgY3NzMy9zY3JvbGwtc25hcCBbIFNraXAgXQogYW5pbWF0aW9u
cy90cmlnZ2VyLWNvbXB1dGVkLXN0eWxlLmh0bWwgWyBTa2lwIF0KIGFuaW1hdGlvbnMvdHJpZ2dl
ci1wYXJzaW5nLmh0bWwgWyBTa2lwIF0KIGFuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Ny
b2xsLXNpbXBsZS5odG1sIFsgU2tpcCBdCithbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNj
cm9sbC1ib3VuZGFyaWVzLmh0bWwgWyBTa2lwIF0KIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRlc3RzIHdoaWNoIGFsc28gZmFpbCBpbiBvdGhlciBwbGF0
Zm9ybXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGE1
NmRmMjg3ZTI0NTZlNjgzMmZlY2FkMDBhNThjMDFkNjdjMDMwMS4uNjY0MTMxOTcwZWZiOWNkYzM1
ODFjNjEwOTM1NmFiZTgyMDQzMDZjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2NSw2ICs0NjUsNyBAQCBjc3MzL3Njcm9sbC1zbmFwCiBhbmltYXRp
b25zL3RyaWdnZXItY29tcHV0ZWQtc3R5bGUuaHRtbCBbIFNraXAgXQogYW5pbWF0aW9ucy90cmln
Z2VyLXBhcnNpbmcuaHRtbCBbIFNraXAgXQogYW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1z
Y3JvbGwtc2ltcGxlLmh0bWwgWyBTa2lwIF0KK2FuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXIt
c2Nyb2xsLWJvdW5kYXJpZXMuaHRtbCBbIFNraXAgXQogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBp
cyBkaXNhYmxlZC4KIEJ1ZyhHVEspIGZhc3QvZG9tL3NoYWRvdyBbIFNraXAgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiNzk5ODQ4MTFkNTM3NTFjODVl
MWY1OWQ3ZTFlMzQ5NjliZGU2NjM4Li40Njg3ZWIzYThiZGM2NTE1YTU0ZjczZmNjMDg1ZWIyZTli
NDA1MDBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MjYsOSArMjYsNiBAQCB3ZWJraXQub3JnL2IvMTI2MDY2IGFjY2Vzc2liaWxpdHkvbG9hZGluZy1p
ZnJhbWUtdXBkYXRlcy1heHRyZWUuaHRtbCBbIEZhaWx1cmUgQwogCiB3ZWJraXQub3JnL2IvMTE2
NjM2IGFjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCiAK
LSMgU2tpcCB0aGlzIHRlc3Qgd2hpbGUgaXQgaXMgY3Jhc2hpbmcKLXdlYmtpdC5vcmcvYi8xNDI3
OTAgYW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtc2ltcGxlLmh0bWwgWyBTa2lw
IF0KLQogIyBBY2Nlc3NpYmlsaXR5IHRlc3RzIHdpdGggbWlzc2luZyBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlciBmdW5jdGlvbmFsaXR5Lgogd2Via2l0Lm9yZy9iLzExNjYzNyBhY2Nlc3NpYmlsaXR5
L3NlbGVjdGlvbi1zdGF0ZXMuaHRtbCBbIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI5NDU5MGMzNDRhZWQ3ZDIwODljZTI1ODc4YTcw
ZmJkZDhlZmYwN2QuLjkyYWRjMzRmYWViMTU3ZjQ4MGE1ZjM3MjIwNjI4Y2M1ZGQzNjU3MTAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC02MDAsNiArNjAw
LDcgQEAgd2Via2l0Lm9yZy9iLzE0MjczMSBmYXN0L2ltYWdlcy9hbmltYXRlZC1wbmcuaHRtbCBb
IFNraXAgXQogYW5pbWF0aW9ucy90cmlnZ2VyLWNvbXB1dGVkLXN0eWxlLmh0bWwgWyBTa2lwIF0K
IGFuaW1hdGlvbnMvdHJpZ2dlci1wYXJzaW5nLmh0bWwgWyBTa2lwIF0KIGFuaW1hdGlvbnMvdHJp
Z2dlci1jb250YWluZXItc2Nyb2xsLXNpbXBsZS5odG1sIFsgU2tpcCBdCithbmltYXRpb25zL3Ry
aWdnZXItY29udGFpbmVyLXNjcm9sbC1ib3VuZGFyaWVzLmh0bWwgWyBTa2lwIF0KIAogIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICMjIyMjIyMjIyMjICAgIEVuZCBNaXNzaW5nIEZ1bmN0aW9uYWxp
dHkgUHJldmVudHMgVGVzdGluZyAgICAgICAgICMjIyMjIyMjIyMjIyMjCg==
</data>
<flag name="review"
          id="273903"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249076</attachid>
            <date>2015-03-19 18:52:07 -0700</date>
            <delta_ts>2015-03-19 18:52:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142870-20150319185135.patch</filename>
            <type>text/plain</type>
            <size>26131</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk1MjNmMDQyNzE5ZmFm
Njk0OTJhMDg2N2ZkZDc5NGE3ZGU1NTkxZC4uMGRmN2NkNzRkZDAxNzAwZmQ4MDExZDQxMDE4YTZm
ZTdiNGI5ZGIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE1LTAzLTE5ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgQW5pbWF0aW9ucyB3aXRo
IHRyaWdnZXJzIHNob3VsZCBtYXAgc2Nyb2xsIHBvc2l0aW9uIHRvIGR1cmF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4NzAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzIwMjI3MjQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBFeHBvc2UgYSBwcm90b3R5cGUgaW1wbGVtZW50YXRpb24gb2Ygd2hh
dCB3aWxsIGV2ZW50dWFsbHkgYmUgY2FsbGVkCisgICAgICAgIGFuaW1hdGlvbi10aW1lYmFzZSwg
bWFwcGluZyB0aGUgc2Nyb2xsIGxvY2F0aW9uIHRvIHRoZSBkdXJhdGlvbiBvZiBhbgorICAgICAg
ICBhbmltYXRpb24uIFRoaXMgb25seSBhcHBsaWVzIGlmIHRoZSBhbmltYXRpb24gaGFzIGEgc3Rh
cnQgYW5kIGVuZAorICAgICAgICB0cmlnZ2VyLgorCisgICAgICAgIFRlc3Q6IGFuaW1hdGlvbnMv
dHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWJvdW5kYXJpZXMuaHRtbAorCisgICAgICAgICogY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVBbmltYXRpb25UcmlnZ2VyVmFsdWUpOiBDaGFuZ2UgdG8gZG93bmNhc3QuCisKKyAgICAgICAg
KiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25UcmlnZ2VyKTogRml4IGEgYnVnIHdoZXJlIEkgd2Fzbid0CisgICAgICAg
IHRlbGxpbmcgdGhlIFNjcm9sbEFuaW1hdGlvblRyaWdnZXIgb2JqZWN0IHdoZXRoZXIgb3Igbm90
IGl0IGhhZAorICAgICAgICBhbiBlbmQgdmFsdWUuIFRoaXMgd2Fzbid0IHZpc2libGUgYmVmb3Jl
IGJlY2F1c2Ugd2Ugd2VyZSBub3QgdXNpbmcKKyAgICAgICAgdGhlIGVuZCB2YWx1ZS4KKworICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uQmFzZTo6ZmlyZUFuaW1hdGlvbkV2ZW50c0lmTmVlZGVkKTogQWRkIGEgY29t
bWVudCBhbmQKKyAgICAgICAgY2hhbmdlIHRvIHVzaW5nIGEgZG93bmNhc3QuCisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0U2VydmljZSk6IENoYW5nZSB0byBkb3du
Y2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0VGltZSk6IFdo
aXRlc3BhY2UgY2xlYW51cC4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmdldEVs
YXBzZWRUaW1lKTogQ2FsY3VsYXRlIHRoZSBlbGFwc2VkVGltZSBiYXNlZAorICAgICAgICBvbiB0
aGUgc2Nyb2xsIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBhbmQgZW5kIHRyaWdnZXIg
c3BvdHMuCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVB
bmltYXRpb25zKTogU2luY2UgdGhpcworICAgICAgICBjYW4gcG90ZW50aWFsbHkgY2FsbCBpbnRv
IGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSwgaXQgc2hvdWxkIGhhdmUKKyAgICAgICAgYW4gdXBk
YXRlIGJsb2NrZXIuIFRoaXMgZml4ZXMgdGhlIGFzc2VydCB3ZSB3ZXJlIHNlZWluZyBpbiB0ZXN0
cy4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzY3JvbGxX
YXNVcGRhdGVkKTogS2VlcCB0cmFjayBvZiB0aGUgc2Nyb2xsCisgICAgICAgIHBvc2l0aW9uIHNv
IHdlIGRvbid0IG5lZWQgdG8gYXNrIGZvciBpdCBhbGwgdGhlIHRpbWUuCisgICAgICAgICogcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzY3JvbGxQb3NpdGlvbik6IE5ldyBhY2Nl
c3Nvci4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmg6
IEFkZCBkb3duY2FzdCBtYWNyb3MuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25U
cmlnZ2VyOjpjcmVhdGUpOiBDYWxjdWxhdGUgaGFzRW5kVmFsdWUgZnJvbSB0aGUgcGFzc2VkCisg
ICAgICAgIHBhcmFtZXRlcnMgcmF0aGVyIHRoYW4gYSBzZXBhcmF0ZSB2YWx1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblRyaWdnZXI6Omhhc0VuZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblRyaWdnZXI6OlNjcm9sbEFuaW1hdGlvblRyaWdnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcjo6c2V0SGFzRW5kVmFs
dWUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9u
Q2FuQmVBY2NlbGVyYXRlZCk6IElmIHdlIGhhdmUgYW4KKyAgICAgICAgYW5pbWF0aW9uIG9mIHRo
aXMgc29ydCwgd2UgY2FuJ3QgdXNlIGEgQ0FBbmltYXRpb24uCisKIDIwMTUtMDMtMTkgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNj
cm9sbGJhcnMgbG9vayBiYWQgd2l0aCBHVEsrIDMuMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzFmYTAwYjBiYTgwOWVm
ZWMxNTAyNTcwMGJlMDhhY2IzZjgyMmJjZC4uNDA4YjYwYTJhOTQ4YmVhNjkyMGFjZGM0ZWU3NGE4
MDVmYTc3YmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEyMzQsMTIgKzEyMzQsMTEgQEAgc3RhdGljIFJlZjxDU1NW
YWx1ZT4gY3JlYXRlQW5pbWF0aW9uVHJpZ2dlclZhbHVlKGNvbnN0IEFuaW1hdGlvblRyaWdnZXIq
IHRyaWdnZXIKIHsKICAgICBzd2l0Y2ggKHRyaWdnZXItPnR5cGUoKSkgewogICAgIGNhc2UgQW5p
bWF0aW9uVHJpZ2dlcjo6QW5pbWF0aW9uVHJpZ2dlclR5cGU6OlNjcm9sbEFuaW1hdGlvblRyaWdn
ZXJUeXBlOiB7Ci0gICAgICAgIGNvbnN0IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIqIHNjcm9sbEFu
aW1hdGlvblRyaWdnZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
Kj4odHJpZ2dlcik7Ci0gICAgICAgIGlmIChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLT5lbmRWYWx1
ZSgpLmlzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvblRyaWdnZXJTY3Jv
bGxWYWx1ZTo6Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5p
bWF0aW9uVHJpZ2dlci0+c3RhcnRWYWx1ZSgpLCBzdHlsZSkpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLT5zdGFy
dFZhbHVlKCksIHN0eWxlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHNjcm9s
bEFuaW1hdGlvblRyaWdnZXItPmVuZFZhbHVlKCksIHN0eWxlKSk7CisgICAgICAgIGF1dG8mIHNj
cm9sbEFuaW1hdGlvblRyaWdnZXIgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigq
dHJpZ2dlcik7CisgICAgICAgIGlmIChzY3JvbGxBbmltYXRpb25UcmlnZ2VyLmVuZFZhbHVlKCku
aXNBdXRvKCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZh
bHVlOjpjcmVhdGUoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzY3JvbGxBbmltYXRp
b25UcmlnZ2VyLnN0YXJ0VmFsdWUoKSwgc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIENTU0FuaW1h
dGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5zdGFydFZhbHVlKCksIHN0eWxlKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21BZGp1
c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc2Nyb2xsQW5pbWF0aW9uVHJpZ2dlci5lbmRWYWx1ZSgp
LCBzdHlsZSkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlQodHJpZ2dlci0+
dHlwZSgpID09IEFuaW1hdGlvblRyaWdnZXI6OkFuaW1hdGlvblRyaWdnZXJUeXBlOjpBdXRvQW5p
bWF0aW9uVHJpZ2dlclR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcAppbmRleCBlYjRjNDI0NTQ3OTk3YmY5Yjc1MDQ3ZWU1NmUyZDUyNmFj
NWFiOWNlLi44OGQ2MmE1N2RmNGJjYTcyZDI3Yjc0MjMzYTEzMmY5NjM4ZjQyNTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNDYy
LDkgKzQ2Miw5IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZmlyZUFuaW1hdGlvbkV2ZW50c0lmTmVl
ZGVkKCkKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICAgICAgaWYgKG1f
YW5pbWF0aW9uLT50cmlnZ2VyKCkgJiYgbV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxB
bmltYXRpb25UcmlnZ2VyKCkpIHsKICAgICAgICAgICAgIGlmIChtX29iamVjdCkgewotICAgICAg
ICAgICAgICAgIExheW91dFNpemUgb2Zmc2V0ID0gbV9vYmplY3QtPnZpZXcoKS5mcmFtZVZpZXco
KS5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgU2Nyb2xs
QW5pbWF0aW9uVHJpZ2dlciogc2Nyb2xsVHJpZ2dlciA9IHN0YXRpY19jYXN0PFNjcm9sbEFuaW1h
dGlvblRyaWdnZXIqPihtX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKLSAgICAgICAgICAg
ICAgICBpZiAob2Zmc2V0LmhlaWdodCgpLnRvRmxvYXQoKSA+IHNjcm9sbFRyaWdnZXItPnN0YXJ0
VmFsdWUoKS52YWx1ZSgpKQorICAgICAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IG1fY29tcG9z
aXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCktPnNjcm9sbFBvc2l0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRv
d25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCptX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gc2Nyb2xsVHJpZ2dlci5zdGFydFZh
bHVlKCkudmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFu
aW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCwgMCk7CiAgICAgICAgICAgICB9CiAK
QEAgLTQ3NSw5ICs0NzUsMTEgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZl
bnRzSWZOZWVkZWQoKQogICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCisKICAgICBkb3VibGUgZWxhcHNlZER1cmF0aW9uID0gYmVnaW5BbmltYXRpb25VcGRhdGVU
aW1lKCkgLSBtX3N0YXJ0VGltZTsKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikK
KyAgICAvLyBJZiB3ZSBhcmUgYSB0cmlnZ2VyZWQgYW5pbWF0aW9uIHRoYXQgZGVwZW5kcyBvbiBz
Y3JvbGwsIG91ciBlbGFwc2VkCisgICAgLy8gdGltZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzY3Jv
bGwgcG9zaXRpb24uCiAgICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkgJiYgbV9hbmltYXRp
b24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpCiAgICAgICAgIGVsYXBz
ZWREdXJhdGlvbiA9IGdldEVsYXBzZWRUaW1lKCk7CiAjZW5kaWYKQEAgLTU0NCw4ICs1NDYsOCBA
QCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKQogICAgICAgICBpZiAo
bV9hbmltYXRpb24tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKICAg
ICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJlbnRT
Y3JvbGxPZmZzZXQgPSBtX29iamVjdC0+dmlldygpLmZyYW1lVmlldygpLnNjcm9sbE9mZnNldEZv
ckZpeGVkUG9zaXRpb24oKS5oZWlnaHQoKS50b0Zsb2F0KCk7Ci0gICAgICAgICAgICAgICAgU2Ny
b2xsQW5pbWF0aW9uVHJpZ2dlciogc2Nyb2xsVHJpZ2dlciA9IHN0YXRpY19jYXN0PFNjcm9sbEFu
aW1hdGlvblRyaWdnZXIqPihtX2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoY3VycmVudFNjcm9sbE9mZnNldCA+PSBzY3JvbGxUcmlnZ2VyLT5zdGFydFZh
bHVlKCkudmFsdWUoKSAmJiAoIXNjcm9sbFRyaWdnZXItPmhhc0VuZFZhbHVlKCkgfHwgY3VycmVu
dFNjcm9sbE9mZnNldCA8PSBzY3JvbGxUcmlnZ2VyLT5lbmRWYWx1ZSgpLnZhbHVlKCkpKQorICAg
ICAgICAgICAgICAgIFNjcm9sbEFuaW1hdGlvblRyaWdnZXImIHNjcm9sbFRyaWdnZXIgPSBkb3du
Y2FzdDxTY3JvbGxBbmltYXRpb25UcmlnZ2VyPigqbV9hbmltYXRpb24tPnRyaWdnZXIoKS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTY3JvbGxPZmZzZXQgPj0gc2Nyb2xsVHJp
Z2dlci5zdGFydFZhbHVlKCkudmFsdWUoKSAmJiAoIXNjcm9sbFRyaWdnZXIuaGFzRW5kVmFsdWUo
KSB8fCBjdXJyZW50U2Nyb2xsT2Zmc2V0IDw9IHNjcm9sbFRyaWdnZXIuZW5kVmFsdWUoKS52YWx1
ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gLTE7CkBAIC02ODIsNyArNjg0LDcgQEAgdm9pZCBBbmltYXRpb25CYXNl
OjpmcmVlemVBdFRpbWUoZG91YmxlIHQpCiAgICAgICAgIG9uQW5pbWF0aW9uU3RhcnRSZXNwb25z
ZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1f
c3RhcnRUaW1lKTsgICAgICAgIC8vIGlmIG1fc3RhcnRUaW1lIGlzIHplcm8sIHdlIGhhdmVuJ3Qg
c3RhcnRlZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBwYXVzZSB0aW1lLgorICAgIEFTU0VSVCht
X3N0YXJ0VGltZSk7IC8vIElmIG1fc3RhcnRUaW1lIGlzIHplcm8sIHdlIGhhdmVuJ3Qgc3RhcnRl
ZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBwYXVzZSB0aW1lLgogICAgIGlmICh0IDw9IG1fYW5p
bWF0aW9uLT5kZWxheSgpKQogICAgICAgICBtX3BhdXNlVGltZSA9IG1fc3RhcnRUaW1lOwogICAg
IGVsc2UKQEAgLTcwMiw2ICs3MDQsMjIgQEAgZG91YmxlIEFuaW1hdGlvbkJhc2U6OmJlZ2luQW5p
bWF0aW9uVXBkYXRlVGltZSgpIGNvbnN0CiAKIGRvdWJsZSBBbmltYXRpb25CYXNlOjpnZXRFbGFw
c2VkVGltZSgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCisg
ICAgaWYgKG1fYW5pbWF0aW9uLT50cmlnZ2VyKCkgJiYgbV9hbmltYXRpb24tPnRyaWdnZXIoKS0+
aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKKyAgICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJp
Z2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+KCpt
X2FuaW1hdGlvbi0+dHJpZ2dlcigpLmdldCgpKTsKKyAgICAgICAgaWYgKHNjcm9sbFRyaWdnZXIu
aGFzRW5kVmFsdWUoKSAmJiBtX29iamVjdCkgeworICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0g
bV9jb21wb3NpdGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+c2Nyb2xsUG9zaXRp
b24oKTsKKyAgICAgICAgICAgIGZsb2F0IHN0YXJ0VmFsdWUgPSBzY3JvbGxUcmlnZ2VyLnN0YXJ0
VmFsdWUoKS52YWx1ZSgpOworICAgICAgICAgICAgaWYgKG9mZnNldCA8IHN0YXJ0VmFsdWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBmbG9hdCBlbmRWYWx1ZSA9IHNj
cm9sbFRyaWdnZXIuZW5kVmFsdWUoKS52YWx1ZSgpOworICAgICAgICAgICAgaWYgKG9mZnNldCA+
IGVuZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX2FuaW1hdGlvbi0+ZHVyYXRpb24o
KTsKKyAgICAgICAgICAgIHJldHVybiBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSAqIChvZmZzZXQg
LSBzdGFydFZhbHVlKSAvIChlbmRWYWx1ZSAtIHN0YXJ0VmFsdWUpOworICAgICAgICB9CisgICAg
fQorI2VuZGlmCisKICAgICBpZiAocGF1c2VkKCkpCiAgICAgICAgIHJldHVybiBtX3BhdXNlVGlt
ZSAtIG1fc3RhcnRUaW1lOwogICAgIGlmIChtX3N0YXJ0VGltZSA8PSAwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRl
eCA2NDUyYTg5NWU1MzFmMDNiZDA0OWZjZWRjNWEwOTQ4ZmVhOTljOTlkLi5jNTczNjg2MjEyOGI1
ZWM1MjU4YTIxNDgwOGJmMzM0ODA1ZjQxMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTExLDYgKzExMSw3
IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmNsZWFyKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyKQogCiBkb3VibGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFu
aW1hdGlvbnMoU2V0Q2hhbmdlZCBjYWxsU2V0Q2hhbmdlZC8qID0gRG9Ob3RDYWxsU2V0Q2hhbmdl
ZCovKQogeworICAgIEFuaW1hdGlvblByaXZhdGVVcGRhdGVCbG9jayB1cGRhdGVCbG9jaygqdGhp
cyk7CiAgICAgZG91YmxlIHRpbWVUb05leHRTZXJ2aWNlID0gLTE7CiAgICAgYm9vbCBjYWxsZWRT
ZXRDaGFuZ2VkID0gZmFsc2U7CiAKQEAgLTUxOCw2ICs1MTksOCBAQCB2b2lkIEFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlOjphbmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UqIGFu
aW1hdGlvbgogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogdm9pZCBBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZTo6c2Nyb2xsV2FzVXBkYXRlZCgpCiB7CisgICAgbV9zY3JvbGxQ
b3NpdGlvbiA9IG1fZnJhbWUudmlldygpLT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCku
aGVpZ2h0KCkudG9GbG9hdCgpOworCiAgICAgdXBkYXRlQW5pbWF0aW9ucyhDYWxsU2V0Q2hhbmdl
ZCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IDBlZTMxZDdlZGM1YTE2NDVl
NTVhN2IwODJkMTVlYmQ3M2FkNGJlNDIuLjcwNmRhMTZlZGI3OGE4MmVjOWViYTI1ODE2NWU3Yjhh
MWZjZjkwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaApAQCAtMTE5LDYgKzExOSw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgIHZvaWQgc2Nyb2xs
V2FzVXBkYXRlZCgpOworICAgIGZsb2F0IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxQb3NpdGlvbjsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNTksNiArMTYwLDEw
IEBAIHByaXZhdGU6CiAgICAgLy8gYmVoYXZpb3Igb2YgYWxsb3dpbmcgbmV3IHRyYW5zaXRpb25z
IGFuZCBhbmltYXRpb25zIHRvCiAgICAgLy8gcnVuIGV2ZW4gd2hlbiB0aGlzIG9iamVjdCBpcyBz
dXNwZW5kZWQuCiAgICAgYm9vbCBtX2FsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZDsK
KworI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQorICAgIGZsb2F0IG1fc2Nyb2xs
UG9zaXRpb24gPSAwOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIu
aAppbmRleCAxZTEzMWEyNzAzNmUyODVlNjI3NzE5OWI4Yzk3ODFhODVhMzE0MzcxLi4zMDZjMDVj
ZjBjYzM1MWNiNzVjOTM3N2Y2MzBkMzM5YzU4YjNlNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODksOSArOTAsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBT
Y3JvbGxBbmltYXRpb25UcmlnZ2VyIDogcHVibGljIEFuaW1hdGlvblRyaWdnZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+IGNyZWF0ZShM
ZW5ndGggc3RhcnRWYWx1ZSwgTGVuZ3RoIGVuZFZhbHVlICwgYm9vbCBoYXNFbmRWYWx1ZSA9IGZh
bHNlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbEFuaW1hdGlvblRyaWdnZXI+IGNyZWF0
ZShMZW5ndGggc3RhcnRWYWx1ZSwgTGVuZ3RoIGVuZFZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKHN0YXJ0VmFsdWUsIGVuZFZh
bHVlLCBoYXNFbmRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbEFu
aW1hdGlvblRyaWdnZXIoc3RhcnRWYWx1ZSwgZW5kVmFsdWUpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5TY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkgeyB9CkBAIC0xMjEsMjUgKzEyMiwyMCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZW5kVmFsdWUgPSB2YWx1ZTsKICAgICB9CiAKLSAgICBib29sIGhh
c0VuZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmRWYWx1ZTsgfQotCi0gICAgdm9pZCBz
ZXRIYXNFbmRWYWx1ZShib29sIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV9oYXNFbmRWYWx1ZSA9
IHZhbHVlOwotICAgIH0KKyAgICBib29sIGhhc0VuZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gIW1f
ZW5kVmFsdWUuaXNBdXRvKCkgJiYgbV9lbmRWYWx1ZS52YWx1ZSgpID4gbV9zdGFydFZhbHVlLnZh
bHVlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTY3JvbGxBbmltYXRpb25UcmlnZ2Vy
KExlbmd0aCBzdGFydFZhbHVlLCBMZW5ndGggZW5kVmFsdWUsIGJvb2wgaGFzRW5kVmFsdWUpCisg
ICAgZXhwbGljaXQgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcihMZW5ndGggc3RhcnRWYWx1ZSwgTGVu
Z3RoIGVuZFZhbHVlKQogICAgICAgICA6IEFuaW1hdGlvblRyaWdnZXIoQW5pbWF0aW9uVHJpZ2dl
clR5cGU6OlNjcm9sbEFuaW1hdGlvblRyaWdnZXJUeXBlKQogICAgICAgICAsIG1fc3RhcnRWYWx1
ZShzdGFydFZhbHVlKQotICAgICAgICAsIG1fZW5kVmFsdWUoZW5kVmFsdWUpCi0gICAgICAgICwg
bV9oYXNFbmRWYWx1ZShoYXNFbmRWYWx1ZSkKICAgICB7CisgICAgICAgIGlmICghZW5kVmFsdWUu
aXNBdXRvKCkgJiYgZW5kVmFsdWUudmFsdWUoKSA+IHN0YXJ0VmFsdWUudmFsdWUoKSkKKyAgICAg
ICAgICAgIG1fZW5kVmFsdWUgPSBlbmRWYWx1ZTsKICAgICB9CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8QW5pbWF0aW9uVHJpZ2dlcj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRW
YWx1ZSwgbV9lbmRWYWx1ZSwgbV9oYXNFbmRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNjcm9sbEFuaW1hdGlvblRyaWdnZXIobV9zdGFydFZhbHVlLCBtX2VuZFZhbHVlKSk7
CiAgICAgfQogCiAgICAgTGVuZ3RoIG1fc3RhcnRWYWx1ZTsKQEAgLTE0OSw2ICsxNDUsMTQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQU5JTUFUSU9OX1RSSUdHRVIoVG9DbGFzc05hbWUsIFRyaWdnZXJUZXN0KSBc
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvQ2xhc3NOYW1lKSBcCitz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QW5pbWF0aW9uVHJpZ2dlciYgdHJpZ2dl
cikgeyByZXR1cm4gdHJpZ2dlci5UcmlnZ2VyVGVzdCgpOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fVFJJR0dFUihB
dXRvQW5pbWF0aW9uVHJpZ2dlciwgaXNBdXRvQW5pbWF0aW9uVHJpZ2dlcik7CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0FOSU1BVElPTl9UUklHR0VSKFNjcm9sbEFuaW1hdGlvblRyaWdnZXIsIGlz
U2Nyb2xsQW5pbWF0aW9uVHJpZ2dlcik7CisKICNlbmRpZgogCiAjZW5kaWYgLy8gQW5pbWF0aW9u
VHJpZ2dlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA2ZWI4ZDkyMTc1NDQyYTBiODRlNjNiYWQ5OGE0
ZTRkMzQ1NmRkMmRkLi41MjhlY2ZlMTI2Y2ZmNzUxYjE5OTc1Njc0NTEzOTM0NjE2YWYwMGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKQEAgLTg2NCw2ICs4NjQsMTUgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OmFuaW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGkKICAgICBpZiAoYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbih2YWx1ZUxpc3QsIGFu
aW0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNf
TEVWRUxfMikKKyAgICAvLyBJZiB0aGVyZSBpcyBhIHRyaWdnZXIgdGhhdCBkZXBlbmRzIG9uIHRo
ZSBzY3JvbGwgcG9zaXRpb24sIHdlIGNhbm5vdCBhY2NlbGVyYXRlIHRoZSBhbmltYXRpb24uCisg
ICAgaWYgKGFuaW0tPnRyaWdnZXIoKS0+aXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpIHsKKyAg
ICAgICAgU2Nyb2xsQW5pbWF0aW9uVHJpZ2dlciYgc2Nyb2xsVHJpZ2dlciA9IGRvd25jYXN0PFNj
cm9sbEFuaW1hdGlvblRyaWdnZXI+KCphbmltLT50cmlnZ2VyKCkuZ2V0KCkpOworICAgICAgICBp
ZiAoc2Nyb2xsVHJpZ2dlci5oYXNFbmRWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OTk1MjA4
M2VjZjc3ZTkyMThkNmViNmQ5M2UyNDM2NzA1MGRkZWI4Li41MjgwNmNmMTQ2MTI3YjFiMGJhZmI2
MzE0NzNmNTUxZjgxZDgwOWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTUtMDMtMTkgIERl
YW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisgICAgICAgIENTUyBBbmltYXRpb25zIHdp
dGggdHJpZ2dlcnMgc2hvdWxkIG1hcCBzY3JvbGwgcG9zaXRpb24gdG8gZHVyYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg3MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjAyMjcyNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRoYXQgZXhlcmNpc2VzIGFuIGFuaW1h
dGlvbiB0cmlnZ2VyIG92ZXIgYSBzY3JvbGwKKyAgICAgICAgcmVnaW9uLCBhbmQgYSB0ZXN0IG9m
IHRoZSBib3VuZGFyeSBjb25kaXRpb24uIEFsc28sIHVuc2tpcCBhIHRlc3QgdGhhdAorICAgICAg
ICB3YXMgZmFpbGluZyBkdWUgdG8gYSBidWcgZml4ZWQgaW4gdGhpcyBwYXRjaC4KKworICAgICAg
ICAqIGFuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWJvdW5kYXJpZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNj
cm9sbC1ib3VuZGFyaWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvdHJpZ2dl
ci1jb250YWluZXItc2Nyb2xsLWVtcHR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtZW1wdHkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIw
MTUtMDMtMTkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCiAgICAgICAgIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTQyNzkwCiAKICAgICAgICAgVGVtcG9yYXJpbHkgc2tpcCBhbmltYXRp
b25zL3RyaWdnZXItY29udGFpbmVyLXNjcm9sbC1zaW1wbGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtYm91bmRhcmllcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNj
cm9sbC1ib3VuZGFyaWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjEwOTI0NjQ0MmNmYzI3
ZjZkZTNmOWUzMWI4NzY0OTg4ZDdiOTAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtYm91bmRhcmllcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGhpcyBlbGVtZW50IHNob3VsZCBiZWdpbiBhbmltYXRpbmcg
b25seSB3aGVuIHRoZSBwYWdlIHNjcm9sbHMgdG8gMjBweCBmcm9tIHRoZSB0b3AuIEl0IHRoZW4g
YW5pbWF0ZXMgc21vb3RobHksIG1vdmluZyAxMDBweCB0byB0aGUgbGVmdCBvdmVyIHRoZSBuZXh0
IDEwMHB4IG9mIHNjcm9sbGluZy4gUmVtZW1iZXIgdG8gc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhl
IHBhZ2UgYmVmb3JlIHJlbG9hZGluZyEKKworUEFTUzogVmFsdWUgYmVmb3JlIGFuaW1hdGlvbiBp
cyBhcHBsaWVkIGlzIGF1dG8KK1BBU1M6IFZhbHVlIHdpdGggYW5pbWF0aW9uIGJ1dCBubyBzY3Jv
bGwgd2FzIDBweAorUEFTUzogVmFsdWUgd2l0aCBzY3JvbGwgYW1vdW50IG9mIDEwIHdhcyAxMHB4
CitQQVNTOiBWYWx1ZSB3aXRoIHNjcm9sbCBhbW91bnQgb2YgMjAgd2FzIDIwcHgKK1BBU1M6IFZh
bHVlIHdpdGggc2Nyb2xsIGFtb3VudCBvZiAzMCB3YXMgMzBweAorUEFTUzogVmFsdWUgd2l0aCBz
Y3JvbGwgYW1vdW50IG9mIDQwIHdhcyA0MHB4CitQQVNTOiBWYWx1ZSB3aXRoIHNjcm9sbCBhbW91
bnQgb2YgNTAgd2FzIDUwcHgKK1BBU1M6IFZhbHVlIHdpdGggc2Nyb2xsIGFtb3VudCBvZiA2MCB3
YXMgNjBweAorUEFTUzogVmFsdWUgd2l0aCBzY3JvbGwgYW1vdW50IG9mIDcwIHdhcyA3MHB4CitQ
QVNTOiBWYWx1ZSB3aXRoIHNjcm9sbCBhbW91bnQgb2YgODAgd2FzIDgwcHgKK1BBU1M6IFZhbHVl
IHdpdGggc2Nyb2xsIGFtb3VudCBvZiA5MCB3YXMgOTBweAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNjcm9sbC1ib3VuZGFyaWVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNjcm9sbC1ib3VuZGFy
aWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE3YjBlNTY0OTQ5MWNjZmQ2NDM5YzVlYjY1MTYzMDBiM2Vm
YjNkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJpZ2dlci1j
b250YWluZXItc2Nyb2xsLWJvdW5kYXJpZXMuaHRtbApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGhlaWdodDogMjAwMHB4OworfQorCisjYm94
IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDIwcHg7CisgICAgaGVpZ2h0
OiAyMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cit9CisKKy5hbmltYXRpbmcgewor
ICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZTsKKyAgICBhbmltYXRpb24tZHVyYXRpb246IDFtczsK
KyAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKKyAgICBhbmltYXRpb24tdGltaW5n
LWZ1bmN0aW9uOiBsaW5lYXI7CisgICAgLXdlYmtpdC1hbmltYXRpb24tdHJpZ2dlcjogY29udGFp
bmVyLXNjcm9sbCgyMHB4LCAxMjBweCk7Cit9CisKK0Atd2Via2l0LWtleWZyYW1lcyBzbGlkZSB7
CisgIGZyb20geworICAgICAgbGVmdDogMHB4OworICB9CisgIHRvIHsKKyAgICAgIGxlZnQ6IDEw
MHB4OworICB9Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KKwordmFyIHJlc3VsdHM7Cit2YXIgYm94
OworCit2YXIgc2Nyb2xsTWluID0gMjA7Cit2YXIgc2Nyb2xsTWF4ID0gMTIwOworCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIp
OworICAgIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3giKTsKKyAgICB2YXIgbGVm
dFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoYm94KS5sZWZ0OworICAgIGlmIChsZWZ0
VmFsdWUgPT0gImF1dG8iKQorICAgICAgICByZXN1bHRzLmlubmVySFRNTCA9ICJQQVNTOiBWYWx1
ZSBiZWZvcmUgYW5pbWF0aW9uIGlzIGFwcGxpZWQgaXMgYXV0bzxicj4iOworICAgIGVsc2UKKyAg
ICAgICAgcmVzdWx0cy5pbm5lckhUTUwgPSAiRkFJTDogVmFsdWUgYmVmb3JlIGFuaW1hdGlvbiBp
cyBhcHBsaWVkIHNob3VsZCBiZSBhdXRvLCB3YXMgIiArIGxlZnRWYWx1ZSArICI8YnI+IjsKKyAg
ICBib3guY2xhc3NOYW1lID0gImFuaW1hdGluZyI7CisgICAgc2V0VGltZW91dChjaGVja1ZhbHVl
V2l0aG91dFNjcm9sbCwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrVmFsdWVXaXRob3V0U2Nyb2xs
KCkgeworICAgIHZhciBsZWZ0VmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib3gpLmxl
ZnQ7CisgICAgaWYgKGxlZnRWYWx1ZSA9PSAiMHB4IikKKyAgICAgICAgcmVzdWx0cy5pbm5lckhU
TUwgKz0gIlBBU1M6IFZhbHVlIHdpdGggYW5pbWF0aW9uIGJ1dCBubyBzY3JvbGwgd2FzIDBweDxi
cj4iOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0cy5pbm5lckhUTUwgKz0gIkZBSUw6IFZhbHVl
IHdpdGggYW5pbWF0aW9uIGJ1dCBubyBzY3JvbGwgc2hvdWxkIGJlIDBweCwgd2FzICIgKyBsZWZ0
VmFsdWUgKyAiPGJyPiI7CisKKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgc2Nyb2xsTWluICsgMTAp
OworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBjaGVja1ZhbHVlV2l0aFNj
cm9sbCgxMCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrVmFsdWVXaXRoU2Nyb2xs
KHNjcm9sbEFtb3VudCkgeworICAgIHZhciBsZWZ0VmFsdWUgPSBNYXRoLnJvdW5kKHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGJveCkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgibGVmdCIpLmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUikpOworCisgICAgaWYgKGxlZnRWYWx1
ZSA9PSBzY3JvbGxBbW91bnQpCisgICAgICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9ICJQQVNTOiBW
YWx1ZSB3aXRoIHNjcm9sbCBhbW91bnQgb2YgIiArIHNjcm9sbEFtb3VudCArICIgd2FzICIgKyBz
Y3JvbGxBbW91bnQgKyAicHg8YnI+IjsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdHMuaW5uZXJI
VE1MICs9ICJGQUlMOiBWYWx1ZSB3aXRoIHNjcm9sbCBhbW91bnQgb2YgIiArIHNjcm9sbEFtb3Vu
dCArICIgc2hvdWxkIGJlICIgKyBzY3JvbGxBbW91bnQgKyAicHgsIHdhcyAiICsgbGVmdFZhbHVl
ICsgInB4PGJyPiI7CisKKyAgICBpZiAoc2Nyb2xsTWluICsgc2Nyb2xsQW1vdW50ICsgMTAgPCBz
Y3JvbGxNYXgpIHsKKyAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHNjcm9sbE1pbiArIHNjcm9s
bEFtb3VudCArIDEwKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBjaGVja1ZhbHVlV2l0aFNjcm9sbChzY3JvbGxBbW91bnQgKyAxMCk7CisgICAgICAgIH0s
IDApOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK3dpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcnVuVGVzdCwgZmFsc2UpOworCis8L3NjcmlwdD4K
KworPHA+VGhpcyBlbGVtZW50IHNob3VsZCBiZWdpbiBhbmltYXRpbmcgb25seSB3aGVuIHRoZSBw
YWdlIHNjcm9sbHMgdG8gMjBweCBmcm9tCit0aGUgdG9wLiBJdCB0aGVuIGFuaW1hdGVzIHNtb290
aGx5LCBtb3ZpbmcgMTAwcHggdG8gdGhlIGxlZnQgb3ZlciB0aGUgbmV4dAorMTAwcHggb2Ygc2Ny
b2xsaW5nLiBSZW1lbWJlciB0byBzY3JvbGwgdG8gdGhlIHRvcCBvZiB0aGUgcGFnZSBiZWZvcmUg
cmVsb2FkaW5nITwvcD4KKzxkaXYgaWQ9ImJveCI+PC9kaXY+CisKKzxkaXYgaWQ9InJlc3VsdHMi
PjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRh
aW5lci1zY3JvbGwtZW1wdHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90
cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtZW1wdHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNh
NmI2YzgxNjFjNDhlZTBkZWE1MDk5NDQ5ZTI3ZmIyYWQ0MDU3OTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNjcm9sbC1lbXB0eS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGlzIGVsZW1lbnQgc2hvdWxkIGJlZ2luIGFu
aW1hdGluZyBvbmx5IHdoZW4gdGhlIHBhZ2Ugc2Nyb2xscyB0byAyMHB4IGZyb20gdGhlIHRvcC4g
SXQgc3BlY2lmaWVzIGFuIGVuZCB2YWx1ZSwgYnV0IHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgYmVj
YXVzZSBpdCBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBzdGFydC4gVGhpcyBtZWFucyB0aGUgYW5p
bWF0aW9uIHdpbGwgcnVuIHRvIGNvbXBsZXRpb24gcmF0aGVyIHRoYW4gdGFrZSB0aGUgc2Nyb2xs
IHZhbHVlIGFzIGlucHV0LiBSZW1lbWJlciB0byBzY3JvbGwgdG8gdGhlIHRvcCBvZiB0aGUgcGFn
ZSBiZWZvcmUgcmVsb2FkaW5nIQorCitWYWx1ZSBiZWZvcmUgYW5pbWF0aW9uIGlzIGFwcGxpZWQ6
IGF1dG8gKHNob3VsZCBiZSBhdXRvKQorVmFsdWUgd2l0aCBhbmltYXRpb24gYnV0IG5vIHNjcm9s
bDogMHB4IChzaG91bGQgYmUgMHB4KQorUEFTUzogQW5pbWF0aW9uIHdhcyBub3QgZGVwZW5kaW5n
IG9uIHNjcm9sbC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmlnZ2Vy
LWNvbnRhaW5lci1zY3JvbGwtZW1wdHkuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJp
Z2dlci1jb250YWluZXItc2Nyb2xsLWVtcHR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNiMzdjN2M0ZjY3
M2ZhMTBmMmI5MjcwYzJkZmJjZjNmNjJkZjM0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWVtcHR5Lmh0bWwKQEAgLTAs
MCArMSw3OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+Citib2R5IHsKKyAgICBoZWlnaHQ6
IDIwMDBweDsKK30KKworI2JveCB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRo
OiAyMHB4OworICAgIGhlaWdodDogMjBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
fQorCisuYW5pbWF0aW5nIHsKKyAgICBhbmltYXRpb24tbmFtZTogc2xpZGU7CisgICAgYW5pbWF0
aW9uLWR1cmF0aW9uOiAxbXM7CisgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7Cisg
ICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgIC13ZWJraXQtYW5pbWF0
aW9uLXRyaWdnZXI6IGNvbnRhaW5lci1zY3JvbGwoMjBweCwgMjBweCk7Cit9CisKK0Atd2Via2l0
LWtleWZyYW1lcyBzbGlkZSB7CisgIGZyb20geworICAgICAgbGVmdDogMHB4OworICB9CisgIHRv
IHsKKyAgICAgIGxlZnQ6IDEwMHB4OworICB9Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KKwordmFy
IHJlc3VsdHM7Cit2YXIgYm94OworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHJlc3VsdHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpOworICAgIGJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJib3giKTsKKyAgICByZXN1bHRzLmlubmVySFRNTCA9ICJWYWx1ZSBiZWZvcmUg
YW5pbWF0aW9uIGlzIGFwcGxpZWQ6ICIgKyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib3gpLmxl
ZnQgKyAiIChzaG91bGQgYmUgYXV0byk8YnI+IjsKKyAgICBib3guY2xhc3NOYW1lID0gImFuaW1h
dGluZyI7CisgICAgc2V0VGltZW91dChjaGVja1ZhbHVlV2l0aG91dFNjcm9sbCwgMCk7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrVmFsdWVXaXRob3V0U2Nyb2xsKCkgeworICAgIHJlc3VsdHMuaW5uZXJI
VE1MICs9ICJWYWx1ZSB3aXRoIGFuaW1hdGlvbiBidXQgbm8gc2Nyb2xsOiAiICsgd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoYm94KS5sZWZ0ICsgIiAoc2hvdWxkIGJlIDBweCk8YnI+IjsKKyAgICB3
aW5kb3cuc2Nyb2xsVG8oMCwgMzApOworICAgIHNldFRpbWVvdXQoY2hlY2tWYWx1ZVdpdGhTY3Jv
bGwsIDEwKTsKK30KKworZnVuY3Rpb24gY2hlY2tWYWx1ZVdpdGhTY3JvbGwoKSB7CisgICAgdmFy
IGxlZnRWYWx1ZSA9IE1hdGgucm91bmQod2luZG93LmdldENvbXB1dGVkU3R5bGUoYm94KS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKCJsZWZ0IikuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5D
U1NfTlVNQkVSKSk7CisKKyAgICBpZiAobGVmdFZhbHVlID4gMTEpIC8vIElmIHdlIHdlcmUgcmVh
Y3RpbmcgdG8gc2Nyb2xsIHdlJ2QgaGF2ZSBhIHZhbHVlIG9mIDEwLgorICAgICAgICByZXN1bHRz
LmlubmVySFRNTCArPSAiUEFTUzogQW5pbWF0aW9uIHdhcyBub3QgZGVwZW5kaW5nIG9uIHNjcm9s
bC48YnI+IjsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9ICJGQUlMOiBW
YWx1ZSBzZWVtcyB0byBiZSByZWFjdGluZyB0byBzY3JvbGwuIEl0IHdhcyAiICsgbGVmdFZhbHVl
ICsgInB4PGJyPiI7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRv
dy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBydW5UZXN0LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8cD5UaGlzIGVsZW1lbnQg
c2hvdWxkIGJlZ2luIGFuaW1hdGluZyBvbmx5IHdoZW4gdGhlIHBhZ2Ugc2Nyb2xscyB0byAyMHB4
IGZyb20KK3RoZSB0b3AuIEl0IHNwZWNpZmllcyBhbiBlbmQgdmFsdWUsIGJ1dCB0aGF0IHNob3Vs
ZCBiZSBpZ25vcmVkIGJlY2F1c2UgaXQgaXMKK25vdCBncmVhdGVyIHRoYW4gdGhlIHN0YXJ0LiBU
aGlzIG1lYW5zIHRoZSBhbmltYXRpb24gd2lsbCBydW4gdG8gY29tcGxldGlvbgorcmF0aGVyIHRo
YW4gdGFrZSB0aGUgc2Nyb2xsIHZhbHVlIGFzIGlucHV0LiBSZW1lbWJlciB0byBzY3JvbGwgdG8g
dGhlIHRvcCBvZgordGhlIHBhZ2UgYmVmb3JlIHJlbG9hZGluZyE8L3A+Cis8ZGl2IGlkPSJib3gi
PjwvZGl2PgorCis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmNkN2FlYWJmN2Y4YjE1MjhkY2ZhNmVjZGI5NTMx
ZWRhY2QwYjg5Ni4uYzg5YTZkM2JlZGExMTEyYjFhZWNkN2FmNzQ5YWFlMjk0YjE2NzU4YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDcg
QEAgY3NzMy9zY3JvbGwtc25hcCBbIFNraXAgXQogYW5pbWF0aW9ucy90cmlnZ2VyLWNvbXB1dGVk
LXN0eWxlLmh0bWwgWyBTa2lwIF0KIGFuaW1hdGlvbnMvdHJpZ2dlci1wYXJzaW5nLmh0bWwgWyBT
a2lwIF0KIGFuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Nyb2xsLXNpbXBsZS5odG1sIFsg
U2tpcCBdCithbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNjcm9sbC1ib3VuZGFyaWVzLmh0
bWwgWyBTa2lwIF0KIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAjIFRlc3RzIHdoaWNoIGFsc28gZmFpbCBpbiBvdGhlciBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGE1NmRmMjg3ZTI0NTZlNjgzMmZl
Y2FkMDBhNThjMDFkNjdjMDMwMS4uNjY0MTMxOTcwZWZiOWNkYzM1ODFjNjEwOTM1NmFiZTgyMDQz
MDZjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ2
NSw2ICs0NjUsNyBAQCBjc3MzL3Njcm9sbC1zbmFwCiBhbmltYXRpb25zL3RyaWdnZXItY29tcHV0
ZWQtc3R5bGUuaHRtbCBbIFNraXAgXQogYW5pbWF0aW9ucy90cmlnZ2VyLXBhcnNpbmcuaHRtbCBb
IFNraXAgXQogYW5pbWF0aW9ucy90cmlnZ2VyLWNvbnRhaW5lci1zY3JvbGwtc2ltcGxlLmh0bWwg
WyBTa2lwIF0KK2FuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Nyb2xsLWJvdW5kYXJpZXMu
aHRtbCBbIFNraXAgXQogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIEJ1ZyhH
VEspIGZhc3QvZG9tL3NoYWRvdyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBiNzk5ODQ4MTFkNTM3NTFjODVlMWY1OWQ3ZTFlMzQ5NjliZGU2
NjM4Li40Njg3ZWIzYThiZGM2NTE1YTU0ZjczZmNjMDg1ZWIyZTliNDA1MDBmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjYsOSArMjYsNiBAQCB3ZWJr
aXQub3JnL2IvMTI2MDY2IGFjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRy
ZWUuaHRtbCBbIEZhaWx1cmUgQwogCiB3ZWJraXQub3JnL2IvMTE2NjM2IGFjY2Vzc2liaWxpdHkv
ZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCiAKLSMgU2tpcCB0aGlzIHRlc3Qg
d2hpbGUgaXQgaXMgY3Jhc2hpbmcKLXdlYmtpdC5vcmcvYi8xNDI3OTAgYW5pbWF0aW9ucy90cmln
Z2VyLWNvbnRhaW5lci1zY3JvbGwtc2ltcGxlLmh0bWwgWyBTa2lwIF0KLQogIyBBY2Nlc3NpYmls
aXR5IHRlc3RzIHdpdGggbWlzc2luZyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBmdW5jdGlvbmFs
aXR5Lgogd2Via2l0Lm9yZy9iLzExNjYzNyBhY2Nlc3NpYmlsaXR5L3NlbGVjdGlvbi1zdGF0ZXMu
aHRtbCBbIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDI5NDU5MGMzNDRhZWQ3ZDIwODljZTI1ODc4YTcwZmJkZDhlZmYwN2QuLjkyYWRj
MzRmYWViMTU3ZjQ4MGE1ZjM3MjIwNjI4Y2M1ZGQzNjU3MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC02MDAsNiArNjAwLDcgQEAgd2Via2l0Lm9yZy9i
LzE0MjczMSBmYXN0L2ltYWdlcy9hbmltYXRlZC1wbmcuaHRtbCBbIFNraXAgXQogYW5pbWF0aW9u
cy90cmlnZ2VyLWNvbXB1dGVkLXN0eWxlLmh0bWwgWyBTa2lwIF0KIGFuaW1hdGlvbnMvdHJpZ2dl
ci1wYXJzaW5nLmh0bWwgWyBTa2lwIF0KIGFuaW1hdGlvbnMvdHJpZ2dlci1jb250YWluZXItc2Ny
b2xsLXNpbXBsZS5odG1sIFsgU2tpcCBdCithbmltYXRpb25zL3RyaWdnZXItY29udGFpbmVyLXNj
cm9sbC1ib3VuZGFyaWVzLmh0bWwgWyBTa2lwIF0KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICMjIyMjIyMjIyMjICAgIEVuZCBNaXNzaW5nIEZ1bmN0aW9uYWxpdHkgUHJldmVudHMgVGVzdGlu
ZyAgICAgICAgICMjIyMjIyMjIyMjIyMjCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>