<?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>133298</bug_id>
          
          <creation_ts>2014-05-26 23:19:06 -0700</creation_ts>
          <short_desc>Add mock DTMFSender support</short_desc>
          <delta_ts>2022-03-01 02:58:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kiran">kiran.guduru</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>philipj</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1011892</commentid>
    <comment_count>0</comment_count>
    <who name="Kiran">kiran.guduru</who>
    <bug_when>2014-05-26 23:19:06 -0700</bug_when>
    <thetext>We are not able to test DTMFSender because of the lack of both actual implementation and MOCK implementation.
This bug is to implement a mock implementation for DTMF sender for testing the default basic behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012362</commentid>
    <comment_count>1</comment_count>
      <attachid>232235</attachid>
    <who name="Kiran">kiran.guduru</who>
    <bug_when>2014-05-28 23:26:38 -0700</bug_when>
    <thetext>Created attachment 232235
Implemented mock RTCDTMFSender

Implemented mock RTCDTMFSender</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012432</commentid>
    <comment_count>2</comment_count>
      <attachid>232235</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-05-29 08:50:55 -0700</bug_when>
    <thetext>Comment on attachment 232235
Implemented mock RTCDTMFSender

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

&gt; Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:36
&gt; +    : m_toneBuffer(&quot;&quot;)

This is unnecessary, the String default constructor will initialize this.

&gt; Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:39
&gt; +    , m_insertDTMF(true)

Nit: this is never changed, why not just hard code canInsertDTMF() to return true?

&gt; Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:48
&gt; +    if (!client)
&gt; +        return;
&gt; +
&gt; +    m_client = client;

This will leave m_client set to a bogus pointer when called from RTCDTMFSender::stop!

&gt; Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:61
&gt; +bool RTCDTMFSenderHandlerMock::insertDTMF(const String&amp; tones, long duration, long interToneGap)
&gt; +{
&gt; +    m_duration = duration;
&gt; +    m_interToneGap = interToneGap;
&gt; +    m_toneBuffer.append(tones);
&gt; +    m_client-&gt;didPlayTone(m_toneBuffer);
&gt; +    m_toneBuffer.remove(0, 1);
&gt; +    if (m_toneBuffer.isEmpty())
&gt; +        m_client-&gt;didPlayTone(&quot;&quot;);
&gt; +    return true;
&gt; +}

Two problems: this should be asynchronous, and it should process each character in tones.

&gt; Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp:173
&gt;      // Requires a mock implementation of RTCDTMFSenderHandler.
&gt;      // This must be implemented once the mock implementation of RTCDataChannelHandler is ready.
&gt;      notImplemented();

Are these still necessary?

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-dtmf.html:58
&gt;                      dtmfsender.insertDTMF(&quot;1&quot;, &quot;6000&quot;);

You should also test a multi-character dtmf string.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-dtmf.html:65
&gt; +//finishJSTest();

Oops :-O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012492</commentid>
    <comment_count>3</comment_count>
      <attachid>232235</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-05-29 13:55:18 -0700</bug_when>
    <thetext>Comment on attachment 232235
Implemented mock RTCDTMFSender

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

&gt;&gt; Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:61
&gt;&gt; +}
&gt; 
&gt; Two problems: this should be asynchronous, and it should process each character in tones.

Actually you don&apos;t need to make this asynchronous because RTCDTMFSender::didPlayTone will post each RTCDTMFToneChangeEvent asynchronously, but you should call m_client-&gt;didPlayTone() for each character in &quot;tones&quot;. See http://dev.w3.org/2011/webrtc/editor/webrtc.html#methods-4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012575</commentid>
    <comment_count>4</comment_count>
      <attachid>232282</attachid>
    <who name="Kiran">kiran.guduru</who>
    <bug_when>2014-05-29 23:58:12 -0700</bug_when>
    <thetext>Created attachment 232282
Implemented mock RTCDTMFSender

Modified as per the review comments :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012650</commentid>
    <comment_count>5</comment_count>
      <attachid>232282</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-05-30 11:59:15 -0700</bug_when>
    <thetext>Comment on attachment 232282
Implemented mock RTCDTMFSender

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

&gt; Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:55
&gt; +        while (m_toneBuffer.length() &gt; 0) {
&gt; +            m_client-&gt;didPlayTone(m_toneBuffer.substring(0, 1));
&gt; +            m_toneBuffer.remove(0, 1);
&gt; +        }

This is an extremely inefficient way to do this. If this processing was done asynchronously it would be necessary to modify m_toneBuffer each time through the loop, but nothing can access m_toneBuffer while this runs so something like this would be better:

    for (size_t i = 0; i &lt; m_toneBuffer.length(); ++i)
        m_client-&gt;didPlayTone(m_toneBuffer[i]);
    m_toneBuffer = emptyString();
    m_client-&gt;didPlayTone(emptyString());

&gt; Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:56
&gt; +        if (m_toneBuffer.isEmpty())

Why this test, m_toneBuffer is empty because you just emptied it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012896</commentid>
    <comment_count>6</comment_count>
      <attachid>232364</attachid>
    <who name="Kiran">kiran.guduru</who>
    <bug_when>2014-06-01 21:29:33 -0700</bug_when>
    <thetext>Created attachment 232364
Implemented mock RTCDTMFSender

Modified loop and now ready for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012897</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-01 21:32:11 -0700</bug_when>
    <thetext>Attachment 232364 did not pass style-queue:


ERROR: Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:53:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012899</commentid>
    <comment_count>8</comment_count>
      <attachid>232365</attachid>
    <who name="Kiran">kiran.guduru</who>
    <bug_when>2014-06-01 21:34:41 -0700</bug_when>
    <thetext>Created attachment 232365
Implemented mock RTCDTMFSender

Updated the loop. Now ready for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012926</commentid>
    <comment_count>9</comment_count>
      <attachid>232365</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-02 03:56:07 -0700</bug_when>
    <thetext>Comment on attachment 232365
Implemented mock RTCDTMFSender

Clearing flags on attachment: 232365

Committed r169528: &lt;http://trac.webkit.org/changeset/169528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232235</attachid>
            <date>2014-05-28 23:26:38 -0700</date>
            <delta_ts>2014-05-29 23:58:12 -0700</delta_ts>
            <desc>Implemented mock RTCDTMFSender</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12495</size>
            <attacher name="Kiran">kiran.guduru</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA1LTI4ICBLaXJhbiAg
