<?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>118405</bug_id>
          
          <creation_ts>2013-07-04 22:29:24 -0700</creation_ts>
          <short_desc>Update Exception handling in WebAudio</short_desc>
          <delta_ts>2013-07-09 03:00:27 -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>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Praveen Jadhav">praveen.j</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>crogers</cc>
    
    <cc>dev_sachin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>906295</commentid>
    <comment_count>0</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-07-04 22:29:24 -0700</bug_when>
    <thetext>AudioBufferSourceNode, OscillatorNode and AnalyserNode doesn&apos;t propagate any exceptions specified in WebAudio specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906296</commentid>
    <comment_count>1</comment_count>
      <attachid>206122</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-07-04 22:39:56 -0700</bug_when>
    <thetext>Created attachment 206122
Patch

Patch updated to handle exception in WebAudio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906301</commentid>
    <comment_count>2</comment_count>
      <attachid>206122</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-04 23:38:28 -0700</bug_when>
    <thetext>Comment on attachment 206122
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        AudioBufferSourceNode, OscillatorNode and AnalyserNode don&apos;t propagate any exceptions specified in WebAudio spec.

Throwing new exceptions is risky business when it comes to backward compatibility.

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:555
&gt; +        ec = INDEX_SIZE_ERR;

Where is this exception name specified?

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:601
&gt; +    if (!real || !imag || (real-&gt;length() != imag-&gt;length() || (real-&gt;length() &gt; 4096))) {

Would be nice to have a global static const variable for that magic number. Alsom , the spec says that the value should be greater than 0 but it does not seem to be covered, right?

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:602
&gt; +        ec = INDEX_SIZE_ERR;

Does the spec actually specify it needs to be a IndexSizeError and not a SyntaxError? I cannot find it.

&gt; LayoutTests/webaudio/analyser-exception.html:34
&gt; +    shouldThrow(&quot;analyser.minDecibels = -20&quot;);

shouldThrow() can take a second argument with the exception name to validate that as well. If you expect a specific exception, you probably want to add that (although the spec does not seem to indicate exception names?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906539</commentid>
    <comment_count>3</comment_count>
      <attachid>206122</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-07-05 21:24:45 -0700</bug_when>
    <thetext>Comment on attachment 206122
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        AudioBufferSourceNode, OscillatorNode and AnalyserNode don&apos;t propagate any exceptions specified in WebAudio spec.
&gt; 
&gt; Throwing new exceptions is risky business when it comes to backward compatibility.

While I usually am a champion for this point, given how little WebAudio content there is, I am not too worried here.

&gt;&gt; LayoutTests/webaudio/analyser-exception.html:34
&gt;&gt; +    shouldThrow(&quot;analyser.minDecibels = -20&quot;);
&gt; 
&gt; shouldThrow() can take a second argument with the exception name to validate that as well. If you expect a specific exception, you probably want to add that (although the spec does not seem to indicate exception names?)

I agree with Christophe, you should specify what exception you expect.  If the spec isn&apos;t specifying it clearly, we should get it updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906658</commentid>
    <comment_count>4</comment_count>
      <attachid>206215</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-07-07 21:41:10 -0700</bug_when>
    <thetext>Created attachment 206215
Patch

Patch updated as per the review comments. Description for start and stop methods in AudioBufferSourceNode says &apos;an exception will be thrown&apos; but doesn&apos;t specify the exact DOM exception. INVALID_STATE_ERR seems to be appropriate error in this case.

@crogers: WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906882</commentid>
    <comment_count>5</comment_count>
      <attachid>206215</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-07-08 12:09:48 -0700</bug_when>
    <thetext>Comment on attachment 206215
Patch

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

Looks good if comment is added

&gt; LayoutTests/webaudio/audiobuffersource-exception.html:34
&gt; +

It would be nice to add brief comments describing why each case should throw an exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907013</commentid>
    <comment_count>6</comment_count>
      <attachid>206296</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-07-08 23:48:31 -0700</bug_when>
    <thetext>Created attachment 206296
Patch

Comments updated in Layouttest files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907056</commentid>
    <comment_count>7</comment_count>
      <attachid>206296</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-09 03:00:24 -0700</bug_when>
    <thetext>Comment on attachment 206296
Patch

Clearing flags on attachment: 206296

Committed r152489: &lt;http://trac.webkit.org/changeset/152489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907057</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-09 03:00:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206122</attachid>
            <date>2013-07-04 22:39:56 -0700</date>
            <delta_ts>2013-07-07 21:41:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WebAudio-118405.txt</filename>
            <type>text/plain</type>
            <size>20927</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjQwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA3LTA0ICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFVwZGF0ZSBFeGNl
cHRpb24gaGFuZGxpbmcgaW4gV2ViQXVkaW8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0MDUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlLCBPc2NpbGxhdG9yTm9k
ZSBhbmQgQW5hbHlzZXJOb2RlIGRvbid0IHByb3BhZ2F0ZSBhbnkgZXhjZXB0aW9ucyBzcGVjaWZp
ZWQgaW4gV2ViQXVkaW8gc3BlYy4KKyAgICAgICAgQWxzbywgcHJvcGVyIGV4Y2VwdGlvbiBjb2Rl
IGlzIG5vdCByZXR1cm5lZCB3aGlsZSBjcmVhdGluZyBjZXJ0YWluIG5vZGVzLiBDb2RlIHVwZGF0
ZWQgdG8gdGhyb3cgRE9NIGV4Y2VwdGlvbgorICAgICAgICBhcyBleHBlY3RlZC4KKworICAgICAg
ICBUZXN0czogd2ViYXVkaW8vYW5hbHlzZXItZXhjZXB0aW9uLmh0bWwKKyAgICAgICAgICAgICAg
IHdlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmFs
eXNlck5vZGU6OnNldEZmdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpz
ZXRNaW5EZWNpYmVscyk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OnNldE1heERl
Y2liZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0U21vb3RoaW5nVGlt
ZUNvbnN0YW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0R3JhaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpub3RlR3JhaW5Pbik6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
cmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVTY3Jp
cHRQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFu
bmVsTWVyZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlUGVyaW9k
aWNXYXZlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6c3RvcCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6Om5vdGVPbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6Om5vdGVPZmYpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGw6CisKIDIwMTMtMDctMDQg
IENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAg
IEhhdmUgU1ZHVGV4dENvbnRlbnRFbGVtZW50IGluaGVyaXQgU1ZHR3JhcGhpY3NFbGVtZW50Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
Y3BwCShyZXZpc2lvbiAxNTIzODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FuYWx5c2VyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDM3IEBAIHZvaWQg
QW5hbHlzZXJOb2RlOjpyZXNldCgpCiB2b2lkIEFuYWx5c2VyTm9kZTo6c2V0RmZ0U2l6ZSh1bnNp
Z25lZCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fYW5hbHlzZXIuc2V0
RmZ0U2l6ZShzaXplKSkKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAg
ZWMgPSBJTkRFWF9TSVpFX0VSUjsKK30KKwordm9pZCBBbmFseXNlck5vZGU6OnNldE1pbkRlY2li
ZWxzKGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChrID4gbWF4RGVjaWJl
bHMoKSkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9hbmFseXNlci5zZXRNaW5EZWNpYmVscyhrKTsKK30KKwordm9pZCBBbmFs
eXNlck5vZGU6OnNldE1heERlY2liZWxzKGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmIChrIDwgbWluRGVjaWJlbHMoKSkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9hbmFseXNlci5zZXRNYXhEZWNpYmVs
cyhrKTsKK30KKwordm9pZCBBbmFseXNlck5vZGU6OnNldFNtb290aGluZ1RpbWVDb25zdGFudChm
bG9hdCBrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoayA8IDAgfHwgayA+IDEpIHsK
KyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fYW5hbHlzZXIuc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGspOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmgJKHJldmlzaW9uIDE1MjM4NykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1
MCwxMyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBmcmVxdWVuY3lCaW5Db3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fYW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQoKTsgfQogCi0gICAgdm9pZCBz
ZXRNaW5EZWNpYmVscyhmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0TWluRGVjaWJlbHMoayk7IH0K
KyAgICB2b2lkIHNldE1pbkRlY2liZWxzKGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBm
bG9hdCBtaW5EZWNpYmVscygpIGNvbnN0IHsgcmV0dXJuIG1fYW5hbHlzZXIubWluRGVjaWJlbHMo
KTsgfQogCi0gICAgdm9pZCBzZXRNYXhEZWNpYmVscyhmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0
TWF4RGVjaWJlbHMoayk7IH0KKyAgICB2b2lkIHNldE1heERlY2liZWxzKGZsb2F0IGssIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBmbG9hdCBtYXhEZWNpYmVscygpIGNvbnN0IHsgcmV0dXJuIG1fYW5h
bHlzZXIubWF4RGVjaWJlbHMoKTsgfQogCi0gICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1lQ29uc3Rh
bnQoZmxvYXQgaykgeyBtX2FuYWx5c2VyLnNldFNtb290aGluZ1RpbWVDb25zdGFudChrKTsgfQor
ICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBmbG9hdCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2Fu
YWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCgpOyB9CiAKICAgICB2b2lkIGdldEZsb2F0RnJl
cXVlbmN5RGF0YShGbG9hdDMyQXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0RmxvYXRGcmVx
dWVuY3lEYXRhKGFycmF5KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAkocmV2aXNpb24gMTUyMzg3KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwxMSArMzAsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBm
cmVxdWVuY3lCaW5Db3VudDsKIAogICAgIC8vIG1pbkRlY2liZWxzIC8gbWF4RGVjaWJlbHMgcmVw
cmVzZW50IHRoZSByYW5nZSB0byBzY2FsZSB0aGUgRkZUIGFuYWx5c2lzIGRhdGEgZm9yIGNvbnZl
cnNpb24gdG8gdW5zaWduZWQgYnl0ZSB2YWx1ZXMuCi0gICAgYXR0cmlidXRlIGZsb2F0IG1pbkRl
Y2liZWxzOwotICAgIGF0dHJpYnV0ZSBmbG9hdCBtYXhEZWNpYmVsczsKKyAgICBbU2V0dGVyUmFp
c2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgZmxvYXQgbWluRGVjaWJlbHM7CisgICAgW1NldHRlclJh
aXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGZsb2F0IG1heERlY2liZWxzOwogCiAgICAgLy8gQSB2
YWx1ZSBmcm9tIDAuMCAtPiAxLjAgd2hlcmUgMC4wIHJlcHJlc2VudHMgbm8gdGltZSBhdmVyYWdp
bmcgd2l0aCB0aGUgbGFzdCBhbmFseXNpcyBmcmFtZS4KLSAgICBhdHRyaWJ1dGUgZmxvYXQgc21v
b3RoaW5nVGltZUNvbnN0YW50OworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0
ZSBmbG9hdCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQ7CiAKICAgICAvLyBDb3BpZXMgdGhlIGN1cnJl
bnQgZnJlcXVlbmN5IGRhdGEgaW50byB0aGUgcGFzc2VkIGFycmF5LgogICAgIC8vIElmIHRoZSBh
cnJheSBoYXMgZmV3ZXIgZWxlbWVudHMgdGhhbiB0aGUgZnJlcXVlbmN5QmluQ291bnQsIHRoZSBl
eGNlc3MgZWxlbWVudHMgd2lsbCBiZSBkcm9wcGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAko
cmV2aXNpb24gMTUyMzg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMjEgKzM3MywyMyBA
QCB1bnNpZ25lZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6Om51bWJlck9mCiAgICAgcmV0dXJuIG91
dHB1dCgwKS0+bnVtYmVyT2ZDaGFubmVscygpOwogfQogCi12b2lkIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6c3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0KQordm9pZCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFp
bk9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRHVyYXRpb24gb2YgMCBoYXMg
c3BlY2lhbCB2YWx1ZSwgbWVhbmluZyBjYWxjdWxhdGUgYmFzZWQgb24gdGhlIGVudGlyZSBidWZm
ZXIncyBkdXJhdGlvbi4KLSAgICBzdGFydEdyYWluKHdoZW4sIGdyYWluT2Zmc2V0LCAwKTsKKyAg
ICBzdGFydEdyYWluKHdoZW4sIGdyYWluT2Zmc2V0LCAwLCBlYyk7CiB9CiAKLXZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzdGFydEdyYWluKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZz
ZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uKQordm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0
YXJ0R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdyYWluRHVy
YXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAg
ICAgICAgIGNvbnRleHQoKS0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0NvbnRleHQ6
OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CiAKLSAgICBpZiAo
bV9wbGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKQorICAgIGlmIChtX3BsYXliYWNr
U3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmICghYnVmZmVyKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQyMSw5ICs0MjMsOSBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6c3RhcnRHcmFpbihkCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKLXZvaWQg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdy
YWluT2Zmc2V0LCBkb3VibGUgZ3JhaW5EdXJhdGlvbikKK3ZvaWQgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUg
Z3JhaW5EdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgc3RhcnRHcmFpbih3aGVu
LCBncmFpbk9mZnNldCwgZ3JhaW5EdXJhdGlvbik7CisgICAgc3RhcnRHcmFpbih3aGVuLCBncmFp
bk9mZnNldCwgZ3JhaW5EdXJhdGlvbiwgZWMpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaAkocmV2aXNpb24gMTUyMzg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgogI2luY2x1
ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTYyLDExICs2MywxMSBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpOwogCiAgICAgLy8gUGxheS1zdGF0ZQot
ICAgIHZvaWQgc3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0KTsKLSAg
ICB2b2lkIHN0YXJ0R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91Ymxl
IGdyYWluRHVyYXRpb24pOworICAgIHZvaWQgc3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91Ymxl
IGdyYWluT2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzdGFydEdyYWluKGRvdWJs
ZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uLCBFeGNlcHRp
b25Db2RlJik7CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKLSAgICB2b2lkIG5vdGVH
cmFpbk9uKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0
aW9uKTsKKyAgICB2b2lkIG5vdGVHcmFpbk9uKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZz
ZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAogICAg
IC8vIE5vdGU6IHRoZSBhdHRyaWJ1dGUgd2FzIG9yaWdpbmFsbHkgZXhwb3NlZCBhcyAubG9vcGlu
ZywgYnV0IHRvIGJlIG1vcmUgY29uc2lzdGVudCBpbiBuYW1pbmcgd2l0aCA8YXVkaW8+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuaWRsCShyZXZpc2lvbiAxNTIzODcpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDE2ICs0NCwxNiBAQAogICAgIGF0dHJpYnV0ZSBkb3VibGUgbG9vcFN0YXJ0OwogICAg
IGF0dHJpYnV0ZSBkb3VibGUgbG9vcEVuZDsKIAotICAgIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4p
OwotICAgIFtJbXBsZW1lbnRlZEFzPXN0YXJ0R3JhaW5dIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4s
IGRvdWJsZSBncmFpbk9mZnNldCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9c3RhcnRHcmFpbl0gdm9p
ZCBzdGFydChkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZ3JhaW5EdXJh
dGlvbik7Ci0gICAgdm9pZCBzdG9wKGRvdWJsZSB3aGVuKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9u
XSB2b2lkIHN0YXJ0KGRvdWJsZSB3aGVuKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdGFydEdyYWlu
LCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9m
ZnNldCk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRHcmFpbiwgUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHN0YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1
cmF0aW9uKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHN0b3AoZG91YmxlIHdoZW4pOwog
CiAgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU9dIGF0dHJpYnV0ZSBib29sZWFuIGxv
b3Bpbmc7IC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHRoZSAubG9vcCBhdHRyaWJ1dGUgZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5LgogCi0gICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVE
SU9dIHZvaWQgbm90ZU9uKGRvdWJsZSB3aGVuKTsKLSAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dF
Ql9BVURJT10gdm9pZCBub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0
LCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7Ci0gICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVE
SU9dIHZvaWQgbm90ZU9mZihkb3VibGUgd2hlbik7CisgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9X
RUJfQVVESU8sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBub3RlT24oZG91YmxlIHdoZW4pOworICAg
IFtDb25kaXRpb25hbD1MRUdBQ1lfV0VCX0FVRElPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgbm90
ZUdyYWluT24oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdyYWluRHVy
YXRpb24pOworICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfV0VCX0FVRElPLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgbm90ZU9mZihkb3VibGUgd2hlbik7CiAgICAgCiAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25lbmRlZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTIzODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyNyw4ICszMjcsOSBAQCBEb2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNv
bnN0CiBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNh
bXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4g
YXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJl
ck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKwogICAgIGlmICghYXVkaW9CdWZmZXIuZ2V0KCkpIHsK
LSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTQ2NCw3ICs0NjUsNyBAQCBQYXNzUmVm
UHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IEF1ZGlvQ29uCiAgICAgUmVmUHRyPFNjcmlwdFByb2Nl
c3Nvck5vZGU+IG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0
aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIGlmICghbm9kZS5nZXQoKSkgewot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNTUxLDcgKzU1Miw3IEBAIFBhc3NSZWZQdHI8
Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQXVkaW9Db24KICAgICBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVy
Tm9kZT4gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0
aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBudW1iZXJPZk91dHB1dHMpOwogCiAgICAgaWYgKCFub2Rl
LmdldCgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgZWMgPSBJTkRFWF9T
SVpFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01NzIsNyArNTczLDcgQEAg
UGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQXVkaW9Db250ZQogICAgIFJlZlB0cjxDaGFu
bmVsTWVyZ2VyTm9kZT4gbm9kZSA9IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUodGhpcywgbV9k
ZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgaWYg
KCFub2RlLmdldCgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgZWMgPSBJ
TkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01OTcsOCArNTk4
LDggQEAgUGFzc1JlZlB0cjxQZXJpb2RpY1dhdmU+IEF1ZGlvQ29udGV4dDo6YwogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgaWYgKCFyZWFsIHx8ICFpbWFnIHx8IChy
ZWFsLT5sZW5ndGgoKSAhPSBpbWFnLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgIGlmICghcmVhbCB8fCAhaW1hZyB8fCAocmVhbC0+bGVuZ3RoKCkgIT0gaW1hZy0+
bGVuZ3RoKCkgfHwgKHJlYWwtPmxlbmd0aCgpID4gNDA5NikpKSB7CisgICAgICAgIGVjID0gSU5E
RVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZS5jcHAJKHJldmlzaW9uIDE1MjM4NykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1LDM5ICsxMzUsNDMgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnVw
ZGF0ZVNjaAogICAgIHJldHVybjsKIH0KIAotdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6
OnN0YXJ0KGRvdWJsZSB3aGVuKQordm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0YXJ0
KGRvdWJsZSB3aGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCiAgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQogICAgICAgICBjb250ZXh0KCktPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQXVkaW9D
b250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOwogCi0g
ICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkKKyAgICBpZiAobV9w
bGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3N0YXJ0VGltZSA9
IHdoZW47CiAgICAgbV9wbGF5YmFja1N0YXRlID0gU0NIRURVTEVEX1NUQVRFOwogfQogCi12b2lk
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6c3RvcChkb3VibGUgd2hlbikKK3ZvaWQgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlOjpzdG9wKGRvdWJsZSB3aGVuLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghKG1fcGxheWJhY2tTdGF0
ZSA9PSBTQ0hFRFVMRURfU1RBVEUgfHwgbV9wbGF5YmFja1N0YXRlID09IFBMQVlJTkdfU1RBVEUp
KQorICAgIGlmICghKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RBVEUgfHwgbV9wbGF5
YmFja1N0YXRlID09IFBMQVlJTkdfU1RBVEUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgd2hlbiA9IG1heCgwLjAs
IHdoZW4pOwogICAgIG1fZW5kVGltZSA9IHdoZW47CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dF
Ql9BVURJTykKLXZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT24oZG91YmxlIHdo
ZW4pCit2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9uKGRvdWJsZSB3aGVuLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBzdGFydCh3aGVuKTsKKyAgICBzdGFydCh3aGVuLCBl
Yyk7CiB9CiAKLXZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT2ZmKGRvdWJsZSB3
aGVuKQordm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6Om5vdGVPZmYoZG91YmxlIHdoZW4s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHN0b3Aod2hlbik7CisgICAgc3RvcCh3aGVuLCBl
Yyk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCShyZXZpc2lvbiAxNTIz
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZV9oCiAKICNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsMTIgKzU4
LDEyIEBAIHB1YmxpYzoKICAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0
KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBTY2hlZHVsaW5nLgotICAgIHZvaWQgc3Rh
cnQoZG91YmxlIHdoZW4pOwotICAgIHZvaWQgc3RvcChkb3VibGUgd2hlbik7CisgICAgdm9pZCBz
dGFydChkb3VibGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc3RvcChkb3VibGUg
d2hlbiwgRXhjZXB0aW9uQ29kZSYpOwogCiAjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCi0g
ICAgdm9pZCBub3RlT24oZG91YmxlIHdoZW4pOwotICAgIHZvaWQgbm90ZU9mZihkb3VibGUgd2hl
bik7CisgICAgdm9pZCBub3RlT24oZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIG5vdGVPZmYoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCiAgICAg
dW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PihtX3BsYXliYWNrU3RhdGUpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAkocmV2aXNpb24g
MTUyMzg3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxMSBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCiAKLSAgICB2b2lkIHN0YXJ0
KGRvdWJsZSB3aGVuKTsKLSAgICB2b2lkIHN0b3AoZG91YmxlIHdoZW4pOworICAgIFtSYWlzZXNF
eGNlcHRpb25dIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4pOworICAgIFtSYWlzZXNFeGNlcHRpb25d
IHZvaWQgc3RvcChkb3VibGUgd2hlbik7CiAKLSAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dFQl9B
VURJT10gdm9pZCBub3RlT24oZG91YmxlIHdoZW4pOwotICAgIFtDb25kaXRpb25hbD1MRUdBQ1lf
V0VCX0FVRElPXSB2b2lkIG5vdGVPZmYoZG91YmxlIHdoZW4pOworICAgIFtDb25kaXRpb25hbD1M
RUdBQ1lfV0VCX0FVRElPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgbm90ZU9uKGRvdWJsZSB3aGVu
KTsKKyAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dFQl9BVURJTywgUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIG5vdGVPZmYoZG91YmxlIHdoZW4pOwogCiAgICAgdm9pZCBzZXRQZXJpb2RpY1dhdmUoUGVy
aW9kaWNXYXZlIHdhdmUpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI0MDcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wNy0w
NCAgUHJhdmVlbiBSIEphZGhhdiAgPHByYXZlZW4uakBzYW1zdW5nLmNvbT4KKworICAgICAgICBV
cGRhdGUgRXhjZXB0aW9uIGhhbmRsaW5nIGluIFdlYkF1ZGlvLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NDA1LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0IGNhc2VzIHRvIGNoZWNrIGV4
Y2VwdGlvbiBoYW5kbGluZyBpbiBBbmFseXNlck5vZGUgYW5kCisgICAgICAgIEF1ZGlvQnVmZmVy
U291cmNlTm9kZS4KKworICAgICAgICAqIHdlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1leGNlcHRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2J1ZmZlcnNv
dXJjZS1leGNlcHRpb24uaHRtbDogQWRkZWQuCisKIDIwMTMtMDctMDQgIENocmlzdG9waGUgRHVt
ZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIEhhdmUgU1ZHVGV4dENv
bnRlbnRFbGVtZW50IGluaGVyaXQgU1ZHR3JhcGhpY3NFbGVtZW50CkluZGV4OiBMYXlvdXRUZXN0
cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3dlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IEFuYWx5
c2VyTm9kZSB2YWxpZGF0ZXMgbWluRGVjaWJlbHMsIG1heERlY2liZWxzIGFuZCBzbW9vdGhpbmdU
aW1lQ29uc3RhbnQgdmFsdWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
YW5hbHlzZXIubWluRGVjaWJlbHMgPSAtMjAgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbmRleFNp
emVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBhbmFseXNlci5tYXhEZWNpYmVscyA9IC0x
MjAgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
LgorUEFTUyBhbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAyIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMS4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy93
ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3dlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9hdWRpb2J1ZmZlcnNvdXJjZS10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHk+CisKKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgQW5h
bHlzZXJOb2RlIHZhbGlkYXRlcyBtaW5EZWNpYmVscywgbWF4RGVjaWJlbHMgYW5kIHNtb290aGlu
Z1RpbWVDb25zdGFudCB2YWx1ZXMuIik7CisKK3ZhciBhbmFseXNlcjsKKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IH0KKworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBzYW1wbGVS
YXRlID0gNDQxMDAuMDsKKyAgICB2YXIgbnVtYmVyT2ZGcmFtZXMgPSAzMjsKKyAgICB2YXIgY29u
dGV4dCA9IG5ldyB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0KDEsIG51bWJlck9mRnJhbWVzLCBz
YW1wbGVSYXRlKTsKKyAgICBhbmFseXNlciA9IGNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTsKKyAg
ICBhbmFseXNlci5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisgICAgc2hvdWxkVGhy
b3coImFuYWx5c2VyLm1pbkRlY2liZWxzID0gLTIwIik7CisgICAgc2hvdWxkVGhyb3coImFuYWx5
c2VyLm1heERlY2liZWxzID0gLTEyMCIpOworICAgIHNob3VsZFRocm93KCJhbmFseXNlci5zbW9v
dGhpbmdUaW1lQ29uc3RhbnQgPSAyIik7CisKKyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBmaW5p
c2hKU1Rlc3Q7CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygpOworfQorCitydW5UZXN0KCk7
CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXJzb3VyY2UtZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlv
YnVmZmVyc291cmNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3RzIHRoYXQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHZhbGlkYXRlcyBzdGFy
dCBhbmQgc3RvcCBjYWxscy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGJ1
ZmZlclNvdXJjZS5zdG9wKDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJy
b3I6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGJ1ZmZlclNvdXJjZS5zdGFydCgwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlv
bi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXJz
b3VyY2UtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9D
VFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
YXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlv
YnVmZmVyc291cmNlLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKwor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBBdWRpb0J1ZmZlclNvdXJjZU5vZGUg
dmFsaWRhdGVzIHN0YXJ0IGFuZCBzdG9wIGNhbGxzLiIpOworCit2YXIgYnVmZmVyU291cmNlOwor
CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgdmFyIHNhbXBsZVJhdGUgPSA0NDEwMC4wOworICAgIHZhciBudW1iZXJPZkZyYW1lcyA9IDMy
OworICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgbnVt
YmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGJ1ZmZlclNvdXJjZSA9IGNvbnRleHQuY3Jl
YXRlQnVmZmVyU291cmNlKCk7CisgICAgYnVmZmVyU291cmNlLmJ1ZmZlciA9IGNyZWF0ZVRlc3RC
dWZmZXIoY29udGV4dCwgbnVtYmVyT2ZGcmFtZXMpOworICAgIGJ1ZmZlclNvdXJjZS5jb25uZWN0
KGNvbnRleHQuZGVzdGluYXRpb24pOworCisgICAgc2hvdWxkVGhyb3coImJ1ZmZlclNvdXJjZS5z
dG9wKDApIik7CisgICAgYnVmZmVyU291cmNlLnN0YXJ0KDApOworICAgIHNob3VsZFRocm93KCJi
dWZmZXJTb3VyY2Uuc3RhcnQoMCkiKTsKKyAgICBidWZmZXJTb3VyY2Uuc3RvcCgwKTsKKworICAg
IGNvbnRleHQub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyAgICBjb250ZXh0LnN0YXJ0UmVu
ZGVyaW5nKCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>
<flag name="review"
          id="227780"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206215</attachid>
            <date>2013-07-07 21:41:10 -0700</date>
            <delta_ts>2013-07-08 23:48:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WebAudio-118405.txt</filename>
            <type>text/plain</type>
            <size>20487</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjQzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTA3LTA3ICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFVwZGF0ZSBFeGNl
cHRpb24gaGFuZGxpbmcgaW4gV2ViQXVkaW8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0MDUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlLCBPc2NpbGxhdG9yTm9k
ZSBhbmQgQW5hbHlzZXJOb2RlIGRvbid0CisgICAgICAgIHByb3BhZ2F0ZSBleGNlcHRpb24gbWVu
dGlvbmVkIGluIFdlYkF1ZGlvIHNwZWMuCisgICAgICAgIENvZGUgdXBkYXRlZCB0byB0aHJvdyBE
T00gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgorCisgICAgICAgIFRlc3RzOiB3ZWJhdWRpby9hbmFs
eXNlci1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgd2ViYXVkaW8vYXVkaW9idWZmZXJz
b3VyY2UtZXhjZXB0aW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlz
ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0RmZ0U2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OnNldE1pbkRlY2liZWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0TWF4RGVjaWJlbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5hbHlzZXJOb2RlOjpzZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck5vZGUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6c3RhcnRHcmFpbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6Om5vdGVHcmFpbk9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3Nvcik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT24pOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT2ZmKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuaWRsOgorCiAyMDEzLTA3LTA2ICBSb2IgQnVpcyAgPHJidWlzQHJp
bS5jb20+CiAKICAgICAgICAgY3JlYXRlRWxlbWVudCgiaW1hZ2UiKSBjcmVhdGVzIGFuIEhUTUxJ
bWFnZUVsZW1lbnQsIGFsdGhvdWdoIHRoaXMgaGFjayBzaG91bGQgZXhpc3QgaW4gcGFyc2VyIG9u
bHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2Vy
Tm9kZS5jcHAJKHJldmlzaW9uIDE1MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQW5hbHlzZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsMzcgQEAg
dm9pZCBBbmFseXNlck5vZGU6OnJlc2V0KCkKIHZvaWQgQW5hbHlzZXJOb2RlOjpzZXRGZnRTaXpl
KHVuc2lnbmVkIHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV9hbmFseXNl
ci5zZXRGZnRTaXplKHNpemUpKQotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAg
ICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworfQorCit2b2lkIEFuYWx5c2VyTm9kZTo6c2V0TWlu
RGVjaWJlbHMoZmxvYXQgaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGsgPiBtYXhE
ZWNpYmVscygpKSB7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2FuYWx5c2VyLnNldE1pbkRlY2liZWxzKGspOworfQorCit2b2lk
IEFuYWx5c2VyTm9kZTo6c2V0TWF4RGVjaWJlbHMoZmxvYXQgaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKGsgPCBtaW5EZWNpYmVscygpKSB7CisgICAgICAgIGVjID0gSU5ERVhfU0la
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2FuYWx5c2VyLnNldE1heERl
Y2liZWxzKGspOworfQorCit2b2lkIEFuYWx5c2VyTm9kZTo6c2V0U21vb3RoaW5nVGltZUNvbnN0
YW50KGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChrIDwgMCB8fCBrID4g
MSkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9hbmFseXNlci5zZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQoayk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BbmFseXNlck5vZGUuaAkocmV2aXNpb24gMTUyNDExKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
MTMgKzUwLDEzIEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGZyZXF1ZW5jeUJpbkNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCgpOyB9CiAKLSAgICB2
b2lkIHNldE1pbkRlY2liZWxzKGZsb2F0IGspIHsgbV9hbmFseXNlci5zZXRNaW5EZWNpYmVscyhr
KTsgfQorICAgIHZvaWQgc2V0TWluRGVjaWJlbHMoZmxvYXQgaywgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGZsb2F0IG1pbkRlY2liZWxzKCkgY29uc3QgeyByZXR1cm4gbV9hbmFseXNlci5taW5EZWNp
YmVscygpOyB9CiAKLSAgICB2b2lkIHNldE1heERlY2liZWxzKGZsb2F0IGspIHsgbV9hbmFseXNl
ci5zZXRNYXhEZWNpYmVscyhrKTsgfQorICAgIHZvaWQgc2V0TWF4RGVjaWJlbHMoZmxvYXQgaywg
RXhjZXB0aW9uQ29kZSYpOwogICAgIGZsb2F0IG1heERlY2liZWxzKCkgY29uc3QgeyByZXR1cm4g
bV9hbmFseXNlci5tYXhEZWNpYmVscygpOyB9CiAKLSAgICB2b2lkIHNldFNtb290aGluZ1RpbWVD
b25zdGFudChmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGsp
OyB9CisgICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQoZmxvYXQgaywgRXhjZXB0aW9u
Q29kZSYpOwogICAgIGZsb2F0IHNtb290aGluZ1RpbWVDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5hbHlzZXIuc21vb3RoaW5nVGltZUNvbnN0YW50KCk7IH0KIAogICAgIHZvaWQgZ2V0Rmxv
YXRGcmVxdWVuY3lEYXRhKEZsb2F0MzJBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRGbG9h
dEZyZXF1ZW5jeURhdGEoYXJyYXkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCShyZXZpc2lvbiAxNTI0MTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDExICszMCwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGZyZXF1ZW5jeUJpbkNvdW50OwogCiAgICAgLy8gbWluRGVjaWJlbHMgLyBtYXhEZWNpYmVs
cyByZXByZXNlbnQgdGhlIHJhbmdlIHRvIHNjYWxlIHRoZSBGRlQgYW5hbHlzaXMgZGF0YSBmb3Ig
Y29udmVyc2lvbiB0byB1bnNpZ25lZCBieXRlIHZhbHVlcy4KLSAgICBhdHRyaWJ1dGUgZmxvYXQg
bWluRGVjaWJlbHM7Ci0gICAgYXR0cmlidXRlIGZsb2F0IG1heERlY2liZWxzOworICAgIFtTZXR0
ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBmbG9hdCBtaW5EZWNpYmVsczsKKyAgICBbU2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgZmxvYXQgbWF4RGVjaWJlbHM7CiAKICAgICAv
LyBBIHZhbHVlIGZyb20gMC4wIC0+IDEuMCB3aGVyZSAwLjAgcmVwcmVzZW50cyBubyB0aW1lIGF2
ZXJhZ2luZyB3aXRoIHRoZSBsYXN0IGFuYWx5c2lzIGZyYW1lLgotICAgIGF0dHJpYnV0ZSBmbG9h
dCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQ7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0
cmlidXRlIGZsb2F0IHNtb290aGluZ1RpbWVDb25zdGFudDsKIAogICAgIC8vIENvcGllcyB0aGUg
Y3VycmVudCBmcmVxdWVuY3kgZGF0YSBpbnRvIHRoZSBwYXNzZWQgYXJyYXkuCiAgICAgLy8gSWYg
dGhlIGFycmF5IGhhcyBmZXdlciBlbGVtZW50cyB0aGFuIHRoZSBmcmVxdWVuY3lCaW5Db3VudCwg
dGhlIGV4Y2VzcyBlbGVtZW50cyB3aWxsIGJlIGRyb3BwZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwCShyZXZpc2lvbiAxNTI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MywyMSArMzcz
LDIzIEBAIHVuc2lnbmVkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6bnVtYmVyT2YKICAgICByZXR1
cm4gb3V0cHV0KDApLT5udW1iZXJPZkNoYW5uZWxzKCk7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpzdGFydEdyYWluKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQpCit2
b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91Ymxl
IGdyYWluT2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBEdXJhdGlvbiBvZiAw
IGhhcyBzcGVjaWFsIHZhbHVlLCBtZWFuaW5nIGNhbGN1bGF0ZSBiYXNlZCBvbiB0aGUgZW50aXJl
IGJ1ZmZlcidzIGR1cmF0aW9uLgotICAgIHN0YXJ0R3JhaW4od2hlbiwgZ3JhaW5PZmZzZXQsIDAp
OworICAgIHN0YXJ0R3JhaW4od2hlbiwgZ3JhaW5PZmZzZXQsIDAsIGVjKTsKIH0KIAotdm9pZCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFp
bk9mZnNldCwgZG91YmxlIGdyYWluRHVyYXRpb24pCit2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6c3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZ3Jh
aW5EdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkKICAgICAgICAgY29udGV4dCgpLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEF1ZGlvQ29u
dGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKIAotICAg
IGlmIChtX3BsYXliYWNrU3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpCisgICAgaWYgKG1fcGxh
eWJhY2tTdGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKCFidWZmZXIoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDIxLDkgKzQyMyw5IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpzdGFydEdyYWluKGQKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQot
dm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6Om5vdGVHcmFpbk9uKGRvdWJsZSB3aGVuLCBkb3Vi
bGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uKQordm9pZCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6Om5vdGVHcmFpbk9uKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRv
dWJsZSBncmFpbkR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBzdGFydEdyYWlu
KHdoZW4sIGdyYWluT2Zmc2V0LCBncmFpbkR1cmF0aW9uKTsKKyAgICBzdGFydEdyYWluKHdoZW4s
IGdyYWluT2Zmc2V0LCBncmFpbkR1cmF0aW9uLCBlYyk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5oCShyZXZpc2lvbiAxNTI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAj
aW5jbHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjIsMTEgKzYzLDExIEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCk7CiAKICAgICAvLyBQbGF5LXN0
YXRlCi0gICAgdm9pZCBzdGFydEdyYWluKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQp
OwotICAgIHZvaWQgc3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBk
b3VibGUgZ3JhaW5EdXJhdGlvbik7CisgICAgdm9pZCBzdGFydEdyYWluKGRvdWJsZSB3aGVuLCBk
b3VibGUgZ3JhaW5PZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHN0YXJ0R3JhaW4o
ZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdyYWluRHVyYXRpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQotICAgIHZvaWQg
bm90ZUdyYWluT24oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdyYWlu
RHVyYXRpb24pOworICAgIHZvaWQgbm90ZUdyYWluT24oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFp
bk9mZnNldCwgZG91YmxlIGdyYWluRHVyYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgog
CiAgICAgLy8gTm90ZTogdGhlIGF0dHJpYnV0ZSB3YXMgb3JpZ2luYWxseSBleHBvc2VkIGFzIC5s
b29waW5nLCBidXQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIG5hbWluZyB3aXRoIDxhdWRpbz4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHJldmlzaW9uIDE1MjQxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDQsMTYgKzQ0LDE2IEBACiAgICAgYXR0cmlidXRlIGRvdWJsZSBsb29wU3RhcnQ7
CiAgICAgYXR0cmlidXRlIGRvdWJsZSBsb29wRW5kOwogCi0gICAgdm9pZCBzdGFydChkb3VibGUg
d2hlbik7Ci0gICAgW0ltcGxlbWVudGVkQXM9c3RhcnRHcmFpbl0gdm9pZCBzdGFydChkb3VibGUg
d2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0KTsKLSAgICBbSW1wbGVtZW50ZWRBcz1zdGFydEdyYWlu
XSB2b2lkIHN0YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFp
bkR1cmF0aW9uKTsKLSAgICB2b2lkIHN0b3AoZG91YmxlIHdoZW4pOworICAgIFtSYWlzZXNFeGNl
cHRpb25dIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4pOworICAgIFtJbXBsZW1lbnRlZEFzPXN0YXJ0
R3JhaW4sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzdGFydChkb3VibGUgd2hlbiwgZG91YmxlIGdy
YWluT2Zmc2V0KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdGFydEdyYWluLCBSYWlzZXNFeGNlcHRp
b25dIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdy
YWluRHVyYXRpb24pOworICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc3RvcChkb3VibGUgd2hl
bik7CiAKICAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dFQl9BVURJT10gYXR0cmlidXRlIGJvb2xl
YW4gbG9vcGluZzsgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgdGhlIC5sb29wIGF0dHJpYnV0ZSBm
b3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAKLSAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dF
Ql9BVURJT10gdm9pZCBub3RlT24oZG91YmxlIHdoZW4pOwotICAgIFtDb25kaXRpb25hbD1MRUdB
Q1lfV0VCX0FVRElPXSB2b2lkIG5vdGVHcmFpbk9uKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5P
ZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uKTsKLSAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dF
Ql9BVURJT10gdm9pZCBub3RlT2ZmKGRvdWJsZSB3aGVuKTsKKyAgICBbQ29uZGl0aW9uYWw9TEVH
QUNZX1dFQl9BVURJTywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIG5vdGVPbihkb3VibGUgd2hlbik7
CisgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU8sIFJhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCBub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZ3Jh
aW5EdXJhdGlvbik7CisgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU8sIFJhaXNlc0V4
Y2VwdGlvbl0gdm9pZCBub3RlT2ZmKGRvdWJsZSB3aGVuKTsKICAgICAKICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmVuZGVkOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE1MjQxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNiArOTEsNyBAQAogY29uc3QgaW50IFVuZGVmaW5lZFRocmVhZElkZW50aWZp
ZXIgPSAweGZmZmZmZmZmOwogCiBjb25zdCB1bnNpZ25lZCBNYXhOb2Rlc1RvRGVsZXRlUGVyUXVh
bnR1bSA9IDEwOworY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtMzI4LDcgKzMyOSw3IEBAIFBhc3NSZWZQ
dHI8QXVkaW9CdWZmZXI+IEF1ZGlvQ29udGV4dDo6Y3IKIHsKICAgICBSZWZQdHI8QXVkaW9CdWZm
ZXI+IGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBu
dW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CiAgICAgaWYgKCFhdWRpb0J1ZmZlci5nZXQoKSkg
ewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNDY0LDcgKzQ2NSw3IEBAIFBhc3NS
ZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gQXVkaW9Db24KICAgICBSZWZQdHI8U2NyaXB0UHJv
Y2Vzc29yTm9kZT4gbm9kZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rl
c3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgaWYgKCFub2RlLmdldCgpKSB7
Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01OTcsNyArNTk4LDcgQEAgUGFzc1JlZlB0
cjxQZXJpb2RpY1dhdmU+IEF1ZGlvQ29udGV4dDo6YwogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgCi0gICAgaWYgKCFyZWFsIHx8ICFpbWFnIHx8IChyZWFsLT5sZW5ndGgoKSAh
PSBpbWFnLT5sZW5ndGgoKSkpIHsKKyAgICBpZiAoIXJlYWwgfHwgIWltYWcgfHwgKHJlYWwtPmxl
bmd0aCgpICE9IGltYWctPmxlbmd0aCgpIHx8IChyZWFsLT5sZW5ndGgoKSA+IE1heFBlcmlvZGlj
V2F2ZUxlbmd0aCkgfHwgKHJlYWwtPmxlbmd0aCgpIDw9IDApKSkgewogICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAJKHJldmlzaW9uIDE1MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1
LDM5ICsxMzUsNDMgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnVwZGF0ZVNjaAog
ICAgIHJldHVybjsKIH0KIAotdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0YXJ0KGRv
dWJsZSB3aGVuKQordm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0YXJ0KGRvdWJsZSB3
aGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
CiAgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQogICAg
ICAgICBjb250ZXh0KCktPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQXVkaW9Db250ZXh0OjpS
ZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOwogCi0gICAgaWYgKG1f
cGxheWJhY2tTdGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkKKyAgICBpZiAobV9wbGF5YmFja1N0
YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3N0YXJ0VGltZSA9IHdoZW47CiAg
ICAgbV9wbGF5YmFja1N0YXRlID0gU0NIRURVTEVEX1NUQVRFOwogfQogCi12b2lkIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6c3RvcChkb3VibGUgd2hlbikKK3ZvaWQgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlOjpzdG9wKGRvdWJsZSB3aGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hF
RFVMRURfU1RBVEUgfHwgbV9wbGF5YmFja1N0YXRlID09IFBMQVlJTkdfU1RBVEUpKQorICAgIGlm
ICghKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RBVEUgfHwgbV9wbGF5YmFja1N0YXRl
ID09IFBMQVlJTkdfU1RBVEUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgd2hlbiA9IG1heCgwLjAsIHdoZW4pOwog
ICAgIG1fZW5kVGltZSA9IHdoZW47CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykK
LXZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT24oZG91YmxlIHdoZW4pCit2b2lk
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9uKGRvdWJsZSB3aGVuLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICBzdGFydCh3aGVuKTsKKyAgICBzdGFydCh3aGVuLCBlYyk7CiB9CiAK
LXZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT2ZmKGRvdWJsZSB3aGVuKQordm9p
ZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6Om5vdGVPZmYoZG91YmxlIHdoZW4sIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIHN0b3Aod2hlbik7CisgICAgc3RvcCh3aGVuLCBlYyk7CiB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCShyZXZpc2lvbiAxNTI0MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEF1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZV9oCiAKICNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsMTIgKzU4LDEyIEBAIHB1
YmxpYzoKICAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAKICAgICAvLyBTY2hlZHVsaW5nLgotICAgIHZvaWQgc3RhcnQoZG91Ymxl
IHdoZW4pOwotICAgIHZvaWQgc3RvcChkb3VibGUgd2hlbik7CisgICAgdm9pZCBzdGFydChkb3Vi
bGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc3RvcChkb3VibGUgd2hlbiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCi0gICAgdm9pZCBu
b3RlT24oZG91YmxlIHdoZW4pOwotICAgIHZvaWQgbm90ZU9mZihkb3VibGUgd2hlbik7CisgICAg
dm9pZCBub3RlT24oZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG5vdGVP
ZmYoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCiAgICAgdW5zaWduZWQg
c2hvcnQgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
IHNob3J0PihtX3BsYXliYWNrU3RhdGUpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAkocmV2aXNpb24gMTUyNDExKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
dWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCiAKLSAgICB2b2lkIHN0YXJ0KGRvdWJsZSB3
aGVuKTsKLSAgICB2b2lkIHN0b3AoZG91YmxlIHdoZW4pOworICAgIFtSYWlzZXNFeGNlcHRpb25d
IHZvaWQgc3RhcnQoZG91YmxlIHdoZW4pOworICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc3Rv
cChkb3VibGUgd2hlbik7CiAKLSAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dFQl9BVURJT10gdm9p
ZCBub3RlT24oZG91YmxlIHdoZW4pOwotICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfV0VCX0FVRElP
XSB2b2lkIG5vdGVPZmYoZG91YmxlIHdoZW4pOworICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfV0VC
X0FVRElPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgbm90ZU9uKGRvdWJsZSB3aGVuKTsKKyAgICBb
Q29uZGl0aW9uYWw9TEVHQUNZX1dFQl9BVURJTywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIG5vdGVP
ZmYoZG91YmxlIHdoZW4pOwogCiAgICAgdm9pZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZl
IHdhdmUpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI0MzgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wNy0wNyAgUHJhdmVl
biBSIEphZGhhdiAgPHByYXZlZW4uakBzYW1zdW5nLmNvbT4KKworICAgICAgICBVcGRhdGUgRXhj
ZXB0aW9uIGhhbmRsaW5nIGluIFdlYkF1ZGlvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NDA1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0IGNhc2VzIHRvIGNoZWNrIGV4Y2VwdGlvbiBo
YW5kbGluZyBpbiBBbmFseXNlck5vZGUgYW5kCisgICAgICAgIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZS4KKworICAgICAgICAqIHdlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1leGNlcHRpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1leGNl
cHRpb24uaHRtbDogQWRkZWQuCisKIDIwMTMtMDctMDYgIFJvYiBCdWlzICA8cmJ1aXNAcmltLmNv
bT4KIAogICAgICAgICBjcmVhdGVFbGVtZW50KCJpbWFnZSIpIGNyZWF0ZXMgYW4gSFRNTEltYWdl
RWxlbWVudCwgYWx0aG91Z2ggdGhpcyBoYWNrIHNob3VsZCBleGlzdCBpbiBwYXJzZXIgb25seQpJ
bmRleDogTGF5b3V0VGVzdHMvd2ViYXVkaW8vYW5hbHlzZXItZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd2ViYXVkaW8vYW5hbHlz
ZXItZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAor
VGVzdHMgdGhhdCBBbmFseXNlck5vZGUgdmFsaWRhdGVzIG1pbkRlY2liZWxzLCBtYXhEZWNpYmVs
cyBhbmQgc21vb3RoaW5nVGltZUNvbnN0YW50IHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitQQVNTIGFuYWx5c2VyLm1pbkRlY2liZWxzID0gLTIwIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgYW5hbHlzZXIu
bWF4RGVjaWJlbHMgPSAtMTIwIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW5kZXhTaXplRXJyb3I6
IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgYW5hbHlzZXIuc21vb3RoaW5nVGltZUNvbnN0YW50ID0g
MiB0aHJldyBleGNlcHRpb24gRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvd2ViYXVkaW8vYW5hbHlzZXItZXhjZXB0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd2ViYXVkaW8vYW5hbHlzZXItZXhjZXB0aW9uLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24uaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaW9idWZmZXJzb3VyY2UtdGVzdGluZy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IEFuYWx5c2VyTm9kZSB2YWxpZGF0ZXMgbWluRGVjaWJlbHMsIG1heERlY2li
ZWxzIGFuZCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQgdmFsdWVzLiIpOworCit2YXIgYW5hbHlzZXI7
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICB2YXIgc2FtcGxlUmF0ZSA9IDQ0MTAwLjA7CisgICAgdmFyIG51bWJlck9mRnJhbWVzID0g
MzI7CisgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dCgxLCBu
dW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYW5hbHlzZXIgPSBjb250ZXh0LmNyZWF0
ZUFuYWx5c2VyKCk7CisgICAgYW5hbHlzZXIuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsK
KworICAgIHNob3VsZFRocm93KCJhbmFseXNlci5taW5EZWNpYmVscyA9IC0yMCIsICInRXJyb3I6
IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEnIik7CisgICAgc2hvdWxkVGhyb3coImFu
YWx5c2VyLm1heERlY2liZWxzID0gLTEyMCIsICInRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00g
RXhjZXB0aW9uIDEnIik7CisgICAgc2hvdWxkVGhyb3coImFuYWx5c2VyLnNtb290aGluZ1RpbWVD
b25zdGFudCA9IDIiLCAiJ0Vycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxJyIp
OworCisgICAgY29udGV4dC5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworICAgIGNvbnRleHQu
c3RhcnRSZW5kZXJpbmcoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZlcnNv
dXJjZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dl
YmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IEF1
ZGlvQnVmZmVyU291cmNlTm9kZSB2YWxpZGF0ZXMgc3RhcnQgYW5kIHN0b3AgY2FsbHMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBidWZmZXJTb3VyY2Uuc3RvcCgwKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgor
UEFTUyBidWZmZXJTb3VyY2Uuc3RhcnQoMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlk
U3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b2J1ZmZlcnNvdXJjZS1leGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93
ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpb2J1ZmZlcnNvdXJjZS10ZXN0aW5nLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHZhbGlkYXRlcyBzdGFydCBhbmQgc3Rv
cCBjYWxscy4iKTsKKwordmFyIGJ1ZmZlclNvdXJjZTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBzYW1wbGVSYXRlID0gNDQx
MDAuMDsKKyAgICB2YXIgbnVtYmVyT2ZGcmFtZXMgPSAzMjsKKyAgICB2YXIgY29udGV4dCA9IG5l
dyB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0KDEsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRl
KTsKKyAgICBidWZmZXJTb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAg
IGJ1ZmZlclNvdXJjZS5idWZmZXIgPSBjcmVhdGVUZXN0QnVmZmVyKGNvbnRleHQsIG51bWJlck9m
RnJhbWVzKTsKKyAgICBidWZmZXJTb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsK
KworICAgIHNob3VsZFRocm93KCJidWZmZXJTb3VyY2Uuc3RvcCgwKSIsICInRXJyb3I6IEludmFs
aWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOworICAgIGJ1ZmZlclNvdXJjZS5zdGFy
dCgwKTsKKyAgICBzaG91bGRUaHJvdygiYnVmZmVyU291cmNlLnN0YXJ0KDApIiwgIidFcnJvcjog
SW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEnIik7CisgICAgYnVmZmVyU291cmNl
LnN0b3AoMCk7CisKKyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAg
Y29udGV4dC5zdGFydFJlbmRlcmluZygpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="227874"
          type_id="1"
          status="+"
          setter="crogers"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206296</attachid>
            <date>2013-07-08 23:48:31 -0700</date>
            <delta_ts>2013-07-09 03:00:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WebAudio-118405.txt</filename>
            <type>text/plain</type>
            <size>20803</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTA3LTA4ICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIFVwZGF0ZSBFeGNl
cHRpb24gaGFuZGxpbmcgaW4gV2ViQXVkaW8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0MDUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
Um9nZXJzLgorCisgICAgICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZSwgT3NjaWxsYXRvck5vZGUg
YW5kIEFuYWx5c2VyTm9kZSBkb24ndAorICAgICAgICBwcm9wYWdhdGUgZXhjZXB0aW9uIG1lbnRp
b25lZCBpbiBXZWJBdWRpbyBzcGVjLgorICAgICAgICBDb2RlIHVwZGF0ZWQgdG8gdGhyb3cgRE9N
IGV4Y2VwdGlvbiBhcyBleHBlY3RlZC4KKworICAgICAgICBUZXN0czogd2ViYXVkaW8vYW5hbHlz
ZXItZXhjZXB0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmF1ZGlvL2F1ZGlvYnVmZmVyc291
cmNlLWV4Y2VwdGlvbi5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2Vy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OnNldEZmdFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpzZXRNaW5EZWNpYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpBbmFseXNlck5vZGU6OnNldE1heERlY2liZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFuYWx5c2VyTm9kZTo6c2V0U21vb3RoaW5nVGltZUNvbnN0YW50KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OnN0YXJ0R3JhaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Ojpub3RlR3JhaW5Pbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dhdmUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9mZik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbDoKKwogMjAxMy0wNy0wOCAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NTUyBHcmlkIExheW91dF0gUmVuYW1lIGdy
aWQte3Jvd3N8Y29sdW1uc30gdG8gZ3JpZC1kZWZpbml0aW9uLXtyb3dzfGNvbHVtbnN9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3Bw
CShyZXZpc2lvbiAxNTI0NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDM3IEBAIHZvaWQgQW5h
bHlzZXJOb2RlOjpyZXNldCgpCiB2b2lkIEFuYWx5c2VyTm9kZTo6c2V0RmZ0U2l6ZSh1bnNpZ25l
ZCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fYW5hbHlzZXIuc2V0RmZ0
U2l6ZShzaXplKSkKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgZWMg
PSBJTkRFWF9TSVpFX0VSUjsKK30KKwordm9pZCBBbmFseXNlck5vZGU6OnNldE1pbkRlY2liZWxz
KGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChrID4gbWF4RGVjaWJlbHMo
KSkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9hbmFseXNlci5zZXRNaW5EZWNpYmVscyhrKTsKK30KKwordm9pZCBBbmFseXNl
ck5vZGU6OnNldE1heERlY2liZWxzKGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmIChrIDwgbWluRGVjaWJlbHMoKSkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9hbmFseXNlci5zZXRNYXhEZWNpYmVscyhr
KTsKK30KKwordm9pZCBBbmFseXNlck5vZGU6OnNldFNtb290aGluZ1RpbWVDb25zdGFudChmbG9h
dCBrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoayA8IDAgfHwgayA+IDEpIHsKKyAg
ICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fYW5hbHlzZXIuc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGspOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5
c2VyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QW5hbHlzZXJOb2RlLmgJKHJldmlzaW9uIDE1MjQ3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1MCwx
MyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBmcmVxdWVuY3lCaW5Db3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQoKTsgfQogCi0gICAgdm9pZCBzZXRN
aW5EZWNpYmVscyhmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0TWluRGVjaWJlbHMoayk7IH0KKyAg
ICB2b2lkIHNldE1pbkRlY2liZWxzKGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBmbG9h
dCBtaW5EZWNpYmVscygpIGNvbnN0IHsgcmV0dXJuIG1fYW5hbHlzZXIubWluRGVjaWJlbHMoKTsg
fQogCi0gICAgdm9pZCBzZXRNYXhEZWNpYmVscyhmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0TWF4
RGVjaWJlbHMoayk7IH0KKyAgICB2b2lkIHNldE1heERlY2liZWxzKGZsb2F0IGssIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBmbG9hdCBtYXhEZWNpYmVscygpIGNvbnN0IHsgcmV0dXJuIG1fYW5hbHlz
ZXIubWF4RGVjaWJlbHMoKTsgfQogCi0gICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQo
ZmxvYXQgaykgeyBtX2FuYWx5c2VyLnNldFNtb290aGluZ1RpbWVDb25zdGFudChrKTsgfQorICAg
IHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGZsb2F0IGssIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBmbG9hdCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5
c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCgpOyB9CiAKICAgICB2b2lkIGdldEZsb2F0RnJlcXVl
bmN5RGF0YShGbG9hdDMyQXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0RmxvYXRGcmVxdWVu
Y3lEYXRhKGFycmF5KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
bmFseXNlck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQW5hbHlzZXJOb2RlLmlkbAkocmV2aXNpb24gMTUyNDc5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwxMSArMzAsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBmcmVx
dWVuY3lCaW5Db3VudDsKIAogICAgIC8vIG1pbkRlY2liZWxzIC8gbWF4RGVjaWJlbHMgcmVwcmVz
ZW50IHRoZSByYW5nZSB0byBzY2FsZSB0aGUgRkZUIGFuYWx5c2lzIGRhdGEgZm9yIGNvbnZlcnNp
b24gdG8gdW5zaWduZWQgYnl0ZSB2YWx1ZXMuCi0gICAgYXR0cmlidXRlIGZsb2F0IG1pbkRlY2li
ZWxzOwotICAgIGF0dHJpYnV0ZSBmbG9hdCBtYXhEZWNpYmVsczsKKyAgICBbU2V0dGVyUmFpc2Vz
RXhjZXB0aW9uXSBhdHRyaWJ1dGUgZmxvYXQgbWluRGVjaWJlbHM7CisgICAgW1NldHRlclJhaXNl
c0V4Y2VwdGlvbl0gYXR0cmlidXRlIGZsb2F0IG1heERlY2liZWxzOwogCiAgICAgLy8gQSB2YWx1
ZSBmcm9tIDAuMCAtPiAxLjAgd2hlcmUgMC4wIHJlcHJlc2VudHMgbm8gdGltZSBhdmVyYWdpbmcg
d2l0aCB0aGUgbGFzdCBhbmFseXNpcyBmcmFtZS4KLSAgICBhdHRyaWJ1dGUgZmxvYXQgc21vb3Ro
aW5nVGltZUNvbnN0YW50OworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBm
bG9hdCBzbW9vdGhpbmdUaW1lQ29uc3RhbnQ7CiAKICAgICAvLyBDb3BpZXMgdGhlIGN1cnJlbnQg
ZnJlcXVlbmN5IGRhdGEgaW50byB0aGUgcGFzc2VkIGFycmF5LgogICAgIC8vIElmIHRoZSBhcnJh
eSBoYXMgZmV3ZXIgZWxlbWVudHMgdGhhbiB0aGUgZnJlcXVlbmN5QmluQ291bnQsIHRoZSBleGNl
c3MgZWxlbWVudHMgd2lsbCBiZSBkcm9wcGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAkocmV2
aXNpb24gMTUyNDc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMjEgKzM3MywyMyBAQCB1
bnNpZ25lZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6Om51bWJlck9mCiAgICAgcmV0dXJuIG91dHB1
dCgwKS0+bnVtYmVyT2ZDaGFubmVscygpOwogfQogCi12b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6c3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0KQordm9pZCBBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRHVyYXRpb24gb2YgMCBoYXMgc3Bl
Y2lhbCB2YWx1ZSwgbWVhbmluZyBjYWxjdWxhdGUgYmFzZWQgb24gdGhlIGVudGlyZSBidWZmZXIn
cyBkdXJhdGlvbi4KLSAgICBzdGFydEdyYWluKHdoZW4sIGdyYWluT2Zmc2V0LCAwKTsKKyAgICBz
dGFydEdyYWluKHdoZW4sIGdyYWluT2Zmc2V0LCAwLCBlYyk7CiB9CiAKLXZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpzdGFydEdyYWluKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQs
IGRvdWJsZSBncmFpbkR1cmF0aW9uKQordm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0
R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdyYWluRHVyYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAg
ICAgIGNvbnRleHQoKS0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0NvbnRleHQ6OlJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CiAKLSAgICBpZiAobV9w
bGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKQorICAgIGlmIChtX3BsYXliYWNrU3Rh
dGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmICghYnVmZmVyKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTQyMSw5ICs0MjMsOSBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
c3RhcnRHcmFpbihkCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKLXZvaWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWlu
T2Zmc2V0LCBkb3VibGUgZ3JhaW5EdXJhdGlvbikKK3ZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Ojpub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZ3Jh
aW5EdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgc3RhcnRHcmFpbih3aGVuLCBn
cmFpbk9mZnNldCwgZ3JhaW5EdXJhdGlvbik7CisgICAgc3RhcnRHcmFpbih3aGVuLCBncmFpbk9m
ZnNldCwgZ3JhaW5EdXJhdGlvbiwgZWMpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
aAkocmV2aXNpb24gMTUyNDc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgogI2luY2x1ZGUg
IkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTYyLDExICs2MywxMSBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpOwogCiAgICAgLy8gUGxheS1zdGF0ZQotICAg
IHZvaWQgc3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0KTsKLSAgICB2
b2lkIHN0YXJ0R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdy
YWluRHVyYXRpb24pOworICAgIHZvaWQgc3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdy
YWluT2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzdGFydEdyYWluKGRvdWJsZSB3
aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uLCBFeGNlcHRpb25D
b2RlJik7CiAKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKLSAgICB2b2lkIG5vdGVHcmFp
bk9uKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9u
KTsKKyAgICB2b2lkIG5vdGVHcmFpbk9uKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQs
IGRvdWJsZSBncmFpbkR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAogICAgIC8v
IE5vdGU6IHRoZSBhdHRyaWJ1dGUgd2FzIG9yaWdpbmFsbHkgZXhwb3NlZCBhcyAubG9vcGluZywg
YnV0IHRvIGJlIG1vcmUgY29uc2lzdGVudCBpbiBuYW1pbmcgd2l0aCA8YXVkaW8+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaWRsCShyZXZpc2lvbiAxNTI0NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDE2ICs0NCwxNiBAQAogICAgIGF0dHJpYnV0ZSBkb3VibGUgbG9vcFN0YXJ0OwogICAgIGF0
dHJpYnV0ZSBkb3VibGUgbG9vcEVuZDsKIAotICAgIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4pOwot
ICAgIFtJbXBsZW1lbnRlZEFzPXN0YXJ0R3JhaW5dIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4sIGRv
dWJsZSBncmFpbk9mZnNldCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9c3RhcnRHcmFpbl0gdm9pZCBz
dGFydChkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZ3JhaW5EdXJhdGlv
bik7Ci0gICAgdm9pZCBzdG9wKGRvdWJsZSB3aGVuKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHN0YXJ0KGRvdWJsZSB3aGVuKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdGFydEdyYWluLCBS
YWlzZXNFeGNlcHRpb25dIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNl
dCk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRHcmFpbiwgUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IHN0YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0
aW9uKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHN0b3AoZG91YmxlIHdoZW4pOwogCiAg
ICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU9dIGF0dHJpYnV0ZSBib29sZWFuIGxvb3Bp
bmc7IC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHRoZSAubG9vcCBhdHRyaWJ1dGUgZm9yIGJhY2t3
YXJkcyBjb21wYXRpYmlsaXR5LgogCi0gICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU9d
IHZvaWQgbm90ZU9uKGRvdWJsZSB3aGVuKTsKLSAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dFQl9B
VURJT10gdm9pZCBub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBk
b3VibGUgZ3JhaW5EdXJhdGlvbik7Ci0gICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU9d
IHZvaWQgbm90ZU9mZihkb3VibGUgd2hlbik7CisgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJf
QVVESU8sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBub3RlT24oZG91YmxlIHdoZW4pOworICAgIFtD
b25kaXRpb25hbD1MRUdBQ1lfV0VCX0FVRElPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgbm90ZUdy
YWluT24oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdyYWluRHVyYXRp
b24pOworICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfV0VCX0FVRElPLCBSYWlzZXNFeGNlcHRpb25d
IHZvaWQgbm90ZU9mZihkb3VibGUgd2hlbik7CiAgICAgCiAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25lbmRlZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTI0NzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDYgKzkxLDcgQEAKIGNvbnN0IGludCBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyID0gMHhm
ZmZmZmZmZjsKIAogY29uc3QgdW5zaWduZWQgTWF4Tm9kZXNUb0RlbGV0ZVBlclF1YW50dW0gPSAx
MDsKK2NvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9IDQwOTY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTMyOCw3ICszMjksNyBAQCBQYXNzUmVmUHRyPEF1ZGlv
QnVmZmVyPiBBdWRpb0NvbnRleHQ6OmNyCiB7CiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBhdWRp
b0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZG
cmFtZXMsIHNhbXBsZVJhdGUpOwogICAgIGlmICghYXVkaW9CdWZmZXIuZ2V0KCkpIHsKLSAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTQ2NCw3ICs0NjUsNyBAQCBQYXNzUmVmUHRyPFNj
cmlwdFByb2Nlc3Nvck5vZGU+IEF1ZGlvQ29uCiAgICAgUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5v
ZGU+IG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlv
bk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIGlmICghbm9kZS5nZXQoKSkgewotICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApAQCAtNTk3LDcgKzU5OCw3IEBAIFBhc3NSZWZQdHI8UGVyaW9k
aWNXYXZlPiBBdWRpb0NvbnRleHQ6OmMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIAotICAgIGlmICghcmVhbCB8fCAhaW1hZyB8fCAocmVhbC0+bGVuZ3RoKCkgIT0gaW1hZy0+
bGVuZ3RoKCkpKSB7CisgICAgaWYgKCFyZWFsIHx8ICFpbWFnIHx8IChyZWFsLT5sZW5ndGgoKSAh
PSBpbWFnLT5sZW5ndGgoKSB8fCAocmVhbC0+bGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5n
dGgpIHx8IChyZWFsLT5sZW5ndGgoKSA8PSAwKSkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
CShyZXZpc2lvbiAxNTI0NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwzOSArMTM1
LDQzIEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjp1cGRhdGVTY2gKICAgICByZXR1
cm47CiB9CiAKLXZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdGFydChkb3VibGUgd2hl
bikKK3ZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdGFydChkb3VibGUgd2hlbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlm
IChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgY29u
dGV4dCgpLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVz
ZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKIAotICAgIGlmIChtX3BsYXliYWNr
U3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpCisgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBV
TlNDSEVEVUxFRF9TVEFURSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9zdGFydFRpbWUgPSB3aGVuOwogICAgIG1fcGxh
eWJhY2tTdGF0ZSA9IFNDSEVEVUxFRF9TVEFURTsKIH0KIAotdm9pZCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OnN0b3AoZG91YmxlIHdoZW4pCit2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZTo6c3RvcChkb3VibGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBpZiAoIShtX3BsYXliYWNrU3RhdGUgPT0gU0NIRURVTEVEX1NU
QVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBQTEFZSU5HX1NUQVRFKSkKKyAgICBpZiAoIShtX3Bs
YXliYWNrU3RhdGUgPT0gU0NIRURVTEVEX1NUQVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBQTEFZ
SU5HX1NUQVRFKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIAogICAgIHdoZW4gPSBtYXgoMC4wLCB3aGVuKTsKICAgICBtX2Vu
ZFRpbWUgPSB3aGVuOwogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCi12b2lkIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9uKGRvdWJsZSB3aGVuKQordm9pZCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6Om5vdGVPbihkb3VibGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgc3RhcnQod2hlbik7CisgICAgc3RhcnQod2hlbiwgZWMpOwogfQogCi12b2lkIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9mZihkb3VibGUgd2hlbikKK3ZvaWQgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT2ZmKGRvdWJsZSB3aGVuLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBzdG9wKHdoZW4pOworICAgIHN0b3Aod2hlbiwgZWMpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAkocmV2aXNpb24gMTUyNDc5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGVfaAogCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU3LDEyICs1OCwxMiBAQCBwdWJsaWM6CiAg
ICAgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJh
dGUpOwogCiAgICAgLy8gU2NoZWR1bGluZy4KLSAgICB2b2lkIHN0YXJ0KGRvdWJsZSB3aGVuKTsK
LSAgICB2b2lkIHN0b3AoZG91YmxlIHdoZW4pOworICAgIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4s
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHN0b3AoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQotICAgIHZvaWQgbm90ZU9uKGRv
dWJsZSB3aGVuKTsKLSAgICB2b2lkIG5vdGVPZmYoZG91YmxlIHdoZW4pOworICAgIHZvaWQgbm90
ZU9uKGRvdWJsZSB3aGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBub3RlT2ZmKGRvdWJs
ZSB3aGVuLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIHNob3J0IHBs
YXliYWNrU3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4o
bV9wbGF5YmFja1N0YXRlKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwJKHJldmlzaW9uIDE1MjQ3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00OCwxMSArNDgsMTEgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJh
bSBmcmVxdWVuY3k7IC8vIGluIEhlcnR6CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFy
YW0gZGV0dW5lOyAvLyBpbiBDZW50cwogCi0gICAgdm9pZCBzdGFydChkb3VibGUgd2hlbik7Ci0g
ICAgdm9pZCBzdG9wKGRvdWJsZSB3aGVuKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHN0
YXJ0KGRvdWJsZSB3aGVuKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHN0b3AoZG91Ymxl
IHdoZW4pOwogCi0gICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU9dIHZvaWQgbm90ZU9u
KGRvdWJsZSB3aGVuKTsKLSAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dFQl9BVURJT10gdm9pZCBu
b3RlT2ZmKGRvdWJsZSB3aGVuKTsKKyAgICBbQ29uZGl0aW9uYWw9TEVHQUNZX1dFQl9BVURJTywg
UmFpc2VzRXhjZXB0aW9uXSB2b2lkIG5vdGVPbihkb3VibGUgd2hlbik7CisgICAgW0NvbmRpdGlv
bmFsPUxFR0FDWV9XRUJfQVVESU8sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBub3RlT2ZmKGRvdWJs
ZSB3aGVuKTsKIAogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSB3YXZlKTsK
IApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNDgwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDctMDggIFByYXZlZW4gUiBKYWRo
YXYgIDxwcmF2ZWVuLmpAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgVXBkYXRlIEV4Y2VwdGlvbiBo
YW5kbGluZyBpbiBXZWJBdWRpby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODQwNS4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBSb2dlcnMu
CisKKyAgICAgICAgTmV3IHRlc3QgY2FzZXMgdG8gY2hlY2sgZXhjZXB0aW9uIGhhbmRsaW5nIGlu
IEFuYWx5c2VyTm9kZSBhbmQKKyAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlLgorCisgICAg
ICAgICogd2ViYXVkaW8vYW5hbHlzZXItZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViYXVkaW8vYW5hbHlzZXItZXhjZXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHdlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi5odG1s
OiBBZGRlZC4KKwogMjAxMy0wNy0wOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0NTUyBHcmlkIExheW91dF0gUmVuYW1lIGdyaWQte3Jvd3N8Y29s
dW1uc30gdG8gZ3JpZC1kZWZpbml0aW9uLXtyb3dzfGNvbHVtbnN9CkluZGV4OiBMYXlvdXRUZXN0
cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3dlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IEFuYWx5
c2VyTm9kZSB2YWxpZGF0ZXMgbWluRGVjaWJlbHMsIG1heERlY2liZWxzIGFuZCBzbW9vdGhpbmdU
aW1lQ29uc3RhbnQgdmFsdWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
YW5hbHlzZXIubWluRGVjaWJlbHMgPSAtMjAgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbmRleFNp
emVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBhbmFseXNlci5tYXhEZWNpYmVscyA9IC0x
MjAgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
LgorUEFTUyBhbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAyIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMS4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy93
ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy93ZWJhdWRpby9hbmFseXNlci1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3dlYmF1ZGlvL2FuYWx5c2VyLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9hdWRpb2J1ZmZlcnNvdXJjZS10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHk+CisKKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgQW5h
bHlzZXJOb2RlIHZhbGlkYXRlcyBtaW5EZWNpYmVscywgbWF4RGVjaWJlbHMgYW5kIHNtb290aGlu
Z1RpbWVDb25zdGFudCB2YWx1ZXMuIik7CisKK3ZhciBhbmFseXNlcjsKKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IH0KKworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBzYW1wbGVS
YXRlID0gNDQxMDAuMDsKKyAgICB2YXIgbnVtYmVyT2ZGcmFtZXMgPSAzMjsKKyAgICB2YXIgY29u
dGV4dCA9IG5ldyB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0KDEsIG51bWJlck9mRnJhbWVzLCBz
YW1wbGVSYXRlKTsKKyAgICBhbmFseXNlciA9IGNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTsKKyAg
ICBhbmFseXNlci5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisgICAgLy8gJ21pbkRl
Y2liZWxzJyBzaG91bGRuJ3QgYmUgZ3JlYXRlciB0aGFuICdtYXhEZWNpYmVscycgd2hpY2ggZGVm
YXVsdHMgdG8gLTMwZEIuCisgICAgc2hvdWxkVGhyb3coImFuYWx5c2VyLm1pbkRlY2liZWxzID0g
LTIwIiwgIidFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMSciKTsKKworICAg
IC8vICdtYXhEZWNpYmVscycgc2hvdWxkbid0IGJlIGxlc3MgdGhhbiAnbWluRGVjaWJlbHMnIHdo
aWNoIGRlZmF1bHRzIHRvIC0xMDBkQi4KKyAgICBzaG91bGRUaHJvdygiYW5hbHlzZXIubWF4RGVj
aWJlbHMgPSAtMTIwIiwgIidFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMSci
KTsKKworICAgIC8vICdzbW9vdGhpbmdUaW1lQ29uc3RhbnQnIHJhbmdlIGlzIGJldHdlZW4gMCBh
bmQgMS4KKyAgICBzaG91bGRUaHJvdygiYW5hbHlzZXIuc21vb3RoaW5nVGltZUNvbnN0YW50ID0g
MiIsICInRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEnIik7CisKKyAgICBj
b250ZXh0Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAgY29udGV4dC5zdGFydFJlbmRl
cmluZygpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2Vw
dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVk
aW9idWZmZXJzb3VyY2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlIHZhbGlkYXRlcyBzdGFydCBhbmQgc3RvcCBjYWxscy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitQQVNTIGJ1ZmZlclNvdXJjZS5zdG9wKDApIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGJ1ZmZl
clNvdXJjZS5zdGFydCgwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9y
OiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291
cmNlLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmF1ZGlvL2F1
ZGlvYnVmZmVyc291cmNlLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvd2ViYXVkaW8vYXVkaW9idWZmZXJzb3VyY2UtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlvYnVmZmVyc291cmNlLXRlc3RpbmcuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgdmFsaWRhdGVzIHN0YXJ0IGFuZCBzdG9wIGNhbGxzLiIp
OworCit2YXIgYnVmZmVyU291cmNlOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIHNhbXBsZVJhdGUgPSA0NDEwMC4wOworICAg
IHZhciBudW1iZXJPZkZyYW1lcyA9IDMyOworICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdE9m
ZmxpbmVBdWRpb0NvbnRleHQoMSwgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGJ1
ZmZlclNvdXJjZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgYnVmZmVyU291
cmNlLmJ1ZmZlciA9IGNyZWF0ZVRlc3RCdWZmZXIoY29udGV4dCwgbnVtYmVyT2ZGcmFtZXMpOwor
ICAgIGJ1ZmZlclNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisgICAgLy8g
J3N0b3AnIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciAnc3RhcnQnLgorICAgIHNob3VsZFRo
cm93KCJidWZmZXJTb3VyY2Uuc3RvcCgwKSIsICInRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBE
T00gRXhjZXB0aW9uIDExJyIpOworICAgIGJ1ZmZlclNvdXJjZS5zdGFydCgwKTsKKworICAgIC8v
ICdzdGFydCcgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UuCisgICAgc2hvdWxkVGhyb3coImJ1
ZmZlclNvdXJjZS5zdGFydCgwKSIsICInRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhj
ZXB0aW9uIDExJyIpOworICAgIGJ1ZmZlclNvdXJjZS5zdG9wKDApOworCisgICAgY29udGV4dC5v
bmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsK
K30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>