<?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>181651</bug_id>
          
          <creation_ts>2018-01-15 10:58:04 -0800</creation_ts>
          <short_desc>Use traits for animation timing functions</short_desc>
          <delta_ts>2018-01-16 10:45:52 -0800</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>WebKit 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>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>graouts</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1389337</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-01-15 10:58:04 -0800</bug_when>
    <thetext>Use traits for animation timing functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389338</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-15 10:59:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/36525328&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389339</commentid>
    <comment_count>2</comment_count>
      <attachid>331347</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-01-15 11:01:30 -0800</bug_when>
    <thetext>Created attachment 331347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389340</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-01-15 11:16:24 -0800</bug_when>
    <thetext>Committed r226952: &lt;https://trac.webkit.org/changeset/226952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389386</commentid>
    <comment_count>4</comment_count>
      <attachid>331347</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-01-15 14:43:19 -0800</bug_when>
    <thetext>Comment on attachment 331347
Patch

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

Great idea!

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1545
&gt; +        auto&amp; function = downcast&lt;const CubicBezierTimingFunction&gt;(timingFunction);

The downcast function template does not require you to specify const: it makes const match automatically, so this should be:

    auto&amp; function = downcast&lt;CubicBezierTimingFunction&gt;(timingFunction);

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1568
&gt; +        auto&amp; function = downcast&lt;const StepsTimingFunction&gt;(timingFunction);

Ditto.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1572
&gt; +        auto&amp; function = downcast&lt;const FramesTimingFunction&gt;(timingFunction);

Ditto.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1576
&gt; +        auto&amp; function = downcast&lt;const SpringTimingFunction&gt;(timingFunction);

Ditto.

&gt; Source/WebCore/platform/animation/TimingFunction.cpp:69
&gt; +        auto&amp; function = *downcast&lt;const CubicBezierTimingFunction&gt;(this);

It’s better to put the * inside before calling downcast, also const not needed:

    auto&amp; function = downcast&lt;CubicBezierTimingFunction&gt;(*this);

&gt; Source/WebCore/platform/animation/TimingFunction.cpp:76
&gt; +        auto&amp; function = *downcast&lt;const StepsTimingFunction&gt;(this);

Ditto.

&gt; Source/WebCore/platform/animation/TimingFunction.cpp:84
&gt; +        auto&amp; function = *downcast&lt;const FramesTimingFunction&gt;(this);

Ditto.

&gt; Source/WebCore/platform/animation/TimingFunction.cpp:93
&gt; +        auto&amp; function = *downcast&lt;const SpringTimingFunction&gt;(this);

Ditto.

&gt; Source/WebCore/platform/animation/TimingFunction.h:126
&gt; +        auto&amp; otherCubic = downcast&lt;const CubicBezierTimingFunction&gt;(other);

Ditto.

&gt; Source/WebCore/platform/animation/TimingFunction.h:199
&gt; +        auto&amp; otherSteps = downcast&lt;const StepsTimingFunction&gt;(other);

Ditto.

&gt; Source/WebCore/platform/animation/TimingFunction.h:281
&gt; +        auto&amp; otherSpring = downcast&lt;const SpringTimingFunction&gt;(other);

Ditto.

&gt; Source/WebCore/platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm:134
&gt; +        const CubicBezierTimingFunction* ctf = downcast&lt;const CubicBezierTimingFunction&gt;(timingFunction);

I suggest using auto to avoid repeating everything:

    auto* function = downcast&lt;CubicBezierTimingFunction&gt;(timingFunction);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389473</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-01-16 00:29:20 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 331347 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=331347&amp;action=review
&gt; 
&gt; Great idea!
&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1545
&gt; &gt; +        auto&amp; function = downcast&lt;const CubicBezierTimingFunction&gt;(timingFunction);
&gt; 
&gt; The downcast function template does not require you to specify const: it
&gt; makes const match automatically, so this should be:
&gt; 
&gt;     auto&amp; function = downcast&lt;CubicBezierTimingFunction&gt;(timingFunction);

I have a patch coming up that will address all of those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389500</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-01-16 03:21:07 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389501</commentid>
    <comment_count>7</comment_count>
      <attachid>331380</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-01-16 03:21:10 -0800</bug_when>
    <thetext>Created attachment 331380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389614</commentid>
    <comment_count>8</comment_count>
      <attachid>331380</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-16 10:45:51 -0800</bug_when>
    <thetext>Comment on attachment 331380
Patch

Clearing flags on attachment: 331380

Committed r226976: &lt;https://trac.webkit.org/changeset/226976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389615</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-16 10:45:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331347</attachid>
            <date>2018-01-15 11:01:30 -0800</date>
            <delta_ts>2018-01-16 03:21:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181651-20180116060127.patch</filename>
            <type>text/plain</type>
            <size>12055</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjMWVmYmE3MTNiZDRh