PGtpcmFuLmd1ZHVydUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgbW9jayBEVE1GU2VuZGVy
IHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzMyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnRlZCBtb2NrIGltcGxlbWVudGF0aW9uIGZvciBSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuIE5vdyBjcmVhdGluZworICAgICAgICBSVENEVE1GU2VuZGVySGFuZGxlck1vY2sgYW5k
IHJldHVybmluZyB3aGlsZSBjcmVhdGluZyBEVE1GU2VuZGVyIGluc3RlYWQgb2YKKyAgICAgICAg
cmV0dXJuaW5nIG51bGwuCisgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tZHRtZi5odG1sLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1vY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jazo6UlRDRFRN
RlNlbmRlckhhbmRsZXJNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5k
bGVyTW9jazo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5k
bGVyTW9jazo6aW5zZXJ0RFRNRik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENEVE1GU2Vu
ZGVySGFuZGxlck1vY2suaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZURUTUZTZW5kZXIpOgorCiAyMDE0LTA1LTI4ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENhcHRpb25zIGR1cmlu
ZyBITFMgcGxheWJhY2sgZmxhc2gvYXJlIGRpZmZpY3VsdCB0byByZWFkaWx5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY5Mzc1KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxNzAsNiArMjE3MCw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAogICAg
IHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKKyAgICBwbGF0Zm9ybS9tb2NrL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyTW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNw
cAogICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1vY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRs
ZXJNb2NrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdG9ybmljcyBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyTW9jay5oIgorCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSVENEVE1GU2VuZGVySGFuZGxlck1vY2s6OlJU
Q0RUTUZTZW5kZXJIYW5kbGVyTW9jaygpCisgICAgOiBtX3RvbmVCdWZmZXIoIiIpCisgICAgLCBt
X2R1cmF0aW9uKDApCisgICAgLCBtX2ludGVyVG9uZUdhcCgwKQorICAgICwgbV9pbnNlcnREVE1G
KHRydWUpCit7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrOjpzZXRDbGllbnQo
UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoIWNsaWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK2Jvb2wgUlRD
RFRNRlNlbmRlckhhbmRsZXJNb2NrOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxv
bmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKQoreworICAgIG1fZHVyYXRpb24gPSBkdXJh
dGlvbjsKKyAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcDsKKyAgICBtX3RvbmVCdWZm
ZXIuYXBwZW5kKHRvbmVzKTsKKyAgICBtX2NsaWVudC0+ZGlkUGxheVRvbmUobV90b25lQnVmZmVy
KTsKKyAgICBtX3RvbmVCdWZmZXIucmVtb3ZlKDAsIDEpOworICAgIGlmIChtX3RvbmVCdWZmZXIu
aXNFbXB0eSgpKQorICAgICAgICBtX2NsaWVudC0+ZGlkUGxheVRvbmUoIiIpOworICAgIHJldHVy
biB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEVE1G
U2VuZGVySGFuZGxlck1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jay5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1vY2suaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3Vu
ZyBFbGVjdG9ybmljcyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9ja19oCisjZGVmaW5lIFJUQ0RU
TUZTZW5kZXJIYW5kbGVyTW9ja19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENEVE1GU2VuZGVy
SGFuZGxlck1vY2sgZmluYWwgOiBwdWJsaWMgUlRDRFRNRlNlbmRlckhhbmRsZXIgeworcHVibGlj
OgorICAgIFJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jaygpOworICAgIHZpcnR1YWwgflJUQ0RUTUZT
ZW5kZXJIYW5kbGVyTW9jaygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIGN1
cnJlbnRUb25lQnVmZmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90b25lQnVmZmVyOyB9CisgICAg
dmlydHVhbCBib29sIGNhbkluc2VydERUTUYoKSBvdmVycmlkZSB7IHJldHVybiBtX2luc2VydERU
TUY7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBs
b25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6Cisg
ICAgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworCisgICAgU3RyaW5nIG1f
dG9uZUJ1ZmZlcjsKKyAgICBsb25nIG1fZHVyYXRpb247CisgICAgbG9uZyBtX2ludGVyVG9uZUdh
cDsKKyAgICBib29sIG1faW5zZXJ0RFRNRjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEYXRhQ2hh
bm5lbEhhbmRsZXJNb2NrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcAkocmV2aXNp
b24gMTY5Mzc1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHNNb2NrLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyTW9jay5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgog
I2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCIKICNpbmNsdWRlICJSVENOb3Rp
ZmllcnNNb2NrLmgiCkBAIC0xNzAsNyArMTcxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZT
ZW5kZXJIYW5kbGVyPiBSVAogICAgIC8vIFJlcXVpcmVzIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBv
ZiBSVENEVE1GU2VuZGVySGFuZGxlci4KICAgICAvLyBUaGlzIG11c3QgYmUgaW1wbGVtZW50ZWQg
b25jZSB0aGUgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIgaXMg
cmVhZHkuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSVENEVE1GU2VuZGVySGFuZGxlck1vY2s+KCk7CiB9CiAK
IHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6c3RvcCgpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNjk0NDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxNC0wNS0yOCAgS2lyYW4gIDxraXJhbi5ndWR1cnVAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgQWRkIG1vY2sgRFRNRlNlbmRlciBzdXBwb3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMjk4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi5odG1sOgorCiAyMDE0LTA1LTI4ICBNYXJ0aW4g
SG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJraW5nIHRlc3QgYXMgZmxha3kg
cGVuZGluZyBmdXJ0aGVyIHJldmlldy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTY5Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1kdG1mLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEs
NyArMTEsMjMgQEAgUEFTUyBwYyBpcyBjb25uZWN0ZWQKIFBBU1MgZHRtZnNlbmRlciA9IHBjLmNy
ZWF0ZURUTUZTZW5kZXIodHJhY2spOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9y
OiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRl
cih0cmFjayk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBkdG1mc2VuZGVyLmNhbklu
c2VydERUTUYgaXMgdHJ1ZQotUEFTUyBkdG1mc2VuZGVyLnRvbmVCdWZmZXIgaXMgIjEiCitQQVNT
IGR0bWZzZW5kZXIuZHVyYXRpb24gaXMgMTAwCitQQVNTIGR0bWZzZW5kZXIuaW50ZXJUb25lR2Fw
IGlzIDcwCitQQVNTIGR0bWZzZW5kZXIuZHVyYXRpb24gaXMgNDAKK1BBU1MgZHRtZnNlbmRlci5p
bnRlclRvbmVHYXAgaXMgMzAKK1BBU1MgZHRtZnNlbmRlci5kdXJhdGlvbiBpcyA2MDAwCitQQVNT
IGR0bWZzZW5kZXIuaW50ZXJUb25lR2FwIGlzIDcwCitQQVNTIGR0bWZzZW5kZXIuaW5zZXJ0RFRN
RigiMSIsICIyMCIpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhj
ZXB0aW9uIDEyLgorUEFTUyBkdG1mc2VuZGVyLmluc2VydERUTUYoIjEiLCAiNzAwMCIpOyB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBk
dG1mc2VuZGVyLmluc2VydERUTUYoIjEiLCAiNzAiLCAiMTAiKTsgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgb250b25lY2hhbmdlIHdh
cyBjYWxsZWQuCitQQVNTIGV2ZW50LnRvbmUgaXMgIjEiCitQQVNTIG9udG9uZWNoYW5nZSB3YXMg
Y2FsbGVkLgorUEFTUyBldmVudC50b25lIGlzICIiCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2Fs
bGVkLgorUEFTUyBldmVudC50b25lIGlzICIxIgorUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxl
ZC4KK1BBU1MgZXZlbnQudG9uZSBpcyAiIgogUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZC4K
IFBBU1MgZXZlbnQudG9uZSBpcyAiMSIKIFBBU1Mgb250b25lY2hhbmdlIHdhcyBjYWxsZWQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLWR0bWYuaHRtbAkocmV2aXNpb24gMTY5Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDkgKzIzLDEyIEBACiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgib250b25lY2hh
bmdlIHdhcyBjYWxsZWQuIik7CiAgICAgICAgICAgICAgICAgZXZlbnQgPSBlOwogICAgICAgICAg
ICAgICAgIGlmICghbGFzdENhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdldmVudC50b25lJywgIjEiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNh
bGxDb3VudCAlIDIgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnZXZlbnQudG9uZScsICIxIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQudG9uZScs
ICIiKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbENvdW50Kys7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgzID09IGNhbGxDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKDYgPT0gY2Fs
bENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENhbGwgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZXZlbnQudG9uZScsICIiKTsKQEAgLTQ1LDI0ICs0OCwyMSBAQAogCiAgICAgICAgICAg
ICAgICAgICAgIGR0bWZzZW5kZXIub250b25lY2hhbmdlID0gb250b25lY2hhbmdlOwogICAgICAg
ICAgICAgICAgICAgICBkdG1mc2VuZGVyLmluc2VydERUTUYoIjEiKTsKLSAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLnRvbmVCdWZmZXInLCAiMSIp
OwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIu
ZHVyYXRpb24nLCAiMTAwIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZHRtZnNlbmRlci5pbnRlclRvbmVHYXAnLCAiNzAiKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoJ2R0bWZzZW5kZXIuZHVyYXRpb24nLCAiMTAwIik7CisgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdkdG1mc2VuZGVyLmludGVyVG9uZUdhcCcsICI3MCIpOwogCiAgICAg
ICAgICAgICAgICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIsICI0MCIsICIzMCIpOwot
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIudG9u
ZUJ1ZmZlcicsICIxIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZHRtZnNlbmRlci5kdXJhdGlvbicsICI0MCIpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIuaW50ZXJUb25lR2FwJywgIjMwIik7CisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjQwIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCdkdG1mc2VuZGVyLmludGVyVG9uZUdhcCcsICIz
MCIpOwogCiAgICAgICAgICAgICAgICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIsICI2
MDAwIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZHRtZnNl
bmRlci50b25lQnVmZmVyJywgIjEiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjYwMDAiKTsKLSAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLmludGVyVG9uZUdhcCcsICI3
MCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnZHRtZnNlbmRlci5kdXJhdGlvbics
ICI2MDAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCdkdG1mc2VuZGVyLmludGVy
VG9uZUdhcCcsICI3MCIpOwogCiAgICAgICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdkdG1m
c2VuZGVyLmluc2VydERUTUYoIjEiLCAiMjAiKTsnKTsKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkVGhyb3coJ2R0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIsICI3MDAwIik7Jyk7CiAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZFRocm93KCdkdG1mc2VuZGVyLmluc2VydERUTUYoIjEiLCAiNzAi
LCAiMTAiKTsnKTsKLQorLy9maW5pc2hKU1Rlc3QoKTsKIAogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0K
</data>
<flag name="review"
          id="256722"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232282</attachid>
            <date>2014-05-29 23:58:12 -0700</date>
            <delta_ts>2014-05-30 11:59:14 -0700</delta_ts>
            <desc>Implemented mock RTCDTMFSender</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12892</size>
            <attacher name="Kiran">kiran.guduru</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA1LTI4ICBLaXJhbiAg
