Browse code

removed README.md CHANGELOG.txt appinfo/info.xml appinfo/routes.php appinfo/signature.json css/style.css js/settings.js js/sendsms.js js/showsmstables.js lib/Controller/AuthorApiController.php lib/Controller/SmsrelentlessController.php templates/navigation/index.php templates/content/index.php templates/settings.php

DoubleBastionAdmin authored on 02/09/2022 23:09:46
Showing 14 changed files
1 1
deleted file mode 100644
... ...
@@ -1,40 +0,0 @@
1
-======= CHANGELOG =======
2
-
3
-Versions:
4
-
5
-== 1.0.0 - 2022-1-27 ==
6
-* Initial release.
7
-
8
-== 1.0.1 - 2022-3-31 ==
9
-* Changed presentation text.
10
-
11
-== 1.0.2 - 2022-4-13 ==
12
-* Changed application controller class, to respect custom path of 'datadirectory'.
13
-* Fixed filters row arrow not showing up when using Apache.
14
-* Added the 'Contributors.txt' file.
15
-
16
-== 1.0.3 - 2022-4-15 ==
17
-* Changed the way the app gets the timezone.
18
-
19
-== 1.0.4 - 2022-5-7 ==
20
-* Changed the data type of the 'message' column in the 'sms_relent_sent' and 'sms_relent_received' tables.
21
-
22
-== 1.0.5 - 2022-5-9 ==
23
-* Changed string length for 'message' column in 'sms_relent_sent' and 'sms_relent_received' tables.
24
-* Changed syntax of SQL queries and of encryption function.
25
-* Changed structure of webhook URLs in case Nextcloud is served on a subdirectory.
26
-
27
-== 1.0.6 - 2022-8-13 ==
28
-* Added support for Twilio.
29
-* Added support for new lines in messages and email notifications.
30
-* Solved column width issue in sent/received SMS tables.
31
-* Minor explanatory text changes.
32
-
33
-== 1.0.7 - 2022-8-16 ==
34
-* Solved bug related to receiving messages on Twilio number when it's not associated with any Messaging Service.
35
-* Changed css properties for Network column.
36
-
37
-== 1.0.8 - 2022-8-23 ==
38
-* Added support for Flowroute.
39
-* Added automatic scrolling to bottom of received/sent messages table when clicking on 'Received/Sent SMS Messages' button.
40
-* Added scroll bar to info pop-up notes.
41 0
deleted file mode 100644
... ...
@@ -1,135 +0,0 @@
1
-<span style="display:block;height:15px!important"></span>
2
-<p align="center"><img src="https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_logo.png" alt="SMS Relentless" width="191px" height="157px"/></p>
3
-
4
-<span style="display:block;height:20px!important"></span>
5
-
6
-**SMS Relentless is a Nextcloud application that allows sending and receiving SMS messages in Nextcloud.**
7
-
8
-A telnyx.com or plivo.com or twilio.com or flowroute.com account and a real phone number acquired from one of the 4 providers are needed.
9
-
10
-<span style="display:block;height:20px!important"></span>
11
-
12
-## Features
13
-
14
-<span style="display:block;height:10px!important"></span>
15
-
16
-* 🚀 Use one or multiple local phone numbers in countries of your choice, to send and receive SMS messages with your browser, on any device connected to the Internet.
17
-
18
-* 📑 Sent and received SMS messages are stored in the database per sending/receiving user and can be viewed in paginated tables with filters for every column.
19
-
20
-* 📔 SMS messages older than a specified number of days can be deleted in bulk with one click and they are automatically archived in csv files stored in Nextcloud, before being removed from the database. This makes them available for future analysis.
21
-
22
-* 💻 Sending SMS messages to thousands of recipients is easy: a txt/csv file containing the recipients' phone numbers is uploaded and the SMS is sent automatically to all. The time interval between two consecutive messages is configurable.
23
-
24
-* 🔏 SMS messages coming from Telnyx and Plivo are checked for authenticity by verifying the SMS provider's signature.
25
-
26
-* 📧 Users receive notifications in Nextcloud and (optionally) emails when new SMS messages arrive.
27
-
28
-* 📄 Each sent message receives a delivery receipt displayed in the Sent SMS Messages table.
29
-
30
-* 📱 It works with regular 'long code' (10-digit) phone numbers, but also with 'toll-free' numbers and 'short codes'. Users see a list with their current phone numbers and can set them as Sender IDs. Setting alphanumeric Sender IDs is also possible. 
31
-
32
-* 💵 It allows checking the current Telnyx/Plivo/Twilio balance by selecting the provider on the left panel.
33
-
34
-* 💰 The only ongoing cost is about $1 per month (depending on the country) for an SMS enabled phone number located in a country chosen by the user. No contracts.
35
-
36
-* 💸 Very low prices per SMS: starting from $0.0040 per sent message and $0.0040 per received message (Telnyx), or $0.0050 per sent message and $0 per received message (Plivo), or $0.0079 per sent message and 0.0075 per received message (Twilio), or $0.0040 per sent message and 0.0040 per received message (Flowroute) in the USA.
37
-
38
-<span style="display:block;height:10px!important"></span>
39
-
40
-Double Bastion is not affiliated with Telnyx, Plivo, Twilio or Flowroute.
41
-
42
-### Donations
43
-
44
-* [Donations are welcome](https://www.doublebastion.com/donations/)
45
-
46
-<span style="display:block;height:20px!important"></span>
47
-
48
-Send SMS message
49
-<span style="display:block;height:10px!important"></span>
50
-![Image of SMS Relentless Interface](https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_send_sms.png)
51
-<span style="display:block;height:40px!important"></span>
52
-List received SMS messages
53
-<span style="display:block;height:10px!important"></span>
54
-![Image of SMS Relentless Interface](https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_received.png)
55
-<span style="display:block;height:40px!important"></span>
56
-List sent SMS messages
57
-<span style="display:block;height:10px!important"></span>
58
-![Image of SMS Relentless Interface](https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_sent.png)
59
-<span style="display:block;height:40px!important"></span>
60
-Send SMS message to multiple recipients
61
-<span style="display:block;height:10px!important"></span>
62
-![Image of SMS Relentless Interface](https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_send_mass_sms.png)
63
-<span style="display:block;height:40px!important"></span>
64
-Filter messages by date and keyword
65
-<span style="display:block;height:10px!important"></span>
66
-![Image of SMS Relentless Interface](https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_filter_messages_by_date_and_keyword.png)
67
-<span style="display:block;height:40px!important"></span>
68
-Delete old SMS messages
69
-<span style="display:block;height:10px!important"></span>
70
-![Image of SMS Relentless Interface](https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_delete_old_messages.png)
71
-<span style="display:block;height:40px!important"></span>
72
-
73
-## Browsers
74
-<span style="display:block;height:10px!important"></span>
75
-
76
-SMS Relentless works with all major browsers.
77
-
78
-<span style="display:block;height:20px!important"></span>
79
-
80
-## Programming Languages
81
-<span style="display:block;height:10px!important"></span>
82
-
83
-SMS Relentless only uses PHP, SQL, jQuery, CSS and HTML. This means it's robust, efficient, light-weight and easy to maintain and debug.
84
-
85
-<span style="display:block;height:20px!important"></span>
86
-
87
-## Minimum Requirements
88
-<span style="display:block;height:10px!important"></span>
89
-
90
-- **Nextcloud 22+** has to be installed and properly configured, preferably by following the Install Nextcloud chapter in our guide.
91
-
92
-- **A telnyx.com or plivo.com or twilio.com or flowroute.com account and a phone number** attached to it.
93
-
94
-- The **libcurl** PHP library has to be installed on the server.
95
-
96
-To enable email notifications for every received SMS, the "sendmail" utility ("/usr/sbin/sendmail" on Debian Linux), has to be present on the server. "sendmail" is a binary which gets 
97
-installed when Postfix is installed. Also, the web server user (www-data) has to be allowed to send emails from command line (by specifying "authorized\_submit\_users = www-data" in 
98
-"/etc/postfix/main.cf" for Postfix on Debian).
99
-
100
-<span style="display:block;height:20px!important"></span>
101
-
102
-## Installation
103
-<span style="display:block;height:10px!important"></span>
104
-
105
-<a href="https://www.doublebastion.com/install-nextcloud/#install-sms-relentless" rel="noreferrer noopener" target="_blank">This chapter</a> of our Complete Guide to a Complete Linux Server 
106
-explains in detail how to install and use this application.
107
-
108
-SMS Relentless is a component of RED Scarf Suite. It can be installed and used alone, but if you want to install <a href="https://www.doublebastion.com/red-scarf-suite-components/" rel="noreferrer noopener" target="_blank">all 
109
-the components</a> of RED Scarf Suite, you can follow our <a href="https://www.doublebastion.com/free-server/complete-guide-to-a-complete-linux-server/" rel="noreferrer noopener" target="_blank">complete guide</a>.
110
-
111
-<span style="display:block;height:20px!important"></span>
112
-
113
-## Contribute
114
-<span style="display:block;height:10px!important"></span>
115
-
116
-This is the official git repository of SMS Relentless. The <a href="https://github.com/DoubleBastionAdmin/sms-relentless" rel="noreferrer noopener" target="_blank">GitHub SMS Relentless
117
-repository</a> is just a pointer to this repository. We don’t use GitHub for developing SMS Relentless because GitHub is owned by one of the companies that proved their disrespect for
118
-digital freedom over the years and because centralized services create autonomy and privacy issues, in spite of all the benefits.
119
-
120
-If you want to contribute code to this project, please submit <a href="https://git.doublebastion.com/sms-relentless/pullrequests/contrib" rel="noreferrer noopener" target="_blank">this form</a>, 
121
-mentioning your intended changes. We'll send you the credentials needed to push code to the "contrib" branch of this repository. After we review the changes we can include them in the 
122
-project.
123
-
124
-Please post any bugs that are not security related, or feature requests, on the <a href="https://git.doublebastion.com/sms-relentless/issues/develop" rel="noreferrer noopener" target="_blank">
125
-issue tracker</a>. If you notice bugs related to security, don’t post them on the issue tracker; instead, send them to manager [at] doublebastion [dot] com .
126
-
127
-<span style="display:block;height:20px!important"></span>
128
-
129
-## License
130
-<span style="display:block;height:10px!important"></span>
131
-
132
-SMS Relentless as a whole is licensed under the GNU Affero General Public License Version 3. If you use SMS Relentless or distribute it in modified or unmodified form, you will need to comply with 
133
-the terms of the GNU Affero General Public License Version 3.
134
-
135
-SMS Relentless includes libraries licensed under different free software licenses. These libraries contain their respective original copyright notices.
136 0
deleted file mode 100644
... ...
@@ -1,80 +0,0 @@
1
-<?xml version="1.0"?>
2
-<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
3
-      xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
4
-    <id>sms_relentless</id>
5
-    <name>SMS Relentless</name>
6
-    <summary>Send and receive SMS in Nextcloud</summary>
7
-    <description><![CDATA[
8
-This application allows sending and receiving SMS messages in Nextcloud. An SMS enabled phone number acquired from 
9
-Telnyx or Plivo or Twilio or Flowroute is needed. The 'libcurl' PHP library has to be present on the server. Detailed and complete 
10
-instructions on how to use this application can be found on the 'Admin documentation' page.
11
-
12
-### Features:
13
-
14
-* 🚀 Use one or multiple local phone numbers in countries of your choice, to send and receive SMS messages with your browser, on any device connected to the Internet.
15
-
16
-* 📑 Sent and received SMS messages are stored in the database per sending/receiving user and can be viewed in paginated tables with filters for every column.
17
-
18
-* 📔 SMS messages older than a specified number of days can be deleted in bulk with one click and they are automatically archived in csv files stored in Nextcloud, before being removed from the database. This makes them available for future analysis.
19
-
20
-* 💻 Sending SMS messages to thousands of recipients is easy: a txt/csv file containing the recipients' phone numbers is uploaded and the SMS is sent automatically to all. The time interval between two consecutive messages is configurable.
21
-
22
-* 🔏 SMS messages coming from Telnyx and Plivo are checked for authenticity by verifying the SMS provider's signature.
23
-
24
-* 📧 Users receive notifications in Nextcloud and (optionally) emails when new SMS messages arrive.
25
-
26
-* 📄 Each sent message receives a delivery receipt displayed in the Sent SMS Messages table.
27
-
28
-* 📱 It works with regular 'long code' (10-digit) phone numbers, but also with 'toll-free' numbers and 'short codes'. Users see a list with their current phone numbers and can set them as Sender IDs. Setting alphanumeric Sender IDs is also possible. 
29
-
30
-* 💵 It allows checking the current Telnyx/Plivo/Twilio balance by selecting the provider on the left panel.
31
-
32
-* 💰 The only ongoing cost is about $1 per month (depending on the country) for an SMS enabled phone number located in a country chosen by the user. No contracts.
33
-
34
-* 💸 Very low prices per SMS: starting from $0.0040 per sent message and $0.0040 per received message (Telnyx), or $0.0050 per sent message and $0 per received message (Plivo), or $0.0079 per sent message and 0.0075 per received message (Twilio), or $0.0040 per sent message and 0.0040 per received message (Flowroute) in the USA.
35
-
36
-We have no affiliation with Telnyx, Plivo, Twilio or Flowroute.
37
-
38
-### Documentation
39
-
40
-* [Admin documentation](https://www.doublebastion.com/install-nextcloud/#install-sms-relentless)
41
-
42
-### Donations
43
-
44
-* [Donations are welcome](https://www.doublebastion.com/donations/)
45
-
46
-    ]]></description>
47
-    <version>1.0.8</version>
48
-    <licence>AGPL</licence>
49
-    <author mail="contact@doublebastion.com">Double Bastion LLC</author>
50
-    <namespace>SMSRelentless</namespace>
51
-	<documentation>
52
-		<admin>https://www.doublebastion.com/install-nextcloud/#install-sms-relentless</admin>
53
-	</documentation>
54
-    <category>office</category>
55
-    <category>organization</category>
56
-
57
-    <website>https://www.doublebastion.com/sms-relentless/</website>
58
-    <bugs>https://git.doublebastion.com/sms-relentless/issues/develop</bugs>
59
-    <repository>https://git.doublebastion.com/sms-relentless/develop/</repository>
60
-
61
-    <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_screenshot.png</screenshot>
62
-
63
-    <dependencies>
64
-            <nextcloud min-version="23" max-version="24" />
65
-    </dependencies>
66
-
67
-    <navigations>
68
-        <navigation>
69
-            <name>SMS Relentless</name>
70
-            <route>sms_relentless.page.index</route>
71
-            <order>102</order>
72
-            <icon>../img/sms_relentless.svg</icon>
73
-        </navigation>
74
-    </navigations>
75
-
76
-    <settings>
77
-            <personal>OCA\SMSRelentless\Settings\Personal</personal>
78
-            <personal-section>OCA\SMSRelentless\Settings\PersonalSection</personal-section>
79
-    </settings>
80
-</info>
81 0
deleted file mode 100644
... ...
@@ -1,63 +0,0 @@
1
-<?php
2
-/**
3
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
- *
5
- * @author Double Bastion LLC
6
- *
7
- * @license GNU AGPL version 3 or any later version
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
- * License as published by the Free Software Foundation; either
12
- * version 3 of the License, or any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public
20
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
- *
22
- */
23
-
24
-declare(strict_types=1);
25
-
26
-return [
27
-  'routes' => [
28
-     // User views
29
-     ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
30
-     ['name' => 'author_api#receivesmstel', 'url' => '/api/recsmstel', 'verb' => 'POST'],
31
-     ['name' => 'author_api#receivesmsnex', 'url' => '/api/recsmsnex', 'verb' => 'POST'],
32
-     ['name' => 'author_api#receivesmstwil', 'url' => '/api/recsmstwil', 'verb' => 'POST'],
33
-     ['name' => 'author_api#receivesmsflow', 'url' => '/api/recsmsflow', 'verb' => 'POST'],
34
-     ['name' => 'author_api#recdeliveryreptel', 'url' => '/api/recdeliverytel', 'verb' => 'POST'],
35
-     ['name' => 'author_api#recdeliveryrepnex', 'url' => '/api/recdeliverynex', 'verb' => 'POST'],
36
-     ['name' => 'author_api#recdeliveryreptwil', 'url' => '/api/recdeliverytwil', 'verb' => 'POST'],
37
-     ['name' => 'author_api#recdeliveryrepflow', 'url' => '/api/recdeliveryflow', 'verb' => 'POST'],
38
-     ['name' => 'smsrelentless#cleantempdir', 'url' => '/user/cleantempdir/{userId}', 'verb' => 'POST'],
39
-     ['name' => 'smsrelentless#getreceivedtable', 'url' => '/user/getreceivedtable/{userId}', 'verb' => 'GET'],
40
-     ['name' => 'smsrelentless#getreceivedtablefordel', 'url' => '/user/getreceivedtablefordel/{userId}', 'verb' => 'GET'],
41
-     ['name' => 'smsrelentless#getsenttable', 'url' => '/user/getsenttable/{userId}', 'verb' => 'GET'],
42
-     ['name' => 'smsrelentless#getsenttablefordel', 'url' => '/user/getsenttablefordel/{userId}', 'verb' => 'GET'],
43
-     ['name' => 'smsrelentless#removerecrows', 'url' => '/user/removerecrows/{userId}', 'verb' => 'POST'],
44
-     ['name' => 'smsrelentless#removesentrows', 'url' => '/user/removesentrows/{userId}', 'verb' => 'POST'],
45
-     ['name' => 'smsrelentless#saveoldrecrows', 'url' => '/user/saveoldrecrows/{userId}', 'verb' => 'POST'],
46
-     ['name' => 'smsrelentless#saveoldsentrows', 'url' => '/user/saveoldsentrows/{userId}', 'verb' => 'POST'],
47
-     ['name' => 'smsrelentless#getbalancetel', 'url' => '/user/getbalancetel/{userId}', 'verb' => 'POST'],
48
-     ['name' => 'smsrelentless#getbalancenex', 'url' => '/user/getbalancenex/{userId}', 'verb' => 'POST'],
49
-     ['name' => 'smsrelentless#getbalancetwil', 'url' => '/user/getbalancetwil/{userId}', 'verb' => 'POST'],
50
-     ['name' => 'smsrelentless#getbalanceflow', 'url' => '/user/getbalanceflow/{userId}', 'verb' => 'POST'],
51
-     ['name' => 'smsrelentless#getsmsnumbers', 'url' => '/user/getsmsnumbers/{userId}', 'verb' => 'POST'],
52
-     ['name' => 'smsrelentless#upload_numbers_file', 'url' => '/user/upload_numbers_file/{userId}', 'verb' => 'POST'],
53
-     ['name' => 'smsrelentless#sendsmstel', 'url' => '/user/sendsmstel/{userId}', 'verb' => 'POST'],
54
-     ['name' => 'smsrelentless#sendsmsnex', 'url' => '/user/sendsmsnex/{userId}', 'verb' => 'POST'],
55
-     ['name' => 'smsrelentless#sendsmstwil', 'url' => '/user/sendsmstwil/{userId}', 'verb' => 'POST'],
56
-     ['name' => 'smsrelentless#sendsmsflow', 'url' => '/user/sendsmsflow/{userId}', 'verb' => 'POST'],
57
-     ['name' => 'smsrelentless#getmessagesperpage', 'url' => '/user/getmessagesperpage/{userId}', 'verb' => 'GET'],
58
-     // Settings
59
-     ['name' => 'smsrelentless#getsettings', 'url' => '/user/getsettings/{userId}', 'verb' => 'GET'],
60
-     ['name' => 'smsrelentless#updatesettings', 'url' => '/user/updatesettings/{userId}', 'verb' => 'PUT']
61
-  ]
62
-];
63
-
64 0
deleted file mode 100644
... ...
@@ -1,830 +0,0 @@
1
-{
2
-    "hashes": {
3
-        "CHANGELOG.txt": "aa8b710cbef51739742897f310e89772dab231b62333e0b66189d6c5d30c6e4088f3c4e205c08817761af41a3d3ccc4c2f17b77c95ba9f0977eaeab4b392227a",
4
-        "COPYING.txt": "a0a86214ea153fb07ff35ceec0848dd1703eae22de036a825efc8394e50f65e3044832f3b49cf7e45a39edc470bdf738abc36a3a78ca7df3a6e73c14eaef94a8",
5
-        "Contributors.txt": "3aa56949f3b311d19322a7b31511a94fa9c796f3fb42a929887a0064482fb1f8c125bb21bab405d764aae329c6c65231235134d721aa364c39cd6fe5400c031e",
6
-        "README.md": "748c3e57f200b853d360b00da74da3b4c70ae39623623464a7c5eacef73964555690ed4b52033cf9ee23d2ae5f6710b5a7ae2f4b1ae4be5d3854d045ff0146a7",
7
-        "appinfo\/info.xml": "00452da3401afcee93fa826c5dc65d6e5acc6ffd546f479a89001f3e541a268954b745ebba4f2e661d4740cf2b3159439a9203d5b9d6bad04da203e97ed86fef",
8
-        "appinfo\/routes.php": "a873bc398bd14bb8e7dad9ea33d7f479db964270aa8a3af6c43d8bfb415a130f74fae973d19b7fef250a116b7ef8736935e4661c24ad367b7b4f513ac8ab38c5",
9
-        "css\/style.css": "b0423986ddb93cf0370a7788c7918311c473327d026df4bf555d9101507093cb33bdd296e5165731a5e98ee2539a46a438994c0ebf7ddd8a4eefe3a371745f7e",
10
-        "img\/arrow-top.svg": "389b15b7bfa8c90a79cd80958d1150538ddd0aeed875eae3a498b9bee8da3e63752fbc6c073cf58405fc35633a9b786e34b3ca1f6d234af685277aa8d439e1a6",
11
-        "img\/arrowDown.svg": "1ed4bbc599a2f8772cedcc8894b606aaad1a8f07b7d81ca89c6eaa50483e6027cb6cc13f5fd375d63b7fa196da76c0fd6f244c8dfa75ee3aba46eba46b426a53",
12
-        "img\/arrowUp.svg": "89393ed72d8b23cd8e827c5405fbed6304e487be9936631d1bfecb0b6c4c5e60d8f713e21a55f60c24ec43bf6d02b18a4102be329e9369c5aa6782d7cd7c6bf7",
13
-        "img\/clearfilters.svg": "f554eff67f4c1440eb3865ea98b00bcde1f27361ae5888dfa7db1ed95d074915aaba0f6aed3f70d6d7c4cb5ca592dbc3f3175f958708e54830f895e8b652b499",
14
-        "img\/filter_icon.svg": "5258d0d0e3677c10a8ae5d8cc37318855e5a6d5071d5a61ee6d29aad7109292502d60571f2c5ae716295dd8f93a327c060ec7c65f2f9cbfee4b85086682a385e",
15
-        "img\/garbage.svg": "b76cde0659b7f127a810406d2b734f03871e3a7c8bc53acb723c2a97fa6ca0801a26cfebd4ceaa28d2ad237a67a222e00aafaecaf7e749cc8e8f93ae35a4c4f3",
16
-        "img\/garbage_bright.svg": "45bbad63a659b6add876294f8aebda1cf03790b0c253ba442f04fd9677c1a35795eb823dbb92bbf38066e8cdf89fb34671763dabbcdad4722aba3ffcaa21581b",
17
-        "img\/refresh_logo.svg": "a95a19645bbde5e2146a3ec669950bc6029bfc6104886552eaeb4746733657ecbe4f9199e676ee2e9852ef0c5adb612d93e300e3fa9713fc611e1f8e7c1d5183",
18
-        "img\/sms_relentless.svg": "d10cd123ba39943cdff51c78f129f0f2e0e4cdc00d32149e638ad37a92fbc96133df88efb1da5e89cf0cb22683bf590c97700ac642ed4a31e2808d6130b826f0",
19
-        "img\/sms_relentless_dark.svg": "aa0a74c0800d0503e489f943bf49de3f53a993db6523bc08da7b4bfa621e73afb2af03b03d63ba3ac91af2757477452c25e410ddfd5d5bcf26f955a08ded36c0",
20
-        "img\/sms_relentless_delete_old_messages.png": "077c74a6f138ed1c46ee9426c0c0573bbee12b71c85ae0cb3ebba1ea040b4f88099405d1074a49496050f092e47af03feac9afb85ed1a2480d74d9f07716d287",
21
-        "img\/sms_relentless_filter_messages_by_date_and_keyword.png": "a014a100ec4be4e5d2e09b8d8afc85125fc3f5fdd4379c8338c209a08cfc65a547b1ebbebe6dcc81d05b68081a66982a31f85bf7f7b6c66f441e679743f65814",
22
-        "img\/sms_relentless_grey.svg": "2e4418957c73e2b4dfc2e003e3dd988c8780ab5e4b0af52dbef5f5e52aa569d4fe95632d11f37be6808b79a74f5c8f9b2ddbbfb8c8c0979ac849aa330f3af2ce",
23
-        "img\/sms_relentless_logo.png": "bcc8bc7301aa9c4811ee875b5deb4ed21d9c7eca187970643962f0ae11a7483adc5257e26b307c41644dfef63ec82c4e61a221f133c62827e1d4418928c253c5",
24
-        "img\/sms_relentless_received.png": "1161fbf9e9351510edf200ae89f36730af1c1410cda4186f631d15797e2e484e384898eae1dd97d2904a4d6272f551bb25071a01ecaae101acefb32f855e6f50",
25
-        "img\/sms_relentless_screenshot.png": "5bddd3148637473bd5d0b551df701094c8983e1a7706d753697df1bcec27029b88ef92146c7bc9213914dcdfce65eeaf6eb49d9aa95ce4d6e7f6317f4d9324ab",
26
-        "img\/sms_relentless_send_mass_sms.png": "f8043b8d2dd53058c28552ef96e637072337d1c751930f3418ba8ea7a394507246f35ed98f8123ff1e9e6598babbafdc5b893dbedc0624a2d9c5c1184c6ad60e",
27
-        "img\/sms_relentless_send_sms.png": "0a028ba48f0b86d820dd2fc13327c9069665a327f461310847286bc6ae085fbb7337162b27125b2d42fd7136a30c9dc7f6866501912647899aa0cc7ae676f706",
28
-        "img\/sms_relentless_sent.png": "7aef983c66793540b102f6879151449ad0da60751d89eae68ffeec7b20ac6e84a1d92388fb808d10dbf63f7bedb68c888dda509ea2ecd7715ca8f264e05a470f",
29
-        "js\/arrowup.js": "97e6c0acfaddb6087bd105e712626363f43e2a1044027986c6d0f706b454969aaaacaa69b52b5ef54ae15a95e9390fe04e781b988d09b55b2b4f9e2aa8c28d0f",
30
-        "js\/deleteoldsms.js": "e949b8a7a325f63bbc78144f1c14a82e9c28c3ed6e420906871220d7d53aba5c1784813f6bda914cc6b5857035660c5a79a74beefce5ed8787a9ae9990f45a96",
31
-        "js\/sendsms.js": "84cf99738944ee960f979f89e094d08521146d680eedc865d6c854b612dccda8e1030b53c2590e73c182cf9e55d9ff5173bbb9b0f915d9403d5565862906956b",
32
-        "js\/settings.js": "9564916b0239ff0ed7b02889469bfeda189d3ac08ae4d90a57a63ebb5be22b8fba1a5af463842d37d12097ab272d01768830bb76620fdc6c7f5d0a656120b71b",
33
-        "js\/showsmstables.js": "cf082598ce94b5fe3baeaf8813afd3a257e580411c4b43495aacc0897f2aceac8f356b09dd936050e955420690b2c86e3cd8a52ecf847154541fe75d7524023a",
34
-        "l10n\/en_GB.js": "30be5a195908c731891e456c699053a5b9675e5c21bcfbe6f2091f467dab6bf0dff3ea167b9f96e7c6b492d74709d5c732a5eabdbec30c129607b0990773609e",
35
-        "l10n\/en_GB.json": "7f1567f247b9b4ad32dd836903f34ae02cb93c26b34e7eec509ddd1a6e320d64be2d907796017c379afd7a9fd75c9ed5bd00187e93da4100132beed5c16ca74b",
36
-        "lib\/AppConfig.php": "c52269913ee80151397520bbebe4f0c725526910ce18f8717ba1c8016a5f4dcdc9a6f9350bc56c8a6b607ea342ee0cbe0f65afd9f03c31902190c008f41c9672",
37
-        "lib\/AppInfo\/Application.php": "7e5ff3a817b1d46e8b05e2453c34450c5629c25b5c3955593b36a22e5ff0a6a67a197665d476f7904c3dc8712105687153954c22a12f597828247a56a80f509b",
38
-        "lib\/Controller\/AuthorApiController.php": "758826f01d4252a613fd6531a3ee02c89876b0c055fbefe10d63481172e84030922126cc9234da432ae6ee5f6218081aa77af8c08c62ccaf27c4fb9912b6cec5",
39
-        "lib\/Controller\/PageController.php": "07da5883ea41b3f7993a3e358a03a3db592a30fa81ea1ed0f26a234fcc3824a243316b76824fb9a24f40304ae945c48118dd4bed1f0d2f6993e479ab2c1dcab6",
40
-        "lib\/Controller\/SmsrelentlessController.php": "f029db3ea4ee5e575284fb48e1eb546dd1140d3a63960d7a41eb3ed7b5568b78d8e765e338b57ac239c1598467ef2cb7c47bec4ac5ae9d1150f6ef5143fe318d",
41
-        "lib\/Migration\/Version100Date20211106192148.php": "9ace5c30542cce3e9133f96eeb9d3c1d498f2a474d7fb20046d189236c44b67d22084461b3111c84fad1331a84ecd30e3e205dc00681e257445c4b8dd6c42634",
42
-        "lib\/Migration\/Version105Date20220509201842.php": "43983f0381d11ff1c10ddcf4fd8e645163bf2a7f8a1ac471c97c346d579caa8f9324e7788df467480d147f50f04f80da39eaa5a950bfaf134b9dbe303bd808cd",
43
-        "lib\/Migration\/Version106Date20220813144231.php": "3558d51c13f9090fd9a6537fa57da09e1a73ec8ec6a3b8ffd8d860f19daab6e554206102451a4a5af91db818761df3f7742077fd069a279089a30d8a22c2a4c8",
44
-        "lib\/Migration\/Version108Date20220823132408.php": "a80c1c87a97377b51e8c04c84f46f4c11a47227aa82ff873b5ca0b1dea63ef7532b273f326dae9c45b8ea63efd07e08ecb0f50da1b3a3a409db55a4aaff164e0",
45
-        "lib\/Service\/SmsrelentlessService.php": "11943252a5ffcb066467aff75c45ba68a1b2271eafd60b6467b5139a9c9367bec02929a11098ebfd4379b97c64bfdc3cb3beff51edbe0043b300048985ce5b1b",
46
-        "lib\/Settings\/Personal.php": "537257dd886049700ee575aa733abd31c6a8924555a01e0d312145013c28b284c4947763632184767456dddca8dc2864c1a1c1f4f21439b6e4722f2d952c281e",
47
-        "lib\/Settings\/PersonalSection.php": "e65e1a8939e3818e7cd295ce86581a603b1e2fedb732ce51ed1fce62cb61ebae9b93742b1d923f08e14cdc6bd5cf2818d47917321e0aa1736932830c05a81682",
48
-        "providers\/Flowroute\/readme.txt": "25f08fea0f30105e850dbf07bb7a9351e47883640dd87d26981cf50f02ab5af8ef59dbd1fbe5e4127c0e019e13ce036f9414401b9d3f3a924c4125c291e53446",
49
-        "providers\/Plivo\/composer.json": "2d8def5ce9444d4bfe4ff32e008e6aeec924efd40e0cb61f3a72585fc4cf89e7b62970e796d56ebdd5d2f6378f39d3ad540ffdd02c31e2c4daae9b760482619e",
50
-        "providers\/Plivo\/composer.lock": "d9a2b89de334156eaded5ca4cdaee9b53c05e5d78584faf000a141692225a1bf6a1dd9ea6259bee2158ca7669c4000b3c366703fcd1f55a835278aa9f653c7c1",
51
-        "providers\/Plivo\/vendor\/autoload.php": "597387bcc320be22e8b0060c456fc745d8e3fbb06cd1cfbdf093b0ee52aa30cb7e4c31d6d8c38450f52387c0cd5f9d0483e3976611d96f391f5651b71d2095fc",
52
-        "providers\/Plivo\/vendor\/composer\/ClassLoader.php": "2b6fa585122ace1ba816410acbd8372cb75329917aae6363dbad48e396cca581452616e1386a2e445a8fbb0e461b988279103f4f89adf704bce7726f761abf0e",
53
-        "providers\/Plivo\/vendor\/composer\/InstalledVersions.php": "62b61a5303337c975905fa55addb6b1157034fecaa5fb3b5bad251ef7fa1b1ba840308f64fd2e1244d2098b7f87431e35939a153298530cdbd82f81b99cabaa2",
54
-        "providers\/Plivo\/vendor\/composer\/LICENSE": "f3bb64009f41a425df5a9bbab53490f0eb9b74fa8d6aaa2f57efb928edc4ffff330260666edeaa04a91fed708c3663371cf01b284f3a08d6698aaef7a23f355a",
55
-        "providers\/Plivo\/vendor\/composer\/autoload_classmap.php": "1844f7843fdaabef42d1d9e4c09f92f51a5ad45b26d44b34a2aa9202a183489239a0f5ee6502f302b169ccfa3a4bea7308771ca02d3bad96095b5b2194a65377",
56
-        "providers\/Plivo\/vendor\/composer\/autoload_files.php": "c0eaa5b28b83539deb67f24a98ebff5ac0483f9117a72d5cbba02e26f1f18cd4c93ebc23786047ee61eeef11961c55ae6cd4d4096a16f18a19d2af49a47820bb",
57
-        "providers\/Plivo\/vendor\/composer\/autoload_namespaces.php": "0ac6bde683c053d62b7024686ecced083ca1a326d5346a248b1a058ac74a5af71d515d311ce76df799a518027f734b80b9e7f6e8022a9556c0f24ce90240d822",
58
-        "providers\/Plivo\/vendor\/composer\/autoload_psr4.php": "91bffab80b2ba961f206bf3008a7380f81b7cac7b09afe4bcd2d4787d8b4c839ffe2a67442e04010918631b1c76b66304e7d7bce76371e741b444f2ef527355f",
59
-        "providers\/Plivo\/vendor\/composer\/autoload_real.php": "2ff5b7a817e3acbf585fe506b11345f6f3ab0f21c0ee96c67037f09de6130126d4c0e728ea22508192787a451322369197610726f96f32a12f91b7e48cee86a1",
60
-        "providers\/Plivo\/vendor\/composer\/autoload_static.php": "4fdf5e58875a6dc6bab4aafefd254cf3504f78feecdeda5fb431a56f84b37d2cf8fab8e233ecaadc2667f1be492ded264423f3200e1095aa507172b0dad3f60b",
61
-        "providers\/Plivo\/vendor\/composer\/installed.json": "0365a8c8cb376a0b3ca8cdf63147012435d2488c5ab585db3f9e0d926b588887992c1c8cfe07ac187f5f72afa9a3db936c6885d443db444147d7c87ff0f3084b",
62
-        "providers\/Plivo\/vendor\/composer\/installed.php": "923c151f9cca2fe9489aa4cfe04053d20e1923dfb388cc6aea2486557d77284fe6d9d2a77a7acd94496237465f03b712166a2f2f5837ab13bbb7f0aed8d52552",
63
-        "providers\/Plivo\/vendor\/composer\/platform_check.php": "49e79f2c7c1c32796dfef02f64feda4fc8fc5aa05197465fba579997d332cb9dfcad3511efbb34a32a2b2c8d8901be4ca39867026b2471fb17999ba840c3c340",
64
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/LICENSE": "6f6cbdccc57476f5386f5336c1efa105b4116760a329ae2fedb30fabe1f34f7c1a3073e7f711e07284c8b57b3b8ab6dcb38ba8d71f6835ac024ad524ad658f94",
65
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/README.md": "8f3226941b2d676aa31b66f5a38f6fa78a4073ec7ea6d6a3aaf0209072cbc8df2ebee65f64460e350f499f8448542443f9859db75f927fcbe70f1f59384e1a70",
66
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/composer.json": "82e17e8f606504476175a3c5116bff37c3d58faf5fbd9590cc4047f787b6aae79a84c660bf2e8dca453b998926dec84e6d5bca5d81b6817e09d99c6774cd04e3",
67
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/BeforeValidException.php": "8aac5fb14b6d94bcf048a1cd4935af09c25183e74eaad8f2db19902f1f017a33261707b12be8080d5a662bd01d997d4d5805cfcdf3127f447feb6ec6b971f563",
68
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/ExpiredException.php": "7cf0ec0dd02717f5152abf5c01979526fbb89f04c01802915745097c8606e432b41a4de5bf92b7cd1543b37a939ce8e133b7622f29cc48798c321654dfb94a3a",
69
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/JWK.php": "3f134e7503b44f882a92a699dc4cbb4d7415bb93526438e4395cbe877ab2da700d3ef7a8c037d7d2ffabb84e20165f93e338bb32c2bad9426e63708da4f842e3",
70
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/JWT.php": "9e5e21477b0495c3cc6fdff79d9b6acc136c0187d732cfa4ea438d9802be4642c2fe0e76b288238fa29bb0a8e37e31d57546d548519436dc49de467cfa704ed1",
71
-        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/SignatureInvalidException.php": "0c00a3a08bf4fc2eb675fe8ad3d8cb732a82a8f88d37dba5e510ec798a49342b8089098dfae1f1ef1906e62a4b8e465fb7b4c6d17c9c0d8e66ba33ab271e5c88",
72
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/CHANGELOG.md": "f99b50bf2d30b8e842d2db14a28068364b330b402db7bb1fe87fd4e1e3a9009edb05a519a4c35be68ba99c4c334680ff52ff0bebb84ab99de8814959d34e9c90",
73
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/LICENSE": "ed4199d68a412c0515450194549bac0c6a6d838b3950c036bff6c97457fade76fc914d11bf008321b3e2622ef0a3c14da0bee2f109529cfa5a5fdc11fc6452ae",
74
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/README.md": "dcb463420d7da1805c5cc020988f60c15fc5623a2493556ba4bba63d431c21f0584c1e65f27bf0a4c7962074aacf40d763981f878a10e12327cff9b89204ae57",
75
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/UPGRADING.md": "4f2540329c6e06bc0f05a574b0ce5d77ac3f7fa4032371665dce41a766cd28ee12a0b7803ca507faf005f6a3ec5107a60978b69a4fede8bc562333b736576f55",
76
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/composer.json": "8746b3c8b0fcf0ede926b6a60b4d34e7a3e0e9664aef67b34e7e238c25179d22ce599e8c4a580e9f3d73122a0c9b373b87526874c947878ab339e662b03c150d",
77
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/BodySummarizer.php": "649dbacf3be500e6171769c18b1eec1888bfe831dcef8464ebce4461d5fd337c60a200d3c89f9bd7c2714c0567e5e220b31ec2970e7a013f914123824ea324a8",
78
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/BodySummarizerInterface.php": "d0a1271ad03136dca5752c0dfaa7fa678c6fb03890be828780201cd9fbdc8169ff4fd7c17867cf82ef1672ecf0e9f871f682ade1a8ff37e7b84d24c572e1b962",
79
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Client.php": "8fc98c3490398476a81f660a0dda38306acedaab2f662f762881c11f98bab8b5194ea6c05477bfb2676848f54229087df8fac0e6aacec6499f2313e09b940ea4",
80
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/ClientInterface.php": "d1ab53fbb1b6695e6537050421b3a749a7b34b3184015da449a1c76987fd6944bcc1c4cca7247b98b338926af89fa477f9be4897e6316cefb2c1656520c3ea2d",
81
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/ClientTrait.php": "ec1e95b2f1c56e4443c6fcf695ede88e02f1129b7027287f968a0ef2f7debb7533ce2371a27b5ee07f78818786b0a6d1b3d2f8ce28f44f4a8f7e275bbd1b6727",
82
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/CookieJar.php": "3fa0964d59cbba956bb47fe103f02e4707a2a6ebe5a60dd5c33f59402a090b6f0110c2795b52f961f6ddf338567382e1248f1e27bf2d0e2033a43efd15e2705c",
83
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/CookieJarInterface.php": "a3c6b9138e285d6c6b7521dc7059a04e1c80bc0de7a925c93ecde6c95cb7fadab91ee05e9594d6b891872a557a1b98fc6717ca1d1d46e00992c9cdcdb934a71a",
84
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/FileCookieJar.php": "35111b9229059f54b537baec960b8480d5e3caf2961ca3e7e45de3fa5ad5bd0b0a91c2c4231f6386a4966bf9d97aa308a7e444000dae9b21f8c58b6832dee68b",
85
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/SessionCookieJar.php": "9cf11d2908913a7555e9e190e6a4ffb0f0e26ddb3d141faeb0e7bafaa6f0b3259119ce6febb6d01b5a7f5a3193f72a099f08ea45b5955bdc7120bfd4857879a6",
86
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/SetCookie.php": "7d6c4c14c9d652c27da23923cb577fa999e24f81c1b82f13fa329da3eda3373ba7a832b72d793d924fda9d6a3a02cb39db97e49e17feab3ecc93f395e614d44b",
87
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/BadResponseException.php": "4b7a572e9796b8043d56dc6650709e59bde237b3bacab1206b807485cc850ec99dde86892696d73121c345f1c88a9d2e879dc91be2cd438defe2609e521011b4",
88
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ClientException.php": "0011418b0cd07eff70f99645a008c30e9a6a90b9ec396e8cf70ffc281140054bf313eba40d97ed34b59e04e5fd6712330d34268353493d112b8029c1c42e5046",
89
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ConnectException.php": "bca929720f3f8f4484899b18b40f5d4d40ebc4105b316679a9349b97200c74ad2ae6408e2362b4639bcc4a3150fe63ca1e08bc1b159c51744d76466c41203c83",
90
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/GuzzleException.php": "444ae2d2847cc99d9a3895e2d23f0abe59bf0eae279809f7a4983e34098ee0a0ad7408d251df821c4029621060aff1ea0dc890615535ea4368e5796151a767cb",
91
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/InvalidArgumentException.php": "2647ca6c297960b01b29435db7522ece3a997def6b3af71e26113abd43ca4493501c130e7767b845db0e723f9955164ce33664d49bd67a45bd29d270a66e0e3b",
92
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/RequestException.php": "b0b3163e4eb96ace90c03faf9406b89ae21c7cd5fcabe78035d5d9e1e7ba0ff72bcf31b877ce2d5cd38e940cf0ead52659c3637dfa3567745fb46a11cc9de31a",
93
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ServerException.php": "9cab599fd913d8f0bb1b8f448932ae0b5c5b1cd7d83fc4e1e4c13fec29b0a849a5385a6c40183b8dc58404ed020227b9ea4483ac89d135c6c82e4c7985604044",
94
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/TooManyRedirectsException.php": "99c4e6f908a5dc03939ca083232cf48cecd742616e00839ae25ca173ec458e6da10be2690b98588b76e0f3c24ee7f35c09ed5c848f9348c639c414aecedf6c2d",
95
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/TransferException.php": "665600a8617328454b70a43fbb72c81ea196584dc22e10324b3c861974aa55ff5867b30b86a65123f1bd4fece75049a9f6c4bfeef5410a9f29913d350358178b",
96
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlFactory.php": "1dd7a848ab73a8db9354fa2f0461a995320ccb677b29464812a484730a85f405d8b6c9b39783881b299328cb8f99e67b9d959b00672bf60a4559b136fdae8119",
97
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlFactoryInterface.php": "0d063ee120e0ff6042a58d29b109bf6573494d427e20184a4d448ef31fe0cb0cedd60bb47c7289d5f6e1027413a28f9f57921823605d4f11086da5c9be8c0902",
98
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlHandler.php": "ae0388a0146bd0cfff1c597570f58acec92876d3d01298e1988dabc717ffd76895b45359cafd7bbc62ca1fb5e7e96fdab70697a2cb469c8c5d0298aef12e44e9",
99
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlMultiHandler.php": "d03d4a374657d671554d06e5622eef0d1b06d0a39a9167ec6f894ee28af31defe1d4306f937376cf5997c1421643e08e757880e45a1c9c10959c967022160f96",
100
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/EasyHandle.php": "7438c054921687fcc4bea6ef6b49aae15651a95cced2cf73ffe46bb15abdf924afdd4784e8d2121ca851934fafce69d3661f1a792e6f2352cc5f5c1803ace3de",
101
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/MockHandler.php": "0d8e2e43e0b8079f20de6b86c241afdc83bb5bcdc5a91ac47084ffdf2a3904a79e5db6fbafa4715785ded8fb90dd8fc418aa05bc0fa8c52220555720f81e827e",
102
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/Proxy.php": "9caf11da430da351eff6e9be0a1e8e029bce41283a6d8215e2215d6abbd3f021018564d1e6717f65f280703d5e4dab78a2b522042d63c5a9cfd019b0bb0aa4f9",
103
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/StreamHandler.php": "e45738ddf123fa57df229fccc94622b9a2ad5dd9bf6f65d24756239b587937bac9b7a37220e65c55f2abbd7159bc16ac785893d4aac5c192e6422af4fc4f1222",
104
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/HandlerStack.php": "900b9df966c3c1f3aadc45bd42a81e8ab153c74d0eb90cb3c8b2f9d46115353f45e5bcaf0eaba1281ab98dffb3d136a0c0fa0058fe73d906eebb741b273c150a",
105
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/MessageFormatter.php": "99460bb55080cbc7e08eb6f1b3c8abc71c38cd5d6e04422bdf8144ca554e7d7de29fc5d5dbf7aab5f7440c4ec9d779d684f8194f90139a1ece1bb086f14e3cc5",
106
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/MessageFormatterInterface.php": "609462659ab00682e7fdd1bb56aed5ad3cf54a2ee3b641623175b9dca0136b4e1cbd3cb0541526ed86d05174a18a9333ba52a9e50f4c05ece55cdc636815e385",
107
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Middleware.php": "42fea3a5bff7eb363a7af1f85a21a9322aee8d7e343295209815739f8bbd5dc372f14e3e8c5454f7650a3b9d802ca25fa069d64fa16b0f5d4d48c3d626ba3527",
108
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Pool.php": "a6d17779976754d7c16127680ae32f8e45ed54c3ef4a2a6364a1e4100ce732b8494b2848977ba6b2bf6fd296d7a54b30a2f021cba5a88ddd0d1e0f3a3712b9cd",
109
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/PrepareBodyMiddleware.php": "268182133f0e484b56fa23193d20def23166eeabcc2fd9626b17cbc20188d76549adaa4c768df695b787d31b2eb26a5316f0a3531ad3ed022aaddf0574fc2ac8",
110
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RedirectMiddleware.php": "38bbd75b92a6764b0502cea113e222d5cce7abe53c7ea0c01e441fbbb6b0514f2f54388ff14d459ed611925eaf9b48c0aee1b1fb41892d07d1b260734a1d2afb",
111
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RequestOptions.php": "239e524c17dadb296efbd8b9ba82b94ddfcd90c83377fe4bf2890dae5dbc62f58032205274575f14bb2e745112ee59bb559936b992d9a227dec00f5b2e32c03d",
112
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RetryMiddleware.php": "01236bb2265c0761148ccdda7d3668c10f9539119bcdcc36f10d077ca32013ca0169938d6f4bd0703018f38fac53b2bd34e873a07d8e5287c26fb64b7284dfe8",
113
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/TransferStats.php": "4fe882f7f801ba55a3934e00d81aef09edd092eadef498f3bb424f7f32dc8d568940806a9d8e80b1b6c768cffd41ecf0814a0bb366195b2400f08a8e310a8c19",
114
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Utils.php": "c3e52199a0a1755f52b6902b78d008de10e33ff8b93242a709d7a12e8c05c1c2c09c2874439606f0f3ce6b353bbe3b8ac385a236307b428fbccc078e1959c7c1",
115
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/functions.php": "f45c62cbff0de0255f4f149ee3e93c52bdae44492d43c9314a48d8a793ef028f8a8f704a2b28c5b84491687c3b682e9f85c4ea61bf63de56c6cc6a4ba8081ae8",
116
-        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/functions_include.php": "058a92f735b5848dc18be383478bd1659a0b578beba1dce5a1ef3b7a0b6b5f643e2f222dd72ed09ec72e8a5c5c9fae9757979f7c4016c5654bcce9d7dfd42d37",
117
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/.php_cs.dist": "4d42019074dff2a1a5bebfa51568de254e5128b88ad309bbed5e8348ef213035cf3a4da66ae6753354a0dcf6ccc0001bfafa2453028bffb3548f2ede26c30177",
118
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/CHANGELOG.md": "0c021cdbfea029de4a20511445e64d0d6c35400025f1361cc913754adce9b2dc16efeac12cbdd489ffcbb76e95f91108dcc557fb9dfdacc99e5bb98f20b55b43",
119
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/LICENSE": "9699a00cb2c5ebf932515e1232b83f79c944f8100881df096de09e25222fa01173bf24d9e083db7d9605d1e4f5dfa14c726aed52c0fc2499643714a9e64c4cc5",
120
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/Makefile": "a350f48cbb68a05cd07f787522193851f9cdc6b2643e34eb502fe261387d97e5ceb8499a22b20ff2fec5d7352ff239a952fa3b129ba3407fae871683d65e9bbe",
121
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/README.md": "1ea705deca28d726cc65d0f55db886545b9f5309ccc085bb482f627a0ddb5f8609d6635f65686e3e26b9a23cb8bf03b3e8d02a26d25eaf8195dc6c2cc93be0bf",
122
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/composer.json": "74a66451bfa422f886266ff300b4ca5f7b0ed62199293635671718caced457f6eab5b8c9467f24e999762f56368fb35742dc0adaa35a233d32c72783112a6c50",
123
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/phpstan-baseline.neon": "916bcb7d298578dfc4770a3c49ee558eef9a20dbff8e3d097506379c8680917b08a8f96f2b59d96b1b56b1ccf4a5478c868a2da504a1935956db70f51528494f",
124
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/phpstan.neon.dist": "ddfcf700a47b916ed1072c979f13d6d51327c9bc389c49ad264ba23279b01151b90aaeef0a81a13eafd40115d407ceaf471c20a61b47f1b4796f8adf3c1ad218",
125
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/psalm.xml": "52c09c8b7daf6d90db16a5ce50b7a8ce15c1ffa02265fd1d4b117cf717331475245bfd4f2dc45d3990d67333988a11081e13ebf783bca8854a1df9c1b0cc9cfa",
126
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/AggregateException.php": "97b6e46aa16ad26a2b714129b83d933cba02ec7afcda514ef67c5027cf5b9b93a5d7cbc72560307adf294179a4d7b86a6da9caa835bcf5be17e398501bb88fba",
127
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/CancellationException.php": "b958ade84fa4e6c7a7efed66dfb6a7f83b9743a9ac6581276eb99bcab667ebcdfea92a9bb114d086c5831d26abf7f6ec3e03254067e2b29abaec995e28cbce8d",
128
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Coroutine.php": "d1c789e47536cf8c9db52acf791bc6de0d61790856a78f0cf6a9c98a1628d2c42cdf9e5e94e05fea802a099bd3ae3c65b790f2fb5a342bd130654c4cfb4fcf07",
129
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Create.php": "a3651bfb1f458675c58397460c8534c2819404fc89422467f119de4cd80147177e462a9965bde6a75e74e4354c3c6935cebe1891e6a53a1bb26383f22e9dbccc",
130
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Each.php": "e57ea03f69e1680b56676ca1057e8defe7eaefeffb456b636f3cb32295eb6be36073c7a9a621f656c40d5661c0fbfaa3a632961d82ec7f116ab7fb5aa9db196a",
131
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/EachPromise.php": "c7d79757cca80b7352ffd12a6743a515255e4a89764f65067035b16fe39c09b6dabb833aec3fad3cb741aefd778f620202caf79e98b86095c6b252f4e555bbcd",
132
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/FulfilledPromise.php": "952eac7f7cc150394dedb72ac97e624db8156ecd41c8afc382ed0cf8e4c2c6c94879b7ddf6ff76608c6a95ef30ee136f44fa03ab9f5ce4b7fa01bcd0c7e7574f",
133
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Is.php": "894b3c475b5a828e442745507fae4b35bf394fc9fc93905258f9736a67112c321b1f3e353f8f3fb84e8778bff67bd9d27a6fd5ab6dab3218a30d82b8fd14ae0a",
134
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Promise.php": "bbfba94124c36b87941e1548162708a5543f156d64a8f465f78397a02bdc34c764b60f73d5e77a3a2e48727f4cbd91f60b9c1cd47c0fe205994c4ffdadb99c5c",
135
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/PromiseInterface.php": "8d8d1d9e04d75ceb6d3e656794fa93170a3b1f9c2dd3b53ba6b4dd3e599f880599cab0b1ec15eaedc1b26d09d6c535dc9fe92802ea8ab1ed5927ee8cda7cb9b3",
136
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/PromisorInterface.php": "1058176a68078d02c288528673176648e38d2b8093e67b0984d73ebc710c0bda7019689303b1f064726cbbfc9382e733443e9d5443a77715ba40bb798ac79e04",
137
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/RejectedPromise.php": "53914a46ca238b8d079333f9c71180aed015a77bf765cd2793790dde21fa7fcf67dcedc5c797a1d7caa06d788bd9631628712861b1185f3cef9aa63260aff0cd",
138
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/RejectionException.php": "6dae5e0b0b47538e5c94a3d4890623e3ec41be8198a1d00ca84d77f32b9d074cae13e25ea90e2af614e802aa28271def466e5ab623c187df49425cdfc5bc05f3",
139
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/TaskQueue.php": "431a73762758dd08406a41587115a11e61f921cc01997ea71efd803b2e3882b9cb7f6d89694e06ecd2992f2bffa38ba55d631dba7fabfce3b84d68dd4913a02f",
140
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/TaskQueueInterface.php": "f0b2b36ffb75337c590f82d3d7d19a4caa4eecd6003c0bec7ef935604dfe35f4e960f49da7115b3b3cf65c61d04bdf258310ae1b4f4b6cff4eb09f52626adc11",
141
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Utils.php": "9bb1eebf4d0f43bc47cda6f70f08b3fde962355075bb87d40ec75d41b552c262a79023a72e2e8d776b6d0db1ef1d412e398ae16d96476aa5c72afbdab9d5a9fc",
142
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/functions.php": "b756c2bce2557e9c6b8db2ebfb026354418c93f54169d1e9249478532bb02e1062c30e14060a3bae195098c74deb4f7580943aca944a162615c44139acfa7861",
143
-        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/functions_include.php": "17063296fca8aa655e7d5267abcf04051cd58fab5a7ff02530e1becb5002306252d5ec55c82461cc51f62c881c51dd80da53ed9d90640b6d0dd56d5e8f819022",
144
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/CHANGELOG.md": "0540da857957565d77741b846932c739e0883751660d561b2a0990a7cec8188573c2d31400cf9f125d1b6eab482455d19f30a8363354341e3c54088a0c418e7a",
145
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/LICENSE": "5d25479f1c9c0b802e2944e029d7011f9b9d3f7b37f7c12eb77321ba448414f79b0b254c0846d2e5e1b8826bed85d7c377803a4ad5d5afb288f220c761822043",
146
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/README.md": "b9759cedfe2199b2477e95fc0770f35ed6a4a18c6e6b4b4e30a20f75945505dcc76834e20e61e3aed90fd790c677536bb43f593de8a68558a200000eca8d0bdc",
147
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/composer.json": "27ad0b2937068e201fd0312a7dcfba706a8a318ca4e09d80f29611803bfb28d48433ba5f2b452da8bd76fdfe2b9f073f81f2e2cd6fc3e4223b20637408f6c836",
148
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/AppendStream.php": "d94d352d6f640589e84fe2aae0bd20880c4d6e897a29a47d4dffe6aed4d852fd5df274db2e68124c7f15b84d6f4fc684873fd03d003db39caa61b024b053e396",
149
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/BufferStream.php": "eee7de67e107fb33e8f97949743726a30e8201fd874490fc93870a410b1e0e3a059b75dda972b3a844b8c739b9b768a73d65c61bf8030589d0d787aa26f70e8e",
150
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/CachingStream.php": "e9b1e3d5e2bfae610677b9d216643be7b2e8b97cf661bc5c67631f994df0dc88a9a9ac7bb9dd68fcfd2ed343cadbbae227a8a46baa3b732733497e24f1338be7",
151
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/DroppingStream.php": "63db37354a2eba98b768f0929ee9a4ffbce1647a79cc9aee5e994cb693e53cfdb9f7a0fc4c32b68b46c64b39438b1c53a30532f5f8fb442f07062a6b4861e39e",
152
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/FnStream.php": "bd25e2ca8ea196a5e876c5b9d01c6f2a27b206f7ba05d047cb46476c52191a594f1280c7435b6429e4ea411fe5fc01a2388e213df26d27c5ae5094a0d0f2d619",
153
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Header.php": "27014466522ffca93b4a3da6e96a5e8501f11691f7642a2e5091f3d0c1b146789ea41fd7fa1e3948f264926e7b764b557b1b564a95a7b5cd56c17c8ddfb6b7d1",
154
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/InflateStream.php": "e19b69eb2f1d2f8782f7285414095ea810f746d02a447badef5ec7185623235f17f5689682b185ba124e71a19b0dcf3d36b64894d183e25edf27f1d1e34c1c0f",
155
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/LazyOpenStream.php": "8c262a2c574767d61a9eb084d6848bef77d047601ec5688a90fbc012d5349d9b4ea188444fe509c8ffbcbf6ecdfd839a461505ed3746b6e1c5283860f7fd4a2d",
156
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/LimitStream.php": "81a43b1ec261207c1a52faac2c5099a429e43083bbe0c9099f447859d2ea12a45d30e7f0b5a994696084b3c59401bc28564685c432644caf6a9d8b9669404c91",
157
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Message.php": "4e9b857c226b57e2d2faea27643d6f213bba65bf158889a528fd684cf1acce6f480805d04da39a32fbd25be9fc51c4f1a3c1bbc9e92f3707fcf33a120b2aa256",
158
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MessageTrait.php": "367bacfe383be2caeb0064fe80e5f6b138050dd4189bb65ff82d8f86d0b1b604090b61a2473d7e80c733c395cb893fa9eb2dad0a63a353c19da32e940a1de01a",
159
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MimeType.php": "98467f19beca7d4239963d4d91a7896d44539c13a5c694c4aa8ec68f3b57031367d1cddff19fb51c389393cd1402a574c9afdc448766c8807228d726796d2e9c",
160
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MultipartStream.php": "5bbb8f71ad1f2f421eac8c0d40c3a18372516e8ab8f2bb3f917871bec9aef0eafbef930902084aa3ca64a8ae930edb1f2befe1e6b49dec387ea239c5c475c099",
161
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/NoSeekStream.php": "f003ec01ce15f5dd56200396a84a2c94a1b134d320230983ef91efb1abc770827018894a1b8d1f3a68c2aa481e8f0bfbaec4c568d0b0fe251a61f76ee22efa38",
162
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/PumpStream.php": "15192b83cabf910107b30bde59197618e524aece85f9d396dcd8459174fe50a1cb82de51e5225b8e6ea64fbeec7b4d94f035bba2ed893efebb660105021fc98d",
163
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Query.php": "8ace1f141c08396103431803ed35e1bf247fdf7f7c7b727ca63e58a1cfdd7e353a6c266c8a7bdbb863e5d290414ea630bbe37f55f275cc5a5b946b794ce01740",
164
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Request.php": "e0582b7b304fddcd81a214bd8ecd4db301479eddec3084b18b822f5e22fbc9d1fe3f3d2f6ba52959619dfbd0e98db304b2400e67675fca41f470ca6126085da2",
165
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Response.php": "32524250d58fba5c152472ed37160a9aba92c586c9b2a6bc55f97134e490636189bc8708fd8ca4145478a5bb20ea51b5bc417fa8d61ab08fab3479a04c4506e2",
166
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Rfc7230.php": "beb2f85fd643c3cdb3c92b401c4df1385bc6fcddf7dfbfbed88396611438720a1b86ecb9b913472ca8edf1bd9782a3692b2138195fb366ac1b8a7f1b0b81d390",
167
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/ServerRequest.php": "f3fead87c83ce2f73b2890ec79cc620f319c59ebc41a041e4b70b38bb1e412c928fd7ff0f10d96fffed841cdc1ef2874d5ddb0e7cfbbad3ffa81ce7484365c05",
168
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Stream.php": "7d108ed410ba89cad35637f837d97f7ef53c43a4666d0502e3e7dc4aad06e7bc365f311961d2bb8768faf9d9c6d64d09e080aa9bc65638084a127e7a563acbbb",
169
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/StreamDecoratorTrait.php": "e1b90e1d97a4a1ed1eb1552bcaa9011f79733167b7e5e3f2af8cfdc54adf0d64a414ed630ec74418020fd8ecc7c75e43db6bbe0fdb9ec6d3ea928bd3bb3f4561",
170
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/StreamWrapper.php": "7ed1833a91a1f56b743172192b7ce4399928b261eddba6bdcdde958bbeedeadcaadff4fe5b3913dad0e4b2cd9346f47b43849cc65bbdb839c9d9e4b586638eef",
171
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UploadedFile.php": "a66f1119bd7327a19315456f17ac2d3ecb40e564705d41047a91a02b431efcde1eab2750b2f354fd2f5c10c1ec1b5968e84e758d51210f011dafa8df5fb35c0c",
172
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Uri.php": "fc5c81c97687dcd34ebd18c6714479eb6b4d1c7d58963bf7f1f732eae98a04b094dd9c99d58f4bff265b2faf0629a456c391ab5b96534c927420f51a95dda637",
173
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UriNormalizer.php": "8992ef486358f43df4a9567a6a232ad76883d9c7cacdc94707343e5465c857a4385739f66d0024136df94c59e60a5ccbf1850634a55f2cc1f56adddc717434e0",
174
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UriResolver.php": "46e4c0ed24579ad9a0cf467141fda7dce6dd3a3d3281a1606261f322462d1b19bca413f3c5590b7ad42fda1fc57e60ba86d121b5af0c5b5a2ea21bbdf07f44fa",
175
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Utils.php": "be75312627f929b2ac94cd6d12972816a13660a40d25cf87f6fc7fb7af416316ba8988656147a16becfa8120ce2a484c84d9f399b43dea2cd3c7ed916f7d8302",
176
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/functions.php": "f31604b89969730b482cd03a13b1356ff9b91324eeaa9ec45a45f86be2bd52a8209cec55aa878d5875a3c82fadd86848d558789d0072e853505d644f0a2603ab",
177
-        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/functions_include.php": "5b85d1438039f778c454f67bfd3ff2933d06b1aa4bbf9dc516e385bd36cd749f7001de6278c5a1b4e3c5a7d280876d4d35337f87a0dcc6e521ccc20a3ddad1bb",
178
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/AUTHORS.md": "bd202fc574c862a7c3d4a27653605b6fa377823744a793a7848ddaa7001166fd645d6047892d79c8488786d82fee785b87b19e9af1d04512503eb195bd300aad",
179
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/CHANGELOG.md": "ef87f930b797ba0b32dec670491e021b5c881f6986624c1906d8f910e8393b37e6d7f5eb9f860c1bb8447ce61a206bca80db4b2279c57bb064a28be3d83690fd",
180
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/Jenkinsfile": "98d95e7185d040e9aea6e75118ec17ac34e38e17f8ad5a38d869ea02c0c9de5dd79d208a78da23ccb87444df7b7de827b314469027ee7573cc51423521786320",
181
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/LICENSE.txt": "0974968907abaaf61b640ece98a502e3c677b7cf734ccc82cb522b3e166c50eaccb189b4d31b03bdfe8e61a97b3ce06917a7ff5c7c60887e2ae944f909fb6e72",
182
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/README.md": "ddaea1367057ed09023311b6ce37938985c188fbbcb6867c6c3ddfbdb984b954e42fd6450d1e5cfe10374ddc4448f9b96d6130d465983d634ddb3c0b01a276a4",
183
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/ci\/config.yml": "d50e43de2ba68261ae35625f8ce984903baffc3c6535d31a7fb3c5efddd08f71cf0ec3aaf22ee9e17e93852dd99284b653b343a053ba50a45cf6716033131e3f",
184
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/composer.json": "c6b4f35c928d33d62b48139a8be5d85868fdcd0716380865f8dbe0f5a708600ad7dffb3ba510a45bf4a8002f7e1fbefb1c835de7e3e2d9b7c1cbddf9fa2b565d",
185
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/JWT.php": "ee8052cfd45be4eac77df60902c518a14bf2df07ae7218322493a8e2d115280b87c65f9637ca766a63d82dce36c7c78e894984dc83031a9b7a8d5a6345d38214",
186
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/Phlo.php": "f9d6482c51987aaa3d7f0db59cd45030e17284262681866999309205161094d96a55a39dd2898d0b7980074d764e1bde6cb6ad1f50be8a40cc9d557431c1bf91",
187
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/SSML.php": "932a827eedcd81956c275529815a2f7542636b0cb887fcf182648e8f972006f6ba8ea4a763b3de48aac989f26a5e44752c7d3a62df256ee2b6a1c922de677e14",
188
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Authentication\/BasicAuth.php": "42c036c38225556834ad5cb916db0c4783c7127909053ef623e7f71aa51c9fc968b9523fe5dcdaebee769cecdb0c4c76215116cbf5959b268c8792fa96754531",
189
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/BaseClient.php": "029f2be5a3c7734b5030b4fa96e0d7c0c1252bb7b30b9f001a78abaa646d6d3821a127859e5d170ea5e3c7f5c86d06112f28152c5cb2315f94dbccd318f9e5e0",
190
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoAuthenticationException.php": "7ee7458999adea1ab1722358f669467cb35265eb616ef2eb16e6bc3d42a7f3c2fcb0b42655df8f4f21127bfecded765bcb479a6923dbf1a184e00f6e26321ab4",
191
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoNotFoundException.php": "bf54dd70534e988c27d5e7d17bf8edf9dc65191b77677d9ffbf95ae3bd019f1ba368065e82440e04f9a0d7045cd62b5915943273b5d8d72ba01676ebf2975edb",
192
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoRequestException.php": "6655a36e42e700283235b84889088e378bab6861ae98ea99c20bde017ed39b83dc743e5c166e8129b9910a434b119578b23523fdfd5e9e1dcf3d57c5cf9375ef",
193
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoResponseException.php": "4f18628f90b1c5142446f0e394d5071a91995baec240344a1afa47687ae463cdc3dd18a79008813077a3511c1b00dff7a8715d26990afcb6f9726598c96822f3",
194
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoRestException.php": "758babb40ea45fb50dafe5231605196214736f014860618af9ca7161157255cdf20c5b0bf534f6f6b30a4f9bf612b5ff5edd2f7adc45553ef12555354f82c15a",
195
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoServerException.php": "b2b8f6d1d03a720885ce5718b1c80bc75c7f483f72a1d2d2313b98a37e152ca78bb688f7923f025563517a52de7e915325cf86e463a2083c30ca2473446b91c6",
196
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoValidationException.php": "5faec3f351037d6affa710c10f733c57a7919cb04820f93ef0c19f75b2f2b2b8ae1a0d004c216673977539b713ca31475f233fdd21698a390319364d2b9a4ba3",
197
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoXMLException.php": "a66429863ac7caad7e0d77f7a1fc105fea0a45e7eecb753e64bfd5a76c89b5eb06e4228bd63a78134090774458a646e10a11417855d3e72b2a6fd75aa754c625",
198
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Http\/PlivoRequest.php": "3fa26ce55e1b201dbe78e4bf3615f8c38d9e6c4e96e5b3673f6cf7985bc4055b88f227677273189381bd29076ae5e8baba6c0cef4bd612f2ff8fbd2847b6c129",
199
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Http\/PlivoResponse.php": "3f9f1ce15ef75db2e028f198d1bb337c37f31fa6dc7e5b985ad589f6a4dd7d873e3dae968b80f5e1eb6056b4bd00e1a4df4d54242206861302f9d6263d177bbe",
200
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/HttpClientsFactory.php": "a9fbd6c007260fc2169648c9c764ff7b5988af0874b21211f8e85e8a995897d597cbc0c9fce4ec5c8d60a901ea05c5a8cd70684c2302ea17bff528ac674ea578",
201
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/PlivoGuzzleHttpClient.php": "dc661dc489b30bfa98e0d75f04147d164ad953e7dc51326a20fa94846fe30afff07ce92958c27a9bce9fd15371543852c0be4c24031cf382b54403a0901189ce",
202
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/PlivoHttpClientInterface.php": "61a18efcb4383bea7598ad9167ffe49a73e295d2ed3229c015f9a5ea08b00362005df1388cf6846f1c331b123b187290a1651341c76ce2cd4233926c927b6e9c",
203
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/MessageClient.php": "f96e09d05b71a2e0b6675300132634f5664026bbb84472a1e7ca5f72b679390170ed5aa0d4e21a4dd1bc646cf0267f0f9240c931657f7cca9b2bdea501586d26",
204
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Account.php": "22bf526a376e6045fe9045ef4eaef52c769ceb8a7c3ef11902e66acdbb673fa521f70f446e6724155c8499cc700a6cf4f4d435ed06d81baab69f638cb15651ef",
205
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/AccountInterface.php": "5093f51c3803de918f3a500f1754f47a3dbf990008804c07e543da253a22641b96ca2ae5faa7e6800cfa10a41f7d407e5d29e9907c0970a9183a8795be9f7543",
206
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Address\/Address.php": "7ba3e1e7e136d43989fa0449b29882d78fcea39cb764e54228c7a4a899d5ce4db2deae9d9ff9ed5cc53a8af72f98c55914c10be3dbb7b9a354b8a06e17cce829",
207
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Address\/AddressInterface.php": "36182073184f67cb024e0c020307d4d74c8b5c65e3ac7affcb76e189c91af9750c318404d8ba3a5a6e104d64459c59c80d7a944395796f0f5aaad18d43d93720",
208
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/Application.php": "9431715557954e8ac1cc340f3f568a6eddd6e00a0ff0356154b2778b118f620d0afad3979e79eef0a583b313256fdd018516cc8128a441dc667b39668b6f506b",
209
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationCreateResponse.php": "cb1167e6057eb71e102d55ad2ac3cc2c7aa2a757b317cc97d8d08dc400548d4ac56379653583d53185ee8ab37c4dd189b66af011bc9a32baae55991922c41466",
210
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationInterface.php": "77af1063e341dacee15504837264b8140ffa3e8f537b9eb0b102e8f6d184deefab6a08ff7f771965c31d6c84333de9963b2e998bd0389bd0517479d5ee150d3f",
211
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationList.php": "0840ebcf3a0d9688cc68a82f11484339d8dadc9d1a50787ee11b3849a361a421f30417ad4322633c53633b4cf58ff7980de6ef87471fc88b16d090f127763450",
212
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/Call.php": "8e0a3bd97abbb7b9d03e22a4eca6eac4989653c43facff064a374f6787698bcc91320352d105f66aa3f31cc0d70902c8cef0f9264062ec4bf4e5cba6d07549ec",
213
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallCreateResponse.php": "a3a07958282fc5a6e7b99978427e2361e8828a63c06a940159a7fbb356ab9621a899e6e2a25c27d445fb92ac34b63d8e5a8b6f0782b7f20c7d9f4308306903ee",
214
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallInterface.php": "9aa42eadb3b1c06c802d46f1a11b17acf59e0c78ae65b6c9039b4afd9fe53f171cd8023be738a359128afef545a6fddd43bc039d94b014d122e9714f9591ab71",
215
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallList.php": "9883c38a74497c496cbf7c4a837051cb6bfa0ed0b9ca9298f8908e7195a000196f7c79b4846417c64af0aeddb6327e45ad4b36352a28e8300c977e21db0fbd0e",
216
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallLive.php": "14fc226091078fd069998fe41625d086407e0c22455dde078284f9a3e8fb34fbcac0b75484c5350b437387dc203db7690d9fe1f02aeb09da2d5c57f7b2ffa651",
217
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallQueued.php": "64552d83e5911b11202ae4a965bcd7c408643c446566c3d09aebb0bd02fac0dca41477988aae62e91bfb42913900f1eeae9d20693c6bc29651e2734b06cf18da",
218
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallRecording.php": "d23438ea994b0ab936c3917d77ae9bb38bc9ca14dff4c5c120a0f583db46891af3bde1a8c3f55d15bacae99723e510184c14c60eb6d3d411d46aa90c5c8acfa8",
219
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/CallFeedback\/CallFeedbackCreateResponse.php": "cff0c47988bfee02787a2d73df6b3165749844c1a93b1fb91e87e80582bd28c8c7efe101fcd532bdab62886eadc6354924eea81278da5037ad9d3ee5d8dc8f29",
220
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/CallFeedback\/CallFeedbackInterface.php": "7860708568f488bd0832e626123f4bb5ab986fa5d54f305d4744503ceb4e919857b78a02b766e7241d324a77d86592f60f26d1ed78955f5550bd0fcc7bbabcab",
221
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/Conference.php": "8b97d6c9abee836cce410fa1216fdb5aa8a4df0c8543a75c2415bb31a5ee2d87531d5d162b218660a33cdc30539861cb09d85a780feab2d5321d0e8ce06194cc",
222
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceInterface.php": "34f563cac4a75ca234e4517cb4678998461011440f30f9d81895adfdbb2e1960009114773ac30901dfbd2596d327554fd335057de66516b656f7a96446f4b06b",
223
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceMember.php": "1a880200a2988394ed0436702f805ce60762be1774e1d156f38e45be39cc72203fd4f04411a521ceba8fa9647cb00f6d1bc6d94798b66f12175fc68d88c51dcb",
224
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceRecording.php": "1c3239209726556971c2cccc812ce5bb5a3fc8c7a0e4f3ef520e037acde32d9659dea1dc5d3803e1f7cfd39e945a1680983bdeba8cf62459fc168f0df731adab",
225
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/Endpoint.php": "4c9a87fd6042a3eb486af5dc899d1e4c0948de5ebb1467cc85704030947e2588e79d23407ff662a21b097fb46a05925c3df29dd6e2a038555cf44844342cb206",
226
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/EndpointCreateReponse.php": "f77356f3ca29ef7163e47530004a5d79c1da73e922b17333a89512e39c7d3cc842b161d9dcbc745075f6a6c7ae27b7f7cf85f56a6d5bb796b87db4efbb8425ae",
227
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/EndpointInterface.php": "09914bc8e8eeca2812a4dc07469137011eec1dd77b99e3aefc8d5b8f4675b8f221bc54e37417f6c45b07896b84bed953f8c85831f9e7cc7b85b7293142b60fff",
228
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Lookup\/LookupInterface.php": "040b0a2c01ca3c0c02c2c8450b47e8d1847ab7158014ae161ce971e330712d14d389cd746a353707d2bd2667dc604e55c662af8eb15796cfc613f285e170ed15",
229
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Media\/Media.php": "72b83f02669ec7b942dd898a74c22e909cd9b058ea2e903e92ef4dd9e985305311d53c30a0c54a3f0c210433aeb7b8bd04a4b3a768c853aa73ee4dad9c621a56",
230
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Media\/MediaInterface.php": "1cda06754bd1ba503a8405561594f9d3cd5befee2cc6d9cee98542886c71601bd8744899e7ede346df6b90552f05a9eadeec4cb4d11fdab3269de88170cae961",
231
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/Message.php": "54ae356246cc911258552001390f10f701929afa24801b2bc6cde72484c915e2e738a03d04aee90908003efb3b4b3cc8106f92d7ff87d2119e8a350f7aeab54e",
232
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageCreateResponse.php": "75495f459ecf577e2e0c2f8c075d569f36df80c5c828fd1d6b84a001de2c3d032add50b5ef08177d5c68014fccbc939c8ff89ce6c884ac0c1b64f4301d81cc5e",
233
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageInterface.php": "e96af121fd4a851e4c1f27297c602a5e6862e0ac54974aedb19248f017f2d98386ea9b495ef6cb775aacafa7b51b6117665c803356442786142c15e86066ef41",
234
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageList.php": "baacdb72ec116be9a14b8e7e55d6c40cfd8b04c5bd1b0d93d5c9919ccba2591105e03dee96effee29e95ab7b7e58e45569760ae825351c1891877dd96853254e",
235
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Number\/Number.php": "1bf8e1b1844ccced8d8068a80ae45b6904f59b0fa0e7d6a7c5b43adda906859ec11d709a501f560aac3f8315176e9260ba4796aa9cbbd637431ec94f0ec0c668",
236
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Number\/NumberInterface.php": "e633bf2e705735759f6e27f9e747e3e05e839484b57672e2da405b7e2d8615653fa828f8295a442d13f5b64645fd009ba6cd923f0c163f2070710c7df57a1a70",
237
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/ConferenceBridge\/ConferenceBridge.php": "3da97309ccefdb15596bab5180d386e2a78cf938823225820f5b206d8d8f366209dcf96bd139cd0364729c8b733612ae067d03e1e29aef472c4dc82527d3002f",
238
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/ConferenceBridge\/ConferenceBridgeMember.php": "9ee728dc1f37fc183fd4890ca5d213bb1f47899d2379a16009de7ae32b75b459444a1a329357faff349909ee89843ac5798c75699fb2b8d939501f61dc09b564",
239
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/MultiiPartyCall\/MultiPartyCall.php": "d13d863ee416714a697600882f33b88a8bc9de8d5603149fa199f787d7d904d55aaa6646cfdb3d71caa99e4e95d7e352199e8b54230d3c64cfb81924f1b603f9",
240
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/MultiiPartyCall\/MultiPartyCallMember.php": "6e8f1c6a1177d0c933352bc2d8bd54c989db7679f2feb893f430e9e634c446d033d01a82ea740185b1926734f285facdb3d99b18ffcefe83be723fc08b50fc12",
241
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Node\/NodeClass.php": "b8a08dfe16a42c08ea66d141b3b4471caffd2bbf89fa4b360a1b16a7072ea29d538792c16b93f1e3f1a1a01d564acf1a40906c32482c4cef0ef42f1647e483d8",
242
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Node\/NodeMember.php": "e13f76753f278f07e8778f1d0ad64c9ff401633423ab2476700ad0711ea5534f7caa871b5e10fbb26096feca64471205082f9ba45de607e7ce71eccda0e7db91",
243
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Phlo.php": "da8e7b69e9290d876b6ebe6778c09ab68f47f13cb22438ac92d6eb880b7fe72ffcc68c681cbb9be074e36f3ce4afefc69680e7a3493d3046a04ca9ec432d7a99",
244
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/PhloRestClient.php": "5f3b9bb5e3f7dd96572f1dc71531caeb0b14b21ba7c291561c1ebb040c3ded22bfc0dbd9030843cfeda8b4f83e69d86ed9db2b3b7d0cc8b311ec64000f3b935c",
245
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Phlorunner.php": "c1f3764aa4a4c14a33614bc7cdaa05043d268b24f88cb2312bec3596e5e7e5286e9d0429edb8583b640723784b28ebf69df691d5e4ec53b7d7912252832c3ed9",
246
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumber.php": "57bb602a9f511dd39c7143c50a9ca6537bd83f398eeb6f198feec689877a9a423d9cfb0645c4d20eaf30490ae6b6ebb91fbf1d00ce633a2007333ddd6273b032",
247
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumberBuyResponse.php": "6929f9a7447425d76afae60b91de8d6a5a42a1e7864871dc73a40199181d5af8be9f645185ce1e796e75440d138cd0f69ef86ef404879d74b58107ce32824b6b",
248
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumberInterface.php": "3720a8056618a019c64de2e4e05e99e0b30cf48de07117e75172b8ba02f2b2c60a1e0b12c3cc07b3f5ba8aeee2e747c3eed43b5bf589c29c7236b47b5ce75747",
249
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Numberpool.php": "a774de315b1d34a61c9b9af9b21b8fd1f624b48bcdbc7ed1302ed25cc21093e05ce1533c0ce4788ad36ab28792878321a99b941cf9e1a8ec7fa2f2ab1d16f872",
250
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Numbers.php": "f62f6534b223fa353f2363e38fb1069c3d10544a4cae2efeaff30019c0cfec7de2b4b9f551cfc16bf26fa1dfb916f6d916f9cd1d1357f8cf6f7cc84815812237",
251
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Powerpack.php": "895da995fc1445bb6f7458c3904c918d8ba8e8db75e94e558f04ab8355058bf82d881d7c282fd8e03acf723c232f3081733a9ace2bef1da42c3e9f4de452d2cb",
252
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/PowerpackInterface.php": "e09a8e4e67ece27935a81730b7587bf29afe72ff9aac57b6c0efa6fdbc4b7cf4c91d60bdcc506a2c0b86f7a4cf7df70c38135e295504417d39024a4671b3cd33",
253
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Shortcode.php": "afd1a0a277918a55fabfc2b46460ab6a8740ac68e1d7b9a0180d88229d7a93269305765fdc362c02cc2996ff7c3d8c95417bc90bb74e44f9c2cf12f023f45b08",
254
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Tollfree.php": "0c63aaf33046375a8d7c0f9c7c092ca1041f553b1987ad5e2944630dd23f865785e06205b0711c215468630455d8c2264c0b141fee5cbdb4bf9430e6ef90527d",
255
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Inbound.php": "285fd073a2fbf84c533af3c0e60b369689592882364413a1879691a025655bf4bdc40831d13d96c59ec7a8827233e92d478c14d1d648df885c75fbe3d054351b",
256
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Local.php": "5140df58e671179a4edbfa82fcb7b7277e440706406200255ade35177e9a715c3340f5920c4a57c351b6e222f7bb1ef20b207d0830c487bd14b9fa713d3d8c4f",
257
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Message.php": "ae4e8bbe3a668748ba57bfa571cabcd97932d6cb7a8a63ea04689863ccf75a63e0aa867fad60c39e263cc685521a8465b46f730014933dcdc941ebf152fc437b",
258
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Outbound.php": "7656989e6b1da4e4887f8443304e422ad2aa01c9c05aea5b5245b4f3edc333935be4f573fc5105e13cf03ba6ed0ee0ea323cc76c833846bc5cfa01f3a0f33763",
259
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/OutboundNetwork.php": "900ae54c0c0aa0f85af4f02da252a34907999bcd311e9e39ef8d8e27a16fc6c8bbde5d5f6460af6b8e68cf584419ccd7fbc4de177cb827cabb5ae9b2c896494e",
260
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/PhoneNumbers.php": "cb51001dfd504ac52dfd39e2a0fcd01686de42e78464c76767f99fbc7884cc2d6e304cedd72e66dde42852f72cd833dc49dc1e92fe1487b2682648432e7979fa",
261
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Pricing.php": "5d197bd5eef109ba3d877f6de48f8567f135466adf1d811d32908d8d4fa7c8961592733d6bdbaa4f646c3d25a31c8098768dff183d192617b2c1726e8f41c447",
262
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/PricingInterface.php": "dc940fc2f0338348b06fefb22caa65b98fbfd37063621fb4e4f1e23c5dfe21149e2e648c1a32b09012b34c5bd622fe28126bd33ba1255c6ae3c370dabce6ee97",
263
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Tollfree.php": "ad733c0d904ecfd646e79a3b6bb3ade270f99df5e6353bd6c8695322a71238fae107a55d33167063dc2e4b1b905273bb0631f051d06cbfcf5d01c94e9252fbdb",
264
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Voice.php": "ab645548152bfd840951e981c0d18aad23d613afefd4453af077a6055f902d6bea6a0bcc805288f130da6686d8419913e86422cae35b57c1087eea3371b7e799",
265
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Recording\/Recording.php": "def8da050e24afea59514b4fda360ecd1d80a49df2013b258e3d78304d6eb2ccbe21ff1ac50a851079234a1460d0f2750da8fb59c9ff184e8ba1f1becdfffe6c",
266
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Recording\/RecordingInterface.php": "1953832ff8be0a6801f306632f3ca3bc46f067d08662b8ca6d53e29d53507a48750bdd891d2d0164c029f675b8c4c1dfa6765c9abf328578838b428dcea22615",
267
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Resource.php": "b8a8f583217c43c3eceedcb8f047efa1569bfe5f440fcf4f252f1a8402f484e18abff63229521f89697c1f7df21a2ff919488fcd9df42b5aaf7a160a50f0c62a",
268
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResourceInterface.php": "85bde5b0479b85aefa79139d36192ac334e3deb3a07353b7b1b0cea1180a050a92dcb563ef4a968b6436f60ac990fc5c1322ba3ee6f4ffd41d2997d604653b6b",
269
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResourceList.php": "71fc010407c57d77f5b31105f6e645d04347d961c3c81eef6cacc7b8dd475d86bd228c5ea5dd5976ce34d025b0753083b5361a47cde5d5daf0507678762106fe",
270
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResponseDelete.php": "3acf13bc2797c0ed58c78abac46ae2822a67b9c9194b3c9864738516847618c0033fe12c5a62d9dcb7d110ffd4264c534fded370d04a2960a2da32059fecaa8e",
271
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResponseUpdate.php": "4db3ee43405d0a456dbc23801c2c0d71676c3f88ac7c4161395ad275e7fd0dc6b53aee99a882706da4f14fc6c35844d54143a7fa3b6597a5a25d59ed67e0e6bc",
272
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccount.php": "b39e628ab06827320f3dcb47d3ea55d459af1a133430e8e51e8e6aed5216c31b54498c836cfd2a5c5f2d9cda4bcac03ac476bd8ae81c3ee2c7865ddfcd359dfb",
273
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountCreateResponse.php": "3b92a7ef8da848a7a5d7b79436ae557657e97141ecb2bad076e69d495d78f94f6e9c68464dd7e790d64dc563428e4567a1baf96df1f8bc97cfdcb946e60e94ce",
274
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountInterface.php": "a4cec509ce127faf30261cf75555a2905c6e551223b4b90949251f0822dc20d7b97efadbcb6bb189cc9302acffed8106ceab79628a7531c161f4f713d6a26c4e",
275
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountList.php": "228e0fc0fc27fb523c9d2d9e62de77a5deb3bb2a29c10d91d7c59b6cf36b3e12b8b1935a69fb0ceda72c4008b2a04436e6aa3f84740edf265d0f647eed7c52d4",
276
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/RestClient.php": "91f01799f98c6d65e1a0a8025668fb0c9f5fa4b77d44e86790b34599c2b9045cbce2cb3a5dcd93a1fa8523cb688d9f2b895d7d5f2377f64f2e33ce68e621dd82",
277
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/ArrayOperations.php": "04a84eb09d1ba33c3414dfc74d1c4b31c3149dc8e3a038912be632673a92e693da8e531a987c5ce747aa11fe01bf65bc05ac91924ccbb8f157c15c62f8ce9694",
278
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/jwt.php": "61ef00cfe10afee4047149729431595a9e21d44b25de3e8808014312a869110bc22898552fd9216cda6906c91de2b3ef9d723ff0d4e18020d1b7f5d1050fe810",
279
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/signatureValidation.php": "2bf40afd282bd8711459cff1b366510ea253508349adca2f64ad101b6c4e3e20bf405194b9e421ea7cad5b738716624127969de5497e16e3647872e0b3bfc6a6",
280
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/v3SignatureValidation.php": "d70083f5ecd20fc41035462a2a27e04a9367d9b7b13e6bad5579dde4556ff187b8ecdfa17b2c07a0fcf88cce0141baf7dccfaad85a17aa2fd1a7afe7998d1037",
281
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Version.php": "365ed59af02f30183af840aafe55b67b682919cbb3d662f860baf1defaede8a67fccc5a7f087209494239466f356fc83f612faa02f9f03a301f5ffc66b52bd09",
282
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Break.php": "89a669d486a72465efc2c6128deb6760dd86c9fb69cd8c0f57c209d10eb74067efb50bc6f0e68e2d1c9c2f39862ef3fa03a35c65b7395aea6ca963a013869658",
283
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Conference.php": "bf673327e263996b05a0b45e323168e3d44b27a65efb8a8acb0eccb0276360c1a0391f08edc34ac617aa079c6c2b1f45eba6142446a7ae2286e23f337819caef",
284
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Cont.php": "45ed9435166f1b72dc5ee98afaf3547ae646d16d41677ce5409a6005ccb9ff23743e4c528385a1e0a8f5570eb7ec9374433f609bb8cdcbdfe756842f1005c52f",
285
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/DTMF.php": "14c619e3f01d6dee2dbbe9b718c6c64458a97bf70ae333455aa45c9cce91e4bab693f5265de0099c9cef2334a5310bb85e3374c5f0cde9b93c3051cdf5b57a4f",
286
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Dial.php": "5370d1f1a1ca8420560fa204d295558ba9aeb626fb7149ee06e12acf7f4b7d079307f329f91594e138847a2b3dd9e3f3e9a9e6e774a3c1095c3201ab249e9c03",
287
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Element.php": "4913c3c78365a85eb5c90aa721b0e1cf535c00d5815f509e336ce635cf47a9d9aed1346ff0cbc875eabae65190be2875d0820312a6a5c90c6df3acfa23bc80c0",
288
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Emphasis.php": "d6fda7993f909d3a1a50441ef74003811252d68a33ec2da63d3551236a005952d3b6c7e2bcdf5d9c85d33bee2a9255dbc2b95988cbe0e115b42eeb667d58ca38",
289
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/GetDigits.php": "e41a4e05fd55fec82a24cb2a545db122000251abc0986715a4d5866dc64604ac340c59cf0a30a35ffeeaf17713eed730a7705f32aa20aa3b14ffea368cdddfe2",
290
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/GetInput.php": "cb11a5e0311d3b8938f7d94462d24c5d4b8a2ea4d733943253ffcf36aaa648cd3a4337d732799f382526e0e2b2059dd1489e9ac7fc5ae478eb1db07b3830a711",
291
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Hangup.php": "6a7ac35846ffaf61d8de286929bdce05974799b26b17f4d61e68b6f740cff49bc4a0b72899d1150ae03d72e4f8c4dc7cac491872e76be0aec6b1a665446a9226",
292
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Lang.php": "c16c3db519373df61712fb1748f91785d79ba0fcd7e85a32cff1d17ae89768cbc10b3c4cbceab380fa9762cc1b6948d8fa56054d78185f8c9c1d6c60a012f527",
293
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Message.php": "541a76d5dc1e25633d7bf67c83d1fa123820296b4755e7e48aca094040ba0c2acc6215eb29176551516941b8e8225e6084fbf89892893557e12f678cbe2abb86",
294
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Number.php": "82569de717d895eca9c4270a3fc48022e666e59e6d6c74dffe4982a8db1f6031d80c51863226c750cef5db111f0de940878baaafb352153bd0d053f716c43fe2",
295
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/P.php": "d8bc0f70c13af91549bf4c37ce4c95b6683590ac9c9a3006bf2a4dc02d85ea63a33d0d8fce4a6465f25e0f86b35994d98e7bf75c07e30737305a7f2707ceb444",
296
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Phoneme.php": "9bce52123dcc7451f21ecb2e155884479b7530715d78d175cd616da86198151481632af22cfc19f9c70a4cf0f29f3262f335982fc9988e4aa3a435cd74f14c59",
297
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Play.php": "9b25a9f3a6149ad856c4aa008c405192bf2804432d83d3a572cf066dbb151b8298272b0a9185bb26a5faa51c03d069aed172ddb135d4dff3fb99af9fe982ded5",
298
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/PlivoXML.php": "03c37815022f4b4e7ea917f69b5516c3bb5499e68b65ed1b50f7427d9827de1e84037745d25b420c1f81ab829f51ae752b126943005c82b06a668c8ff895e923",
299
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/PreAnswer.php": "f66f22bedaae6dce341d650d5ded5007d867361c570162a642e0a15f5fd6e90b49a4c8fac2d3a1cb5fea446c75e30834a1106a3acd1ac02a87b5a7df7c1d5af2",
300
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Prosody.php": "12c8b634b226bad4ec0a7dea7b8249959943bc5ab0e71f75fd42afbf6d1413834563c38430e9348bde2cdf1059f266a2ef59fb7a8f6187ecec135ee9d5dede4b",
301
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Record.php": "070470af5650220e0556baa6b109684e1abceb6e80af620ec750f0c691824249121e1c6aef6cc1c91bebb45b76ea9db24f9cadbdbab8857b367ba2521d1cd001",
302
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Redirect.php": "34e09e0b208c4dde1c4b53c451b09f23985c8f74737e73f4675053494cfc81b14920afd6620ff161877c4e1b7b6e7381cf3f824a2b06508d84299aa4e0e45690",
303
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Response.php": "8db3a9e823e3c11b8377829c783d93f0b7cf98afc6d837e514803b478a7887d6602bae6efac9dae6a2e7683d8409c23f78c463185754fd7916845aec23e42c58",
304
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/S.php": "d0dc3f3bcc818d107fd8e4be38718587edf610e3f840d7e6763ce8fef51a1e96de3b49076995802aac9edc7d8a976ef024a1d45ef634599a56d13c56a8ba73de",
305
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/SayAs.php": "46c8fff6a9dbb36df1bb14d0c4247569e00ce77b37730d7f8fe6fc4a404a632ae70e48c774f40c4ac0e19b10ecca7c09686c7d5a6fc7d5311edcba657177b6db",
306
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Speak.php": "d18aafc18ac404a85d18627ddc66d2810ba1061f8e0d3d3634d5f5258b239a139649a8cf479367dc026929010288a291aa1144aec2415a2de6083040b8a4a96f",
307
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Sub.php": "9d34d26e76074e65fc01a3a477ac176027b1ceb5dca2fff450111bd2cfc0027c7f7338777b494728ae2617a27075888ea699d4226b60049c4fec633d42cff8d5",
308
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/User.php": "2dab0ac6bb38d9216c1b39b81ce20f1a2af1d385c90ea13aa566176eeb288f8ce80e11048209abf8c38151207137cc86b754b7784cc478dcfa1f567fcf929520",
309
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/W.php": "798d6f10e6d07a54b29916216dbb2382f25bbf2f96e15906f842cd2ae4aee22b8f3e56535264b1da6d40835d5b9da6a9f4346303f7602c9562587b29fa419f3b",
310
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Wait.php": "99e6e66fb4d2a81f0419ac823be64ea8c81e6ffc8313934b41d6189519d053b54b5e95dbc7b869dc979b72b551b5654dcd6eef0540c3b01eb900716e97d52dd9",
311
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/BaseTestCase.php": "662140921fab3f1e7be65bef2d063673900eb3c41de8ddf68320de194e254ec3fbba3322790812c258698af81da35277cbdfc0d2fc957fd5f68956e7db2ceac2",
312
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/accountGetResponse.json": "1ee7d7e260e8678fa70fa47206ac7c4645e9d698da7017ab05fb56266710e34bce48b19d3c65541a084be28cfe918e81fd52073064071daba77355af2eddbbf2",
313
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/accountModifyResponse.json": "ef0e777d38b4605ab58d951f26e975566b61a26ebe5710b9c8c7588aae799c68cf76dc5860f44aaa666864f3fc1f74185b5eba888c1dfa8c2004fb8baf6d859a",
314
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationCreateResponse.json": "19336630707d50a021e3dd3cbcd8a229f9f6123211e27fdba211494bc40e9b9fc5573ef328806bf00b937106e7c894ef96a98080f6003d91cdec67f50196849d",
315
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationGetResponse.json": "26a3aee28fa9219455b0c7a54d47eaf1ee7e9fb526185d1598d5611246c1ad7b0cb1abb05b12d21189463955e25d2da906cf5b04f1bd4c3b826d44de47c0d56d",
316
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationListResponse.json": "b363791ef3276030677b53f555a42deb02a9873cb5b21e17aee9176d425ed38c562da7fc162cf5771f0bd259b46d615ded3799f34f6fef590e2df97180ebd228",
317
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationModifyResponse.json": "742b49b7f428a281b1189fd5f23811931f2d6c71fa271ead086b6acfac63bafed22b86f2e460fcea35d8bdd46786c5db83707f35c7a855efbb92e51ec01a4859",
318
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/break.xml": "6707a46a4316a9f23104a23e4ce9c79f8b4f969639c08f5196a9aa94ba3abd4a1972a29d6131e563a685732e8cb0a4fc90a76f2d0ff5b72637fba2f974abecd3",
319
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callCreateResponse.json": "513446e1e7fb97b30b86dad2119bc9fe73e70f01f4976ac40e57e41e7d96a2faf978fc72fe2ff49e3326fdef8e17cb4da24bf665be81089aad1232716e42e114",
320
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callGetResponse.json": "2958c05e7fe02f5f6f2f8834b34050599df05c6f5751fde2fb038853383683e78b2b33b9534bf8da38770173e08ea9c7015d7b2d4f270efddcaedffd77ce661a",
321
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callListResponse.json": "b2b35a27aaff76dafc6f5a42b6ff515e56ea9d7c196670613b97c2b4c0b7f2dfc3ba7ca705b2618f3851e1db554268018c7c2bb658e94b66493576048c54ab49",
322
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callUpdateResponse.json": "06be7ca7ccaf82f24f23e8c33382d372ba639662283023a9b6ef555fa24d273efd845ab27fd423dd4267d66a8df24604f96113aa3bb8f8dcfa49e713f3d71bbf",
323
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceDeleteAllResponse.json": "6722c7663c8877f4bd5d417638d5a0fde3db7cd2ba1880dc66a7ce9ad25a14de60b4942d84647cc21c0b12211227161349109162ef3eafc2a9607c2645d3c93a",
324
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceDeleteResponse.json": "9a8baf62bab7971a89490d637633a3d498d4442bb11ca29486d21a3dde432ca6c0cb36d236bbc94859efac83b2e56d33442a13a4395f4b026dfece2103ca790d",
325
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceGetResponse.json": "950fb7d6e6e120ce670da43937ab4ce9e7a7df5296848cb52261f5f854bd89d47f26d76f89929adc59bdadbc8d0e77de79f29edc5d6e6b4b73aff1a0c126bd43",
326
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceListResponse.json": "9f5635d9e0988b03c2bffa8457962cb6870a39d4354ec6c065b58949850b188d2829fcd3db1761ec42a4bed30ee3704b6c353d2b9372742cd6d8b00bff273dc3",
327
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberDeafCreateResponse.json": "b39ae8d7a1de7d5732afdc00da955a91850b855f6463b143b5837023dd8281b450fa79635a3fc729b5b198c6af5cb57f9c6797c8eb56daf72b7c7131196fb4da",
328
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberDeleteResponse.json": "ec18404f82674de8b7ca25eaf95074cefef51b13b038de14dc9ed5f2664c6e6c5c87d3f7a08eeab3926869e171ac26d1647ba1cca03253085a194cb0fbe16975",
329
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberKickCreateResponse.json": "9f924beac462c4ad9f42a705f7bfde5aafe5e73563b07e98ac9db42e95d3c657f5c4ba0d6ea64b01e2e061563fec41d53f8ae8fbd7f5e08857a903c948019e1c",
330
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberMuteCreateResponse.json": "c3f1c38b6c8295b28d531c446199454fd7422d00e3cf71fdd318a821edca4afba444f8cea38175c0853b34dcda5dcc2c6317a9f3103e16474fb36c43241a52de",
331
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberPlayCreateResponse.json": "ac345d15512ca5debe0a20092d8a4bba1f725a581799a632bbdccea771f1b6094b6df3362120a29c1d9109cd8ca8857447c3be08436fa94a5a4304725b75ef4d",
332
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberPlayDeleteResponse.json": "10b6ab89ba98b9d6d08dba8637971ca9260757c318a4842521c7d2bb2a1b967498453aee4cef6fd964cf2e614c25364f543412a0a88b877154b3faa9f18ab3ca",
333
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberSpeakCreateResponse.json": "b2b01526d4838a72c816ad9c6ca7f9cb473a89818d4444b48aefc269d0173fc9eeed1e2473667517280c18315d67a548f41937ab4b7d26f2edd4d0e13486aff7",
334
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberSpeakDeleteResponse.json": "d42658e98680911d21be32033be208b53071e3ee2c514a86809ef4d06cc138ca0a74d9b2e546c54b51c66f3aa891cf0ba3b4db9a6a07e7f06ed37bfb39ef3a6f",
335
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceRecordCreateResponse.json": "c9d8570ab20fea79181b1416cdc44b8e9f8b18b06ad446a0929ecbec53a6bb3d66ddc8609a2baff92d8ddf9bb68b802ac4eb3d62e958d2cdc1485711a6286ed8",
336
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/contSpeak.xml": "1115d194144f96d3b4ba895d45268e346e7e56bd308b4b7c58bf62712380908bb71d5250323bfa6d13b8d25e64a86580437f7ac1f2c63896965e3c13909c240d",
337
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/defaultSpeak.xml": "2449ff96f102465168a4551ddac6ff85bc680370b423d46ee10b345c128755560e0bf48c070081e8045839503450c0f8b443fe0b33b455410ad5dfd639a6adb0",
338
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/emphasisSpeak.xml": "1ae7422578c6921013c5dd65650f0c1efa50512824b429334cc150ee6872dd2a7981a125b07a8023e360d8a881a32333de24f1b595c95a339507dfb29732af83",
339
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointCreateResponse.json": "e0cd43507839270c51117e48fdf3158e67662c1bdf9c8c964b57a13c15517ab7c83483855764b763f63bfee011bb893c20eca7e7a0b3b8872bbb1f26228ed720",
340
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointGetResponse.json": "05359131cc3ed432c1b29f3766d019be556f58e5e7f7b502d866d0057c04917ad7011bea5afd7ca8f2814dc75c45a52930d48464f7fd740ae94b45d0a07d3627",
341
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointListResponse.json": "d6488ec5e6277af9a34629d901a211e37c9a522107f84ea77f861c417345ddfa409d7de389ae69b719997600a0495289bcde64791ef07c257f75bdef4fa8006e",
342
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointUpdateResponse.json": "3f20870d3ef78c57407bd42cd424775a7014473d891020bfc41fd78c9187acc3d7fc2a2d7a137eb5bf9e8741525db9aec853889b11d2d3ff508f7fb16a4bfc88",
343
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/langSpeak.xml": "1eb16f6028ee00a12e677560ec9b3ca4921deb2d6da15b3686c43f506e9a13ab0cf811d71e942e1f225989f3a486ee39b4949d17d8692ac0a50574845491cc8f",
344
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallDtmfCreateResponse.json": "f30ceb762f24445068ff4a688935a84cb64840310bd518806c1259ec26fd60da6a8be9f11c9c0882d08c857058944cf1c69c95035517716dba322a1a865435f2",
345
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallGetResponse.json": "339633aa5d9cd2aea4a86dc48dd8c63ea8c0c56d5cc0f4513bcd2d66df425ce4b74b246a8c39d6cb0dcde75a8c01d4ec8347e69342649ac27599a79a72fafd9e",
346
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallListGetResponse.json": "7e8efa8df76422d6a9bb0133c81d96b9ed932f7f529644a109b35e9f8f301b3a548e8e7f6a9213e301f25e914b98c3855160ca7e0d6f0283e947cd6fc95c5ed8",
347
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallPlayCreateResponse.json": "4cf2ddd4f3087fdcdf772219c5ed84ffe1dc027208540059bc532961b6c4cad382bce98dec481e0245c99e288c9523e8f33ae7c3c35316c8130f49f81db40604",
348
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallRecordCreateResponse.json": "02f2c4c88fc63e5585f6e5988d5f615488507a7d7eba442430753a60f0cc2763c38abf905042c9ae0f7d017dc50caf67f269267972b5a7fdd4fe7675572589a6",
349
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallSpeakCreateResponse.json": "ef69736cd0199704894c2fd938e4f84768b09a6b9d2f334ef0a83b1750db0bf0eab538471fead4397b49ffa8e86011da111e867d5d8b3532bf3f4250958d6146",
350
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallSpeakDeleteResponse.json": "63a9fda757cfbe1a338c42f19532609e8607f3c2c8a317ec8e5aa2a164b0e9f9a652129bbf7fbf9fe05c38a0f68138ba10b4d256f48dda1fa292c18f2b717d3b",
351
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/lookupGetResponse.json": "6b2dd461ce651012160ed88d092de0859ff1cc132c57091a1064b5745b83cd6e5144e8204b6810da7bb675eca802fff54fa298f03be6ef858c59058acd24e640",
352
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaGetResponse.json": "251c9d7226411a160031776b1c7039d7e7f3d715ad7bb89131353611a2509a570656b8e29577e505102cf588ba50cab34b3b74351dd33e2a99333676d48b7aaf",
353
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaListResponse.json": "1512baf046701056ae6b5ef06a1e6405cd62a27d4b82f5b38ed2b2ef6faddfd147b6d57074d04d77cc14325d50d7908c0446acd4a5a0355e9dd9316f80b0f448",
354
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaResponse.json": "329e01ec90033528ca170704dc7a3de8f5d004a609fda5abaee4ad610b1559464a97b423ca27248f49fa3696f12ce6c1b3ef69ba198ae57877927ff78257231f",
355
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageGetResponse.json": "10494dc350e9a659083f44802a899a893e67fd82acdc506210c827642e27bb4ca1fca7c00a73a7aa20900ead392b9983ae719c6a9aaeeb0ff9f9b9e02539ca4b",
356
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageListResponse.json": "5751782fdb135ac45cec47687b7bcb10d4e2c4c8ae88461baca0eb6f0f81b8144aca9b610cc6ef7f3cffd4b5dc2ddac08247e74608166d147bafb1a9ecd4b834",
357
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageSendResponse.json": "ae5ef8b7e2a5db03fc5c04e96cef35b3f819f1670cce72e0e729b57de018bd6ffc254e00f20fa7c662eea100f78bb1824f0080275ac270f7e1229566683fc62a",
358
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mmsmediaListResponse.json": "fa4d1e3885b6c84d72c9f9a4a414de7d1ae1d574db325cd773600c7a17f83fcbe2a84c0daa8fc690d5f5d95431b1ffe5097c17279593ccb4155d5f99b1a853c6",
359
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberCreateResponse.json": "e7acbc2aac3a716dd50e27de2e8937e27fe70da7dfcce17561f4d81a2de53e8cdfb5a695255e1ac65c8c49e4b894722e7ecc9297b9d040dadff97d1cb61ea414",
360
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberGetResponse.json": "261a85df87eb4ebd1d310575e8f33d94f74c30f5ba3aef1ed47654f7569ebe4310019c5dd317a8c6e2b015a1ac3f72455118e0878d688817580b18b747d6dda4",
361
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberListResponse.json": "134543e58c07917a79e0498e85466b9cbb1c97a0e3087473463419bc6c178bc278ca75e148f885eead7f6b1074063256fa61745c57a0dec4ac060c4b03afc499",
362
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberUpdateResponse.json": "e7acbc2aac3a716dd50e27de2e8937e27fe70da7dfcce17561f4d81a2de53e8cdfb5a695255e1ac65c8c49e4b894722e7ecc9297b9d040dadff97d1cb61ea414",
363
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberpoolListResponse.json": "961fe25a8fe8c35dee1b0608a24d741b6ab91f2104a9f2af2080279d6cbe4e631416d7b3d8e3772715e376a603cb740d652435a0f2d7971e64e00eb44e7cd518",
364
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberpoolResponse.json": "c725314dd96d000028683c175528d15657c046cb421add91a927472c235ae5c1ee1aab060aa0eec56b6c717138623684f827a2de50bdbec1017e7bff937b437f",
365
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/pSpeak.xml": "1e49af0752b825db21fc50126642fde3f39dd8b63cec3db00c3df92ca38935d58b8752ad14928278b98ef23421d0926d624b6aae948f9473398d25e2d087b963",
366
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/paramBreak.xml": "1202da39615a87758a5fd85096a4d98f6c2726d705ef0b1086cfc66cd0f456b15e3f79d9850e1bb8b99e9114e41b3ca19ee4fd269a42c002c205de005c72ceef",
367
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phoneNumberCreateResponse.json": "a1dd38958ee69b5036aaa1c86cc730802dc2d7612eb1de9266f9a6651f6f067cf9a42d44c736bf85d1f40048f01f99fa05ccb3fb26baf3875e3bea98fbb9bbd8",
368
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phoneNumberListResponse.json": "f2c263fdf122dfcf98289f6cd9276cd8c22fe4ff5bffca19b3509800d07909664e9ddfa3e145da04c06dfc6c5227a39868d17ca947e55b65a9cb18a6faadfe57",
369
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phonemeSpeak.xml": "30620187252e4a92154e06e611a2cda1ca881a0d85b1c6c36e3c713734c0be9ce79bb9ad38a11e040cff437c5676c01638eecbacc5b50a20e0adb506565a9475",
370
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackDeleteResponse.json": "f170bba1b0b6bb42c88bc74353ea4db09b82f07f5a2166f693d0579e5b7d6beacb8cf11e39cff546345333b14752456212584e284c2c360cc673d009fd2aa018",
371
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackListResponse.json": "0cf4f36945bf4f73377a6688f99bb3efb0c35924ca9278bd777ecd0081c3f667d45de4a34f7101588b7a7b3b20179d18a393dcc468ed88df8eb53b5e2463d7c1",
372
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackResponse.json": "4318b75a2ac1642f6ee33fc62f18765a5142aa52e0353082a9d38cbc7660e40f24e1665a59c723ba90ba9a86edb4cd4a396bb9a0c00cebf6d5944e0ba84e7919",
373
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/pricingGetResponse.json": "25a616f338c147cb22228535abafa9c1439f663230d1fc5109af24f4f11a637c5d0cfdbfbf3b2762b87d0b4693f14223254e431f3b8ab1f518b32ea884e2d1fd",
374
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/prosodySpeak.xml": "0529a04b9ebbfc245e7d50bce1177e3eea9f0f6ede900e9fd3a447f86078ca86fe8c9911fad4645494cc784394194c5e6b63141a2a9125a1ecdde2cbe8bd7c86",
375
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/recordingGetResponse.json": "bdf9cd97b6c687685b9c37a0921bcba910dfc811abe416be7b17fefbf857c3ee1233e987570eb444d168edd660c26acb55377f60b8aa0a898f0c9af1743edc81",
376
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/recordingListResponse.json": "2d831eb418cd0de8a0d63da8a2ed133005a3e15e4e021c3451a737c45f42e5753ca5143204acf2f8bdf6ee91cf1ee8b04ee960f942ae0e62bfc3583ab44a1dbb",
377
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/sSpeak.xml": "b81f50357fb60ad968d8e949aed15c7544abed0a45c26c5bdcd4b166fa1d9bf74f57137fcfd378fec345e1fb2281ac38c30b2a3150cc6fcdc13581ea29379796",
378
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/sayAsSpeak.xml": "84e2d4a310c8d1fccc5be4be4cab026e1dde129ed2e18ab4fedcd50512cee91a52cf437606cc936c474cbfa508a105f36272edb6bcae29388f2a75bcb354de6b",
379
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/shortcodeListResponse.json": "449e0c165ad81254715b4521e5f4d39b0a6d1ecd583bf337e8b85ba40550a0942c04a8e33b69e5327a275fca4e42e31dd1719f100c8d6e459939a3696ede1a71",
380
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/shortcodeResponse.json": "867e2309b5c912c9dac5b06929a835b578b0dd3391c43f6e0d454adccf997060e1e5013051b394a94d44af3e5cfea67a88f4376088a376a031d6fde5fafa09be",
381
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/speak.xml": "a781afeb86ed31833e74d834de6d9834783264ec43678fe3e70a7f963e97a9dfd05dcb5ae75f51fdeec1d5d8d299d8c476454307a23efb830022a477500c02f2",
382
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subSpeak.xml": "06ff8e0c15b36727265d9f80c736a1781438c04445e91bd563b73a1f9ed4b501458f7e3ec22607dcd96e9f95da6e6d874c39381ca061a768c2b664a1b4bfc504",
383
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountCreateResponse.json": "7fb28239b065aab21f14d158e51ab6bfff6b10de97ca558da02adb639fd15e99343ca54277d0e0b0dc6be11c01abe6517fcc2f0e862d5a3538342f86bea87994",
384
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountGetResponse.json": "929de7e767657a691c8bf34be8abe52990835f9787114256bca7a1fd6016b34798d36e2318ad3d4a2a8931986d8034e2310e4b4247fa38a84314658402aa3bc3",
385
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountListResponse.json": "c57bcf1f52d302550eacbe5492bbb1cc17bd399d03b6c83971bebd83fa8be975e97859063a2115edfed47f622adfb413d5c28d6cc180710211bce192d867052c",
386
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountModifyResponse.json": "a06022b797598bdabfd7029128d9ebc9934784edf77175292c17b60152e7464938f78ddb8ab2883e0da22fdf94e584d0fe8d766c40228bc0a564e6ce76c39365",
387
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/uploadmedia.json": "35f19877904dd5eacf97183a286db18153002e37159f6e007c9c70644843d73963e9293a5e64c1854665821e36592f5ca11289d2ece86fafb3ddc4b8b758dc4f",
388
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/wSpeak.xml": "05cdd9418d049dc33432e02bc305b10635daf3bda936c695c4136bc4bb8167ac63e6ae809202a566e5a1488d8543c06fd9c52f869b03a474bfc3db560769c00b",
389
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/AccountTest.php": "8a98fbb165ab60db8a7423252e78d9db1da922dc2e1de9ef5cde32488c04380ab01e8fe53f4f542c602b28e574966adf58385456388fb4aff543dc04467de668",
390
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ApplicationTest.php": "e23381682056702928ea1c587bf8241f71743e4349cb30b621f2c843711c108c0811689c953ecd52515b2c780c50c134f959e4ef77ad2c0dd65dfccfa8c79c2c",
391
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/CallTest.php": "7aa7df68b91782de7a8ff67ce4bdce917de03ce4800da2d6c103f0d1297fc26c09effbbb7ead06d70566398b8679c54246213c4babefca43976c289b8bdb895c",
392
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ConferenceTest.php": "3d1149c50cc760ec57de791d7a1eb46a5210c113fe91e1756dc642d2d94b333067c9c3c5ff9d0c90d9ad8981963394d332287b57b84c634c8e4008ec5cb2356c",
393
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/EndpointTest.php": "aae4c23a72674a9d4da6261986147a3b3a1c5e4da03d2efe7f4ec21336e03d352ddc0f7e47dab3c9b4063a170d37e0eebeba649ecd1159d85a3c5553789c51b1",
394
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/LookupTest.php": "c436483d9ad54681ed44ef7a6b44d4899d06b7b421be27d2a076aa4bbef23a5d160d5098c60d5c380a8e66ebf8245c917074edf6a7b682d056f9f60e082de032",
395
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MediaTest.php": "a6ea3f17046c123698c0b8fc1e7cfca6665159166dd53b51d1b5a7700373527c7346a90e67a382f4df26ed3f92209790c3ca93c0c3d3b653d424e17a1fed9f17",
396
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MessageTest.php": "9749cc39c4acb64b49150958745f19952ffeab648abf06ae839eccf8eb9a6c66bea62e7d8fa398dc48a79bdc97ee063df934ba827632faf88f4aca01e5432181",
397
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/NumberTest.php": "9123fe40158482d314279a729e4c5c0eecf3733884ea39df16de986e775e93e90b8d9c7ad35fbde8f3d4cde3e02b33c70ebe87cbb27039615de8213cc27aad47",
398
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PhoneNumberTest.php": "4b52dd78392c66e1d1803a278ab98bb03e4bfe5275e28b043e4f672357125b4373acece1c2c5668081be021a683acd2796e6ba5ff2646baf3435dda1d6de7667",
399
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PowerpackTest.php": "52a3c6967c93b1b996abb3fe7e40ebaec915e58e715c6943b0f5ebd945c8a59023184dd1339cd044d2f3ef1a0041a61559a41a3832bfc222332fd85bca8371c9",
400
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PricingTest.php": "91a088d32f726c2eb49160363f7a77d351f3f65d43a9282cbea646310e2d01a33d22a2adff9ce5795f949bd205c0b6e77571f0a231265514704f42bdefbc51bf",
401
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/RecordingTest.php": "353008dcfc66ae09e915787634877d598930e60fff3f1e6eec0aa5590881f66d78ebd79aa1ba2b2a20409e4b9372eef9ab28406c9fd29f95ca6c773d8c83fa63",
402
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/SubAccountTest.php": "6dd803629402c6f7b8d923753477f6c03d6cfbd50aa59fcd63556527cdbc3d932557b318cf8c7a9f5a9d3ff8ff143ef15f31256e488fa8c35cd62bf80ae04d5a",
403
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/TestClient.php": "8917a380e2cc030228dbb37a7a3aaedd2cd624d8102eee1fc3469a9838f31f7ee734a40cd45e510d63bf4c1526da4bb3af8d45bd4ebd4382cc9fd5bc2ba178c1",
404
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/UtilTest.php": "6a66cd73b0cd403f64f8a4752381964bbac7507b4449e81c9aaa64d61db244128c604a8995327dd8e8ccc8a30cee7a3a57fc617b845ebe65a65ac38125ca7394",
405
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/BreakTest.php": "740c84bc38e7044f5138e3816b72c6a94bca3accb592733421578a6eee2080bc6721d85cefeb8b6f1db751e2056fbf722e0dae61d260b089dd803e72cd9cc0d7",
406
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/ContSpeakTest.php": "f3b641231907bf807c5c09b65a13409ea054b0116b9b36f5bbcc2bfa651592ae1f4707be5780c37c5b9f1516044a9f524f4ca829cd0b5387a6a32526ba11cc94",
407
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/EmphasisTest.php": "b76b6d0eee048b44965f87fa6f59614e64d885864ef3ff0aa2310746d76304fb5ac6cc6d0c714e7560e5472e018fd0183cf9a918d3e4ee5415723314d7d219e6",
408
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/LangTest.php": "1a4ef409ded7d9c7abd8c63994dd3e221b16bd1fcca8133ce43e04b300a28468cea68e430098393acafb78e537e37b0574644735cb84fd08e33dbd828e2fb071",
409
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/PTest.php": "9084715ad9065f1a926e8dfdabc5816b16a385dd5cd74f16f6fdfd1aef043b7d344d9cdac4b9dc43df85e8e63f329909553e20b86d995d9eb6d25d716fc5fd1b",
410
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/PhonemeTest.php": "f85a3119f95615c3d3e16c0a4c1d2aec7b2191629b60de276cedb769b23e11546fc27fff57e329c1ac6cb52868208d29f88d1412b452932b573d88cee9fbd68c",
411
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/ProsodyTest.php": "5aecbb6cb41b0269b0895e580bf87dae24703c3116dd39774c11d52406635f4167bf55ed0b950cb4d8af9138c03361161527c7f0e08867053034d8aea1fb1daa",
412
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/STest.php": "55343bd191ba9b88fdafcc409c1685224cd6673225c1ecdc006d4c3643d9e4f71fde0a07ead3f1bfda80bed486f09a7fdf42e16cf3d4fe66f592bb72397320bf",
413
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SayAsTest.php": "005fb0efa4803847719d9e7d52438ada0026b3860d7143fa4deb96a80826ff0f8608b3dd9302617547dd36cdee5293ec25570dd6513cd81a921ff483379574ab",
414
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SpeakTest.php": "cc92de5d0f5df6de17b121249074752bb191265335a6e50dcc4739fe525cc9d0014c187a7d15cd0c1226c56360277469ba10da72dc56dde01f478acc510a8dad",
415
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SubTest.php": "5c113371cb363691313226362512772facc38c30afdc32e96976aa309d6ac33aa32bab7d4ba674cd566182641048434dc65cf1403f25ea4adfdf6c6793db2fc9",
416
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/WTest.php": "f7cb4983bde61290a90fac15c009ff1780b02fb81c8568d0e8a1f40fab97dc1ec2245cd477b5ec669c6f54e56bcf7351e38c09caac7255756174baf4070c9284",
417
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XmlTest.php": "58317dda536a0383749d695ee8cce6f73d6ab413984673d46b10d9299e5a70c6cc464051e986b75c849286787a8fb23ef15e8bdf6bbc9a27e1c0cadf46a1bcd3",
418
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/bootstrap.php": "fb1c83cc2a11ffef9903eaf721f4cbcda4767f70368be33a0980aec4e5b515fa8258750f6e19fca0eff6843d0294de9c35b8e95af0e62f51a94442be0099720d",
419
-        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/phpunit.xml": "74191aa62aebbcf797167fc2bfb6bb304cb3d309287a73919caa1c43c188dcef47a1f1905e56143952e4b342ef183a84887dacd6976c18e58025582d5f672035",
420
-        "providers\/Plivo\/vendor\/psr\/http-client\/CHANGELOG.md": "82bb81ca074204aff5d95ac5d3edfa9c85569c8b9114f809e3e2f9525a6046a1276187ca42f638ed428311631791f60e6dace74cd60d77f1af0a41e9f76ab2ac",
421
-        "providers\/Plivo\/vendor\/psr\/http-client\/LICENSE": "3e0ee70fc857b6dda26ef2eafa55ef09384d82bb2f85b4289abcd94a60201c698eb477dcf03a73858b2cbb9efcf00affa199e848344b84dd4a4c135601e886ce",
422
-        "providers\/Plivo\/vendor\/psr\/http-client\/README.md": "a8fc38f5744eb4c1f14f5016b02108319b7cceea7fb3219f57f0604a2e92778fa9be6f1e340003b095f70c962aff0b49ccfb0264b26eecb8fa7782667e62cf3a",
423
-        "providers\/Plivo\/vendor\/psr\/http-client\/composer.json": "b767c510e3dc28fc5c8c0debf4e5627f4897940d41ced88cb0c85284c2e0765f49305997407e84d87154a4d9e14045e6c50fd86163d3d7452294af8b7bc36ccf",
424
-        "providers\/Plivo\/vendor\/psr\/http-client\/src\/ClientExceptionInterface.php": "33aededf573747615cbf7b8bc6aa10faea7762c903a0cc98bc43803043f9bad58460f09f7301814c22e95f2a6d0269388d8ca899ab76fcf0f2bd8d82aea5d9c3",
425
-        "providers\/Plivo\/vendor\/psr\/http-client\/src\/ClientInterface.php": "11b1cee24748c4ed1a41681b1b6e43e865e08150be14452de885daaca737f4029d65e8381632a23910789d3cf5e9f9d02f4999aad62e4e8c80a2fda9ac96a4ed",
426
-        "providers\/Plivo\/vendor\/psr\/http-client\/src\/NetworkExceptionInterface.php": "6d3d81d18a51f451e8a1b74a16b3ac8ce6c5642013a2d1375ce6718090de5369779f9d6f594675aeeb7bc3f55a11f1b9396036354c4e9ae0c90183ff369fd65e",
427
-        "providers\/Plivo\/vendor\/psr\/http-client\/src\/RequestExceptionInterface.php": "46391124b679cd54538ce5ae6b05d7fcfb6b9ef7680f33c8771f94b38075a366788293b757ccc674060d615783476e1151d0ab8a5f2a10e24578c9b46cc1433f",
428
-        "providers\/Plivo\/vendor\/psr\/http-message\/CHANGELOG.md": "5567e49c016bd259491fd13a96e5b88629fe67ccaa0d75f7aa7c54096edd663fc743930eeade981a041cf7524d9f65104718c129fa36a200397d30c0e5d2c954",
429
-        "providers\/Plivo\/vendor\/psr\/http-message\/LICENSE": "22ef0ac33682fbed60a5274a5b25991308decbb45c6ed45fb3222cc045bb9e552fa7310b1ab6f38329b63f53a02c25e7bc5e955ad23c5bb2366b417563cb71de",
430
-        "providers\/Plivo\/vendor\/psr\/http-message\/README.md": "d58ab57a3e35e51848c3c21313836c88eaca950eb5b716878ba950ad2389bdd84b24a5fd8e6b19ce3ff04b07d879b5206b0f26d5e3a63a5be19beac0e9ccc1de",
431
-        "providers\/Plivo\/vendor\/psr\/http-message\/composer.json": "4f074821b6fb7074c418bed0fb6232677a0cf6ae5ddf24694e14bd5aa7fb3610a645f2221fd024e7c4bfe3e95501421455dcfbbbb38468e9db442b8cde9471a7",
432
-        "providers\/Plivo\/vendor\/psr\/http-message\/src\/MessageInterface.php": "b79e96e691ad169d4d70420953ccb5933301ce7cedc17d4eaba859dbd56719008198fd201e3be1606ea5dbc78b559f1d86ba17b73ab7e843f0c2f0b49564147f",
433
-        "providers\/Plivo\/vendor\/psr\/http-message\/src\/RequestInterface.php": "f54aefad46987c6b4880d5f09f7e99909e6e2a99f9d305d1f73e4de58b43493179149912352869e50fc46e057f50c78ba7ed5df6280a7c0347f3d7c36afcbfe4",
434
-        "providers\/Plivo\/vendor\/psr\/http-message\/src\/ResponseInterface.php": "69d177fb504f47ca0181ab35e2155cacf16e77535d07bf4eb4d790e1ddbc7a133f3de21eff936a3e75acb704c936ee2f2b12b2cf3516464222c3d60ea9760488",
435
-        "providers\/Plivo\/vendor\/psr\/http-message\/src\/ServerRequestInterface.php": "ea36ff66e8bd962e468fb2bc832e70f7bbd81f92dc0e607cd69092b737609d565f3e254a2d54fb3588f5302315f62e53c6eefe9299ba4b6f1f53ba8feffa815c",
436
-        "providers\/Plivo\/vendor\/psr\/http-message\/src\/StreamInterface.php": "11ab8a9d07beea1f1633f8f6cabb2a463ff288555f2fb8a4cc0b99404d8580493018557a0f2674feef653be51f6fb8d9aa3ad8e6dede0391cadb7bb49f96f781",
437
-        "providers\/Plivo\/vendor\/psr\/http-message\/src\/UploadedFileInterface.php": "65da733a08d80c5490fec8e69c7b56a47efc522e720a2ddcc673bd74c0e21f5fad4d522ad47da4942d25d139b5392e0882de32b7fe5a5697b86f40fd96ff0f8e",
438
-        "providers\/Plivo\/vendor\/psr\/http-message\/src\/UriInterface.php": "0d46735005331a3489e3ef4c8229307320de44b0443ff74d238cf8f3962d83e99316da9435259d479b48477d33e8713dd3d1a1859264c22f2a53b43cd6adae2c",
439
-        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/LICENSE": "ba7ad111dab105773d8a75d20024b48c4222cba6f7836b7b608fddf34f367cd218302829a1926a675bfd22660f4562b0e9a679d15b41162412924ebcc1a4e557",
440
-        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/README.md": "48ce2def80836640ced369db92da9f9e943b319849cc89441023bc260edd6919c710d08c91fbdf04864c6e08bf89e60a397f5e814b3e9699b48df574f5799522",
441
-        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/composer.json": "495b111d0e0b4f4496ccaec984dc89c897f189a67d840c09b0cf17034629e1c896c37c4ddb1afdceb7d5a188dd0d90405ce34aad409d3b7722169628411d3ca4",
442
-        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/src\/getallheaders.php": "a61a5f91f21a68108c7e9c8eef22282e4b1b6f6f14ff997c5f47c83f39acd08ec60f4b9d25d306d67fdc68ec57c7f71a44a1f63ebf7c25b40ad61fa1cb4e58a6",
443
-        "providers\/Telnyx\/CHANGELOG.md": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e",
444
-        "providers\/Telnyx\/LICENSE": "8756122099aea86ddf6f176a480c0454f2be6dd278e475bd6be7d7ab3d572162f1bd44c9f623e52e53514cb15336be6e84a5eafc8e2a347b481ab5799ebd6e17",
445
-        "providers\/Telnyx\/README.md": "321748e1de717ff62ccd3fb2c10fbed8ce92a66271f2047c83be8929f965c179cd163e429175b44893ae30addef3623f96659b98528a405a585f7afc7394e866",
446
-        "providers\/Telnyx\/VERSION": "7558cccb74c98362a480e1c0ae17e711de8e5d6cd10f508a31395105c0efb22cdea79aa6f9f6f890837d519acafc2cb3c429d3ab17a283e1992e5aca5053e25b",
447
-        "providers\/Telnyx\/build.php": "485d76b827a54d8455550e8a8f8d14862f9444381da251e66c2bb8ceaf2106a554c1cd339666b1260450749d0244d6b9ba0c6d0a2220ab2411aa4041fc83f8ad",
448
-        "providers\/Telnyx\/composer.json": "7ab90dcc0b5854786b213e5f2ee8c8030b21f65b2f8d0f74a3aa6d771ca1054ae5e1ba58ad6684dd1234e7eb7244be537cdb0a6888172cffcdaefcc7f5908dd5",
449
-        "providers\/Telnyx\/composer.lock": "1e4b665caeb711f94b1e7f0ce6388e91ada9973159c1230d4e60f0dcfd44ba9af2dd236e6acaa27564e91b4a89dde817d5a73cad8682aa9cb93b203f467c6be0",
450
-        "providers\/Telnyx\/data\/ca-certificates.crt": "66816e077ee99ceb9535a472e6bbf4f0e48ca838099c8a97c7baf3297fcada9a43016ea1ded63a455ee56a8f18501417a0f744fc17b215bb599cafd76b754518",
451
-        "providers\/Telnyx\/docker-compose.yml": "1fe4c651e406095f0ff1bfc196406d473184bf53cf80f7c67dc79f1aa94b26db74174e0e9bc47adc95eb2a5f6eb950255c4a5cf44ccb7029ba712df3be9e6384",
452
-        "providers\/Telnyx\/docker\/Dockerfile": "a63d1fabd8c19fef37b90922aa4bb21fbd1094635666cf2a3a4db47009888bfd3f1ad5c34c05184e2ccc8f581971f6dae91c1ff137730821422cd482c39e9390",
453
-        "providers\/Telnyx\/docker\/entrypoint.sh": "2bf3911c365a271fc52d17a0aac1687abf52e5286a5d52cd34367e18651dcfd6ef1f791b54105b7742f5d691564ddca3c05a9ba4ce8edfbc68fe919e0bdf6c1e",
454
-        "providers\/Telnyx\/init.php": "e590e355286b775423b39dd23b5aa0d3383d8a85ed2d1346802e0c487cb834154b4ba1b0ca41ae112ba81cf5afbcc9133db8747e08565c00fa3b0ea04fa7ccbd",
455
-        "providers\/Telnyx\/lib\/AlphanumericSenderID.php": "c6f7d381cd9901af59d67c66fbe6ace0729c77ac2b2962ce41351ed076cb39c9049aeeb72ba0e3933ebce4ab8a936b86a7e21d30a1c07b2b08cad9da2abcda1e",
456
-        "providers\/Telnyx\/lib\/ApiOperations\/All.php": "5caeaf5bede40fa19422387d224255ed534a866638b22a7a832111cada5496764bc0434cb1aa7365e1d4e0a8ad55545bb05a42a17ae5f2b361ed42c12166a229",
457
-        "providers\/Telnyx\/lib\/ApiOperations\/Create.php": "811f9227ecc5acb172e8e7120541227de0bc22cbf66a41490b743b3e49647a38889d5cfa5d64139b602572f0fcc0fbb96e3971c78801ed9acf7b50db2ab7499c",
458
-        "providers\/Telnyx\/lib\/ApiOperations\/Delete.php": "4c03010d81be8014694e366cf93244dd2f73dfb38fe8a1f3066b6ce179b999967de5a9d3e3140b3076d0dbbeccea329ac750ebb93915ced1e44891ab589f0c7f",
459
-        "providers\/Telnyx\/lib\/ApiOperations\/NestedResource.php": "390efb020ed7c101b32379716bc2111e83273e2a7092da61623f85295c67ad1f6ac2fda617ec91eb28d02ed52a86db9992ee044356f3d96aff2e3474b16da601",
460
-        "providers\/Telnyx\/lib\/ApiOperations\/Request.php": "5b947c7171a05a754fce9c5bcb81f93c1614db086fd4ceef9be1a57977f8bfa7311af0a60a2879d8cb9380c64ddbf7c991738e5b5a4e4b2feb5d88e25c822f3d",
461
-        "providers\/Telnyx\/lib\/ApiOperations\/Retrieve.php": "d2a5aed1aaab9421f2f2b41f69047a70bdea46082e118cd94e087f4082865313d7c67aa037fac194063c53b06d9dccbfa5e65582a9adbbcaaa2982396cbda01c",
462
-        "providers\/Telnyx\/lib\/ApiOperations\/Update.php": "a102e823a46dca1eea6c0bd67b4b7c63bdc0d074c97b42a830de18006782309d3c5f77103b32e82c778f670aade73d3c31f49da49682d9ac204560bd868cd526",
463
-        "providers\/Telnyx\/lib\/ApiRequestor.php": "617ebb71c97dbd896ad736a4e1235f784ea7b89dd73a980a2b259820e3dde0ae935fa532d1fc8e0d9e14a63f843e880e074319bab2f9c519c1ec19467f80bbd7",
464
-        "providers\/Telnyx\/lib\/ApiResource.php": "40b33a633cfba6c4efd4035bb668720a802c2b86538a36bae2f56b8cb1025b87f204732b9ed4f731cb9293de3d69e753e2e55a4f17980b75c2d91c572329c6a9",
465
-        "providers\/Telnyx\/lib\/ApiResponse.php": "0d292d053a85224f4ac839f54253decab0eec5ae9861ca95314e98cad0fec2d2f0a7e712a8ec433adb302b6702d69262c8866b20fd08d67b2d18571965bf6789",
466
-        "providers\/Telnyx\/lib\/AvailablePhoneNumber.php": "7c82ca4fa28264c4fdd910c71741270657e52cdbc760343339bbb7c1d5980d27b7af476f7e1bd431926d428dba685a6e34d250f9678ef0a4e3cd8c4b06289e55",
467
-        "providers\/Telnyx\/lib\/Collection.php": "8953b7490974401e598cfdba09be005dcc037ff74d7eed660d11afca7a45d62c47f6b6c4f31b3b3003f3d9401599283122034362618a9c3d487eb131d05cfa13",
468
-        "providers\/Telnyx\/lib\/Error\/Api.php": "5c496f65e000a74652c5e7e3c79303befb693e497d67dab4e13287ebe72722c9651fa04c4de4065ea969e140f7a2f74ccaee2ab728f05790ee26200558d0085c",
469
-        "providers\/Telnyx\/lib\/Error\/ApiConnection.php": "469821ef557d096a088d2997f762b4a39c82c49bcf22ca707bcbf611b20006106522150d6365835e0c7e23e3303bd407d78181fb7b5d86bd35095645e68da158",
470
-        "providers\/Telnyx\/lib\/Error\/Authentication.php": "e1c7a938a695fcd8602e5a972086989efd349a6d8d5e3abddbf6f548ba2e1f9bdabe708b5ea75474f7c3588ba7cca8a1dc60970a8be70a80962f90342e67c13c",
471
-        "providers\/Telnyx\/lib\/Error\/Base.php": "9d311a5445b2f3d9c4e25c42094734c3d6243fdc5025c7e5a609ce49d2b2a47f01ea2f163154917f3330e1a92d30a736319c4daf3ae18bb6ddc41d131afae0ff",
472
-        "providers\/Telnyx\/lib\/Error\/Idempotency.php": "cde2f56479baab53e74c6784878c7914e7393b655bfdbf7a36e0619fa9c521671c105c3d5002983b3759989a22eafa0bba7b4aedd4801d7d6b820842c0285e35",
473
-        "providers\/Telnyx\/lib\/Error\/InvalidRequest.php": "0c5748224174c20020155c9f0c734121d07c752460ef63648b08a2392bb6d8b6ff0a9eba13ed1cfb8988545f6dc8c70930de6e78da03c63da0e59bc5fa109a9f",
474
-        "providers\/Telnyx\/lib\/Error\/Permission.php": "3a03b08e77e6fd0897de16d69fb3769707f6fb46717b2a00f1282d7b3e33527f5ca5ea94b6df03c883ea177520140ab2dce4986e0ee0977cce8c375e8a5011fd",
475
-        "providers\/Telnyx\/lib\/Error\/RateLimit.php": "0ceb884f1078559f5bbfbba6153e6bacd6ebc49dac2d047da9e7c64d45c7cff0abc067711366aaec74a4f2736b7205c02ae9de8c214871a82ed1fc53faf4be73",
476
-        "providers\/Telnyx\/lib\/Error\/SignatureVerification.php": "8aec6ea46f62c2b6ecf845cadb726332f89a6c0dd92f4864ac71ffd25268b2af0468cfa83b32a24e91c735ae947498bdc6181efe09857c6bfa799cec721dadda",
477
-        "providers\/Telnyx\/lib\/HttpClient\/ClientInterface.php": "f47e88048bac320e8cabb1b61869f138f84a04858afc3b7aff4de858db9b3efc507d1607037bf07ec5fb1f1df4069b71bf8ec1d0edf953bd1eb8255e67651ae9",
478
-        "providers\/Telnyx\/lib\/HttpClient\/CurlClient.php": "fed4939d221213da7fa7865b4405e5c0b7dc092375e5acd890bfdf178baa6572ec7ac7ad57cb02caab5af24d2aa52763bae1b21679f3b94e6f7ba659cee7a438",
479
-        "providers\/Telnyx\/lib\/Message.php": "18acf4bf51ec27d330df16216924c65a45db59895b610a3c803ef1d09beb7d96d20753b4ec16be06ed40f2886ad46bb3d866f14a87021484ede5d33ac1a93c4a",
480
-        "providers\/Telnyx\/lib\/MessagingPhoneNumber.php": "2a2caa5e44efc5de92ef9b0f8ed0a68af1ab2c80932f4cd7fe79caa87ca1e146af3bd0e1d16d977738da2a3af1fb3cef77081c32a0dac50bbe8ef54a108efbc9",
481
-        "providers\/Telnyx\/lib\/MessagingProfile.php": "351d96a913427c045f534b6993c37fa6ce2ecbdd7a398502ae6447d631ff322ce146cd73dcd1161c999f6bc9ab9764221b4bd3567888dd14c110b98bdc4432b3",
482
-        "providers\/Telnyx\/lib\/NumberOrder.php": "52067d9999c150fbefcbba9969b308bb6118eabe25bd08f30cc4978cdebd68fce4479e53d71ce29632133e8c69bb4ce9276301f5a36ea95bd77d29fd057f5d46",
483
-        "providers\/Telnyx\/lib\/NumberReservation.php": "2b44bfa3fdcce2e21668004d458e9e6bcdb5e33cc37e9a0c980bbdcacec945dc4e06e489bf5b9d0194df00229a79e39bc2a62395d44e4072473441e258841baa",
484
-        "providers\/Telnyx\/lib\/Reporting\/ReportRun.php": "2a7b066db83e08b86e3da4c0b2d041c4d53ce0a1fc95ca3dab76ad2bbf549d74f9a97974be6bbbf0d7b592a814a00b514bb26ad13c7621b5c229f9bc40abac7c",
485
-        "providers\/Telnyx\/lib\/Reporting\/ReportType.php": "92ad055c626d39d9f878666310ffec1c425d4625af9e7803547d50f1684c166ea1dc67d79c35580ae08850bb6e570a81994014e82f4d4080377cfbc664c4fbc5",
486
-        "providers\/Telnyx\/lib\/RequestTelemetry.php": "cefdb55dce61e5f276bd49f6b49e57c78085338537e56cce6fea5a81cd1d2235f1eaa78be326cbd513117be88a046177afb628659088b66ce423799995c53709",
487
-        "providers\/Telnyx\/lib\/ShortCode.php": "4abc882d0dbc72becbff07212d17b8e1383b0efb43818a7eab983fd2a08c3f591a4f4ba2f185003fab0622a43329c969d2fcc80b23cb94410007a0879309ad49",
488
-        "providers\/Telnyx\/lib\/SingletonApiResource.php": "f11599b789dfaef76ef6cf10bade1b426d2e16749bd207c6d08ddd007fea470fdbf0492f9a59cf8bc9f8589aa4532cd6c3887629cf27060696c3f086b0a48673",
489
-        "providers\/Telnyx\/lib\/Telnyx.php": "4971ff61049149242b0cfdca4a15dce213c465ee697cb444eb47da8215eddf2737508164c59393bd7661cf40b1a525afa9fc0df0dae8a071a59f3646a5ec44b9",
490
-        "providers\/Telnyx\/lib\/TelnyxObject.php": "a1bb11b6bfecd69ba694dd34d6309707e916ef45edea1e81e160c572dc404aa4e16841f3be7a82b3965037efef24db7c7c9730fbb65d26e8a188d30fa9af01f6",
491
-        "providers\/Telnyx\/lib\/Util\/AutoPagingIterator.php": "d03ac3841bb553d847be9ea73ab9debd8c1f2c829b0d38ac4416a121ac535a5ece2ecd9943d89e720cb5abb1c907ca9b96df899a561c190ccd6843bde785114b",
492
-        "providers\/Telnyx\/lib\/Util\/CaseInsensitiveArray.php": "bcdf3fba35ae234bc63ba6cdb5429aaa5fd6baed85857991abb9eff854b23eb7a878184ed038636292ac470b67f91c6bf8d79c20a6214d31c872d22fe51833a5",
493
-        "providers\/Telnyx\/lib\/Util\/DefaultLogger.php": "50a69f9f6ad628e489a05fdad0df811c926c957c301adb0b4b906dcce9733a0598f6c2eb126865c54a0100131dc4230a834b1e98275237ce8e90bff2e96cd0fb",
494
-        "providers\/Telnyx\/lib\/Util\/LoggerInterface.php": "8d2dc2c59af5e625eaeef0b85b09f78a42e533b62fee84717d67a4c706fbacd94674f439d3ac60984c0a3947b7d2f5a8ccfb64e071c41d063b8298f57578f88c",
495
-        "providers\/Telnyx\/lib\/Util\/RandomGenerator.php": "292c880420b28390e3d734c6343acd48f322db0c474f80430402916de1dcbf8e988b3d2753a7c18e763e632f474284b213ccc8e8fe4e52f00569e72728dcccb4",
496
-        "providers\/Telnyx\/lib\/Util\/RequestOptions.php": "61a13e62a72e7fc4a1f4d2a707d03ca785af36dd8566e037efa4b1a07d91debe1bccc637bbae6ab9dd836b20a4133cdb7316d6c2628da0d13d2164d6613f1e3f",
497
-        "providers\/Telnyx\/lib\/Util\/Set.php": "1381d2144748a490fd27329fe231e9d3a9a8b428499d4005f9ff18a946c350d8dda1ea90285314a1a99f5d351b1b235ad37a74823c37d7345da8af528dbbba87",
498
-        "providers\/Telnyx\/lib\/Util\/Util.php": "d7c35dbf5a2832ced6059800a6730fbe75338252641edab902adfb134a179d96e162f05bca2902c6c2d99cf4827d5b89b0daac826162c7d460e17017ee405606",
499
-        "providers\/Telnyx\/phpunit.no_autoload.xml": "06ad2f4fe0a292902757629f5605509f32a0d1dca527550619c98a61519d83fc70f3c886b12f5e5734b1031186fd9c7fed6fba813cd816b0f07d36c2a6bf11e4",
500
-        "providers\/Telnyx\/phpunit.xml": "82ac037adc20f2aa76682878094e8bffbfe31782dc6a94e2987bac5546e3ffec90577d03715f4ce481cc977685eec9e4109a61b4b46bc19351c2cad555d7cadf",
501
-        "providers\/Telnyx\/tests\/TelnyxMock.php": "e8e93ca1114530cb7e9cad46eb20e32072934496d515a9391ce8093773450dd60f3288f9d3ba46533a0f650fe67b508d5e54bbfc6e1642443d1fc043b88eaaeb",
502
-        "providers\/Telnyx\/tests\/TestCase.php": "9945df738b56e344648cc00d3d4b94345c15d8749ce511b5095a87d5e52aed35d8e3c773276d9dde9d9fa04eada784a55e4876ebf70a198ba719c8e94c8c32d8",
503
-        "providers\/Telnyx\/tests\/api_resources\/AlphanumericSenderIDTest.php": "1db47c5c215f1dccbc0456035edb1619cb7575dfe2b152924a6e1abe4a021bf63be3b1d1cf1b86285c5425f5df46c8e396cd66b6ff6a27534e402e145e5fb194",
504
-        "providers\/Telnyx\/tests\/api_resources\/AvailablePhoneNumberTest.php": "823ab5138035a84a790d70c9bc5964e7aa163f195aeaa2fb50d2cfc7068f1a77440f09a134bec36a187cf57cca6c735b428b225239a263aa26cc5cecbecdf6d5",
505
-        "providers\/Telnyx\/tests\/api_resources\/CollectionTest.php": "af248a4d4c4504f5fb7148e8f5ddbce3a05cc859a761f57cffb8335be10b07ef6d4e808002601f92eff2968e86873fbbc3fad838420db0694f81b9cd95091452",
506
-        "providers\/Telnyx\/tests\/api_resources\/MessageTest.php": "a616a69339b599526dfd24a25d8e99eefc99c2341bb7d4f635d1b4984f41dc38a3eb6bca3e4242caccb974b141a490624669b5c2b2f5315b6cb07540d74fcad7",
507
-        "providers\/Telnyx\/tests\/api_resources\/MessagingPhoneNumberTest.php": "40409c270a6f9a683bc690f6e91051fe1ac4c8a6cb1b4e5536416d64fc3f8c81f327f33e562ee94cee1481e0ec2f13148b0dc3f76f3f20a49a9d80adfa5c1afa",
508
-        "providers\/Telnyx\/tests\/api_resources\/MessagingProfileTest.php": "1ca7abc2b47f221b491ebbe7def5569deada6eaf4184bd6e6327f7bf2da15669d1fff581e24c466621e8462e816c0a12d02e0aa1d91aa3746092f8a09a9131ae",
509
-        "providers\/Telnyx\/tests\/api_resources\/NumberOrderTest.php": "dd6e4382dcdb0cd60ded9d9db6262bbc7f523e8f5eb842e15655fe8ba4e24ad5192b8be40bbc762de2c62de3aeec31e1373063420a99e39bf02f5bf74915d5ab",
510
-        "providers\/Telnyx\/tests\/api_resources\/NumberReservationTest.php": "8b8386c0e044e120b6d60f97433c9ecf0ddc272f805034768300bf01bfbc731a3f6f964758e509d650013df03bca66eb1db13fa1a24315df76ea55fd86287fd6",
511
-        "providers\/Telnyx\/tests\/api_resources\/ShortCodeTest.php": "8aef092868b89adda6517905c7f05245b3c39affed4c7723e5a32cf17b8e39528e8925923aad4b2add5a0bbce9049a8f934141b87a790fcb002eaf77aa494258",
512
-        "providers\/Telnyx\/tests\/bootstrap.no_autoload.php": "cb002f7c8f77834b6414db6535f083bcd227ee6085363fa3cb0f66b55226680a45c8562fd8458249868465957b2aeae134b3379f8ee2ed22c96425475e9c0af1",
513
-        "providers\/Telnyx\/tests\/bootstrap.php": "50e143ed68aceb91d3e119d5a31521e76bfe9876bd780c90ac83afb7ca4f32be48ff81c33c134109eafe1d22f35e0957a9a834966b8853df99dc1df04795adf4",
514
-        "providers\/Telnyx\/tests\/data\/test.png": "6ad523f5b65487369d305613366b9f68dcdeee225291766e3b25faf45439ca069f614030c08ca54c714fdbf7a944fac489b1515a8bf9e0d3191e1bcbbfe6a9df",
515
-        "providers\/Telnyx\/tests\/openapi\/README.md": "0c54fffd5b7a5f393358864ff9e3bd3793075d6060cc1336603b2455d60f16d160ffd47b52bca6834acf0d9713855b386f69580099a3dcc131e8d5d617975ff2",
516
-        "providers\/Telnyx\/update_certs.php": "46dfc1129c3dff2211cdd8274fadd8629c450e94a7a1c8527373221b25a0664b6043d6b007351ac9afa4b40ba349a7fdbf4ad2e088cf0a8d864f7cbb81145fb9",
517
-        "providers\/Telnyx\/vendor\/autoload.php": "1d4735a3ebfd65901ce478f8bb98ac576ef9ba2706f17a1c6ab125979a882ec7ff463b577fed1c418f817c1a56e842fc25b6aeb8e7ce6dcdd554a25e03959c3a",
518
-        "providers\/Telnyx\/vendor\/composer\/ClassLoader.php": "866e8cbde808b4e7774c5d9e2bdda44e84ff9bc84268785aff1a75277bd7918dc26ceeb27732718c9ea93756777ec0d16c09c15f9c1179be3cbb410c7914d295",
519
-        "providers\/Telnyx\/vendor\/composer\/InstalledVersions.php": "86ebb1216b59b01b7cd1f3b2e66311cd6295b58fab91a9a82603f903c6d2f716d7697a82d625372538f809e9e45f7dbd257a00e2b95d23c3785e4eeb3a6ebb60",
520
-        "providers\/Telnyx\/vendor\/composer\/LICENSE": "f3bb64009f41a425df5a9bbab53490f0eb9b74fa8d6aaa2f57efb928edc4ffff330260666edeaa04a91fed708c3663371cf01b284f3a08d6698aaef7a23f355a",
521
-        "providers\/Telnyx\/vendor\/composer\/autoload_classmap.php": "a298b75d605ec9a330a5efe11769e79f02cf202f49d8b241afbd175c7fcfa0ac4db8e72a29aa1d839138e3b181fbfeca525181eb57e998a4a2c14ec9e457cf1a",
522
-        "providers\/Telnyx\/vendor\/composer\/autoload_files.php": "107b2d75757e7b39e2d279e373fd4291d57e91a7f442b0f880b51d07e7119beb9d41d1cdf916131bba717e8da953e2117ff83f1bd9ef850fc1d9056d0f02996f",
523
-        "providers\/Telnyx\/vendor\/composer\/autoload_namespaces.php": "30324cf2dc20c214c5b5c8fdc2099b67772149ddea1d1d51969c711be9a83d036e43746c600f958a6b49969b16a10ef93e9b1e3d5af9714721ead916b9aef344",
524
-        "providers\/Telnyx\/vendor\/composer\/autoload_psr4.php": "02804e683dc13b4eb2ad98284be2dff3eeb97f0ae9054c3a45641ce7e6144a3b5f34ae36eb764fd2faae39fe5dd4131b4dffd4649c6ba3220ef24aeab45efcb4",
525
-        "providers\/Telnyx\/vendor\/composer\/autoload_real.php": "469f95fde429006c3262cabe72cd49970b0cd6098b743d8e5a646af25679dfe539c98d3337b51a8faf7f30d9c64e1def8d131a93e8897f801830e7e1c4da5874",
526
-        "providers\/Telnyx\/vendor\/composer\/autoload_static.php": "4845f043e32744886f456f358ea87cdcfd641508151ba6c3b0169c9aa53fe111f05b78b82e204368da01da68d7007709c9140d08dce4e7dca3cc4c9f60397dcb",
527
-        "providers\/Telnyx\/vendor\/composer\/installed.json": "5ca47a408f164e118f7ccba81577933913002efce47331f2eeb13f3e24d78878521db08454026d270deaa6552095260d745f0a424c91eb7efd36f6a9a20adfba",
528
-        "providers\/Telnyx\/vendor\/composer\/installed.php": "38fb24f1f4e4aa0435926d601c7b78797c231eb0e3621e370b17078645f5d238a1d02da3a29cd14a9125f78f53964445f4326311f6e830cf8faa24e944215ce4",
529
-        "providers\/Telnyx\/vendor\/composer\/platform_check.php": "4d385b31994301facce94382fa007a56ee32268d2e1cdbe7c9f9cfa834ed4195d3cf8e8e7c9a800c97aafe2c9b46f3c1a93e632c7415e8a9e4a282c083cc6f9a",
530
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/LICENSE": "0c0bf603f7e196edaf56d02acbb2e14df7f73a2da0617d62b5fc811f088c29865ecdbc7c6925a19bda63132cc651c56f1cdac79dfa02aaeb3fcca49033636ee0",
531
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/build-phar.sh": "a5ecc580bc6e95a9c901ad1a0097fd47ab857dee79d0221ae463e27f27cc8b2227e1975ab2699b9d0782f0b0396ed9b3ac0106f53fe61315cd2954ae54beb333",
532
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/composer.json": "c400438df2f41ace7bff40d284236bb06c6095ac03b58caef5b062e7ef317bac5a6bf551c94459ffc838acdae7df6cdfc615dfc3cbecd16be37ba67bd948415f",
533
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/dist\/random_compat.phar.pubkey": "e8909663e5350be2fa9416e28c6b179c41e87feab8da0d6fa6a41c294c9b00e8cc40ae8bcd03997770056f70d946315fd530f72f42974f63195f14b3c675e3c9",
534
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/dist\/random_compat.phar.pubkey.asc": "f07fb9c7b00f297e73127dddb1f3986fcebdb0760454765f6ce0977347919c0c74ea197ed310bcd86dca7ed227812bfa6d1595c44e40f10c085cbcbf602e163f",
535
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/lib\/random.php": "fe4539e2b55b47dfff1e2256c91498e5a41a85e28e42d790fdbcc42102c16abb09b0d7a0e2268ee004c555e1001241a9925fab1eeaa16c11ae2188e1f01540b9",
536
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/other\/build_phar.php": "370c622746a37b65aa6e36c2fb94486b4fb01f2db3f3c9539a7fde711d1abe3f9e9c30bc61f4200e6da9b47086c207b03cd7258d77dd2ea6b48126a618e2fa0e",
537
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/psalm-autoload.php": "f05ea11c8e973ddffde4d60688b161701217ac8e5c9237cfb57babf7113482d5e19ea441f5092eb1448a21b95ceed75f994427d6febfe0de100c376ed17e91c3",
538
-        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/psalm.xml": "88c631fb2f70a79d0e56a4484fb7ae8b6b3502ed2a9599757e7a3302c42b0adfc6f0c45c9916b88d7430f209d8934b6121221dd8b424dd913c49236db7ef01c4",
539
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/LICENSE": "db260eb10b8775cb408f675dcbe11bfb1a738d638f4215467df6c4bd03b8265dec7712fffa30dbcd38b5ef944266c3963343d033f497eaa6dc602f55fdd8729d",
540
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/README.md": "82f123f85b02a7e91c3ebece404b85ef5a0950e0ca79bb0841735a5a03b88d1a3efed4bc8229b3ee1db245471cf58b81923ac9800586ace3b794421f379f7bb3",
541
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/appveyor.yml": "ed6f025871e47d5afb1eda2e0705a2185670c447279cadd8c0fa796779fa2f1d7a5f17efaf6412c403e40bee345ac3224a45f9aa0e5143f06ea5e25ba8cb848a",
542
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-fast.php": "a40c6c77f211a2257d3339ad80ae7197ede8ba0a94c76b48052cfbcc8ce903959dbd8e3434e6660bfce2c5e935cb9f38568f96cf00819d03f4a1c46cd6b7b0b1",
543
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-pedantic.php": "c1a0e8a5b461135bc58ebf0a37d75e865d9e44ce666aba9a95d6416cc7d57a834aae6fb6ef4a9cb4176690a4e41cdd8638106a11b32a155f3a8ca3acebf7a504",
544
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-php7.php": "0ac98043c8df48e7bdd3a20c11688ad3702a06271687e1019c2a7288288532ea593e7e462635b806c0b18dacbb8f2bd6d9c700a61d2b1deb90eba0b49660b008",
545
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-phpunit.php": "d34cda9cd77a67d93817d5b9b1bb51a13521b2539f9a8d0189debb1938934df1d5fd51fd2a82c9d4775f5a8613708a1e78687fab86c3afdc356bc4b02045bc66",
546
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload.php": "91c2a6366a27a76a0390c69dc4cf061c73cb03a22a3303aad673cd08e8cd659c7fa7e6796acdd9d2d271f015eb16b15663c5d21d8a538fe14f459519c9f9e8d1",
547
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/build-phar.sh": "5bc154a32c62797e85b82595da69ed11676d98deb9644b62a12d5ec169d3edfd4d3b24c67170143f12ca63d9bea06cd0803f68d5e63a7849ea9c4dc9483f7b4e",
548
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/composer-php52.json": "10cd40189c6ef385b9e21311b8b2bc8f7943273552227c8006a38889d743fde82c8c61286484d59bebfb83e645a87cf6d99f29409439a1057fd16a4ca7727417",
549
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/composer.json": "e9b03b450c47dc1a593e35493c7c80c373f958ac5ddbe89a163f15e7a30a8139ac0f9868466610899e3d5e5d573d517bf09acfc68d2b9420e3301b39e7736aad",
550
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/dist\/Makefile": "1cb0cca3e1413538bad70b8c8a22dd68d17bcb6450e0c4ee41fab9fab09c36bffb4816dd0f7ea2f40ca1b4cec6b030c5c0cc17955d2c83ec08759e748b04d965",
551
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/dist\/box.json": "47543b120abf7596f26b58f9911963e9bd0cbe2297b65d43f74dc52130e503ce09049a4be53146387b7fb42b7640f6577e3c1f4862540d4f8a0e668b0001e62c",
552
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/constants.php": "4e0597dadc39ae7b81e46ef5f3f045812a11753d9116215bf0d905e0bb3760bc44639988f1ec8f0ae8998f507e0c99eecbd19705f5399edfacb87172d7a577ba",
553
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/namespaced.php": "c550633d5dbd23c1bb2fe9a14b787e239bd5fa898932ddb8a1b1f8909a57393e01f12337fcc53f54b24bc48a97c3ed89de03da089ffbea71ef90d48c5091e200",
554
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/php72compat.php": "85b52455b2764ef4b80d60b8d99d5f65264b2a2e7d770b2ab05871a5aad213ad35f2cd755a8b5d19b5ddcea758c024175480f2dbc89ec75dc86ccdb453f5fc25",
555
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/php72compat_const.php": "177d6b1b8fb5286842400019be1465fa0438e06dfce2fbf5e93e93d0715c161ad07c0c31c17394cb0c6673a058f34544454cc0845893242dfb5a998655c93701",
556
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/ristretto255.php": "f2c36f65a9a556c43bf9f2fcad02f1c87c29d89bb5b3d81634112defbae7ac0c85e558fb3b5a5e74d95906a4b543e7a2cf16fd444ff28888ef09d73fb9e6b6f9",
557
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/sodium_compat.php": "75e3119fb1d400aba554506a562c64c1b1b82e66277383bf307406fd1f4c68499a32b82108529d5af99878890e3551dfd1fef1ab62ae86982c27dc975dd39155",
558
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/stream-xchacha20.php": "4cf0cb7bf023249c18f2261057f994faf8c4233022651285fdf8978fe9a71d7eae0511ea1f64faf2f3fcb1ae5b010112a5a4ebe8df9fea7ce908916cc2ec90af",
559
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Compat.php": "7a8389a0ca9cb8e544b7f345c60705e1cca41769105531211219142f15c83bd60b442dbe8bd62042a5fddf31040a19ba1f3f00ba6c2a44c3160089a2605099da",
560
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/BLAKE2b.php": "91aa0293c7c821d238f36fbb1f4327e67a718b53c13f0ea0f4d6e1d1675618bdadf183d842d4dea103017be863d40762a20c644a4f3619c7549991f11a19445b",
561
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20.php": "7e09160954fc59c77890f28e75f7ce8b75fdf08b9d5461c5e7dc1f49bc664bcb1b7ac74e3f5437657a20729c2db965d968060b27309a4a06a252d22b7f8dd4f6",
562
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20\/Ctx.php": "f19f61e54d42bf154182d203594613371f430d7c78f5b8229cb9bb94e19e42bb9a8e434639accff18497cd728ef391a1128d0145b8958f8d4350ee340340df39",
563
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20\/IetfCtx.php": "41ac6fb53ae553db13ef5c12d8c1c16d017267f130e8a00e9c2a8ad10d723aaee5ee08f2888f016babe4d712a0f1fa50012e4ebe6626b34973c26ad6728e36da",
564
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519.php": "5404d91b94a8e6c442c3eb30b763f1dd0c1234b845b967b7048f71d5a0b6e1ab287b44f43e06ae5bd6fce31f78154b8655353d7df86b6ac699a41200b9df33d7",
565
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Fe.php": "937defa56e99d4f38a81b88c03c649deca5b0f41f5d0b8e340cadccb34ef0677563f18967bb9f63e9547137a2a1827f9e37c62005fe745aff3764e39adf86cee",
566
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/Cached.php": "3db1263681f9414d237a8318c08ad07bbe3279b7310e21a40c22033f5d90eb5d7074dbde430eec7910a8d7e4286fa6c0131938c92045520f56fe6acc37af70af",
567
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P1p1.php": "d757efd8638aa0c1609d59c47f3b18608a0fc6e1e5bc3cb94f16fd3fa2d6125872a796f4837cd8b940ca6988db92d3c668bba684c721476ee5fdb6fb6d50670e",
568
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P2.php": "cd70c62efef16eb21967d5bb0489dadef845fb3cd4faf0b1bb7d080a8685164b2b0fde4d8865dec22037795eea6df605dc2151f20871c31d5e9e0084f0066219",
569
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P3.php": "56c14b848691af72c00f5dcc3d31281a300d0ea9b6ec273ff929cf30d2279cf34d51891729a5b095445fffa8a63b8c8147f4d1ea24935c86b0216b3c40aa4241",
570
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/Precomp.php": "f6c53daf36931b4289248a231da52759e91e5c38af10b2cb89a1bd7e55d29e316dc77d144fb9e52ca1cbf50db84234aeebf13603c62d58d5b3ee58dc19cc18f0",
571
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/H.php": "c2e48f6273cabcdc40f20fd0f7ea55975fc9da5a419b1c9cb834b694c858533f9a0d3e3ce768b532ea6b69ff5d2df1ae4c246a15b7129916d4034ac497ca2be4",
572
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Ed25519.php": "eda61c7ee144449df655ea9a9142d0b26624644542012652598bdc51493f61938c13651b32b05e942d31d3cfbfb7899b8621f4ebd8a5909a1ed12704b2bcfbca",
573
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/HChaCha20.php": "b5005439c15ef7aed83b566e670053819f59c415d9c5f607550c756622d7161ca32fe65dad8f688e6a292f88192637260d859302064b416465c08bbf7f6dbe13",
574
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/HSalsa20.php": "c882b541376c8eea8ab3bb63d8b51dddb345cc45ade8d5d264dbaa96427f72f0201aea828e696808155da7a978c4a1fad09723d42ec393117693e48187cf2a4f",
575
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Poly1305.php": "c438e61d6b330be26cff863f8b5c42fa3284d6e8abdd1e43a2023c2695dec643d2641b2239a9b0fbea1a34e9e8011d5094b4eb024b111b6fa903a1c026328747",
576
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Poly1305\/State.php": "4558eb5b05c7664408a4e793c2b85a4c2593ab8a1118c3b89db712f337a12346e2e882a0c638c32af733f5589a310b4a528c9bc02c136692ae82f3ac7e6cddab",
577
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Salsa20.php": "2836d7eeeec597187c456ec790107a5dc478a1f79c1c1e4ede4314bb830f865f189e048e3dc55742703e2fb7bf31275f515cca57ab5bc47332961bbdcac7c490",
578
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/SipHash.php": "345fc6b9f37659ec9830c9b3bd1459257b81568dc73809c023c551dd825981b0da6b150b6b7cd57b00097ae9cd3b742d730ebfda2d2e459ebd7d5257fc967156",
579
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Util.php": "81aac8187fcd44a14ae856e34d7337c012ff3603c606e1b9ff5a95fd5cdeb962725b70672a57b600d344fb2f34aeea00ddc8f1d4d8f8888961fae9171f8262d1",
580
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/X25519.php": "d11fca34bc3d313e365ca47981a0efb880a3cc8be3e2cb00da7df69de8d52f2f1fc793c1654cce1385ea66aec40eb5339c5cbf120c127cb399b72fe84b7297c4",
581
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/XChaCha20.php": "de5d7f3dd4402fe3c99b66a92fa4f0766beec66928c8996b3754b2f7a8869b65035c6ebafcc8ba2fe9b309adf541e89eba9491554f1ba548af6139770aedabf8",
582
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Xsalsa20.php": "6abb7e9217d5463d373023d5aab49c41cd3e1026835985dd13256e68374ef63b90b7dd033f7fe14ea60229a98e5e64d0d0f23b7a382ecc9d8b41746bbe3fec11",
583
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Crypto.php": "257d3d05f1acc745b21f25652ddf0b09b5a68b2b75abaa9216bee10ea958f8ed1d3c964dda5326216366d9cca4a71e8678c23994fd07eca2582e3d8c8aa75500",
584
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/File.php": "d7cce5179670dc18544eace3bf8b8b9863e62fc9520526da2870e45d5d400004fdeeb3c0f44a90caf0742f89b633e7fe3f996bd5f89af4c7f52ea37f429e453b",
585
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/phpunit.xml.dist": "0f8b25b7effe47068dfafdc568c3298d7c5f2d4eb1abc040c8dcda1b0daea8523a1f82d8e00d6475ffde3cb566c18d17ccfd07db59c72bda11f40d555b692d32",
586
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/psalm-above-3.xml": "5bb5402c96cd45a0d88542bfaa12ee03c26c3242f42f1e33a2a32e5a16143e6b66e7dd4bca7cbe30f73ee9eea7e72862e356f1bc4c4daaaaf1ebcb248d63b230",
587
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/psalm-below-3.xml": "9ef67d2d8ee81c94d0ed80d592894be0c200045b295178f246865d12a54d963e97b4a8d75ab88595bbb73d74c75ab2275a54b9a33733bea2d15487c5894f515c",
588
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Compat.php": "1c233a4b931c13b00e243f699eed9e81fc683846e089a24ad90dd17f786bfdec9ab32509eb9666074c9fc2a168ea8d411144274e6c4d4413996c78bd3c536515",
589
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/BLAKE2b.php": "27fdd20dc655cc7f58454cfa97fb974e4d99f6da5b97d79e669d41b9c5bfd1be18fa34f0ef7a353731a3bebb11b56fcb68818cabb3d8ff026682e7b39106c6f5",
590
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/Common.php": "c8512fc6d570a3198107493c7b8d20f38539caec221adb14161d7efbd6ab7d1d0bef4cb5528fcd84cd9484f1a9e0fbeb45aaa2365012680b0106ea92f8873281",
591
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/Original.php": "4564f7cfef60c318abe626832bcd355cffbe04d020e04d18c5554fc1610c4a1b0ae8d1111681e2a458ae0b9d7ef3528bd62aef019fe3c1a3f9d28b5ae58da86f",
592
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/UrlSafe.php": "dcbd158a52f33b9c64c8046c8f091d9af95657a562ac694c9ac0beb3a1876d55a3f23cd42c1777d9cf2a55cdae38d88ec54628b2d5fccd6befc92d4d51eaca2a",
593
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20.php": "f0015a4f95fb6028c015c954992233d76ff0b07c7c60de6347e7b7ff1cf704e80de4ed5b3e236502fddd3c56071aa8012758d905031d6154f965c4898251329c",
594
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20\/Ctx.php": "aeb8c31a1bb46b8519f280f23d349fa93911bf766715c0964c0a901369d0f0599e87c6e13459734f582a04ce74d9ba9f3ed7553d4b7214855a815424a8a8610d",
595
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20\/IetfCtx.php": "d22a84b5bbe07297fa80c989e93681b27b3ee502a9b77b63e2b08eccdca03cb98c39834feec5fce3cb0e1915f2944b06e94fe555da123de982fedc61b30c1f91",
596
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519.php": "b25ba0383cbaa00339f5cbaff6b400a25f3bd4d244d2fe70a08b987ead0ebb04a7f51b9476baf01fea5967610911f809114e39d21d4e278a9be72b48ca39b09e",
597
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Fe.php": "0fad7d424e7f3fbc0abd6a4f9113c83523aadc3f9d3423a94da0954f56d31705ca567ffad0972794bfbba00c4909c8638130b99a983cc52022d262d6b7d145bb",
598
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/Cached.php": "58ed8181f08dd61076c0ae9ce176455d951de04b9b1b03260c593d009414e9757d9120ea9e94040ddc1e0867f8a6574dc55e3acf82f946100d03d4506c9f778b",
599
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P1p1.php": "63b5f5a6c7061826799c2e3285884ac2108adb19ea246475b98fb68a26aebd694eeba56191fe15fbc1a9ecb9b85c139bf9e8b65b4456b8fb42652fcf29097fad",
600
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P2.php": "4caf0b912ad4bd82f8c447fc25829177323ba7af6d2355a7709b8ef99a855b51158e5252a1739cf6e9ae72b780e415af0cf3d510bded3fbce3542c99cf057535",
601
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P3.php": "5bd84bc8087c48e62e9d29451c0165376ae8486ad9288556c81e4cb897822cdaf95a2df6093f16e2a336839d0a4ea7c1535361bf041d8be0fddeb1eb245eae55",
602
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/Precomp.php": "a58cbf2c93a75948b4576395ba1ebcef5a35b6dfb4625690e872010a44edd92939ba146b145cf40bc2cb6e45da0e19f169a45b575d813a70428f171459ee2d8c",
603
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/H.php": "0ce669e4f370acdbf6cf27d5a525b0a3a3bb7c794b8a2ccc7b2f3a3670fbb048a8493e3e6306a5f148204f50a5458d47ffe4a2705520e15631b02d45d39b0676",
604
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/README.md": "3f50765b54a3cf172c9cdaf2541a54273b811df61330af83883de5309103d6309a0900ecbae056f60aa831e438543c16c809fe183cc15c6a2f2bf15f6f910cf7",
605
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Ed25519.php": "89eada60bdd8739af528cd74b771a2ac04e36aa3e588549c7e8a82d2267a4df5eb4ef13c806185ac65bcd33fcba0f49a03cdbc03f143ffaa576ba6f4ab5efaa7",
606
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/HChaCha20.php": "e221d5f3c4818256a895cc05a8e68ae2b3cced7eaf4e425f3c373d59b2cec31fa7b498e5e42af7e374e70c3a176f966da3cccc4be97b646182a8bef2817986cd",
607
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/HSalsa20.php": "05e5376ceaa53ddb24971a43ded855892cf37fe0f03647660f573334ca79e61edafdd511c418cdb3d42e62298462e729c69b4dae3eb802c4749774b43d659536",
608
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Poly1305.php": "1bc3f6e6323d44ab76eca14cce61e7043ee98d8f7c50f29a5e29704c35adee345faaac767af588e1c6566f5732c1ec40ea815c51711056737460c9143adef1e8",
609
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Poly1305\/State.php": "9a69f92ff7c3e384cd57c0d5fddf9111d57abc9849acebb329ffd1ac4f53e539e1548140f4a430f628cb378d7fc980494307df13e4d1837b0af377bd7811c6d5",
610
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Ristretto255.php": "c4fcc5c22d8ece4e704c847ca01ce6edba7682fb2b9b91d74d664a204cd5955128c3bf8089a855312244f28c4ef6953927832ed989a03edf6eaec5c26df1722e",
611
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Salsa20.php": "8c2ad19b46f527ef9c091cbab17f64d36610745ef32f778e3911e1aa2a142e88c0f6e005ced046a678d66982d2e9ca48677f082697af3999cb62fecee4d800bb",
612
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/SecretStream\/State.php": "629c6f96a7bba323ddb8eb422e7048839c188560932cb4306b9f11ba8a2b15afdfc037fc14ce8725ed3efc72c26700cf6cd2ca4a85870fa885aad6b6d57a4a0c",
613
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/SipHash.php": "6f24cd7d32eb80c943461199a0937b0acdf01560542c54ca916fae6843c3dc5fa65d751380434508aa50501f7dfb6c227e9330996956c4a8c8b32b6ae55bebba",
614
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Util.php": "fe12c7259ad5daa7eecd8e199c77f822e612333169878309cec5b5483a9bcc775261c344a31023c2741d53f37f05a0f6dc6289dc45c7d7b8ac7fedafd5458d57",
615
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/X25519.php": "ea1d665ec23534de7f18c4f48094de4463753baf8b9ba011e38b969873bbaaa32e6b90bbbd0597baed3687c28e37fe394c224a229d734671b7d7e03197d039f1",
616
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/XChaCha20.php": "56d827be22c68fe9a2cc01b9f5890846197c5831c3c0f129d9b8c522391b7d7391a217a2dc48a4bd78e81c3d2f3bd8187546d311f991148fdf43a8a67730c81e",
617
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/XSalsa20.php": "c0367d97622bfb654340a6a7948e8ca4ed399d106dd8b27169a9f5d9bc6532129548b4dabf9f12ffba654f490b8adfa07b0b76935bda15705560feb7c590a3bb",
618
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/BLAKE2b.php": "97cb339b44cc54299394b4fc27c8ab13d5a8d48aa4c8fce71733a27cea5d3226df4341bf9722fb4f4ba71c38f5491d677774245d75bd91a693269aaba0487036",
619
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20.php": "da693dd0be25c739b477673933d361ed4b2f83110ae98f7c6805af20789fb4379b4b7a4ae34aca588666cfbdf61c2dd5776f8a4b1ee0215dae64ea09c6479a10",
620
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20\/Ctx.php": "621194fbbe2eb42c04c9d94e45e3a0ebafdb4cd87195b924705f8c2a9e54c9dc52fa6dcb39967ea1dc4ceeb6f2d20659a1b0aced8035529376f6244ffaa96f07",
621
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20\/IetfCtx.php": "b4a0690f9af7ace9fb3f8c10ca78989573a1cd49d3309f9c0011501daa3c44f7b616868e417096076846b19502ddaaaacb7c85f9b5c8622c57e4882982e09a10",
622
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519.php": "fd10531c29a88f84f8b7de7c09a0e9e66472658827bcbdc55dcb1fba54f620b32dfe9359788e67abe4f6ffed3e4841e6b74939d7504188cfda243512a86c7eb4",
623
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Fe.php": "e6e5ce11b327d42167d51d2fa462ca6a54bf180229261af9ac1189fab30941148136ddabfff606dcf656985cb9da9bee93902f1863a84a3e5d42bfccbb0111d3",
624
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/Cached.php": "350f529a5a178921a2f40818a1668c3effdeac12b9b8aded2f57f1654343d0f7f535c780c5a271d9b7772969fff9381befcb85aaf676650c67b6e583d616c064",
625
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P1p1.php": "fc8344d196cfa17fb61ab576b0a73f0ecbdfdf03de53d669cbf56bf10cf13eabd8c8a83d3eab7d9f9436b4dbb8d0785f9929c190059e0695579811405f3c840a",
626
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P2.php": "6c4051bff3e25a7863fcfef3b9c1f028fa8b94d301e4de5dcb6654c629bc95f44978fdb697698375e3cfd1dfb9ae6a3c8dfcad0bd5138e51cd5d5315b5e5b788",
627
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P3.php": "d6ee2e6bd34cba83a2025bd79e2d8a829d39f148c65ceee5a382662ef25b1c684552e0486ca29215f52d5d1e140176bdf6e2c40febd55970db55675b76d448e2",
628
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/Precomp.php": "397b94e8292ad4f09cc37f1b08a7f364e12d6acb74f125ff0148c5562631f632a2ecc44db517cbd5ea61865e70732e6223a0c736b831c751df859a7d2afc4ae6",
629
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/H.php": "7bd14df9e3afbf8bc2ba27d5faf6ba72f17eed218cb7e89f4a458f500f6d9a60c52eaf5f1fd656d7de492246b0b0ac3d5904da319c5d85b754c64ce4b1f1b433",
630
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/README.md": "3f50765b54a3cf172c9cdaf2541a54273b811df61330af83883de5309103d6309a0900ecbae056f60aa831e438543c16c809fe183cc15c6a2f2bf15f6f910cf7",
631
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Ed25519.php": "30b970fe798803452a504ac453c70b5a2b51cf3094639dc58195b3c8e44fc37089c58bec2337d7f79ca60c91c4951af5dfa89e9dfbe3ae327084a806a6b8db7f",
632
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/HChaCha20.php": "d4fdd553cde5a1ff277805bbba85128e3ea59e4fc32eaacbc8502414148933c760ef6da06fd967bc594f9d22523c62e45ebd7cc9411ad4b76e2d76c0fc2c00c5",
633
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/HSalsa20.php": "8bbde85156bb88b6f0f14cab67840cabf1e1c456f9459edc145e09907161bd6fbea93fd37f121678064de6922102e78789cbfa3c2eddfcb40b93178fa3fbab6e",
634
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Int32.php": "325772c5cadd6953316e83afe2a04804041292f25cb16e6027ea230e20aebcdd819c937977918161eeb9c43187fc105be2824949c9d6059e9c0a39e0cbc42219",
635
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Int64.php": "8fde2b57266d78e8b03d8c3f89a1fbca3329bb6d0ed4526b3c6dbf5a0e92ef9d8e9e3697cd23b7eb5f7524fba7474cc5a2e06f1ba6faa04f7cb8729c985a5794",
636
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Poly1305.php": "f0cc2f5cf32a37ad6c3dbaff1a8a155ff334995eab78ab42f2e5bd950390babaee0c1588e3f17d4e73cf970b8e3c34f536096d7da23182f526b0eed704e3ecc8",
637
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Poly1305\/State.php": "8656ebf7aa0c2c7e8cf01546a261bf5e9f6c374eb5f40f8133bcb33e35bda2f19f47471b2ae6af6224df7ab9bf3886cc43b88049e8ddbe54b8dd129b28491129",
638
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Salsa20.php": "bbb3dc0a30030d9c5f5ef1ef63e36f9a067d67891185b9620ebee17a67bee31a7abc420abb7b82f38e913b5de54d235859f0e8f5f718d8f02316f4fb03e24b2a",
639
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/SecretStream\/State.php": "69d505517dbbdd2e77cf5aed72673edffa2aa008e70325db88877ba5673ac3ac070bc4c19cf13707932b0b4d71ee0a9b007e06a0f822292ec278a60def7cf511",
640
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/SipHash.php": "8c3c2d2e4c656ee6f7af729856cc4c79918ae2e09a167d6d0cb92f7dc9240c0bdaa36e65a167f5b63961d9f9ac4df2c19e50c848e5a6da5855566deb5b9ab8b4",
641
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Util.php": "d6ff44eb1015687847600f8b7f6a80974f4de1cb80224ea7f733e908fd53ba2aa669b97d891fe89bf0bb8d358c15a2bbf0661a779e68a715cde0405455127eb4",
642
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/X25519.php": "9e2d803c100fc9a3749100dda30fabe25c6ec59382be64f9995b6505e1652d5b2762111f2243b69316abd942c88106fa5239adcae842971f22fedd8e3aedd954",
643
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/XChaCha20.php": "1d4ef660701da25af79c9d4af2f158e3f62afbc1e5c2aa062f64b970dd33378d5f67c9f0172991985ddd65a976759e09f4604ffdf6ae158bd8a98f4e97af851d",
644
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/XSalsa20.php": "ffcbccb7d8a1d0262c5e74cbc679022bbcf1acf9160599ce2b92f66e261996f0e93b419231fd41ca95852e09b7a892dd8e98101c3426d30cb294f869908ee21b",
645
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Crypto.php": "1af076765319483b5e0c2a3ed9d5a12133fd41b7172cd15073da3723200c41cdf077dbee04f1e4badc2b86ee5e23965dfd0e8f3af3f52b3b584ab2f775f64cf7",
646
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Crypto32.php": "9fd3ecc6e6faec645f2c5166ca551cbb4ff8430664bdb46c383da399048de42ab505a05c709b6ed0de245402a1abd701f21398252f059003a59fd55bffd6399b",
647
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/File.php": "4f2a6c996bd3fe4a07e4e1d49d2790e68798add08c4887efb3d7bdc7beb5ec2c1601b8e77a0b40e570211f7d3b4e5a5f97471f60df8b31434487495677052640",
648
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/PHP52\/SplFixedArray.php": "2adc50710dd4bc2cc1138b741cde09f225f727f2177d006ce8ca82691de0336dc51b6c30384938eef1693ae92628460f8984aaacf336815dea092de4ed1521b5",
649
-        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/SodiumException.php": "705f6e9777db6be71970f7e218339e36d50023abf723446195cef782976d7431f815a90d1ed83e32ec527303057287f890215b4b0a9a8c992a13d111e8bfb947",
650
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/CHANGELOG.md": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e",
651
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/LICENSE": "8756122099aea86ddf6f176a480c0454f2be6dd278e475bd6be7d7ab3d572162f1bd44c9f623e52e53514cb15336be6e84a5eafc8e2a347b481ab5799ebd6e17",
652
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/README.md": "b552bcb37ad765a0aba888fe43d2e2f41b5bee6c90e734c365797e74dd0b8c4df017ae74dab2458edb410630299efd7b649438db57acd53fefb1723e233416f3",
653
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/VERSION": "294108697ec66acf16af2f9518c5999605a8585058ad25dc9303029fd890e6835b2fcda23fff2ad60058f8f6a8a19c945d998e4e228453d4946e395b9aa2055d",
654
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/build.php": "485d76b827a54d8455550e8a8f8d14862f9444381da251e66c2bb8ceaf2106a554c1cd339666b1260450749d0244d6b9ba0c6d0a2220ab2411aa4041fc83f8ad",
655
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/composer.json": "e05f4af7ceef33d82ed5704be36e1b9839236d13073d0e23ef77d33ce7ec303cc2cfc2ddcd25318f1a5295bbe3b61a13bc2fe72f55c226e2f072e2a0b1959481",
656
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/composer.lock": "2b8c24986c6cbd290c0ce53ac4f773836751aebfd65a2350fd07b4cf45292ce2667a54494fa098da13a385ce7a9e10a2ed55d20f7c8dd6817f93f33a6cc710fd",
657
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/data\/ca-certificates.crt": "659e8d36bcb65a7fdd299ee008fc4ecd42be87d8ae7d7d15828567b9be44b4ed8a316978f2f7d3d5d7e96a4da0b30bb8bdcfae5202ef099691daa796318a869e",
658
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker-compose.yml": "1fe4c651e406095f0ff1bfc196406d473184bf53cf80f7c67dc79f1aa94b26db74174e0e9bc47adc95eb2a5f6eb950255c4a5cf44ccb7029ba712df3be9e6384",
659
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker\/Dockerfile": "a63d1fabd8c19fef37b90922aa4bb21fbd1094635666cf2a3a4db47009888bfd3f1ad5c34c05184e2ccc8f581971f6dae91c1ff137730821422cd482c39e9390",
660
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker\/entrypoint.sh": "2bf3911c365a271fc52d17a0aac1687abf52e5286a5d52cd34367e18651dcfd6ef1f791b54105b7742f5d691564ddca3c05a9ba4ce8edfbc68fe919e0bdf6c1e",
661
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/example_webhook.php": "336b92a647e49d8c994c8e6dc6b26670f0a58cb57d4679d0ba7177fa1f56a84a628e5385dd4c1c25a1395b1d8499e54d34eb2c20f9742a2a2a3d0cb20c36be08",
662
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/simple_webhook.php": "ed299912ca9a55170796df76b25c5c92462660b065ef7eabf24bf7f552e75fe44512fc3fa977fae2a9dd5e9be1ea28100a456de926fd7f24c32152f577f8e46b",
663
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/verify_sms_demo.php": "042dee741d4fe90d78edcd0614df6a371cee77d1a95d34623b4e558ead69378c693a33d044f450ea204efd7253e7eeee1e5a4119708dfddbafeea358bc5408b0",
664
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/init.php": "82a207681a76c9b00d1a35fcfe64753cf286d9d0122366f8c1f3009ecd6c548369d2b65d5b4e03f20faa9502b967a3bdae30865e5bf8598eba630b5f9555542f",
665
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Address.php": "a01e1efcaab0209fa7cf32ed85722ff793b9c0f750daf7d3bcd0499037dea764f2a61defa54b4bbaf602f8d0f5f477fd4198e35d6d8b47b82fd13c7a7e70ad59",
666
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/AlphanumericSenderID.php": "c6f7d381cd9901af59d67c66fbe6ace0729c77ac2b2962ce41351ed076cb39c9049aeeb72ba0e3933ebce4ab8a936b86a7e21d30a1c07b2b08cad9da2abcda1e",
667
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/All.php": "5a6381d1492e2ebd1498fb4371b55c7e112ebf2c898e1861d7dfd2345db8c56df221795208a29b2a0e42295846fcf98f6a60fa8839df7e28fb66b9bde9226ce5",
668
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Create.php": "811f9227ecc5acb172e8e7120541227de0bc22cbf66a41490b743b3e49647a38889d5cfa5d64139b602572f0fcc0fbb96e3971c78801ed9acf7b50db2ab7499c",
669
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Delete.php": "e3cde9f67ab7281870c7399c4e76ff5807791b94b595567f56ee4ee494574e0f6f282a8d0c024c78c1709940198460f386ab8de6118a85de7d8a52feea0b0dd9",
670
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/NestedResource.php": "209aecf9e6abb679b4f1ec2b59b1ce363a73970f6d389829b77802cb88b7bb368506e4d0aad42f090b715b4d4a580fdbe5c8479c02227102b4d147d615fbdb8e",
671
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Request.php": "afcba7de3fa312bc9e532e43bdcab8fcc5ca8b532c6f7bec08f94a8d7b2849467266f98af029bd688a136ac24ab2b7f438ca2fc666395c589d578e9d0156053b",
672
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Retrieve.php": "6f29bd2711e3c6b586c2bf6d9805b986a5f76fb0cd8c98c63259cd9873eeacd679f9718dd333110966ec3bb772e2ad06da7b1586bb590180770bf300aef63c8f",
673
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Update.php": "1d353ac81bc74cd57c75f01da21d6c59e053813930a0eb0fa054417bc87b6a140f64393bc04ac312b8c16803bb4c3eabae278839973f772e3202df32828480c0",
674
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiRequestor.php": "deeca798d9ba058eced71d846bd22cac360cbb25bd1271db25cd0ebdb29b1af9ee863b362849035e8a9f6ee62bd49b8415cec97e1fc01e674ad6942ac987b6e0",
675
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiResource.php": "f093051a36277165763e1ee66594056cc266fdb89caec9ab9223ae6af9add8ea4a20e6e3ea6fff4e9625fcbb95f430686f1f89db36f981d7d54034d79bf397a4",
676
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiResponse.php": "0d292d053a85224f4ac839f54253decab0eec5ae9861ca95314e98cad0fec2d2f0a7e712a8ec433adb302b6702d69262c8866b20fd08d67b2d18571965bf6789",
677
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/AvailablePhoneNumber.php": "7c82ca4fa28264c4fdd910c71741270657e52cdbc760343339bbb7c1d5980d27b7af476f7e1bd431926d428dba685a6e34d250f9678ef0a4e3cd8c4b06289e55",
678
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Balance.php": "333bbe5f278ca247d8287c8da5cf3b3f6a96c896a82e3c3b54d01277e3cdc82dd5bbda2a1253fb473a29c49d3030b73b24eb8231cc34f85b0a43bd853682e000",
679
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/BillingGroup.php": "60d9fed23d1520237a50a707986709f3b700d42d049e4070a48fbb50f257a98eab779f45a15939af3d5bce811014c01abbcb86fa1b9ccc5b89d55f44c4b1a308",
680
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Call.php": "eec97591c5e7af2b057dac6e6498cbb2c1fee0439b1b7f31c2d879a5a0fdb5a3eb5ba3bb7e3c5a9195d9019e9df82c99a491ec52f15bec59b496435c0787d43e",
681
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/CallControlApplication.php": "fee499465ecfdd2d5aee0479d3770a80219a5837bed934e0930413e6dde740be21bcd965216c782e0765ba18fd71714ac69a5ee887497845ccc1bd7797d6cac4",
682
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Collection.php": "ba4afd20a921ae7c838a74bd9efcc4e468fc12ecae86b2222f97c9405d376a77533f55924bd1d577429825e746ac59142f6d4576f4d446cb3757cb36b65894fd",
683
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Conference.php": "ef9da126fc06537687947c8eea71fc34a53a7d44607d60bcaea7d8c7f55e76a94a9d7e0057f9abf7efb1f4f270680cba042112a127c2c487fe3c617c5102be29",
684
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Connection.php": "c5f43a62ff80b2e91556dc63ad2f78cd83b4fcae4a7a28ede36388177591fbfc6c20b244f6fd4e540cd9401e34b04946bf422eedfce25316e61c89f15de97665",
685
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/CredentialConnection.php": "fe9d8b7b34a24f5b3b83d6a2597359fedce871db3a526124832d4bf4129e7515366ae16517b8dae259305ae69f95655aaa8b4710a9addc23fffee0e70b70b74c",
686
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ErrorObject.php": "cf83764f49da72bbc816c8741644e15b9a74481145c6c0c11c390221ee4c7ae485cfc09d77db24a48b0756b69c85570242bb2b903c39ca699e636a299ec4dd31",
687
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Event.php": "4e4ccaef81755432630c46881a958928c8b633ef1dea76d05f05711da17f68bf6e5b7b77395abf297b3ab128c065da7b4ed38d1be3a45306eb6d7a1080e72994",
688
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ApiConnectionException.php": "b2a920958f3e1664a6ea5c5f32c73f9914b3f59d8a927c4e920d385ce87a6676475823729f203b09f5530da667f52e3dc3d4471fa498277270ee9360d0797b5f",
689
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ApiErrorException.php": "b775efde92c04d1a53dd3f948f2efd92baf1f1dcb5092ed0863f37bb71fe03052562fa89349b1030f3d27a0dffa974ee47c9a3655b40a3941b05e721e7fe97c9",
690
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/AuthenticationException.php": "f8154528a04642cdd24f3de876b1a38d6f97e357d36badafd39e596ca739df7fb77f4259de1efde8bc300f126b20f6e242db4c1e3a25503565df579b62676ec7",
691
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/BadMethodCallException.php": "5e6df108c1df11bc1275948d96829f0ca6ff039126934ec57dbeee74913af00a64e6a9f2b58f42bf74aebeb94596c45cbcf66e5a4afa8924b238ca63d424f452",
692
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ExceptionInterface.php": "77d5904b79a9a5b265ef121cd19d91b952f631ac7436e7896bb0786d9afc0b7ffe54c7ea901091baefa0154b91abfbb3f9f3a7fcfea4053f27cb44be2d7cb23f",
693
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/InvalidArgumentException.php": "f2872cf684dba5abd50bf876971e32364a23c9259c1e85a01575348614274453d00cc655b01c2dbf2c78c88f4a6143cb486c786dd1664204dc7676a64a9cac4c",
694
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/InvalidRequestException.php": "fa310ff5d5ea8f02f731089c27e6903d9b0e692a3faf272efd19ae4f1075a2a1219d167730b21cac6a30e705816c4230e2511fdda981fb47714f4d81606ffcdd",
695
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/PermissionException.php": "4cc209df863027760738530c5c01962702970a73ac7f11be232234413376dfd34db049f4e49305c8a15ee1f016b26f1c128312930e10cab174e80d6ba20cb12f",
696
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/RateLimitException.php": "c37157b02475d2a3940dc7d007b84cc3c86cab88b42e841a392e3ce4919e637c9b59bc7b33ad3ed8b4b32e74dddafd8e61a6f30d60029b8b1ecc82b8faad4833",
697
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/SignatureVerificationException.php": "3aaa44cc52efcc4caeaee624c070e8ec87b665decbdf00d8aef04ac857358028e4bc0495c4a86c504f3ccc6d753413c5ed685816e3b80851026bf2034514cb59",
698
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/UnexpectedValueException.php": "33504e45241779bae5e9c1d6ace82a75d545e6f7ae76f7d7f071fa4bbab13b2c23d11e59230da3c242b548ee7b5386bf4795e0d06d1719812348d1f9efb0c1cb",
699
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/UnknownApiErrorException.php": "cf5cc44f46c03d9d0de656e2ae61d7b077d123a4b6666a4b0f57fafa2033e072ceb5b14d6a47987bb14e0acd48ae00b39d4d6ac1849fadc879bcc43ed1acb44a",
700
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FQDN.php": "b7d44de17cfcd207ac1fe6aada6c24871a98dadafc4cddebe28b135c6e507634608e1b6c7052a40cc750f6515fe19c2de29864d4b9551e7002fd800cc6cc05fa",
701
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FQDNConnection.php": "527d18ad480447e4d79e567e7a91796ca31bb778f10011aa9fafafba6e769d387fdfbc306a6f1ba58e583bc7c37a9a66f1961494d3639dcdcd8912efcd0e6a55",
702
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Fax.php": "fd8af5f711fb5341e2b86a7fc66a49707bd31efabd2cd63a1d5153c24462f07341d6af618b7e82ff1faeb9bdc203f62b6dd5570d74754e052300d0d7edd0424b",
703
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FaxApplication.php": "f489a9e161565a6e7f55a4d90fc05bdc8147a8947788a757a2b5464059ff2c49e61fa26b6d1f0b43fbf9ce8d0c08328e276442ab4d2d100e7ef34e9b2e0860c0",
704
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/HttpClient\/ClientInterface.php": "da6ee5de3e8aec8ac144511858cb3bec53bfd2aa0b5ff27eb43c7f72dcdbfb1646da223cbd861db7595db904007ff4c8d6a010122547a98bc1d2c07139328a80",
705
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/HttpClient\/CurlClient.php": "dfcbf2f40053699b94de74defc4a57461c2e07280976a377cf4ec3600e6279fa9cc434060b0291c7e10a634647e1a86e67cbaaadc49783eb532681ca25256a42",
706
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/IP.php": "624821d6dcc5d30a1a08368bacba88cc7ce8b768bb3315b3f8013606e303fa8940c13da8ece0c67a43329a0cfd86d8bd09682963eb54138f4253eb2f159c7560",
707
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/IPConnection.php": "01239dc2096fbe207ce1a5a58dad8d25795b9a8a81dbdd4290730009f2fafee76d74335aa951fb7b54e930e4e9530a0566daa9ef7e99ea60a50b8daf956f11dd",
708
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/InboundChannel.php": "c37478b08abc62ca491806db6e2814c4a28a11357fef873f6aff8867e179dc8d89817ee3db3fdaa84150111cbeb426ad0282dfd7550eb815dca100843f542178",
709
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Message.php": "18acf4bf51ec27d330df16216924c65a45db59895b610a3c803ef1d09beb7d96d20753b4ec16be06ed40f2886ad46bb3d866f14a87021484ede5d33ac1a93c4a",
710
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingHostedNumberOrder.php": "ecee6ab7a46ebf03b93870017aba4ce00c10ee36342a6d3ead209078aacf4ebcb798ae129535fb15af860355b52ea72ae6bcbf0e5261a9d66224e43560858227",
711
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingPhoneNumber.php": "2a2caa5e44efc5de92ef9b0f8ed0a68af1ab2c80932f4cd7fe79caa87ca1e146af3bd0e1d16d977738da2a3af1fb3cef77081c32a0dac50bbe8ef54a108efbc9",
712
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingProfile.php": "7a561dcea7b45a4ad4c3dbfc6baa766f011de2b2dee9a23e512689b374017b05f4fcc5c3510f19111a9d8484ed93a5e05d3dc01f35d75e356f475a894596dc49",
713
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MobileOperatorNetwork.php": "d4436bfd9a628713889a37846829763909033339a086b6983eac792e9af42c0df2a8bcbd688c5c54a196d1fcb3d22aae7b45e9e18c015592d979e9a924c42ffd",
714
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberLookup.php": "cac3b5f1ea0ca30f9121849a8aa52ed2e18b7776c4f1d552dca4c3536e0d4eb96af45267bb687319a9ec715972bc95a19c7dda54c33a2701e20cff9564dfcee5",
715
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberOrder.php": "52067d9999c150fbefcbba9969b308bb6118eabe25bd08f30cc4978cdebd68fce4479e53d71ce29632133e8c69bb4ce9276301f5a36ea95bd77d29fd057f5d46",
716
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberOrderDocument.php": "007830f9c03979a7811a4e0dd0c74c4b2b6d05e05b56b9d6ceb5a6e55167eb95b2546087ae17328715e01d486c0e58e396bc41816b44866391b98d48ca246d03",
717
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberReservation.php": "988c853084f13e0d86445d6638517f84ef3d90c3f618c2c85c0bd8ab790012c3986a1a3eb3e00fef7759d04a6a1957bd9521bb8da6ade8c05fd2e02a8040f6a3",
718
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/OtaUpdate.php": "3c9579c6ac1ef6f31ff572fa3fb7562b3618182cb36eab3f406d8fbe6fc7b1d35a996e47923074428583ee3653aaff3792f9fdc47eabe1627f1a85722fd9dbf0",
719
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/OutboundVoiceProfile.php": "d0c5985f6f629904f4c95b892e329f280f7e0e13b8794d1950e216ef4c28ede7b94baa99f18803ff6f60b09d6178ad39fe5d3c182e984c2b4b57e9732991597e",
720
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber.php": "8106765a769bf3f6190783917aa923f3f7690af5b7bf971e3dbe73ee5f227b27531a553cff9cc425ccfc7cf2ac52bcfc685f3d3b178875f8fa837a5de99a077c",
721
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber\/Messaging.php": "d0aded1cbbd4c6108b0fc6e6773dbd03040af54c967f0a8aa9b2523db769317182889c882e6efe6fb0e187ac3f2919563aa6a937c77f4c1ff94e5bbc31f4d9d6",
722
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber\/Voice.php": "e7e8184351cb186fee77019e88600dcb15da0435161d1878799433686e012167ab3347d7f02efb5cd511b5d02cd7b6547453f6ecaab623ed23fac7c91b0a7333",
723
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PortingOrder.php": "ad9a683aab02c8817796e62131fa9cad6f3490d3afe231b5718b3b4f0689a535543362a88333ab808c36e9c41bfc8b7b6178be7fbd5b12f38b6d806053726997",
724
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PortingPhoneNumber.php": "ff2e1e98371b6a7b0cc5265d1ab82f053d97711a72633a7d3911a4211dacf75c08083d6629aa4fc028643c0dc929d3ab56132f6f21808b875a9ce679e56fe055",
725
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Portout.php": "71de0eb22350f649e5023b2c4a374b3d10a4beb0f8066d67482c62f68a39219d9cda4bd95d91e1df2fc215479f45b1ab79bfc0ccc2d39267d2f268356ae83ec8",
726
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/RegulatoryRequirement.php": "0658d49bc2c20a9a16ac72ea01b5306eda422d81747529c3373333facb5ce1940252387aa498d2957dec62f0eeaa8aac3979ffd84ca72308e660a1a0708796d4",
727
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/RequestTelemetry.php": "cefdb55dce61e5f276bd49f6b49e57c78085338537e56cce6fea5a81cd1d2235f1eaa78be326cbd513117be88a046177afb628659088b66ce423799995c53709",
728
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ShortCode.php": "4abc882d0dbc72becbff07212d17b8e1383b0efb43818a7eab983fd2a08c3f591a4f4ba2f185003fab0622a43329c969d2fcc80b23cb94410007a0879309ad49",
729
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/SimCard.php": "46289711eda27b37931b0d9f7e9624c114ef9c1e997ea88055dfdf6fe6dfaf7f9169b9a67cbfe48100dc4df2b73ba4d27328b0ca3ff0af3655789535ec3c0b26",
730
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/TelephonyCredential.php": "497a3dde2d7fcf8bf57b502c71daa5e166010daae45e30e1db7ebacb3a37028fc70c7cdcf39a356dd32f845664e8e9723a366fa69610c8f9bd31fa59b3300624",
731
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Telnyx.php": "f5ecf9589eaf7db991051de8482d582b36edc387b8a7ca48c80a419c1a99e1393d7f099aa4ad3e87adb4706ab62c8714dc843c9a8ce77d6fe6ea5ab929d9a882",
732
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/TelnyxObject.php": "0f45c91559ef686a3eb4ce3777ab7d43ba288b380ffd1031cc3c562138410d3582c251e2d986e8a84a2c189257ed4307500e3fa0d662a48a30b28a9622ae8ad2",
733
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/AutoPagingIterator.php": "d03ac3841bb553d847be9ea73ab9debd8c1f2c829b0d38ac4416a121ac535a5ece2ecd9943d89e720cb5abb1c907ca9b96df899a561c190ccd6843bde785114b",
734
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/CaseInsensitiveArray.php": "d5bcc37aeab4fcbbe0b9f4a9057a5654f6080ed899ae54f8ef18bfc907f244071a6693386dd306caceb6bf338883a13c7972574ac5d700aa00e22ec363932cd6",
735
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/DefaultLogger.php": "50a69f9f6ad628e489a05fdad0df811c926c957c301adb0b4b906dcce9733a0598f6c2eb126865c54a0100131dc4230a834b1e98275237ce8e90bff2e96cd0fb",
736
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/LoggerInterface.php": "8d2dc2c59af5e625eaeef0b85b09f78a42e533b62fee84717d67a4c706fbacd94674f439d3ac60984c0a3947b7d2f5a8ccfb64e071c41d063b8298f57578f88c",
737
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/ObjectTypes.php": "99ce4f7d4d4d9d43e24f3124a7c21b9540267aa160c780efe69d6559843a12948f3790b179db66282b0adda384309a793636d71aeb97d9aab0a62dccfbe2b51b",
738
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/RandomGenerator.php": "292c880420b28390e3d734c6343acd48f322db0c474f80430402916de1dcbf8e988b3d2753a7c18e763e632f474284b213ccc8e8fe4e52f00569e72728dcccb4",
739
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/RequestOptions.php": "00b6d4890b5a38f42f13ffdca556bbf1377c05c8a79ad2d6d0b69b7e27deb70252c15088458da4bbd56e7832cc6b2828e261241661dc344727e2bfb170465de2",
740
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/Set.php": "9cfa1c1bc6c012e8a7a797ba8a7893382eeeb234da73f93594a159f78b9858c984dec1e42da5a6cdb240f00d27d250e3fd6a7842d40c23513661201a148a6c5e",
741
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/Util.php": "4556fc8b785486adfb60ea8001296ad0ae7b13d785f92d545324b557fc4aad85a69ec19dbca27dd868050d64670e4e2be2e3a4f50e4aaac609b0089c0e9e2749",
742
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Verification.php": "b63d4f9d717ba204dcedd1c3315db3300567fe09563faed0e4b8f1415171e43e0068fb06ebb2f42c808602248f623f5773414a1612539a873070f461398be650",
743
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/VerifyProfile.php": "fbdf0818dbe1fdcd6bf13720f21ab6552a3ee7930c80a9adc44c3863ebb3df990b18adc8beee6770f4fca9bcda0d514a689d051c129d871eca48f2c0eccd7649",
744
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/VerifyVerification.php": "f2883946ac990666dfa62e07dad649ae0c9de75d5682857cd22419fda8926d45d504ce4fbf38896a1cbf25323a604a818d3b89f05baf58d91cef497c54d981e7",
745
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Webhook.php": "b451d90496fcad105eb4f61d5716b93878405315742c09d7c4be96c6b9c0427e35c03c1a664ab2f30f1288566b45117f87b069a3ce96d64111ef6a1ef289ac9e",
746
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/WebhookSignature.php": "ad990cd80d771718468e39aab1b06809a0efb9bb47f5ea4d42a649dbe481f5929fcbd502da6140f1438920e96ce2e4af82d9cfd810b0ddd0eaea391599685c0d",
747
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/phpunit.no_autoload.xml": "06ad2f4fe0a292902757629f5605509f32a0d1dca527550619c98a61519d83fc70f3c886b12f5e5734b1031186fd9c7fed6fba813cd816b0f07d36c2a6bf11e4",
748
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/phpunit.xml": "82ac037adc20f2aa76682878094e8bffbfe31782dc6a94e2987bac5546e3ffec90577d03715f4ce481cc977685eec9e4109a61b4b46bc19351c2cad555d7cadf",
749
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/TelnyxMock.php": "e8e93ca1114530cb7e9cad46eb20e32072934496d515a9391ce8093773450dd60f3288f9d3ba46533a0f650fe67b508d5e54bbfc6e1642443d1fc043b88eaaeb",
750
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/TestCase.php": "9945df738b56e344648cc00d3d4b94345c15d8749ce511b5095a87d5e52aed35d8e3c773276d9dde9d9fa04eada784a55e4876ebf70a198ba719c8e94c8c32d8",
751
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/AddressTest.php": "dd980e7890ad3dc1d12858f2d241a461689a34892bd780a8db034e620c23d01587996042c2c12d82333b2072bfcca6585afb06213694b7415b0b13d3084b83f5",
752
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/AllTest.php": "6031bc6fa9e899f06af9465468fb9e15bf5a9a7c1051fb52fbd383ea879842e72ba4b5347d07566182c632b5f66d5f2d4bdf73c1368a3581c6010330bff91ec9",
753
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/CreateTest.php": "c94c7e854a40716aec0e257c4d7fa279c3e941d64a37e167d4885dae5a0e22a513c8f3b018c436eff90ee045432c5e34b96aeb7d879380e9386c2bc177b94f39",
754
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/DeleteTest.php": "02ea2d3adfd1d83770f10dc42cc2c12c28079ca80933fbe02219ea79fe7eb6958d2b1d76cb7a0bfee9e308c01efb1eff61901e22d192e15e89ae67f7edcabe5e",
755
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/RequestTest.php": "f6e158958616f0637f827b94cce168e873e0d3be09e4ec27165f984af3d89c0be4d5d5cd3ed66df5b6237bf183003a0de1c652f599827fd01a2ee7ad47d5fd61",
756
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/RetrieveTest.php": "b26b8f61eb3cb893ce4ff9517817295fe9b727dd570b1cf79ace36e16902e0ab9f460d6b65342afa28c59236b59ec0ba0809e1cee673f69ea26489fdbf5f4f42",
757
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/UpdateTest.php": "6aafed3640a1173822ac9a26c002168eeef552f9b681fab9ec4f191df4f988a920d8c290b2f875c02596ef613273ed003e4b5a6bb6e0bc2760f54ffff445cdd1",
758
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiRequestorTest.php": "5a1234c4a1e4107aaf970bf87f0fdb1420979dd575a548e589b046cd7feea4dc914f25bf15474fe5bcd9773c94184b610d06b309d48639964a78e6137078cb5a",
759
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiResourceTest.php": "05562966c7ecea541b0ae95f67a11d9e2b86e45439b436b319e252d5998e0eb7a6c9b677e233572fc616caee856d9764b56feed80fd07cc1bec0d861490753b4",
760
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiResponseTest.php": "6f8d458b49e34df5c0634276659fd441e4140fb4dade92b384230e4e2b897e0da6d0e82c373b1eca98770dc3396ffc8b924672ce2141426706c624d00ffc7af9",
761
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/AvailablePhoneNumberTest.php": "354326429958fdd199df78d11bbc582a0988018b8f907d93808cbd53243f50332482c0603bf4ff12db2a8977ffe7e663ea9d6e8cb5f485aece0d46ae8942833d",
762
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/BalanceTest.php": "8f866f88a8a59754e2fce7d5fe2a0bf50399fd21711cef171873a45308ff96f929b23163495c273e96c9894b7ea39ee5149c45e764fa0de3b51807a329c674c6",
763
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/BillingGroupTest.php": "4333c81ee3ac767fa600095d95f324286d289c7e105ab251f635d9a942e75c418bde60f96c5954ae29dc152ee5fe7679bc5a8b67452f5fa1f59a411dc4854c69",
764
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CallControlApplicationTest.php": "2bb4f83cdf82457840352c5beaaed8963aba1dcb59711e310d5aaed0d35429730796b412f1aa4e85d5be5a2288ebdd12fc2be9ad75549506d1a613d604d20749",
765
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CallTest.php": "50f830a3a3c28953ec53c244d22381910307513ba18b7199d5e7bffc5747863e4da975fa972114b2f8a81d0c24afb2f72df8315010febd8d606d086d79d82165",
766
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CollectionTest.php": "9e742f72d8a223e64bf1a25362f9a28356c0b55037811510692880a359ee5e39266d9e76aa0832de39530e26798806929fb9ab9795a04651ff316f609e2211f8",
767
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ConferenceTest.php": "4e8ab0baaf21da65e3942b0d98caff11b7a30c24bae10ba546b82f7031d7a85b9d88087f9ac8172e69546eb7635bc1cf8f39b509017b82116e0e13b557bc1f7e",
768
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ConnectionTest.php": "429f80316a563f45783c87db6b6d3dd1564190b5c6a259f254e91ad8b71b2aa5e6ed40b9cf1a98632b7c89b66441e07f0285d434c78dd9729c032c7a4891d4ee",
769
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CredentialConnectionTest.php": "a1c37f36e418debb034faa2b7df5095eee175ac8801baed517089622123dcc4af642448aecde7aa8b19cf67629de087e4995ec816d791b5007923ee614590c1c",
770
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ErrorObjectTest.php": "97344e9d24c204ae429b856d0b32299de4380ec52e9cfbdef6090add25355d268e3dd3ec35ae7c5e0893f5bb204624930d1a856932243180bb71b40e5a1dc08f",
771
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/EventTest.php": "5152c008cb3de14a47586eeaf3ef778629b2beef87fe154a2c40c337c3f918d664c0ea44d8339e22846fedc696fe6b98f0bb0b557d3f88a3ac62990445a55ec5",
772
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/ApiErrorExceptionTest.php": "7d54379e1ab9f7d6bddb721ea1c284a8d023674e24e99d115f388ae367250089e10b5962e2bd091e3ebbedd0cc83bb4f821eb0a986ae11487e341569ef7f5c6e",
773
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/InvalidRequestExceptionTest.php": "a7da1818af1dfb3eaade1e1a122a8a3224e03a557396e11528af75b13cfae07764f82a282a3161d514358b4c55312193c73b5a8900fd70463fe0a66b448cc9f8",
774
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/SignatureVerificationExceptionTest.php": "1bb0fd1563a5c91b78b02e4f66f3cf0288986f546a0805830e0d4ad1ac449549930558caf86c06cdc578279323c43e4739747961065d5ddfa198dbbcd9540599",
775
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FQDNConnectionTest.php": "0af10bfb2398682865c4ee72cfb34425fe73b0fd20c86b51c61c4cf72f8c4d39a4ecfa21e4ae2e07a67fdf956057549f0c8c4f77e27e65dc1b75dae8b9b849c9",
776
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FQDNTest.php": "625370468fb338819fb823fbd38656799a8750f5093eebf75c02cfb592969a8635a442ec2febfe07705a5d6feea362b7644c25c67ae653a245bdf55fc178a2ed",
777
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FaxApplicationTest.php": "64a60460c62983cb0afc2c76880628e16270f14b0b761a8d62766cbe4c0fb33dfc7bd93ae0cb62de25a8f2b3e1994826fcbfe300ea37353f398c4cc8ed7dd62b",
778
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FaxTest.php": "a920c8ac18021bedbbc4972109afb0cd0afc16e5d86df2fffa2f8e0bdf837e5684124f926f01daf0bae439473022899498441a770ad8cc52479da3d012f1ea1f",
779
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/HttpClient\/CurlClientTest.php": "cff15215b95a804e4ee233df60671c5c1e9270f621025f6ea7cd5a0bdbb55175caa6c43c62e176300bde05c9ee90d84efda0dcdf0d0b5dda4dab2a47d1a669b7",
780
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/IPConnectionTest.php": "6e034e287616ac89e5059d337c682e3fde010130f4403dc76fe4efa12742c40dac114ddc1aaf7ce9e553c597d9ac27170419c5e33fb1439c31c6b585953ff1a4",
781
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/IPTest.php": "7ff33e91d1c7b8bdbef1ca1f5e373150a05f709e524d5a62b000b5c8b8d697ce42306ea8df917305d9ef2a4ea19f797ca28e2f8d0d5f9e3e31c4ebe5eab55ee9",
782
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/InboundChannelTest.php": "c430f6df3eb5add5bda2342e4b4a3acd77b33d74758516782ee0a045d75e7387aaccf36017fdaef18d71cf8865a28faaa0cf07a4f31c9876858719d84d479657",
783
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessageTest.php": "08ae5ad7b98362fa7c1478254f851078ef7e9a223c74f3fc57619d2b9c255259edefefc400e261cceafce7072fa7457b8c1cb4dc8dda29b51e432f6d274a8c3a",
784
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingHostedNumberOrderTest.php": "f8f8ac7271fb01b07815e2a92d7a0974e4320de63942eadc12df307c9458a7cbda7ddae505a731c491e4aa6bcdda7bec04786890df80dd9acd422593f2a02c0e",
785
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingPhoneNumberTest.php": "7827d12be3191d1329168c6b277899b81df17aa18b775be538b9b29ec9a90868969c05cf61d53715c42105b92cc37977270c1a7b78bee3d13214d8ece51172f2",
786
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingProfileTest.php": "0949c56ac67ee6f87854959635dbd003391e497325305692784905987d114b399e4c648252f314bc1147e385daf4e60198cbfd6aa940a6cb24992b8cb5abc24e",
787
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MobileOperatorNetworkTest.php": "6cdaa23aa8cd0a0e9cc43b6f17c86d9c1f7793f7eb30b774f4a8ae9754488e59e0c180823c31d062abaa356578a8718c65f367588c61015e5e36f9f98e7a5cbe",
788
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberLookupTest.php": "e03a73e589abd73cf52a637dd7d273dd2477533b66bcb75685552b77b47f7b58116c4637477da7f9ccb36a408909d91d3f0d3079396aca9bee996b862f358499",
789
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberOrderDocumentTest.php": "06f3e8f8e8dcf5d8c96f25a6f1888d59e9433654ff060701bcc5cb9f54b07357bb3606ac17af3e3913033fb639358df85c6d5c55bff114407168333d7d49cbec",
790
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberOrderTest.php": "176ca2e94df05262e8a43f14e112fb62108ce886bd90a690e8b907881c696e35bd223f08a4960fb58ebebd20cd42bd4217ffa14132e53ddac260926c6d7e8842",
791
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberReservationTest.php": "11742f7449c279908848fd493817731f3f1343895e16d3426a7a7f9fc3d4cc27e275a858e16d7efb8e9c18d32de1ffffc92929e8e3ba277157ab7304c3023c86",
792
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/OtaUpdateTest.php": "14830affab4936804afdd723714f2dc76c520fc2fd6e4d36d7bb255ef566836eafb6b29c18c5adb8785eed39f4bab030e3cd1aab1ef0293d9660b38a10fd6a45",
793
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/OutboundVoiceProfileTest.php": "e49828087e2114fb11569db7387a0acb7cce8bdb0cd655b280b567445ba2dbf16f8b66a88369876e7a2530fb282bf5a04be702719adf4ace871c2b6df8fa5edf",
794
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumber\/MessagingTest.php": "b3c5665f4661624f58f02b814ab1edbee5ceb8c26643bd356b486f049dbb498a44da0af43daf200890c79acad16d51c169d7aa1a2ad4befe074b0ac539ebe3c0",
795
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumber\/VoiceTest.php": "af08b444289d0194437c414916a8ec9285b98413d78e74d1c832b9b45583f9037832a538751628b5dc86b5a13c40c63e9dd360b719501762e8e868fcaa6fb215",
796
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumberTest.php": "7a07f41165e45e5fab268b0e01523c2f67f0ad146965c401856582c4b4a3f63e53324585b1785b41cbeb637d8e61e26e2bfdb57feaf6c6c04cc33be8e4864df8",
797
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortingOrderTest.php": "48d2ed4bb9354c772eef6484a0c9a195487c39f26bee3d143ddf64ae7da15e42e5f280a3e26eaa280940230fdee52ea09b7e5320823d4baefa73eec4490537ad",
798
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortingPhoneNumberTest.php": "476748b7e467c4f5a648c394eb19dbf297aebc2c16357c946dbc4f363241639dd1001985a7bb21166d5bc77bff1e31edce6e379dbda10f04406377dafcae1bd5",
799
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortoutTest.php": "cd262d5eae7c9ef9ba8c76856ef2d4f604484e6bf8646e9ad5231e89f5d45c8176a8ac33a757c53e4be8e2c98e6bb750c6041aefe8b2a589ac1e70a2db4493b2",
800
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/RegulatoryRequirementTest.php": "daa2836606e7c3f34fa122045e982e42f5da86b46f367ddcd7fe9b12e2a3fe5d472d4f38403d4b63aa0c58473d3b5901b8dd49b93a56fa3e76a0bdcf88ebade0",
801
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/RequestTelemetryTest.php": "61190b3601f7c2c72f55e9b1634cfaf11ca53231cf4b5f854ab14859b97f5dc0f07f6c95b8f7c3516ed253e13768b7d4ed9c1d15d0772fd1850eb894f5821152",
802
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ShortCodeTest.php": "f2e867e0b75d8334ccce51f7bdce842b350e7028319e8d388e0512b5e119585952a54ea79762010f12de8ffcd1c440638ba5300ddbe59adfdcefc712d8e079ac",
803
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/SimCardTest.php": "7000edb2f9b739bdbd44fceeee2e4a16c708efb22c7e38483569d5416f3c107bcecdc759e2e6108553193ba99acc542f5bf3bc353ee1428593a81b80d89ad7c8",
804
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelephonyCredentialTest.php": "1f65bad536cd49b2df684db54533b9799856b32464b80700bed5008c9379c414f756d075ab8e231d83f5bd9c1729dba064a5ab5c7e515ca5c32e85698e2036ad",
805
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxObjectTest.php": "6214f2c38865c7a183f6a3fd64bc79e7f04963bd726fc124a87b65412075fd236e00cb5f5ed514a3ca2847faec77f4e7a14c59e8906478543daea9c4ddecb7b7",
806
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxTelemetryTest.php": "ced938d8d20bdcd0d465155e1bd3ffbaec8ba96a6392c42dbec27a1d10a04da17b90fd3b91322c94b54fcd5a974528e6f10d081ca9b1915a8c8166e0727ceb31",
807
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxTest.php": "d88d70053ebb64905acccf7e3cf651ea40c9155130e351d56135c96ada96263311faeabc83d4cef1e72387302ea4a11edf338c3744093d9828e056351eefe11a",
808
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/CaseInsensitiveArrayTest.php": "671262198a48a16dc2ddb7ecf1c7fd309241db9c74c11072d86cbd2f56403973e4bb17ca5bc6c489bddf46cc391098dd6b666b134fded9430c211c2a3193fc58",
809
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/DefaultLoggerTest.php": "39942a071430588bf6c089f5d0c97596b3b46b5b7a2b45d900cc41670dcf4bcf0d34e37895e494f0c89242e52d11d8a62f419650407c26ed91b43ea18c816e9e",
810
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/ObjectTypesTest.php": "2d697994485e6c8f9084f9155a5a5b753261bcd2afcc9dfc5760daa5d4196b7c5baee49b264142a705ca7dd6c5d2cde227db3c1f860173aee6769299db95cd83",
811
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/RequestOptionsTest.php": "86d628c4b19e4b7d057cac471219603643b6405e83745535b6c5f743fe84d5cf918a273f9e8e22c5eded36cc20ce49453e90c0ae05a9ed437059ddc287ccb5f7",
812
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/SetTest.php": "c91cbf6d983f16e033eec154e56705b1d942243371df25d5cec7cb375a359faf29fec0c87fa5f3e4d7aad512d7e757361cf409e60d643fff7fa8fef72d9ff172",
813
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/UtilTest.php": "10f13d306d3ac2211b67e759a6e1fbbbdcbc1cb791db4531ac799a8f84be67b3ab43cc85498b786b0630510324bf5039ac7ed39e2252f607f7937e802f9b578d",
814
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/VerificationTest.php": "8ea7985bfc5075c0e5d3a8b0b703af578479e481d769a0e8659d4b0996314aae15de36cc7022e087c0625c5976255aae323f9ac141e9e4fef3939a23fda6d260",
815
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/VerifyProfileTest.php": "c0986530c0ddd14e2227cbf9ceb0614aeec3c3b2dc37b5bce0de0d174ebd047f61fa28ba0787b4de1fd3efb5d77d5924e36ebf6fbba09711d0237f520365e8fc",
816
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/WebhookTest.php": "7e06c31d714348c6c9a6cf14c4a21a1f593287fe61e41630a6d766f15cf2595dccb1cd92981578cc205f6c89839a07c7c845efca2b44521d0aa36c0be9e444f7",
817
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/bootstrap.no_autoload.php": "cb002f7c8f77834b6414db6535f083bcd227ee6085363fa3cb0f66b55226680a45c8562fd8458249868465957b2aeae134b3379f8ee2ed22c96425475e9c0af1",
818
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/bootstrap.php": "50e143ed68aceb91d3e119d5a31521e76bfe9876bd780c90ac83afb7ca4f32be48ff81c33c134109eafe1d22f35e0957a9a834966b8853df99dc1df04795adf4",
819
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/data\/test.png": "6ad523f5b65487369d305613366b9f68dcdeee225291766e3b25faf45439ca069f614030c08ca54c714fdbf7a944fac489b1515a8bf9e0d3191e1bcbbfe6a9df",
820
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/openapi\/README.md": "0c54fffd5b7a5f393358864ff9e3bd3793075d6060cc1336603b2455d60f16d160ffd47b52bca6834acf0d9713855b386f69580099a3dcc131e8d5d617975ff2",
821
-        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/update_certs.php": "6a7fd896832dbc4c039fc907c74f25fad01f26882809d1ed0bef2870ba7db5d5930311208e2864190209862a077e4397dabcc1760ef2ec7e29127868016fc0d8",
822
-        "providers\/Twilio\/readme.txt": "879f75eaefe03b56788a884a5cb031533b33a94acd816b9e3e51a9cf0db826de700062955fc45d9561bd4c69f71178e2976f702e801fc06c3c076494c55c8bcb",
823
-        "templates\/content\/index.php": "abad359bcb218cb8249b03ec25af4e046bf800f4d56c56311430ab67497d095f315546950c3f826f22d5d7a371b037bd86d21be6c08e81c5d71300c11422ec8b",
824
-        "templates\/index.php": "72813b0a70aa144a8020b69eab2d732ddcc7873e798637193180ad590a91a09c32f9370d61589fdbdad364848168209cc74762fa71731f791662faa100e2b59a",
825
-        "templates\/navigation\/index.php": "4719ff34052a190b71b51fbb855e98c4aba63b4fc560218dd2ba884b11865fe8dc5c62bfcf01c0d14693bb98fc5f4e1a6a4cf49968c87b0109137e326fafb28c",
826
-        "templates\/settings.php": "2ddc3c25527ded0c6ea3555d667a84c0216d00c989fdd0b95a564681b31497b1f564ee7bcbff92458d133f2918d1f72778e76ce435bffcd71ab025b44dde4aaa"
827
-    },
828
-    "signature": "O0Epwq8PQnv2bBmCxsyLONBUpgOMALA+4n9gYsknS+wiq5UwdrmD5hSr6FAD2SQL3FeUTJBj0fSh6hZyHxXzUkff0oZT4YxJKJBWMNDrE+hYRnBCsp4\/eKBui5Y\/BJiHtFRB0tP+aZ+K+KKgwSM\/MuPnm5X3G62OUDrG\/EPDp59r5y4j4AlwL35AMmbU4bZatHFiP9jIF87GNAiZHWHBFFElvpKMIxSATENB9N3I0OByRqPl51oPP25VmVW+ZIOy\/rUiPVw8b3f9A4+jtc+6KusGGlPMB37Ih67xDT7amDmI+MIGYiq55\/+szbgNQpZBluA7cZteo0JWScpQodNvWBTUXQS0HSKfCDsTMUTsi5VuibM7175a5d8OTSJgYWYvUq6oJm\/ffxVOHoGgIbgC9QvkQNIOTrNM+aO0YRvaNOz+Ct0zKLpHl7WQSapAA5LTGJ3rrHO9yfV\/ylqmcEyP53eOUp2wqFsvxDgcX1btHIWp7Cd1tkPqBMUhFMAbm+oLY5oFK4dQUBFdoy3MULriu1lf8XlVYGyxsvtQTesqh1gU+IxGdt1GpWnsOzHYdp8FWw5+JA5HRbjJ4h\/kGE7whezh4K0aR6U\/A35MypZ8djAgZZDyWZtNkBq9J7LZVzCdgXyhZCH2J+HEHRaRzVll+4rL92Z296g\/yI0O2\/3upLg=",
829
-    "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIECTCCAvECAhG8MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\r\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\r\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\r\ndXRob3JpdHkwHhcNMjIwMjI1MTYwMjIyWhcNMzIwNjAyMTYwMjIyWjAZMRcwFQYD\r\nVQQDDA5zbXNfcmVsZW50bGVzczCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\r\nggIBALbJJdLJIooOqb46AyOdNlWR9LXm3hWzjNBkH0o8wtMFEnotUOLcbaXbmTun\r\niG0Q0eunZGLSF6in+kY5M420Jh9bbDP6bYI8iDG6CSDkmKgnfcdJRlB6i7g0qBG8\r\noMzOB1x7ZVTef8Ho2ylTMWCxCfTlcQ15okAUpLU1G37I5rg0DZH2fPdGs9PMg11a\r\n64Tofl2GJSf9aHsgLi0AXXVzSN\/96wmK2fJYBqTVsPo5qIqKtMVWduhDXsb9yT4q\r\nDMYzyHrr8ydrMSGPwfs940R00hG2qHJcuKKGjYCCtu7djMfpKA9fqsGZBE6IWlVH\r\nCZxYIHPaEfHOybPR5d2GIKzncUQjtO2\/9rsju31GwzrVswG7w0tQUIIaj5AFLIL3\r\njnagjo2LH11ta9mB+DikaZDfd4VYEEfkTJA4BjnNCDa9pYOaFBGGwJMBSH3eWJCZ\r\nURBtk2NBnIheFRaGWRAzUpKAc+ZYdnmuAqe3Eh1en9GNlKTMCO+mAHkFJp3z8Nai\r\n1ijEVK+PIgtrzqc48ft0r6L43Zd184JnSIscBm\/9GUb0sCf+Uv4WFBKm4c7nrWtM\r\nC1LMKqmj2OYD1fZJ65M1VrkAqh8VXNtqQI1caBGMkcs4\/\/1eo\/XomL6sEkvfa9Y2\r\n1OywnVt52ZeLHyUS2P1mvPyWZgL8AxIie82Mtp7ZWX9Q8ubbAgMBAAEwDQYJKoZI\r\nhvcNAQELBQADggEBAI6OdKpKpevWVprPZ1TzUpq5ATj2JyCZySYC71Ud8l3lAEmn\r\nuh9ok5P7ccY\/c\/9\/ePWuvGxNSHmk1+nEEWC8XNXY5OoU9+i+g7vXd6EKOsowallw\r\nvWZB2rjl6+eNC\/AVa0NE2d9C6AWZtLxiV6rVsmkNUbBS6orHq8JJ2PSJKPT0\/nfM\r\nWL+ZORuFguWazEsy9oZBlplaWNxyAgq\/L66SKXynQPe74kZeVdZ5aQluHnBKZAoh\r\n6v0c2YiaoG5Mg6tDWcx4zM8HXv39Nbg2hcAtP2j3F9EkHZaytW9nM7nTIOxZJtR\/\r\nuGJtkj5+e1NQaMYn2NDiYSZALGUQ3YkHv4OIzDY=\r\n-----END CERTIFICATE-----"
830
-}
831 0
\ No newline at end of file
832 1
deleted file mode 100644
... ...
@@ -1,1410 +0,0 @@
1
-/**
2
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
- *
4
- * @author Double Bastion LLC
5
- *
6
- * @license GNU AGPL version 3 or any later version
7
- *
8
- * This program is free software; you can redistribute it and/or
9
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
- * License as published by the Free Software Foundation; either
11
- * version 3 of the License, or any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
- *
18
- * You should have received a copy of the GNU Affero General Public
19
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
- *
21
- */
22
-
23
-.providerSettings {
24
-   background-color: #F7F7F7;
25
-   padding: 14px;
26
-}
27
-
28
-#smsrelentless_vbar {
29
-   padding: 18px;
30
-   font-family: Calibri, Frutiger, "Myriad Pro", Myriad, sans-serif;
31
-   color: #6d6c6c;
32
-}
33
-
34
-.smsr_textbox {
35
-   display: block;
36
-   box-sizing: content-box;
37
-   width: 70%;
38
-   font-size: 14px !important;
39
-}
40
-
41
-.smsr_textboxspec {
42
-   box-sizing: content-box;
43
-   width: 70%;
44
-   font-size: 14px !important;
45
-}
46
-
47
-#copyToClipboardtel, #copyToClipboardnex, #copyToClipboardtwil, #copyToClipboardflow {
48
-   display: inline-block;
49
-   width: 18px;
50
-   height: 18px;
51
-   margin: 0px 0px -4px 5px;
52
-   cursor: pointer;
53
-}
54
-
55
-#copyToClipboardtel:hover, #copyToClipboardnex:hover, #copyToClipboardtwil:hover, #copyToClipboardflow:hover {
56
-   background-color: #E0E0E0;
57
-}
58
-
59
-#telapi_url, #nexapi_url, #twilapi_url, #twilapi_url_rec, #flowapi_url, #flowapi_url_rec {
60
-   display: inline-block;
61
-   box-sizing: content-box;
62
-   width: 70%;
63
-   font-size: 14px !important;
64
-}
65
-
66
-#generate_tel_rcpt, #generate_tel_delrcpt, #generate_nex_rcpt, #generate_nex_delrcpt, #generate_twil_rcpt, #generate_twil_delrcpt, #generate_flow_rcpt, #generate_flow_delrcpt {
67
-   display: block;
68
-   white-space: normal;
69
-   word-wrap: break-word;
70
-}
71
-
72
-#settings-dscr {
73
-   padding-top: 3px;
74
-}
75
-
76
-.setlabeltext {
77
-  font-size: 15px;
78
-}
79
-
80
-#smsr_save_msg {
81
-   display: inline;
82
-   color: #181918;
83
-   background-color: #a5e5b3;
84
-   font-weight: bold;
85
-}
86
-
87
-#get_notify {
88
-   display: block;
89
-   margin-bottom: 18px;
90
-}
91
-
92
-#get_notify:hover {
93
-   cursor: pointer;
94
-}
95
-
96
-#includesmsinemail {
97
-   display: block;
98
-   margin-bottom: 14px;
99
-}
100
-
101
-#includesmsinemail:hover {
102
-   cursor: pointer;
103
-}
104
-
105
-#currentbaldiv, #smsnumbersdiv {
106
-   display: block;
107
-   position: relative;
108
-   font-size: 17px;
109
-   font-weight: bold;
110
-   height: 30px;
111
-   margin: 0px 0px 14px 0px;
112
-   background-color: #4CA3D9;
113
-   border-radius: 20px;
114
-}
115
-
116
-.providername {
117
-  color: #FFFFFF;
118
-}
119
-
120
-.providername:hover {
121
-  color: #2c0cfc;
122
-}
123
-
124
-#currentbalance {
125
-  display: inline-block;
126
-  position: relative;
127
-  margin: 1px 0px 0px 100px;
128
-  color: #262626;
129
-  font-weight: 600;
130
-}
131
-
132
-#smsprovider {
133
-  display: inline;
134
-  position: absolute;
135
-  width: 90px;
136
-  height: 22px;
137
-  padding: 0px 0px 1px 0px;
138
-  -moz-box-sizing: border-box;
139
-  -webkit-box-sizing: border-box;
140
-  box-sizing: border-box;
141
-  background: #fcfcfc;
142
-  font-size: 15px;
143
-  font-weight: 500;
144
-  color: #565656;
145
-  text-align: center;
146
-  border-radius: 20px;
147
-}
148
-
149
-#currentsmsnmbrs {
150
-  display: inline-block;
151
-  position: absolute;
152
-  height: 22px;
153
-  width: 54%;
154
-  padding: 0.4px 0px 0px 4px;
155
-  margin: 2px 0px 0px 4px;
156
-  font-size: 14px;
157
-  font-weight: 500;
158
-  color: #565656;
159
-  -moz-box-sizing: border-box;
160
-  -webkit-box-sizing: border-box;
161
-  box-sizing: border-box;
162
-  background: #fcfcfc;
163
-  border-radius: 20px;
164
-}
165
-
166
-.cllridcls {
167
-  position: relative;
168
-  display: inline;
169
-  font-size: 17px;
170
-  color: #000000;
171
-}
172
-
173
-.tooltipsetid, .tooltipbalanceid  {
174
-  position: relative;
175
-  display: inline-block;
176
-  float: right;
177
-  font-size: 15px;
178
-  color: #000000;
179
-}
180
-
181
-.tooltipbalanceid #infobalance {
182
-  display: block;
183
-  position: relative;
184
-  margin: 4px 14px 0px 0px;
185
-  color: #000000;
186
-  font-size: 21px;
187
-  font-weight: bold;
188
-  font-family: Times New Roman;
189
-  font-style: italic;
190
-  z-index: 6;
191
-}
192
-
193
-.tooltipbalanceid .balancetooltip {
194
-  display: block;
195
-  position: absolute;
196
-  visibility: hidden;
197
-  width: 264px;
198
-  background-color: #f4f4f4;
199
-  font-size: 15px;
200
-  font-weight: bold;
201
-  color: #595959;
202
-  text-align: left;
203
-  border-radius: 4px;
204
-  padding: 5px 5px 5px 8px;
205
-  margin: -4px 0px 0px -244px;
206
-  -webkit-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
207
-  -moz-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
208
-  box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
209
-  z-index: 6;
210
-}
211
-
212
-.tooltipbalanceid:hover .balancetooltip {
213
-   visibility: visible;
214
-}
215
-
216
-#infotipid {
217
-   display: block;
218
-   position: relative;
219
-   margin: 4px 10px 0px 0px;
220
-   color: #000000;
221
-   font-size: 21px;
222
-   font-weight: bold;
223
-   font-family: Times New Roman;
224
-   font-style: italic;
225
-   z-index: 5;
226
-}
227
-
228
-#setcalleridtp {
229
-   display: block;
230
-   position: absolute;
231
-   width: 274px;
232
-   overflow-y: scroll;
233
-   visibility: hidden;
234
-   border-radius: 3px;
235
-   margin: -6px 0px 0px -224px;
236
-   scrollbar-width: auto;
237
-   scrollbar-color: #a2a2a2 #ececec;
238
-   -webkit-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
239
-   -moz-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
240
-   box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
241
-   z-index: 10;
242
-}
243
-
244
-.calleridtooltip {
245
-   display: block;
246
-   position: relative;
247
-   width: auto;
248
-   height: auto;
249
-   background-color: #f4f4f4;
250
-   font-size: 15px;
251
-   font-weight: bold;
252
-   color: #595959;
253
-   text-align: left;
254
-   padding: 5px 12px 5px 10px;
255
-   z-index: 10;
256
-}
257
-
258
-.tooltipsetid:hover #setcalleridtp {
259
-   visibility: visible;
260
-}
261
-
262
-.pflabels {
263
-   font-size: 15px;
264
-   font-weight: bold;
265
-}
266
-
267
-.srheader {
268
-   display: block;
269
-   position: relative;
270
-   margin: 0px 0px 7px 0px;
271
-   font-size: 17px;
272
-   font-weight: bold;
273
-}
274
-
275
-.sendtomultrcvrs {
276
-   display: block;
277
-   position: relative;
278
-   margin: 0px 0px 7px 0px;
279
-   font-size: 17px;
280
-}
281
-
282
-.smsnbformat {
283
-   display: block;
284
-   position: relative;
285
-   margin: 0px 0px 3px 0px;
286
-   font-size: 17px;
287
-   font-weight: bold;
288
-
289
-}
290
-
291
-.smsrelentless_box {
292
-   width: 400px;
293
-   display: block;
294
-}
295
-.indtext {
296
-   display: inline-block;
297
-   padding-left: 10px;
298
-}
299
-
300
-#settings-dscr {
301
-   padding-top: 3px;
302
-}
303
-
304
-#sms_upload_msg, #sms_submit_msg {
305
-   display: block;
306
-   color: #181918;
307
-   background-color: #a5e5b3;
308
-   font-weight: bold;
309
-}
310
-
311
-#sms_submit_msg {
312
-   margin: 8px 0px 8px 0px;
313
-   padding-left: 5px;
314
-   padding-right: 5px;
315
-   border-radius: 3px;
316
-}
317
-
318
-#pickedfilename {
319
-   font-size: 13px;
320
-}
321
-
322
-#smstodiv {
323
-   display: block;
324
-   position: relative;
325
-   height: 32px;
326
-}
327
-
328
-#smsto {
329
-   display: block;
330
-   width: 99%;
331
-   max-height: 32px;
332
-   margin: 5px 0px 20px 0px;
333
-   padding: 0px 15px 0px 15px;
334
-   color: #565656;
335
-   font-size: 16px;
336
-   font-weight: bold;
337
-   border-radius: 20px;
338
-}
339
-
340
-#sendtomultiple {
341
-   display: inline-block;
342
-   position: relative;
343
-   margin: 10px 0px 20px 0px;
344
-   font-size: 16px;
345
-   font-weight: bold;
346
-}
347
-
348
-#uploadfileforsms {
349
-   margin-left: 7px;
350
-   background-color: #ffffff;
351
-}
352
-
353
-.entertime {
354
-   display: inline;
355
-   font-size: 16px;
356
-   font-weight: bold;
357
-   margin-right: 7px;
358
-}
359
-
360
-#tomultiplechck {
361
-   display: inline-block;
362
-   position: relative;
363
-   padding-left: 6px;
364
-}
365
-
366
-#tomultchckbx:hover {
367
-   cursor: pointer;
368
-}
369
-
370
-.maxmessagelength {
371
-   display: none;
372
-   position: relative;
373
-   padding: 2px 7px 4px 2px;
374
-   font-size: 15px;
375
-   color: #000000;
376
-   z-index: 1;
377
-}
378
-
379
-#maxlengthinfo {
380
-   display: block;
381
-   position: absolute;
382
-   width: 274px;
383
-   height: 200px;
384
-   overflow-y: scroll;
385
-   visibility: hidden;
386
-   border-radius: 3px;
387
-   margin: -11px 0px 0px -6px;
388
-   scrollbar-width: auto;
389
-   scrollbar-color: #a2a2a2 #ececec;
390
-   -webkit-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
391
-   -moz-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
392
-   box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
393
-   z-index: 10;
394
-}
395
-
396
-.maxlengthtooltip {
397
-   display: block;
398
-   position: relative;
399
-   width: auto;
400
-   height: auto;
401
-   background-color: #f4f4f4;
402
-   font-size: 15px;
403
-   font-weight: bold;
404
-   color: #595959;
405
-   text-align: left;
406
-   padding: 5px 12px 5px 10px;
407
-   z-index: 10;
408
-}
409
-
410
-.maxmessagelength:hover #maxlengthinfo {
411
-   visibility: visible;
412
-}
413
-
414
-.up-bttn-wrapper {
415
-  display: block;
416
-  position: relative;
417
-  overflow: hidden;
418
-  padding-top: 20px;
419
-  padding-bottom: 30px;
420
-}
421
-
422
-#smstext {
423
-  display: inline-block;
424
-  color: #000000;
425
-  width: 100%;
426
-  height: 130px;
427
-  text-align: left;
428
-  font-size: 16px;
429
-  border-radius: 6px;
430
-  resize: vertical;
431
-  white-space: pre-wrap;
432
-}
433
-
434
-#char_count {
435
-  display: none;
436
-  font-size: 15px;
437
-  font-weight: bold;
438
-}
439
-
440
-#submitsms {
441
-   display: block;
442
-   position: relative;
443
-   margin-top: 14px;
444
-   color: white;
445
-   font-weight: bold;
446
-   font-size: 15px;
447
-   background-color: #4CA3D9;
448
-   border-radius: 20px;
449
-}
450
-
451
-#submitsms:hover {
452
-   border-color: #5CAECC;
453
-}
454
-
455
-#submitsms:active {
456
-   background: #4B96B1;
457
-   border-color: #4B96B1;
458
-}
459
-
460
-.uploadfiledv {
461
-   position: relative;
462
-   display: inline-block;
463
-   padding: 6px 0px 5px 0px;
464
-}
465
-
466
-#multiplerecivers {
467
-   display: none;
468
-   background: #e8f6ff;
469
-   border-radius: 6px;
470
-   padding: 5px;
471
-   margin: 0px 0px 20px 0px;
472
-}
473
-
474
-#multsetrows {
475
-  display: block;
476
-  padding: 5px;
477
-}
478
-
479
-#multsmsinterval {
480
-  display: block;
481
-  width: 100px;
482
-  height: 25px;
483
-  font-size: 14px;
484
-  font-weight: bold;
485
-  padding: 0px 0px 0px 10px;
486
-  border-radius: 20px;
487
-}
488
-
489
-#app-content {
490
-   display: block;
491
-   position: absolute;
492
-   width: 100%;
493
-   height: 100%;
494
-}
495
-
496
-#viewerContainer {
497
-   display: block;
498
-   position: relative;
499
-   width: 100%;
500
-   height: 100%;
501
-}
502
-
503
-.pdfViewer #viewer {
504
-   display: block;
505
-   position: relative;
506
-   min-width: 100%;
507
-   min-height: 100%;
508
-}
509
-
510
-#smsdocpreview {
511
-   display: inline-block;
512
-   position: relative;
513
-   width: 100%;
514
-   height: 100%;
515
-   margin-top: -50px;
516
-}
517
-
518
-#outerContainer {
519
-   display: block;
520
-   position: relative;
521
-   width: 100%;
522
-   height: 100%;
523
-}
524
-
525
-#mainContainer {
526
-   display: block;
527
-   position: relative;
528
-   width: 100%;
529
-   height: 100%;
530
-}
531
-
532
-#app-content #app-content-wrapper {
533
-   display: block;
534
-   position: absolute;
535
-   margin: 0;
536
-   align-items: stretch;
537
-   height: 100%;
538
-   width: 100%;
539
-}
540
-
541
-#content {
542
-   width: 81%;
543
-   display: flex;
544
-}
545
-
546
-.texttooltip {
547
-  font-family: Times New Roman, Calibri, sans-serif;
548
-  font-style: italic;
549
-  color: #000000;
550
-  font-size: 21px;
551
-  font-weight: bold;
552
-  padding: 0px 0px 3px 3px;
553
-}
554
-
555
-.fortooltip {
556
-   position: relative;
557
-   display: inline-block;
558
-   padding: 2px 0px 4px 2px;
559
-   font-size: 15px;
560
-   color: #000000;
561
-   z-index: 4;
562
-}
563
-
564
-.fortooltipsec {
565
-   position: relative;
566
-   display: inline-block;
567
-   font-size: 15px;
568
-   color: #000000;
569
-   padding: 2px 0px 4px 2px;
570
-   z-index: 3;
571
-}
572
-
573
-.fortooltiptert {
574
-   position: relative;
575
-   display: inline-block;
576
-   font-size: 15px;
577
-   color: #000000;
578
-   padding: 2px 0px 4px 2px;
579
-   z-index: 0;
580
-}
581
-
582
-#tonmbrformat {
583
-   display: block;
584
-   position: absolute;
585
-   width: 274px;
586
-   overflow-y: scroll;
587
-   visibility: hidden;
588
-   border-radius: 3px;
589
-   margin: -11px 0px 0px -6px;
590
-   scrollbar-width: auto;
591
-   scrollbar-color: #a2a2a2 #ececec;
592
-   -webkit-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
593
-   -moz-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
594
-   box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
595
-   z-index: 10;
596
-}
597
-
598
-.fortooltiptext {
599
-   display: block;
600
-   position: relative;
601
-   width: auto;
602
-   height: auto;
603
-   background-color: #f4f4f4;
604
-   font-size: 15px;
605
-   font-weight: bold;
606
-   color: #595959;
607
-   text-align: left;
608
-   padding: 5px 12px 5px 10px;
609
-   z-index: 10;
610
-}
611
-
612
-.fortooltip:hover #tonmbrformat {
613
-   visibility: visible;
614
-}
615
-
616
-#uploadfileinfo {
617
-   display: block;
618
-   position: absolute;
619
-   width: 274px;
620
-   overflow-y: scroll;
621
-   visibility: hidden;
622
-   border-radius: 3px;
623
-   margin: -11px 0px 0px -6px;
624
-   scrollbar-width: auto;
625
-   scrollbar-color: #a2a2a2 #ececec;
626
-   -webkit-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
627
-   -moz-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
628
-   box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
629
-   z-index: 10;
630
-}
631
-
632
-.fortooltiptextsec {
633
-   display: block;
634
-   position: relative;
635
-   width: auto;
636
-   height: auto;
637
-   background-color: #f4f4f4;
638
-   font-size: 15px;
639
-   font-weight: bold;
640
-   color: #595959;
641
-   text-align: left;
642
-   padding: 5px 12px 5px 10px;
643
-   z-index: 10;
644
-}
645
-
646
-.fortooltipsec:hover #uploadfileinfo {
647
-   visibility: visible;
648
-}
649
-
650
-#deleteoldinfo {
651
-   display: block;
652
-   position: absolute;
653
-   width: 274px;
654
-   height: 200px;
655
-   overflow-y: scroll;
656
-   visibility: hidden;
657
-   border-radius: 3px;
658
-   margin: -11px 0px 0px -6px;
659
-   scrollbar-width: auto;
660
-   scrollbar-color: #a2a2a2 #ececec;
661
-   -webkit-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
662
-   -moz-box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
663
-   box-shadow: 7px 9px 8px 0px rgba(212,212,212,1);
664
-   z-index: 10;
665
-}
666
-
667
-.fortooltiptexttert {
668
-   display: block;
669
-   position: relative;
670
-   width: auto;
671
-   height: auto;
672
-   background-color: #f4f4f4;
673
-   font-size: 15px;
674
-   font-weight: bold;
675
-   color: #595959;
676
-   text-align: left;
677
-   padding: 5px 12px 5px 10px;
678
-   z-index: 10;
679
-}
680
-
681
-.fortooltiptert:hover #deleteoldinfo {
682
-   visibility: visible;
683
-}
684
-
685
-.fileupload {
686
-   display: none;
687
-}
688
-
689
-div > label {
690
-   position: relative;
691
-}
692
-
693
-.uploadflbt {
694
-   width: 411px;
695
-}
696
-
697
-label span {
698
-   display: inline-block;
699
-   min-width: 110px;
700
-   padding: 0px 0px 8px 0px;
701
-}
702
-
703
-.uploadflbt .icon-upload {
704
-   display: inline;
705
-}
706
-
707
-.pfprompt {
708
-   font-size: 16px;
709
-   font-weight: bold;
710
-}
711
-
712
-.fileuploadstl,.filesfromnc {
713
-  display: block;
714
-  font-size: 17px;
715
-  font-weight: bold;
716
-  color: #000000;
717
-}
718
-
719
-#filestotsize {
720
-  display: none;
721
-  position: relative;
722
-  height:auto;
723
-  padding: 0px 0px 8px 0px;
724
-  color: #18bf6e;
725
-  font-size: 14px;
726
-  font-weight: bold;
727
-}
728
-
729
-#filessizetext {
730
-  display: inline;
731
-  position: relative;
732
-  padding-left: 10px;
733
-}
734
-
735
-#fileuploadednm .indivflcls {
736
-  display: inline-block;
737
-  position: relative;
738
-  height:auto;
739
-  max-width: 90%;
740
-  overflow: visible;
741
-  white-space: normal;
742
-  word-break: break-all;
743
-  text-overflow: ellipsis;
744
-  font-size: 17px;
745
-  color: #0e6ba0;
746
-}
747
-
748
-.indivflcls:hover {
749
-  cursor: pointer;
750
-  text-decoration: underline;
751
-}
752
-
753
-.indupfldl {
754
-  position: relative;
755
-  display: inline-block;
756
-  float: right;
757
-  cursor: pointer;
758
-  width: 20px;
759
-  color: #0e6ba0;
760
-  text-align: center;
761
-  font-size: 17px;
762
-}
763
-
764
-#fileuploadednm .indupfldl:hover {
765
-  background-color: #e8f6ff;
766
-  cursor: pointer;
767
-}
768
-
769
-#filespickednc .indivflpckd {
770
-  display: inline-block;
771
-  position: relative;
772
-  height:auto;
773
-  max-width: 90%;
774
-  overflow: visible;
775
-  white-space: normal;
776
-  word-break: break-all;
777
-  text-overflow: ellipsis;
778
-  color: #0e6ba0;
779
-}
780
-
781
-.indivflpckd:hover {
782
-  cursor: pointer;
783
-  text-decoration: underline;
784
-}
785
-
786
-.indpckfldl {
787
-  position: relative;
788
-  display: inline-block;
789
-  float: right;
790
-  cursor: pointer;
791
-  width: 20px;
792
-  color: #0e6ba0;
793
-  text-align: center;
794
-}
795
-
796
-#filespickednc .indpckfldl:hover {
797
-  background-color: #e8f6ff;
798
-  cursor: pointer;
799
-}
800
-
801
-#dirbuttons {
802
-  margin-top: 30px;
803
-}
804
-
805
-button, input, textarea, div[contenteditable="true"], div[contenteditable="false"] {
806
-  min-height: 9px;
807
-}
808
-
809
-select {
810
-  width: 130px;
811
-  min-height: 25px;
812
-  box-sizing: border-box;
813
-  padding-right: 0px !important;
814
-}
815
-
816
-.filterbuttonsrec, .filterbuttonsent {
817
-  border-radius: 3px !important;
818
-  background-color: #ffffff !important;
819
-}
820
-
821
-#uploadfileforsms {
822
-  border-radius: 3px !important;
823
-}
824
-
825
-#choosefilen {
826
-  display: inline;
827
-  position: relative;
828
-  margin: 4px 0px 20px 16px;
829
-  background-image: url('../img/nextcloud_logo.svg');
830
-  background-repeat: no-repeat;
831
-  background-size: 110% 125%;
832
-  background-position: center center;
833
-  min-width: 66px;
834
-  min-height: 30px;
835
-  cursor:pointer;
836
-}
837
-
838
-#choosefilen:active {
839
-  background-image: url('../img/nextcloud_logo_bright.svg');
840
-  background-repeat: no-repeat;
841
-  background-size: 110% 125%;
842
-  background-position: center center;
843
-  min-width: 66px;
844
-  min-height: 30px;
845
-}
846
-
847
-#selectcalleridbttn {
848
-  position: relative;
849
-  padding-left: 0px;
850
-  margin-top: 2.6px;
851
-  margin-right: 4px;
852
-  float: right;
853
-  background-image: url('../img/refresh_logo.svg');
854
-  background-repeat: no-repeat;
855
-  background-size: 110% 110%;
856
-  background-position: center center;
857
-  min-width: 24px;
858
-  min-height: 24px;
859
-  cursor: pointer;
860
-  background-color: #ffffff;
861
-  border-radius: 20px;
862
-}
863
-
864
-#pickid, #showsum {
865
-  display: inline-block;
866
-  position: relative;
867
-  font-size: 17px;
868
-  font-weight: bold;
869
-  margin: 4px 0px 8px 14px;
870
-  color: #FFFFFF;
871
-}
872
-
873
-.smsrelentless_checkbox:hover {
874
-  cursor: pointer;
875
-}
876
-
877
-#smstables {
878
-  display: block; 
879
-  position: relative;
880
-  width: 100%;
881
-  height: 100%;
882
-}
883
-
884
-#smsRGreyLogo {
885
-  display: block;
886
-  position: relative;
887
-  background-image: url('../img/sms_relentless_grey.svg');
888
-  background-repeat: no-repeat;
889
-  background-position: center center;
890
-  width: 100%;
891
-  height: 100%;
892
-}
893
-
894
-#recSmsTable {
895
-  display: block;
896
-  position: relative;
897
-  top: 27px;
898
-  width: 100%;
899
-  height: auto;
900
-  font-size: 14px;
901
-  z-index: 50;
902
-  background: #FFFFFF;
903
-}
904
-
905
-#sentSmsTable {
906
-  display: block;
907
-  position: relative;
908
-  top: 27px;
909
-  width: 100%;
910
-  height: auto;
911
-  font-size: 14px;
912
-  z-index: 50;
913
-  background: #FFFFFF;
914
-}
915
-
916
-.receivedrows, .receivedrowsbody, .sentrows, .sentrowsbody {
917
-  border: 1px solid #F0F0F0;
918
-  padding: 8px;
919
-}
920
-
921
-#sentfiltersrow, #recfiltersrow {
922
-  display: none;
923
-  position: sticky;
924
-  top: 77px;
925
-  background: #FFFFFF;
926
-  z-index: 1000;
927
-}
928
-
929
-th {
930
-  position: sticky;
931
-  top: 77px;
932
-  z-index: 999;
933
-  border: 1px solid #F0F0F0;
934
-  padding: 7px;
935
-  background-color: #bfe5f2;
936
-  font-size: 15px;
937
-  font-weight: bold;
938
-  text-align: center;
939
-}
940
-
941
-td {
942
-  text-align: center;
943
-  border: 1px solid #F0F0F0;
944
-  padding: 5px;
945
-  white-space: normal;
946
-}
947
-
948
-.dbidcolumnrec, .sentdbidcolumn {
949
-  text-align: center;
950
-}
951
-
952
-.dbidcolumnrec {
953
-  width: 50px;
954
-}
955
-
956
-.messagecolumnsent {
957
-  background: #fffff2;
958
-  text-align: left;
959
-  font-weight: bold;
960
-  width: 250px;
961
-  word-break: break-word;
962
-}
963
-
964
-.messagecolumnrec {
965
-  background: #fffff2;
966
-  text-align: left;
967
-  font-weight: bold;
968
-  width: 380px;
969
-  word-break: break-word;
970
-}
971
-
972
-#selectAllChckbx:hover {
973
-  cursor: pointer;
974
-}
975
-
976
-.indivchckbx:hover {
977
-  cursor: pointer;
978
-}
979
-
980
-.selectsmsdv {
981
-  width: 30px;
982
-  padding: 5px 5px 5px 7px;
983
-}
984
-
985
-#selectalldv {
986
-  width: 30px;
987
-  padding: 5px 5px 5px 7px;
988
-}
989
-
990
-.indivfilter {
991
-  height: 30px;
992
-  font-weight: bold;
993
-  padding: 0px;
994
-}
995
-
996
-.selectalldvfilter {
997
-  border: 1px solid #F0F0F0;
998
-  padding: 3px;
999
-  margin: 0px; 
1000
-}
1001
-
1002
-.filterbuttonsrec, .filterbuttonsent {
1003
-  display: inline;
1004
-  position: relative;
1005
-  top: 1.8px;
1006
-  background-image: url('../img/filter_icon.svg');
1007
-  background-repeat: no-repeat;
1008
-  background-position: center center;
1009
-  cursor: pointer;
1010
-}
1011
-
1012
-#clearrecfilters, #clearsentfilters {
1013
-  display: inline-block;
1014
-  width: 22px;
1015
-  height: 22px;
1016
-  background-color: #ffffff;
1017
-  background-image: url('../img/clearfilters.svg');
1018
-  background-repeat: no-repeat;
1019
-  background-position: center center;
1020
-  margin: 0px 0px 8px 0px;
1021
-  border: none;
1022
-  cursor: pointer;
1023
-}
1024
-
1025
-#deleterecrows, #deletesentrows {
1026
-  display: inline-block;
1027
-  width: 16px;
1028
-  height: 20px;
1029
-  background-color: #ffffff;
1030
-  background-image: url('../img/garbage.svg');
1031
-  background-repeat: no-repeat;
1032
-  background-position: center center;
1033
-  margin: 0px 0px 4px 0px;
1034
-  border: none;
1035
-  cursor: pointer;
1036
-}
1037
-
1038
-#deleterecrows:active, #deletesentrows:active {
1039
-  background-image: url('../img/garbage_bright.svg');
1040
-}
1041
-
1042
-#toptablerec, #toptablesent {
1043
-  display: block;
1044
-  position: fixed;
1045
-  height: 27px;
1046
-  width: 100%;
1047
-  padding-right: 318px;
1048
-  background: #FFFFFF;
1049
-  z-index: 1001;
1050
-}
1051
-
1052
-@media screen and (max-width: 1026px) {
1053
-  #toptablerec, #toptablesent {
1054
-    padding-right: 16px;
1055
-  }
1056
-}
1057
-
1058
-.topbuttonandpage {
1059
-   display: block;
1060
-   position: relative;
1061
-   top: 0px;
1062
-   right: 0px;
1063
-   left: 0px;
1064
-   width: auto;
1065
-   height: 27px;
1066
-   background: #FFFFFF;
1067
-   z-index: 1001;
1068
-}
1069
-
1070
-#paginationrec, #paginationsent {
1071
-   display: block;
1072
-   position: relative;
1073
-   float: right;
1074
-   width: auto;
1075
-   margin: -25px 0px 0px 0px;
1076
-   font-size: 16px;
1077
-   font-weight: bold;
1078
-   color: #0082C9;
1079
-   z-index: 1002;
1080
-}
1081
-
1082
-.arrowDownCl {
1083
-    background-image: url('../img/arrowDown.svg');
1084
-    background-repeat: no-repeat;
1085
-    background-position: center center;
1086
-    z-index: 1010;
1087
-}
1088
-
1089
-.arrowUpCl {
1090
-    background-image: url('../img/arrowUp.svg');
1091
-    background-repeat: no-repeat;
1092
-    background-position: center center;
1093
-    z-index: 1010;   
1094
-}
1095
-
1096
-@media (max-width: 1020px) {
1097
-  #recarrow, #sentarrow {
1098
-    display: block;
1099
-    position: relative;
1100
-    float: left;
1101
-    margin: 3.8px 0px 0px 50px;
1102
-    width: 20px;
1103
-    height: 20px;
1104
-    border: none;
1105
-    cursor: pointer;
1106
-  }
1107
-}
1108
-
1109
-@media (min-width: 1021px) {
1110
-  #recarrow, #sentarrow {
1111
-    display: block;
1112
-    position: relative;
1113
-    float: left;
1114
-    margin: 3.8px 0px 0px 5px;
1115
-    width: 20px;
1116
-    height: 20px;
1117
-    border: none;
1118
-    cursor: pointer;
1119
-  }
1120
-}
1121
-
1122
-#totalrecmessages, #totalsentmessages {
1123
-  display: block;
1124
-  position: relative;
1125
-  padding: 26px 0px 0px 0px;
1126
-  font-size: 14px;
1127
-  font-weight: bold;
1128
-  color: #4cbc86;
1129
-}
1130
-
1131
-.pagenumbers, .pagenumbersbottom, .pagenumbersrec, .pagenumbersbottomrec {
1132
-  color: #0082C9;
1133
-}
1134
-
1135
-#dbidtextsent {
1136
-  display: block;
1137
-  margin: auto;
1138
-  width: 95%;
1139
-}
1140
-
1141
-#dbidtextrec {
1142
-  display: block;
1143
-  margin: auto;
1144
-  width: 95%;
1145
-}
1146
-
1147
-#useridtext {
1148
-  display: block;
1149
-  margin: auto;
1150
-  width: 95%;
1151
-}
1152
-
1153
-#useridtextrec {
1154
-  display: block;
1155
-  margin: auto;
1156
-  width: 95%;
1157
-}
1158
-
1159
-#messageidtext {
1160
-  display: block;
1161
-  margin: auto;
1162
-  width: 95%;
1163
-}
1164
-
1165
-#messageidtextrec {
1166
-  display: block;
1167
-  margin: auto;
1168
-  width: 95%;
1169
-}
1170
-
1171
-#datetext {
1172
-  display: block;
1173
-  margin: auto;
1174
-  width: 95px;
1175
-}
1176
-
1177
-#datetextrec {
1178
-  display: block;
1179
-  margin: auto;
1180
-  width: 95%;
1181
-}
1182
-
1183
-#fromtext {
1184
-  display: block;
1185
-  margin: auto;
1186
-  width: 95%;
1187
-}
1188
-
1189
-#fromtextrec {
1190
-  display: block;
1191
-  margin: auto;
1192
-  width: 95%;
1193
-}
1194
-
1195
-#totext {
1196
-  display: block;
1197
-  margin: auto;
1198
-  width: 95%;
1199
-}
1200
-
1201
-#totextrec {
1202
-  display: block;
1203
-  margin: auto;
1204
-  width: 95%;
1205
-}
1206
-
1207
-#networktext {
1208
-  display: block;
1209
-  margin: auto;
1210
-  width: 95%;
1211
-}
1212
-
1213
-#pricetext {
1214
-  display: block;
1215
-  margin: auto;
1216
-  width: 95%;
1217
-}
1218
-
1219
-#statustext {
1220
-  display: block;
1221
-  margin: auto;
1222
-  width: 95%;
1223
-}
1224
-
1225
-#deliveryrcpttext {
1226
-  display: block;
1227
-  margin: auto;
1228
-  width: 95%;
1229
-}
1230
-
1231
-#messagetext {
1232
-  display: block;
1233
-  margin: auto;
1234
-  width: 95%;
1235
-}
1236
-
1237
-#messagetextrec {
1238
-  display: block;
1239
-  margin: auto;
1240
-  width: 95%;
1241
-}
1242
-
1243
-#databaseidfilter {
1244
-  display: block;
1245
-  margin-left: auto;
1246
-  margin-right: auto;
1247
-}
1248
-
1249
-#sentstatuscolumn {
1250
-  max-width: 160px;
1251
-}
1252
-
1253
-.useridcolrec {
1254
-  width: 124px;
1255
-  background-color: #ffffff;
1256
-}
1257
-
1258
-.messageidcolsent {
1259
-  overflow: visible;
1260
-  word-break: break-all;
1261
-}
1262
-
1263
-.messageidcolrec {
1264
-  overflow: visible;
1265
-  word-break: break-all;
1266
-  width: 314px;
1267
-}
1268
-
1269
-.datecolrec {
1270
-  width: 160px;
1271
-}
1272
-
1273
-.fromcolumnrec {
1274
-  width: 140px;
1275
-}
1276
-
1277
-.tocolrec {
1278
-  width: 140px;
1279
-  background-color: #f2fbff;
1280
-}
1281
-
1282
-.networkcolumnsent {
1283
-  max-width: 90px;
1284
-  background-color: #ffffff;
1285
-  word-break: break-word;
1286
-}
1287
-
1288
-.useridcolsent, .pricecolumnsent, .statuscolumnsent, .deliveryrcptcolsent {
1289
-  background-color: #ffffff;
1290
-}
1291
-
1292
-.tocolumnsent {
1293
-  background-color: #f2fbff;
1294
-}
1295
-
1296
-.fromcolumnrec, .fromcolumnsent {
1297
-  background-color: #f2fff5;
1298
-}
1299
-
1300
-.active {
1301
-  color: #c62b71;
1302
-}
1303
-
1304
-#deleteoldmssgs {
1305
-  display: inline-block;
1306
-  position: relative;
1307
-  margin: 15px 0px 10px 0px;
1308
-  font-size: 16px;
1309
-  font-weight: bold;
1310
-}
1311
-
1312
-#deleteoldsms {
1313
-  display: none;
1314
-  background: #e8f6ff;
1315
-  border-radius: 6px;
1316
-  padding: 5px;
1317
-}
1318
-
1319
-#deleteoldchck {
1320
-  display: inline-block;
1321
-  position: relative;
1322
-  margin: 15px 0px 0px 0px;
1323
-  padding: 15px 0px 0px 6px;
1324
-}
1325
-
1326
-#deleteoldchckbox:hover {
1327
-  cursor: pointer;
1328
-}
1329
-
1330
-#delOldrecSMS, #delOldsentSMS {
1331
-  display: block;
1332
-  background-color: #0082C9;
1333
-  color: #ffffff;
1334
-  margin: 10px 0px 10px 5px;
1335
-  border-radius: 20px;  
1336
-}
1337
-
1338
-#delOldrecSMS:active, #delOldsentSMS:active {
1339
-  background: #00a2f9;
1340
-}
1341
-
1342
-#delsetrows {
1343
-  display: block;
1344
-  padding: 5px;
1345
-}
1346
-
1347
-.deletesmsolder {
1348
-  display: inline;
1349
-  font-size: 16px;
1350
-  font-weight: bold;
1351
-}
1352
-
1353
-#oldrecSmsInterval, #oldsentSmsInterval {
1354
-  display: inline;
1355
-  width: 60px;
1356
-  height: 25px;
1357
-  padding: 0px 0px 0px 10px;
1358
-  font-size: 14px;
1359
-  font-weight: bold;
1360
-  border-radius: 20px;
1361
-}
1362
-
1363
-#upArrow {
1364
-  background-image: url("../img/arrow-top.svg");
1365
-  background-repeat: no-repeat;
1366
-  background-color: transparent !important;
1367
-  opacity: 0.30;
1368
-  position: fixed;
1369
-  bottom: 40px;
1370
-  right: 4px;
1371
-  width: 50px;
1372
-  height: 50px;
1373
-  border: none;
1374
-  cursor: pointer;
1375
-  display: none;
1376
-  z-index: 1010;
1377
-}
1378
-
1379
-#upArrow:hover {
1380
-  opacity: 1;
1381
-}
1382
-
1383
-.opensmsfolder {
1384
-  display: block;
1385
-  position: relative;
1386
-  margin: 10px 0px 10px 0px !important;
1387
-  padding: 7px 0px 7px 0px;
1388
-  width: 100% !important;
1389
-  color: #FFFFFF !important;
1390
-  font-size: 15px !important;
1391
-  background-color: #CB99C5 !important;
1392
-}
1393
-
1394
-.opensmsfolder:hover {
1395
-  border: 2px;
1396
-  background-color: #c18bba !important;
1397
-}
1398
-
1399
-.opensmsfolder:active {
1400
-  background-color: #b777af !important;
1401
-  border: 2px;
1402
-  color: #FFFFFF !important;
1403
-  border-color: #b777af;
1404
-}
1405
-
1406
-.opensmsfolder:focus {
1407
-  background-color: #a3669b !important;
1408
-  border: 2px;
1409
-  border-color: #a3669b;
1410
-}
1411 0
deleted file mode 100644
... ...
@@ -1,543 +0,0 @@
1
-/**
2
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
- *
4
- * @author Double Bastion LLC
5
- *
6
- * @license GNU AGPL version 3 or any later version
7
- *
8
- * This program is free software; you can redistribute it and/or
9
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
- * License as published by the Free Software Foundation; either
11
- * version 3 of the License, or any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
- *
18
- * You should have received a copy of the GNU Affero General Public
19
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
- *
21
- */
22
-
23
-  var userid = "<?php p($userId); ?>";
24
-  var charcolorthr = 160;
25
-  var textread = '';
26
-  var providerUsed = '';
27
-  var receiversNumbers = [];
28
-  var waittime = 1000;
29
-
30
-  // Clean the temp_files directory
31
-  var cleanflUrl = OC.generateUrl("/apps/sms_relentless/user/cleantempdir");
32
-
33
-  $.ajax({
34
-          url: cleanflUrl + '/' + userid,
35
-          type: "POST",
36
-          data: { userid: userid },
37
-          cache: false,
38
-          processData: false,
39
-          contentType: false
40
-  });
41
-  
42
-  // Check the available balance
43
-  $("#smsprovider").on("change", function () {
44
-
45
-     var provider = $('#smsprovider :selected').val();
46
-
47
-     if (provider == "Telnyx") {
48
-
49
-        var gettelbalance = function() {
50
-
51
-          $('#currentbalance').addClass('icon-loading');
52
-
53
-          var gettelbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalancetel");
54
-
55
-          $.ajax({
56
-              url: gettelbalanceUrl + '/' + userid,
57
-              type: "POST",
58
-              data: { userid: userid },
59
-              cache: false,
60
-              processData: false,
61
-              contentType: false,
62
-              success: function(currentbalancetel) {
63
-
64
-                     $('#currentbalance').empty();
65
-                     $('#currentbalance').text(currentbalancetel);
66
-                     $('#currentbalance').removeClass('icon-loading');
67
-              }
68
-          });
69
-        }
70
-
71
-        gettelbalance();
72
-
73
-     } else if (provider == "Plivo") {
74
-
75
-          var getnexbalance = function() {
76
-
77
-            $('#currentbalance').addClass('icon-loading');
78
-
79
-            var getnexbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalancenex");
80
-
81
-            $.ajax({
82
-                url: getnexbalanceUrl + '/' + userid,
83
-                type: "POST",
84
-                data: { userid: userid },
85
-                cache: false,
86
-                processData: false,
87
-                contentType: false,
88
-                success: function(currentbalancenex) {
89
-
90
-                     $('#currentbalance').empty();
91
-                     $('#currentbalance').text(currentbalancenex);
92
-                     $('#currentbalance').removeClass('icon-loading');
93
-                }
94
-            });
95
-          }
96
-
97
-          getnexbalance();
98
-
99
-     } else if (provider == "Twilio") {
100
-
101
-          var gettwilbalance = function() {
102
-
103
-            $('#currentbalance').addClass('icon-loading');
104
-
105
-            var gettwilbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalancetwil");
106
-
107
-            $.ajax({
108
-                url: gettwilbalanceUrl + '/' + userid,
109
-                type: "POST",
110
-                data: { userid: userid },
111
-                cache: false,
112
-                processData: false,
113
-                contentType: false,
114
-                success: function(currentbalancetwil) {
115
-
116
-                     $('#currentbalance').empty();
117
-                     $('#currentbalance').text(currentbalancetwil);
118
-                     $('#currentbalance').removeClass('icon-loading');
119
-                }
120
-            });
121
-          }
122
-
123
-          gettwilbalance();
124
-
125
-     } else if (provider == "Flowroute") {
126
-
127
-          var getflowbalance = function() {
128
-
129
-            $('#currentbalance').addClass('icon-loading');
130
-
131
-            var getflowbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalanceflow");
132
-
133
-            $.ajax({
134
-                url: getflowbalanceUrl + '/' + userid,
135
-                type: "POST",
136
-                data: { userid: userid },
137
-                cache: false,
138
-                processData: false,
139
-                contentType: false,
140
-                success: function(currentbalanceflow) {
141
-
142
-                     $('#currentbalance').empty();
143
-                     $('#currentbalance').text(currentbalanceflow);
144
-                     $('#currentbalance').removeClass('icon-loading');
145
-                }
146
-            });
147
-          }
148
-
149
-          getflowbalance();
150
-
151
-       } else if (provider == "") {
152
-                $('#currentbalance').text("");
153
-                $('#currentbalance').removeClass('icon-loading');
154
-       }
155
-  });
156
-
157
-  // Select the Sender ID
158
-  $("#selectcalleridbttn").on("click", function(event) {
159
-
160
-     $('#selectcalleridbttn').addClass('icon-loading');
161
-
162
-     var getsmsnumbersUrl = OC.generateUrl("/apps/sms_relentless/user/getsmsnumbers");
163
-
164
-     $.ajax({
165
-          url: getsmsnumbersUrl + '/' + userid,
166
-          type: "POST",
167
-          data: { userid: userid },
168
-          cache: false,
169
-          processData: false,
170
-          contentType: false,
171
-          success: function(currentnmbrs) {
172
-
173
-                     $('#currentsmsnmbrs').empty();
174
-                     $('#currentsmsnmbrs').append("<option value='' selected='selected' disabled class='optselectsmsnb'>Choose an ID</option>");
175
-
176
-                     $.each(currentnmbrs, function(key, indsmsnmb) {
177
-                         var emptyinit = indsmsnmb.split(":");
178
-                         var emptysec = emptyinit[1];
179
-                         var emptycheck = emptysec.replace(" ", "").replace("+", "");
180
-
181
-                         if (emptycheck != '') {
182
-                             $('#currentsmsnmbrs').append("<option value='"+indsmsnmb+"' class='optselectsmsnb'>"+indsmsnmb+"</option>");
183
-                         }
184
-                     });
185
-
186
-                     $('#selectcalleridbttn').removeClass('icon-loading');
187
-          }
188
-     });
189
-  });
190
-
191
-  // Check the checkbox to send SMS message to multiple recipients
192
-  $('#tomultchckbx').change(function() {
193
-      if ($(this).is(':checked')) {
194
-          $("#multiplerecivers").css("display", "block");
195
-          $("#smstodiv").css("visibility", "hidden");
196
-          $("#smsto").val("");
197
-
198
-          receiversNumbers.length = 0;
199
-
200
-      } else {
201
-          $("#multiplerecivers").css("display", "none");
202
-          $("#smstodiv").css("visibility", "visible");
203
-
204
-          // Remove the uploaded file if any
205
-          $("#induploadfile").remove();
206
-
207
-          receiversNumbers.length = 0;
208
-
209
-          $.ajax({
210
-             url: cleanflUrl + '/' + userid,
211
-             type: "POST",
212
-             data: {userid: userid},
213
-             cache: false,
214
-             processData: false,
215
-             contentType: false
216
-          });
217
-      }
218
-  });
219
-
220
-  // Upload the file with the recipients' phone numbers
221
-  $("#uploadfileforsms").change(function(e) {
222
-
223
-     $("#fileuploadednm").empty();
224
-
225
-     receiversNumbers.length = 0;
226
-
227
-     OC.msg.startAction("#sms_upload_msg", t("sms_relentless", "Uploading ..."));
228
-
229
-     var baseUrl = OC.generateUrl("/apps/sms_relentless/user/upload_numbers_file");
230
-
231
-     var formData = new FormData();
232
-     formData.append('uploadfileforsms', $('#uploadfileforsms')[0].files[0]);
233
-
234
-     var fileup = $('#uploadfileforsms').val();
235
-     var fileuptrim = fileup.split('\\').pop();
236
-
237
-     $('#fileuploadednm').append("<div id='induploadfile' class='indgenflcls'><div id='indfilediv' class='indivflcls'>" + fileuptrim + "</div><div id='indivflremove' class='indupfldl'>X</div></div><br>");
238
-
239
-     var extension = fileup.replace(/^.*\./, '');
240
-
241
-     if (extension == fileup) {
242
-         extension = "";
243
-     } else {
244
-         extension = extension.toLowerCase();
245
-     }
246
-
247
-     var validExtensions = ["txt", "csv"];
248
-
249
-     if (jQuery.inArray(extension, validExtensions) != -1) {
250
-
251
-	// Check if the Sender ID is set
252
-	if ($("#currentsmsnmbrs option[value='']").length > 0) {
253
-            var setId = $('#currentsmsnmbrs :selected').val();
254
-	} else { var setId = ''; }
255
-
256
-	if (setId != '') {
257
-
258
-               $.ajax({
259
-                 url: baseUrl + '/' + userid,
260
-                 type: "POST",
261
-                 data: formData,
262
-                 cache: false,
263
-                 processData: false,
264
-                 contentType: false,
265
-                 success: function(numberarray) {
266
-
267
-		    if (numberarray.length > 0) {
268
-
269
-		        // Get the array of the receivers' phone numbers
270
-		        var setIdsplit = setId.split(":");
271
-		        var smsProvider = setIdsplit[0];
272
-
273
-		        if (smsProvider == "Tx") {
274
-
275
-		             for(key in numberarray) {
276
-		                 receiversNumbers.push("+"+numberarray[key]);
277
-		             }
278
-
279
-		        } else if (smsProvider == "Pl") {
280
-
281
-		             for(key in numberarray) {
282
-		                 receiversNumbers.push(numberarray[key]);
283
-		             }
284
-
285
-		          } else if (smsProvider == "Tw") {
286
-
287
-		             for(key in numberarray) {
288
-		                 receiversNumbers.push(numberarray[key]);
289
-		             }
290
-		          }
291
-
292
-		    } else {
293
-		          alert("The uploaded file doesn't seem to contain any valid phone numbers. Please upload a txt or csv file that contains phone numbers separated by commas, semicolons, vertical bars or new lines.");
294
-		    }
295
-                            
296
-                    // Preview the uploaded file
297
-                    var smsfilename = e.target.files[0].name;
298
-                    var baseUrl = OC.generateUrl("/remote.php/webdav/SMS_Relentless/temp_files/"+smsfilename);
299
-
300
-                    var reader = new FileReader();
301
-                    reader.readAsText(e.target.files[0]);
302
-                    reader.onload = function(e) {
303
-                          $("#smstables").empty();
304
-                          $("#smstables").append(e.target.result.replace(/(?:\r\n|\r|\n)/g, '<br>'));
305
-                    };
306
-
307
-                    $("#smstables").show();
308
-
309
-                    $('#sms_upload_msg').hide();
310
-                    $('#smstables').removeClass('icon-loading');
311
-
312
-                  },
313
-                  error: function(){
314
-                     alert('Error!');
315
-                  }
316
-               });
317
-
318
-        } else {
319
-               alert("Please choose a Sender ID from the Set ID drop-down list!");
320
-               $('#sms_upload_msg').hide();
321
-               $('#smstables').removeClass('icon-loading');
322
-        }
323
-
324
-     } else {
325
-          alert('The file type is not supported ! Supported formats are txt and csv.');
326
-          $('#pf_upload_msg').hide();
327
-          $('#smstables').removeClass('icon-loading');
328
-
329
-          $("#induploadfile").remove();
330
-          $("#sms_upload_msg").hide();
331
-     }
332
-
333
-     //Preview uploaded file when clicked
334
-     $("#indfilediv").on("click", function() {
335
-
336
-          var smsfilename = e.target.files[0].name;
337
-          var baseUrl = OC.generateUrl("/remote.php/webdav/SMS_Relentless/temp_files/"+smsfilename);
338
-
339
-          var reader = new FileReader();
340
-          reader.readAsText(e.target.files[0]);
341
-          reader.onload = function(e) {
342
-                  $("#smstables").empty();
343
-                  $("#smstables").append(e.target.result.replace(/(?:\r\n|\r|\n)/g, '<br>'));
344
-          };
345
-
346
-          $("#smstables").show();
347
-          $('#sms_upload_msg').hide();
348
-          $('#smstables').removeClass('icon-loading');
349
-     });
350
-
351
-     // Remove selected file
352
-     $("#indivflremove").on("click", function() {
353
-
354
-          $("#induploadfile").remove();
355
-          $("#sms_upload_msg").hide();
356
-
357
-          receiversNumbers.length = 0;
358
-
359
-          $.ajax({
360
-             url: cleanflUrl + '/' + userid,
361
-             type: "POST",
362
-             data: {userid: userid},
363
-             cache: false,
364
-             processData: false,
365
-             contentType: false
366
-         });
367
-     });
368
-
369
-  });
370
-
371
-  // Count the characters in the SMS text area
372
-  $("#smstext").on('input', function() {
373
-     $("#char_count").css("display", "inline");
374
-     $(".maxmessagelength").css("display", "inline-block");
375
-
376
-     $("#countchnb").text($(this).val().length);
377
-
378
-     if ($(this).val().length > charcolorthr) {
379
-         $("#char_count").css("color", "#BB2E4B");
380
-     } else {
381
-         $("#char_count").css("color", "#4cbc86;");
382
-     }
383
-  });
384
-
385
-  // Send the SMS message
386
-  $("#submitsms").on("click", function(event) {
387
-
388
-     OC.msg.startAction("#sms_submit_msg", t("sms_relentless", "Sending SMS ... Please wait !"));
389
-     $('#smstables,#recSmsTable,#sentSmsTable').addClass('icon-loading');
390
-
391
-     // Check if the Sender ID is set
392
-     if ($("#currentsmsnmbrs option[value='']").length > 0) {
393
-            var selectedid = $('#currentsmsnmbrs :selected').val();
394
-     } else { var selectedid = ''; }
395
-
396
-     if (selectedid != '') { 
397
-
398
-         var sendersplit = selectedid.split(":");
399
-         var providercap = sendersplit[0];
400
-         var provsec = sendersplit[1];
401
-
402
-         if (/[a-zA-Z]/.test(provsec)) {
403
-             var alphanumcheck = true;
404
-         } else { var alphanumcheck = false; }
405
-
406
-         if (providercap == 'Tx' && alphanumcheck == false) {  
407
-             var senderproc = selectedid.replace(/[^0-9]/g, "");
408
-             var selectedsender = "+" + senderproc;
409
-             var providerUsed = "telnyx";
410
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
411
-         } else if (providercap == 'Pl' && alphanumcheck == false) {
412
-             var selectedsender = selectedid.replace(/[^0-9]/g, "");
413
-             var providerUsed = "plivo";
414
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
415
-         } else if (providercap == 'Tw' && alphanumcheck == false) {  
416
-             var senderproc = selectedid.replace(/[^0-9]/g, "");
417
-             var selectedsender = "+" + senderproc;
418
-             var providerUsed = "twilio";
419
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
420
-         } else if (providercap == 'Fl' && alphanumcheck == false) {  
421
-             var senderproc = selectedid.replace(/[^0-9]/g, "");
422
-             var selectedsender = "+" + senderproc;
423
-             var providerUsed = "flowroute";
424
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
425
-         } else if (providercap == 'Tx' && alphanumcheck == true) {
426
-             var selectedsender = provsec;
427
-             var providerUsed = "telnyx";
428
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
429
-         } else if (providercap == 'Pl' && alphanumcheck == true) {
430
-             var selectedsender = provsec;
431
-             var providerUsed = "plivo";
432
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
433
-         } else if (providercap == 'Tw' && alphanumcheck == true) {
434
-             var selectedsender = provsec;
435
-             var providerUsed = "twilio";
436
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
437
-         } else if (providercap == 'Fl' && alphanumcheck == true) {
438
-             var selectedsender = provsec;
439
-             var providerUsed = "flowroute";
440
-             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
441
-         }
442
-
443
-         // Get the interval between SMS consecutive sending requests, if it's the case
444
-         if ($('#tomultchckbx').is(':checked')) {
445
-
446
-             var numbersfile = 1;
447
-             var initinterval = $("#multsmsinterval").val();
448
-             var secinterval = initinterval.replace(/[^0-9]/g, "");
449
-
450
-             if (secinterval != '') {
451
-                 var tertinterval = parseInt(secinterval);
452
-                     waittime = tertinterval;
453
-             }
454
-
455
-         } else {
456
-
457
-             var numbersfile = 0;
458
-             var toNumberinit = $('#smsto').val();
459
-             var toNumber = toNumberinit.replace(/[^0-9,]/g, "");
460
-             var toNumbersec = toNumber.split(",");
461
-
462
-                 for (var i = 0; i < toNumbersec.length; i++) {
463
-                      toNumbersec[i] = "+" + toNumbersec[i];
464
-                 }
465
-
466
-                 receiversNumbers = toNumbersec.filter(function(v){return v!==""});
467
-         }
468
-
469
-         if (numbersfile == 0 && $('#smsto').val().trim() == '') { receiversNumbers.length = 0; }
470
-
471
-         var smstext = $("#smstext").val();
472
-
473
-         if (receiversNumbers.length != 0) {
474
-
475
-              if (smstext != '') {
476
-                  $.ajax({
477
-                     url: relbaseUrl + '/' + userid,
478
-                     type: "POST",
479
-                     data: {
480
-                           receiversPhoneNbs: receiversNumbers,
481
-                           fromsender: selectedsender,
482
-                           waitinterval: waittime,
483
-                           sentsmstext: smstext
484
-                         },
485
-                     success: function() {
486
-
487
-                           if (receiversNumbers.length == 1) {
488
-                               alert("The message has been sent ! You can press the 'Sent SMS Messages' button to check the current status and the delivery receipt for this message. If they don't appear immediately, wait about 10 seconds and press the 'Sent SMS Messages' button again.");
489
-                           } else { alert("The messages have been sent ! You can press the 'Sent SMS Messages' button to check the current status and the delivery receipt for each message. If they don't appear immediately, wait about 10 seconds and press the 'Sent SMS Messages' button again."); }
490
-
491
-                           $('#sms_submit_msg').hide();
492
-                           $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
493
-                     },
494
-                     error: function(){
495
-                           alert("An error occurred! Please check the recipient's phone number and your settings !");
496
-                           $('#sms_submit_msg').hide();
497
-                           $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
498
-                     }
499
-                  });
500
-              } else {
501
-                     alert("Please enter a message in the text box !");
502
-                     $('#sms_submit_msg').hide();
503
-                     $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
504
-              }
505
-         } else if (receiversNumbers.length == 0 && !($('#tomultchckbx').is(':checked'))) {
506
-                 alert("Please enter the recipient's phone number !");
507
-                 $('#sms_submit_msg').hide();
508
-                 $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
509
-         } else if (receiversNumbers.length == 0 && $('#tomultchckbx').is(':checked')) {
510
-                 alert("Please upload a txt or csv file that contains phone numbers separated by commas, semicolons, vertical bars or new lines !");
511
-                 $('#sms_submit_msg').hide();
512
-                 $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
513
-         }
514
-     } else {
515
-           alert("Please choose a Sender ID from the Set ID drop-down list !");
516
-           $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
517
-           $('#sms_submit_msg').hide();
518
-     }
519
-
520
-  });
521
-
522
-  // Check the checkbox to delete old SMS messages from the database
523
-  $('#deleteoldchckbox').change(function() {
524
-     if ($(this).is(':checked')) {
525
-         $("#deleteoldsms").css("display", "block");
526
-     } else {
527
-         $("#deleteoldsms").css("display", "none");
528
-     }
529
-  });
530
-
531
-  $('#tonmbrformat').css('height', $(window).height() - 260);
532
-  $('#setcalleridtp').css('height', $(window).height() - 160);
533
-  $('#uploadfileinfo').css('height', $(window).height() - 390);
534
-
535
-  $(window).resize(function() { 
536
-    $('#tonmbrformat').css('height', $(window).height() - 260);
537
-    $('#setcalleridtp').css('height', $(window).height() - 160);
538
-    $('#uploadfileinfo').css('height', $(window).height() - 390);
539
-  });
540
-
541
-
542
-
543
-
544 0
deleted file mode 100644
... ...
@@ -1,283 +0,0 @@
1
-/**
2
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
- *
4
- * @author Double Bastion LLC
5
- *
6
- * @license GNU AGPL version 3 or any later version
7
- *
8
- * This program is free software; you can redistribute it and/or
9
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
- * License as published by the Free Software Foundation; either
11
- * version 3 of the License, or any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
- *
18
- * You should have received a copy of the GNU Affero General Public
19
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
- *
21
- */
22
-
23
-$(document).ready(function() {
24
-
25
-  var userid = "<?php p($userId); ?>";
26
-  var strlength;
27
-
28
-  function randomStr(strlength) {
29
-        var fintext = "";
30
-        var keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
31
-        for (var i = 0; i < strlength; i++) {
32
-             fintext += keyspace.charAt(Math.floor(Math.random() * keyspace.length));
33
-        }
34
-        return fintext;
35
-  }
36
-
37
-  $("#generate_tel_rcpt").on("click", function(event) {
38
-
39
-     var teltokenrec = randomStr(70);
40
-     var telnyxwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmstel?telrecparam=') + teltokenrec;
41
-
42
-     $("#telapi_url_rec").val(telnyxwhurlrec);
43
-  });
44
-
45
-  $("#copyToClipboardtel").on("click", function(event) {
46
-     var $tempEl = $("<input>");
47
-     $("body").append($tempEl);
48
-     $tempEl.val($("#telapi_url_rec").val()).select();
49
-     document.execCommand("Copy");
50
-     $tempEl.remove();
51
-     alert("The link has been copied to your clipboard!");
52
-  });
53
-
54
-  $("#generate_tel_delrcpt").on("click", function(event) {
55
-
56
-     var teltoken = randomStr(70);
57
-     var telnyxwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverytel?teldrparam=') + teltoken;
58
-
59
-     $("#telapi_url").val(telnyxwhurl);
60
-  });
61
-
62
-
63
-  $("#generate_nex_rcpt").on("click", function(event) {
64
-
65
-     var plivotokenrec = randomStr(70);
66
-     var plivowhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmsnex?plivorecparam=') + plivotokenrec;
67
-
68
-     $("#nexapi_url_rec").val(plivowhurlrec);
69
-  });
70
-
71
-  $("#copyToClipboardnex").on("click", function(event) {
72
-     var $tempElpl = $("<input>");
73
-     $("body").append($tempElpl);
74
-     $tempElpl.val($("#nexapi_url_rec").val()).select();
75
-     document.execCommand("Copy");
76
-     $tempElpl.remove();
77
-     alert("The link has been copied to your clipboard!");
78
-  });
79
-
80
-  $("#generate_nex_delrcpt").on("click", function(event) {
81
-
82
-     var plivotoken = randomStr(70);
83
-     var plivodrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverynex?plivodrparam=') + plivotoken;
84
-
85
-     $("#nexapi_url").val(plivodrwhurl);
86
-  });
87
-
88
-
89
-  $("#generate_twil_rcpt").on("click", function(event) {
90
-
91
-     var twiltokenrec = randomStr(35);
92
-     var twilwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmstwil?twilrecparam=') + twiltokenrec;
93
-
94
-     $("#twilapi_url_rec").val(twilwhurlrec);
95
-  });
96
-
97
-  $("#copyToClipboardtwil").on("click", function(event) {
98
-     var $tempElpl = $("<input>");
99
-     $("body").append($tempElpl);
100
-     $tempElpl.val($("#twilapi_url_rec").val()).select();
101
-     document.execCommand("Copy");
102
-     $tempElpl.remove();
103
-     alert("The link has been copied to your clipboard!");
104
-  });
105
-
106
-  $("#generate_twil_delrcpt").on("click", function(event) {
107
-
108
-     var twiltoken = randomStr(35);
109
-     var twildrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverytwil?twildrparam=') + twiltoken;
110
-
111
-     $("#twilapi_url").val(twildrwhurl);
112
-  });
113
-
114
-
115
-  $("#generate_flow_rcpt").on("click", function(event) {
116
-
117
-     var flowtokenrec = randomStr(70);
118
-     var flowwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmsflow?flowrecparam=') + flowtokenrec;
119
-
120
-     $("#flowapi_url_rec").val(flowwhurlrec);
121
-  });
122
-
123
-  $("#copyToClipboardflow").on("click", function(event) {
124
-     var $tempElpl = $("<input>");
125
-     $("body").append($tempElpl);
126
-     $tempElpl.val($("#flowapi_url_rec").val()).select();
127
-     document.execCommand("Copy");
128
-     $tempElpl.remove();
129
-     alert("The link has been copied to your clipboard!");
130
-  });
131
-
132
-  $("#generate_flow_delrcpt").on("click", function(event) {
133
-
134
-     var flowtoken = randomStr(70);
135
-     var flowdrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliveryflow?flowdrparam=') + flowtoken;
136
-
137
-     $("#flowapi_url").val(flowdrwhurl);
138
-  });
139
-
140
-
141
-  $("#save_sms_settings").on("click", function(event) {
142
-
143
-    event.preventDefault();
144
-    OC.msg.startAction('#smsr_save_msg', t('sms_relentless', 'Saved'));
145
-
146
-    var baseUrl = OC.generateUrl('/apps/sms_relentless/user/updatesettings');
147
-
148
-    var messagesperpageinit = $("#messagesperpage").val();
149
-    var messagesperpagesec = messagesperpageinit.replace(/[^0-9]/g, '');
150
-
151
-    if (messagesperpagesec != '') {
152
-        var messagesperpageproc = messagesperpagesec;
153
-    } else {
154
-        var messagesperpageproc = 100;
155
-    }
156
-
157
-    var getnotify = 0;
158
-
159
-    if ($("#get_notify").is(':checked')) {
160
-        getnotify = 1;
161
-    }
162
-
163
-    var emailaddressinit = $("#notification_email").val();
164
-
165
-    function validate_email($email) {
166
-        var email_reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
167
-        return email_reg.test($email);
168
-    }
169
-
170
-    if (validate_email(emailaddressinit)) {
171
-         var notifyemail = emailaddressinit;
172
-    } else {
173
-         var notifyemail = '';
174
-    }
175
-
176
-    var telsenderinit = $("#tel_sender_name").val();
177
-    var telsenderproc = telsenderinit.replace(/[^A-Za-z 0-9]/g, '');
178
-
179
-    var nexsenderinit = $("#nex_sender_name").val();
180
-    var nexsenderproc = nexsenderinit.replace(/[^A-Za-z 0-9]/g, '');
181
-
182
-    var twilsenderinit = $("#twil_sender_name").val();
183
-    var twilsenderproc = twilsenderinit.replace(/[^A-Za-z 0-9]/g, '');
184
-
185
-    var flowsenderinit = $("#flow_sender_name").val();
186
-    var flowsenderproc = flowsenderinit.replace(/[^A-Za-z 0-9]/g, '');
187
-
188
-    var includesmsinemail = 0;
189
-
190
-    if ($("#includesmsinemail").is(':checked')) {
191
-        includesmsinemail = 1;
192
-    }
193
-
194
-    var datatosave = {
195
-                      userId: userid,
196
-                      telapiKey: $("#telapi_key").val(),
197
-                      telPubKey: $("#tel_pub_key").val(),
198
-                      telapiUrlRec: $("#telapi_url_rec").val(),
199
-                      telapiUrl: $("#telapi_url").val(),
200
-                      messagingProfileId: $("#messaging_profile_id").val(),
201
-                      nexapiKey: $("#nexapi_key").val(),
202
-                      nexapiSecret: $("#nexapi_secret").val(),
203
-                      nexapiUrlRec: $("#nexapi_url_rec").val(),
204
-                      nexapiUrl: $("#nexapi_url").val(),
205
-                      twilapiKey: $("#twilapi_key").val(),
206
-                      twilapiSecret: $("#twilapi_secret").val(),
207
-                      twilapiUrlRec: $("#twilapi_url_rec").val(),
208
-                      twilapiUrl: $("#twilapi_url").val(),
209
-                      flowapiKey: $("#flowapi_key").val(),
210
-                      flowapiSecret: $("#flowapi_secret").val(),
211
-                      flowapiUrlRec: $("#flowapi_url_rec").val(),
212
-                      flowapiUrl: $("#flowapi_url").val(),
213
-                      telSenderName: telsenderproc,
214
-                      nexSenderName: nexsenderproc,
215
-                      twilSenderName: twilsenderproc,
216
-                      flowSenderName: flowsenderproc,
217
-                      messagesperpage: messagesperpageproc,
218
-                      getNotify: getnotify,
219
-                      notificationEmail: notifyemail,
220
-                      getsmsinemail: includesmsinemail
221
-    };
222
-
223
-
224
-    $.ajax({
225
-       method: 'PUT',
226
-       url: baseUrl + '/' + userid,
227
-       contentType: 'application/json',
228
-       data: JSON.stringify(datatosave),
229
-       error: function(resp) {
230
-            alert('Error ! Please check your settings !');
231
-       }
232
-    });
233
-
234
-  });
235
-
236
-
237
-  var baseUrlget = OC.generateUrl('/apps/sms_relentless/user/getsettings');
238
-
239
-  $.ajax({
240
-     method: 'GET',
241
-     url: baseUrlget + '/' + userid,
242
-     contentType: 'application/json',
243
-     success: function(settingsfromdb) {
244
-         $("#telapi_key").val(settingsfromdb.telapi_key);
245
-         $("#tel_pub_key").val(settingsfromdb.tel_pub_key);
246
-         $("#telapi_url_rec").val(settingsfromdb.telapi_url_rec);
247
-         $("#telapi_url").val(settingsfromdb.telapi_url);
248
-         $("#messaging_profile_id").val(settingsfromdb.messaging_profile_id);
249
-         $("#nexapi_key").val(settingsfromdb.nexapi_key);
250
-         $("#nexapi_secret").val(settingsfromdb.nexapi_secret);
251
-         $("#nexapi_url_rec").val(settingsfromdb.nexapi_url_rec);
252
-         $("#nexapi_url").val(settingsfromdb.nexapi_url);
253
-         $("#twilapi_key").val(settingsfromdb.twilapi_key);
254
-         $("#twilapi_secret").val(settingsfromdb.twilapi_secret);
255
-         $("#twilapi_url_rec").val(settingsfromdb.twilapi_url_rec);
256
-         $("#twilapi_url").val(settingsfromdb.twilapi_url);
257
-         $("#flowapi_key").val(settingsfromdb.flowapi_key);
258
-         $("#flowapi_secret").val(settingsfromdb.flowapi_secret);
259
-         $("#flowapi_url_rec").val(settingsfromdb.flowapi_url_rec);
260
-         $("#flowapi_url").val(settingsfromdb.flowapi_url);
261
-         $("#tel_sender_name").val(settingsfromdb.tel_sender_name);
262
-         $("#nex_sender_name").val(settingsfromdb.nex_sender_name);
263
-         $("#twil_sender_name").val(settingsfromdb.twil_sender_name);
264
-         $("#flow_sender_name").val(settingsfromdb.flow_sender_name);
265
-         $("#messagesperpage").val(settingsfromdb.messagesperpage);
266
-
267
-         if (settingsfromdb.get_notify == 1) {
268
-             $("#get_notify").attr('checked', true);
269
-         } else {
270
-             $("#get_notify").attr('checked', false);
271
-         }
272
-
273
-         $("#notification_email").val(settingsfromdb.notification_email);
274
-
275
-         if (settingsfromdb.getsmsinemail == 1) {
276
-             $("#includesmsinemail").attr('checked', true);
277
-         } else {
278
-             $("#includesmsinemail").attr('checked', false);
279
-         }
280
-     }
281
-  });
282
-
283
-});
284 0
deleted file mode 100644
... ...
@@ -1,1100 +0,0 @@
1
-/**
2
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
- *
4
- * @author Double Bastion LLC
5
- *
6
- * @license GNU AGPL version 3 or any later version
7
- *
8
- * This program is free software; you can redistribute it and/or
9
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
- * License as published by the Free Software Foundation; either
11
- * version 3 of the License, or any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
- *
18
- * You should have received a copy of the GNU Affero General Public
19
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
- *
21
- */
22
-
23
-$(document).ready(function() {
24
-
25
-  var userid = "<?php p($userId); ?>";
26
-  var parseddata = null;
27
-  var sentparseddata = null;
28
-
29
-  // Set the default number of messages per page
30
-  var messagesperpage = 100;
31
-
32
-  // Get the number of messages per page from the database
33
-  var getNoPerPageUrl = OC.generateUrl("/apps/sms_relentless/user/getmessagesperpage");
34
-
35
-  $.ajax({
36
-        url: getNoPerPageUrl + '/' + userid,
37
-        method: 'GET',
38
-        success: function(mesperpagedb) {
39
-                 messagesperpage = parseInt(mesperpagedb);
40
-
41
-        },
42
-        error: function(mesperpagedb) {
43
-               alert("An error occurred. Please check your settings!");
44
-        }
45
-  });
46
-
47
-  // List received messages
48
-  $("#receivedsmstable").on("click", function(event) {
49
-
50
-     $('#smstables').empty();
51
-     var getReceivedUrl = OC.generateUrl("/apps/sms_relentless/user/getreceivedtable");
52
-
53
-     $('#smstables').addClass('icon-loading');
54
-
55
-     $.ajax({
56
-          url: getReceivedUrl + '/' + userid,
57
-          method: 'GET',
58
-          dataType:'text',
59
-          success: function(recdatafromdb) {
60
-
61
-                parseddata = $.parseJSON(recdatafromdb);
62
-
63
-                $('#smstables').append("<div id='toptablerec'><div class='topbuttonandpage'><span id='recarrow' title='Show/Hide filters and Delete button'></span></div><div id='paginationrec' class='recpages'>Pages </div></div>");
64
-                $('#smstables').append("<table id='recSmsTable'></table>");
65
-
66
-                $('#recSmsTable').append("<tr id='recfiltersrow'><td class='selectalldvfilter'><button id='clearrecfilters' title='Clear all filters.'></button><button id='deleterecrows' title='Permanently delete the selected row(s) from below from the database.'></button></td><td class='selectalldvfilter'><input type='text' id='dbidtextrec' class='indivfilterrec' title='Enter a database ID number to apply the filter.'><input type='submit' id='databaseidfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified database ID.' /></td><td class='selectalldvfilter'><input type='text' id='useridtextrec' class='indivfilterrec' title='Enter a Nextcloud username to apply the filter.' /><input type='submit' id='useridfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified username.' /></td><td class='selectalldvfilter'><input type='text' id='messageidtextrec' class='indivfilterrec' title='Enter a fragment from a message ID to apply the filter.'  /><input type='submit' id='messageidfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='datetextrec' class='indivfilterrec' title='Enter a fragment of a date to apply the filter.'/><input type='submit' id='datefilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='fromtextrec' class='indivfilterrec' title='Enter a fragment of a sender&#146s phone number or alphanumeric sender ID, to apply the filter.' /><input type='submit' id='fromfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='totextrec' class='indivfilterrec' value='' title='Enter a fragment of a recipient&#146s phone number to apply the filter.'  /><input type='submit' id='tofilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='messagetextrec' class='indivfilterrec' title='Enter a fragment of a message to apply the filter.' /><input type='submit' id='messagefilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.'/></td></tr>");
67
-                $('#recSmsTable').append("<tr class='receivedrows' id='recheaderrow'><th id='selectalldv' class='selectsmsdv'><input type='checkbox' id='selectAllChckbx' class ='indivchckbx' title='Select all rows.' /></th><th title='The database ID of each message.'>DB<br>ID</th><th>User ID</th><th>Message ID</th><th>Date</th><th>From</th><th>To</th><th>Received Message</th></tr>");
68
-
69
-                $('#recfiltersrow').hide();
70
-
71
-                for (var i = 0; i < parseddata.length; i++) {
72
-                     $("#recSmsTable").append("<tr id='singlerow_"+i+"' class='receivedrowsbody'><td class='selectsmsdv'><input type='checkbox' id='selectspec_"+i+"' class='indivchckbx' /></td><td class='dbidcolumnrec'>"+parseddata[i].id+"</td><td class='useridcolrec'>"+parseddata[i].user_id+"</td><td class='messageidcolrec'>"+parseddata[i].message_id+"</td><td class='datecolrec'>"+parseddata[i].date+"</td><td class='fromcolumnrec'>"+parseddata[i].from+"</td><td class='tocolrec'>"+parseddata[i].to+"</td><td class='messagecolumnrec'>"+parseddata[i].message+"</td></tr>");
73
-                }
74
-
75
-                $('#smstables').append("<div id='totalrecmessages'>Total displayed messages: " + parseddata.length + "</div>");
76
-
77
-                $('#smstables').removeClass('icon-loading');
78
-
79
-                $('#recarrow').removeClass('arrowUpCl');
80
-                $('#recarrow').addClass('arrowDownCl');
81
-
82
-                // Add pagination
83
-                var rowsShown = messagesperpage;
84
-                var rowsTotal = $("#recSmsTable tr").length;
85
-
86
-                var numPages = (rowsTotal - 2) / rowsShown;
87
-
88
-                for (i = 0; i < numPages; i++) {
89
-                     var pageNum = i + 1;
90
-                     $('#paginationrec').append('<a href="#" rel="' + i + '" class="pagenumbersrec">' + pageNum + '</a> ');
91
-                }
92
-
93
-                $('#paginationrec').children(":first").addClass('active');
94
-
95
-                $(".receivedrowsbody").hide();
96
-
97
-                $('#paginationrec a:first').addClass('active');
98
-
99
-                // Show table page when clicking a page number
100
-                $('.recpages a').bind('click', function() {
101
-
102
-                   $('#paginationrec').children().removeClass('active');
103
-
104
-                   $(this).addClass('active');
105
-
106
-                   var currentPageNo = $(this).text();
107
-
108
-                   $('#paginationrec a').each(function() {
109
-                       if ($(this).text() == currentPageNo) {
110
-                           $(this).addClass('active');
111
-                       }
112
-                   });
113
-
114
-                   // Sort table rows
115
-		   var rows = $('#recSmsTable tr').get();
116
-
117
-		   rows.sort(function(a, b) {
118
-
119
-		        var A = parseInt($('td.dbidcolumnrec', a).text());
120
-		        var B = parseInt($('td.dbidcolumnrec', b).text());
121
-
122
-		        if (A < B) {
123
-		            return -1;
124
-		        }
125
-
126
-		        if (A > B) {
127
-		            return 1;
128
-		        }
129
-
130
-		        return 0;
131
-		   });
132
-
133
-		   $.each(rows, function(index, row) {
134
-		      $('#recSmsTable').append(row);
135
-		   });
136
-
137
-                   var currPage = $(this).attr('rel');
138
-                   var startItem = currPage * rowsShown;
139
-                   var endItem = startItem + rowsShown;
140
-
141
-                   $(".receivedrowsbody").hide().slice(startItem, endItem).css('display', 'table-row');
142
-
143
-                   $('#totalrecmessages').remove();
144
-                   $('#smstables').append("<div id='totalrecmessages'>Total displayed messages: " + parseddata.length + "</div>");
145
-                });
146
-
147
-                $('#paginationrec').children(":last").trigger('click');
148
-
149
-                // Select all records
150
-                $('#selectAllChckbx').change(function() {
151
-                  if ($(this).is(':checked')) {
152
-                       $(".indivchckbx").prop("checked", true);
153
-                  } else {
154
-                       $(".indivchckbx").prop("checked", false);
155
-                  }
156
-                });
157
-
158
-                function reorderRecRows() {
159
-                   var currenttext = $(".filterbuttonsrec").closest('[class="filterbuttonsrec"]').find('[class="indivfilterrec"]').text();
160
-                   if (currenttext == '') {
161
-                       $('tr').sort(function (a, b) {
162
-                          return parseInt($('td.dbidcolumnrec', b).text()) < parseInt($('td.dbidcolumnrec', a).text());
163
-                       }).appendTo("#recSmsTable");
164
-                   }
165
-                }
166
-
167
-                // Filter rows
168
-                $("#databaseidfilter").on("click", function(event) {
169
-
170
-                      var databaseId = $("#dbidtextrec").val();
171
-                      var msgrowsNo = 0;
172
-
173
-                      $(".receivedrowsbody").each(function() {
174
-
175
-                          var checkrecEmpty1 = 0;
176
-                          $(".indivfilterrec").not("#dbidtextrec").each(function() {
177
-                              if ($(this).val() != '') {
178
-                                  checkrecEmpty1 = 1;
179
-                              }
180
-                          });
181
-
182
-                          if (checkrecEmpty1 == 0) {
183
-                              $(this).show();
184
-                          }
185
-
186
-                          if (databaseId != '') {
187
-                             if ($(this).find('[class="dbidcolumnrec"]').text() == databaseId) {
188
-                                $("#recSmsTable").append(this);
189
-                                if ($(this).is(":visible")) { msgrowsNo++; }
190
-                             } else {
191
-                                $(this).hide();
192
-                             }
193
-                          } else {
194
-                                $(this).show();
195
-                                msgrowsNo++;
196
-                          }
197
-                      });
198
-
199
-                      reorderRecRows();
200
-                      $('#totalrecmessages').remove();
201
-                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
202
-                });
203
-
204
-
205
-                $("#useridfilter").on("click", function(event) {
206
-
207
-                      var useridtxt = $("#useridtextrec").val().toLowerCase();
208
-                      var msgrowsNo = 0;
209
-
210
-                      $(".receivedrowsbody").each(function() {
211
-
212
-                          var checkrecEmpty2 = 0;
213
-                          $(".indivfilterrec").not("#useridtextrec").each(function() {
214
-                              if ($(this).val() != '') {
215
-                                  checkrecEmpty2 = 1;
216
-                              }
217
-                          });
218
-
219
-                          if (checkrecEmpty2 == 0) {
220
-                              $(this).show();
221
-                          }
222
-
223
-                          if (useridtxt != '') {
224
-                             var useridfound = $(this).find('[class="useridcolrec"]').text().toLowerCase();
225
-                             if(useridfound.indexOf(useridtxt) != -1) {
226
-                                $("#recSmsTable").append(this);
227
-                                if ($(this).is(":visible")) { msgrowsNo++; }
228
-                             } else {
229
-                                $(this).hide();
230
-                             }
231
-                          } else {
232
-                                $(this).show();
233
-                                msgrowsNo++;
234
-                          }
235
-                      });
236
-
237
-                      reorderRecRows();
238
-                      $('#totalrecmessages').remove();
239
-                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
240
-
241
-                });
242
-
243
-                $("#messageidfilter").on("click", function(event) {
244
-
245
-                      var messageidtxt = $("#messageidtextrec").val().toLowerCase();
246
-                      var msgrowsNo = 0;
247
-
248
-                      $(".receivedrowsbody").each(function() {
249
-
250
-                          var checkrecEmpty3 = 0;
251
-                          $(".indivfilterrec").not("#messageidtextrec").each(function() {
252
-                              if ($(this).val() != '') {
253
-                                  checkrecEmpty3 = 1;
254
-                              }
255
-                          });
256
-
257
-                          if (checkrecEmpty3 == 0) {
258
-                              $(this).show();
259
-                          }
260
-
261
-                          if (messageidtxt != '') {
262
-                             var foundtdmssgid = $(this).find('[class="messageidcolrec"]').text().toLowerCase();
263
-                             if (foundtdmssgid.indexOf(messageidtxt) != -1) {
264
-                                $("#recSmsTable").append(this);
265
-                                if ($(this).is(":visible")) { msgrowsNo++; }
266
-                             } else {
267
-                                $(this).hide();
268
-                             }
269
-                          } else {
270
-                                $(this).show();
271
-                                msgrowsNo++;
272
-                          }
273
-                      });
274
-
275
-                      reorderRecRows();
276
-                      $('#totalrecmessages').remove();
277
-                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
278
-                });
279
-
280
-                $("#datefilter").on("click", function(event) {
281
-
282
-                      var datetxtvr = $("#datetextrec").val().toLowerCase();
283
-                      var msgrowsNo = 0;
284
-
285
-                      $(".receivedrowsbody").each(function() {
286
-
287
-                          var checkrecEmpty4 = 0;
288
-                          $(".indivfilterrec").not("#datetextrec").each(function() {
289
-                              if ($(this).val() != '') {
290
-                                  checkrecEmpty4 = 1;
291
-                              }
292
-                          });
293
-
294
-                          if (checkrecEmpty4 == 0) {
295
-                              $(this).show();
296
-                          }
297
-
298
-                          if (datetxtvr != '') {
299
-                              var founddate = $(this).find('[class="datecolrec"]').text().toLowerCase();
300
-                              if (founddate.indexOf(datetxtvr) != -1) {
301
-                                  $("#recSmsTable").append(this);
302
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
303
-                              } else {
304
-                                  $(this).hide();
305
-                              }
306
-                          } else {
307
-                                  $(this).show();
308
-                                  msgrowsNo++;
309
-                          }
310
-                      });
311
-
312
-                      reorderRecRows();
313
-                      $('#totalrecmessages').remove();
314
-                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
315
-                });
316
-
317
-                $("#fromfilter").on("click", function(event) {
318
-
319
-                      var fromtxtvr = $("#fromtextrec").val().toLowerCase();
320
-                      var msgrowsNo = 0;
321
-
322
-                      $(".receivedrowsbody").each(function() {
323
-
324
-                          var checkrecEmpty5 = 0;
325
-                          $(".indivfilterrec").not("#fromtextrec").each(function() {
326
-                              if ($(this).val() != '') {
327
-                                  checkrecEmpty5 = 1;
328
-                              }
329
-                          });
330
-
331
-                          if (checkrecEmpty5 == 0) {
332
-                              $(this).show();
333
-                          }
334
-
335
-                          if (fromtxtvr != '') {
336
-                             var foundfrom = $(this).find('[class="fromcolumnrec"]').text().toLowerCase();
337
-                             if (foundfrom.indexOf(fromtxtvr) != -1) {
338
-                                 $("#recSmsTable").append(this);
339
-                                 if ($(this).is(":visible")) { msgrowsNo++; }
340
-                             } else {
341
-                                 $(this).hide();
342
-                             }
343
-                          } else {
344
-                                 $(this).show();
345
-                                 msgrowsNo++;
346
-                          }
347
-                      });
348
-
349
-                      reorderRecRows();
350
-                      $('#totalrecmessages').remove();
351
-                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
352
-                });
353
-
354
-                $("#tofilter").on("click", function(event) {
355
-
356
-                      var totxtvr = $("#totextrec").val().toLowerCase();
357
-                      var msgrowsNo = 0;
358
-
359
-                      $(".receivedrowsbody").each(function() {
360
-
361
-                          var checkrecEmpty6 = 0;
362
-                          $(".indivfilterrec").not("#totextrec").each(function() {
363
-                              if ($(this).val() != '') {
364
-                                  checkrecEmpty6 = 1;
365
-                              }
366
-                          });
367
-
368
-                          if (checkrecEmpty6 == 0) {
369
-                              $(this).show();
370
-                          }
371
-
372
-                          if (totxtvr != '') {
373
-                             var foundto = $(this).find('[class="tocolrec"]').text().toLowerCase();
374
-                             if (foundto.indexOf(totxtvr) != -1) {
375
-                                 $("#recSmsTable").append(this);
376
-                                 if ($(this).is(":visible")) { msgrowsNo++; }
377
-                             } else {
378
-                                 $(this).hide();
379
-                             }
380
-                          } else {
381
-                                 $(this).show();
382
-                                 msgrowsNo++;
383
-                          }
384
-                      });
385
-
386
-                      reorderRecRows();
387
-                      $('#totalrecmessages').remove();
388
-                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
389
-                });
390
-
391
-                $("#messagefilter").on("click", function(event) {
392
-
393
-                      var messagetxtvr = $("#messagetextrec").val().toLowerCase();
394
-                      var msgrowsNo = 0;
395
-
396
-                      $(".receivedrowsbody").each(function() {
397
-
398
-                          var checkrecEmpty7 = 0;
399
-                          $(".indivfilterrec").not("#messagetextrec").each(function() {
400
-                              if ($(this).val() != '') {
401
-                                  checkrecEmpty7 = 1;
402
-                              }
403
-                          });
404
-
405
-                          if (checkrecEmpty7 == 0) {
406
-                              $(this).show();
407
-                          }
408
-
409
-                          if (messagetxtvr != '') {
410
-                             var foundmessage = $(this).find('[class="messagecolumnrec"]').text().toLowerCase();
411
-                             if (foundmessage.indexOf(messagetxtvr) != -1) {
412
-                                $("#recSmsTable").append(this);
413
-                                if ($(this).is(":visible")) { msgrowsNo++; }
414
-                             } else {
415
-                                $(this).hide();
416
-                             }
417
-                          } else {
418
-                                $(this).show();
419
-                                msgrowsNo++;
420
-                          }
421
-                      });
422
-
423
-                      reorderRecRows();
424
-                      $('#totalrecmessages').remove();
425
-                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
426
-               });
427
-
428
-               // Clear all filters
429
-               $("#clearrecfilters").on("click", function(event) {
430
-                      $(".receivedrowsbody").each(function() {
431
-                          $(this).show();
432
-                      });
433
-                      $(".indivfilterrec").val("");
434
-                      $('#totalrecmessages').remove();
435
-                      $('#smstables').append("<div id='totalrecmessages'>Total displayed messages: " + parseddata.length + "</div>");
436
-               });
437
-
438
-               // Delete selected rows from the database
439
-               $("#deleterecrows").on("click", function() {
440
-                  var checkcheckbx = jQuery("#recSmsTable input[type=checkbox]:checked").length;
441
-                  if (checkcheckbx == 0) {
442
-                     alert("Please select the row(s) to permanently delete from the database !");
443
-                  } else {
444
-                          var checkboxIds = [];
445
-                          $(".receivedrowsbody").each(function() {
446
-                             var rowcheckbx = $(this).find('input[type="checkbox"]');
447
-                             if (rowcheckbx.is(":checked")) {
448
-                                 var dbrowid = $(this).find('[class="dbidcolumnrec"]').text();
449
-                                 checkboxIds.push(dbrowid);
450
-                             }
451
-                          });
452
-
453
-                          if (confirm("Please note that the row(s) you selected will be permanently deleted from the database, without being saved before removal. This action cannot be undone ! If you really want to permanently delete the selected row(s) press 'OK'.")) {
454
-
455
-                              var deleterecRowsUrl = OC.generateUrl("/apps/sms_relentless/user/removerecrows");
456
-                              $('#smstables').addClass('icon-loading');
457
-
458
-                              $.ajax({
459
-                                   url: deleterecRowsUrl + '/' + userid,
460
-                                   method: "POST",
461
-                                   dataType:'text',
462
-                                   data: {recmessagedbIDs: checkboxIds},
463
-                                   success: function() {
464
-                                            alert("The row(s) have been deleted successfully !");
465
-                                            $('#smstables').removeClass('icon-loading');
466
-                                            $('#receivedsmstable').click();
467
-                                   },
468
-                                   error: function() {
469
-                                            alert("There was an error while deleting the selected row(s) !");
470
-                                            $('#smstables').removeClass('icon-loading');
471
-                                   }
472
-                              });
473
-                          }
474
-                  }
475
-               });
476
-
477
-
478
-               // Show/Hide filter row
479
-	       $('#recarrow').on('click', function() {
480
-	          if ($('#recfiltersrow').is(':visible')) {
481
-		      $('#recfiltersrow').hide();
482
-                      $('#recheaderrow').css('top', '0px');
483
-                      $(this).removeClass('arrowUpCl');
484
-                      $(this).addClass('arrowDownCl');
485
-		  } else {
486
-		      $('#recfiltersrow').show();
487
-                      $('#recheaderrow').css('top', '158px');
488
-                      $(this).removeClass('arrowDownCl');
489
-                      $(this).addClass('arrowUpCl');
490
-                  }
491
-               });
492
-          },
493
-          error: function(recdatafromdb) {
494
-                      alert("An error occurred. Please check your settings!");
495
-                      $('#smstables').removeClass('icon-loading');
496
-          }
497
-     });
498
-
499
-  });
500
-
501
-
502
-  // List sent messages
503
-  $("#sentsmstable").on("click", function(event) {
504
-
505
-     $('#smstables').empty();
506
-
507
-     var getSentUrl = OC.generateUrl("/apps/sms_relentless/user/getsenttable");
508
-     $('#smstables').addClass('icon-loading');
509
-
510
-     $.ajax({
511
-          url: getSentUrl + '/' + userid,
512
-          method: "GET",
513
-          dataType:'text',
514
-          success: function(sentdatafromdb) {
515
-
516
-                sentparseddata = $.parseJSON(sentdatafromdb);
517
-
518
-                $('#smstables').append("<div id='toptablesent'><div class='topbuttonandpage'><span id='sentarrow' title='Show/Hide filters and Delete button'></span></div><div id='paginationsent' class='pages'>Pages </div></div>");
519
-                $('#smstables').append("<table id='sentSmsTable'></table>");
520
-                $('#sentSmsTable').append("<tr id='sentfiltersrow'><td class='selectalldvfilter'><button id='clearsentfilters' title='Clear all filters.'></button><button id='deletesentrows' title='Permanently delete the selected row(s) from below from the database.'></button></td><td class='selectalldvfilter'><input type='text' id='dbidtextsent' class='indivfiltersent' title='Enter a database ID number to apply the filter.'><input type='submit' id='databaseidfilter' class='filterbuttonsent' value='' title='Filter rows by the specified database ID.' /></td><td class='selectalldvfilter'><input type='text' id='useridtext' class='indivfiltersent' title='Enter a Nextcloud username to apply the filter.' /><input type='submit' id='useridfilter' class='filterbuttonsent' value='' title='Filter rows by the specified username.' /></td><td class='selectalldvfilter'><input type='text' id='messageidtext' class='indivfiltersent' title='Enter a fragment from a message ID to apply the filter.'  /><input type='submit' id='messageidfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='datetext' class='indivfiltersent' title='Enter a fragment of a date to apply the filter.'/><input type='submit' id='datefilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='fromtext' class='indivfiltersent' title='Enter a fragment of a sender&#146s phone number or alphanumeric Sender ID, to apply the filter.' /><input type='submit' id='fromfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='totext' class='indivfiltersent' value='' title='Enter a fragment of a recipient&#146s phone number to apply the filter.'  /><input type='submit' id='tofilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='networktext' class='indivfiltersent' title='Enter a fragment of a network number to apply the filter.' /><input type='submit' id='networkfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='pricetext' class='indivfiltersent' title='Enter a fragment of a price string to apply the filter.' /><input type='submit' id='pricefilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='statustext' class='indivfiltersent' title='Enter a fragment of a status to apply the filter.' /><input type='submit' id='statusfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='deliveryrcpttext' class='indivfiltersent' title='Enter a fragment of a delivery receit to apply the filter.' /><input type='submit' id='deliveryrecfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='messagetext' class='indivfiltersent' title='Enter a fragment of a message to apply the filter.' /><input type='submit' id='messagefilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td></tr>");
521
-                $('#sentSmsTable').append("<tr class='sentrows' id='sentheaderrow'><th id='selectalldv' class='selectsmsdv'><input type='checkbox' id='selectAllChckbx' class ='indivchckbx' title='Select all rows.' /></th><th title='The database ID of each message.'>DB<br>ID</th><th>User ID</th><th>Message ID</th><th>Date</th><th>From</th><th>To</th><th title='You can find the names of the operators with these codes on: https://en.wikipedia.org/wiki/Mobile_country_code'>Network</th><th title='The currency is the one set up in your account.'>Price</th><th id='sentstatuscolumn'>Status</th><th title='Not all delivery receipts guarantee that the target received the message. Some delivery receipts represent successful completion of just one step in the delivery process, such as transmitting the message to another telephony operator.'>Delivery<br>Receit</th><th>Sent Message</th></tr>");
522
-
523
-                $('#sentfiltersrow').hide();
524
-
525
-                for (var i = 0; i < sentparseddata.length; i++) {
526
-                     $('#sentSmsTable').append("<tr id='singlerow_"+i+"' class='sentrowsbody'><td class='selectsmsdv'><input type='checkbox' id='selectspec_"+i+"' class='indivchckbx' /></td><td class='sentdbidcolumn'>"+sentparseddata[i].id+"</td><td class='useridcolsent'>"+sentparseddata[i].user_id+"</td><td class='messageidcolsent'>"+sentparseddata[i].message_id+"</td><td class='datecolsent'>"+sentparseddata[i].date+"</td><td class='fromcolumnsent'>"+sentparseddata[i].from+"</td><td class='tocolumnsent'>"+sentparseddata[i].to+"</td><td class='networkcolumnsent'>"+sentparseddata[i].network+"</td><td class='pricecolumnsent'>"+sentparseddata[i].price+"</td><td class='statuscolumnsent'>"+sentparseddata[i].status+"</td><td class='deliveryrcptcolsent'>"+sentparseddata[i].deliveryreceipt+"</td><td class='messagecolumnsent'>"+sentparseddata[i].message+"</td></tr>");
527
-                }
528
-
529
-                $('#smstables').append("<div id='totalsentmessages'><span>Total displayed messages: " + sentparseddata.length + "</span></div>");
530
-
531
-                $('#smstables').removeClass('icon-loading');
532
-
533
-                $('#sentarrow').removeClass('arrowUpCl');
534
-                $('#sentarrow').addClass('arrowDownCl');
535
-
536
-                // Add pagination
537
-                var rowsShown = messagesperpage;
538
-                var rowsTotal = $("#sentSmsTable tr").length;
539
-                var numPages = (rowsTotal - 2) / rowsShown;
540
-
541
-                for (i = 0; i < numPages; i++) {
542
-                     var pageNum = i + 1;
543
-                     $('#paginationsent').append('<a href="#" rel="' + i + '" class="pagenumbers">' + pageNum + '</a> ');
544
-                }
545
-
546
-                $('#paginationsent').children(":first").addClass('active');
547
-
548
-                $(".sentrowsbody").hide();
549
-
550
-                $('#paginationsent a:first').addClass('active');
551
-
552
-                // Show table page when clicking on page number
553
-                $('.pages a').bind('click', function () {
554
-
555
-                      $('#paginationsent').children().removeClass('active');
556
-
557
-                      $(this).addClass('active');
558
-
559
-                      var currentsentPgNo = $(this).text();
560
-
561
-                      $('#paginationsent a').each(function() {
562
-                         if ($(this).text() == currentsentPgNo) {
563
-                             $(this).addClass('active');
564
-                         }
565
-                      });
566
-
567
-                      // Sort table rows
568
-		      var rows = $('#sentSmsTable tr').get();
569
-
570
-		      rows.sort(function(a, b) {
571
-
572
-		           var A = parseInt($('td.sentdbidcolumn', a).text());
573
-		           var B = parseInt($('td.sentdbidcolumn', b).text());
574
-
575
-		           if (A < B) {
576
-		               return -1;
577
-		           }
578
-
579
-		           if (A > B) {
580
-		               return 1;
581
-		           }
582
-
583
-		           return 0;
584
-		      });
585
-
586
-		      $.each(rows, function(index, row) {
587
-		         $('#sentSmsTable').append(row);
588
-		      });
589
-
590
-                      var currPage = $(this).attr('rel');
591
-                      var startItem = currPage * rowsShown;
592
-                      var endItem = startItem + rowsShown;
593
-
594
-                      $('.sentrowsbody').hide().slice(startItem, endItem).css('display', 'table-row');
595
-
596
-                      $('#totalsentmessages').remove();
597
-                      $('#smstables').append("<div id='totalsentmessages'>Total displayed messages: " + sentparseddata.length + "</div>");
598
-                });
599
-
600
-                $('#paginationsent').children(":last").trigger('click');
601
-
602
-                // Select all records
603
-                $('#selectAllChckbx').change(function() {
604
-                   if ($(this).is(':checked')) {
605
-                       $(".indivchckbx").prop("checked", true);
606
-                   } else {
607
-                       $(".indivchckbx").prop("checked", false);
608
-                   }
609
-                });
610
-
611
-                function reorderSentRows() {
612
-                    var currenttext = $(".filterbuttonsent").closest('[class="filterbuttonsent"]').find('[class="indivfiltersent"]').text();
613
-                    if (currenttext == '') {
614
-                        $('tr').sort(function (a, b) {
615
-                           return parseInt($('td.sentdbidcolumn', b).text()) < parseInt($('td.sentdbidcolumn', a).text());
616
-                        }).appendTo("#sentSmsTable");
617
-                    }
618
-                }
619
-
620
-                // Filter rows
621
-                $("#databaseidfilter").on("click", function(event) {
622
-
623
-                       var databaseId = $("#dbidtextsent").val();
624
-                       var msgrowsNo = 0;
625
-
626
-                       $(".sentrowsbody").each(function() {
627
-
628
-                          var checkEmpty = 0;
629
-                          $(".indivfiltersent").not("#dbidtextsent").each(function() {
630
-                              if ($(this).val() != '') {
631
-                                  checkEmpty = 1;
632
-                              }
633
-                          });
634
-
635
-                          if (checkEmpty == 0) {
636
-                              $(this).show();
637
-                          }
638
-
639
-                          if (databaseId != '') {
640
-                             if ($(this).find('[class="sentdbidcolumn"]').text() == databaseId) {
641
-                                 $("#sentSmsTable").append(this);
642
-                                 if ($(this).is(":visible")) { msgrowsNo++; }
643
-                             } else {
644
-                                 $(this).hide();
645
-                             }
646
-                          } else {
647
-                                 $(this).show();
648
-                                 msgrowsNo++;
649
-                          }
650
-                       });
651
-
652
-                       reorderSentRows();
653
-                       $('#totalsentmessages').remove();
654
-                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
655
-                });
656
-
657
-                $("#useridfilter").on("click", function(event) {
658
-
659
-                       var useridtxt = $("#useridtext").val().toLowerCase();
660
-                       var msgrowsNo = 0;
661
-
662
-                       $(".sentrowsbody").each(function() {
663
-
664
-                          var checkEmpty1 = 0;
665
-                          $(".indivfiltersent").not("#useridtext").each(function() {
666
-                              if ($(this).val() != '') {
667
-                                  checkEmpty1 = 1;
668
-                              }
669
-                          });
670
-
671
-                          if (checkEmpty1 == 0) {
672
-                              $(this).show();
673
-                          }
674
-
675
-                          if (useridtxt != '') {
676
-                              var founduserid = $(this).find('[class="useridcolsent"]').text().toLowerCase();
677
-                              if (founduserid.indexOf(useridtxt) != -1) {
678
-                                  $("#sentSmsTable").append(this);
679
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
680
-                             } else {
681
-                                  $(this).hide();
682
-                             }
683
-                          } else {
684
-                                  $(this).show();
685
-                                  msgrowsNo++;
686
-                          }
687
-                       });
688
-
689
-                       reorderSentRows();
690
-                       $('#totalsentmessages').remove();
691
-                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
692
-                });
693
-
694
-                $("#messageidfilter").on("click", function(event) {
695
-
696
-                       var messageidtxt = $("#messageidtext").val().toLowerCase();
697
-                       var msgrowsNo = 0;
698
-
699
-                       $(".sentrowsbody").each(function() {
700
-
701
-                          var checkEmpty2 = 0;
702
-                          $(".indivfiltersent").not("#messageidtext").each(function() {
703
-                              if ($(this).val() != '') {
704
-                                  checkEmpty2 = 1;
705
-                              }
706
-                          });
707
-
708
-                          if (checkEmpty2 == 0) {
709
-                              $(this).show();
710
-                          }
711
-
712
-                          if (messageidtxt != '') {
713
-                              var foundtdmssgid = $(this).find('[class="messageidcolsent"]').text().toLowerCase();
714
-                              if (foundtdmssgid.indexOf(messageidtxt) != -1) {
715
-                                  $("#sentSmsTable").append(this);
716
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
717
-                              } else {
718
-                                  $(this).hide();
719
-                              }
720
-                          } else {
721
-                                  $(this).show();
722
-                                  msgrowsNo++;
723
-                          }
724
-                       });
725
-
726
-                       reorderSentRows();
727
-                       $('#totalsentmessages').remove();
728
-                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
729
-                });
730
-
731
-                $("#datefilter").on("click", function(event) {
732
-
733
-                       var datetxtvr = $("#datetext").val().toLowerCase();
734
-                       var msgrowsNo = 0;
735
-
736
-                       $(".sentrowsbody").each(function() {
737
-
738
-                          var checkEmpty3 = 0;
739
-                          $(".indivfiltersent").not("#datetext").each(function() {
740
-                              if ($(this).val() != '') {
741
-                                  checkEmpty3 = 1;
742
-                              }
743
-                          });
744
-
745
-                          if (checkEmpty3 == 0) {
746
-                              $(this).show();
747
-                          }
748
-
749
-                          if (datetxtvr != '') {
750
-                             var founddate = $(this).find('[class="datecolsent"]').text().toLowerCase();
751
-                             if (founddate.indexOf(datetxtvr) != -1) {
752
-                                 $("#sentSmsTable").append(this);
753
-                                 if ($(this).is(":visible")) { msgrowsNo++; }
754
-                             } else {
755
-                                 $(this).hide();
756
-                             }
757
-                          } else {
758
-                                 $(this).show();
759
-                                 msgrowsNo++;
760
-                          }
761
-                       });
762
-
763
-                       reorderSentRows();
764
-                       $('#totalsentmessages').remove();
765
-                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
766
-                });
767
-
768
-                $("#fromfilter").on("click", function(event) {
769
-
770
-                       var fromtxtvr = $("#fromtext").val().toLowerCase();
771
-                       var msgrowsNo = 0;
772
-
773
-                       $(".sentrowsbody").each(function() {
774
-
775
-                          var checkEmpty4 = 0;
776
-                          $(".indivfiltersent").not("#fromtext").each(function() {
777
-                              if ($(this).val() != '') {
778
-                                  checkEmpty4 = 1;
779
-                              }
780
-                          });
781
-
782
-                          if (checkEmpty4 == 0) {
783
-                              $(this).show();
784
-                          }
785
-
786
-                          if (fromtxtvr != '') {
787
-                             var foundfrom = $(this).find('[class="fromcolumnsent"]').text().toLowerCase();
788
-                             if (foundfrom.indexOf(fromtxtvr) != -1) {
789
-                                 $("#sentSmsTable").append(this);
790
-                                 if ($(this).is(":visible")) { msgrowsNo++; }
791
-                             } else {
792
-                                 $(this).hide();
793
-                             }
794
-                          } else {
795
-                                 $(this).show();
796
-                                 msgrowsNo++;
797
-                          }
798
-                       });
799
-
800
-                       reorderSentRows();
801
-                       $('#totalsentmessages').remove();
802
-                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
803
-                });
804
-
805
-                $("#tofilter").on("click", function(event) {
806
-
807
-                      var totxtvr = $("#totext").val().toLowerCase();
808
-                      var msgrowsNo = 0;
809
-
810
-                      $(".sentrowsbody").each(function() {
811
-
812
-                          var checkEmpty5 = 0;
813
-                          $(".indivfiltersent").not("#totext").each(function() {
814
-                              if ($(this).val() != '') {
815
-                                  checkEmpty5 = 1;
816
-                              }
817
-                          });
818
-
819
-                          if (checkEmpty5 == 0) {
820
-                              $(this).show();
821
-                          }
822
-
823
-                          if (totxtvr != '') {
824
-                             var foundto = $(this).find('[class="tocolumnsent"]').text().toLowerCase();
825
-                             if (foundto.indexOf(totxtvr) != -1) {
826
-                                 $("#sentSmsTable").append(this);
827
-                                 if ($(this).is(":visible")) { msgrowsNo++; }
828
-                             } else {
829
-                                 $(this).hide();
830
-                             }
831
-                          } else {
832
-                                 $(this).show();
833
-                                 msgrowsNo++;
834
-                          }
835
-                      });
836
-
837
-                      reorderSentRows();
838
-                      $('#totalsentmessages').remove();
839
-                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
840
-                });
841
-
842
-                $("#networkfilter").on("click", function(event) {
843
-
844
-                      var networktxtvr = $("#networktext").val().toLowerCase();
845
-                      var msgrowsNo = 0;
846
-
847
-                      $(".sentrowsbody").each(function() {
848
-
849
-                          var checkEmpty6 = 0;
850
-                          $(".indivfiltersent").not("#networktext").each(function() {
851
-                              if ($(this).val() != '') {
852
-                                  checkEmpty6 = 1;
853
-                              }
854
-                          });
855
-
856
-                          if (checkEmpty6 == 0) {
857
-                              $(this).show();
858
-                          }
859
-
860
-                          if (networktxtvr != '') {
861
-                              var foundnetwork = $(this).find('[class="networkcolumnsent"]').text().toLowerCase();
862
-                              if (foundnetwork.indexOf(networktxtvr) != -1) {
863
-                                  $("#sentSmsTable").append(this);
864
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
865
-                              } else {
866
-                                  $(this).hide();
867
-                              }
868
-                          } else {
869
-                                  $(this).show();
870
-                                  msgrowsNo++;
871
-                          }
872
-                      });
873
-
874
-                      reorderSentRows();
875
-                      $('#totalsentmessages').remove();
876
-                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
877
-                });
878
-
879
-                $("#pricefilter").on("click", function(event) {
880
-
881
-                      var pricetxtvr = $("#pricetext").val().toLowerCase();
882
-                      var msgrowsNo = 0;
883
-
884
-                      $(".sentrowsbody").each(function() {
885
-
886
-                          var checkEmpty7 = 0;
887
-                          $(".indivfiltersent").not("#pricetext").each(function() {
888
-                              if ($(this).val() != '') {
889
-                                  checkEmpty7 = 1;
890
-                              }
891
-                          });
892
-
893
-                          if (checkEmpty7 == 0) {
894
-                              $(this).show();
895
-                          }
896
-
897
-                          if (pricetxtvr != '') {
898
-                              var foundprice = $(this).find('[class="pricecolumnsent"]').text().toLowerCase();
899
-                              if (foundprice.indexOf(pricetxtvr) != -1) {
900
-                                  $("#sentSmsTable").append(this);
901
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
902
-                              } else {
903
-                                  $(this).hide();
904
-                              }
905
-                          } else {
906
-                                  $(this).show();
907
-                                  msgrowsNo++;
908
-                          }
909
-                      });
910
-
911
-                      reorderSentRows();
912
-                      $('#totalsentmessages').remove();
913
-                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
914
-                });
915
-
916
-                $("#statusfilter").on("click", function(event) {
917
-
918
-                      var statustxtvr = $("#statustext").val().toLowerCase();
919
-                      var msgrowsNo = 0;
920
-
921
-                      $(".sentrowsbody").each(function() {
922
-
923
-                          var checkEmpty8 = 0;
924
-                          $(".indivfiltersent").not("#statustext").each(function() {
925
-                              if ($(this).val() != '') {
926
-                                  checkEmpty8 = 1;
927
-                              }
928
-                          });
929
-
930
-                          if (checkEmpty8 == 0) {
931
-                              $(this).show();
932
-                          }
933
-
934
-                          if (statustxtvr != '') {
935
-                              var foundstatus = $(this).find('[class="statuscolumnsent"]').text().toLowerCase();
936
-                              if (foundstatus.indexOf(statustxtvr) != -1) {
937
-                                  $("#sentSmsTable").append(this);
938
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
939
-                              } else {
940
-                                  $(this).hide();
941
-                              }
942
-                          } else {
943
-                                  $(this).show();
944
-                                  msgrowsNo++;
945
-                          }
946
-                      });
947
-
948
-                      reorderSentRows();
949
-                      $('#totalsentmessages').remove();
950
-                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
951
-                });
952
-
953
-                $("#deliveryrecfilter").on("click", function(event) {
954
-
955
-                      var deliverytxtvr = $("#deliveryrcpttext").val().toLowerCase();
956
-                      var msgrowsNo = 0;
957
-
958
-                      $(".sentrowsbody").each(function() {
959
-
960
-                          var checkEmpty9 = 0;
961
-                          $(".indivfiltersent").not("#deliveryrcpttext").each(function() {
962
-                              if ($(this).val() != '') {
963
-                                  checkEmpty9 = 1;
964
-                              }
965
-                          });
966
-
967
-                          if (checkEmpty9 == 0) {
968
-                              $(this).show();
969
-                          }
970
-
971
-                          if (deliverytxtvr != '') {
972
-                              var founddeliveryrcpt = $(this).find('[class="deliveryrcptcolsent"]').text().toLowerCase();
973
-                              if (founddeliveryrcpt.indexOf(deliverytxtvr) != -1) {
974
-                                  $("#sentSmsTable").append(this);
975
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
976
-                              } else {
977
-                                  $(this).hide();
978
-                              }
979
-                          } else {
980
-                                  $(this).show();
981
-                                  msgrowsNo++;
982
-                          }
983
-                      });
984
-
985
-                      reorderSentRows();
986
-                      $('#totalsentmessages').remove();
987
-                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
988
-                });
989
-
990
-                $("#messagefilter").on("click", function(event) {
991
-
992
-                      var messagetxtvr = $("#messagetext").val().toLowerCase();
993
-                      var msgrowsNo = 0;
994
-
995
-                      $(".sentrowsbody").each(function() {
996
-
997
-                          var checkEmpty10 = 0;
998
-                          $(".indivfiltersent").not("#messagetext").each(function() {
999
-                              if ($(this).val() != '') {
1000
-                                  checkEmpty10 = 1;
1001
-                              }
1002
-                          });
1003
-
1004
-                          if (checkEmpty10 == 0) {
1005
-                              $(this).show();
1006
-                          }
1007
-
1008
-                          if (messagetxtvr != '') {
1009
-                              var foundmessage = $(this).find('[class="messagecolumnsent"]').text().toLowerCase();
1010
-                              if (foundmessage.indexOf(messagetxtvr) != -1) {
1011
-                                  $("#sentSmsTable").append(this);
1012
-                                  if ($(this).is(":visible")) { msgrowsNo++; }
1013
-                              } else {
1014
-                                  $(this).hide();
1015
-                              }
1016
-                          } else {
1017
-                                  $(this).show();
1018
-                                  msgrowsNo++;
1019
-                          }
1020
-                      });
1021
-
1022
-                      reorderSentRows();
1023
-                      $('#totalsentmessages').remove();
1024
-                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1025
-                });
1026
-
1027
-                // Clear all filters
1028
-                $("#clearsentfilters").on("click", function(event) {
1029
-                       $(".sentrowsbody").each(function() {
1030
-                          $(this).show();
1031
-                       });
1032
-                       $(".indivfiltersent").val("");
1033
-                       $('#totalsentmessages').remove();
1034
-                       $('#smstables').append("<div id='totalsentmessages'>Total displayed messages: " + sentparseddata.length + "</div>");
1035
-                });
1036
-
1037
-                // Delete selected rows from the database
1038
-                $("#deletesentrows").on("click", function() {
1039
-
1040
-                   var checkcheckbx = jQuery("#sentSmsTable input[type=checkbox]:checked").length;
1041
-                   if (checkcheckbx == 0) {
1042
-                       alert("Please select the row(s) to permanently delete from the database !");
1043
-                   } else {
1044
-                          var sentcheckboxIds = [];
1045
-                          $(".sentrowsbody").each(function() {
1046
-                             var sentrowcheckbx = $(this).find('input[type="checkbox"]');
1047
-                             if (sentrowcheckbx.is(":checked")) {
1048
-                                 var dbrowid = $(this).find('[class="sentdbidcolumn"]').text();
1049
-                                 sentcheckboxIds.push(dbrowid);
1050
-                             }
1051
-                          });
1052
-
1053
-                          if (confirm("Please note that the row(s) you selected will be permanently deleted from the database, without being saved before removal. This action cannot be undone ! If you really want to permanently delete the selected row(s) press 'OK'.")) {
1054
-
1055
-                              var deletesentRowsUrl = OC.generateUrl("/apps/sms_relentless/user/removesentrows");
1056
-                              $('#smstables').addClass('icon-loading');
1057
-
1058
-                              $.ajax({
1059
-                                   url: deletesentRowsUrl + '/' + userid,
1060
-                                   method: "POST",
1061
-                                   dataType:'text',
1062
-                                   data: {sentmessagedbIDs: sentcheckboxIds},
1063
-                                   success: function() {
1064
-                                            alert("The row(s) have been deleted successfully !");
1065
-                                            $('#smstables').removeClass('icon-loading');
1066
-                                            $('#sentsmstable').click();
1067
-                                   },
1068
-                                   error: function() {
1069
-                                            alert("There was an error while deleting the selected row(s) !");
1070
-                                            $('#smstables').removeClass('icon-loading');
1071
-                                   }
1072
-                              });
1073
-                          }
1074
-                    }
1075
-                });
1076
-
1077
-                // Show/Hide filter row
1078
-	        $('#sentarrow').on('click', function() {
1079
-	           if ($('#sentfiltersrow').is(':visible')) {
1080
-		       $('#sentfiltersrow').hide();
1081
-                       $('#sentheaderrow').css('top', '0px');
1082
-                       $(this).removeClass('arrowUpCl');
1083
-                       $(this).addClass('arrowDownCl');
1084
-		   } else {
1085
-		       $('#sentfiltersrow').show();
1086
-                       $('#sentheaderrow').css('top', '158px');
1087
-                       $(this).removeClass('arrowDownCl');
1088
-                       $(this).addClass('arrowUpCl');
1089
-                   }
1090
-                });
1091
-          },
1092
-          error: function(sentdatafromdb) {
1093
-                alert("An error occurred!");
1094
-                $('#smstables').removeClass('icon-loading');
1095
-          }
1096
-     });
1097
-
1098
-  });
1099
-
1100
-});
1101 0
deleted file mode 100644
... ...
@@ -1,609 +0,0 @@
1
-<?php
2
-/**
3
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
- *
5
- * @author Double Bastion LLC
6
- *
7
- * @license GNU AGPL version 3 or any later version
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
- * License as published by the Free Software Foundation; either
12
- * version 3 of the License, or any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public
20
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
- *
22
- */
23
-
24
-declare(strict_types=1);
25
-
26
-namespace OCA\SMSRelentless\Controller;
27
-
28
-use OCP\AppFramework\ApiController;
29
-use OCP\IRequest;
30
-use OCA\SMSRelentless\Service\SmsrelentlessService;
31
-use OCP\AppFramework\Http\DataResponse;
32
-use OCP\AppFramework\OCSController;
33
-use OCP\IUserSession;
34
-use OCP\IConfig;
35
-use \DateTime;
36
-use OCP\AppFramework\Controller;
37
-use OCP\Files\IAppData;
38
-use OCP\AppFramework\App;
39
-use OCP\Files\NotPermittedException;
40
-use \ReflectionClass;
41
-use OCP\Notification;
42
-use OCP\Notification\INotification;
43
-use OCP\Notification\IManager;
44
-use OCP\Notification\IAction;
45
-use Plivo\RestClient;
46
-use Plivo\Util\signatureValidation;
47
-
48
-
49
-class AuthorApiController extends ApiController {
50
-
51
-    private $service;
52
-    private $userId;
53
-    private $config;
54
-
55
-    public function __construct($appName, IRequest $request, SmsrelentlessService $service, $userId, IConfig $config) {
56
-        parent::__construct(
57
-            $appName,
58
-            $request,
59
-            'PUT, POST, GET, DELETE, PATCH',
60
-            'Authorization, Content-Type, Accept',
61
-            1728000);
62
-
63
-        $this->service = $service;
64
-        $this->userId = $userId;
65
-        $this->config = $config;
66
-    }
67
-
68
-
69
-    /**
70
-     * @NoAdminRequired
71
-     */
72
-    public function object_to_array($obj) {
73
-       if(is_object($obj)) $obj = (array)$this->dismount($obj);
74
-       if(is_array($obj)) {
75
-          $new = array();
76
-          foreach($obj as $key => $val) {
77
-              $new[$key] = $this->object_to_array($val);
78
-          }
79
-       }
80
-       else $new = $obj;
81
-       return $new;
82
-    }
83
-
84
-
85
-    /**
86
-     * @NoAdminRequired
87
-     */
88
-    public function dismount($object) {
89
-       $reflectionClass = new ReflectionClass(get_class($object));
90
-       $array = array();
91
-       foreach ($reflectionClass->getProperties() as $property) {
92
-          $property->setAccessible(true);
93
-          $array[$property->getName()] = $property->getValue($object);
94
-          $property->setAccessible(false);
95
-       }
96
-       return $array;
97
-    }
98
-
99
-
100
-    /**
101
-     * @NoAdminRequired
102
-     */
103
-    public function verifyHeader($receiveddata, $signature_header, $timestamp, $public_key = '', $tolerance = null ) {
104
-        // Typecast timestamp to int for comparisons
105
-        $timestamp = (int)$timestamp;
106
-
107
-        // Check if timestamp is within tolerance
108
-        if (($tolerance > 0) && (\abs(\time() - $timestamp) > $tolerance)) {
109
-             return false;
110
-        } else {
111
-
112
-            // Convert base64 string to bytes for sodium crypto functions
113
-            $public_key_bytes = base64_decode($public_key);
114
-            $signature_header_bytes = base64_decode($signature_header);
115
-
116
-            // Construct a message to test against the signature header using the timestamp and payload
117
-            $constructed_string = $timestamp . '|' . $receiveddata;
118
-
119
-            if (!\sodium_crypto_sign_verify_detached($signature_header_bytes, $constructed_string, $public_key_bytes)) {
120
-                return false;
121
-            } else {
122
-                return true;
123
-            }
124
-        }
125
-    }
126
-
127
-
128
-    /**
129
-     * @NoAdminRequired
130
-     * @NoCSRFRequired
131
-     * @PublicPage
132
-     */
133
-    public function recdeliveryreptel() {
134
-
135
-       $request = file_get_contents("php://input");
136
-       $recdata = json_decode($request, TRUE);
137
-
138
-       $delsmswebhookurl = $recdata["data"]["payload"]["webhook_url"];
139
-       $ncuserfortelnyxdel = $this->service->getuserbyteldelrwhurl($delsmswebhookurl);
140
-
141
-       if ($ncuserfortelnyxdel != '' && $ncuserfortelnyxdel != null && $ncuserfortelnyxdel != 'undefined') {
142
-
143
-	       $messageid = $recdata["data"]["payload"]["id"];
144
-
145
-	       $network = $recdata["data"]["payload"]["to"][0]["carrier"];
146
-	       $messageprice = $recdata["data"]["payload"]["cost"]["amount"];
147
-	       $deliverystatus = $recdata["data"]["payload"]["to"][0]["status"];
148
-
149
-	       $goterrorinit = $recdata["data"]["payload"]["errors"];
150
-
151
-	       if (!empty($goterrorinit)) {
152
-		   $retrievedtitle = $recdata["data"]["payload"]["errors"][0]["title"];
153
-		   $retrievedcode = $recdata["data"]["payload"]["errors"][0]["code"];
154
-		   $messagestatus = "(Error " . $retrievedcode . ") " . $retrievedtitle;
155
-	       } else {
156
-		   $messagestatus = "Success ! The message has been successfully accepted for delivery.";
157
-	       }
158
-
159
-	       return $this->service->updatedeliverystatustel($ncuserfortelnyxdel, $messageid, $network, $messageprice, $messagestatus, $deliverystatus); 
160
-
161
-       } else { return "access denied"; }
162
-
163
-    }
164
-
165
-
166
-    /**
167
-     * @NoAdminRequired
168
-     * @NoCSRFRequired
169
-     * @PublicPage
170
-     */
171
-    public function recdeliveryrepnex() {
172
-
173
-       $plivodrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
174
-
175
-       $ncuserforplivodel = $this->service->getuserbyplivodelrwhurl($plivodrurl);
176
-
177
-       if ($ncuserforplivodel != '' && $ncuserforplivodel != null && $ncuserforplivodel != 'undefined') {
178
-
179
-	       $networkcode = "";
180
-	       $mStatus = ""; 
181
-
182
-	       if (isset($_REQUEST["MessageUUID"])) { $messageid = $_REQUEST["MessageUUID"]; } else { $messageid = ''; }
183
-	       if (isset($_REQUEST["MCC"]) && isset($_REQUEST["MNC"])) { $networkcode = $_REQUEST["MCC"] . " " . $_REQUEST["MNC"]; } else { $networkcode = ''; }
184
-	       if (isset($_REQUEST["TotalAmount"])) { $messageprice = $_REQUEST["TotalAmount"]; } else { $messageprice = ''; }
185
-	       if (isset($_REQUEST["ErrorCode"]) && $_REQUEST["ErrorCode"] == "") {
186
-                   $mStatus = "Success ! The message has been successfully accepted for delivery.";
187
-               } elseif (isset($_REQUEST["ErrorCode"]) && $_REQUEST["ErrorCode"] != "") {
188
-                   $mStatus = "Error " . $_REQUEST["ErrorCode"]; 
189
-               } else { $mStatus = ''; }
190
-
191
-	       if (isset($_REQUEST["Status"])) { $deliverystatus = $_REQUEST["Status"]; }
192
-
193
-	       return $this->service->updatedeliverystatusnex($ncuserforplivodel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus);
194
-
195
-       } else { return "access denied"; }
196
-
197
-    }
198
-
199
-
200
-    /**
201
-     * @NoAdminRequired
202
-     * @NoCSRFRequired
203
-     * @PublicPage
204
-     */
205
-    public function recdeliveryreptwil() {
206
-
207
-       $twildrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
208
-
209
-       $ncuserfortwildel = $this->service->getuserbytwildelrwhurl($twildrurl);
210
-
211
-       if ($ncuserfortwildel != '' && $ncuserfortwildel != null && $ncuserfortwildel != 'undefined') {
212
-
213
-           $messageid = $_REQUEST["SmsSid"];
214
-
215
-           if ($messageid != null) {
216
-
217
-               $credentialstw = $this->service->getapicredentials($ncuserfortwildel);
218
-               $sidtw = $credentialstw[15];
219
-               $tokentw = $credentialstw[16];
220
-               $msdetails = json_decode(file_get_contents("https://".$sidtw.":".$tokentw."@api.twilio.com/2010-04-01/Accounts/".$sidtw."/Messages/".$messageid.".json"));
221
-               $errorMessage = $msdetails->error_message;
222
-               $errorCode = $msdetails->error_code;
223
-               $deliverystatus = $msdetails->status;
224
-
225
-               if ($errorCode == null) { 
226
-                   $mStatus = 'Success ! The message has been successfully accepted for delivery.'; 
227
-               } else { $mStatus = 'Error ' . $errorCode . '. Message: ' . $errorMessage; }
228
-
229
-               $messagepricepre = $msdetails->price;
230
-               $messageprice = str_replace("-", "", $messagepricepre);
231
-               $networkcode = '';
232
-
233
-	       return $this->service->updatedeliverystatustwil($ncuserfortwildel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus);
234
-
235
-           } else { return; }
236
-
237
-       } else { return "access denied"; }
238
-
239
-    }
240
-
241
-
242
-    /**
243
-     * @NoAdminRequired
244
-     * @NoCSRFRequired
245
-     * @PublicPage
246
-     */
247
-    public function recdeliveryrepflow() {
248
-
249
-       $flowdrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
250
-
251
-       $ncuserforflowdel = $this->service->getuserbyflowdelrwhurl($flowdrurl);
252
-
253
-       if ($ncuserforflowdel != '' && $ncuserforflowdel != null && $ncuserforflowdel != 'undefined') {
254
-
255
-           $receivereq = file_get_contents('php://input');
256
-           $recmdec = json_decode($receivereq, true);
257
-           $recmsid = $recmdec['data']['id'];
258
-
259
-           $smsapicredfl = $this->service->getapicredentials($ncuserforflowdel);
260
-           $flowapikey = $smsapicredfl[20];
261
-           $flowapisecret = $smsapicredfl[21];
262
-
263
-           $getmsdetails = json_decode(file_get_contents("https://".$flowapikey.":".$flowapisecret."@api.flowroute.com/v2.1/messages/".$recmsid.""), true);
264
-           $messagepriceflinit = $getmsdetails['data']['attributes']['amount_display'];
265
-           $messagepricefl = str_replace("$", "", $messagepriceflinit);
266
-
267
-           $mdeliveryflinit = $getmsdetails['data']['attributes']['delivery_receipts'][0]['status'];
268
-           if ($mdeliveryflinit != 'message buffered') { $messagedeliveryfl = $mdeliveryflinit; } else { $messagedeliveryfl = 'delivered'; }
269
-           $messagestatuscode = $getmsdetails['data']['attributes']['delivery_receipts'][0]['status_code'];
270
-           $messagestatusdescr = $getmsdetails['data']['attributes']['delivery_receipts'][0]['status_code_description'];
271
-           $messagestatusfl = $messagestatusdescr . ". Status code: " . $messagestatuscode;
272
-
273
-           $networkcodefl = '';
274
-
275
-           return $this->service->updatedeliverystatusflow($ncuserforflowdel, $recmsid, $networkcodefl, $messagepricefl,  $messagestatusfl, $messagedeliveryfl);
276
-
277
-       } else { return "access denied"; }
278
-
279
-    }
280
-
281
-
282
-    /**
283
-     * @NoAdminRequired
284
-     * @NoCSRFRequired
285
-     * @PublicPage
286
-     */
287
-    public function receivesmstel() {
288
-
289
-       $signature = $_SERVER['HTTP_TELNYX_SIGNATURE_ED25519'];
290
-       $timestamp = $_SERVER['HTTP_TELNYX_TIMESTAMP'];
291
-
292
-       $receivereq = file_get_contents('php://input');
293
-
294
-       $recmesdata = json_decode($receivereq, TRUE);
295
-
296
-       $recsmswebhookurl = $recmesdata["data"]["payload"]["webhook_url"];
297
-
298
-       $ncuserfortelnyx = $this->service->getuserbytelrecwhurl($recsmswebhookurl);
299
-
300
-       $credentials = $this->service->getapicredentials($ncuserfortelnyx);
301
-
302
-       $telpubkey = $credentials[1];
303
-
304
-       // Verify message signature
305
-       $signatureverify = $this->verifyHeader($receivereq, $signature, $timestamp, $telpubkey, $tolerance = 30);
306
-
307
-       if ($signatureverify) {
308
-
309
-          if ($ncuserfortelnyx != '' && $ncuserfortelnyx != null && $ncuserfortelnyx != 'undefined') {
310
-
311
-	       $messagetexttel = $recmesdata["data"]["payload"]["text"];
312
-
313
-	       $messageid = $recmesdata["data"]["payload"]["id"];
314
-
315
-	       $messagedate = date("Y-m-d H:i:s");
316
-
317
-	       $messagefrom = $recmesdata["data"]["payload"]["from"]["phone_number"];
318
-
319
-	       $messageto = "Telnyx: " . $recmesdata["data"]["payload"]["to"][0]["phone_number"];
320
-
321
-	       $recmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagetexttel];
322
-
323
-	       $this->service->insertrecsms($ncuserfortelnyx, $recmessagearr);
324
-
325
-	       // Send notifications
326
-	       $nameofhost = exec("hostname");
327
-
328
-	       $telsmsapicred = $this->service->getapicredentials($ncuserfortelnyx);
329
-	       $telnotify = $telsmsapicred[12];
330
-	       $emailaddress = $telsmsapicred[13];
331
-	       $includemessageinemail = $telsmsapicred[14];
332
-
333
-	       if ($telnotify != 0 ) {
334
-		   $notifytel = exec("php ./occ notification:generate ".$ncuserfortelnyx." 'SMS Relentless has received a new SMS message !' -l 'You can read the new message by going to SMS Relentless and clicking on the Received SMS Messages button.'");
335
-
336
-	       }
337
-
338
-	       if ($emailaddress != '') {
339
-
340
-		   $gmtind = "UTC " . date('P');
341
-		   $smsdateinit = date("Y-m-d  H:i:s");
342
-		   $smsdate = $smsdateinit . " " . $gmtind;
343
-
344
-		   $subject = "New SMS message received";
345
-
346
-                   $messagetextnltel = str_replace("\n", "<br>", $messagetexttel);
347
-
348
-		   if ($includemessageinemail == 0) {
349
-		       $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
350
-		   } else {
351
-		       $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageid." <br> Message Date: ".$messagedate." <br> From: ".$messagefrom." <br> To: ".$messageto."<br> Message Text: <br><br><b>".$messagetextnltel."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
352
-		   }
353
-
354
-		   $headers = "MIME-Version: 1.0" . "\r\n";
355
-		   $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
356
-
357
-		   // Set the email sender
358
-		   $headers .= "From: " . $emailaddress . "\r\n";
359
-		   $headers .= "Reply-To: " . $emailaddress . "\r\n";
360
-
361
-		   mail($emailaddress, $subject, $message, $headers);
362
-	       }
363
-
364
-	       return http_response_code(200);
365
-
366
-          } else { return "access denied"; }
367
-
368
-       } else { return "access denied"; }
369
-    }
370
-
371
-
372
-    /**
373
-     * @NoAdminRequired
374
-     * @NoCSRFRequired
375
-     * @PublicPage
376
-     */
377
-    public function receivesmsnex() {
378
-
379
-       $plivosignature = $_SERVER['HTTP_X_PLIVO_SIGNATURE_V2'];
380
-       $plivononce = $_SERVER["HTTP_X_PLIVO_SIGNATURE_V2_NONCE"];
381
-
382
-       $plivorecurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
383
-
384
-       $ncuserforplivo = $this->service->getuserbyplivorecwhurl($plivorecurl);
385
-
386
-       $smsapicred = $this->service->getapicredentials($ncuserforplivo);
387
-
388
-       $plivoauthtoken = $smsapicred[6];
389
-
390
-       $baseplivourlinit = explode("?", $plivorecurl);  
391
-       $baseplivoURI = $baseplivourlinit[0];
392
-
393
-       // Verify message signature
394
-       $SigValidation = new signatureValidation();
395
-       $signverify = $SigValidation->validateSignature($baseplivoURI, $plivononce, $plivosignature, $plivoauthtoken);
396
-
397
-       if ($signverify) {
398
-
399
-              if ($ncuserforplivo != '' && $ncuserforplivo != null && $ncuserforplivo != 'undefined') {
400
-
401
-	          $messageid = $_REQUEST["MessageUUID"];
402
-
403
-	          $messagedate = date("Y-m-d H:i:s");
404
-
405
-	          $messagefrom = "+" . $_REQUEST['From'];
406
-	          $messageto = "Plivo: +" . $_REQUEST['To'];
407
-
408
-	          $messagetextnex = $_REQUEST['Text'];
409
-
410
-	          $recmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagetextnex];
411
-
412
-                  $this->service->insertrecsms($ncuserforplivo, $recmessagearr);
413
-
414
-	          // Send notifications
415
-	          $nameofhost = exec("hostname");
416
-
417
-	          $nextnotify = $smsapicred[12];
418
-	          $emailaddress = $smsapicred[13];
419
-	          $includemessageinemail = $smsapicred[14];
420
-
421
-	          if ($nextnotify != 0 ) {
422
-		      $notifynext = exec("php ./occ notification:generate ".$ncuserforplivo." 'SMS Relentless has received a new SMS message !' -l 'You can read the new message by going to SMS Relentless and clicking on the Received SMS Messages button.'");
423
-	          }
424
-
425
-	          if ($emailaddress != '') {
426
-
427
-		      $gmtind = "UTC " . date('P');
428
-		      $smsdateinit = date("Y-m-d  H:i:s");
429
-		      $smsdate = $smsdateinit . " " . $gmtind;
430
-
431
-		      $subject = "New SMS message received";
432
-
433
-                      $messagetextnlnex = str_replace("\n", "<br>", $messagetextnex);
434
-
435
-		      if ($includemessageinemail == 0) {
436
-		          $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
437
-		      } else {
438
-		          $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageid." <br> Message Date: ".$messagedate." <br> From: ".$messagefrom." <br> To: ".$messageto."<br> Message Text: <br><br><b>".$messagetextnlnex."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
439
-		      }
440
-
441
-		      $headers = "MIME-Version: 1.0" . "\r\n";
442
-		      $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
443
-
444
-		      // Set the email sender
445
-		      $headers .= "From: " . $emailaddress . "\r\n";
446
-		      $headers .= "Reply-To: " . $emailaddress . "\r\n";
447
-
448
-		      mail($emailaddress, $subject, $message, $headers);
449
-	          }
450
-
451
-	          return http_response_code(200);
452
-
453
-              } else { return "access denied"; }
454
-
455
-       } else { return "access denied"; }
456
-    }
457
-
458
-
459
-    /**
460
-     * @NoAdminRequired
461
-     * @NoCSRFRequired
462
-     * @PublicPage
463
-     */
464
-    public function receivesmstwil() {
465
-
466
-       $basepath = $this->config->getSystemValue('overwrite.cli.url');
467
-       $twilrecurl = $basepath . "/apps/sms_relentless/api/recsmstwil?twilrecparam=" . $_GET["twilrecparam"];
468
-
469
-       $ncuserfortwil = $this->service->getuserbytwilrecwhurl($twilrecurl);
470
-
471
-       $smsapicred = $this->service->getapicredentials($ncuserfortwil);
472
-       $authTokenTw = $smsapicred[16];
473
-
474
-       if ($ncuserfortwil != '' && $ncuserfortwil != null && $ncuserfortwil != 'undefined') {
475
-
476
-	       $messageid = $_POST['MessageSid'];
477
-
478
-	       $messagedate = date("Y-m-d H:i:s");
479
-
480
-	       $messagefrom = $_POST['From'];
481
-
482
-	       $messageto = "Twilio: " . $_POST['To'];
483
-
484
-	       $messagetexttw = $_POST['Body'];
485
-
486
-	       $recmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagetexttw];
487
-
488
-	       $this->service->insertrecsms($ncuserfortwil, $recmessagearr);
489
-
490
-	       // Send notifications
491
-	       $nameofhost = exec("hostname");
492
-
493
-	       $twilnotify = $smsapicred[12];
494
-	       $emailaddress = $smsapicred[13];
495
-	       $includemessageinemail = $smsapicred[14];
496
-
497
-	       if ($twilnotify != 0 ) {
498
-		   $notifynext = exec("php ./occ notification:generate ".$ncuserfortwil." 'SMS Relentless has received a new SMS message !' -l 'You can read the new message by going to SMS Relentless and clicking on the Received SMS Messages button.'");
499
-	       }
500
-
501
-	       if ($emailaddress != '') {
502
-
503
-		   $gmtind = "UTC " . date('P');
504
-		   $smsdateinit = date("Y-m-d  H:i:s");
505
-		   $smsdate = $smsdateinit . " " . $gmtind;
506
-
507
-		   $subject = "New SMS message received";
508
-
509
-                   $messagetextnltw = str_replace("\n", "<br>", $messagetexttw);
510
-
511
-		   if ($includemessageinemail == 0) {
512
-		       $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
513
-		   } else {
514
-		       $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageid." <br> Message Date: ".$messagedate." <br> From: ".$messagefrom." <br> To: ".$messageto."<br> Message Text: <br><br><b>".$messagetextnltw."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
515
-		   }
516
-
517
-		   $headers = "MIME-Version: 1.0" . "\r\n";
518
-		   $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
519
-
520
-		   // Set the email sender
521
-		   $headers .= "From: " . $emailaddress . "\r\n";
522
-		   $headers .= "Reply-To: " . $emailaddress . "\r\n";
523
-
524
-		   mail($emailaddress, $subject, $message, $headers);
525
-	       }
526
-
527
-	       return http_response_code(200);
528
-
529
-       } else { return "access denied"; }
530
-
531
-    }
532
-
533
-
534
-    /**
535
-     * @NoAdminRequired
536
-     * @NoCSRFRequired
537
-     * @PublicPage
538
-     */
539
-    public function receivesmsflow() {
540
-
541
-       $flowdrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
542
-
543
-       $receivesms = file_get_contents('php://input');
544
-       $recsmsarr = json_decode($receivesms, true);
545
-
546
-
547
-       $ncuserforflowrec = $this->service->getuserbyflowrecwhurl($flowdrurl);
548
-
549
-       if ($ncuserforflowrec != '' && $ncuserforflowrec != null && $ncuserforflowrec != 'undefined') {
550
-
551
-	          $messageidfl = $recsmsarr['data']['id'];
552
-
553
-	          $messagedatefl = date("Y-m-d H:i:s");
554
-
555
-	          $messagefromflpre = $recsmsarr['data']['attributes']['from'];
556
-                  if (substr($messagefromflpre, 0, 1) == '+') { $messagefromfl = $messagefromflpre; } else { $messagefromfl = '+' . $messagefromflpre; }
557
-
558
-	          $messagetofl = "Flowroute: +" . $recsmsarr['data']['attributes']['to'];
559
-
560
-	          $messagetextfl = $recsmsarr['data']['attributes']['body'];
561
-
562
-	          $recmessagearr = [$messageidfl, $messagedatefl, $messagefromfl, $messagetofl, $messagetextfl];
563
-
564
-                  $this->service->insertrecsms($ncuserforflowrec, $recmessagearr);
565
-
566
-		  // Send notifications
567
-		  $nameofhost = exec("hostname");
568
-
569
-                  $smsapicred = $this->service->getapicredentials($ncuserforflowrec);
570
-		  $flownotify = $smsapicred[12];
571
-		  $emailaddress = $smsapicred[13];
572
-		  $includemessageinemail = $smsapicred[14];
573
-
574
-		  if ($flownotify != 0 ) {
575
-		      $notifyflow = exec("php ./occ notification:generate ".$ncuserforflowrec." 'SMS Relentless has received a new SMS message !' -l 'You can read the new message by going to SMS Relentless and clicking on the Received SMS Messages button.'");
576
-		  }
577
-
578
-		  if ($emailaddress != '') {
579
-
580
-		      $gmtind = "UTC " . date('P');
581
-		      $smsdateinit = date("Y-m-d  H:i:s");
582
-		      $smsdate = $smsdateinit . " " . $gmtind;
583
-
584
-		      $subject = "New SMS message received";
585
-
586
-                      $messagetextnlfl = str_replace("\n", "<br>", $messagetextfl);
587
-
588
-		      if ($includemessageinemail == 0) {
589
-			  $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
590
-		      } else {
591
-		          $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageidfl." <br> Message Date: ".$messagedatefl." <br> From: ".$messagefromfl." <br> To: ".$messagetofl."<br> Message Text: <br><br><b>".$messagetextnlfl."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>";
592
-		      }
593
-
594
-		      $headers = "MIME-Version: 1.0" . "\r\n";
595
-		      $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
596
-
597
-		      // Set the email sender
598
-		      $headers .= "From: " . $emailaddress . "\r\n";
599
-		      $headers .= "Reply-To: " . $emailaddress . "\r\n";
600
-
601
-		      mail($emailaddress, $subject, $message, $headers);
602
-		  }
603
-
604
-                  return http_response_code(200);
605
-
606
-       } else { return "access denied"; }
607
-
608
-    }
609
-}
610 0
deleted file mode 100644
... ...
@@ -1,706 +0,0 @@
1
-<?php
2
-/**
3
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
- *
5
- * @author Double Bastion LLC
6
- *
7
- * @license GNU AGPL version 3 or any later version
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
- * License as published by the Free Software Foundation; either
12
- * version 3 of the License, or any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public
20
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
- *
22
- */
23
-
24
-declare(strict_types=1);
25
-
26
-namespace OCA\SMSRelentless\Controller;
27
-
28
-use OCP\IRequest;
29
-use OCP\AppFramework\Controller;
30
-use OCA\SMSRelentless\Service\SmsrelentlessService;
31
-use OCP\AppFramework\App;
32
-use OC\Http\Client\Client;
33
-use OCP\Files\SimpleFS\ISimpleFile;
34
-use OCP\Files\SimpleFS\ISimpleFolder;
35
-use OCP\IL10N;
36
-use OCP\Files\Folder;
37
-use OCP\IConfig;
38
-use OC\Files\Filesystem;
39
-use OC\Files\View;
40
-use \ReflectionClass;
41
-use \FilesystemIterator;
42
-use \DateTime;
43
-use OCP\AppFramework\Http\DataResponse;
44
-use OCP\Files\NotFoundException;
45
-use OCP\Files\NotPermittedException;
46
-use Plivo\RestClient;
47
-
48
-
49
-class SmsrelentlessController extends Controller {
50
-
51
-    private $service;
52
-    private $config;
53
-    private $userId;
54
-    private $folder;
55
-    private $filesystem;
56
-    private $view;
57
-
58
-    public function __construct($appName, IRequest $request, SmsrelentlessService $service, IConfig $config, $userId, Folder $folder, Filesystem $filesystem, View $view) {
59
-        parent::__construct($appName, $request);
60
-        $this->service = $service;
61
-        $this->config = $config;
62
-        $this->userId = $userId;
63
-        $this->folder = $folder;
64
-        $this->filesystem = $filesystem;
65
-        $this->view = $view;
66
-    }
67
-
68
-
69
-    /**
70
-     * @NoAdminRequired
71
-     */
72
-    public function object_to_array($obj) {
73
-        if(is_object($obj)) $obj = (array)$this->dismount($obj);
74
-        if(is_array($obj)) {
75
-           $new = array();
76
-           foreach($obj as $key => $val) {
77
-               $new[$key] = $this->object_to_array($val);
78
-           }
79
-        }
80
-        else $new = $obj;
81
-        return $new;
82
-    }
83
-
84
-
85
-    /**
86
-     * @NoAdminRequired
87
-     */
88
-    public function dismount($object) {
89
-        $reflectionClass = new ReflectionClass(get_class($object));
90
-        $array = array();
91
-        foreach ($reflectionClass->getProperties() as $property) {
92
-           $property->setAccessible(true);
93
-           $array[$property->getName()] = $property->getValue($object);
94
-           $property->setAccessible(false);
95
-        }
96
-        return $array;
97
-    }
98
-
99
-
100
-    /**
101
-     * @NoAdminRequired
102
-     */
103
-    public function getbalancetel($userId) {
104
-
105
-        $telsmsapicred = $this->service->getapicredentials($this->userId);
106
-
107
-        $telapikey = $telsmsapicred[0];
108
-        $ch = curl_init();
109
-        $headerstel = array("Content-Type: application/json", "Accept: application/json", "Authorization: Bearer ".$telapikey);
110
-
111
-        curl_setopt($ch, CURLOPT_URL, "https://api.telnyx.com/v2/balance");
112
-        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
113
-        curl_setopt($ch, CURLOPT_HTTPHEADER, $headerstel);
114
-        $responsetel = curl_exec($ch);
115
-        $recdatatel = json_decode($responsetel, TRUE);
116
-        $telbalresponse = $recdatatel['data']['balance'];
117
-        $currentbalancetel = round(floatval($telbalresponse), 3);
118
-        curl_close($ch);
119
-
120
-        return $currentbalancetel;
121
-    }
122
-
123
-
124
-    /**
125
-     * @NoAdminRequired
126
-     */
127
-    public function getbalancenex($userId) {
128
-
129
-        $smsapicred = $this->service->getapicredentials($this->userId);
130
-        $smsapikey = $smsapicred[5];
131
-        $smsapisecret = $smsapicred[6];
132
-
133
-        if ($smsapikey == '' || $smsapisecret == '') {
134
-            $currentbalancenex = "N/A";
135
-        } else {
136
-            $getmesdata = "https://".$smsapikey.":".$smsapisecret."@api.plivo.com/v1/Account/".$smsapikey."/";
137
-            $mesdata = file_get_contents($getmesdata);
138
-            $datainit = json_decode($mesdata);
139
-            $balancenex = $datainit->cash_credits;
140
-            $currentbalancenex = round(floatval($balancenex), 3);
141
-        }
142
-        return $currentbalancenex;
143
-    }
144
-
145
-
146
-    /**
147
-     * @NoAdminRequired
148
-     */
149
-    public function getbalancetwil($userId) {
150
-
151
-        $smsapicred = $this->service->getapicredentials($this->userId);
152
-        $smsapisid = $smsapicred[15];
153
-        $smsapitoken = $smsapicred[16];
154
-
155
-        if ($smsapisid == '' || $smsapitoken == '') {
156
-            $currentbalancetwil = "N/A";
157
-        } else {
158
-
159
-            $twilbalance = json_decode(file_get_contents("https://".$smsapisid.":".$smsapitoken."@api.twilio.com/2010-04-01/Accounts/".$smsapisid."/Balance.json"));
160
-            $balancetwil = $twilbalance->balance;
161
-
162
-            $currentbalancetwil = round(floatval($balancetwil), 3);
163
-        }
164
-        return $currentbalancetwil;
165
-    }
166
-
167
-
168
-    /**
169
-     * @NoAdminRequired
170
-     */
171
-    public function getbalanceflow($userId) {
172
-
173
-        $currentbalanceflow = 'n/a';
174
-
175
-        return $currentbalanceflow;
176
-    }
177
-
178
-
179
-    /**
180
-     * @NoAdminRequired
181
-     */
182
-    public function getsmsnumbers($userId) {
183
-
184
-        $smsapicred = $this->service->getapicredentials($this->userId);
185
-
186
-        $telnyxkey = $smsapicred[0];
187
-
188
-        $nexapikey = $smsapicred[5];
189
-        $nexapisecret = $smsapicred[6];
190
-
191
-        $twilapikey = $smsapicred[15];
192
-        $twilapisecret = $smsapicred[16];
193
-
194
-        $flowapikey = $smsapicred[20];
195
-        $flowapisecret = $smsapicred[21];
196
-
197
-        $telsendernameinit = $smsapicred[9];
198
-        $nexsendernameinit = $smsapicred[10];
199
-        $twilsendernameinit = $smsapicred[19];
200
-        $flowsendernameinit = $smsapicred[24];
201
-
202
-        $telsendername = "Tx: " . $telsendernameinit;
203
-        $nexsendername = "Pl: " . $nexsendernameinit;
204
-        $twilsendername = "Tw: " . $twilsendernameinit;
205
-        $flowsendername = "Fl: " . $flowsendernameinit;
206
-
207
-        // Get Telnyx phone numbers
208
-        if ($telnyxkey != '') {
209
-
210
-           \Telnyx\Telnyx::setApiKey($telnyxkey);
211
-           $telnumbers = \Telnyx\MessagingPhoneNumber::All();
212
-
213
-           $telnumbersarr = $this->object_to_array($telnumbers);
214
-           $telnmbrs = [];
215
-
216
-           foreach ($telnumbersarr['_originalValues'] as $nmbkey => $nmbvalue) {
217
-              if (is_int($nmbkey)) {
218
-                 foreach ($nmbvalue as $nkey => $nvalue) {
219
-                    if ($nkey == 'phone_number') {
220
-                       $telnmbrs[] = "Tx: " . $nvalue;
221
-                    }
222
-                 }
223
-              }
224
-           }
225
-
226
-        } else { $telnmbrs = []; }
227
-
228
-        // Get Plivo phone numbers
229
-        if ($nexapikey != '' && $nexapisecret != '') {
230
-
231
-           $getacdata = "https://".$nexapikey.":".$nexapisecret."@api.plivo.com/v1/Account/".$nexapikey."/Number/";
232
-           $acdata = file_get_contents($getacdata);
233
-           $datainit = json_decode($acdata, true);
234
-
235
-           $findata = $this->object_to_array($datainit);
236
-
237
-           $nexcurrentnmbrs = [];
238
-
239
-           foreach ($findata['objects'] as $smskey => $smsvalue) {
240
-                   if (is_array($smsvalue)) {
241
-                         foreach ($smsvalue as $smskey2 => $smsvalue2) {
242
-                               if ($smskey2 == 'number') {
243
-                                   $nexcurrentnmbrs[] = "Pl: +" . $smsvalue2;
244
-                               }
245
-                         }
246
-                   }
247
-           }
248
-
249
-
250
-        } else { $nexcurrentnmbrs = []; }
251
-
252
-        // Get Twilio phone numbers
253
-        if ($twilapikey != '' && $twilapisecret != '') {
254
-
255
-            $twilnumbers = json_decode(file_get_contents("https://".$twilapikey.":".$twilapisecret."@api.twilio.com/2010-04-01/Accounts/".$twilapikey."/IncomingPhoneNumbers.json"), true);
256
-            $twilactivenmbrs = $twilnumbers['incoming_phone_numbers'];
257
-
258
-            $twilcurrentnmbrs = [];
259
-            foreach ($twilactivenmbrs as $twnbkey => $twnbvalue) {
260
-                 if (is_array($twnbvalue)) {
261
-                     foreach ($twnbvalue as $twfkey => $twfvalue) {
262
-                          if ($twfkey == 'phone_number') {
263
-                              $twilcurrentnmbrs[] = "Tw: " . $twfvalue;
264
-                          }
265
-                     }
266
-                 }
267
-            }
268
-
269
-        } else { $twilcurrentnmbrs = []; }
270
-
271
-        // Get Flowroute phone numbers
272
-        if ($flowapikey != '' && $flowapisecret != '') {
273
-
274
-            $flnbrsresult = json_decode(file_get_contents("https://".$flowapikey.":".$flowapisecret."@api.flowroute.com/v2/numbers"));
275
-            $flnbrsarr = $flnbrsresult->data;
276
-            $flowcurrentnmbrs = [];
277
-            foreach ($flnbrsarr as $flkey => $flitem) {
278
-                     $flowcurrentnmbrs[] = "Fl: +" . $flitem->id;
279
-            }
280
-
281
-        } else { $flowcurrentnmbrs = []; }
282
-
283
-
284
-        $telsenderarr = [0 => $telsendername];
285
-        $nexsenderarr = [0 => $nexsendername];
286
-        $twilsenderarr = [0 => $twilsendername];
287
-        $flowsenderarr = [0 => $flowsendername];
288
-
289
-        $currentnmbrs = array_merge($telnmbrs, $nexcurrentnmbrs, $twilcurrentnmbrs, $flowcurrentnmbrs, $telsenderarr, $nexsenderarr, $twilsenderarr, $flowsenderarr);
290
-
291
-        return $currentnmbrs;
292
-    }
293
-
294
-
295
-    /**
296
-     * @NoAdminRequired
297
-     */
298
-    public function cleantempdir($userId) {
299
-
300
-        // Create the temporary folder if it doesn't exist
301
-        if ($this->folder->nodeExists('SMS_Relentless/temp_files') == false) {
302
-            $this->folder->newFolder('SMS_Relentless/temp_files');
303
-        }
304
-        $datadir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/';
305
-        $targetdir = $datadir . $this->userId . "/files/SMS_Relentless/temp_files";
306
-        $fileSystemIterator = new FilesystemIterator($targetdir);
307
-
308
-        $dirfiles = [];
309
-        foreach ($fileSystemIterator as $fileInfo){
310
-                 $dirfiles[] = $fileInfo->getFilename();
311
-        }
312
-
313
-        foreach ($dirfiles as $key => $indfile) {
314
-                 $thisuserroot = $this->view->getRoot();
315
-                 $tempfile = $thisuserroot . "/SMS_Relentless/temp_files/" . $indfile;
316
-                 $removetmpfile = $this->filesystem->unlink($tempfile);
317
-        }
318
-     }
319
-
320
-
321
-    /**
322
-     * @NoAdminRequired
323
-     */
324
-    public function uploadNumbersFile($userId, $uploadfileforsms) {
325
-
326
-        // Create the temporary folder if it doesn't exist
327
-        if ($this->folder->nodeExists('SMS_Relentless/temp_files') == false) {
328
-            $this->folder->newFolder('SMS_Relentless/temp_files');
329
-        }
330
-
331
-        // First delete any file that has been previously uploaded
332
-        $datadir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/';
333
-        $targetdir = $datadir . $this->userId . "/files/SMS_Relentless/temp_files";
334
-        $fileSystemIterator = new FilesystemIterator($targetdir);
335
-
336
-        $dirfiles = [];
337
-        foreach ($fileSystemIterator as $fileInfo){
338
-                 $dirfiles[] = $fileInfo->getFilename();
339
-        }
340
-
341
-        foreach ($dirfiles as $key => $indfile) {
342
-                 $thisuserroot = $this->view->getRoot();
343
-                 $tempfile = $thisuserroot . "/SMS_Relentless/temp_files/" . $indfile;
344
-                 $removetmpfile = $this->filesystem->unlink($tempfile);
345
-        }
346
-
347
-        // Upload the new file
348
-        $fileContent = file_get_contents($_FILES['uploadfileforsms']['tmp_name']);
349
-        $fileName = $_FILES['uploadfileforsms']['name'];
350
-
351
-        $userroot = $this->view->getRoot();
352
-        $targetfile = $userroot . "/SMS_Relentless/temp_files/" . $fileName;
353
-
354
-        $target = $this->folder->newFile($targetfile);
355
-        $target->putContent($fileContent);
356
-
357
-        // Extract the phone numbers from the file
358
-        $numberarraysec = str_replace(array(";", "|", "\r\n", "\r", "\n", "\t"), ",", $fileContent);
359
-        $numberarraytert = preg_replace("/[^0-9,]/", "", $numberarraysec);
360
-        $numberarrayfourth = explode(",", $numberarraytert);
361
-        $numberarrayfifth = array_filter(array_map('trim', $numberarrayfourth));
362
-        $numberarray = array_unique($numberarrayfifth);
363
-
364
-        return $numberarray;
365
-    }
366
-
367
-
368
-    /**
369
-     * @NoAdminRequired
370
-     */
371
-    public function sendsmstel($userId, $receiversPhoneNbs, $fromsender, $waitinterval, $sentsmstext) {
372
-
373
-         $telsmsapicred = $this->service->getapicredentials($this->userId);
374
-         $telnyxkey = $telsmsapicred[0];
375
-         $teldelrecurl = $telsmsapicred[3];
376
-         $messagingprofid = $telsmsapicred[4];
377
-
378
-         \Telnyx\Telnyx::setApiKey($telnyxkey);
379
-
380
-         $microinterval = $waitinterval * 1000;
381
-
382
-         foreach ($receiversPhoneNbs as $keytel => $tonumber) {
383
-
384
-             usleep($microinterval);
385
-
386
-             if (preg_match('/[A-Za-z]+/', $fromsender)) {
387
-                 $message = \Telnyx\Message::Create(["from" => $fromsender, "to" => $tonumber, "text" => $sentsmstext, "webhook_url" => $teldelrecurl, "messaging_profile_id" => $messagingprofid]);
388
-             } else {
389
-                 $message = \Telnyx\Message::Create(["from" => $fromsender, "to" => $tonumber, "text" => $sentsmstext, "webhook_url" => $teldelrecurl]);
390
-             }
391
-
392
-             $messageid = $message['id'];
393
-             $messagedate = date("Y-m-d H:i:s");
394
-             $messagefrom = "Telnyx: " . $fromsender;
395
-             $messageto = $tonumber;
396
-             $messagenetwork = null;
397
-             $messageprice = null;
398
-             $messagestatus = $message['to'][0]['status'];
399
-             $messagedelivery = null;
400
-             $messagetext = $sentsmstext;
401
-
402
-             $sentmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $messagetext];
403
-
404
-             $this->service->insertsentsms($this->userId, $sentmessagearr);
405
-
406
-         }
407
-    }
408
-
409
-
410
-    /**
411
-     * @NoAdminRequired
412
-     */
413
-    public function sendsmsnex($userId, $receiversPhoneNbs, $fromsender, $waitinterval, $sentsmstext) {
414
-
415
-         $smsapicred = $this->service->getapicredentials($this->userId);
416
-
417
-         $smsapikey = $smsapicred[5];
418
-         $smsapisecret = $smsapicred[6];
419
-         $smsapideliveryrecurl = $smsapicred[8];
420
-
421
-         $microinterval = $waitinterval * 1000;
422
-
423
-         $client = new RestClient($smsapikey, $smsapisecret);
424
-
425
-         foreach ($receiversPhoneNbs as $keynex => $tonumber) {
426
-
427
-             usleep($microinterval);
428
-
429
-             $response = $client->messages->create($fromsender,[$tonumber],$sentsmstext,["url" => $smsapideliveryrecurl],);
430
-
431
-	     $messageidinit = $response->getmessageUuid(0);
432
-             $messageid = $messageidinit[0];
433
-
434
-             $messagedate = date("Y-m-d H:i:s");
435
-
436
-             if (preg_match('/[A-Za-z]+/', $fromsender)) {
437
-                 $messagefrom = "Plivo: " . $fromsender;
438
-             } else { $messagefrom = "Plivo: +" . $fromsender; }
439
-
440
-             $messageto = $tonumber;
441
-             $messagenetwork = null;
442
-             $messageprice = null;
443
-             $messagestatus = "The message has been accepted for delivery.";
444
-             $messagedelivery = null;
445
-             $messagetext = $sentsmstext;
446
-
447
-             $sentmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $messagetext];
448
-
449
-             $this->service->insertsentsms($this->userId, $sentmessagearr);
450
-         }
451
-    }
452
-
453
-
454
-    /**
455
-     * @NoAdminRequired
456
-     */
457
-    public function sendsmstwil($userId, $receiversPhoneNbs, $fromsender, $waitinterval, $sentsmstext) {
458
-
459
-         $smsapicred = $this->service->getapicredentials($this->userId);
460
-
461
-         $sid = $smsapicred[15];
462
-         $token = $smsapicred[16];
463
-         $smsapirecurltw = $smsapicred[18];
464
-
465
-         $microinterval = $waitinterval * 1000;
466
-
467
-         foreach ($receiversPhoneNbs as $keytwil => $tonumbertw) {
468
-
469
-             usleep($microinterval);
470
-
471
-	     $chtw = curl_init();
472
-	     curl_setopt($chtw, CURLOPT_URL, 'https://'.$sid.':'.$token.'@api.twilio.com/2010-04-01/Accounts/'.$sid.'/Messages.json');
473
-	     curl_setopt($chtw, CURLOPT_TIMEOUT, 300);
474
-	     curl_setopt($chtw, CURLOPT_RETURNTRANSFER, 1);
475
-	     curl_setopt($chtw, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
476
-	     curl_setopt($chtw, CURLOPT_POST, 1);
477
-	     curl_setopt($chtw, CURLOPT_POSTFIELDS, ["To" => $tonumbertw, "From" => $fromsender, "Body" => $sentsmstext, "StatusCallback" => $smsapirecurltw]);
478
-	     $resulttw = curl_exec ($chtw);
479
-	     $statusCodetw = curl_getinfo($chtw, CURLINFO_HTTP_CODE);
480
-	     curl_close ($chtw);
481
-
482
-             $decresulttw = json_decode($resulttw);
483
-             if (is_object($decresulttw)) {
484
-                 $messageidtw = $decresulttw->sid;
485
-             } else { $messageidtw = ''; }
486
-
487
-	     if (in_array($statusCodetw, [200, 201, 202, 203, 204, 205, 206])) { 
488
-                 $messagestatustw = 'The message has been accepted for delivery.'; 
489
-             } else { 
490
-                 $messagestatustw = 'An error occurred while trying to send the message.'; 
491
-             }
492
-
493
-             $messagedatetw = date("Y-m-d H:i:s");
494
-
495
-             if (preg_match('/[A-Za-z]+/', $fromsender)) {
496
-                 $messagefromtw = "Twilio: " . $fromsender;
497
-             } else { $messagefromtw = "Twilio: " . $fromsender; }
498
-
499
-             $messagenetworktw = '';
500
-             $messagepricetw = '';
501
-             $messagedeliverytw = '';
502
-
503
-             $sentmessagearr = [$messageidtw, $messagedatetw, $messagefromtw, $tonumbertw, $messagenetworktw, $messagepricetw, $messagestatustw, $messagedeliverytw, $sentsmstext];
504
-
505
-             $this->service->insertsentsms($this->userId, $sentmessagearr);
506
-         }
507
-
508
-    }
509
-
510
-
511
-    /**
512
-     * @NoAdminRequired
513
-     */
514
-    public function sendsmsflow($userId, $receiversPhoneNbs, $fromsender, $waitinterval, $sentsmstext) {
515
-
516
-         $smsapicredfl = $this->service->getapicredentials($this->userId);
517
-
518
-         $flowapikey = $smsapicredfl[20];
519
-         $flowapisecret = $smsapicredfl[21];
520
-         $flowdelrecurl = $smsapicredfl[23];
521
-         $sentsmstextproc = str_replace('"','\\"', $sentsmstext);
522
-
523
-         $microinterval = $waitinterval * 1000;
524
-
525
-         foreach ($receiversPhoneNbs as $keyflow => $tonumberfl) {
526
-
527
-             usleep($microinterval);
528
-
529
-	     $chfl = curl_init();
530
-	     curl_setopt($chfl, CURLOPT_URL, 'https://'.$flowapikey.':'.$flowapisecret.'@api.flowroute.com/v2.1/messages');
531
-	     curl_setopt($chfl, CURLOPT_HTTPHEADER, array("Content-Type: application/vnd.api+json"));
532
-	     curl_setopt($chfl, CURLOPT_TIMEOUT, 300);
533
-	     curl_setopt($chfl, CURLOPT_RETURNTRANSFER, 1);
534
-	     curl_setopt($chfl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
535
-	     curl_setopt($chfl, CURLOPT_POST, 1);
536
-	     curl_setopt($chfl, CURLOPT_POSTFIELDS, '{"to": "'. $tonumberfl .'", "from": "'. $fromsender .'", "body": "'. $sentsmstextproc .'", "dlr_callback": "'. $flowdelrecurl .'"}');
537
-	     $resultfl = curl_exec ($chfl);
538
-	     $statusCode = curl_getinfo($chfl, CURLINFO_HTTP_CODE);
539
-	     curl_close ($chfl);
540
-
541
-             $decresultfl = json_decode($resultfl);
542
-             if (is_object($decresultfl)) {
543
-                 $messageidfl = $decresultfl->data->id;
544
-             } else { $messageidfl = ''; }
545
-
546
-	     if (in_array($statusCode, [200, 201, 202, 203, 204, 205, 206])) {
547
-                 $messagestatusfl = 'The message has been accepted for delivery.'; 
548
-             } else { 
549
-                 $messagestatusfl = 'An error occurred while trying to send the message.'; 
550
-             }
551
-
552
-             $messagedatefl = date("Y-m-d H:i:s");
553
-
554
-             if (preg_match('/[A-Za-z]+/', $fromsender)) {
555
-                 $messagefromfl = "Flowroute: " . $fromsender;
556
-             } else { $messagefromfl = "Flowroute: " . $fromsender; }
557
-
558
-             $messagetofl = $tonumberfl;
559
-             $messagenetworkfl = '';
560
-             $messagepricefl = '';
561
-             $messagedeliveryfl = '';
562
-             $messagetextfl = $sentsmstext;
563
-
564
-             $sentmessagearr = [$messageidfl, $messagedatefl, $messagefromfl, $messagetofl, $messagenetworkfl, $messagepricefl, $messagestatusfl, $messagedeliveryfl, $messagetextfl];
565
-
566
-             $this->service->insertsentsms($this->userId, $sentmessagearr);
567
-         }
568
-
569
-    }
570
-
571
-
572
-    /**
573
-     * @NoAdminRequired
574
-     */
575
-    public function saveoldrecrows($userId, $oldrecRows) {
576
-
577
-           // Create the folder for removed messages if it doesn't exist
578
-           if ($this->folder->nodeExists('SMS_Relentless/removed_received_messages') == false) {
579
-               $this->folder->newFolder('SMS_Relentless/removed_received_messages');
580
-           }
581
-           $savecheck = 0;
582
-
583
-           if (count($oldrecRows) > 1) {
584
-               $msfileContent = implode("", $oldrecRows);
585
-
586
-               $delrowsdate = date("Y-m-d_H-i-s");
587
-               $msfileName = "Received_Messages_Deleted_On_" . $delrowsdate . ".csv";
588
-
589
-               $userroot = $this->view->getRoot();
590
-               $targetfile = $userroot . "/SMS_Relentless/removed_received_messages/" . $msfileName;
591
-
592
-               $target = $this->folder->newFile($targetfile);
593
-               $target->putContent($msfileContent);
594
-
595
-               if ($this->filesystem->file_get_contents($targetfile) != '') {
596
-                   $savecheck = 1;
597
-               }
598
-           }
599
-
600
-           return $savecheck;
601
-    }
602
-
603
-
604
-    /**
605
-     * @NoAdminRequired
606
-     */
607
-    public function saveoldsentrows($userId, $oldsentRows) {
608
-
609
-           // Create the folder for removed messages if it doesn't exist
610
-           if ($this->folder->nodeExists('SMS_Relentless/removed_sent_messages') == false) {
611
-               $this->folder->newFolder('SMS_Relentless/removed_sent_messages');
612
-           }
613
-           $savesentcheck = 0;
614
-
615
-           if (count($oldsentRows) > 1) {
616
-               $sntfileContent = implode("", $oldsentRows);
617
-
618
-               $delsentrowsdate = date("Y-m-d_H-i-s");
619
-               $sntfileName = "Sent_Messages_Deleted_On_" . $delsentrowsdate . ".csv";
620
-
621
-               $userroot = $this->view->getRoot();
622
-               $snttargetfile = $userroot . "/SMS_Relentless/removed_sent_messages/" . $sntfileName;
623
-
624
-               $snttarget = $this->folder->newFile($snttargetfile);
625
-               $snttarget->putContent($sntfileContent);
626
-
627
-               if ($this->filesystem->file_get_contents($snttargetfile) != '') {
628
-                   $savesentcheck = 1;
629
-               }
630
-           }
631
-
632
-           return $savesentcheck;
633
-    }
634
-
635
-
636
-    /**
637
-     * @NoAdminRequired
638
-     */
639
-    public function getreceivedtable($userId) {
640
-           return $this->service->getreceivedtable($this->userId);
641
-    }
642
-
643
-    /**
644
-     * @NoAdminRequired
645
-     */
646
-    public function getreceivedtablefordel($userId) {
647
-           return $this->service->getreceivedtablefordel($this->userId);
648
-    }
649
-
650
-    /**
651
-     * @NoAdminRequired
652
-     */
653
-    public function removerecrows($userId, $recmessagedbIDs) {
654
-           return $this->service->removerecrows($this->userId, $recmessagedbIDs);
655
-    }
656
-
657
-    /**
658
-     * @NoAdminRequired
659
-     */
660
-    public function getsenttable($userId) {
661
-           return $this->service->getsenttable($this->userId);
662
-    }
663
-
664
-    /**
665
-     * @NoAdminRequired
666
-     */
667
-    public function getsenttablefordel($userId) {
668
-           return $this->service->getsenttablefordel($this->userId);
669
-    }
670
-
671
-    /**
672
-     * @NoAdminRequired
673
-     */
674
-    public function removesentrows($userId, $sentmessagedbIDs) {
675
-           return $this->service->removesentrows($this->userId, $sentmessagedbIDs);
676
-    }
677
-
678
-    /**
679
-     * @NoAdminRequired
680
-     */
681
-    public function getmessagesperpage($userId) {
682
-           return $this->service->getmessagesperpage($this->userId);
683
-    }
684
-
685
-    /**
686
-     * @NoAdminRequired
687
-     */
688
-    public function getdelrecsettings($userId) {
689
-           return $this->service->getdelrecsettings($this->userId);
690
-    }
691
-
692
-    /**
693
-     * @NoAdminRequired
694
-     */
695
-    public function getsettings($userId) {
696
-           return $this->service->getsettings($this->userId);
697
-    }
698
-
699
-    /**
700
-     * @NoAdminRequired
701
-     */
702
-    public function updatesettings($userId, $telapiKey, $telPubKey, $telapiUrlRec, $telapiUrl, $messagingProfileId, $nexapiKey, $nexapiSecret, $nexapiUrlRec, $nexapiUrl, $telSenderName, $nexSenderName, $messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $twilapiKey, $twilapiSecret, $twilapiUrlRec, $twilapiUrl, $twilSenderName, $flowapiKey, $flowapiSecret, $flowapiUrlRec, $flowapiUrl, $flowSenderName) {
703
-           return $this->service->updatesettings($this->userId, $telapiKey, $telPubKey, $telapiUrlRec, $telapiUrl, $messagingProfileId, $nexapiKey, $nexapiSecret, $nexapiUrlRec, $nexapiUrl, $telSenderName, $nexSenderName, $messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $twilapiKey, $twilapiSecret, $twilapiUrlRec, $twilapiUrl, $twilSenderName, $flowapiKey, $flowapiSecret, $flowapiUrlRec, $flowapiUrl, $flowSenderName);
704
-    }
705
-
706
-}
707 0
deleted file mode 100644
... ...
@@ -1,33 +0,0 @@
1
-<?php
2
-/**
3
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
- *
5
- * @author Double Bastion LLC
6
- *
7
- * @license GNU AGPL version 3 or any later version
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
- * License as published by the Free Software Foundation; either
12
- * version 3 of the License, or any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public
20
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
- *
22
- */
23
-
24
-declare(strict_types=1);
25
-
26
-script('sms_relentless', 'showsmstables');
27
-script('sms_relentless', 'arrowup');
28
-style('sms_relentless', 'style');
29
-
30
-?>
31
-
32
-<div id="smstables"><div id="smsRGreyLogo"></div></div>
33
-<button id="upArrow"></button>
34 0
deleted file mode 100644
... ...
@@ -1,233 +0,0 @@
1
-<?php
2
-/**
3
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
- *
5
- * @author Double Bastion LLC
6
- *
7
- * @license GNU AGPL version 3 or any later version
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
- * License as published by the Free Software Foundation; either
12
- * version 3 of the License, or any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public
20
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
- *
22
- */
23
-
24
-declare(strict_types=1);
25
-
26
-script('sms_relentless', 'sendsms');
27
-script('sms_relentless', 'showsmstables');
28
-script('sms_relentless', 'deleteoldsms');
29
-style('sms_relentless', 'style');
30
-
31
-?>
32
-
33
-
34
-<div id="smsrelentless_vbar">
35
-
36
-       <div id="currentbaldiv" class="cllridcls">
37
-            <div id="showsum">Balance:</div>
38
-            <select id="smsprovider" class="optselectprov">
39
-                    <option value="" selected="selected" disabled hidden class="selectsmsprov">select</option>
40
-                    <option value="Telnyx" class='selectsmsprov'>Telnyx</option>
41
-                    <option value="Plivo" class='selectsmsprov'>Plivo</option>
42
-                    <option value="Twilio" class='selectsmsprov'>Twilio</option>
43
-                    <option value="Flowroute" class='selectsmsprov'>Flowroute</option>
44
-            </select>           
45
-            <span id="currentbalance"></span>
46
-            <div class="tooltipbalanceid">
47
-                <div id="infobalance">i</div>
48
-                <span class="balancetooltip">To see the current balance, select a provider from the drop-down list. The balance will be rounded to 3 decimal places and the
49
-                      currency will be that of the respective account. You can see Telnyx prices <a href="https://telnyx.com/pricing/messaging" style="color:#1b60ba"
50
-                      target="_blank" rel="noreferrer noopener">here</a>, Plivo prices <a href="https://www.plivo.com/sms/pricing/us/" style="color:#1b60ba" target="_blank"
51
-                      rel="noreferrer noopener">here</a>, Twilio prices <a href="https://www.twilio.com/sms/pricing/ro" style="color:#1b60ba" target="_blank" 
52
-                      rel="noreferrer noopener">here</a> and Flowroute prices <a href="https://flowroute.com/pricing-details/"  style="color:#1b60ba" target="_blank" 
53
-                      rel="noreferrer noopener">here</a>.
54
-                </span>
55
-            </div>
56
-       </div>
57
-
58
-       <div id="smsnumbersdiv" class="cllridcls">
59
-            <div id="pickid">Set ID:</div>
60
-            <select id="currentsmsnmbrs" class="optselectsmsnb">
61
-                  <option value='' selected="selected" disabled hidden class="optselectsmsnb">click refresh button</option>
62
-            </select>
63
-            <button id="selectcalleridbttn" title="Refresh the list of Sender IDs."></button>
64
-            <div class="tooltipsetid">
65
-                <div id="infotipid">i</div>
66
-                <div id="setcalleridtp">
67
-                    <span class="calleridtooltip">First refresh the list, then select a Sender ID from the drop-down list. The Sender ID is the 'From' field that is displayed on
68
-                        the user's phone when receiving your message. It can be a phone number or an alphanumeric sequence. You must choose as Sender ID one of
69
-                        your numbers, or an alphanumeric sequence that you have entered in Settings > SMS Relentless > 'Telnyx/Plivo/Twilio/Flowroute alphanumeric Sender ID' field. 
70
-                        Please note that <font style="color:#aa2e4b">there are local restrictions based on market regulations or carrier-specific, that can prevent SMS
71
-                        messages to reach their destination because of their Sender ID.</font> For example, in USA and Canada, incoming SMS messages with alphanumeric Sender IDs
72
-                        are not accepted. All messages to phone numbers in USA and Canada must have a phone number as Sender ID. Before sending SMS messages to a country,
73
-                        it's recommended to read about the <a href="https://support.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID" 
74
-                        style="color:#1b60ba" target="_blank" rel="noreferrer noopener">Sender ID restrictions</a> specific to that country. If you use alphanumeric Sender IDs, 
75
-                        there are even <a href="https://support.plivo.com/hc/en-us/articles/360048268071" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">countries</a> 
76
-                        that require that you preregister your Sender ID. If you use Telnyx, to be able to select a phone number as Sender ID, you must have a 'Messaging Profile' 
77
-                        associated with that phone number.
78
-                    </span>
79
-                </div>
80
-            </div>
81
-       </div>
82
-
83
-       <div  class="srheader">
84
-            Enter the recipient's number as:
85
-       </div>
86
-       <div class="smsnbformat">
87
-            <a href="https://en.wikipedia.org/wiki/List_of_country_calling_codes#Alphabetical_listing_by_country_or_region" style="color:#1b60ba"
88
-               target="_blank" rel="noreferrer noopener">country_code</a><font style="color:#aa2e4b">phone_number</font>
89
-       </div>
90
-       <div class="fortooltip"><font class="texttooltip">i</font>
91
-         <div id="tonmbrformat">
92
-            <span class="fortooltiptext">
93
-               For example, to send an SMS to the German number 1212121212 you should enter 491212121212, where 49 is the calling code of Germany. The
94
-               <a href="https://en.wikipedia.org/wiki/List_of_country_calling_codes#Alphabetical_listing_by_country_or_region"
95
-               style="color:#1b60ba" target="_blank" rel="noreferrer noopener">country calling code</a> must be always included, even if the SMS is sent locally. Don't add the '+'
96
-               sign or '00' in front of the number. Please note that <font style="color:#aa2e4b">in different countries there are market regulations and restrictions that
97
-               can prevent certain SMS messages to reach their destination (such as when the text contains repetitive URLs) or can make them illegal (such as when sending messages that 
98
-               advertise money-lending services).</font> Before sending SMS messages to a country, it's recommended to read about the 
99
-               <a href="https://support.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">
100
-               restrictions</a> that apply to that country. To send the same message to multiple recipients, you can enter their phone numbers one after the other separated by comma, 
101
-               in the phone number box. If you want to send the same message to more than 10 phone numbers at once, it's recommended to upload a txt/csv file containing the recipients' 
102
-               phone numbers, by using the option from below. If you check that checkbox, you will be able to upload a file containing phone numbers, and set up a sending rate different 
103
-               from the default 1 message per second. The info note will explain what are the sending rate restrictions that you will have to consider.
104
-            </span>
105
-         </div>
106
-       </div>
107
-
108
-   <div id="smstodiv">
109
-       <input type="text" id="smsto" name="smsto" />
110
-   </div>
111
-
112
-   <div id="sendtomultiple">
113
-      Upload file with phone numbers:
114
-   </div>
115
-
116
-   <div id="tomultiplechck">
117
-      <input type="checkbox" id="tomultchckbx"/>
118
-   </div>
119
-
120
-   <div id="multiplerecivers">
121
-       <div class="fortooltipsec"><font class="texttooltip">i</font>
122
-          <div id="uploadfileinfo">
123
-          <span class="fortooltiptextsec">To send an SMS to a large number of recipients, upload a file containing the recipients' phone numbers.
124
-              Supported formats are txt and csv. The phone numbers can be separated by comma (,) , semicolon (;) , vertical bar (|) , or by new line (by listing one number per line).
125
-              The duplicate phone numbers will be automatically removed. If the numbers contain dots, hyphens or plus signs, they will be also automatically removed.
126
-              After uploading the file, enter the time interval (in milliseconds; 1 second has 1000 milliseconds) between two consecutive message sending requests,
127
-              in the box from below. Please note that there are country specific and carrier imposed sending rate restrictions. For Telnyx, the allowed SMS sending rate of US or 
128
-              Canadian long code numbers (10 digit numbers) is 
129
-              <a href="https://support.telnyx.com/en/articles/96934-throughput-limit-for-outbound-long-code-sms" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">1 
130
-              message per 6 seconds per number</a> . If you need a higher throughput per number, you can rent toll-free numbers (with sending rates of 20 messages per second per number)
131
-              or short codes (with sending rates of 1000 messages per second per number). For Plivo, if you have rented a US or Canadian 10 digit number, you can send SMS messages at 
132
-              a rate of <a href="https://support.plivo.com/hc/en-us/articles/360041314852-What-s-the-outgoing-rate-limit-for-SMS-messages-" style="color:#1b60ba" target="_blank" 
133
-              rel="noreferrer noopener">1 message per 4 seconds per number</a>. If you need a higher throughput, you can rent toll-free numbers (with rates of 10 messages per second per 
134
-              number) or short codes (with rates of 100 messages per second per number). For Twilio, a US or Canadian 10 digit number can send 
135
-              <a href="https://support.twilio.com/hc/en-us/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues" style="color:#1b60ba" target="_blank"
136
-              rel="noreferrer noopener">1 message per second</a>. If you need a higher throughput, you can send 3 messages per second per number with toll-free numbers, or 100 messages 
137
-              per second per number with short codes. For Flowroute, using a US or Canadian 10 digit number or toll-free number, you can send 
138
-              <a href="https://developer.flowroute.com/docs/flowroute-messaging-rate-limits/" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">4 messages per second
139
-              per account</a> (accross all phone numbers). These sending rate limits don't necessarily apply when using non-US and non-Canadian phone numbers to send SMS messages to 
140
-              non-US and non-Canadian numbers. Also, in general, custom sending rates may be obtained by contacting Telnyx/Plivo/Twilio/Flowroute support. Starting from 2021, if you 
141
-              want to send A2P (<a href="https://www.plivo.com/docs/sms/concepts/terminology" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">Application-To-Person</a>) 
142
-              SMS messages to phone numbers or from phone numbers belonging to certain carriers in the US, such as AT&T and T-Mobile, you will need to register your brand and your 
143
-              campaign via
144
-              <a href="https://support.telnyx.com/en/articles/3679260-frequently-asked-questions-about-10dlc" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">Telnyx</a>/
145
-              <a href="https://support.plivo.com/hc/en-us/articles/4682352262809-How-to-Register-10DLC-Brands-and-Campaigns" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">Plivo</a>/
146
-              <a href="https://support.twilio.com/hc/en-us/articles/1260801864489-How-do-I-register-to-use-A2P-10DLC-messaging-" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">Twilio</a>/ 
147
-              <a href="https://support.flowroute.com/265034-Messaging-Guidelines---10DLC-Carrier-Fees-and-Registration" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">Flowroute</a>. 
148
-              Registered campaigns also benefit from a much higher message throughput. If you leave the box from below empty, the application will try to send all the 
149
-              messages with the default sending rate of 1 message per second. If you send messages from a US or Canadian long code number and you surpass the limit of 1 message per 6 
150
-              seconds for Telnyx or 1 message per 4 seconds for Plivo, or 1 message per 1 second for Twilio, or 4 messages per second for Flowroute, Telnyx/Plivo/Twilio/Flowroute 
151
-              respectively will queue your messages and will send them at the specified rates in the order they were received. However, if you send a large number of messages, when 
152
-              the queue becomes full, new messages can be rejected and lost, therefore, to prevent message loss, it's recommended to set the right sending rate in the box from below.
153
-          </span>
154
-          </div>
155
-       </div>
156
-       <div id="multsetrows">
157
-          <div id="fileuploadednm" class="fileuploadstl"></div>
158
-          <div class="uploadfiledv">
159
-              <form class="uploadflbt"  enctype="multipart/form-data" >
160
-                  <label for="uploadfileforsms" class="pfprompt"><span id="uploadflprmpt"><?php p($l->t('Upload the file ')) ?></span></label>
161
-                  <input id="uploadfileforsms" class="fileupload" name="uploadedtosms" type="file" />
162
-                  <label for="uploadfileforsms" class="button icon-upload svg" id="uploadfileforsms" </label>
163
-              </form>
164
-          </div>
165
-          <span id="sms_upload_msg"></span>
166
-          <span class="entertime">Enter the time interval between consecutive messages, in milliseconds:</span><input type="text"
167
-          id="multsmsinterval" placeholder="Eg.: 10000" />
168
-       </div>
169
-   </div>
170
-
171
-   <textarea id="smstext"  name="smstext" placeholder="Enter a message here, then press 'Send SMS'."></textarea>
172
-
173
-   <div class="maxmessagelength"><font class="texttooltip">i</font>
174
-       <div id="maxlengthinfo">
175
-           <span class="maxlengthtooltip">
176
-                The maximum length allowed for messages using the standard GSM 03.38 encoding is 160 characters (fewer in some countries),
177
-                while for Unicode encoded messages is 70 characters (fewer in some countries).
178
-                If you send a message longer than 160 characters for standard GSM encoding or longer than 70 characters for Unicode encoding, the message will be sent
179
-                as a 'concatenated' message: it will be split into smaller pieces by Telnyx/Plivo/Twilio/Flowroute and it will be reassembled as one message at its destination. 
180
-                However, you will be charged for each piece as for a separate SMS. Thus, if the initial message is 385 GSM encoded characters in length, you will be 
181
-                charged for 3 SMS messages. The maximum number of characters per concatenated message is slightly smaller than the standard 160 for GSM encoded characters 
182
-                and 70 for Unicode, due to the inclusion of concatenation headers. Some symbols in the GSM 7-bit alphabet table (like "£" or "€") will count as two characters, 
183
-                so, not always 160 characters will fit into a single GSM encoded SMS.
184
-           </span>
185
-       </div>
186
-   </div>
187
-
188
-   <div id="char_count"><span id="countchnb"></span><span> characters</span></div>
189
-
190
-   <input type="submit" id="submitsms" value="Send SMS" />
191
-   <span id="sms_submit_msg"></span>
192
-
193
-   <div id="dirbuttons">
194
-       <button id="receivedsmstable" class="opensmsfolder">Received SMS Messages</button>
195
-       <button id="sentsmstable" class="opensmsfolder">Sent SMS Messages</button>
196
-   </div>
197
-
198
-
199
-   <div id="deleteoldmssgs">
200
-      Remove old messages:
201
-   </div>
202
-
203
-   <div id="deleteoldchck">
204
-      <input type="checkbox" id="deleteoldchckbox" />
205
-   </div>
206
-
207
-   <div id="deleteoldsms">
208
-       <div class="fortooltiptert"><font class="texttooltip">i</font>
209
-          <div id="deleteoldinfo">
210
-             <span class="fortooltiptexttert">Since this application records all incoming and outgoing SMS messages, in time, its database can become very large, which
211
-                 can slow it down. To avoid having to work with extremely large tables, it's recommended that you delete from time to time all the sent/received messages older than 
212
-                 a specified number of days (for example 180 days). All the messages deleted using the options from below will be preserved, because they will be saved as csv files
213
-                 before being deleted from the database. The csv files will contain all the data of the deleted messages, they will bear the date of the removal and they will be
214
-                 stored in the 'SMS_Relentless/ removed_sent_messages' and 'SMS_Relentless/ removed_received_messages' directories. Being structured as 'csv',
215
-                 the data can then be viewed and analyzed with other applications to create statistics, graphs etc. Therefore, as long as the 'csv' files are preserved,
216
-                 the deleted messages are not lost. (Please note that this 'save before delete' mechanism is not used when messages are deleted by selecting their respective table 
217
-                 rows and clicking on the 'Permanently delete' upper-left corner icon).
218
-          </span>
219
-          </div>
220
-       </div>
221
-       <div id="delsetrows">
222
-          <span class="deletesmsolder">Delete from the database all the <font style="color: #ba3555;">received</font> messages that are older than <input type="text" id="oldrecSmsInterval" title="Enter the number of days." /> days.</span>
223
-          <input type="submit" id="delOldrecSMS" value="Delete received messages" />
224
-          <span id="sms_deleterecmsg"></span><br><br>
225
-
226
-          <span class="deletesmsolder">Delete from the database all the <font style="color: #ba3555;">sent</font> messages that are older than </span><input type="text" id="oldsentSmsInterval" title="Enter the number of days."/>
227
-          <span class="deletesmsolder"> days.</span>
228
-          <input type="submit" id="delOldsentSMS" value="Delete sent messages" />
229
-          <span id="sms_deletesentmsg"></span>
230
-       </div>
231
-   </div>
232
-
233
-</div>
234 0
deleted file mode 100644
... ...
@@ -1,239 +0,0 @@
1
-<?php
2
-/**
3
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
- *
5
- * @author Double Bastion LLC
6
- *
7
- * @license GNU AGPL version 3 or any later version
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
- * License as published by the Free Software Foundation; either
12
- * version 3 of the License, or any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public
20
- * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
- *
22
- */
23
-
24
-declare(strict_types=1);
25
-
26
-script('sms_relentless', 'settings');
27
-style('sms_relentless', 'style');
28
-
29
-?>
30
-
31
-<div id="sms_relentless_adm">
32
-        <div class="section">
33
-           <h2><?php p($l->t('SMS Relentless'));?></h2>
34
-           <p id="settings-dscr"><h3><?php p($l->t('Enter your credentials and options in the fields from below. As SMS service provider you can use Telnyx or Plivo or Twilio 
35
-              or Flowroute or all of them.')); ?></h3></p><br>
36
-           <div class="sms_followupsection">
37
-
38
-                <form id="prov_credentials" action="#" >
39
-
40
-                   <div class="providerSettings">
41
-                   <p style="font-size:18px;font-weight:bold;margin-bottom:20px;">Telnyx Settings</p>
42
-                   <p><label for="telapi_key" class="setlabeltext"><b>Telnyx API Secret Key</b> (Log in to Telnyx, click on 'API Keys' on the left panel. If you already have an API 
43
-                          key, just copy it by clicking the 'Copy to clipboard' icon. Otherwise, to create an API key, click the 'Create API Key' button, on the pop up message 
44
-                          click 'Create', then copy the key somewhere safe, then enter it in the field from below.):</label></p>
45
-                   <input type="password" class="smsr_textbox" id="telapi_key" name="telapi_key" autocomplete="false"
46
-                          placeholder="<?php p($l->t('e.g. d6f172ce92e4f2 ...')); ?>" /><br>
47
-
48
-                   <p><label for="tel_pub_key" class="setlabeltext"><b>Telnyx Account Public Key</b> (While logged in to Telnyx, click on 'API Keys' on the left panel, click on 'Public
49
-                          Key' on the upper bar, then copy the public key from the 'Key' field and enter it in the field from below.):</label></p>
50
-                   <input type="password" class="smsr_textbox" id="tel_pub_key" name="tel_pub_key" autocomplete="false"
51
-                          placeholder="<?php p($l->t('e.g. KLCnMsTSp8utW3RRHx0FiXxbf5BxK2Y5q8mMTCn0jgv=')); ?>" /><br>
52
-
53
-                   <p><label for="messaging_profile_id" class="setlabeltext"><b>Messaging Profile ID</b> (While logged in to Telnyx, click on 'Messaging' on the left panel, click on 
54
-                       the name of the messaging profile that you want to use, then under 'Profile ID' you will find the messaging profile ID. Copy it and enter it in the field from 
55
-                       below.):
56
-                   </label></p>
57
-                   <input type="password" class="smsr_textbox" id="messaging_profile_id" name="messaging_profile_id" autocomplete="false"
58
-                          placeholder="<?php p($l->t('e.g. 9d4f47b6-26c9-d25c-c2f5 ...')); ?>" /><br>
59
-
60
-                   <p><label for="telapi_url_rec" class="setlabeltext"><b>Telnyx webhook URL for incoming SMS</b> (You have to first generate and then copy this URL into your Telnyx
61
-                       account, so that Telnyx knows where to deliver the SMS messages received by your Telnyx phone number(s). First generate the URL by pressing the button from
62
-                       below, copy it, then, in your Telnyx account click on 'Messaging' on the left panel, click on the name of the messaging profile that you associated with your
63
-                       phone number(s), then, under 'Inbound Settings', enter the webhook URL generated here in the field 'Send a webhook to this URL' and click 'Save'. Don't forget
64
-                       to also click the 'Save' button at the bottom of this page after entering all the credentials, to save all the settings to the database.)</label></p>
65
-                   <input type="button" id="generate_tel_rcpt" value="<?php p($l->t('Generate new webhook URL for incoming SMS')) ?>" />
66
-                   <input type="text" class="smsr_textboxspec" id="telapi_url_rec" name="telapi_url_rec" autocomplete="false" />
67
-                   <span id="copyToClipboardtel" class="icon icon-clippy" title="Copy to clipboard"></span><br><br>
68
-
69
-                   <p><label for="telapi_url" class="setlabeltext"><b>Telnyx webhook URL for delivery receipts</b> (This URL will be included by SMS Relentless in SMS
70
-                       message sending requests, so that Telnyx knows where to send the delivery receipts. Just generate it by pressing the button from below.
71
-                       You don't have to enter this URL into your Telnyx account. Don't forget to click the 'Save' button at the bottom of this page after entering all the credentials, 
72
-                       to save all the settings to the database.)</label></p>
73
-                   <input type="button" id="generate_tel_delrcpt" value="<?php p($l->t('Generate new webhook URL for delivery receipts')) ?>" />
74
-                   <input type="text" id="telapi_url" name="telapi_url" autocomplete="false" /><br><br>
75
-
76
-                   <p><label for="tel_sender_name" class="setlabeltext"><b>Telnyx alphanumeric Sender ID</b> (If you intend to use an alphanumeric Sender ID, enter an alphanumeric 
77
-                          sequence of up to 11 characters in the range of a-z, A-Z, 0-9 and space. In certain countries there are regulations that accept only shorter alphanumeric 
78
-                          Sender IDs, such as up to 6 characters. You cannot send SMS messages with alphanumeric Sender IDs to USA or Canada. There are even 
79
-                          <a href="https://support.plivo.com/hc/en-us/articles/360041448032" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">countries</a> that require
80
-                          preregistration of alphanumeric Sender IDs. Before sending SMS messages to a country, it's recommended to read the
81
-                          <a href="https://support.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID" style="color:#1b60ba" target="_blank"
82
-                          rel="noreferrer noopener">country specific features and restrictions.</a> Some carriers won't accept messages with an alphanumeric Sender ID): </label></p>
83
-                   <input type="text" class="smsr_textbox" id="tel_sender_name" name="tel_sender_name" autocomplete="false"
84
-                          placeholder="<?php p($l->t('e.g. Smart Inc')); ?>" />
85
-                   </div><br><br><br>
86
-
87
-                   <div class="providerSettings">
88
-                   <p style="font-size:18px;font-weight:bold;margin-bottom:20px;">Plivo Settings</p>
89
-                   <p><label for="nexapi_key" class="setlabeltext"><b>Plivo Auth ID</b> (Log in to Plivo. On the first page, which is the Overview page, under Account, copy the 'Auth ID'
90
-                          and enter it in the field from below.):</label></p>
91
-                   <input type="password" class="smsr_textbox" id="nexapi_key" name="nexapi_key" autocomplete="false"
92
-                          placeholder="<?php p($l->t('e.g. r5g974cb92e4t1 ...')); ?>" /><br>
93
-
94
-                   <p><label for="nexapi_secret" class="setlabeltext"><b>Plivo Auth Token</b> (While logged in to Plivo, on the Overview page, under Account, copy the 'Auth Token' and
95
-                          enter it in the field from below.):</label></p>
96
-                   <input type="password" class="smsr_textbox" id="nexapi_secret" name="nexapi_secret" autocomplete="false"
97
-                          placeholder="<?php p($l->t('e.g. k6f489d8awn4p9 ...')); ?>" /><br>
98
-
99
-                   <p><label for="nexapi_url_rec" class="setlabeltext"><b>Plivo webhook URL for incoming SMS</b> (You have to first generate and then copy this URL into your Plivo
100
-                       account, so that Plivo knows where to deliver the SMS messages received by your Plivo phone number(s). First generate the URL by pressing the button from
101
-                       below, copy it, then, in your Plivo account click on 'Messaging' on the left vertical bar, click on 'Applications', then, under 'Application name' click on
102
-                       'Inbound SMS Messages', next, under 'Message', enter the webhook URL generated here in the field 'Message URL' and select 'POST' next to it, then click the
103
-                       'Update Application' button. Don't forget to also click the 'Save' button at the bottom of this page after entering all the credentials, to save all the settings 
104
-                       to the database.)</label></p>
105
-                   <input type="button" id="generate_nex_rcpt" value="<?php p($l->t('Generate new webhook URL for incoming SMS')) ?>" />
106
-                   <input type="text" class="smsr_textboxspec" id="nexapi_url_rec" name="nexapi_url_rec" autocomplete="false" />
107
-                   <span id="copyToClipboardnex" class="icon icon-clippy" title="Copy to clipboard"></span><br><br>
108
-
109
-                   <p><label for="nexapi_url" class="setlabeltext"><b>Plivo webhook URL for delivery receipts</b> (This URL will be included by SMS Relentless in SMS
110
-                       message sending requests, so that Plivo knows where to send the delivery receipts. Just generate it by pressing the button from below.
111
-                       You don't have to enter this URL into your Plivo account. Don't forget to click the 'Save' button at the bottom of this page after entering all the credentials, 
112
-                       to save all the settings to the database.)</label></p>
113
-                   <input type="button" id="generate_nex_delrcpt" value="<?php p($l->t('Generate new webhook URL for delivery receipts')) ?>" />
114
-                   <input type="text" id="nexapi_url" name="nexapi_url" autocomplete="false" /><br><br>
115
-
116
-                   <p><label for="nex_sender_name" class="setlabeltext"><b>Plivo alphanumeric Sender ID:</b> (If you intend to use an alphanumeric Sender ID, enter an alphanumeric 
117
-                          sequence of up to 11 characters in the range of a-z, A-Z, 0-9 and space. In certain countries there are regulations that accept only shorter alphanumeric 
118
-                          Sender IDs, such as up to 6 characters. You cannot send SMS messages with alphanumeric Sender IDs to USA or Canada. There are even 
119
-                          <a href="https://support.plivo.com/hc/en-us/articles/360041448032" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">countries</a> that require
120
-                          preregistration of alphanumeric Sender IDs. Before sending SMS messages to a country, it's recommended to read the
121
-                          <a href="https://support.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID" style="color:#1b60ba" target="_blank"
122
-                          rel="noreferrer noopener">country specific features and restrictions.</a> Some carriers won't accept messages with an alphanumeric Sender ID): </label></p>
123
-                   <input type="text" class="smsr_textbox" id="nex_sender_name" name="nex_sender_name" autocomplete="false"
124
-                          placeholder="<?php p($l->t('e.g. Global Inc')); ?>" />
125
-                   </div><br><br><br>
126
-
127
-                   <div class="providerSettings">
128
-                   <p style="font-size:18px;font-weight:bold;margin-bottom:20px;">Twilio Settings</p>
129
-                   <p><label for="twilapi_key" class="setlabeltext"><b>Twilio Account SID</b> (Log in to Twilio. On the first page, under Account Info, copy the 'Account SID'
130
-                          and enter it in the field from below.):</label></p>
131
-                   <input type="password" class="smsr_textbox" id="twilapi_key" name="twilapi_key" autocomplete="false"
132
-                          placeholder="<?php p($l->t('e.g. r5g974cb92e4t1 ...')); ?>" /><br>
133
-
134
-                   <p><label for="twilapi_secret" class="setlabeltext"><b>Twilio Auth Token</b> (While logged in to Twilio, on the first page, under Account Info, copy the 'Auth Token'
135
-                          and enter it in the field from below.):</label></p>
136
-                   <input type="password" class="smsr_textbox" id="twilapi_secret" name="twilapi_secret" autocomplete="false"
137
-                          placeholder="<?php p($l->t('e.g. k6f489d8awn4p9 ...')); ?>" /><br>
138
-
139
-                   <p><label for="twilapi_url_rec" class="setlabeltext"><b>Twilio webhook URL for incoming SMS</b> (You have to first generate and then copy this URL into your Twilio
140
-                       account, so that Twilio knows where to deliver the SMS messages received by your Twilio phone number(s). First generate the URL by pressing the button from
141
-                       below, copy it, then, in your Twilio account click on 'Phone Numbers' on the left panel > 'Manage' > 'Active numbers', click on the phone number you want to use 
142
-                       for SMS, scroll down to the 'Messaging' section, then under 'A MESSAGE COMES IN' select 'Webhook', then paste in the webhook URL that you have just generated 
143
-                       and select 'HTTP POST' as the request type. Enter the same data under 'PRIMARY HANDLER FAILS', then click the 'Save' button. If you have multiple SMS enabled phone
144
-                       numbers, do the same for each number. Don't forget to also click the 'Save' button at the bottom of this page after entering all the credentials, to save all the 
145
-                       settings to the database.)</label></p>
146
-                   <input type="button" id="generate_twil_rcpt" value="<?php p($l->t('Generate new webhook URL for incoming SMS')) ?>" />
147
-                   <input type="text" class="smsr_textboxspec" id="twilapi_url_rec" name="twilapi_url_rec" autocomplete="false" />
148
-                   <span id="copyToClipboardtwil" class="icon icon-clippy" title="Copy to clipboard"></span><br><br>
149
-
150
-                   <p><label for="twilapi_url" class="setlabeltext"><b>Twilio webhook URL for delivery receipts</b> (This URL will be included by SMS Relentless in SMS
151
-                       message sending requests, so that Twilio knows where to send the delivery receipts. Just generate it by pressing the button from below.
152
-                       You don't have to enter this URL into your Twilio account. Don't forget to click the 'Save' button at the bottom of this page after entering all the credentials, 
153
-                       to save all the settings to the database.)</label></p>
154
-                   <input type="button" id="generate_twil_delrcpt" value="<?php p($l->t('Generate new webhook URL for delivery receipts')) ?>" />
155
-                   <input type="text" id="twilapi_url" name="twilapi_url" autocomplete="false" /><br><br>
156
-
157
-                   <p><label for="twil_sender_name" class="setlabeltext"><b>Twilio alphanumeric Sender ID:</b> (If you intend to use an alphanumeric Sender ID, enter an alphanumeric 
158
-                          sequence of up to 11 characters in the range of a-z, A-Z, 0-9 and space. In certain countries there are regulations that accept only shorter alphanumeric 
159
-                          Sender IDs, such as up to 6 characters. You cannot send SMS messages with alphanumeric Sender IDs to USA or Canada. There are even 
160
-                          <a href="https://support.plivo.com/hc/en-us/articles/360041448032" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">countries</a> that require
161
-                          preregistration of alphanumeric Sender IDs. Before sending SMS messages to a country, it's recommended to read the
162
-                          <a href="https://support.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID" style="color:#1b60ba" target="_blank"
163
-                          rel="noreferrer noopener">country specific features and restrictions.</a> Some carriers won't accept messages with an alphanumeric Sender ID): </label></p>
164
-                   <input type="text" class="smsr_textbox" id="twil_sender_name" name="twil_sender_name" autocomplete="false"
165
-                          placeholder="<?php p($l->t('e.g. Global Inc')); ?>" />
166
-                   </div><br><br><br>
167
-
168
-                   <div class="providerSettings">
169
-                   <p style="font-size:18px;font-weight:bold;margin-bottom:20px;">Flowroute Settings</p>
170
-                   <p><label for="flowapi_key" class="setlabeltext"><b>Flowroute Access Key</b> (Log in to Flowroute. On the left panel, click on 'Preferences', then on the 'API Control'
171
-                          tab. Scroll down to the 'API Keys' section. If you already have a pair of keys listed in that section, just copy the Access Key to the field from below. If you
172
-                          haven't created any keys yet, to create a key pair, under 'Add new API Key', in the 'Name' field, enter a name for the new key pair. In the 'Description' field 
173
-                          enter a short description, then click 'Add new'. A new pair of keys will be created and you will be prompted to copy the Secret Key. After you copy the Secret 
174
-                          Key to a safe location, copy the Access Key that has just been created to the field from below.):</label></p>
175
-                   <input type="password" class="smsr_textbox" id="flowapi_key" name="flowapi_key" autocomplete="false"
176
-                          placeholder="<?php p($l->t('e.g. r5g974cb92e4t1 ...')); ?>" /><br>
177
-
178
-                   <p><label for="flowapi_secret" class="setlabeltext"><b>Flowroute Secret Key</b> (Enter the Secret Key created earlier and copied to a safe place, in the field from 
179
-                          below.):</label></p>
180
-                   <input type="password" class="smsr_textbox" id="flowapi_secret" name="flowapi_secret" autocomplete="false"
181
-                          placeholder="<?php p($l->t('e.g. k6f489d8awn4p9 ...')); ?>" /><br>
182
-
183
-                   <p><label for="flowapi_url_rec" class="setlabeltext"><b>Flowroute webhook URL for incoming SMS</b> (You have to first generate and then copy this URL into your 
184
-                          Flowroute account, so that Flowroute knows where to deliver the SMS messages received by your Flowroute phone number(s). First generate the URL by pressing the 
185
-                          button from below, copy it, then, in your Flowroute account click on 'Preferences' on the left panel, then click on the 'API Control tab', turn on the 'SMS' 
186
-                          switch and in the field that shows up enter the URL that you have just generated. Click 'Save URL'. Also, under 'SMS Webhook Version' choose 'v2.1'. Don't 
187
-                          forget to also click the 'Save' button at the bottom of this page after entering all the credentials, to save all the settings to the database.)</label></p>
188
-                   <input type="button" id="generate_flow_rcpt" value="<?php p($l->t('Generate new webhook URL for incoming SMS')) ?>" />
189
-                   <input type="text" class="smsr_textboxspec" id="flowapi_url_rec" name="flowapi_url_rec" autocomplete="false" />
190
-                   <span id="copyToClipboardflow" class="icon icon-clippy" title="Copy to clipboard"></span><br><br>
191
-
192
-                   <p><label for="flowapi_url" class="setlabeltext"><b>Flowroute webhook URL for delivery receipts</b> (This URL is needed by Flowroute to know where to send the 
193
-                          delivery receipts. Just generate it by pressing the button from below. You don't have to enter this URL into your Flowroute account. Don't forget to click 
194
-                          the 'Save' button at the bottom of this page after entering all the credentials, to save all the settings to the database.)</label></p>
195
-                   <input type="button" id="generate_flow_delrcpt" value="<?php p($l->t('Generate new webhook URL for delivery receipts')) ?>" />
196
-                   <input type="text" id="flowapi_url" name="flowapi_url" autocomplete="false" /><br><br>
197
-
198
-                   <p><label for="flow_sender_name" class="setlabeltext"><b>Flowroute alphanumeric Sender ID:</b> (If you intend to use an alphanumeric Sender ID, enter an alphanumeric 
199
-                          sequence of up to 11 characters in the range of a-z, A-Z, 0-9 and space. In certain countries there are regulations that accept only shorter alphanumeric 
200
-                          Sender IDs, such as up to 6 characters. You cannot send SMS messages with alphanumeric Sender IDs to USA or Canada. There are even 
201
-                          <a href="https://support.plivo.com/hc/en-us/articles/360041448032" style="color:#1b60ba" target="_blank" rel="noreferrer noopener">countries</a> that require
202
-                          preregistration of alphanumeric Sender IDs. Before sending SMS messages to a country, it's recommended to read the
203
-                          <a href="https://support.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID" style="color:#1b60ba" target="_blank"
204
-                          rel="noreferrer noopener">country specific features and restrictions.</a> Some carriers won't accept messages with an alphanumeric Sender ID): </label></p>
205
-                   <input type="text" class="smsr_textbox" id="flow_sender_name" name="flow_sender_name" autocomplete="false"
206
-                          placeholder="<?php p($l->t('e.g. Global Inc')); ?>" />
207
-                   </div><br><br><br>
208
-
209
-                   <p><label for="messagesperpage" class="setlabeltext"><b>Number of messages per page</b> (Enter the number of messages to be displayed on one page of the
210
-                          received and sent messages tables. If you don't enter anything in this field, the default of 100 messages per page will be used.):</label></p>
211
-                   <input type="number" class="smsr_textbox" id="messagesperpage" name="messagesperpage" autocomplete="false" placeholder="<?php p($l->t('e.g. 100')); ?>"/><br>
212
-
213
-                   <p><label for="get_notify" class="setlabeltext"><b>I want to see a notification in Nextcloud when a new SMS is received:</b></label></p>
214
-                   <input type="checkbox" class="sms_rel_checkbox" id="get_notify" name="get_notify" autocomplete="false" /><br>
215
-
216
-                   <p class="setlabeltext">To enable email notifications for every received SMS, the "sendmail" utility ("/usr/sbin/sendmail" on Debian Linux),
217
-                      has to be present on the server. "sendmail" is a binary which gets installed when Postfix is installed. Also the server user (www-data) has to be
218
-                      allowed to send emails from command line (by specifying "authorized_submit_users = www-data" in "/etc/postfix/main.cf" for Postfix on a Debian based
219
-                      Linux).</p><br>
220
-
221
-                   <p><label for="notification_email" class="setlabeltext"><b>I want to receive a notification to the email address from below, when a new SMS is
222
-                      received:</b></label></p>
223
-                   <input type="text" class="smsr_textbox" id="notification_email" name="notification_email" autocomplete="false"
224
-                          placeholder="<?php p($l->t('e.g. john.doe@example.com')); ?>" /><br>
225
-
226
-                   <p><label for="includesmsinemail" class="setlabeltext"><b>Include the SMS message in the email notification itself:</b></label></p>
227
-                   <input type="checkbox" class="sms_rel_checkbox" id="includesmsinemail" name="includesmsinemail" autocomplete="false" /><br>
228
-
229
-                   <input type="hidden" id="user_id" name="user_id" />
230
-
231
-                   <input id="save_sms_settings" type="submit" value="<?php p($l->t('Save')) ?>" />
232
-
233
-                   <span id="smsr_save_msg"></span>
234
-
235
-               </form>
236
-           </div>
237
-        </div>
238
-</div>
239
-