NzhlZDY2NTY0ZDUzMDdjMmJjYWNiNWU5Yy4uMGQzZjNjNzA4NzM3ZDJmMWJhYWI1ZjA1NzIwODQ2
MzYyZGVlNTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTAxLTE1ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdHJhaXRzIGZvciBhbmlt
YXRpb24gdGltaW5nIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgxNjUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjUyNTMyOD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhl
IHR5cGUgdHJhaXRzIGZvciBUaW1pbmdGdW5jdGlvbiBjbGFzc2VzLCBzbworICAgICAgICB3ZSBj
YW4gaXM8PiBhbmQgZG93bmNhc3Q8Pi4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGltaW5nRnVuY3Rpb25W
YWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjp0cmFuc2Zvcm1UaW1lIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjphbmltYXRpb25IYXNGcmFtZXNUaW1pbmdGdW5jdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6dG9DQU1lZGlhVGltaW5nRnVuY3Rpb24pOgorCiAyMDE4LTAxLTEyICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMjI2OTI3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBhYjJhMTc4NTRjNTlkYzM0YzQzNjFkOGRlZTUz
NGI0M2JlOTE2NDNiLi5kMGIxMTMzNmQ1MzY3NjdkZTVhYTkzM2M5OWRiMDU1YjU4MzYyMzA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMTU0Miw3ICsxNTQyLDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlVGlt
aW5nRnVuY3Rpb25WYWx1ZShjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3QKIHsKICAg
ICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rp
b246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsKLSAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBzdGF0
aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rpb24p
OworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IGRvd25jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uLnRpbWlu
Z0Z1bmN0aW9uUHJlc2V0KCkgIT0gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Q3VzdG9tKSB7
CiAgICAgICAgICAgICBDU1NWYWx1ZUlEIHZhbHVlSWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAg
ICAgICAgICBzd2l0Y2ggKGZ1bmN0aW9uLnRpbWluZ0Z1bmN0aW9uUHJlc2V0KCkpIHsKQEAgLTE1
NjUsMTUgKzE1NjUsMTUgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlVGltaW5nRnVuY3Rp
b25WYWx1ZShjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3QKICAgICAgICAgcmV0dXJu
IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKGZ1bmN0aW9uLngxKCks
IGZ1bmN0aW9uLnkxKCksIGZ1bmN0aW9uLngyKCksIGZ1bmN0aW9uLnkyKCkpOwogICAgIH0KICAg
ICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpTdGVwc0Z1bmN0aW9uOiB7Ci0gICAgICAgIGF1dG8mIGZ1
bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1
bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBkb3duY2FzdDxjb25zdCBTdGVwc1Rp
bWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiBDU1NTdGVwc1Rp
bWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJPZlN0ZXBzKCksIGZ1bmN0
aW9uLnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0KICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpGcmFt
ZXNGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0
IEZyYW1lc1RpbWluZ0Z1bmN0aW9uJj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBhdXRvJiBm
dW5jdGlvbiA9IGRvd25jYXN0PGNvbnN0IEZyYW1lc1RpbWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5j
dGlvbik7CiAgICAgICAgIHJldHVybiBDU1NGcmFtZXNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVh
dGUoZnVuY3Rpb24ubnVtYmVyT2ZGcmFtZXMoKSk7CiAgICAgfQogICAgIGNhc2UgVGltaW5nRnVu
Y3Rpb246OlNwcmluZ0Z1bmN0aW9uOiB7Ci0gICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7CisgICAg
ICAgIGF1dG8mIGZ1bmN0aW9uID0gZG93bmNhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24+
KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9u
VmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZmbmVzcygpLCBmdW5j
dGlvbi5kYW1waW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKTsKICAgICB9CiAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9U
aW1pbmdGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGlt
aW5nRnVuY3Rpb24uY3BwCmluZGV4IDMwZDZlNjkyMDczMzRlODcwNGViNWE3NDgyZGU0ZGVjYjMy
NTA5ZjUuLmQ0ZDczY2ZmMzIxMTA1MDZiMTAyMzc1OTE1OGZiZWRmM2Y3ZjM1MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNw
cApAQCAtNjYsMTQgKzY2LDE0IEBAIGRvdWJsZSBUaW1pbmdGdW5jdGlvbjo6dHJhbnNmb3JtVGlt
ZShkb3VibGUgaW5wdXRUaW1lLCBkb3VibGUgZHVyYXRpb24pIGNvbnN0CiB7CiAgICAgc3dpdGNo
IChtX3R5cGUpIHsKICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpDdWJpY0JlemllckZ1bmN0aW9u
OiB7Ci0gICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gKnN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb24qPih0aGlzKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSAqZG93
bmNhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4odGhpcyk7CiAgICAgICAgIC8v
IFRoZSBlcHNpbG9uIHZhbHVlIHdlIHBhc3MgdG8gVW5pdEJlemllcjo6c29sdmUgZ2l2ZW4gdGhh
dCB0aGUgYW5pbWF0aW9uIGlzIGdvaW5nIHRvIHJ1biBvdmVyIHxkdXJ8IHNlY29uZHMuIFRoZSBs
b25nZXIgdGhlCiAgICAgICAgIC8vIGFuaW1hdGlvbiwgdGhlIG1vcmUgcHJlY2lzaW9uIHdlIG5l
ZWQgaW4gdGhlIHRpbWluZyBmdW5jdGlvbiByZXN1bHQgdG8gYXZvaWQgdWdseSBkaXNjb250aW51
aXRpZXMuCiAgICAgICAgIGF1dG8gZXBzaWxvbiA9IDEuMCAvICgyMDAuMCAqIGR1cmF0aW9uKTsK
ICAgICAgICAgcmV0dXJuIFVuaXRCZXppZXIoZnVuY3Rpb24ueDEoKSwgZnVuY3Rpb24ueTEoKSwg
ZnVuY3Rpb24ueDIoKSwgZnVuY3Rpb24ueTIoKSkuc29sdmUoaW5wdXRUaW1lLCBlcHNpbG9uKTsK
ICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAg
ICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
Kj4odGhpcyk7CisgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gKmRvd25jYXN0PGNvbnN0IFN0ZXBz
VGltaW5nRnVuY3Rpb24+KHRoaXMpOwogICAgICAgICBhdXRvIG51bWJlck9mU3RlcHMgPSBmdW5j
dGlvbi5udW1iZXJPZlN0ZXBzKCk7CiAgICAgICAgIGlmIChmdW5jdGlvbi5zdGVwQXRTdGFydCgp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKDEuMCwgKHN0ZDo6Zmxvb3IobnVtYmVyT2ZT
dGVwcyAqIGlucHV0VGltZSkgKyAxKSAvIG51bWJlck9mU3RlcHMpOwpAQCAtODEsNyArODEsNyBA
QCBkb3VibGUgVGltaW5nRnVuY3Rpb246OnRyYW5zZm9ybVRpbWUoZG91YmxlIGlucHV0VGltZSwg
ZG91YmxlIGR1cmF0aW9uKSBjb25zdAogICAgIH0KICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpG
cmFtZXNGdW5jdGlvbjogewogICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
LXRpbWluZy8jZnJhbWVzLXRpbWluZy1mdW5jdGlvbnMKLSAgICAgICAgYXV0byYgZnVuY3Rpb24g
PSAqc3RhdGljX2Nhc3Q8Y29uc3QgRnJhbWVzVGltaW5nRnVuY3Rpb24qPih0aGlzKTsKKyAgICAg
ICAgYXV0byYgZnVuY3Rpb24gPSAqZG93bmNhc3Q8Y29uc3QgRnJhbWVzVGltaW5nRnVuY3Rpb24+
KHRoaXMpOwogICAgICAgICBhdXRvIG51bWJlck9mRnJhbWVzID0gZnVuY3Rpb24ubnVtYmVyT2ZG
cmFtZXMoKTsKICAgICAgICAgQVNTRVJUKG51bWJlck9mRnJhbWVzID4gMSk7CiAgICAgICAgIGF1
dG8gb3V0cHV0VGltZSA9IHN0ZDo6Zmxvb3IoaW5wdXRUaW1lICogbnVtYmVyT2ZGcmFtZXMpIC8g
KG51bWJlck9mRnJhbWVzIC0gMSk7CkBAIC05MCw3ICs5MCw3IEBAIGRvdWJsZSBUaW1pbmdGdW5j
dGlvbjo6dHJhbnNmb3JtVGltZShkb3VibGUgaW5wdXRUaW1lLCBkb3VibGUgZHVyYXRpb24pIGNv
bnN0CiAgICAgICAgIHJldHVybiBvdXRwdXRUaW1lOwogICAgIH0KICAgICBjYXNlIFRpbWluZ0Z1
bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9ICpzdGF0
aWNfY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbio+KHRoaXMpOworICAgICAgICBhdXRv
JiBmdW5jdGlvbiA9ICpkb3duY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbj4odGhpcyk7
CiAgICAgICAgIHJldHVybiBTcHJpbmdTb2x2ZXIoZnVuY3Rpb24ubWFzcygpLCBmdW5jdGlvbi5z
dGlmZm5lc3MoKSwgZnVuY3Rpb24uZGFtcGluZygpLCBmdW5jdGlvbi5pbml0aWFsVmVsb2NpdHko
KSkuc29sdmUoaW5wdXRUaW1lICogZHVyYXRpb24pOwogICAgIH0KICAgICBjYXNlIFRpbWluZ0Z1
bmN0aW9uOjpMaW5lYXJGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKaW5kZXggZGNjMDg5Njc1NTI4MmZkNjBkZDY0OTVl
MzJiMmViYjZhNmJmYWI1YS4uMTMzMGJmOGY1NzAwYjIxZTRlZDFkYWVlMWFmNDFlZjJmMDdkZDkz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZpbmFsCiAgICAgewotICAg
ICAgICByZXR1cm4gb3RoZXIuaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpOworICAgICAgICByZXR1
cm4gaXM8TGluZWFyVGltaW5nRnVuY3Rpb24+KG90aGVyKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0xMjEsOSArMTIxLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRp
bWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGlmICghb3Ro
ZXIuaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIGlmICghaXM8Q3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbj4ob3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBhdXRvJiBvdGhlckN1YmljID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAgICAgICAgYXV0byYgb3RoZXJDdWJpYyA9IGRvd25j
YXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KG90aGVyKTsKICAgICAgICAgaWYg
KG1fdGltaW5nRnVuY3Rpb25QcmVzZXQgIT0gb3RoZXJDdWJpYy5tX3RpbWluZ0Z1bmN0aW9uUHJl
c2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAobV90aW1pbmdGdW5j
dGlvblByZXNldCAhPSBDdXN0b20pCkBAIC0xOTQsOSArMTk0LDkgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IGZp
bmFsCiAgICAgewotICAgICAgICBpZiAoIW90aGVyLmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQor
ICAgICAgICBpZiAoIWlzPFN0ZXBzVGltaW5nRnVuY3Rpb24+KG90aGVyKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgb3RoZXJTdGVwcyA9IHN0YXRpY19jYXN0PGNv
bnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24mPihvdGhlcik7CisgICAgICAgIGF1dG8mIG90aGVyU3Rl
cHMgPSBkb3duY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uPihvdGhlcik7CiAgICAgICAg
IHJldHVybiBtX3N0ZXBzID09IG90aGVyU3RlcHMubV9zdGVwcyAmJiBtX3N0ZXBBdFN0YXJ0ID09
IG90aGVyU3RlcHMubV9zdGVwQXRTdGFydDsKICAgICB9CiAgICAgCkBAIC0yMzYsOSArMjM2LDkg
QEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBv
dGhlcikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGlmICghb3RoZXIuaXNGcmFtZXNUaW1p
bmdGdW5jdGlvbigpKQorICAgICAgICBpZiAoaXM8RnJhbWVzVGltaW5nRnVuY3Rpb24+KG90aGVy
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgb3RoZXJGcmFtZXMg
PSBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZXNUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAgICAg
ICAgYXV0byYgb3RoZXJGcmFtZXMgPSBkb3duY2FzdDxjb25zdCBGcmFtZXNUaW1pbmdGdW5jdGlv
bj4ob3RoZXIpOwogICAgICAgICByZXR1cm4gbV9mcmFtZXMgPT0gb3RoZXJGcmFtZXMubV9mcmFt
ZXM7CiAgICAgfQogICAgIApAQCAtMjc2LDkgKzI3Niw5IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBjb25zdCBmaW5hbAog
ICAgIHsKLSAgICAgICAgaWYgKCFvdGhlci5pc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkpCisgICAg
ICAgIGlmICghaXM8U3ByaW5nVGltaW5nRnVuY3Rpb24+KG90aGVyKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgb3RoZXJTcHJpbmcgPSBzdGF0aWNfY2FzdDxjb25z
dCBTcHJpbmdUaW1pbmdGdW5jdGlvbiY+KG90aGVyKTsKKyAgICAgICAgYXV0byYgb3RoZXJTcHJp
bmcgPSBkb3duY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbj4ob3RoZXIpOwogICAgICAg
ICByZXR1cm4gbV9tYXNzID09IG90aGVyU3ByaW5nLm1fbWFzcyAmJiBtX3N0aWZmbmVzcyA9PSBv
dGhlclNwcmluZy5tX3N0aWZmbmVzcyAmJiBtX2RhbXBpbmcgPT0gb3RoZXJTcHJpbmcubV9kYW1w
aW5nICYmIG1faW5pdGlhbFZlbG9jaXR5ID09IG90aGVyU3ByaW5nLm1faW5pdGlhbFZlbG9jaXR5
OwogICAgIH0KIApAQCAtMzE5LDMgKzMxOSwxNCBAQCBwcml2YXRlOgogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2RlZmluZSBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1RJTUlOR0ZVTkNUSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRl
KSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAorc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uJiBmdW5jdGlvbikg
eyByZXR1cm4gZnVuY3Rpb24ucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19USU1JTkdGVU5DVElPTihXZWJDb3JlOjpM
aW5lYXJUaW1pbmdGdW5jdGlvbiwgaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpKQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19USU1JTkdGVU5DVElPTihXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uLCBpc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfVElNSU5HRlVOQ1RJT04oV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbiwgaXNTdGVw
c1RpbWluZ0Z1bmN0aW9uKCkpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1RJTUlOR0ZVTkNUSU9O
KFdlYkNvcmU6OkZyYW1lc1RpbWluZ0Z1bmN0aW9uLCBpc0ZyYW1lc1RpbWluZ0Z1bmN0aW9uKCkp
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1RJTUlOR0ZVTkNUSU9OKFdlYkNvcmU6OlNwcmluZ1Rp
bWluZ0Z1bmN0aW9uLCBpc1NwcmluZ1RpbWluZ0Z1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCAxMjJiZWM3NGIyOTRmNjNhMThkYmE4NDAwYjhiNjNjNGQwMjIyNDFmLi42YWMyNWFlNWY4ZmQ4
MWMzNWZkZjI4YjFhNTliNmU2NTJiOTY1YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI3MCwxMiAr
MjcwLDEyIEBAIHN0YXRpYyBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJCiAKIHN0YXRpYyBib29sIGFuaW1hdGlv
bkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlz
dCwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQogewotICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlv
bigpLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKKyAgICBpZiAoaXM8U3RlcHNUaW1pbmdGdW5j
dGlvbj4oYW5pbS0+dGltaW5nRnVuY3Rpb24oKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgaWYgKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVl
TGlzdC5hdChpKS50aW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBpZiAodGltaW5nRnVu
Y3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAgaWYgKGlzPFN0ZXBz
VGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI4NSwxMiArMjg1LDEyIEBAIHN0YXRpYyBib29s
IGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwKIAogc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzRnJhbWVzVGltaW5nRnVuY3Rp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBh
bmltKQogewotICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpLT5pc0ZyYW1lc1RpbWluZ0Z1
bmN0aW9uKCkpCisgICAgaWYgKGlzPEZyYW1lc1RpbWluZ0Z1bmN0aW9uPihhbmltLT50aW1pbmdG
dW5jdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLnRpbWluZ0Z1
bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNGcmFtZXNUaW1p
bmdGdW5jdGlvbigpKQorICAgICAgICAgICAgaWYgKGlzPEZyYW1lc1RpbWluZ0Z1bmN0aW9uPih0
aW1pbmdGdW5jdGlvbikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggOTZm
ZDY3MTgzYzk4YjA4ZGU0MDNkM2RlMjNkZDg1YTYwNjk5YTZhMS4uMWU2Y2NlYTY0YjA3MzZlODY5
N2JiNjg0OGNkN2M1OTc3NGNhYmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYS5tbQpAQCAtMTI5LDkgKzEyOSw5IEBAIHN0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpWYWx1ZUZ1bmN0aW9uVHlwZSBmcm9tQ0FWYWx1ZUZ1bmN0aW9uVHlwZShOU1N0cmluZyoKIENB
TWVkaWFUaW1pbmdGdW5jdGlvbiogV2ViQ29yZTo6dG9DQU1lZGlhVGltaW5nRnVuY3Rpb24oY29u
c3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBib29sIHJldmVyc2UpCiB7CiAgICAg
QVNTRVJUKHRpbWluZ0Z1bmN0aW9uKTsKLSAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgaWYgKGlzPEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24+KHRpbWluZ0Z1bmN0aW9uKSkgewogICAgICAgICBSZWZQdHI8Q3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbj4gcmV2ZXJzZWQ7Ci0gICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24q
Pih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24qIGN0ZiA9IGRvd25jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KHRpbWlu
Z0Z1bmN0aW9uKTsKIAogICAgICAgICBpZiAocmV2ZXJzZSkgewogICAgICAgICAgICAgcmV2ZXJz
ZWQgPSBjdGYtPmNyZWF0ZVJldmVyc2VkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331380</attachid>
            <date>2018-01-16 03:21:10 -0800</date>
            <delta_ts>2018-01-16 10:45:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181651-20180116122108.patch</filename>
            <type>text/plain</type>
            <size>10674</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM3NTVmZGRkMjI5Y2M5