PGtpcmFuLmd1ZHVydUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgbW9jayBEVE1GU2VuZGVy
IHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzMyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnRlZCBtb2NrIGltcGxlbWVudGF0aW9uIGZvciBSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuIE5vdyBjcmVhdGluZworICAgICAgICBSVENEVE1GU2VuZGVySGFuZGxlck1vY2sgYW5k
IHJldHVybmluZyB3aGlsZSBjcmVhdGluZyBEVE1GU2VuZGVyIGluc3RlYWQgb2YKKyAgICAgICAg
cmV0dXJuaW5nIG51bGwuCisgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tZHRtZi5odG1sLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1vY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jazo6UlRDRFRN
RlNlbmRlckhhbmRsZXJNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5k
bGVyTW9jazo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5k
bGVyTW9jazo6aW5zZXJ0RFRNRik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENEVE1GU2Vu
ZGVySGFuZGxlck1vY2suaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZURUTUZTZW5kZXIpOgorCiAyMDE0LTA1LTI4ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENhcHRpb25zIGR1cmlu
ZyBITFMgcGxheWJhY2sgZmxhc2gvYXJlIGRpZmZpY3VsdCB0byByZWFkaWx5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY5Mzc1KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxNzAsNiArMjE3MCw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tb2NrL01lZGlhQ29uc3RyYWludHNNb2NrLmNwcAogICAg
IHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKKyAgICBwbGF0Zm9ybS9tb2NrL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyTW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01v
Y2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNw
cAogICAgIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1vY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRs
ZXJNb2NrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdG9ybmljcyBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyTW9jay5oIgorCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSVENEVE1GU2VuZGVySGFuZGxlck1vY2s6OlJU
Q0RUTUZTZW5kZXJIYW5kbGVyTW9jaygpCisgICAgOiBtX2R1cmF0aW9uKDApCisgICAgLCBtX2lu
dGVyVG9uZUdhcCgwKQoreworfQorCit2b2lkIFJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jazo6c2V0
Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGll
bnQgPSBjbGllbnQ7Cit9CisKK2Jvb2wgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrOjppbnNlcnRE
VE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2Fw
KQoreworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBtX2ludGVyVG9uZUdhcCA9IGlu
dGVyVG9uZUdhcDsKKyAgICBtX3RvbmVCdWZmZXIuYXBwZW5kKHRvbmVzKTsKKyAgICBpZiAobV9j
bGllbnQpIHsKKyAgICAgICAgd2hpbGUgKG1fdG9uZUJ1ZmZlci5sZW5ndGgoKSA+IDApIHsKKyAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRQbGF5VG9uZShtX3RvbmVCdWZmZXIuc3Vic3RyaW5nKDAs
IDEpKTsKKyAgICAgICAgICAgIG1fdG9uZUJ1ZmZlci5yZW1vdmUoMCwgMSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fdG9uZUJ1ZmZlci5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUGxheVRvbmUoIiIpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVy
SGFuZGxlck1vY2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Rvcm5pY3MgYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENE
VE1GU2VuZGVySGFuZGxlck1vY2tfaAorI2RlZmluZSBSVENEVE1GU2VuZGVySGFuZGxlck1vY2tf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmgiCisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrIGZpbmFsIDog
cHVibGljIFJUQ0RUTUZTZW5kZXJIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBSVENEVE1GU2VuZGVy
SGFuZGxlck1vY2soKTsKKyAgICB2aXJ0dWFsIH5SVENEVE1GU2VuZGVySGFuZGxlck1vY2soKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRFRNRlNlbmRlckhhbmRsZXJDbGll
bnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpIG92
ZXJyaWRlIHsgcmV0dXJuIG1fdG9uZUJ1ZmZlcjsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNl
cnREVE1GKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbnNl
cnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25l
R2FwKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVu
dCogbV9jbGllbnQ7CisKKyAgICBTdHJpbmcgbV90b25lQnVmZmVyOworICAgIGxvbmcgbV9kdXJh
dGlvbjsKKyAgICBsb25nIG1faW50ZXJUb25lR2FwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCShy
ZXZpc2lvbiAxNjkzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c01vY2suaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgiCisjaW5jbHVkZSAiUlRD
RFRNRlNlbmRlckhhbmRsZXJNb2NrLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIgogI2luY2x1ZGUgIlJU
Q05vdGlmaWVyc01vY2suaCIKQEAgLTE2NywxMCArMTY4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJU
Q0RhdGFDaGFubmVsSGFuZGxlcj4gUgogCiBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckhh
bmRsZXI+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZURUTUZTZW5kZXIoUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4pCiB7Ci0gICAgLy8gUmVxdWlyZXMgYSBtb2NrIGlt
cGxlbWVudGF0aW9uIG9mIFJUQ0RUTUZTZW5kZXJIYW5kbGVyLgotICAgIC8vIFRoaXMgbXVzdCBi
ZSBpbXBsZW1lbnRlZCBvbmNlIHRoZSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlciBpcyByZWFkeS4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJUQ0RUTUZTZW5kZXJIYW5kbGVy
TW9jaz4oKTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpzdG9wKCkK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ0MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0LTA1LTI4ICBLaXJhbiAgPGtpcmFuLmd1
ZHVydUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgbW9jayBEVE1GU2VuZGVyIHN1cHBvcnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMyOTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWw6CisKIDIwMTQt
MDUtMjggIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtpbmcg
dGVzdCBhcyBmbGFreSBwZW5kaW5nIGZ1cnRoZXIgcmV2aWV3LgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LWR0bWYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNjkzNzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xMSwxMCArMTEsMjMgQEAgUEFTUyBwYyBpcyBjb25uZWN0ZWQKIFBBU1MgZHRt
ZnNlbmRlciA9IHBjLmNyZWF0ZURUTUZTZW5kZXIodHJhY2spOyB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBkdG1mc2VuZGVyID0gcGMu
Y3JlYXRlRFRNRlNlbmRlcih0cmFjayk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBk
dG1mc2VuZGVyLmNhbkluc2VydERUTUYgaXMgdHJ1ZQotUEFTUyBkdG1mc2VuZGVyLnRvbmVCdWZm
ZXIgaXMgIjEiCi1QQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkLgotUEFTUyBldmVudC50b25l
IGlzICIxIgotUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZC4KK1BBU1MgZHRtZnNlbmRlci5k
dXJhdGlvbiBpcyAxMDAKK1BBU1MgZHRtZnNlbmRlci5pbnRlclRvbmVHYXAgaXMgNzAKK1BBU1Mg
ZHRtZnNlbmRlci5kdXJhdGlvbiBpcyA0MAorUEFTUyBkdG1mc2VuZGVyLmludGVyVG9uZUdhcCBp
cyAzMAorUEFTUyBkdG1mc2VuZGVyLmR1cmF0aW9uIGlzIDYwMDAKK1BBU1MgZHRtZnNlbmRlci5p
bnRlclRvbmVHYXAgaXMgNzAKK1BBU1MgZHRtZnNlbmRlci5pbnNlcnREVE1GKCIxIiwgIjIwIik7
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQ
QVNTIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIsICI3MDAwIik7IHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIGR0bWZzZW5kZXIuaW5z
ZXJ0RFRNRigiMSIsICI3MCIsICIxMCIpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVy
cm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZCAxCitQ
QVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkIAorUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxl
ZCA0CitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkIAorUEFTUyBvbnRvbmVjaGFuZ2Ugd2Fz
IGNhbGxlZCAxCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkIDIKK1BBU1Mgb250b25lY2hh
bmdlIHdhcyBjYWxsZWQgMworUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZCAKIFBBU1MgZXZl
bnQudG9uZSBpcyAiIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLWR0bWYuaHRtbAkocmV2aXNpb24gMTY5Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDE1ICsyMCwxNCBAQAogICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDE7CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIG9udG9uZWNoYW5nZShlKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgib250b25lY2hhbmdlIHdhcyBjYWxsZWQuIik7CiAgICAgICAgICAgICAgICAgZXZlbnQgPSBl
OworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIm9udG9uZWNoYW5nZSB3YXMgY2FsbGVkICIg
KyBldmVudC50b25lKTsKICAgICAgICAgICAgICAgICBpZiAoIWxhc3RDYWxsKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQudG9uZScsICIxIik7CiAg
ICAgICAgICAgICAgICAgICAgIGNhbGxDb3VudCsrOwotICAgICAgICAgICAgICAgICAgICBpZiAo
MyA9PSBjYWxsQ291bnQpCisgICAgICAgICAgICAgICAgICAgIGlmICg4ID09IGNhbGxDb3VudCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RDYWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2
ZW50LnRvbmUnLCAiIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRW1wdHlTdHJpbmco
J2V2ZW50LnRvbmUnKTsKICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDUsMjUgKzQ0LDIxIEBACiAKICAgICAg
ICAgICAgICAgICAgICAgZHRtZnNlbmRlci5vbnRvbmVjaGFuZ2UgPSBvbnRvbmVjaGFuZ2U7CiAg
ICAgICAgICAgICAgICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIpOwotICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIudG9uZUJ1ZmZlcics
ICIxIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZHRtZnNl
bmRlci5kdXJhdGlvbicsICIxMDAiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkdG1mc2VuZGVyLmludGVyVG9uZUdhcCcsICI3MCIpOwotCi0gICAgICAgICAg
ICAgICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIsICI0MCIsICIzMCIpOwotICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIudG9uZUJ1ZmZl
cicsICIxIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZHRt
ZnNlbmRlci5kdXJhdGlvbicsICI0MCIpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIuaW50ZXJUb25lR2FwJywgIjMwIik7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgZHRtZnNlbmRlci5pbnNlcnREVE1GKCIxIiwgIjYwMDAiKTsKLSAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLnRvbmVCdWZmZXIn
LCAiMSIpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZz
ZW5kZXIuZHVyYXRpb24nLCAiNjAwMCIpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIuaW50ZXJUb25lR2FwJywgIjcwIik7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjEwMCIpOworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnZHRtZnNlbmRlci5pbnRlclRvbmVHYXAnLCAiNzAiKTsK
KworICAgICAgICAgICAgICAgICAgICBkdG1mc2VuZGVyLmluc2VydERUTUYoIjQiLCAiNDAiLCAi
MzAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2R0bWZzZW5kZXIuZHVyYXRpb24n
LCAiNDAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2R0bWZzZW5kZXIuaW50ZXJU
b25lR2FwJywgIjMwIik7CisKKyAgICAgICAgICAgICAgICAgICAgZHRtZnNlbmRlci5pbnNlcnRE
VE1GKCIxMjMiLCAiNjAwMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnZHRtZnNl
bmRlci5kdXJhdGlvbicsICI2MDAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCdk
dG1mc2VuZGVyLmludGVyVG9uZUdhcCcsICI3MCIpOwogCiAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZFRocm93KCdkdG1mc2VuZGVyLmluc2VydERUTUYoIjEiLCAiMjAiKTsnKTsKICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkVGhyb3coJ2R0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIsICI3MDAw
Iik7Jyk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdkdG1mc2VuZGVyLmluc2Vy
dERUTUYoIjEiLCAiNzAiLCAiMTAiKTsnKTsKIAotCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCg==
</data>
<flag name="review"
          id="256772"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232364</attachid>
            <date>2014-06-01 21:29:33 -0700</date>
            <delta_ts>2022-03-01 02:58:58 -0800</delta_ts>
            <desc>Implemented mock RTCDTMFSender</desc>
            <filename>patch_for_landing.txt</filename>
            <type>text/plain</type>
            <size>12860</size>
            <attacher name="Kiran">kiran.guduru</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA1LTI4ICBLaXJhbiAg
PGtpcmFuLmd1ZHVydUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgbW9jayBEVE1GU2VuZGVy
IHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzMyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
SW1wbGVtZW50ZWQgbW9jayBpbXBsZW1lbnRhdGlvbiBmb3IgUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLiBOb3cgY3JlYXRpbmcKKyAgICAgICAgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrIGFuZCBy
ZXR1cm5pbmcgd2hpbGUgY3JlYXRpbmcgRFRNRlNlbmRlciBpbnN0ZWFkIG9mCisgICAgICAgIHJl
dHVybmluZyBudWxsLgorICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWR0bWYuaHRtbC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlck1vY2s6OlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxl
ck1vY2s6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxl
ck1vY2s6Omluc2VydERUTUYpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRl
ckhhbmRsZXJNb2NrLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVEVE1GU2VuZGVyKToKKwogMjAxNC0wNS0yOCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDYXB0aW9ucyBkdXJpbmcg
SExTIHBsYXliYWNrIGZsYXNoL2FyZSBkaWZmaWN1bHQgdG8gcmVhZGlseQpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE2OTM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTcwLDYgKzIxNzAsNyBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAKICAgICBw
bGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCisgICAgcGxhdGZvcm0vbW9jay9SVENEVE1G
U2VuZGVySGFuZGxlck1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2Nr
LmNwcAogICAgIHBsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAK
ICAgICBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RUTUZTZW5kZXJIYW5kbGVy
TW9jay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JU
Q0RUTUZTZW5kZXJIYW5kbGVyTW9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Rvcm5pY3MgYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVy
SGFuZGxlck1vY2suaCIKKworI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrOjpSVENE
VE1GU2VuZGVySGFuZGxlck1vY2soKQorICAgIDogbV9kdXJhdGlvbigwKQorICAgICwgbV9pbnRl
clRvbmVHYXAoMCkKK3sKK30KKwordm9pZCBSVENEVE1GU2VuZGVySGFuZGxlck1vY2s6OnNldENs
aWVudChSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50
ID0gY2xpZW50OworfQorCitib29sIFJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jazo6aW5zZXJ0RFRN
Rihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkK
K3sKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgbV9pbnRlclRvbmVHYXAgPSBpbnRl
clRvbmVHYXA7CisgICAgbV90b25lQnVmZmVyLmFwcGVuZCh0b25lcyk7CisgICAgaWYgKG1fY2xp
ZW50KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90b25lQnVmZmVyLmxlbmd0
aCgpOyArK2kpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUGxheVRvbmUobV90b25lQnVmZmVy
LnN1YnN0cmluZyhpLDEpKTsKKyAgICAgICAgbV90b25lQnVmZmVyID0gZW1wdHlTdHJpbmcoKTsK
KyAgICAgICAgbV9jbGllbnQtPmRpZFBsYXlUb25lKGVtcHR5U3RyaW5nKCkpOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFuZGxlck1vY2suaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0
IFNhbXN1bmcgRWxlY3Rvcm5pY3MgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEVE1GU2VuZGVySGFuZGxlck1vY2tfaAorI2RlZmlu
ZSBSVENEVE1GU2VuZGVySGFuZGxlck1vY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgiCisjaW5jbHVkZSAiUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRFRN
RlNlbmRlckhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RUTUZTZW5kZXJIYW5kbGVyIHsK
K3B1YmxpYzoKKyAgICBSVENEVE1GU2VuZGVySGFuZGxlck1vY2soKTsKKyAgICB2aXJ0dWFsIH5S
VENEVE1GU2VuZGVySGFuZGxlck1vY2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGll
bnQoUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdG9uZUJ1ZmZlcjsg
fQorICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnREVE1GKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxv
bmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAg
ICBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCogbV9jbGllbnQ7CisKKyAgICBTdHJpbmcgbV90
b25lQnVmZmVyOworICAgIGxvbmcgbV9kdXJhdGlvbjsKKyAgICBsb25nIG1faW50ZXJUb25lR2Fw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2tfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2suY3BwCShyZXZpc2lvbiAxNjkzNzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c01v
Y2suaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyLmgiCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmgiCiAjaW5j
bHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5oIgogI2luY2x1ZGUgIlJUQ05vdGlmaWVyc01vY2suaCIKQEAgLTE2NywxMCAr
MTY4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gUgogCiBzdGQ6
OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckhhbmRsZXI+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ck1vY2s6OmNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4pCiB7
Ci0gICAgLy8gUmVxdWlyZXMgYSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIFJUQ0RUTUZTZW5kZXJI
YW5kbGVyLgotICAgIC8vIFRoaXMgbXVzdCBiZSBpbXBsZW1lbnRlZCBvbmNlIHRoZSBtb2NrIGlt
cGxlbWVudGF0aW9uIG9mIFJUQ0RhdGFDaGFubmVsSGFuZGxlciBpcyByZWFkeS4KLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jaz4oKTsKIH0KIAogdm9pZCBSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJNb2NrOjpzdG9wKCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ0MSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE0LTA1LTI4ICBLaXJhbiAgPGtpcmFuLmd1ZHVydUBzYW1zdW5nLmNvbT4KKworICAgICAgICBB
ZGQgbW9jayBEVE1GU2VuZGVyIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0
bWYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tZHRtZi5odG1sOgorCiAyMDE0LTA1LTI4ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYXJraW5nIHRlc3QgYXMgZmxha3kgcGVuZGluZyBmdXJ0aGVyIHJl
dmlldy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tZHRtZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY5
Mzc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1k
dG1mLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTAgKzExLDIzIEBAIFBBU1Mg
cGMgaXMgY29ubmVjdGVkCiBQQVNTIGR0bWZzZW5kZXIgPSBwYy5jcmVhdGVEVE1GU2VuZGVyKHRy
YWNrKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
Mi4KIFBBU1MgZHRtZnNlbmRlciA9IHBjLmNyZWF0ZURUTUZTZW5kZXIodHJhY2spOyBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgZHRtZnNlbmRlci5jYW5JbnNlcnREVE1GIGlzIHRydWUK
LVBBU1MgZHRtZnNlbmRlci50b25lQnVmZmVyIGlzICIxIgotUEFTUyBvbnRvbmVjaGFuZ2Ugd2Fz
IGNhbGxlZC4KLVBBU1MgZXZlbnQudG9uZSBpcyAiMSIKLVBBU1Mgb250b25lY2hhbmdlIHdhcyBj
YWxsZWQuCitQQVNTIGR0bWZzZW5kZXIuZHVyYXRpb24gaXMgMTAwCitQQVNTIGR0bWZzZW5kZXIu
aW50ZXJUb25lR2FwIGlzIDcwCitQQVNTIGR0bWZzZW5kZXIuZHVyYXRpb24gaXMgNDAKK1BBU1Mg
ZHRtZnNlbmRlci5pbnRlclRvbmVHYXAgaXMgMzAKK1BBU1MgZHRtZnNlbmRlci5kdXJhdGlvbiBp
cyA2MDAwCitQQVNTIGR0bWZzZW5kZXIuaW50ZXJUb25lR2FwIGlzIDcwCitQQVNTIGR0bWZzZW5k
ZXIuaW5zZXJ0RFRNRigiMSIsICIyMCIpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVy
cm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBkdG1mc2VuZGVyLmluc2VydERUTUYoIjEiLCAi
NzAwMCIpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9u
IDEyLgorUEFTUyBkdG1mc2VuZGVyLmluc2VydERUTUYoIjEiLCAiNzAiLCAiMTAiKTsgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgb250
b25lY2hhbmdlIHdhcyBjYWxsZWQgMQorUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZCAKK1BB
U1Mgb250b25lY2hhbmdlIHdhcyBjYWxsZWQgNAorUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxl
ZCAKK1BBU1Mgb250b25lY2hhbmdlIHdhcyBjYWxsZWQgMQorUEFTUyBvbnRvbmVjaGFuZ2Ugd2Fz
IGNhbGxlZCAyCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkIDMKK1BBU1Mgb250b25lY2hh
bmdlIHdhcyBjYWxsZWQgCiBQQVNTIGV2ZW50LnRvbmUgaXMgIiIKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwJKHJldmlzaW9uIDE2OTM3NSkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxNSArMjAsMTQgQEAKICAgICAgICAgICAgIHZhciBj
YWxsQ291bnQgPSAxOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBvbnRvbmVjaGFuZ2UoZSkgewot
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIm9udG9uZWNoYW5nZSB3YXMgY2FsbGVkLiIpOwog
ICAgICAgICAgICAgICAgIGV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJv
bnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZCAiICsgZXZlbnQudG9uZSk7CiAgICAgICAgICAgICAgICAg
aWYgKCFsYXN0Q2FsbCkgewotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2V2ZW50LnRvbmUnLCAiMSIpOwogICAgICAgICAgICAgICAgICAgICBjYWxsQ291bnQrKzsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKDMgPT0gY2FsbENvdW50KQorICAgICAgICAgICAgICAg
ICAgICBpZiAoOCA9PSBjYWxsQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q2Fs
bCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b25lJywgIiIpOworICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZUVtcHR5U3RyaW5nKCdldmVudC50b25lJyk7CiAgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTQ1LDI1ICs0NCwyMSBAQAogCiAgICAgICAgICAgICAgICAgICAgIGR0bWZzZW5kZXIub250b25l
Y2hhbmdlID0gb250b25lY2hhbmdlOwogICAgICAgICAgICAgICAgICAgICBkdG1mc2VuZGVyLmlu
c2VydERUTUYoIjEiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkdG1mc2VuZGVyLnRvbmVCdWZmZXInLCAiMSIpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIuZHVyYXRpb24nLCAiMTAwIik7Ci0gICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZHRtZnNlbmRlci5pbnRlclRvbmVH
YXAnLCAiNzAiKTsKLQotICAgICAgICAgICAgICAgICAgICBkdG1mc2VuZGVyLmluc2VydERUTUYo
IjEiLCAiNDAiLCAiMzAiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdkdG1mc2VuZGVyLnRvbmVCdWZmZXInLCAiMSIpOwotICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIuZHVyYXRpb24nLCAiNDAiKTsKLSAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLmludGVyVG9u
ZUdhcCcsICIzMCIpOwotCi0gICAgICAgICAgICAgICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRN
RigiMSIsICI2MDAwIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZHRtZnNlbmRlci50b25lQnVmZmVyJywgIjEiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjYwMDAiKTsKLSAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLmludGVyVG9u
ZUdhcCcsICI3MCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnZHRtZnNlbmRlci5k
dXJhdGlvbicsICIxMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2R0bWZzZW5k
ZXIuaW50ZXJUb25lR2FwJywgIjcwIik7CisKKyAgICAgICAgICAgICAgICAgICAgZHRtZnNlbmRl
ci5pbnNlcnREVE1GKCI0IiwgIjQwIiwgIjMwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjQwIik7CisgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdkdG1mc2VuZGVyLmludGVyVG9uZUdhcCcsICIzMCIpOworCisgICAgICAgICAgICAg
ICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMTIzIiwgIjYwMDAiKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ2R0bWZzZW5kZXIuZHVyYXRpb24nLCAiNjAwMCIpOworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnZHRtZnNlbmRlci5pbnRlclRvbmVHYXAnLCAiNzAiKTsK
IAogICAgICAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygnZHRtZnNlbmRlci5pbnNlcnREVE1G
KCIxIiwgIjIwIik7Jyk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdkdG1mc2Vu
ZGVyLmluc2VydERUTUYoIjEiLCAiNzAwMCIpOycpOwogICAgICAgICAgICAgICAgICAgICBzaG91
bGRUaHJvdygnZHRtZnNlbmRlci5pbnNlcnREVE1GKCIxIiwgIjcwIiwgIjEwIik7Jyk7CiAKLQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232365</attachid>
            <date>2014-06-01 21:34:41 -0700</date>
            <delta_ts>2014-06-02 03:56:07 -0700</delta_ts>
            <desc>Implemented mock RTCDTMFSender</desc>
            <filename>patch_for_landing.txt</filename>
            <type>text/plain</type>
            <size>12861</size>
            <attacher name="Kiran">kiran.guduru</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA1LTI4ICBLaXJhbiAg