YTkyNTIzNWQyMzc0NjQwZDgyNzEzOGMxNy4uOWIzNmRlZDA4OGE5N2U0ZjIyNTRkZDZhNzQ1YWM3
YjJmMTU1MzJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTAxLTE2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHRyYWl0cyBmb3Ig
YW5pbWF0aW9uIHRpbWluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MTY1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENsZWFuaW5nIHVwIERlYW4ncyBwcmV2aW91cyBwYXRjaCBhcyBz
dWdnZXN0ZWQgYnkgRGFyaW4ncyBwb3N0LWNvbW1pdCByZXZpZXcgY29tbWVudHMuIFRoZQorICAg
ICAgICBkb3duY2FzdCBmdW5jdGlvbiBjYW4gbWF0Y2ggY29uc3QgYXV0b21hdGljYWxseSBhbmQg
aXQncyBhIGJldHRlciBzdHlsZSB0byBwdXQgdGhlICogaW5zaWRlCisgICAgICAgIHRoZSBkb3du
Y2FzdCBjYWxsIHJhdGhlciB0aGFuIG91dHNpZGUuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRpbWluZ0Z1
bmN0aW9uVmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWluZ0Z1bmN0aW9uOjp0cmFuc2Zvcm1UaW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
Ojp0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbik6CisKIDIwMTgtMDEtMTUgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0cmFpdHMgZm9yIGFuaW1hdGlvbiB0aW1p
bmcgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IGQwYjExMzM2ZDUzNjc2N2RlNWFhOTMzYzk5ZGIwNTViNTgz
NjIzMDUuLjdiM2ZmMzJmMGU5ZWQzMTU4Y2M4MjliMGFhNTUwYmQ4OGIyMGQ2ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0xNTQyLDcgKzE1NDIsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5j
dGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdAogewogICAgIHN3aXRj
aCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6Q3Vi
aWNCZXppZXJGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IGRvd25jYXN0PGNv
bnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAg
YXV0byYgZnVuY3Rpb24gPSBkb3duY2FzdDxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPih0aW1p
bmdGdW5jdGlvbik7CiAgICAgICAgIGlmIChmdW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgp
ICE9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OkN1c3RvbSkgewogICAgICAgICAgICAgQ1NT
VmFsdWVJRCB2YWx1ZUlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgc3dpdGNoIChm
dW5jdGlvbi50aW1pbmdGdW5jdGlvblByZXNldCgpKSB7CkBAIC0xNTY1LDE1ICsxNTY1LDE1IEBA
IHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGlt
aW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0CiAgICAgICAgIHJldHVybiBDU1NDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi54MSgpLCBmdW5jdGlvbi55MSgpLCBm
dW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKTsKICAgICB9CiAgICAgY2FzZSBUaW1pbmdGdW5j
dGlvbjo6U3RlcHNGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IGRvd25jYXN0
PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0
byYgZnVuY3Rpb24gPSBkb3duY2FzdDxTdGVwc1RpbWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5jdGlv
bik7CiAgICAgICAgIHJldHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShm
dW5jdGlvbi5udW1iZXJPZlN0ZXBzKCksIGZ1bmN0aW9uLnN0ZXBBdFN0YXJ0KCkpOwogICAgIH0K
ICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpGcmFtZXNGdW5jdGlvbjogewotICAgICAgICBhdXRv
JiBmdW5jdGlvbiA9IGRvd25jYXN0PGNvbnN0IEZyYW1lc1RpbWluZ0Z1bmN0aW9uPih0aW1pbmdG
dW5jdGlvbik7CisgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gZG93bmNhc3Q8RnJhbWVzVGltaW5n
RnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIENTU0ZyYW1lc1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbi5udW1iZXJPZkZyYW1lcygpKTsKICAgICB9
CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3ByaW5nRnVuY3Rpb246IHsKLSAgICAgICAgYXV0
byYgZnVuY3Rpb24gPSBkb3duY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbj4odGltaW5n
RnVuY3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IGRvd25jYXN0PFNwcmluZ1RpbWlu
Z0Z1bmN0aW9uPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiBDU1NTcHJpbmdUaW1p
bmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24ubWFzcygpLCBmdW5jdGlvbi5zdGlmZm5l
c3MoKSwgZnVuY3Rpb24uZGFtcGluZygpLCBmdW5jdGlvbi5pbml0aWFsVmVsb2NpdHkoKSk7CiAg
ICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcAppbmRleCBkNGQ3M2NmZjMyMTEwNTA2YjEwMjM3NTkx
NThmYmVkZjNmN2YzNTJiLi41MDc1NDNjZTRhMmM2NjI3MGU2MzExMThhYWJlMTczNWM1NzQzMmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdG
dW5jdGlvbi5jcHAKQEAgLTM5LDIyICszOSwyMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCiAgICAg
ICAgIHRzIDw8ICJsaW5lYXIiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRpbWluZ0Z1bmN0
aW9uOjpDdWJpY0JlemllckZ1bmN0aW9uOiB7Ci0gICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9u
KTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBkb3duY2FzdDxDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHRzIDw8ICJjdWJpYy1iZXppZXIoIiA8
PCBmdW5jdGlvbi54MSgpIDw8ICIsICIgPDwgZnVuY3Rpb24ueTEoKSA8PCAiLCAiIDw8ICBmdW5j
dGlvbi54MigpIDw8ICIsICIgPDwgZnVuY3Rpb24ueTIoKSA8PCAiKSI7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpTdGVwc0Z1bmN0aW9uOiB7Ci0gICAg
ICAgIGF1dG8mIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlv
biY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBkb3duY2FzdDxT
dGVwc1RpbWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHRzIDw8ICJzdGVw
cygiIDw8IGZ1bmN0aW9uLm51bWJlck9mU3RlcHMoKSA8PCAiLCAiIDw8IChmdW5jdGlvbi5zdGVw
QXRTdGFydCgpID8gInN0YXJ0IiA6ICJlbmQiKSA8PCAiKSI7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpGcmFtZXNGdW5jdGlvbjogewotICAgICAgICBh
dXRvJiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEZyYW1lc1RpbWluZ0Z1bmN0aW9uJj4o
dGltaW5nRnVuY3Rpb24pOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IGRvd25jYXN0PEZyYW1l
c1RpbWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIHRzIDw8ICJmcmFtZXMo
IiA8PCBmdW5jdGlvbi5udW1iZXJPZkZyYW1lcygpIDw8ICIpIjsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OlNwcmluZ0Z1bmN0aW9uOiB7Ci0gICAgICAg
IGF1dG8mIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3ByaW5nVGltaW5nRnVuY3Rpb24m
Pih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gZG93bmNhc3Q8U3By
aW5nVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKTsKICAgICAgICAgdHMgPDwgInNwcmlu
ZygiIDw8IGZ1bmN0aW9uLm1hc3MoKSA8PCAiICIgPDwgZnVuY3Rpb24uc3RpZmZuZXNzKCkgPDwg
IiAiIDw8ICBmdW5jdGlvbi5kYW1waW5nKCkgPDwgIiAiIDw8IGZ1bmN0aW9uLmluaXRpYWxWZWxv
Y2l0eSgpIDw8ICIpIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjYsMTQgKzY2LDE0IEBA
IGRvdWJsZSBUaW1pbmdGdW5jdGlvbjo6dHJhbnNmb3JtVGltZShkb3VibGUgaW5wdXRUaW1lLCBk
b3VibGUgZHVyYXRpb24pIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNl
IFRpbWluZ0Z1bmN0aW9uOjpDdWJpY0JlemllckZ1bmN0aW9uOiB7Ci0gICAgICAgIGF1dG8mIGZ1
bmN0aW9uID0gKmRvd25jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KHRoaXMp
OworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9IGRvd25jYXN0PEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24+KCp0aGlzKTsKICAgICAgICAgLy8gVGhlIGVwc2lsb24gdmFsdWUgd2UgcGFzcyB0byBV
bml0QmV6aWVyOjpzb2x2ZSBnaXZlbiB0aGF0IHRoZSBhbmltYXRpb24gaXMgZ29pbmcgdG8gcnVu
IG92ZXIgfGR1cnwgc2Vjb25kcy4gVGhlIGxvbmdlciB0aGUKICAgICAgICAgLy8gYW5pbWF0aW9u
LCB0aGUgbW9yZSBwcmVjaXNpb24gd2UgbmVlZCBpbiB0aGUgdGltaW5nIGZ1bmN0aW9uIHJlc3Vs
dCB0byBhdm9pZCB1Z2x5IGRpc2NvbnRpbnVpdGllcy4KICAgICAgICAgYXV0byBlcHNpbG9uID0g
MS4wIC8gKDIwMC4wICogZHVyYXRpb24pOwogICAgICAgICByZXR1cm4gVW5pdEJlemllcihmdW5j
dGlvbi54MSgpLCBmdW5jdGlvbi55MSgpLCBmdW5jdGlvbi54MigpLCBmdW5jdGlvbi55MigpKS5z
b2x2ZShpbnB1dFRpbWUsIGVwc2lsb24pOwogICAgIH0KICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9u
OjpTdGVwc0Z1bmN0aW9uOiB7Ci0gICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gKmRvd25jYXN0PGNv
bnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24+KHRoaXMpOworICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
IGRvd25jYXN0PFN0ZXBzVGltaW5nRnVuY3Rpb24+KCp0aGlzKTsKICAgICAgICAgYXV0byBudW1i
ZXJPZlN0ZXBzID0gZnVuY3Rpb24ubnVtYmVyT2ZTdGVwcygpOwogICAgICAgICBpZiAoZnVuY3Rp
b24uc3RlcEF0U3RhcnQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1pbigxLjAsIChzdGQ6
OmZsb29yKG51bWJlck9mU3RlcHMgKiBpbnB1dFRpbWUpICsgMSkgLyBudW1iZXJPZlN0ZXBzKTsK
QEAgLTgxLDcgKzgxLDcgQEAgZG91YmxlIFRpbWluZ0Z1bmN0aW9uOjp0cmFuc2Zvcm1UaW1lKGRv
dWJsZSBpbnB1dFRpbWUsIGRvdWJsZSBkdXJhdGlvbikgY29uc3QKICAgICB9CiAgICAgY2FzZSBU
aW1pbmdGdW5jdGlvbjo6RnJhbWVzRnVuY3Rpb246IHsKICAgICAgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy10aW1pbmcvI2ZyYW1lcy10aW1pbmctZnVuY3Rpb25zCi0gICAgICAg
IGF1dG8mIGZ1bmN0aW9uID0gKmRvd25jYXN0PGNvbnN0IEZyYW1lc1RpbWluZ0Z1bmN0aW9uPih0
aGlzKTsKKyAgICAgICAgYXV0byYgZnVuY3Rpb24gPSBkb3duY2FzdDxGcmFtZXNUaW1pbmdGdW5j
dGlvbj4oKnRoaXMpOwogICAgICAgICBhdXRvIG51bWJlck9mRnJhbWVzID0gZnVuY3Rpb24ubnVt
YmVyT2ZGcmFtZXMoKTsKICAgICAgICAgQVNTRVJUKG51bWJlck9mRnJhbWVzID4gMSk7CiAgICAg
ICAgIGF1dG8gb3V0cHV0VGltZSA9IHN0ZDo6Zmxvb3IoaW5wdXRUaW1lICogbnVtYmVyT2ZGcmFt
ZXMpIC8gKG51bWJlck9mRnJhbWVzIC0gMSk7CkBAIC05MCw3ICs5MCw3IEBAIGRvdWJsZSBUaW1p
bmdGdW5jdGlvbjo6dHJhbnNmb3JtVGltZShkb3VibGUgaW5wdXRUaW1lLCBkb3VibGUgZHVyYXRp
b24pIGNvbnN0CiAgICAgICAgIHJldHVybiBvdXRwdXRUaW1lOwogICAgIH0KICAgICBjYXNlIFRp
bWluZ0Z1bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjogewotICAgICAgICBhdXRvJiBmdW5jdGlvbiA9
ICpkb3duY2FzdDxjb25zdCBTcHJpbmdUaW1pbmdGdW5jdGlvbj4odGhpcyk7CisgICAgICAgIGF1
dG8mIGZ1bmN0aW9uID0gZG93bmNhc3Q8U3ByaW5nVGltaW5nRnVuY3Rpb24+KCp0aGlzKTsKICAg
ICAgICAgcmV0dXJuIFNwcmluZ1NvbHZlcihmdW5jdGlvbi5tYXNzKCksIGZ1bmN0aW9uLnN0aWZm
bmVzcygpLCBmdW5jdGlvbi5kYW1waW5nKCksIGZ1bmN0aW9uLmluaXRpYWxWZWxvY2l0eSgpKS5z
b2x2ZShpbnB1dFRpbWUgKiBkdXJhdGlvbik7CiAgICAgfQogICAgIGNhc2UgVGltaW5nRnVuY3Rp
b246OkxpbmVhckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vVGltaW5nRnVuY3Rpb24uaAppbmRleCAxMzMwYmY4ZjU3MDBiMjFlNGVkMWRhZWUxYWY0
MWVmMmYwN2RkOTNhLi41MjdiY2JhODNiOGU1ZmFkZGNiZTkzMjA5NzAwOTg1MTVmNzU2NzYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghaXM8
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4ob3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBhdXRvJiBvdGhlckN1YmljID0gZG93bmNhc3Q8Y29uc3QgQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbj4ob3RoZXIpOworICAgICAgICBhdXRvJiBvdGhlckN1YmljID0gZG93
bmNhc3Q8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4ob3RoZXIpOwogICAgICAgICBpZiAobV90
aW1pbmdGdW5jdGlvblByZXNldCAhPSBvdGhlckN1YmljLm1fdGltaW5nRnVuY3Rpb25QcmVzZXQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChtX3RpbWluZ0Z1bmN0aW9u
UHJlc2V0ICE9IEN1c3RvbSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBpZiAoIWlzPFN0ZXBzVGltaW5nRnVuY3Rpb24+KG90aGVyKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgb3RoZXJTdGVwcyA9IGRvd25jYXN0PGNvbnN0IFN0
ZXBzVGltaW5nRnVuY3Rpb24+KG90aGVyKTsKKyAgICAgICAgYXV0byYgb3RoZXJTdGVwcyA9IGRv
d25jYXN0PFN0ZXBzVGltaW5nRnVuY3Rpb24+KG90aGVyKTsKICAgICAgICAgcmV0dXJuIG1fc3Rl
cHMgPT0gb3RoZXJTdGVwcy5tX3N0ZXBzICYmIG1fc3RlcEF0U3RhcnQgPT0gb3RoZXJTdGVwcy5t
X3N0ZXBBdFN0YXJ0OwogICAgIH0KICAgICAKQEAgLTIzOCw3ICsyMzgsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBpZiAoaXM8RnJhbWVzVGltaW5nRnVuY3Rpb24+KG90aGVyKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgb3RoZXJGcmFtZXMgPSBkb3duY2Fz
dDxjb25zdCBGcmFtZXNUaW1pbmdGdW5jdGlvbj4ob3RoZXIpOworICAgICAgICBhdXRvJiBvdGhl
ckZyYW1lcyA9IGRvd25jYXN0PEZyYW1lc1RpbWluZ0Z1bmN0aW9uPihvdGhlcik7CiAgICAgICAg
IHJldHVybiBtX2ZyYW1lcyA9PSBvdGhlckZyYW1lcy5tX2ZyYW1lczsKICAgICB9CiAgICAgCkBA
IC0yNzgsNyArMjc4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFpczxTcHJpbmdU
aW1pbmdGdW5jdGlvbj4ob3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBhdXRvJiBvdGhlclNwcmluZyA9IGRvd25jYXN0PGNvbnN0IFNwcmluZ1RpbWluZ0Z1bmN0aW9u
PihvdGhlcik7CisgICAgICAgIGF1dG8mIG90aGVyU3ByaW5nID0gZG93bmNhc3Q8U3ByaW5nVGlt
aW5nRnVuY3Rpb24+KG90aGVyKTsKICAgICAgICAgcmV0dXJuIG1fbWFzcyA9PSBvdGhlclNwcmlu
Zy5tX21hc3MgJiYgbV9zdGlmZm5lc3MgPT0gb3RoZXJTcHJpbmcubV9zdGlmZm5lc3MgJiYgbV9k
YW1waW5nID09IG90aGVyU3ByaW5nLm1fZGFtcGluZyAmJiBtX2luaXRpYWxWZWxvY2l0eSA9PSBv
dGhlclNwcmluZy5tX2luaXRpYWxWZWxvY2l0eTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYS5tbQppbmRleCAxZTZjY2VhNjRiMDczNmU4Njk3YmI2ODQ4Y2Q3
YzU5Nzc0Y2FiZGUzLi4yYWYwMzQyMDAwYjMxMGJhMTE0MjJlYTlmYTA4NTVhODNkNzFkYmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCkBAIC0xMzEsMTcgKzEz
MSwxNyBAQCBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIFdlYkNvcmU6OnRvQ0FNZWRpYVRpbWluZ0Z1
bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aQogICAgIEFTU0VSVCh0aW1pbmdGdW5jdGlv
bik7CiAgICAgaWYgKGlzPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9u
KSkgewogICAgICAgICBSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gcmV2ZXJzZWQ7
Ci0gICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IGRvd25jYXN0
PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAg
ICAgYXV0byogZnVuY3Rpb24gPSBkb3duY2FzdDxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPih0
aW1pbmdGdW5jdGlvbik7CiAKICAgICAgICAgaWYgKHJldmVyc2UpIHsKLSAgICAgICAgICAgIHJl
dmVyc2VkID0gY3RmLT5jcmVhdGVSZXZlcnNlZCgpOwotICAgICAgICAgICAgY3RmID0gcmV2ZXJz
ZWQuZ2V0KCk7CisgICAgICAgICAgICByZXZlcnNlZCA9IGZ1bmN0aW9uLT5jcmVhdGVSZXZlcnNl
ZCgpOworICAgICAgICAgICAgZnVuY3Rpb24gPSByZXZlcnNlZC5nZXQoKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGZsb2F0IHgxID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDEoKSk7Ci0gICAg
ICAgIGZsb2F0IHkxID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTEoKSk7Ci0gICAgICAgIGZs
b2F0IHgyID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDIoKSk7Ci0gICAgICAgIGZsb2F0IHky
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTIoKSk7CisgICAgICAgIGZsb2F0IHgxID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGZ1bmN0aW9uLT54MSgpKTsKKyAgICAgICAgZmxvYXQgeTEgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oZnVuY3Rpb24tPnkxKCkpOworICAgICAgICBmbG9hdCB4MiA9IHN0YXRp
Y19jYXN0PGZsb2F0PihmdW5jdGlvbi0+eDIoKSk7CisgICAgICAgIGZsb2F0IHkyID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGZ1bmN0aW9uLT55MigpKTsKICAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGlt
aW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoQ29udHJvbFBvaW50czogeDEgOiB5MSA6IHgyIDogeTJd
OwogICAgIH0KICAgICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>