PGtpcmFuLmd1ZHVydUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgbW9jayBEVE1GU2VuZGVy
IHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzMyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
SW1wbGVtZW50ZWQgbW9jayBpbXBsZW1lbnRhdGlvbiBmb3IgUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLiBOb3cgY3JlYXRpbmcKKyAgICAgICAgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrIGFuZCBy
ZXR1cm5pbmcgd2hpbGUgY3JlYXRpbmcgRFRNRlNlbmRlciBpbnN0ZWFkIG9mCisgICAgICAgIHJl
dHVybmluZyBudWxsLgorICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWR0bWYuaHRtbC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlck1vY2s6OlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxl
ck1vY2s6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxl
ck1vY2s6Omluc2VydERUTUYpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRl
ckhhbmRsZXJNb2NrLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVEVE1GU2VuZGVyKToKKwogMjAxNC0wNS0yOCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDYXB0aW9ucyBkdXJpbmcg
SExTIHBsYXliYWNrIGZsYXNoL2FyZSBkaWZmaWN1bHQgdG8gcmVhZGlseQpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE2OTM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTcwLDYgKzIxNzAsNyBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vbW9jay9NZWRpYUNvbnN0cmFpbnRzTW9jay5jcHAKICAgICBw
bGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCisgICAgcGxhdGZvcm0vbW9jay9SVENEVE1G
U2VuZGVySGFuZGxlck1vY2suY3BwCiAgICAgcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2Nr
LmNwcAogICAgIHBsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAK
ICAgICBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RUTUZTZW5kZXJIYW5kbGVy
TW9jay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JU
Q0RUTUZTZW5kZXJIYW5kbGVyTW9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Rvcm5pY3MgYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVy
SGFuZGxlck1vY2suaCIKKworI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrOjpSVENE
VE1GU2VuZGVySGFuZGxlck1vY2soKQorICAgIDogbV9kdXJhdGlvbigwKQorICAgICwgbV9pbnRl
clRvbmVHYXAoMCkKK3sKK30KKwordm9pZCBSVENEVE1GU2VuZGVySGFuZGxlck1vY2s6OnNldENs
aWVudChSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50
ID0gY2xpZW50OworfQorCitib29sIFJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jazo6aW5zZXJ0RFRN
Rihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkK
K3sKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgbV9pbnRlclRvbmVHYXAgPSBpbnRl
clRvbmVHYXA7CisgICAgbV90b25lQnVmZmVyLmFwcGVuZCh0b25lcyk7CisgICAgaWYgKG1fY2xp
ZW50KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90b25lQnVmZmVyLmxlbmd0
aCgpOyArK2kpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUGxheVRvbmUobV90b25lQnVmZmVy
LnN1YnN0cmluZyhpLCAxKSk7CisgICAgICAgIG1fdG9uZUJ1ZmZlciA9IGVtcHR5U3RyaW5nKCk7
CisgICAgICAgIG1fY2xpZW50LT5kaWRQbGF5VG9uZShlbXB0eVN0cmluZygpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1JUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jay5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
NCBTYW1zdW5nIEVsZWN0b3JuaWNzIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrX2gKKyNkZWZp
bmUgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorI2luY2x1ZGUgIlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RU
TUZTZW5kZXJIYW5kbGVyTW9jayBmaW5hbCA6IHB1YmxpYyBSVENEVE1GU2VuZGVySGFuZGxlciB7
CitwdWJsaWM6CisgICAgUlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrKCk7CisgICAgdmlydHVhbCB+
UlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
ZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBT
dHJpbmcgY3VycmVudFRvbmVCdWZmZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX3RvbmVCdWZmZXI7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpIG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBs
b25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6Cisg
ICAgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworCisgICAgU3RyaW5nIG1f
dG9uZUJ1ZmZlcjsKKyAgICBsb25nIG1fZHVyYXRpb247CisgICAgbG9uZyBtX2ludGVyVG9uZUdh
cDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcAkocmV2aXNpb24gMTY5Mzc1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNN
b2NrLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSVENEVE1GU2Vu
ZGVySGFuZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jay5oIgogI2lu
Y2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2suaCIKICNpbmNsdWRlICJSVENOb3RpZmllcnNNb2NrLmgiCkBAIC0xNjcsMTAg
KzE2OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IFIKIAogc3Rk
Ojp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJNb2NrOjpjcmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+KQog
ewotICAgIC8vIFJlcXVpcmVzIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBSVENEVE1GU2VuZGVy
SGFuZGxlci4KLSAgICAvLyBUaGlzIG11c3QgYmUgaW1wbGVtZW50ZWQgb25jZSB0aGUgbW9jayBp
bXBsZW1lbnRhdGlvbiBvZiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIgaXMgcmVhZHkuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSVENEVE1GU2VuZGVySGFuZGxlck1vY2s+KCk7CiB9CiAKIHZvaWQgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jazo6c3RvcCgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjk0NDEpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxNC0wNS0yOCAgS2lyYW4gIDxraXJhbi5ndWR1cnVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAg
QWRkIG1vY2sgRFRNRlNlbmRlciBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1k
dG1mLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLWR0bWYuaHRtbDoKKwogMjAxNC0wNS0yOCAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFya2luZyB0ZXN0IGFzIGZsYWt5IHBlbmRpbmcgZnVydGhlciBy
ZXZpZXcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLWR0bWYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2
OTM3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
ZHRtZi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDEwICsxMSwyMyBAQCBQQVNT
IHBjIGlzIGNvbm5lY3RlZAogUEFTUyBkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0
cmFjayk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24g
MTIuCiBQQVNTIGR0bWZzZW5kZXIgPSBwYy5jcmVhdGVEVE1GU2VuZGVyKHRyYWNrKTsgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIGR0bWZzZW5kZXIuY2FuSW5zZXJ0RFRNRiBpcyB0cnVl
Ci1QQVNTIGR0bWZzZW5kZXIudG9uZUJ1ZmZlciBpcyAiMSIKLVBBU1Mgb250b25lY2hhbmdlIHdh
cyBjYWxsZWQuCi1QQVNTIGV2ZW50LnRvbmUgaXMgIjEiCi1QQVNTIG9udG9uZWNoYW5nZSB3YXMg
Y2FsbGVkLgorUEFTUyBkdG1mc2VuZGVyLmR1cmF0aW9uIGlzIDEwMAorUEFTUyBkdG1mc2VuZGVy
LmludGVyVG9uZUdhcCBpcyA3MAorUEFTUyBkdG1mc2VuZGVyLmR1cmF0aW9uIGlzIDQwCitQQVNT
IGR0bWZzZW5kZXIuaW50ZXJUb25lR2FwIGlzIDMwCitQQVNTIGR0bWZzZW5kZXIuZHVyYXRpb24g
aXMgNjAwMAorUEFTUyBkdG1mc2VuZGVyLmludGVyVG9uZUdhcCBpcyA3MAorUEFTUyBkdG1mc2Vu
ZGVyLmluc2VydERUTUYoIjEiLCAiMjAiKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1MgZHRtZnNlbmRlci5pbnNlcnREVE1GKCIxIiwg
IjcwMDAiKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlv
biAxMi4KK1BBU1MgZHRtZnNlbmRlci5pbnNlcnREVE1GKCIxIiwgIjcwIiwgIjEwIik7IHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIG9u
dG9uZWNoYW5nZSB3YXMgY2FsbGVkIDEKK1BBU1Mgb250b25lY2hhbmdlIHdhcyBjYWxsZWQgCitQ
QVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkIDQKK1BBU1Mgb250b25lY2hhbmdlIHdhcyBjYWxs
ZWQgCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkIDEKK1BBU1Mgb250b25lY2hhbmdlIHdh
cyBjYWxsZWQgMgorUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZCAzCitQQVNTIG9udG9uZWNo
YW5nZSB3YXMgY2FsbGVkIAogUEFTUyBldmVudC50b25lIGlzICIiCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24tZHRtZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi5odG1sCShyZXZpc2lvbiAxNjkzNzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTUgKzIwLDE0IEBACiAgICAgICAgICAgICB2YXIg
Y2FsbENvdW50ID0gMTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gb250b25lY2hhbmdlKGUpIHsK
LSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZC4iKTsK
ICAgICAgICAgICAgICAgICBldmVudCA9IGU7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
b250b25lY2hhbmdlIHdhcyBjYWxsZWQgIiArIGV2ZW50LnRvbmUpOwogICAgICAgICAgICAgICAg
IGlmICghbGFzdENhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdldmVudC50b25lJywgIjEiKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbENvdW50Kys7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICgzID09IGNhbGxDb3VudCkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKDggPT0gY2FsbENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENh
bGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQudG9uZScsICIiKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVFbXB0eVN0cmluZygnZXZlbnQudG9uZScpOwogICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC00NSwyNSArNDQsMjEgQEAKIAogICAgICAgICAgICAgICAgICAgICBkdG1mc2VuZGVyLm9udG9u
ZWNoYW5nZSA9IG9udG9uZWNoYW5nZTsKICAgICAgICAgICAgICAgICAgICAgZHRtZnNlbmRlci5p
bnNlcnREVE1GKCIxIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZHRtZnNlbmRlci50b25lQnVmZmVyJywgIjEiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjEwMCIpOwotICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIuaW50ZXJUb25l
R2FwJywgIjcwIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgZHRtZnNlbmRlci5pbnNlcnREVE1G
KCIxIiwgIjQwIiwgIjMwIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZHRtZnNlbmRlci50b25lQnVmZmVyJywgIjEiKTsKLSAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjQwIik7Ci0gICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZHRtZnNlbmRlci5pbnRlclRv
bmVHYXAnLCAiMzAiKTsKLQotICAgICAgICAgICAgICAgICAgICBkdG1mc2VuZGVyLmluc2VydERU
TUYoIjEiLCAiNjAwMCIpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2R0bWZzZW5kZXIudG9uZUJ1ZmZlcicsICIxIik7Ci0gICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZHRtZnNlbmRlci5kdXJhdGlvbicsICI2MDAwIik7Ci0gICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZHRtZnNlbmRlci5pbnRlclRv
bmVHYXAnLCAiNzAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2R0bWZzZW5kZXIu
ZHVyYXRpb24nLCAiMTAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCdkdG1mc2Vu
ZGVyLmludGVyVG9uZUdhcCcsICI3MCIpOworCisgICAgICAgICAgICAgICAgICAgIGR0bWZzZW5k
ZXIuaW5zZXJ0RFRNRigiNCIsICI0MCIsICIzMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZSgnZHRtZnNlbmRlci5kdXJhdGlvbicsICI0MCIpOworICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZSgnZHRtZnNlbmRlci5pbnRlclRvbmVHYXAnLCAiMzAiKTsKKworICAgICAgICAgICAg
ICAgICAgICBkdG1mc2VuZGVyLmluc2VydERUTUYoIjEyMyIsICI2MDAwIik7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCdkdG1mc2VuZGVyLmR1cmF0aW9uJywgIjYwMDAiKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2R0bWZzZW5kZXIuaW50ZXJUb25lR2FwJywgIjcwIik7
CiAKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coJ2R0bWZzZW5kZXIuaW5zZXJ0RFRN
RigiMSIsICIyMCIpOycpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygnZHRtZnNl
bmRlci5pbnNlcnREVE1GKCIxIiwgIjcwMDAiKTsnKTsKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkVGhyb3coJ2R0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIsICI3MCIsICIxMCIpOycpOwogCi0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>