4078 Commits

Author SHA1 Message Date
713d3412d8 Merge branch 'stable' into sl 2026-03-04 17:33:28 +01:00
f07b387e67 update version check url 2026-03-02 08:03:07 +01:00
3dfc6cf9c1 Merge branch 'master' into stable 2026-03-02 08:02:19 +01:00
c42b1f028c update version check url 2026-03-02 08:01:44 +01:00
lickx
c58c4634ba Add creatorkit, closes #110 2026-02-22 04:26:43 +01:00
lickx
00128ef5f5 Add creatorkit, closes #110 2026-02-22 04:23:47 +01:00
lickx
0ccdf86a50 Merge branch 'master' into stable 2026-02-16 09:11:05 +01:00
lickx
8659213ab2 Use sane default if leash length is 0
This should never happen tho
2026-02-15 13:49:13 +01:00
lickx
bcfe397138 Handle outfit changes in a failsafe way 2026-02-10 16:53:56 +01:00
lickx
2ac956341a Merge branch 'master' into stable 2026-02-02 09:23:10 +01:00
lickx
f9ee2bc9e7 Don't process FloatText prim during hide/unhide 2026-02-02 09:22:43 +01:00
lickx
d8d7f34b11 Merge branch 'master' into stable 2026-02-01 12:02:50 +01:00
lickx
5e3301d021 Correct channel on oc_grabbypost 2026-02-01 10:30:35 +01:00
lickx
522d1a4f9c Bump device version for the updater check 2026-02-01 10:29:10 +01:00
lickx
1a06aa0b30 Correct the font y 2026-02-01 10:27:38 +01:00
lickx
e34bf53933 Redo how stealth works
Also remove redundant @detach (it is handled by rlvsys)
2026-02-01 10:24:57 +01:00
lickx
1fd6a90089 Rename Owner's HUD -> Remote 2026-01-27 15:03:28 +01:00
lickx
746653149b Update README.md 2026-01-14 12:40:12 +01:00
lickx
0d664a406e Merge branch 'master' into stable 2025-12-26 13:04:14 +01:00
lickx
5049d3bd2d Merge branch 'master' into sl 2025-12-25 16:54:32 +01:00
lickx
e95bea06d5 Normalize heel
If slider for heel and platform are fully to the right,
each is 10cm height difference
2025-12-25 16:23:27 +01:00
lickx
10789cf557 Remove the heel stuff here too (for SL) 2025-12-13 13:28:21 +01:00
lickx
c02833452e heel_height and platform_height are unusable on sl
In SL, each always returns exactly 1 if higher than 0.0
Only OpenSim has this working correctly

So for now heel/platform height is not taken into account
anymore when setting the sitoffset on SL otherwise the avi
moves up 2 meter with SitAnywhere.
2025-12-13 13:19:05 +01:00
lickx
79499f0e2e Merge branch 'master' into sl 2025-05-31 06:29:06 +02:00
lickx
63f9c3ec97 Cleanup 2025-05-29 04:42:01 +02:00
lickx
20210dd3af Cleanup 2025-05-29 04:41:22 +02:00
lickx
a6d5a50467 Merge branch 'master' into stable 2025-05-20 09:44:21 +02:00
lickx
550bfcacdf Post-merge changes 2025-05-19 06:59:06 +02:00
lickx
c71de4f80a Cut some irrelevant info for stable 2025-05-12 13:21:16 +02:00
lickx
656a0ddd40 Arcadia is gone 2025-05-12 13:19:21 +02:00
lickx
eaa5a6f1e3 Correct repo to check for the device version 2025-05-11 19:56:31 +02:00
lickx
e9d54fc60b Merge branch 'master' into tamai 2025-05-11 16:00:39 +02:00
lickx
0396e3bb62 Closes #108 2025-04-29 08:15:04 +02:00
lickx
eafa30a5f7 Replace script engine info with OS version info 2025-04-24 18:14:13 +02:00
lickx
41274d4020 Make it compile (now tested) 2025-04-24 18:03:10 +02:00
lickx
442d7b5fed Type is more reliable than Key for inv checking 2025-04-24 17:15:26 +02:00
lickx
57468cc10a On 2nd thought, always be verbose 2025-04-24 16:59:59 +02:00
lickx
4b6355a222 On runaway, rewrite card without owners, or else remove it
Untested
2025-04-24 16:50:04 +02:00
lickx
adec57490c Hint to unlock before overwrite the .settings card 2025-04-24 16:31:47 +02:00
lickx
4a021b7ed6 Unfortunately minimum version will be 0.9.3.1
Due to http://opensimulator.org/mantis/view.php?id=9127
which affects the most recent 0.9.3 release.
2025-04-23 21:02:42 +02:00
lickx
38b6eb9523 Lower minimum requirement to current release 2025-04-23 14:45:13 +02:00
lickx
8d05f56064 Comment out the llGetVisualParams code
Until next OpenSim release (0.9.3.1?) where it will be included
2025-04-19 19:05:37 +02:00
lickx
233679ca30 Oops forgot something 2025-04-17 16:24:37 +02:00
lickx
bec1074718 Detect RLV less frequent on startup 2025-04-17 15:48:44 +02:00
lickx
205460c44c Various small updates 2025-04-16 07:58:06 +02:00
lickx
bb1d46fc9f llGetVisualParams replaces inaccurate heel/platform detection 2025-04-16 07:54:22 +02:00
lickx
1aa899f895 Use yyyy.mm version from now on
The comparison never took into acount the pointversion (day) anyway
2025-04-16 07:53:36 +02:00
lickx
19d5891fab More refinement for llGetVisualParams 2025-04-16 07:52:28 +02:00
lickx
7fa14d3ed2 Removed due to licensing unclarity
Despite being available on most free font sites,
we can't have ambiguous licensed files in the repo
2025-04-16 05:00:36 +02:00
lickx
a68cb59770 Implement *real* heel+platform height
This feature will only show noticable results in OpenSim master (0.9.3.1)
For older OpenSim, heel and platform height will make no difference

You may have to readjust your offsets in the Animations->Pose menu,
and then Settings->Save from the main menu.
2025-04-15 08:27:56 +02:00
lickx
89bc04e740 Similar changes as in Tamai branch 2025-01-26 04:34:32 +01:00
lickx
3930ba371d 2025.01.06 for Tamai 2025-01-06 15:21:26 +01:00
lickx
d93484867a Use UUIDs instead of inventory textures 2024-12-24 13:17:17 +01:00
lickx
16d7539120 Remove shoe offset stuff 2024-12-24 12:56:12 +01:00
lickx
b488938ac4 Line endings 2024-10-04 04:16:59 +02:00
lickx
76336ec3ca Store on/off state, for when re-attaching/relogging 2024-07-23 20:03:46 +02:00
lickx
5d1a7bc4b5 Merge pull request #103 from lickx/101-oc_settings-use-linkset-data-for-storage-instead-of-notecardprimtextures
101 oc settings use linkset data for storage instead of notecardprimtextures
2024-07-08 14:47:46 +02:00
lickx
4fd317673d Merge branch 'master' into 101-oc_settings-use-linkset-data-for-storage-instead-of-notecardprimtextures 2024-07-08 14:46:15 +02:00
lickx
2d2b800ef6 Merge branch 'master' into sl 2024-06-28 04:43:17 +02:00
lickx
d08ccc5135 Merge pull request #104 from lickx/102-trim-led-code-for-optimization
Do away with LED code (issue #102)
2024-06-28 04:39:18 +02:00
lickx
0393a837d0 Update opensim-patches.md 2024-05-31 11:45:04 +02:00
lickx
b51fba378d Do away with LED code (issue #102) 2024-05-29 17:25:11 +02:00
lickx
e74599a50c Delete old notecard before saving the new one 2024-05-18 17:01:08 +02:00
lickx
1e5943497e Now multiple values per token work correct
I had to duplicate some code from SetSetting to LoadLinksetData

Also DelSetting will now remove the LSD for the token given
2024-05-13 17:45:01 +02:00
lickx
64d017517d Same here. And always load from LSD when state lost 2024-05-13 16:38:05 +02:00
lickx
7503c95555 One correction I forgot to commit 2024-05-13 16:20:55 +02:00
lickx
583f3de5a1 Let oc_settings use linksetdata #101
Includes a 'Dump LSD' command in the Settings dialog, to show what's
currently stored. You can compare to the 'Print' to see if everything
is correct.

On 'Load Card', linksetdata will be cleared before loading, at least for
now. This is maybe not desirable in the final release, otherwise one can
purge all owners too easily.
2024-05-13 15:10:55 +02:00
lickx
42d265808b Merge branch 'master' into sl 2024-03-17 10:30:23 +01:00
lickx
86004ac483 Workaround for AIS3 and RLVa 2024-03-17 10:29:43 +01:00
lickx
4209a40789 Check perms before enabling/disabling
In the case the user revoked them for whatever reason (common in OS)
2024-03-16 06:08:48 +01:00
lickx
db623bef74 Save memory, minor improvements 2024-03-16 06:03:59 +01:00
lickx
430a520ad2 Drop cmdline heeloffset feature to save memory 2024-03-16 04:03:42 +01:00
lickx
8f6ee76a01 Merge branch 'master' into sl 2024-02-17 16:06:46 +01:00
lickx
f0ca350b6d Re-apply restrictions on login 2024-02-17 15:39:55 +01:00
lickx
5b6ecd549f Update AO comparison 2023-12-03 02:44:15 +01:00
lickx
2bf8ee180f Update AO comparison 2023-12-03 02:41:25 +01:00
lickx
845d9ea4ca Update AO comparison 2023-12-03 02:40:44 +01:00
lickx
dfd48aae09 Workaround for @attachallover not needed anymore for SL 2023-11-29 17:02:07 +01:00
lickx
2a65edfeeb Merge branch 'master' into stable 2023-11-11 04:36:00 +01:00
lickx
6115efee3c Temporary workaround for a bug with AISv3 2023-11-11 04:32:11 +01:00
lickx
1038e20155 Merge branch 'master' into sl 2023-11-11 04:30:21 +01:00
lickx
a896370a31 Bump 2023-11-04 14:44:39 +01:00
lickx
b880ffbe71 Update Kinky Hub location 2023-11-01 12:58:10 +01:00
lickx
3adc9289ad Add AO comparison for Wiki 2023-10-25 03:14:06 +02:00
lickx
40e0fa1489 Remove some OS specific stuff 2023-09-10 00:03:24 +02:00
lickx
d6b97be09f Revert "Use yengine to catch ossl exception when saving #91"
This reverts commit 5d7bf7334b.
2023-09-10 00:00:18 +02:00
lickx
72447d92d3 Merge branch 'master' into sl 2023-09-06 16:48:41 +02:00
lickx
ed6a623544 Correct date 2023-09-06 16:48:24 +02:00
lickx
2bc31e17b3 Merge branch 'master' into sl 2023-09-06 16:32:59 +02:00
lickx
f9ab61b9f2 Merge branch 'master' of https://github.com/lickx/oscollar-dev 2023-09-06 16:12:24 +02:00
lickx
b13840b2c9 Bump collar 2023-09-06 16:11:45 +02:00
lickx
815ab27965 Merge pull request #99 from lickx/95-oc_particleoc_leash-more-solid-particles-for-ribbon
Only use multi-leashpoints with Ribbon
2023-09-06 16:11:14 +02:00
lickx
57a14db97e Merge pull request #98 from lickx/97-ao-idea-redo-offsets-for-ao
Offer command in nearby chat for SitAnywhere offset
2023-09-06 16:10:36 +02:00
lickx
4cae2bf7f9 Only use multi-leashpoints with Ribbon 2023-09-06 16:08:40 +02:00
lickx
8cdae86edb Offer command in nearby chat for SitAnywhere offset 2023-09-06 15:36:56 +02:00
lickx
2b63914f22 Closes #84 OpenSim has long fixed that bug 2023-09-03 14:47:50 +02:00
lickx
51a61e8ad3 Merge pull request #96 from lickx/issue89
Distance check on re-leash (logins etc)
2023-08-27 12:46:20 +02:00
lickx
490d809d04 Distance check on re-leash (logins etc) 2023-08-21 19:59:29 +02:00
lickx
5d7bf7334b Use yengine to catch ossl exception when saving #91
Untested
2023-08-13 18:43:30 +02:00
lickx
ef3a62f69f Syntax changes 2023-03-29 07:46:12 +02:00
lickx
cf700ca621 Finish the SL port of the collar 2023-03-29 07:37:51 +02:00
lickx
d9e1842ac4 Merge branch 'master' into sl 2023-03-11 08:30:34 +01:00
lickx
19b24c9b36 Merge branch 'master' into stable 2023-03-10 18:19:41 +01:00
lickx
74c59ea855 Moar fixing 2023-03-10 18:12:15 +01:00
lickx
4a8af793ba Merge branch 'master' of https://github.com/lickx/oscollar-dev 2023-03-10 17:04:47 +01:00
lickx
b73576af3c Fix AO positioning on recent OS dotnet6 branch 2023-03-10 17:03:41 +01:00
lickx
533639dfa5 Update opensim-patches.md 2023-03-03 15:26:05 +01:00
lickx
45b31ad5c9 Merge branch 'master' into sl 2023-02-20 08:27:34 +01:00
lickx
2a8fba40c9 Bump 2023-02-13 18:55:58 +01:00
lickx
0a6e7b38a2 Implement grabbypost, closes #86 2023-02-13 14:32:20 +01:00
lickx
b4cad0ecec Merge branch 'master' into sl 2023-02-13 03:49:58 +01:00
lickx
6c6d7f7319 Merge branch 'master' into stable 2023-02-05 06:24:12 +01:00
lickx
6d4bce84a1 Bump 2023-02-05 06:22:58 +01:00
lickx
eab240e7e0 Bump this for yesterdays changes 2023-02-05 06:22:18 +01:00
lickx
94d8d0aa46 Fix relay settings, too overzealous cleanup :) 2023-02-04 14:52:10 +01:00
lickx
ce8783bee8 Typo; tplure works succesful btw. 2023-02-04 14:27:57 +01:00
lickx
0b6914221e Inform all other scripts of loaded owners etc 2023-02-04 10:02:01 +01:00
lickx
4c62b9a62a Make use of the new llReplaceSubString() 2023-02-02 04:00:33 +01:00
lickx
d1f942e315 Replace too small version of button 2023-01-27 03:32:31 +01:00
lickx
809a86918f Bump AO version 2023-01-26 18:20:52 +01:00
lickx
bb37a9f008 Also store auth in settings, but do not 'Save' those to card 2023-01-26 18:08:21 +01:00
lickx
201f378335 More optimizations, bring back multi groundsit 2023-01-26 15:18:18 +01:00
lickx
42745107f3 Re-set timer after stand change 2023-01-26 13:02:03 +01:00
lickx
b056f3cb60 Optimize/compact AO 2023-01-26 07:37:44 +01:00
lickx
e89a9c5a82 Make the AO work somehow
Had to strip a lot out
Currently for groundsits only 1 sit is supported
2023-01-26 06:22:42 +01:00
lickx
431401db4e Revert "Take into account slow inv servers issue #83"
This reverts commit 54f51abbf8.
2023-01-25 15:00:40 +01:00
lickx
54f51abbf8 Take into account slow inv servers issue #83 2023-01-25 13:17:02 +01:00
lickx
ea704485be Merge branch 'stable' of https://github.com/lickx/oscollar-dev into stable 2023-01-25 07:15:15 +01:00
lickx
a441202e84 Bump 2023-01-25 07:13:33 +01:00
lickx
a8eb0c1938 SL support, untested
Might not compile, will correct later
2023-01-25 07:05:07 +01:00
lickx
15937b5ea7 Also rlvsuite locked 2023-01-24 16:24:38 +01:00
lickx
c8b1ddace1 Fix lock + setting 2023-01-24 15:53:55 +01:00
lickx
01d9781fdf One more fix for #70 2023-01-19 17:39:02 +01:00
lickx
c53adf27c0 Bump 2023-01-18 15:40:40 +01:00
lickx
1f8b33d5a7 Bump 2023-01-18 15:38:32 +01:00
lickx
149142c0f2 More finishing up for #70 2023-01-18 14:47:29 +01:00
lickx
8337da74c0 Make that 30 meter 2023-01-18 13:45:33 +01:00
lickx
0652ed6e65 Finish #70 2023-01-18 10:05:08 +01:00
lickx
b720e271ef Implement store partners as a texture key
Closes #70
2023-01-18 09:18:48 +01:00
lickx
71deec52ca Bump while we're at it 2023-01-18 06:31:38 +01:00
lickx
1c5ab11d99 Support new meshy picture prim 2023-01-18 06:29:35 +01:00
lickx
f05f336aef Merge pull request #82 from Aaack-Aardvark/master
Add a meshy Picture button for the Owners HUD
2023-01-17 15:01:37 +00:00
Aaack
7414d2208c Add a meshy Picture button for the Owners HUD
To preserve the borders and round corners.
Border is Face 0
Picture is Face 1
The other 6 faces are there to store data, invisible for the user.
2023-01-17 11:58:50 -03:00
lickx
4645f6d4a0 Reduce calls to asset server updating descriptions
By checking if the new desc differs from the old desc.

Also spread settings out over multiple prims on the AO,
because a prim desc can only be 63 bytes in OpenSim
for some reason (it is 127 in SL).
2023-01-16 04:53:08 +01:00
lickx
0b3ad690a0 Do the Smartstrip and Addattach buttons in a better way 2023-01-13 09:03:27 +01:00
lickx
2b03b1a61f Provide hints for typical use of smartstrip wearables 2023-01-13 08:24:18 +01:00
lickx
e12737ef0d Fix safeword triggering in a rare specific case
When an object owned by the collar wearer says on the public channel 0
an empty string, it triggered the safeword; like llSay(0, "");
2023-01-13 07:08:35 +01:00
lickx
f0e868e0f5 Ready things 2023-01-11 18:35:09 +01:00
lickx
88869fbbd8 Merge pull request #79 from Aaack-Aardvark/master
New RLV button for the Owner's HUD.
2023-01-11 14:06:01 +00:00
Aaack
6dc37aa7b4 Adding the new source svg files.
At the sources folder.
2023-01-11 11:01:55 -03:00
Aaack
0a877d8dad New RLV button on the Owners HUD.
To reflect more accurately what the button does.
2023-01-11 11:00:44 -03:00
lickx
70c669e682 Make particle color <1,1,1> 2023-01-11 11:49:29 +01:00
lickx
11b2e2c5b9 Correct a check in oc_themes 2023-01-11 11:17:39 +01:00
lickx
b1b64f7648 Merge pull request #78 from Aaack-Aardvark/master
Fixing size issue in Owner's HUD
2023-01-10 16:01:55 +00:00
Aaack
8fc279b377 Fixing size issue in Owner's HUD
Yup yup also added the source svg.
2023-01-10 12:51:44 -03:00
lickx
80c74516f0 Merge branch 'master' of https://github.com/lickx/oscollar-dev 2023-01-10 16:37:37 +01:00
lickx
b25c11dc2d Owner HUD Bookmarks -> Anchor 2023-01-10 16:37:12 +01:00
lickx
673b3e7aa2 Merge pull request #77 from Aaack-Aardvark/master
Replace lock and unlock sounds
2023-01-10 14:56:22 +00:00
Aaack
e53541c508 Change the frequency of the ao sounds
My bad... >_<
2023-01-10 11:54:30 -03:00
Aaack
f7b1ddf92d Replace lock and unlock sounds
For the collar and ao also:
Removed unused sounds.
Renamed sounds with a more logical convention.
2023-01-10 11:46:18 -03:00
lickx
4ff53b23a4 Bump versions 2023-01-10 15:02:38 +01:00
lickx
acbf309e97 Real fix for force stand issue 2023-01-10 14:56:08 +01:00
lickx
21d58a3c77 Try fix an issue with force stand 2023-01-10 13:50:53 +01:00
lickx
f171eb2568 Save and restore button style
(Already implemented on Owner HUD)
2023-01-10 04:14:47 +01:00
lickx
190084db72 Merge branch 'master' of https://github.com/lickx/oscollar-dev 2023-01-08 16:44:09 +01:00
lickx
565a3c10ff Remove unused lock buttons 2023-01-08 16:43:41 +01:00
lickx
beee5a473d Merge pull request #76 from Aaack-Aardvark/master
Replacing the old Owners HUD buttons
2023-01-08 14:52:47 +00:00
Aaack
97445709db Replacing the old Owners HUD buttons
Also adding the sources (svg) for both themes and replacing the OSC button (and sources) of the AO too to make it consistent with the Owners HUD.
2023-01-08 11:44:31 -03:00
lickx
99c1fb6b48 Mostly changing Remote to Owner HUD 2023-01-07 03:44:26 +01:00
lickx
920c8004ad Move OpenAccess boolean to a vector.x 2023-01-06 15:03:39 +01:00
lickx
6ddcba1bb4 Take into account theme of FS classic and v1 viewers
So move the AO up a notch
2023-01-06 14:30:31 +01:00
lickx
49c7186be7 Merge pull request #74 from Aaack-Aardvark/master
Retouching the AO buttons
2023-01-06 04:44:58 +00:00
Aaack
cce9bc0136 Retouching the AO buttons
Both Dark and Light themes to improve visibility, which means the .svg on /sources are changed too.
Also added on /sources the base aluminum of the buttons for the sakes of backup.
2023-01-05 21:18:39 -03:00
lickx
256e0acbbe Changed the button name access to device
This was already changed in code/linkset
2023-01-05 19:47:26 +01:00
lickx
6bdb88f7e4 Merge pull request #72 from Aaack-Aardvark/master
Change the Bookmarks button to Anchor.
2023-01-05 18:46:28 +00:00
Aaack
474670a277 Change the Bookmarks button to Anchor.
Change the Bookmarks button to Anchor.
2023-01-05 14:00:44 -03:00
lickx
f9e9c9f321 Merge pull request #71 from Aaack-Aardvark/master
Adding new AO Icons
2023-01-05 16:02:32 +00:00
Aaack
7f9d197992 Adding the SVG source for the AO buttons
And move the logo SVG to the nerw SVG folder
2023-01-05 12:56:59 -03:00
Aaack
7bdf5624c7 Revamp of the AO buttons
Add the new AO buttons
2023-01-05 12:51:35 -03:00
lickx
400a9bfde5 Project cleanup 2023-01-05 14:06:03 +01:00
lickx
abf7ae9f14 Project cleanup 2023-01-05 09:17:54 +01:00
lickx
658be5e907 Project cleanup 2023-01-04 17:47:48 +01:00
lickx
347020933e Project cleanup 2023-01-03 06:07:44 +01:00
lickx
ad39627f6d Project cleanup 2023-01-02 09:07:43 +01:00
lickx
49974b0a9f Fixes ever growing bell list
This also marks the start of improving code readability throughout the
the whole project. That is more important than clever nano-optimizations
that provide no measarable performance improvements.
2022-12-30 05:04:07 +01:00
lickx
3716c61011 Initialise all undefined keys with NULL_KEY
If this is not done, OpenSim will initialise them with "" (empty string)
which causes portability issues
2022-12-29 14:31:46 +01:00
lickx
b803051f7f Few more changes to the AO 2022-12-27 21:37:31 +01:00
lickx
06b31dcaee Re-enable after script reset (if kidnap enabled)
+OpenSim compatibility
2022-12-27 21:24:35 +01:00
lickx
74ef402640 Add 'adjust height offset' feature for sitanywhere
Also takes into account heels (like rlvsys already did)

Closes #68
2022-12-27 13:24:23 +01:00
lickx
dcdd1c60be Various upgrades to Remote internals
- Generic settings persist script-state-loss
- Button order persists script-state-loss (closes #69)
- Texture UUIDs have been replaced by inventory names
- Initials button (if no partner photo) is now theme aware
2022-12-26 06:56:28 +01:00
lickx
aa02743a36 Exclude tempowner from settings print 2022-12-26 06:55:24 +01:00
lickx
440d7e2563 Add anti no-script hack
Note that this is not yet implemented in OpenSim itself
2022-12-26 06:53:31 +01:00
lickx
2ccfa5a220 Only show smartstrip and addattach for wearer
It can seriously mess up the wearers avatar or even r/p scene if a
partner changes these without knowing what they're doing
2022-12-26 06:49:46 +01:00
lickx
41be045f7e Suspend boomarks plugins until YEngine is rolled out
(we need Y for making use of ossl in bookmarks)
2022-12-20 20:38:37 +01:00
lickx
73d2fc81e1 Add device menu button 2022-12-18 14:41:15 +01:00
lickx
5bfa4460c6 Re-add cmdline support for show/hide/stealth
I guess this was in the old oc_root
2022-12-18 11:59:58 +01:00
lickx
19151a11a6 More reorganising 2022-12-17 16:21:55 +01:00
lickx
bbad46a8bc This is used for branding not the Remote 2022-12-17 14:35:27 +01:00
lickx
684b62cd84 Move to remote folder 2022-12-17 14:21:04 +01:00
lickx
344b0ae8ec Merge branch 'Aaack-Aardvark-master' 2022-12-17 14:17:30 +01:00
lickx
3dd87d317f Merge branch 'master' of https://github.com/Aaack-Aardvark/oscollar-dev into Aaack-Aardvark-master 2022-12-17 14:16:56 +01:00
Aaack
eb129c44d6 Adding the light theme for the remote letters.
And update the svg file.
2022-12-17 10:13:51 -03:00
lickx
83c11a4db7 Assign, not equals; closes #59 2022-12-17 13:55:02 +01:00
lickx
fe91befa4e Implement Make use of OSSL for teleporting
closes #61
2022-12-17 13:10:49 +01:00
lickx
ada7756a62 Update bundles for device 2022-12-17 10:24:04 +01:00
lickx
10e1536450 Do this installer check a bit different 2022-12-17 10:23:27 +01:00
lickx
97add7887f Update README.md 2022-12-17 09:22:52 +01:00
lickx
3cadd2c6db Update README.md 2022-12-17 09:22:08 +01:00
lickx
f2b731d343 Do leave the timer running
(To poof if the owner left)
2022-12-16 22:23:34 +01:00
lickx
ca8dc1224a Prevent double triggering sound 2022-12-16 21:35:45 +01:00
lickx
511340475b Reorganise things
The Remote and AO share buttons, not sure yet how to manage those
2022-12-16 18:47:16 +01:00
lickx
462144010d Correct sound name 2022-12-16 13:59:30 +01:00
lickx
6c38ba296c Correction for bass sound name 2022-12-16 13:54:13 +01:00
lickx
36c4665cb8 Lots of changes throughout 2022-12-16 13:18:01 +01:00
lickx
7a973a11a9 Math fix for #55 2022-12-15 17:57:15 +01:00
lickx
64c348033f Merge pull request #52 from lickx/48-oc_folders-exclude-certain-folders
Implement #48, maybe more to add
2022-12-15 14:46:28 +01:00
lickx
1a586ef33c This time do it right 2022-12-15 14:45:34 +01:00
lickx
23445200bf Unbreak folders 2022-12-15 14:42:14 +01:00
lickx
6f4aa32609 Only exclude outfits
There is still a use to see what ~trapstuff is attached etc

And the core folder can be hidden by <prefix>corefolder .Core
and then renaming #RLV/Core to #RLV/.Core in your inventory
2022-12-15 14:33:07 +01:00
lickx
af9c57c27e Revert "Show # for Outfits, just like # Folders"
This would break the menu

This reverts commit fcd68a8fcb.
2022-12-15 14:32:28 +01:00
lickx
fcd68a8fcb Show # for Outfits, just like # Folders
Since they both operate on the #RLV folder it makes sense
2022-12-15 14:16:36 +01:00
lickx
d0489958e0 Merge pull request #57 from Aaack-Aardvark/master
Change the name of the chain and rope textures
2022-12-15 13:58:17 +01:00
lickx
516e67b43c Capitalise 2022-12-15 13:53:36 +01:00
Aaack
4cfce5945b Rename -again- particles and edit settings.
Now the naming convention is set there's no need for specific PARTICLE section in the settings.
2022-12-15 09:50:20 -03:00
lickx
692a87ba9f Merge branch 'master' of https://github.com/lickx/oscollar-dev 2022-12-15 13:47:43 +01:00
lickx
b39d622fb9 Remove some hardcoded UUIDs
This means from now on you include leash_silk and leash_chain in the
root prim of the collar.
2022-12-15 13:46:51 +01:00
Aaack
9107857b45 Change the name of the chain and rope textures
And change the .settings file to reflect the changes
They are in /res now.
2022-12-15 09:07:59 -03:00
lickx
ec954fd152 Merge pull request #54 from Aaack-Aardvark/master
Adding the PARTICLE setting to use the new textures.
2022-12-15 12:59:49 +01:00
lickx
1af5cab681 Merge pull request #56 from lickx/55-remote-use-new-alphabet-texture-if-no-photo-found
Implement alphabet texture closes #55
2022-12-15 12:53:05 +01:00
lickx
6cf02f43e5 Implement alphabet texture closes #55 2022-12-15 12:51:26 +01:00
Aaack
d9c2610607 Adding the PARTICLE setting to use the new textures.
Adding the PARTICLE setting to use the new textures.
2022-12-14 23:03:00 -03:00
lickx
6aeeb8f267 Merge pull request #51 from lickx/47-oc_settings-only-warn-wearer-dont-throw-error-if-no-card-exists
Don't throw warning when card removed from inv #47
2022-12-14 18:01:40 +01:00
lickx
b342b73167 Don't throw warning when card removed from inv #47 2022-12-14 17:59:13 +01:00
lickx
1889c2ca2b Implement #48, maybe more to add 2022-12-14 17:48:08 +01:00
lickx
2d66d756e2 Merge pull request #50 from Aaack-Aardvark/master
Adding the source file for the remote letters.
2022-12-14 17:34:19 +01:00
Aaack
e8bead0bf8 Adding the source file for the remote letters.
To make it easier to a collar creator to match themes.
2022-12-14 11:31:27 -03:00
lickx
747a3cb7b3 Merge pull request #49 from Aaack-Aardvark/master
Adding the texture for the remote initials-
2022-12-14 15:00:14 +01:00
Aaack
a49d296d7e Adding the texture for the remote initials-
A simple 1024 with all 25 letters of the alphabet and 0-9 to compensate for the lazyness of the users.
2022-12-14 10:57:50 -03:00
lickx
5985d62a3f Merge branch 'master' of https://github.com/lickx/oscollar-dev 2022-12-14 14:39:30 +01:00
lickx
f985f761ab Do away with the OsGrid Remote 2022-12-14 14:38:52 +01:00
lickx
7a98184863 Merge pull request #46 from Aaack-Aardvark/master
Add the rm option to the main help doc.
2022-12-14 13:52:25 +01:00
Aaack
097c84610b Change the default layout of the remote from 3 to 2 columns.
Change the default layout of the remote from 3 to 2 columns.
2022-12-14 09:49:48 -03:00
lickx
0b4181e947 Bump some versions 2022-12-14 11:55:45 +01:00
Aaack
f12b9cdac3 Add the rm option to the main help doc.
Add the rm option to the main help doc.
2022-12-14 07:30:49 -03:00
lickx
17511e0931 Merge pull request #44 from lickx/42-change-oc_meshlabel
Implement fonts from inventory for #42
2022-12-14 11:00:21 +01:00
lickx
cd23d5657f Implement fonts from inventory for #42
Fonts added to inventory must be named 'font_What ever you want'

If no fonts found in inventory, falls back to the asset uuids
for the old Solid and Outline fonts. Those assets may or may not
be present on other grids than OsGrid.
2022-12-14 10:46:04 +01:00
lickx
5d3f91c372 Always (temp) lock during outfit change, closes #43 2022-12-14 10:14:44 +01:00
lickx
1ad1f4adce Merge pull request #41 from Aaack-Aardvark/master
moving the blend file to it's proper place
2022-12-13 17:06:50 +01:00
Aaack
4dc0537c75 moving the blend file to it's proper place
moving the blend file to it's proper place
2022-12-13 13:03:49 -03:00
lickx
8f4a52034c Merge pull request #40 from Aaack-Aardvark/master
Remove old collar textures, added the new defaults
2022-12-13 16:59:56 +01:00
Aaack
5e6ae834f4 Adding animations and particles
Also removing old animations
2022-12-13 12:56:00 -03:00
Aaack
9150837a6e Added a mod .blend file
Added a mod .blend file (removed the EXR for global Illumination whicjh isn't necessary unless you want to bake new textures)
2022-12-13 12:40:53 -03:00
Aaack
09532152da Add the new resources
Add the new resources
2022-12-13 12:35:56 -03:00
Aaack
f2364838da Remove old collar textures, added the new defaults
Added the new animations, textures and logos with their respective source files.
2022-12-13 12:23:54 -03:00
lickx
b4bd054c0e Addition for #37
OpenSim wants backslashes in regexp double

This also makes \d work :)
2022-12-13 04:19:45 +01:00
lickx
23406c690e Make numbered updaters possible again 2022-12-13 04:10:34 +01:00
lickx
e9ff3b42e4 Merge pull request #38 from lickx/37-implement-a-change-of-version-upon-update
Change name in object if applicable
2022-12-12 12:44:41 +01:00
lickx
5e5ddde1a7 Change name in object if applicable
Also update installer particles
2022-12-12 12:43:40 +01:00
lickx
950a15f9e6 Don't hardcode number of label characters to 6 2022-12-11 18:09:29 +01:00
lickx
80d5fdc1bc Don't do pie if prim is root prim
(Like when building)
2022-12-11 17:59:04 +01:00
lickx
d4db287b14 Send fake ok ack instead of nothing
Only in the case where we always allow attach.
That should keep RLV traps/objects happy
2022-12-10 13:29:15 +01:00
lickx
fdbdcfadce Don't show the new help and license in the menu
Since they aren't animation cards
2022-12-10 05:35:53 +01:00
lickx
0e8b4c334d Merge branch 'master' of https://github.com/lickx/oscollar-dev 2022-12-10 04:46:52 +01:00
lickx
193b37060f Update version also for OsGrid variant of Remote 2022-12-10 04:46:26 +01:00
lickx
03a9799b4a Preload sounds 2022-12-10 04:45:18 +01:00
lickx
26b69a2b48 Merge pull request #36 from Aaack-Aardvark/master
Slight change in .settings,
2022-12-08 16:56:16 +01:00
Aaack
e6a222dfd8 Slight change in .settings,
Now the example settings are commented and includes the name and type of the device.
2022-12-08 12:53:18 -03:00
lickx
fc4f4c0264 Update docs 2022-12-08 08:18:17 +01:00
lickx
950104bb26 Show the sim's script engine in about/help 2022-12-08 08:12:27 +01:00
lickx
fcac7b7e4c Pieslices: use smallest size possible when worn 2022-12-08 07:40:30 +01:00
lickx
c5aecc3690 Remove license button
It's entirely not relevant to roleplay
2022-12-08 07:20:56 +01:00
lickx
522c880a78 Move doc to root folder, update README 2022-12-08 07:18:18 +01:00
lickx
bdb7c35bbc Change checkbox button 'hide' to 'visible' 2022-12-08 07:02:14 +01:00
lickx
a011002b1e Branding, strings etc 2022-12-08 06:52:53 +01:00
lickx
6033df941a Don't do anything when we're in a installer 2022-12-08 06:36:04 +01:00
lickx
bf34ffaacd Xengine: redeclartion in local scope 2022-12-07 16:17:18 +01:00
lickx
43f37ccf69 Merge pull request #34 from Aaack-Aardvark/master
Changing version from 1.1 to 2022.12.04
2022-12-07 15:14:59 +01:00
Aaack
ed3fd6913e Change version from 1.2 to 2022.12.04
Change version from 1.2 to 2022.12.04
2022-12-07 10:15:24 -03:00
Aaack
d7448e0bcb Changing version from 1.1 to 2022.12.04
Changing version from 1.1 to 2022.12.04
2022-12-07 10:09:12 -03:00
lickx
e11d83fb6d Merge pull request #33 from Aaack-Aardvark/master
Update of the .pet notecard.
2022-12-07 14:07:39 +01:00
Aaack
cd8db3cf13 Change version from 1.2 to 2022.12.04
Change version from 1.2 to 2022.12.04
2022-12-07 10:06:07 -03:00
Aaack
8f27fce0e8 Update of the .pet notecard.
Update to the current animations set.
2022-12-07 09:48:30 -03:00
lickx
367f2ce02e Merge pull request #32 from Aaack-Aardvark/master
Add First Steps doc
2022-12-07 13:18:12 +01:00
Aaack
4e6e47ebc8 Move readme_smartstrip to /doc
Move readme_smartstrip to /doc
2022-12-07 09:14:41 -03:00
Aaack
a0a72c45b2 Move OsCollar Help.txt to /doc
Move OsCollar Help.txt to /doc
2022-12-07 09:10:24 -03:00
Aaack
f257934f4f Add First Steps doc
And the "doc" folder.
2022-12-07 09:07:29 -03:00
lickx
56d791a337 Merge pull request #31 from Aaack-Aardvark/master
Add the baloon park command in the help notecard.
2022-12-07 12:41:53 +01:00
Aaack
07c4d38200 Add the baloon park command in the help notecard.
In the section "Commands without menu buttons".
2022-12-07 08:38:33 -03:00
lickx
3e0ae38a2d Merge pull request #30 from lickx/14-oc_sys-implement-alphafloat-desc-setting
Implement alpha~float setting for prim desc #14
2022-12-07 05:36:41 +01:00
lickx
916e86c754 Implement alpha~float setting for prim desc #14 2022-12-07 05:35:19 +01:00
lickx
54bc6cb39d Rename some stuff 2022-12-06 15:34:28 +01:00
lickx
9490207ad0 Merge pull request #29 from Aaack-Aardvark/master
Capitalize the animation list.
2022-12-06 13:26:02 +01:00
Aaack
92a6ed7b45 Capitalize the animation list.
Again because now the collar ignores capitalization.
2022-12-06 09:22:16 -03:00
lickx
4ecab82af9 Merge pull request #28 from lickx/24-oc_anim-prefixposename-doesnt-work
Case insensitive match <prefix>pOsE for #24
2022-12-06 12:25:36 +01:00
lickx
b4c146aaec Case insensitive match <prefix>pOsE for #24 2022-12-06 11:04:37 +01:00
lickx
9b24f1fb2b Be flexible about leash holder name
Now any object with 'holder' in it, case doesn't matter, will be given
2022-12-06 08:07:38 +01:00
lickx
c5bf556e19 Merge pull request #27 from Aaack-Aardvark/master
Add explanations to the leash section
2022-12-04 17:13:20 +01:00
Aaack
bf1368d472 Add explanations to the leash section
Also add the option give holder
2022-12-04 13:11:30 -03:00
lickx
132f08173d Merge pull request #26 from lickx/18-oc_leash-add-give-holder-button
Offer 'Give Holder' button in leash menu
2022-12-04 17:03:56 +01:00
lickx
8c803d979e Offer 'Give Holder' button in leash menu 2022-12-04 17:02:50 +01:00
lickx
627ff3df53 Merge pull request #25 from Aaack-Aardvark/master
Change the animations names to lowercase
2022-12-04 16:18:32 +01:00
Aaack
7866729818 Change the animations names to lowercase
Change the animations names to lowercase
2022-12-04 11:10:31 -03:00
lickx
f6d44721ae Merge pull request #20 from Aaack-Aardvark/master
Change version number
2022-12-04 14:17:00 +01:00
Aaack
868450df40 Redo version number
To format YYYY.MM.DD
2022-12-04 10:15:06 -03:00
Aaack
3853d4e04d Update of the help file
List the new animations, add an extra explanation at the safeword part.
2022-12-04 10:07:08 -03:00
lickx
746855e758 Merge two crawl variables 2022-12-04 13:24:09 +01:00
Aaack
fa72e9f890 Merge branch 'master' of https://github.com/lickx/oscollar-dev 2022-12-04 08:22:24 -03:00
lickx
776a3db355 Use ~ seperators for glows, closes #21 2022-12-04 06:12:05 +01:00
lickx
21b6701ef6 Merge pull request #23 from lickx/19-reuse-the-x-offset-of-the-pet-note-card-number-to-affect-z-height
Adjust ~-prefixed anim heights through pose menu
2022-12-04 05:55:20 +01:00
lickx
7120061c61 Make heel offset tweakable
Only can be set on the cmdline, not the menu. For example:
<prefix>heeloffset -0.08
Or reset it to the default -0.1:
<prefix>heeloffset reset
2022-12-04 05:42:48 +01:00
lickx
e2753f5b6c Do show ~anims in the pose menu
On LM_SETTING_SAVE, convert ~ prefixes into ++
On LM_SETTING_REPONSE, convert ++ prefixes into ~
(Because ~ is a seperator in the settings)
2022-12-03 17:51:06 +01:00
lickx
4b862defc1 New try for oc_pet z offset 2022-12-03 15:15:55 +01:00
lickx
36bcd8d5ed Always reset height (RLV), regardless of shoes worn
And put offsetX back to 0.55
2022-12-03 13:45:51 +01:00
lickx
49a382ddbe Adjust offset x 2022-12-03 13:15:01 +01:00
lickx
e67d78b633 Initial work for #19 2022-12-03 13:11:02 +01:00
Aaack
e9f717d082 Change version number
Change the version number from 7.0.1 dev to 20221201
2022-12-03 08:46:39 -03:00
lickx
0dcf2fe6aa Also check for RLV 2022-12-03 11:46:06 +01:00
lickx
510fe0f23f Merge pull request #17 from lickx/issue12
Attempt to fix heel offset for oc_pet #12
2022-12-03 11:39:54 +01:00
lickx
4af223367d Deregister worn/unworn from RLV when detached 2022-12-03 11:34:21 +01:00
lickx
32dcaed94b Remove debug strings 2022-12-03 11:33:29 +01:00
lickx
96e1253b3f Reset adjustment to 0 when stopping anim 2022-12-03 06:56:23 +01:00
lickx
f53263737f Attempt to fix heel offset for oc_pet #12
Left some debug strings in to test first
2022-12-03 04:29:42 +01:00
lickx
ff6f4d583f Merge pull request #16 from Aaack-Aardvark/master
Change the sign again
2022-12-02 17:25:48 +01:00
Aaack
052fc2d3e6 Change the sign again
Add the offset instead of substract it to reflect the previous height bug.
2022-12-02 13:22:51 -03:00
lickx
f25b226795 Corrected mistake and more tweaks for #12 2022-12-02 17:02:16 +01:00
lickx
bfba3a3fe1 Correction needs to be - for #12 2022-12-02 15:21:20 +01:00
lickx
adc315400e Merge pull request #15 from Aaack-Aardvark/master
Add an average shoe offset modifier
2022-12-02 15:19:41 +01:00
lickx
b33bf9e334 Offset poses for #12 2022-12-02 15:18:58 +01:00
Aaack
a8b0a5dc85 Change the sign of the offset compensator
Because I dum.. When you wear shoes the compensator should move you down, not up.
2022-12-02 11:14:03 -03:00
Aaack
b1af6fa6eb Change the offset to 0.1
After testing we concluded that 0.1 is a better z offset but it's still guess work.
2022-12-02 11:09:30 -03:00
Aaack
12bf2aaa17 Add an average shoe offset modifier
Add 0.08 metres if the avatar is wearing shoes
2022-12-02 10:56:43 -03:00
lickx
e65546481a Implement pie-slice layout, for #13
Testing needed
2022-12-02 14:20:24 +01:00
lickx
923c03c157 oc_pet and oc_anim are now updated with shoe state
For #12
2022-12-02 11:57:54 +01:00
lickx
f20a2442fc Send updates to animator when shoes worn or unworn
These will be link messages with iNums RLV_SHOES (6108)
and RLV_NOSHOES (6109)

For #12
2022-12-02 11:48:23 +01:00
lickx
ce656e1962 Merge pull request #11 from Aaack-Aardvark/master
Add RLV height mod
2022-12-01 15:44:36 +01:00
lickx
1267782ca5 No, always show menu pet, also for partner 2022-12-01 15:43:09 +01:00
Aaack
2784871efd RLV verification instead of RLVA
RLV verification instead of RLVa
2022-12-01 11:42:23 -03:00
lickx
3603a68e44 RLV also supports @adjustheight 2022-12-01 15:38:30 +01:00
Aaack
b67bb95874 Add RLV height mod
Change the height of the pet animation using the notecard .pet values and using RLV to properly adjust the pets to the user.
Changing the Z offset won't work.
2022-12-01 10:26:27 -03:00
lickx
df2de0c2bc Merge branch 'master' of https://github.com/lickx/oscollar-dev 2022-12-01 13:42:15 +01:00
lickx
a554520391 Change behaviour of Pet me! button depending on clicker
When wearer: open PetAnimMenu
When someone else: start petting
2022-12-01 13:41:27 +01:00
lickx
fa6dc693d9 Merge pull request #10 from Aaack-Aardvark/master
Add example .themes file
2022-12-01 12:11:11 +01:00
Aaack
a235c70747 Add example .themes file
Add example .themes file
2022-12-01 07:55:02 -03:00
lickx
ce6511bd5b Basically oc_couples turned into oc_pet
Plus side is we can set custom offsets in a notecard
2022-12-01 11:15:07 +01:00
lickx
edb72fc293 Remove redundant AUTH line from settings 2022-12-01 08:32:56 +01:00
lickx
1ded3c3d33 Also get smartstrip token from relay 2022-11-29 10:21:05 +01:00
lickx
3d67876250 Allow the case where the rootprim holds everything
That case doesn't seem to work yet btw and it wouldn't be my personal
choice. But in that case there still should be linked a empty 'authlist'
prim similar to 'blocklist'. Without that it's stored on the prim (even
ROOT_PRIM! caution!) where oc_auth is in like usual.
2022-11-28 15:41:42 +01:00
lickx
0746ef6446 OS compat 2022-11-27 09:20:28 +01:00
lickx
a3f7f7070a Refactor caches+locklists 2022-11-27 08:16:22 +01:00
lickx
53c5fbe3cf Still having my coffee 2022-11-26 07:04:23 +01:00
lickx
4b5a24a039 Some small fixes and better defaults 2022-11-26 07:00:11 +01:00
lickx
16455f29b6 And another for #8 2022-11-25 18:38:45 +01:00
lickx
e6599b72e5 Prefix setting with rlvsuite, for #8 2022-11-25 18:37:08 +01:00
lickx
2b6a87a8b2 Fix save trusted, fix blacklist, remenu 2022-11-25 17:39:11 +01:00
lickx
1f191c4afc Allow rootprim to be themed 2022-11-25 15:58:18 +01:00
lickx
48e82e2254 To avoid the installer being messed up 2022-11-23 06:35:54 +01:00
lickx
aa4e682fd9 Correct error caught by XEngine test 2022-11-22 16:21:17 +01:00
lickx
26a72c278f Version bumps 2022-11-22 08:58:50 +01:00
lickx
ce93847448 Fix limit checks 2022-11-22 08:57:42 +01:00
lickx
66ecbd04f3 Implement custom corefolder, closes #8 2022-11-21 03:49:27 +01:00
lickx
26791c9915 Implement blocklist #6
Testing needed
2022-11-21 03:45:45 +01:00
lickx
2b91988fce Improve help card 2022-11-18 09:22:33 +01:00
lickx
9baea86b5b CHANGED_OWNER workarounds for XEngine 2022-11-18 09:22:16 +01:00
lickx
de46b2a234 Glowy prim support for #7. Closes #7 2022-11-16 12:22:14 +01:00
lickx
501cbdf5ea Fix 'mode' and store stuff in 'mode' 2022-11-16 11:03:35 +01:00
lickx
708c6965da Add always allow attach override for relay
Especially useful for the guys

Also, actually save/restore the smartstrip setting
2022-11-16 10:45:12 +01:00
lickx
458c1a0ce9 Partial reverse, see #5 2022-11-13 14:36:44 +01:00
lickx
309c5d9258 Optimizations for #7 2022-11-13 12:07:48 +01:00
lickx
541ded2221 Keep LEDs solid. For #2 2022-11-13 12:05:18 +01:00
lickx
c1b9d671f7 Add version file for lookup from oc_sys 2022-11-11 15:14:04 +01:00
lickx
3ce971740c Use TEXTURE_TRANSPARENT as 'none' or null key
You can't apply NULL_KEY as a texture, and TEXTURE_TRANSPARENT would
make the side needlessly solid looking (but from now on you can hide the
authorizer anyway by putting 'hidden' in the desc)
2022-11-11 13:55:51 +01:00
lickx
76e7b7fec7 Cleanups, compatibility 2022-11-11 12:55:43 +01:00
lickx
c0a716b9d8 Many changes plus #7 2022-11-11 12:53:12 +01:00
lickx
e49f8d975c Store auth stuff on prim, closes #2 2022-11-11 12:47:24 +01:00
lickx
10f784c2c2 One more removal for #3 2022-11-10 09:04:48 +01:00
lickx
8d63d9bacb Add basic show/hide and an untested version checker 2022-11-04 20:33:43 +01:00
lickx
98e4ddd9bc Rephrase 2022-11-04 20:32:24 +01:00
lickx
8bb96399ab Send oc_pet to the animator from the updater 2022-11-04 16:29:51 +01:00
lickx
f85500e7b5 Fixes #5 2022-11-04 05:30:18 +01:00
lickx
e4e360a46d Remove last bits 2022-11-03 12:51:46 +01:00
lickx
b787f7bb51 Merge pull request #4 from lickx/noroot
Noroot
2022-11-03 12:50:09 +01:00
lickx
ae270b85e8 Bring back oc_sys, remove all Apache code 2022-11-03 12:46:23 +01:00
lickx
ec664102db Revert "remove script"
This reverts commit 0e7a2c98bd.
2022-11-02 18:05:42 +01:00
lickx
325dbfeb27 Suggest to unlock device when printing settings 2022-10-30 03:44:08 +01:00
lickx
166fcdcf6e Restore llSleep's now yEngine is the default 2022-10-28 15:00:12 +02:00
lickx
80a72ce799 Bring back smartstrip in the newstyle relay 2022-10-23 03:36:31 +02:00
lickx
ef81821bd9 Avoid loop 2022-08-04 17:04:49 +02:00
lickx
304cf1b986 More branding 2022-07-19 19:37:36 +02:00
lickx
4fee0bc55d Remove old version of aolink 2022-07-19 19:29:29 +02:00
lickx
480a5baaab OS compatibility, branding 2022-07-19 19:29:09 +02:00
lickx
3a09335766 Branding 2022-07-19 16:36:48 +02:00
lickx
2e094bb97a Remove obsolete resizer 2022-07-19 16:24:49 +02:00
lickx
33fc9b378d Use builtin resizer (OpenSim 0.9+) 2022-07-19 11:07:52 +02:00
lickx
2930fded74 Rip out barely used and documented 'quote' 2022-07-19 10:59:16 +02:00
lickx
02fbcbc76a Store settings after card loading 2022-07-14 20:11:41 +02:00
lickx
3b0e6abed5 Remove redundant legalese, simplify readme 2022-07-07 19:59:15 +02:00
lickx
d96760a807 We do height offsetting with RLV @adjustheight now 2022-07-07 19:34:14 +02:00
lickx
cb21799228 Remove build revs
It was a good idea but in practice hard to keep bumping those consistent
with new commits
2022-07-07 19:32:17 +02:00
lickx
1b082f0b2b OpenSim compatibility 2022-07-07 14:12:30 +02:00
lickx
2dee584616 OpenSim compatibility 2022-07-07 14:09:57 +02:00
lickx
9d3a64c452 Merge branch 'master' into 7.0.3 2022-07-06 08:20:08 +02:00
lickx
dea7467da3 Update readme.md 2022-07-06 06:18:50 +00:00
lickx
da949fd8f2 Update readme.md 2022-07-06 06:18:13 +00:00
lickx
0a86aacfd4 Load same-named AO card when loading an outfit 2022-07-05 15:22:06 +02:00
lickx
75c7eef53b Merge branch 'master' into 7.0.3 2022-07-05 15:10:10 +02:00
lickx
18d87bdec4 Update readme.md 2022-07-05 13:09:41 +00:00
lickx
f8b28c5a44 Merge branch 'master' into 7.0.3 2022-07-05 15:07:46 +02:00
lickx
fc96dcf562 Remove Opensim patches 2022-07-05 15:06:37 +02:00
lickx
0a35976667 Update readme.md 2022-07-05 13:03:51 +00:00
lickx
ef57577f98 Update readme.md 2022-07-05 13:03:22 +00:00
lickx
f1124d47ed Add rudimentary state-loss protection
But sim/grid owners really need to integrate my patch attached to mantis
8366.

This commit requires an additional prim to be linked, with name
"settings", invisible and the same size as the other buttons. It will
move to the top.
2022-07-05 14:41:59 +02:00
lickx
a3a44d0500 Rename and update OpenSim patches 2022-07-05 14:05:07 +02:00
lickx
2a00b7cc55 Already fixed in OpenSim since about 0.9.2 2022-07-05 14:01:25 +02:00
lickx
b52233e29f Merge branch 'ao-load' into 7.0.3 2022-07-05 13:41:37 +02:00
lickx
28c6548b72 Further refine card fallback loading 2022-07-05 13:18:24 +02:00
lickx
eb92937c15 When loading, fall back to Default if card doesn't exist
Only when Default isn't already loaded
Also make Default the default, instead of Girl
2022-07-03 16:23:33 +02:00
lickx
27a4748779 Remove legacy AO, we have server side AO now 2022-06-29 21:11:04 +02:00
lickx
9aa6d516c3 Bump version+build 2022-06-17 10:03:52 +02:00
lickx
865bb65944 Fixes #6 titler app text offset 2022-06-17 10:02:03 +02:00
lickx
ff8745aa0e Bump build 2022-06-14 06:36:24 +02:00
lickx
86e4fbffb5 Fix initialization 2022-06-14 06:20:11 +02:00
Mike Dickson
dd27717321 Merge pull request #2 from lickx/post-7.0.1
Post 7.0.1
2021-06-09 08:32:47 -04:00
lickx
fc37bb97d9 Remove references to old upstream project 2021-06-03 18:53:46 +02:00
lickx
28ef968655 Fix a RLV initialization bug for new wearers 2021-06-03 18:48:35 +02:00
lickx
9aebb8d7da Only switch stands when standing 2018-10-25 17:22:20 +02:00
lickx
09209b75fb Legacy OpenSim compatibility 2018-10-04 10:03:38 +02:00
lickx
6be84e0068 We are now fully compatible with OS 0.8 (except the modern AO) 2018-10-03 10:33:31 +02:00
lickx
fb48616f7b Synchronize versions for 7.0.1 2018-10-03 10:27:11 +02:00
lickx
a51f94cfd2 Correct color variable, only cycle stands when standing 2018-10-01 21:22:55 +02:00
lickx
16f0b639f0 Don't ask for PERMISSION_OVERRIDE_ANIMATIONS
Turns out we asked for those perms but never used any of the specific
functions utilizing the perm (like llSetAnimationOverride() in the
collars in SL).

So this easy fix now makes oc_anim again OpenSim 0.8 compatible

Issue #82
2018-10-01 09:01:45 +02:00
lickx
f0f4bb04cb Add and improve legacy Zhao AO from OsCollar6
TODO: cleanup and merge oc_ao_* into one script

Issue #82
2018-10-01 08:50:13 +02:00
lickx
80d55581bd Use resizer capable for OpenSim 0.8
With the added bonus that this resizer can scale down smaller than the Linden
limits (http://wiki.secondlife.com/wiki/Limits#Building)

Issue #82
2018-10-01 08:24:14 +02:00
lickx
dcdaadcc0d Use float 0.0 instead of float 0 to stop timer
Per LSL spec

"Any positive non-zero value to enable, zero (0.0) to disable."
2018-10-01 08:06:13 +02:00
lickx
1a3ebceb9d Propagate CHANGED_REGION and CHANGED_TELEPORT events from root prim
The LSL spec says for both events:

"This event only occurs in the root prim of a linkset.
This event does not occur in child prims of objects"
2018-10-01 07:59:51 +02:00
lickx
10cceb2511 Request settings on CHANGED_REGION fired in root prim 2018-10-01 06:58:07 +02:00
lickx
3aac4d9190 CHANGED_REGION only fires in root prim; Make settings more robust
Issue #76
2018-09-30 23:19:53 +02:00
lickx
df95b2927b Merge branch 'master' of https://github.com/lickx/oscollar 2018-09-30 22:18:00 +02:00
lickx
cd87e9a4f5 json is overrated, make oc_camera work in OpenSim 0.8 2018-09-30 22:15:36 +02:00
lickx
c8e496de97 Check against NULL_KEY 2018-09-30 20:04:20 +02:00
lickx
4f4b3b7028 Merge branch 'oscollar7' of https://github.com/lickx/oscollar 2018-09-25 19:38:38 +02:00
lickx
b49ff2e052 Small fix, use iAuth instead of iNum 2018-09-22 21:05:05 +02:00
lickx
e273b4c859 Remove .aoloader, no such AO scripts in OpenSim 2018-09-22 15:24:20 +02:00
lickx
ab732b49f4 Don't nag for permissions if not attached 2018-09-22 13:16:43 +02:00
lickx
edd9433395 Use hidden '.basics' folder when RLVa is detected
When Marine's RLV is detected use non-hidden 'basics' folder because the
standard RLV implementation doesn't work with hidden folders this way.

+Cleanup link clutter in dialogs for v1 viewer fans
2018-09-22 12:48:53 +02:00
lickx
d53d33245c Work around a very pesky OpenSim bug
That I have yet to formulate a good Mantis for.
2018-09-19 19:35:24 +02:00
lickx
5d9e1c6e89 Don't forget this one 2018-09-19 08:12:22 +02:00
lickx
deb373ae6b Synchronize versions for upcoming release
Yeah we decided on a new major version
2018-09-19 08:10:36 +02:00
lickx
79e4055d12 Cleanup installer, add channel for AO 2018-09-19 07:41:23 +02:00
lickx
0238f529de Don't redeclare variables within scope 2018-09-18 21:38:02 +02:00
lickx
a0ac20b504 Bump Remote version 2018-09-18 21:37:10 +02:00
lickx
204b0c6f8d Only upgrade oc_pet, not oc_couples 2018-09-18 21:35:33 +02:00
lickx
d320fe4476 Prepare installer for 6.9.0 2018-09-18 13:39:52 +02:00
lickx
7782bd9acd Check if worn before req anim perms (and rlv lock) 2018-09-18 13:38:05 +02:00
lickx
80071ed586 Make AO buttons much more responsive 2018-09-18 13:30:41 +02:00
lickx
4ae7b16e41 Update README.md 2018-09-16 16:31:32 +02:00
lickx
358f150827 Update README.md 2018-09-16 16:29:39 +02:00
lickx
a46e8b588f Filename + info in comment header 2018-09-16 16:08:38 +02:00
lickx
24f6ca89c0 Create seperate OsGrid version of script
This uses the web helper from OsGrid to get a profile pic UUID
For more info: https://forums.osgrid.org/viewtopic.php?f=5&t=5920
2018-09-16 16:03:22 +02:00
lickx
844d9f0bbc Revert "Use OsGrid profile picture helper instead of texture hack"
This reverts commit d7e9ca23b8.
2018-09-16 16:02:54 +02:00
lickx
edd835a04b Revert "Use generic picture for hypergridders"
This reverts commit 03bbe7e3e8.
2018-09-16 16:02:33 +02:00
lickx
3a98802c0a Update README.md 2018-09-16 05:55:27 +02:00
lickx
6fd085d046 Remove osgrid tag as it's for all OpenSim 0.9 regions/grids 2018-09-16 05:38:11 +02:00
lickx
fbda8ff08c Use the right channel for receiving updates 2018-09-16 05:35:26 +02:00
lickx
080ebb71e8 Fixup root, delete old root 2018-09-15 15:55:37 +02:00
lickx
70bb37921f Remove legacy Zhao AO 2018-09-15 15:34:51 +02:00
lickx
ed096a3dab Merge pull request #78 from lickx/peanutrollup
Peanutrollup
2018-09-15 15:31:30 +02:00
Wendy
0b5aa80030 make things sound more creepy
For exactly those users who love it just like that ♥
2018-09-15 15:16:34 +02:00
Wendy
91c75cd5f8 don't babble and pet me right away! 2018-09-15 15:15:23 +02:00
Wendy
8e3ea212f9 default to Collar as devicename
Just in case if we deal with third party HUD scripts that rely on object
description. The device name can still be preset in settings, or changed
via command later.
2018-09-15 15:10:34 +02:00
Wendy
b61f2286db update build number and copyright 2018-09-15 15:05:12 +02:00
WendyStarfall
88b98b17e1 increase restricted sittp range to a 20 feet radius
Some users had troubles sitting on furniture while they are forbidden to
stay. 6 meters are a more reasonable distance limit than 1.5 meters
(default sittp).
2018-09-15 15:01:21 +02:00
lickx
484f8c14f6 Fix animation error 2018-09-15 14:57:18 +02:00
lickx
32f8dfe8ee Add in comment that this is oc_legacy_relay
Note that if this relay is used instead of oc_relay it should still be named
oc_relay. We might have to make seperate installers for the two relays
so people can switch. I prefer this one as it seems to work better for
badly coded RLV objects (doesn't discard permission).
2018-09-15 12:24:39 +02:00
WendyStarfall
af31566f93 simply outfits feature
- change default directories
- add better guidance for the user
- don't use complicated subdirectories
2018-09-15 12:17:55 +02:00
WendyStarfall
0f99327011 change vanilla behavior
- turn hard/vanilla on by default
- fix broken tempowner list entry
- shorten notifies during session start
2018-09-15 09:52:13 +02:00
WendyStarfall
d5640fd5a1 move looks to extensions 2018-09-15 08:31:22 +02:00
lickx
131dab2e94 Revert "Possible fix for issue #76"
This reverts commit dd3f40b717.
2018-09-13 17:40:50 +02:00
lickx
161aca3b5d Put back the Save button 2018-09-11 19:43:09 +02:00
lickx
f1b69af284 Don't sleep too much 2018-09-11 19:10:27 +02:00
lickx
22c6d79106 Don't kill XEngine when running away 2018-09-11 18:59:17 +02:00
lickx
dd3f40b717 Possible fix for issue #76 2018-09-11 18:39:39 +02:00
WendyStarfall
0afa0949c5 merge peanut branch
This is the full merge of the version "Peanut" branch. When using a diff
tool it should be pretty clear what happens in detail in each script,
but I will try to summarize this large change-set real quick for your
convenience:

Copyright notices are conclusive with date ranges, authors and source
links, even if you have to scroll a bit now. These are how they have to
be when taking into account that users are passing LSL scripts around as
single files, and usually without any license included.

I use build numbers as individual versions for each script, and have
been doing so since a long time on my personal branches. This allows us
to distinguish which is which once the scripts are out in the wild, and
now also without having to open the collar and looking. A command
"<prefix> list builds" can be used to print all build numbers to the
chat history.

The so-called "schmoDialog" has always been an issue, I've tried with
the best of my ability to optimize this program, and believe that I
finally could with the help of @GarvinTwine. A lot of its annoying
antics should be gone now.

Optimization happened all over and the scripts are less encumbered by
ancient commentary that was misleading and no longer current. The
scripts are not the place to document the code, for that purpose we use
git version control since 2011. There is much improvement to overall
readability now.

There are also two new scripts, one is a variation of themes that puts
looks first. This is for users of legacy artwork because it resembles
the old "Appearance" bundles more closely right out of the box. The
other new script is a reduction of the couples program to only the
non-looped "pet" sequence.

The root script does no longer have update logic in it, but instead we
have the optional update script that I wrote last year. For most
builders this should make it a lot more simple to decided whether they
want to allow future updates for their collars or not. I still think it
would be clearer if the root script was separate from the stealth and
lock logic, but user feedback wanted it to be all combined.

Finally, I have replaced the AntiSlide logic with a walk overrider that
plays a puppy crawl when the collar wearer moves and is also in a collar
pose at the same time.

NOTE: The products that are distributed by virtualdisgrace.com on Second
Life® have refreshed pose sets by Ash Ellsberg, as well as a new
particle chain that I based on original artwork by @GreyMars.
2018-09-11 18:34:34 +02:00
lickx
40539b10d3 Update README.md 2018-09-10 06:23:15 +02:00
lickx
5a2bf3dcae Use inbuilt function llScaleByFactor 2018-09-08 12:26:03 +02:00
lickx
bc16aac51c Optimize notecard reading 2018-09-08 12:11:25 +02:00
lickx
11e77a658d Use server-side animations 2018-09-08 12:10:50 +02:00
lickx
03bbe7e3e8 Use generic picture for hypergridders 2018-09-08 11:20:07 +02:00
lickx
447be2c0fa Update README.md 2018-09-08 11:12:54 +02:00
lickx
6e6161362b Do away with notecard saving
Most OpenSim regions don't have osMakeNotecard enabled for everyone (the default
is enable it only for the estate owner and estate managers).
2018-09-08 11:12:37 +02:00
lickx
a52bfa1810 Update README.md 2018-09-08 11:08:52 +02:00
lickx
d7e9ca23b8 Use OsGrid profile picture helper instead of texture hack 2018-09-08 11:08:06 +02:00
lickx
be3e775b01 Do away with notecard saving
Most OpenSim regions don't have osMakeNotecard enabled for everyone (the default
is enable it only for the estate owner and estate managers).
2018-09-08 10:05:48 +02:00
lickx
a32780532d Cleanup, improve information 2018-09-08 08:43:34 +02:00
lickx
4f1ccabaff Reorganize the tree 2018-09-08 08:43:07 +02:00
lickx
4078220ebc Make OpenLock vs ClosedLock correctly (un)hide
Hotfix
2018-07-24 14:31:55 +02:00
lickx
84fd6f7395 Merge pull request #75 from lickx/wen
Wen
2018-07-14 20:04:54 +02:00
lickx
0e72c50d33 Version bump to 6.8.4 2018-07-14 19:36:13 +02:00
klixi
6503d8ecea no sit away more far than 20 feet when leash strict 2018-07-14 17:34:43 +02:00
lickx
59a572eef3 Merge pull request #74 from lickx/stay8
OpenSim optimizations
2018-05-22 20:01:52 +02:00
lickx
e41fbf3657 OpenSim optimizations 2018-05-22 19:43:36 +02:00
lickx
6d3fb40560 Merge pull request #72 from lickx/nuts
Various changes
2018-05-22 15:43:14 +02:00
lickx
1bd3721bcf Cleanup 2018-05-20 15:58:52 +02:00
lickx
c76d7fa6b4 Be gone FailSafe! 2018-05-20 15:56:10 +02:00
lickx
9be2a35c1a g_kGroup was improperly tested against boolean TRUE instead of a group key 2018-05-17 19:16:38 +02:00
lickx
4c274d2d78 Uniform copyright header, OC -> OsCollar terminology 2018-05-11 19:44:30 +02:00
lickx
8d900a3e3a Fix broken tempowner list entry 2018-05-10 13:25:28 +02:00
lickx
70f67478c5 OpenSim compatibility 2018-05-07 11:24:30 +02:00
lickx
2ff3ebd237 Re-add last known working aolink 2018-05-07 11:02:35 +02:00
lickx
5c3da62f19 Update UUIDs for OsGrid morse sounds for installer 2018-04-10 21:32:24 +02:00
lickx
6d029785aa Version bump 2018-04-02 16:41:24 +02:00
lickx
dbd15b94fd Merge pull request #70 from lickx/varleash
Don't hardcode region size boundaries. Fixes issue #68
2018-04-02 15:55:05 +02:00
lickx
bcf7843e63 Don't hardcode region size boundaries. Fixes issue #68 2018-04-02 15:51:28 +02:00
lickx
209f06e28d Merge pull request #69 from lickx/springclean2
Springclean2
2018-04-02 15:21:27 +02:00
Lotix
97fd563e77 Remove old web queries folder. Closes issue #67 2018-04-02 15:14:17 +02:00
lickx
8f74653eef Some more profiling cleanup 2018-03-25 23:12:47 +02:00
lickx
748ee5659d Update README.md 2018-03-25 23:08:21 +02:00
lickx
5c9294ecf4 Still found something missing 2018-03-25 23:07:55 +02:00
lickx
4b67305e06 Update texture UUIDs with new textures 2018-03-25 23:06:50 +02:00
lickx
c242ea95f7 We don't have profiling functionality in OS 2018-03-25 22:44:56 +02:00
lickx
f0559237e5 Merge pull request #63 from lickx/legal
Simplify header comments, add licenses, update some buttons
2018-03-24 14:07:59 +01:00
lickx
42a70f7a3f Merge pull request #64 from lickx/opensimfix2
Add fix for another issue of OpenSim with MoveToTarget
2018-03-24 13:56:28 +01:00
lickx
3a7053e49d Add fix for another issue of OpenSim with MoveToTarget 2018-03-24 13:43:09 +01:00
lickx
5e3bb67e5d Simplify header comments, add licenses, update some buttons 2018-03-24 13:35:22 +01:00
lickx
e4b345de7e oc_update got merged into oc_root so update readme 2018-03-10 20:58:45 +01:00
lickx
a3462db646 Drop usage of 'legacy' terminology 2018-03-10 20:58:00 +01:00
lickx
76b071ce32 Improve sim crossings when driving vehicles while the bell is active 2018-03-10 20:56:56 +01:00
lickx
61da51e404 Release 6.8.2 prep 2018-02-05 15:13:41 +01:00
lickx
4050e9a808 Merge pull request #62 from typhartez/master
bad string creation in legacy camera app
2018-02-05 14:40:12 +01:00
Typhaine Artez
d035cd3564 bad string creation in legacy camera app 2018-02-05 12:58:55 +01:00
lickx
8119e86cca Merge pull request #59 from lickx/globalppl
totally change the way we deal with limits

closes #57
2018-01-27 09:47:38 +01:00
WendyStarfall
cfad907472 totally change the way we deal with limits
- add an integer for max. users and set it
- add a percentage count in the access menu
- add an info notify when reached to max. users
- adjust "you belong to..." notify to print limits
- take care of lists length logic and implementation
- clean up unused variables to save some 600ish bytes
- remove tests against limits in core storage module

thanks @GarvinTwine for helping me to put this in a publishable form ♥

#1073
2018-01-21 10:27:15 +01:00
lickx
1925098d4e Merge pull request #56 from lickx/updatemerge
Merge oc_update into oc_root
2018-01-14 08:17:50 +01:00
lickx
a5808785c0 Merge oc_update into oc_root 2018-01-14 08:08:45 +01:00
lickx
f276902199 Bump version
Only (very) old products still do a remote version check against this web folder
2018-01-14 07:12:01 +01:00
lickx
1326e3161c Bump version
Only (very) old products still do a remote version check against this web folder
2018-01-14 07:11:25 +01:00
lickx
3f8f3f8559 Merge pull request #55 from lickx/rootmenu
Let oc_dialog substitude channel and prefix in menu

Closes #52
2018-01-14 07:05:49 +01:00
lickx
44caca3d7b Bump version 2018-01-14 07:04:18 +01:00
lickx
df692987dc Let oc_dialog substitude channel and prefix in menu 2018-01-14 07:00:52 +01:00
lickx
47211f1fb2 Merge pull request #54 from typhartez/master
fixed profile picture display when on the same grid
2018-01-14 06:46:35 +01:00
Typhaine Artez
89678ca049 fixed profile picture display when on the same grid 2018-01-14 00:11:34 +01:00
lickx
0bd0821176 Include patch for OpenSim master 2017-12-16 15:57:38 +01:00
lickx
36c5d91efa Bump for release 2017-12-16 14:35:35 +01:00
lickx
c39b90b626 More readable version strings 2017-12-16 13:10:15 +01:00
lickx
9125e51f2e More readable version strings 2017-12-16 13:00:56 +01:00
lickx
fa766d5d86 Merge pull request #51 from lickx/strings
Remove old web cruft, update menu strings/versions
2017-12-15 18:52:00 +01:00
lickx
4624ff2cd6 Fix installer, remove accidental add :) 2017-12-15 18:47:10 +01:00
lickx
a984a1fceb Merge pull request #50 from lickx/wendy2
Wendy2
2017-12-15 18:43:34 +01:00
lickx
9df553a589 Remove old update cruft, update menu strings/versions 2017-12-15 18:39:58 +01:00
lickx
8ecad5dd19 OpenSim compatibility 2017-12-15 13:25:56 +01:00
WendyStarfall
1bf595c9a0 add a hover reset command for default hover + ...
+ fix a bug when bopping "up" on the z-axis

#1072
2017-12-15 13:24:03 +01:00
WendyStarfall
f70b32cfd1 add rlv restriction to Read IMs
when iReadRestricted is true we don't to read notecards either
😮

#1071
2017-12-15 13:23:55 +01:00
GarvinTwine
0304ee3202 Lets only do 1 more square for any value over 100 given
#1069
2017-12-15 13:23:45 +01:00
WendyStarfall
6b4156c885 build titler 2.1 @ 171214.1
#1069
2017-12-15 13:23:30 +01:00
George Black
d4ee76de27 Now makes a 0% graph if the value is omitted 2017-12-15 13:22:49 +01:00
George Black
a9fd465f2f Improve behaviour when percent value is omitted.
Thanks Otto!
2017-12-15 13:22:42 +01:00
George Black
3a273d4e7f Fix graph title to support multiple words.
Now we properly rebuild the title from lParams so extra words aren't lost.
2017-12-15 13:22:34 +01:00
lickx
cc66c1adfe Merge pull request #49 from lickx/OC_Cuffs_sync
Integrate OsCuffs settings synchronization
2017-12-14 15:49:13 +01:00
lickx
6582dcdf8a Integrate OsCuffs settings synchronization
Closes issue #47
2017-12-14 15:47:12 +01:00
lickx
57630f3de8 Merge pull request #46 from lickx/oc_root_merge
Oc root merge
2017-12-13 18:39:00 +01:00
lickx
8728b856c3 Merge pull request #45 from lickx/remotehotfix
Hotfix for Remote 6.6.1
2017-12-13 18:34:40 +01:00
lickx
7a8aa08b66 Hotfix for Remote 6.6.1 2017-12-13 18:30:44 +01:00
lickx
fcbd86d47a Update README.md 2017-12-12 19:40:15 +01:00
lickx
748fbc8b1e Reflect oc_root merge in installer BUNDLEs 2017-12-12 19:34:14 +01:00
lickx
162820e29e Remove oc_lock and oc_stealth 2017-12-12 19:31:45 +01:00
lickx
ea79e0aa03 Inform user if settings succesfully saved 2017-12-12 18:10:41 +01:00
lickx
c6544f9eed Merge oc_stealth and oc_lock into oc_root
Keep oc_update seperate for now as suggested in issue #43
2017-12-12 18:07:49 +01:00
lickx
a58dd5b125 Merge pull request #44 from lickx/refactor
Refactor codingstyle of Apache licensed scripts
2017-12-12 16:43:02 +01:00
lickx
f6d8c7660e Add modification notification to comply with Apache 2.0 license 2017-12-12 15:08:34 +01:00
lickx
d29699fe44 g_lMenus, NameURI 2017-12-12 14:57:41 +01:00
lickx
a7bdf5204b Always use the same channel 2017-12-12 14:40:47 +01:00
lickx
318143c986 Some more variable renames 2017-12-12 14:40:26 +01:00
lickx
35d8bfb569 Use g_sQuoteToken here also 2017-12-12 05:12:43 +01:00
lickx
2f47dd3505 Properly delete quote, and use g_sQuoteToken 2017-12-12 05:07:59 +01:00
lickx
e61dad78b9 Rename tokens 2017-12-12 05:00:43 +01:00
lickx
21b407e6d2 This is an integer, not a list 2017-12-11 19:47:00 +01:00
lickx
1e0dd854f6 Refactor: Use OpenCollar codingstyle 2017-12-11 19:42:50 +01:00
lickx
afd34a17f6 Update README.md 2017-12-11 09:42:58 +01:00
lickx
e3d6eba02a Merge pull request #40 from lickx/osfixes
OpenSim compatibility
2017-12-11 09:27:18 +01:00
lickx
c859c9a871 Update README.md 2017-12-11 09:21:02 +01:00
lickx
8661dc853e OpenSim compatibility 2017-12-11 08:54:41 +01:00
lickx
0ecfb0e64f Merge branch 'master' of https://github.com/lickx/opencollar-os 2017-12-05 21:29:32 +01:00
GarvinTwine
a71aa7a263 re-add floattext prim slicing 2017-12-05 21:26:47 +01:00
lickx
da6c2f1af1 Update README.md 2017-12-05 18:46:49 +01:00
lickx
3c3887ef13 OpenSim compatibility 2017-12-03 08:15:23 +01:00
lickx
960a47c800 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-12-03 08:05:02 +01:00
lickx
d238db710b Update README.md 2017-12-01 18:08:56 +01:00
GarvinTwine
1954da7fd0 no control request windows for commands that do not take control
extract x-who right away from the command if present and store in g_kObejctUser
give ko replies for all denied commands
2017-12-01 17:07:06 +07:00
WendyStarfall
a1bf34bfee build titler 2.0 @ 171130.2 2017-11-30 19:10:54 +01:00
WendyStarfall
a0b0281d0c Merge pull request #1067 from george-black/george-black-title-graph
Command-line bar graph feature for titler
2017-11-30 17:40:15 +01:00
GarvinTwine
226cb36186 Change title position upwards from prim-resizing to adding "\n "
this does not require a dedicated FloatText Prim anymore but can use the root if none is present.
also get back to the side of the color menu you chose the color from
2017-11-30 21:32:30 +07:00
George Black
cd0d18ecf5 text in the wrong place 2017-11-30 07:40:57 -05:00
George Black
8516200159 missed a test 2017-11-30 07:39:00 -05:00
lickx
c076ff0fb0 Remove old alternative rlvsuite 2017-11-30 06:05:00 +01:00
George Black
afebda57aa added silly bargraph feature
say <prefix> graph 80 sleepy to get a title bargraph that says "80% sleepy"
2017-11-29 22:51:40 -05:00
WendyStarfall
7eccf662f6 make notify optional
this notify can come up in other situations, like when we have an
installation and want to also move anims, at the moment this notify is
more misleading in current use cases than it could be informative
2017-11-29 09:12:13 +01:00
WendyStarfall
ebf5d8b114 add notify to failsafe
#1066
2017-11-29 05:15:21 +01:00
lickx
5a0bbc534b Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-11-28 04:36:04 +01:00
lickx
b8bf58c50f Update readme.md 2017-11-28 04:06:56 +01:00
lickx
4c4c669a6a Merge pull request #39 from lickx/opensim-support
Add support folder with OpenSim patches
2017-11-28 04:03:37 +01:00
lickx
46a0b45863 Add support folder with OpenSim patches 2017-11-28 03:59:18 +01:00
GarvinTwine
162c15c456 check for themes and stealth scripts before adding buttons
#1064
2017-11-27 08:56:12 +07:00
GarvinTwine
2285b07298 Make chat command for auto and ask mode work
#1063
2017-11-27 08:44:03 +07:00
GarvinTwine
f6796b127b Merge pull request #1062 from stawberri/relay-safeword
Edit oc_relay's safeword condition so that it no longer checks if the linked message's key matches wearer's key
2017-11-27 08:37:13 +07:00
lickx
edb4ff8e7e Merge pull request #38 from lickx/appsrefresh
OpenSim compatibility
2017-11-26 16:34:42 +01:00
lickx
20e8dc4f57 Merge pull request #37 from lickx/installer
Add particle texture for installer
2017-11-26 16:33:55 +01:00
lickx
2751f1c28c OpenSim compatibility 2017-11-26 16:32:26 +01:00
lickx
481d67d7b6 Add particle texture for installer 2017-11-26 16:25:06 +01:00
Pudding
48b8c5f2f3 Remove linked message key check from safeword command 2017-11-25 20:26:12 -08:00
lickx
028cc9a459 OpenSim compatibility 2017-11-24 16:01:46 +01:00
lickx
541b0c3557 OsCollar Release 6.7.0 2017-11-24 14:54:41 +01:00
lickx
810dccaf24 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-11-23 16:42:45 +01:00
WendyStarfall
26d0314832 :shipit: ship opencollar six 6.7 @ 171122.1 2017-11-23 04:05:07 +01:00
lickx
8f80bd3ca0 Merge pull request #36 from lickx/preservenewline
Fixes issue #33, and stores quote in its own setting
2017-11-21 07:24:47 +01:00
lickx
f9a99f8320 Fixes issue #33, and stores quote in its own setting 2017-11-20 07:14:30 +01:00
lickx
c888c079b3 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-11-18 05:48:21 +01:00
lickx
1036ad1bbb Merge pull request #35 from lickx/nonpc2
Nonpc2
2017-11-18 05:39:42 +01:00
lickx
1dc792933b Typo 2017-11-18 05:36:02 +01:00
WendyStarfall
0c0858283c move logic to adjust hover to own function 2017-11-16 12:03:15 +01:00
WendyStarfall
0df874d4fa update list print
#1058
2017-11-16 11:34:16 +01:00
GarvinTwine
d5bcf6e4dc Re-auth the wearer when they turned vanilla off for remenu
#1058
2017-11-16 17:32:05 +07:00
WendyStarfall
3b4b7b5259 make couples button static + ...
+ don't irritate users with debug blubber

#1061
2017-11-16 10:53:44 +01:00
lickx
444ad64bc9 Ignore NPCs in remote 2017-11-15 10:32:02 +01:00
GarvinTwine
5c3272e205 Add wearer notify if the reported folders string reaches 1023 char
as this means there will be at least one folder missing in the outfits menu
#1060
2017-11-11 14:47:30 +07:00
GarvinTwine
f5d2a9a969 re-menu back to the page you came from
this applies to the theme-choosing and the color-menu (when using looks) in this script. Now it reopens the same page the button for a theme or color was clicked on
#1059
2017-11-11 12:59:05 +07:00
GarvinTwine
18885f5565 update color menu
to get back to the page the color were chosen from (and not always to the first page)
2017-11-11 10:17:22 +07:00
GarvinTwine
25b52a0ae4 Inform wearer of vanilla changes
remove unused function
#1058
2017-11-08 12:25:06 +07:00
GarvinTwine
6bc6d142b2 missed something
#1058
2017-11-07 15:23:01 +07:00
GarvinTwine
680d3fad51 Make a "real" vanilla mode
Do not store wearer in owner-list any more but use g_iVanilla as real mode which auths the wearer as owner but does not effect the owner-list
#1058
2017-11-07 11:18:39 +07:00
lickx
6dba44f9f7 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-11-03 05:58:10 +01:00
lickx
57b73c0a50 Merge pull request #34 from lickx/newrelay
Newrelay
2017-11-03 05:56:02 +01:00
lickx
95a2c28bfc OpenSim compatibility for legacy relay 2017-11-03 05:40:35 +01:00
GarvinTwine
a38af64daf ship OC version 6.6.3 2017-11-03 08:16:04 +07:00
GarvinTwine
40697f4e0c Clean unused code and inline 2 function to save memory
This should help to reduce script crashes.
Also adding a notify that informs the user if the RLV limitation to report folders is hit (1024 chars) and not all folders might be displayed and seem missing in the menus
2017-11-02 09:04:35 +07:00
lickx
7af5529267 Solves Unrecognized escape sequence \T 2017-11-01 07:53:18 +01:00
lickx
00ca90c4c0 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar into newrelay 2017-11-01 07:20:03 +01:00
WendyStarfall
e050e642d0 ship opencollar 6.6 2017-11-01 05:49:06 +01:00
WendyStarfall
22737bfb80 update region and coordinates 2017-11-01 04:51:59 +01:00
WendyStarfall
139f15c285 create oc_relay (171017.1)
base sources:

- oc_relay (160117.1)
- vd_relais (160413.1)
2017-11-01 04:50:18 +01:00
WendyStarfall
e9c9ac2eb8 mv oc_relay to spares
becomes legacy relay
2017-11-01 04:42:57 +01:00
WendyStarfall
a25ae191b0 update readme 2017-11-01 04:34:42 +01:00
WendyStarfall
5c404f6e9e Revert "update readme"
This reverts commit 917795a359.
2017-11-01 04:32:55 +01:00
WendyStarfall
917795a359 update readme 2017-11-01 04:32:19 +01:00
WendyStarfall
5621c900ae update date 2017-11-01 04:28:00 +01:00
WendyStarfall
d7c9f2b2ce update license and readme 2017-11-01 04:26:09 +01:00
WendyStarfall
475b56f177 Merge pull request #1055 from RomkaSwallowtail/patch-1
SmartStrip and remoutfit=force (w/o layers)
2017-10-30 19:25:55 +01:00
Romka
432bd9cc2f Update oc_relay.lsl
convert only  remoutfit: > detachallthis:  
remoutfit w/o layers no need converting, becouse detachallthis w/o layers/attaches not work from relay, only from shared folder
2017-10-30 13:45:24 +03:00
lickx
e8813011c3 Update version 2017-10-29 17:20:13 +01:00
lickx
e2ef4dea2a Update ~version 2017-10-29 17:07:51 +01:00
lickx
0d10c6d2d9 Merge pull request #32 from lickx/quote
Add quote feature
2017-10-29 17:06:21 +01:00
lickx
c9e4cb0c25 Only show quoter if quote!="" 2017-10-29 17:04:05 +01:00
lickx
092adb24f3 Like in OsCollar 6.5, anyone can fix the menu now again
This was a request because weird things with script state happen sometimes in OpenSim that could otherwise lock the menu operator out. I see no issues with enabling this globally but correct me if I'm wrong.
2017-10-27 20:19:10 +02:00
lickx
6e415dd37c Only allow wearer and owner to add a quote 2017-10-27 20:15:33 +02:00
lickx
4a55873703 First try at a 'quote' feature like OpenCollar 2017-10-27 20:02:03 +02:00
lickx
a32bebd6b3 Merge pull request #31 from lickx/aofix
Remove web lookup for AO, and 1 compatibility fix
2017-10-26 15:03:31 +02:00
lickx
760dac69db Keep using 'Girl' for card 2017-10-26 07:20:16 +02:00
lickx
76ccf0534a Remove webcheck, fixups 2017-10-26 07:17:39 +02:00
lickx
2bbb469c14 OpenSim compatiblity 2017-10-23 17:48:45 +02:00
lickx
149262525f Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-10-23 12:50:50 +02:00
lickx
50e480948b Merge pull request #30 from lickx/bellonlogin
If bell enabled, take controls on login/reset
2017-10-23 12:49:38 +02:00
WendyStarfall
b2dcac4c80 Merge pull request #1053 from RomkaSwallowtail/RomkaSwallowtail-patch-1
oc_com.lsl listen channels optimisation
2017-10-07 14:04:51 +02:00
Romka
12850581ea Update oc_com.lsl
GarvinTwine it advised
2017-10-05 09:52:53 +03:00
lickx
6ce539b5f5 If bell enabled, take controls on login/reset 2017-10-04 14:10:11 +02:00
lickx
9416950472 Release prep 2017-10-03 10:42:59 +02:00
lickx
40eda024a4 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-10-01 16:18:07 +02:00
lickx
0a2631946f Merge pull request #29 from lickx/remotesave
Use partner pic from inv; Save to notecard
2017-10-01 16:14:51 +02:00
lickx
22d3a3e071 Merge pull request #28 from lickx/newbell
Reference bells by UUID, only add new sounds
2017-10-01 15:52:56 +02:00
lickx
a3894e4e1f Merge pull request #27 from lickx/newdist
Improve display of origin
2017-10-01 15:13:44 +02:00
lickx
f3d4abcba9 We use OBJECT_CREATOR so adjust terminology 2017-10-01 14:50:44 +02:00
lickx
cba8b21b0e Revert "Hypergrid clickable profiles"
This reverts commit 41fa5c226a.
2017-10-01 14:47:47 +02:00
lickx
83eaad25b3 Merge pull request #26 from lickx/extroot
Extend main menu with more info
2017-10-01 14:26:02 +02:00
lickx
57f0549ddf Update oc_root.lsl 2017-10-01 14:22:40 +02:00
Romka
faf49001c3 Update oc_com.lsl 2017-10-01 14:52:11 +03:00
lickx
60f8b0d6f5 Use timer instead of llSleep() when saving partner card 2017-10-01 07:13:59 +02:00
lickx
088a182a8b Don't update dist from SETTING_RESPONSE 2017-09-30 21:27:00 +02:00
lickx
41fa5c226a Hypergrid clickable profiles 2017-09-30 20:44:14 +02:00
WendyStarfall
af296cecbd Merge pull request #1052 from RomkaSwallowtail/patch-1
Presets & Upper/Lower case
2017-09-30 16:50:34 +02:00
lickx
e1cbe2628b Addresses issue #25 2017-09-30 16:44:55 +02:00
Romka
17d58df175 Update oc_resizer2.lsl 2017-09-30 15:24:34 +03:00
Romka
6cecb47120 Update oc_presets.lsl
need case sensitive for presets names
2017-09-30 15:21:31 +03:00
lickx
cfb625d10f Extend main menu with more info 2017-09-29 12:01:46 +02:00
lickx
acb8708ac6 Also find your partner's pic if hypergridded 2017-09-28 23:53:49 +02:00
lickx
b6b702795d Saving to card; Use inventory for partner pic 2017-09-28 06:10:51 +02:00
WendyStarfall
c1c32c7acf update license 2017-09-20 19:21:29 +02:00
lickx
83e4baa109 Reference bells by UUID, only add new sounds 2017-09-20 07:19:45 +02:00
lickx
2694ed5ce4 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-09-07 08:57:22 +02:00
WendyStarfall
9dee309f1b Merge pull request #1049 from RomkaSwallowtail/patch-1
resizer2 and presets small updates
2017-08-31 21:13:51 +02:00
lickx
c73a259bfe Merge pull request #24 from lickx/revert-23-distname
Revert "Uniform dist string"
2017-08-29 14:49:12 +02:00
lickx
81a0343f72 Revert "Uniform dist string" 2017-08-29 14:48:50 +02:00
lickx
9b48b60b3e Merge pull request #23 from lickx/distname
Uniform dist string
2017-08-29 14:24:46 +02:00
lickx
3143c56c85 Uniform dist string
- A lot of viewers don't support the undocumented feature of having non-linden links in dialogs
- A lot of viewers can't resolve hypergrid hop:// urls to profiles
- Can't look up profile with secondlife:// on the hypergrid when the target avatar is not a member of the same grid

Ergo, I think a simple hypergrid formatted name 'firstname.lastname @hg.example.com:8002' is a good middle ground.
2017-08-29 14:18:21 +02:00
lickx
8535fe7cdb Merge pull request #22 from lickx/classicdialogs
Beautify menus like <=6.5.5
2017-08-29 13:19:22 +02:00
lickx
855d900342 Beautify menus like <=6.5.5 2017-08-29 13:16:48 +02:00
lickx
5a6981e1b3 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-08-25 20:46:22 +02:00
Romka
b460651321 Update oc_presets.lsl 2017-08-20 10:36:13 +03:00
Romka
c2b1fcb1e2 Update oc_presets.lsl 2017-08-20 09:08:19 +03:00
Romka
9c27e9f5bc Update oc_resizer2.lsl 2017-08-20 09:03:31 +03:00
Romka
393e0a0f68 Update oc_presets.lsl 2017-08-20 09:01:09 +03:00
Romka
3c4e23c67f Update oc_presets.lsl 2017-08-20 08:53:25 +03:00
Romka
a6e703e3e0 Update oc_resizer2.lsl 2017-08-20 08:51:55 +03:00
WendyStarfall
8dd0112aa8 Merge pull request #1048 from RomkaSwallowtail/patch-4
Create oc_presets.lsl
2017-08-20 04:08:30 +02:00
Romka
dfbb52379d Create oc_presets.lsl
standalone, based on resizer, plugin for save and restore size/position
2017-08-19 18:21:45 +03:00
WendyStarfall
c7ea7227ab Merge pull request #1047 from RomkaSwallowtail/patch-3
Create oc_resizer2
2017-08-19 16:46:50 +02:00
Romka
54a896f76d Rename oc_resizer2 to oc_resizer2.lsl 2017-08-18 16:41:26 +03:00
Romka
b3a60ca377 Create oc_resizer2
new resizer with presets save/load
2017-08-18 16:30:26 +03:00
WendyStarfall
4d09123fd7 build opencollar remote 6.6.0 @ 170818.1
#1032
2017-08-18 11:01:06 +02:00
WendyStarfall
f252b031be build opencollar ao 6.6.0 @ 170818.1
#1030 #1032
2017-08-18 09:40:36 +02:00
WendyStarfall
9a1081608e shorten prefix notify; distinguish better 2017-08-14 18:42:32 +02:00
lickx
16f9a140b2 Make Patch/Apps work again 2017-08-10 07:12:58 +02:00
lickx
1064106c30 OpenSim syntax 2017-08-07 09:03:50 +02:00
lickx
1fe59ab73e Update README 2017-08-07 06:51:55 +02:00
lickx
c9a64232e4 Merge branch 'master' of https://github.com/VirtualDisgrace/opencollar 2017-08-07 06:38:14 +02:00
lickx
12bb757ec2 Survive loss of settings on crossings 2017-08-06 18:03:13 +02:00
lickx
48435e6f4c imposed restrictions where auto lifted
When restriction is imposed through the collar, the source has not a valid key but value 'vdRestrict' (from rlvsuite) and vObjPos will be <0, 0, 0> thus the garbage collector will lift the restriction so we need to check for a valid key. Not sure if this is the right fix, needs testing
2017-08-06 17:24:26 +02:00
GarvinTwine
92572baf71 Add mode check for "noPartcile" and do nothing
#1046
switch order in timer, might solve some leash to collar issues after tp!
2017-08-06 14:04:47 +07:00
WendyStarfall
22d04c0ea9 build titler 1.5 @ 170718.1
#1039
2017-08-06 08:41:13 +02:00
lickx
a123d8b5af OpenSim syntax 2017-07-31 21:28:00 +02:00
lickx
e597290235 Merge https://github.com/VirtualDisgrace/opencollar into 6.6 2017-07-31 20:44:54 +02:00
WendyStarfall
7ec1c24c64 create blindfold 2017-07-31 08:33:28 +02:00
GarvinTwine
577886b392 reset all not running script on reboot command
but oc_root as last
#1044
2017-07-23 14:07:13 +07:00
WendyStarfall
a5e1201a0e build com @ 170723.2
#1043
2017-07-23 06:15:41 +02:00
GarvinTwine
9096423557 missed one "(" 2017-07-23 11:01:08 +07:00
GarvinTwine
1f9b033580 Check and restart oc_folders if stopped
#1043
2017-07-23 11:00:19 +07:00
WendyStarfall
d075bfebcb uninstall oc_themes unless looks were configured
if we already have no themes configured via card at all and looks
weren't configured in "out of the box settings" we can savely assume
that the artwork in question doesn't need to have this script; keep in
mind that if it was half-way done wrong, users would be able to alter
their collar with "looks", damage it forever, and have no way to restore
it; this problematic is only relevant for other party builders, if you
are one, and reading this, please use 'OpenCollar Originals' as samples
to study how configuration is done right

#1041
2017-07-19 15:57:11 +02:00
WendyStarfall
e70747d3f9 refer to looks only when properly configured
#1041
2017-07-19 15:53:36 +02:00
WendyStarfall
7c52c7c717 update notifies and prompt
#1041
2017-07-19 14:49:41 +02:00
GarvinTwine
badadbfc38 Added "rm themes" command
#1041
Instead of a notify and hint to the looks command, now open a menu with uninstall and looks button
Remove the not used TOUCH_RESPONSE part
2017-07-19 11:46:33 +07:00
lickx
813aff191e Re-add save button, update urls 2017-07-19 04:18:28 +02:00
lickx
80a154e2a2 Fixups
Only tested in OS0.9 stay tuned for OS0.8
2017-07-18 20:15:29 +02:00
lickx
a6452d3d8c Merge https://github.com/VirtualDisgrace/opencollar into 6.6
part 1: resolve merge conflicts
2017-07-18 20:07:52 +02:00
WendyStarfall
9c26a245a7 build rlvsys @ 170718.2 2017-07-18 12:51:32 +02:00
GarvinTwine
eca198cd22 forgot one LED lighting
#1040
2017-07-18 12:04:29 +07:00
GarvinTwine
bffea03541 Check if the prim is meant to be an LED
Only then lighten it up
#1040
2017-07-18 11:48:46 +07:00
WendyStarfall
f04501a7ee rename core style type
neither is better or worse than the other 🙊
2017-07-18 05:36:54 +02:00
WendyStarfall
5c1dc5d3a9 don't kill the script when FloatText is missing
#1039
2017-07-18 05:12:35 +02:00
WendyStarfall
c3ef7a32a7 update license and readme 2017-07-03 04:18:00 +02:00
WendyStarfall
a8a450536d configure installer 2017-07-03 04:14:09 +02:00
WendyStarfall
97beeef5f5 Merge pull request #1038 from WendyStarfall/stealth
stealth plugin
2017-07-03 04:10:07 +02:00
WendyStarfall
d0570f5e4b :shipit: ship oc_stealth
only a short description and no proposed memory limit this time (because
with large link-sets we have to store a lot of information and will need
our memory 🙊 )
2017-07-03 04:07:05 +02:00
WendyStarfall
a85df67074 add failsafe and clean up 2017-07-03 04:01:48 +02:00
WendyStarfall
332b3b51f7 inform when not authorized
I should add this to the default functions to not forget..
2017-07-03 03:54:25 +02:00
WendyStarfall
22ffcaa59e create list of glowy links + ...
we need to learn of all the glowy links and remove that glow in order to
properly make the device "invisible", then add it back when we want to
show ourselves again

unlike texture_transparent that also hides glow, we have to be a bit
more crafty here with our SetLinkAlpha all_sides solution (which is
preferred if the model needs to be able to perpetually retain
texture_transparent on some faces)
2017-07-03 03:36:53 +02:00
WendyStarfall
7a4ca37a91 start stealth function and take care of commands
no need for a whole (user) commands function; stealth for the toggle
2017-07-03 03:14:59 +02:00
WendyStarfall
1ff112cbc2 check hidden state with new function init()+ ...
take care of resets when the plugin changes hands and on reboot
2017-07-03 03:04:21 +02:00
WendyStarfall
343b7195e0 add message map and default functions 2017-07-03 02:58:19 +02:00
WendyStarfall
c3354744a6 create oc_stealth 2017-07-03 02:55:17 +02:00
WendyStarfall
ed90f2fd74 remove legacy show/hide logic 2017-07-03 02:54:11 +02:00
WendyStarfall
22de0e546c configure installer 2017-06-29 15:24:33 +02:00
WendyStarfall
91ef761cbf fix typo 2017-06-29 15:24:01 +02:00
WendyStarfall
d129eaf48b update license and readme 2017-06-27 00:37:35 +02:00
WendyStarfall
e2063688be Merge pull request #1036 from WendyStarfall/update
Sys Replacement (3 of 3) - Update
2017-06-27 00:20:24 +02:00
WendyStarfall
3c6080177c Merge pull request #1035 from WendyStarfall/lock
Sys Replacement (2 of 3) - Lock
2017-06-27 00:19:42 +02:00
WendyStarfall
554341c627 Merge pull request #1034 from WendyStarfall/root
Sys Replacement (1 of 3) - Root
2017-06-27 00:19:15 +02:00
WendyStarfall
165dd705b3 :shipit: ship oc_update
Short description, proposed memory limit and clean up the functions that
we didn't need. That's it!
2017-06-26 05:42:41 +02:00
WendyStarfall
170a6fbce2 avoid accidental duplicates only for upstream
We don't have to worry about duplicates if the script isn't part of our
distribution and might have a differet name.

Let's not forget to handle reboot and reset on owner change, and clean
up the messages that we don't need.
2017-06-26 05:05:09 +02:00
WendyStarfall
e5142ce5c8 add update function and confirmation menu
We generate a random remote access pin and announce to installers that
we are ready when called. If we are running packages from the upstream
we use that channel, else we use a different one. We let the user
confirm or cancel before an installation starts.

PS: This is a very simple approach to updating and I believe that it is
more useful to everyone when easier to understand and modify. There are
no chat commands and no tests if patches are deprecated. Users can
choose whether to run patches from the upstream or not. Installations
are triggered by touching the installer.
2017-06-26 04:47:07 +02:00
WendyStarfall
bcee2b1ca7 add message map and default functions 2017-06-25 14:31:17 +02:00
WendyStarfall
c51758ec3d create oc_update 2017-06-25 14:16:25 +02:00
WendyStarfall
8ec739d276 :shipit: ship oc_lock
Give it a description on top, a proposed optional memory limit and we
are done!
2017-06-25 13:53:09 +02:00
WendyStarfall
255ed92f43 avoid accidental duplicates (failsafe)
And clean up all the many messages that we don't need.
2017-06-25 12:59:49 +02:00
WendyStarfall
022fc2ea6e add function to show/hide the lock, handle glow
Things are getting a bit cumbersome when we have to hide and reveal our
lock elements. We need a special function just to handle glow because a
prim (100% set transparency rather than a 100% transparent texture) will
continue to glow if made merely "invisible". The glow values have to be
fetched, stored, and be restored once the lock shows up.

We also have to check whether the device is hidden on rez and color
change, and store it in the "hidden" variable. (That prevents the lock
to show up when the device is locked while stealthed.)

The reboot command we want to add as well of course.

PS: RLV is relevant here. I'm not convinced to fully rely on oc_rlvsys
(as seen earlier when I used a plain llOwnerSay also to set the detach
restriction) for the most important lock, sending a LM comes with a
delay, if so a tiny one, but if anyone feels that "double" the
restrictions are too much, just remove them.
2017-06-25 12:37:05 +02:00
WendyStarfall
f2bf4bb352 scan for lock elements, lay out basic functionality
First we need to scan for elements that resemble the lock, that would be
"ClosedLock" and "OpenLock" and for using the script in very old collars
also just "Lock".

We also need to watch for changes in the link-set (before I forget about
it again), so that goes into the link message event as a first.

Then we have to take care of the actual command handling and do that in
the link message event (we really don't need a commands function just
for that). At this point let's make sure that the usual expectations are
fulfilled, that means informing when the use is not authorized (no
access), playing a noise when the lock is triggered and prepare a
function for revealing/hiding the lock depending on state (which we want
to learn about in the setting response event).

Very important: We have to reset the script when a device has a new
owner (wearer).
2017-06-25 09:52:15 +02:00
WendyStarfall
2156408bcf add message map and default functions 2017-06-25 08:41:53 +02:00
WendyStarfall
46882e099b create oc_lock 2017-06-25 08:26:25 +02:00
WendyStarfall
eb9d680b83 :shipit: ship oc_root
Added a description on top and a proposed memory limit at line 181 (if
you are brave enough). That's all!
2017-06-25 05:38:50 +02:00
WendyStarfall
1439df81f6 use the right token, handle dialog timeout
Let's not introduce a whole new token there, let's just not...
🙊

Instead of "collar" we can use our global %DEVICETYPE% (the one that I
always forget) and we can get rid of the messages that we expected to
not to need (and the ones we ended up not needing after all).

PS: CMD_ZERO ....
2017-06-25 05:08:44 +02:00
WendyStarfall
f2f5af50ab add variable for safeword and familiar commands
We want chat commands for passing users (and their authorized partners)
a help or a license file. We also need to handle our "fix menus" command
and one for printing general info (about) the device. Some users will be
familiar with either "version" or "info" so let's let both do the same
thing in this new source. That feature is also often used to look up the
safeword, so we need a variable (default is RED) for that and get it in
the settings response event. We also should make use of a failsafe to
avoid accidental script duplicates and to play nice with updaters.
2017-06-25 04:24:45 +02:00
WendyStarfall
fa52feaefd take care of changes in the (prim) link set
We need to request link numbers in the link message event and request it
new in the change event when the user links or de-links something on her
device, say if she wanted to add a cute bell for example, in which case
the default link numbers would change.

(For history, the 4.0 API was lacking this kind of functionality.)
2017-06-25 02:41:41 +02:00
WendyStarfall
cd3c551fc2 code other menus, add settings response and token
We have to make sure that existing behavior doesn't change too much (at
least in our version of the new source). There is the "hide all" feature
in the settings menu aka the "stealth toggle". We do it right from the
beginning this time and reflect the state of stealth correctly, add a
variable for that, check when relevant.

We also want to use a dedicated lock plugin (not yet coded, just use a
dummy response if you follow my progress live) and need to learn about
the state of the lock.

Then we also need a simple function for nameURI for the 4.0/Six hotlink
style in menus and prints. That comes in play for a variable (dist) that
we receive in the settings response event, which we need for a properly
formatted name of origin.

The about menu shows version (natural) number and even the origin. We
have to ensure that receiving users are informed that our project can't
take the burden of support in case the source gets distributed by
others. 🙊

The about menu is just a plain info "pop-up" where we don't need to make
use of the dialog function but the buttons for app and settings menu
functions need to be handled in the dialog response, so we can call up
the menus and features (list of apps, print/load/fix, stealth toggle,
adjuster menus etc..)

PS: Also added urls to our manual pages in the headlines, format:
[url<space>name]
2017-06-25 01:40:16 +02:00
WendyStarfall
b9e8ac4758 add several functions and make use of oc_dialog
To make use of oc_dialog we need a function and some logic for dialog
responses in our link message event. Then we add functions for our
menus, root (main), apps, settings and about and related response
handling.

The main menu is "semi-dynamic", meaning that buttons won't jumble
around alphabetically but if a menu/feature isn't there, we have an
empty socket [  -  ] instead. This is done for ease of recognizability.
(We will code the other menu functions later.)

We also want a (chat) commands function and need a call for that in the
link message event, and create another function init() for our timer
event (this function should come in handy for some more stuff yet).

The reboot works via chat command now. Let's also do a reboot when we
change owner (wearer).

PS: There is also contemplation about whether to add logic for the lock
here or to use a dedicated plugin, same for version control and
updating. I'm tending towards the latter mostly because if you make your
own installer, it is easy to swap a couple plugins with yours, but it is
cumbersome to diff and manually merge changes each time the upstream
releases new code. Let's see...
2017-06-24 23:27:00 +02:00
WendyStarfall
ef26bb9cb6 handle semi-dynamic menus and rebooting
We register the Main, Apps and Settings menus and query for the
Animations, RLV and Kidnap menus. To help the user, we take care of this
in a semi-dynamic style for easier recognition. The Settings menu needs
to be able to handle adding and removing trigger buttons/menus for the
oc_resizer plugin as some users will want to remove this plugin after
they are done adjusting their device.

When the script has a new owner (wearer) we have to reset, so handling
the above has to happen then and also when we start a new session.
(Maybe we should have a function that takes care of the timer event.)

For ease of use and compatibility we have a command "reboot" to reset
the script.
2017-06-23 15:26:37 +02:00
WendyStarfall
1516d715b3 add message map and default functions 2017-06-23 11:53:02 +02:00
WendyStarfall
726bd67c80 create oc_root 2017-06-23 11:51:56 +02:00
WendyStarfall
9766aab150 prepare for oc_root (installer)
We have to make sure to not end up with duplicated functionality. This
will be ultimately the installer's job but it would be very frustrating
for users who prefer manual refreshes if they first need to figure out
why everything happens twice and in a different way. 🙊
2017-06-23 11:24:09 +02:00
WendyStarfall
0e7a2c98bd remove script
This script's features will be replaced in newly written source that
will be easier to modify and doesn't require http requests.
2017-06-23 11:20:01 +02:00
WendyStarfall
988e7a38e6 ⚠ don't build this
For history, this uses raw render URLs as the default destination,
however you SHOULD UNDER NO CIRCUMSTANCE use this for your own project
or fork!

If you end up using this style, be aware that your users will create a
ton of virtually meaningless requests and you will either end up with
increased cost or throttled, depending on where you have your version
control, etc.

In practice, that means your Second Life or OpenSim region has the same
IP for every avatar logged in there, and you will throttle once 18 to 60
of them called home.

This number computes for unauthenticated requests on GitHub, with some
more room to wiggle on GitLab (at the time of this writing). In order to
keep control and a proper oversight, you should use your own web server.
2017-06-20 15:20:18 +02:00
WendyStarfall
0dffd43672 remove emergency news logic
Settings was a good place for this feature but there is no reason to
keep it there if we summarize this type of logic (hopefully) in a single
web connect script.

We never needed to use the emergency news in 6.x, and if I recall
correctly then the last time we used it was sometime around 3.844 when
the name2key queries were failing in early 2013.

#1032
2017-06-20 14:59:08 +02:00
WendyStarfall
106d401c45 use raw render URLs as default destinations + ...
- test for version only once
- don't test for version on odd days

#1032
2017-06-20 13:47:31 +02:00
WendyStarfall
9f813308bb Merge pull request #1031 from RomkaSwallowtail/patch-2
Update oc_ao.lsl
2017-06-17 17:55:07 +02:00
Romka
9a7e21b7c0 Update oc_ao.lsl
#1030
2017-06-17 18:53:52 +03:00
lickx
32b0f3a975 Merge pull request #21 from lickx/6.5.5merge
6.5.5merge
2017-06-13 05:28:20 +02:00
lickx
4bbcbacc0d Create ~version 2017-06-13 05:24:57 +02:00
lickx
181b0bacd8 Also update hub url in readme 2017-06-04 12:28:49 +02:00
lickx
06a60f3eb7 Update Kinky Hub url 2017-05-29 21:50:07 +02:00
lickx
0d3b43fa0f Sync with upstream for upcoming 6.5.5
Conflicts resolved:
src\collar\oc_anim.lsl
src\collar\oc_auth.lsl
src\collar\oc_sys.lsl
src\spares\oc_bookmarks.lsl
2017-05-29 21:44:57 +02:00
WendyStarfall
85bec81a27 don't fetch default bookmarks
Once upon a time we would ship our collar with a current landmark, but
when we had less (land tier) funding, yet still a whole lot of traffic,
and had to move our home around more frequently we needed a solution
that could refresh this important landmark in between update releases.

This was done with simple HTTP requests to fetch recent SLURLs.

Meanwhile we don't have to rely on that anymore because we have a stable
website (www.opencollar.at) that provides rich information we can update
without having to write to the collar, and our bookmarks app can ship
pure and without any preset or default bookmarks/landmarks saved.

Cutting down on HTTP requests is a good thing. :)
2017-05-29 09:35:45 +02:00
WendyStarfall
8a3b534edb build opencollar 6.5.5 @ 170525.2
#1007
#1026
#1027

- update dates and version stamps
2017-05-25 03:28:42 +02:00
WendyStarfall
b4f7e21450 indicate what we print
in the objectname in case we end up with multiple prints
2017-05-25 02:56:28 +02:00
WendyStarfall
7474ea6e8e implement #1007
does what's proposed in #1007 but without a debug toggle command; those
who want the more comprehensive subcommand print can add
``llDumpList2String(lCommands,"|")``
2017-05-23 15:41:24 +02:00
WendyStarfall
3fd5229403 update group mode notify; clean up 2017-05-23 15:39:21 +02:00
WendyStarfall
8e62672501 Merge pull request #1025 from stawberri/antislide-run-detection
Fix antislide run animation detection
2017-05-23 14:50:27 +02:00
WendyStarfall
c1e28ab004 Merge pull request #1022 from stawberri/remove-group-name-variable
Remove g_sGroupName and auth_groupname
2017-05-23 14:50:04 +02:00
Pudding
5e80bca965 Fix antislide run animation detection 2017-05-22 22:36:00 -07:00
lickx
ceac6cbf19 Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' into oscollar6
# Conflicts:
#	README.md
#	src/collar/oc_sys.lsl
2017-05-06 19:32:37 +02:00
lickx
c6a22c5bae Merge pull request #20 from lickx/nojb
Remove distributor system
2017-05-04 06:02:22 +02:00
lickx
48ca3b4b28 Update oc_sys.lsl 2017-05-04 05:59:28 +02:00
lickx
e86f06fd8d Update oc_sys.lsl 2017-05-04 05:56:16 +02:00
lickx
f94ca17596 Remove distributor system 2017-05-02 19:05:33 +02:00
lickx
85c3b833ce Another monkey 2017-04-20 12:42:59 +02:00
lickx
de21e4ab6e Use Kinky Hub for official distribution 2017-04-20 12:19:16 +02:00
lickx
c073530450 Check for array index out of bound 2017-04-20 12:17:10 +02:00
Pudding
52d80e0c25 Comment out g_sGroupName and everything that was needed for it to work
Deprecate auth_groupname
2017-03-31 23:40:49 -07:00
WendyStarfall
6f3961eb9e build opencollar 6.5.0 @ 170330.1
#1002 #1004 #1014 #1016 #1017 #1018 #1019 #1020
2017-03-30 23:09:11 +02:00
lickx
4f0e94fa38 Bump version 2017-03-30 20:41:18 +02:00
GarvinTwine
230e519808 Add leashpoint to deprecated tokens list
leashpoints gets erroneous picked up and saved in settings during updates, lets not do that, it only confuses
2017-03-30 14:13:17 +07:00
WendyStarfall
cbd3b87805 update readme 2017-03-30 05:45:28 +02:00
GarvinTwine
a8ea9420e2 Save news on/off as intern setting 2017-03-30 07:52:19 +07:00
lickx
0ee707340a Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' into oscollar6 2017-03-28 16:48:32 +02:00
WendyStarfall
9c6b4cd9fa build opencollar 6.5.0 @ 170328.2
#1018
2017-03-28 06:58:27 +02:00
GarvinTwine
4aaf474d7b Check for the correct Card to set script not running 2017-03-28 11:32:22 +07:00
WendyStarfall
26d5ac3f4b build opencollar 6.5.0 @ 170328.1
#1016 #1017
2017-03-28 04:41:46 +02:00
WendyStarfall
13c40bd0d3 update notify
#1017
2017-03-28 03:50:34 +02:00
WendyStarfall
39a8519073 update notifies
#1017
2017-03-28 03:02:21 +02:00
WendyStarfall
90ebe22392 sync opencollar 6.4.4 @ 161105.1
#1002
#1004
#1014

This is a historical sync! It includes the source up to
a1402b4dc7 ( #1000 ) <3
2017-03-27 20:41:59 +02:00
lickx
95377dc455 Merge pull request #19 from lickx/resizer
Resizer works in 0.8 and higher
2017-03-26 17:24:18 +02:00
lickx
b0b55319e0 Resizer works in 0.8 and higher 2017-03-26 16:10:44 +02:00
Lotek Ixtar
88c6335622 Merge branch 'oscollar6' of https://github.com/lickx/opencollar-os into oscollar6 2017-03-23 18:47:17 +01:00
Lotek Ixtar
3879652482 Bump version 2017-03-23 18:46:35 +01:00
lickx
3bcb5ed21c Update ~version 2017-03-23 18:42:58 +01:00
Lotek Ixtar
778f976e3c Allow Owner and Trusted to fix the menu 2017-03-23 17:51:44 +01:00
Lotek Ixtar
57405dc377 Allow Owner and Trusted to fix menus 2017-03-23 17:46:25 +01:00
Lotek Ixtar
84ec2e10c6 Merge upstream 2017-03-23 17:39:55 +01:00
GarvinTwine
5b04e8228f Add Highlander "There can be only one!"
#1017
2017-03-23 13:21:39 +07:00
GarvinTwine
27dcf58bc9 Lets do things Fast :) 2017-03-23 13:08:55 +07:00
WendyStarfall
e59697f677 default the device name to object desc if it exists
#1016
2017-03-23 06:35:41 +01:00
WendyStarfall
7bf5e19a5e don't save the device name each time on entry
#1016
2017-03-23 06:31:20 +01:00
WendyStarfall
2064f1f494 update readme 2017-03-22 01:37:38 +01:00
WendyStarfall
5399a1e73b build timer 1.4 @ 170213.1 2017-03-21 22:55:05 +01:00
WendyStarfall
a1402b4dc7 Merge remote-tracking branch 'refs/remotes/origin/stealth-vs-hide-161107' 2017-03-21 21:46:50 +01:00
WendyStarfall
1c09439b33 build opencollar remote 6.4.0 @ 170321.1
with remote bookmarks 1.2 included

for users on remote 6.4/161031.1 I include an installer for just the app
with the remote folder, like we do with the ao patch
2017-03-21 21:41:13 +01:00
WendyStarfall
4615d7ffd8 build remote bookmarks 1.2 @ 170222.1 2017-03-21 21:39:37 +01:00
WendyStarfall
bf603dd758 build bookmarks 1.2 @ 170213.1
now part of the legacy apps bundle and not to be confused with remote
bookmarks
2017-03-21 08:49:44 +01:00
WendyStarfall
e0f565d081 move bookmarks to spares 2017-03-21 08:47:46 +01:00
WendyStarfall
e844e3d2c0 Merge pull request #1011 from RomkaSwallowtail/patch-1
.bookmarks is not read again...
2017-03-21 05:53:00 +01:00
lickx
5f07a58618 Markup 2017-03-06 11:34:52 +01:00
lickx
3530a79bd8 More web repo work 2017-03-06 08:55:29 +01:00
lickx
56837a3819 Update info about our branches 2017-03-06 08:05:08 +01:00
lickx
c33fce4132 Slight rebrand, use own web repo 2017-03-06 08:04:37 +01:00
lickx
01a1379095 OpenSim compatibility and fixes aolink 2017-03-06 06:46:22 +01:00
lickx
0a6ec14f54 OpenSim 0.8 compatibility 2017-03-06 06:32:07 +01:00
lickx
89bd361e8a Merge branch 'oscollar6' of https://github.com/lickx/opencollar-os into oscollar6 2017-03-03 15:18:11 +01:00
lickx
4121d366a0 Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' into oscollar6 2017-03-03 15:17:33 +01:00
lickx
ca222aa9ee Add OsGrid Lotek 2017-02-24 18:10:01 +01:00
Romka
d2ceb49762 Update oc_bookmarks.lsl 2017-02-22 20:31:26 +04:00
Romka
8c81cf8acc .bookmarks is not read again...
we have forgotten to reset g_iLine to 0
2017-02-22 20:29:53 +04:00
WendyStarfall
d8fee78667 Merge pull request #1010 from RomkaSwallowtail/patch-1
Update oc_timer.lsl
2017-02-13 23:26:14 +01:00
Romka
2c6318e02b Update oc_timer.lsl 2017-02-13 10:44:05 +04:00
WendyStarfall
04d6ba6b13 build remote bookmarks @ 170207.1 2017-02-07 16:57:04 +01:00
WendyStarfall
b77e75c1ea Merge pull request #1009 from Mace68/patch-1
encode url for following sub
2017-02-07 15:54:28 +01:00
Mace68
aa24ce422c Added requested change. 2017-02-07 07:31:07 -07:00
Mace68
c4aa402ce2 encode url for following sub
Encodes the location section of the follow slurl to fix a problem with spaces in sim names.

relates to issue #1008
2017-02-06 13:16:25 -07:00
lickx
9928dcca96 Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' into oscollar6 2017-02-05 16:29:43 +01:00
lickx
0f0b085525 Merge remote-tracking branch 'refs/remotes/origin/master' into oscollar6
# Conflicts:
#	src/collar/oc_relay.lsl
2017-02-04 16:44:46 +01:00
lickx
76ce99382c Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master'
# Conflicts:
#	src/collar/oc_relay.lsl
2017-02-04 16:31:13 +01:00
WendyStarfall
75d98ba736 Merge pull request #1006 from RomkaSwallowtail/patch-7
Update oc_themes.lsl
2017-01-27 10:00:58 +01:00
Romka
27a318b35f Update oc_themes.lsl
it saves about 500 bytes of memory
2017-01-21 13:46:11 +04:00
lickx
f91545654e Check for used handle 2017-01-21 04:16:43 +01:00
lickx
4bd6582bc0 Fix <prefix>wear after worn an outfit..
..with <prefix>outfits through the menu
2017-01-20 11:03:14 +01:00
lickx
6950e8e9c3 Fix <prefix>wear multimatch 2017-01-19 19:48:06 +01:00
WendyStarfall
0d0086602e Merge pull request #1005 from RomkaSwallowtail/patch-6
Update oc_themes.lsl
2017-01-19 09:00:15 +01:00
WendyStarfall
7cff71bedb Merge pull request #1003 from RomkaSwallowtail/patch-5
Update oc_particle.lsl
2017-01-19 08:59:45 +01:00
Romka
a592ff3fec Update oc_themes.lsl
#1004
It allows to use custom themes with the names of two words
2017-01-18 12:06:39 +04:00
lickx
3bd8783529 Address LSL incompatibilities in OpenSim 2017-01-10 20:24:11 +01:00
WendyStarfall
fac8055c8a don't use html escape characters 2017-01-05 13:06:31 +01:00
WendyStarfall
da7fd05e76 update links 2017-01-05 12:31:17 +01:00
Romka
07e2709863 Update oc_particle.lsl
#1002
2016-12-25 22:13:02 +04:00
lickx
e6c64b2a3f Use osIsUUID 2016-12-17 11:51:39 +01:00
lickx
44b4df6699 Fix leash clash again, use osReplaceString 2016-12-17 11:51:11 +01:00
lickx
30d690b082 Initial port of remote
Works on OS 0.9+, needs testing
Might not work on OS 0.8.x yet
2016-12-17 07:29:49 +01:00
lickx
2d7327864f Only req perms if not having control already
Relation http://opensimulator.org/mantis/view.php?id=8068
2016-12-16 05:32:17 +01:00
lickx
5dd4e12364 AO texture UUIDs, add dark AO button 2016-12-16 05:01:18 +01:00
lickx
317a3a32c5 Can't redeclare already declared integer
Note this particular script is for the low-lag server side AO supported
on OpenSim 0.9 and later.

The other scripts in this folder are for the (slower) ZHAO version that
also works on OpenSim 0.8
2016-12-11 17:48:05 +01:00
lickx
34e250830b Make saving settings more robust
Old .settings are kept when the region doesn't support osMakeNotecard()
2016-12-07 08:19:11 +01:00
lickx
b2b16f6543 Don't show unlogical layers in Un/Dress 2016-11-19 23:34:11 +01:00
lickx
3a7395e810 Use names instead of UUIDs
To avoid missing hypergrid assets. The sounds are included within the
collar.
2016-11-19 23:33:24 +01:00
lickx
ad00075c9a NULL_KEY checks
Because in OpenSim this evaluates to TRUE if it returns
00000000-0000-etc (like when the item doesn't exist in inventory)
2016-11-19 23:32:31 +01:00
lickx
50db709452 Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' into oscollar6 2016-11-17 06:17:35 +01:00
lickx
6bef3e4588 Use llRegionSay instead of llRegionSayTo
We have a working updater now with this workaround
Possible OpenSim bug: http://opensimulator.org/mantis/view.php?id=7391
2016-11-17 06:14:28 +01:00
lickx
e82cc68740 Merge remote-tracking branch 'origin/oscollar6' into oscollar6 2016-11-16 18:52:03 +01:00
WendyStarfall
e6774be5c9 Merge pull request #1000 from RomkaSwallowtail/patch-3
g_iStealth vs g_iHide
2016-11-07 15:34:48 +01:00
Romka
28d14d7c1e g_iStealth vs g_iHide
fix small bugs:
don't change menu buttons "☐ Stealth" <-> "☑ Stealth"  when use chat commands "stealth", "hide" and "show"
don't set correctly menu buttons "☐ Stealth" <-> "☑ Stealth"  when collar attach or rez in 'Stealth mode'
2016-11-05 11:19:01 +04:00
WendyStarfall
0fcf59581a ship opencollar 6.4.0 @ 161103.1
http://www.opencollar.at/blog/major-release-opencollar-64
2016-11-05 03:10:30 +01:00
Lotek Ixtar
fe2bf0f32e Use osIsUUID() 2016-11-04 19:48:27 +01:00
Lotek Ixtar
2913ee8c4e Merge remote-tracking branch 'upstream/master' into oscollar6
Conflicts:
	README.md
	src/ao/oc_ao.lsl
	src/collar/oc_anim.lsl
	src/collar/oc_couples.lsl
	src/collar/oc_leash.lsl
	src/collar/oc_meshlabel.lsl
	src/collar/oc_relay.lsl
	src/collar/oc_sys.lsl
2016-11-04 18:41:32 +01:00
WendyStarfall
4b9ef797ba this is opencollar six! 2016-11-03 02:17:23 +01:00
GarvinTwine
1084f2ba2f fixed: rm pose animation name to work with spaces in the name 2016-11-03 07:23:40 +07:00
WendyStarfall
fdc8f40ca0 build opencollar 6.4.0 @ 161031.1 🎃 2016-10-31 05:24:39 +01:00
WendyStarfall
705ef0eadf build opencollar remote 6.4.0 @ 161031.1 2016-10-31 05:23:41 +01:00
WendyStarfall
fa7950e1ed update urls 2016-10-31 05:18:27 +01:00
GarvinTwine
ac5ae35f5c Add Labelbase logic here, too 2016-10-30 10:42:45 +07:00
WendyStarfall
c5b7399d66 build legacy apps @ October 29, 2016
Legacy Badwords v1.3
Legacy Camera v1.3
Legacy RLV Stuff v1.1
Legacy Timer v1.3
Legacy Un/dress v1.3
2016-10-29 21:23:41 +02:00
WendyStarfall
fdb47f120f build opencollar remote 6.4.0 @ 161029.1 2016-10-29 20:47:33 +02:00
WendyStarfall
75a1ef9a3b build opencollar ao 6.4.0 @ 161029.1 2016-10-29 20:36:20 +02:00
WendyStarfall
d3e32ea81b build installer 6.4.0 @ 161029.1 2016-10-29 20:35:51 +02:00
WendyStarfall
8d37caefa7 build collar lead @ 161029.2 2016-10-29 20:17:15 +02:00
WendyStarfall
6eb92857bb build ao loader 1.0 @ 161029.2 2016-10-29 20:15:41 +02:00
WendyStarfall
b832388bb5 build ao link 4.7 @ 161029.2 2016-10-29 20:15:22 +02:00
WendyStarfall
cfe0bc4f49 fix problem with server erroneously returning key
if deleting a script from an object's content the sl server might in
some cases still have the script running even though it is already
"gone" and we end up with some really funky stuff, such as receiving
keys instead of names; for us that's a concern because this happens
arbitrarily during patch installs or when migrating from one branch of
the script set to another; by testing if our name is actually a key we
can solve this problem; I believe this losely relates to issues like
https://jira.secondlife.com/browse/SCR-118 (this was just the first I
found through the search)

the failsafe function is also made more nerd-cool, for readability
concerns we have the vanilla variation in our history;

finally I'm ridding of a tonne of OMG-whitespace, yes, I realize we live
in the aeon of ginormous and speedy data storage but not so on sl where
we indeed dwell as low-tech grunge nekos in a time-bubble that really is
a franken-mix of everything you hated about the 80s and kind-a-loved
about the early 90s: tl;dr - file size matters - all OMG-whitespace have
been eated :3
2016-10-29 19:10:43 +02:00
WendyStarfall
6276bb43c9 update help card
included with opencollar 6.4.0 @ 161026.n
2016-10-27 03:37:52 +02:00
WendyStarfall
079190a9ea build opencollar 6.4.0 @ 161026.1 2016-10-26 09:46:39 +02:00
WendyStarfall
6dbfc9ea44 use this only for debugging
we have a nicer and more informative .info print now on completion
2016-10-26 09:46:15 +02:00
WendyStarfall
4dd8a86417 update news notify
this adds a little info so we tell each news how to unsubscribe, it also
doesn't display the timestamp anymore, thanks @GarvinTwine
2016-10-26 09:15:29 +02:00
WendyStarfall
9a2ab16028 add emergency news feature
Yay! Now we are ready for asteroids and the zombie apocalypse!

@GarvinTwine coded this for us 🎉
2016-10-26 09:09:46 +02:00
WendyStarfall
4ecbeebf16 make things tidy; don't duplicate function calls 2016-10-26 09:05:50 +02:00
WendyStarfall
b7b67bc42a the opencollar six role play device
update names to opencollar six
update upstream url reference
update contact url
2016-10-26 08:54:35 +02:00
WendyStarfall
cc05c05b08 create attn 2016-10-26 08:47:52 +02:00
WendyStarfall
d236629854 Merge pull request #997 from VirtualDisgrace/GarvinTwine-patch-com
Add a check for scriptstate of the relay
2016-10-25 07:11:15 +02:00
GarvinTwine
23e1dbe0fb Add a check for scriptstate of the relay
Set the oc_relay script to running on reboot command, in case it was stopped.
#994
2016-10-25 12:09:20 +07:00
WendyStarfall
6c894fe354 Merge pull request #996 from VirtualDisgrace/GarvinTwine-patch-sys
merge UpdateGlow into one function
2016-10-25 07:04:38 +02:00
GarvinTwine
6783491742 merge UpdateGlow into one function
saves about 1kb memory, yeah!
2016-10-25 12:02:26 +07:00
WendyStarfall
9e47fd3c38 add note 2016-10-25 06:55:25 +02:00
WendyStarfall
3e573af672 update notifies and particle texture
add strings for version and supported AOs
add a perm check for self compiler
add urls
2016-10-25 06:54:58 +02:00
WendyStarfall
0cb4643f39 build legacy apps @ October 24, 2016 2016-10-25 06:38:42 +02:00
WendyStarfall
49dcd55168 build opencollar ao 6.4.0 @ 161024.1 2016-10-25 06:18:15 +02:00
WendyStarfall
2b9a0fad98 build opencollar remote 6.4.0 @ 161024.1 2016-10-25 05:55:10 +02:00
WendyStarfall
ff198876ce build collar lead @ 161024.1
#992
2016-10-25 05:47:37 +02:00
WendyStarfall
23ea07195a build opencollar 6.4.0 @ 161024.1 2016-10-25 05:38:20 +02:00
WendyStarfall
1888070fbb add failsafe for builders
this prevents two common build mistakes; first it ensures that the
script has the correct perms and won't accidentally become immutable
when passed on; second it requires scripts to be named correctly so to
prevent duplicates that could otherwise happen during updates; with this
in place installers/updaters can now also be effectively used to
"repair" collars; by @GarvinTwine and me
2016-10-25 05:27:43 +02:00
WendyStarfall
c1bf8abfdf Merge pull request #993 from VirtualDisgrace/GarvinTwine-patch-lead
announces itself to all subs nearby now
2016-10-24 06:51:57 +02:00
GarvinTwine
01104309c5 announces itself to all subs nearby now
and not only the last ones leashed
#992
2016-10-24 11:00:19 +07:00
WendyStarfall
8e18d56d3d Revert "Update oc_com.lsl"
This reverts commit 4c97ccf970.
2016-10-24 05:47:18 +02:00
WendyStarfall
9116689e85 fix pass and anchor logic
#979
2016-10-19 22:08:31 +02:00
GarvinTwine
4c97ccf970 Update oc_com.lsl
Add a lead command to disable/enable LM protocol
2016-10-19 21:38:14 +07:00
GarvinTwine
723421f199 aoloader v1.0
A little utility for the OpenCollar AO that allows a quick and easy way to load animation sets from existing AOs into the OpenCollar AO. Including the configuration notecard and used animations, creating a new "Wildcard" config in the OpenCollar AO (or it can be renamed to what ever one wants the set to be by renaming the config card).
In this version Oraculs AOs are supported and as choices the first SETs with 125,155,185 or 215 in their name.
2016-10-19 10:09:22 +07:00
WendyStarfall
0ea57932ca create empty canvas for ao loader 2016-10-19 03:38:27 +02:00
WendyStarfall
f95330cb15 build opencollar ao 6.3.0 @ 161019.1 2016-10-19 02:37:20 +02:00
WendyStarfall
76b462474a update headline
this is opencollar six <3
2016-10-19 02:01:22 +02:00
GarvinTwine
27aa0fe74b add support for load commands 2016-10-19 06:53:15 +07:00
WendyStarfall
8e1fe3850f build opencollar 6.4.0 @ 161018.2
#984
#988
2016-10-18 15:43:17 +02:00
GarvinTwine
4a7695146c add option to send more commands to the AO 2016-10-18 14:59:55 +07:00
WendyStarfall
875cf2f43a add weblink 2016-10-18 09:19:14 +02:00
GarvinTwine
f729bb13a9 add post command to match web and help file 2016-10-18 12:46:06 +07:00
WendyStarfall
fe1da66c34 don't list supplementary poses in remove menu
update prompts and notifies for removing poses

#988
2016-10-17 17:28:19 +02:00
WendyStarfall
949b5bf7c6 update notifies for moving poses
#988
2016-10-17 17:26:38 +02:00
WendyStarfall
5f78211d6a add short blurb on how to install the script
add function to ensure the script is with full permissions

#984
2016-10-17 09:38:46 +02:00
lickx
f029d7bd81 Disable resize, but keep pos/rot 2016-10-16 21:14:46 +02:00
lickx
9c83b64b52 OpenSim port 2016-10-16 21:14:26 +02:00
WendyStarfall
cc1125aafe Merge pull request #990 from VirtualDisgrace/GarvinTwine-anims
Add a rm pose command
2016-10-16 06:08:56 +02:00
WendyStarfall
339217e776 Merge pull request #989 from VirtualDisgrace/GarvinTwine-patch-2
add a "mv anims" command
2016-10-16 06:08:48 +02:00
GarvinTwine
c5b98e5dd6 Add a rm pose command
for #988
Add a rm pose <posename command.
Add a refresh poseList (because the change event misses inventory changes when done by scripts!)
clean up old commented code
clean up no more use HieghtScalars code
2016-10-16 10:50:04 +07:00
GarvinTwine
b4c3abbc7f add a "mv anims" command
Add a command to move animation from root to animator prim
call the anim script to refresh its list when done
#988
2016-10-16 10:45:29 +07:00
WendyStarfall
9b076359bd update commands and notifies
#984
2016-10-16 01:17:53 +02:00
WendyStarfall
7e2bec1c40 make ao link aware of mvp and legacy sub aos
- update name in say function
- update notify some text

#984
2016-10-15 14:06:18 +02:00
WendyStarfall
cd69bcf875 Merge pull request #987 from VirtualDisgrace/GarvinTwine-patch-1
Update .aolink.lsl
2016-10-15 12:41:49 +02:00
GarvinTwine
ea497ee0b2 Update .aolink.lsl
script checks for other aolink scripts and only the newest stays
Removed "fake" zhao menu
added command for debug mode
new Say() function to talk as script and not as AO
general cosmetic changes 
#984
2016-10-15 17:20:26 +07:00
WendyStarfall
5be46886d0 add basic command to check version + ...
... basic "rm" command to remove the script

Versioning here is really simple:

If the functionality changes we increment the first number, if we add
new compatibility or fix stuff we increment the decimal and if we
reached 10 decimals, we increment the whole/first number.

Keep this simple for users, as in decimal "something is fixed/added"
first number "ok, something important has changed".

The version I put is in accordance with that system.

#984
2016-10-14 20:38:06 +02:00
WendyStarfall
d0c41ff68f use bitwise 'and' at 285 and comparison at 138
also add url to the source

#984
2016-10-14 19:57:09 +02:00
WendyStarfall
da384c7149 necromance some legacy concepts on taking controls
This is more or less Medea's legacy method to make it possible that
walks are overridden when AOs are "paused" so to say.

That means when the collar plays a pose, the AO is turned off, but the
script understands it as a "pause" and watches for input from the user
on arrow and WASD keys.

Once those are pressed, the AO comes back to life and correctly
overrides the walk rather than having the avatar slide on her knees.

There are some reasons to not to do this but taking into consideration
that this utility already goes into ZHAOII based AOs and that it's
almost three years later and we didn't get any fancier means/tools in
the LSL language to tackle that in more nerd-cool ways, I'm strongly
convinced that this is significantly more user friendly than AntiSlide
because unlike with client-side AOs, we don't need AntiSlide in this
case and can lift some complexity off the user's shoulder by making
things "just work".

#984
2016-10-14 19:36:29 +02:00
WendyStarfall
7ee9189b3d use shorter name with a dot in front
to bop the script to the top of object contents in AOs
2016-10-14 18:52:35 +02:00
WendyStarfall
7b0e4b3160 compress header; make space
Right. We will need a bit more space there to be able to put a better
step-by-step guide on adding this script. I think the script name is
also not ideal to be dropped into an object with large amounts of
content.

I'm going to rename it with a dot in front so it will bop to top in
object contents.
2016-10-14 18:42:09 +02:00
WendyStarfall
e6be690968 add missing author @stawberri
#984
2016-10-14 14:09:34 +02:00
WendyStarfall
fc0cbc0c53 re-add logic to turn antislide off
this time regardless of AO type
thanks @GarvinTwine
#984
2016-10-14 14:05:27 +02:00
WendyStarfall
3fa01cbc1b Merge pull request #986 from VirtualDisgrace/alt.aolink
remove logic for server side AO vs. AntiSlide
2016-10-14 13:28:05 +02:00
lickx
5332287bff Merge remote-tracking branch 'refs/remotes/origin/master' into oscollar6
# Conflicts:
#	src/collar/oc_leash.lsl
2016-10-14 10:12:22 +02:00
lickx
0ce40de42e Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master'
# Conflicts:
#	src/collar/oc_rlvsys.lsl
2016-10-14 08:19:48 +02:00
lickx
d3f5d0e236 Add settings card saving through menu 2016-10-14 07:58:58 +02:00
lickx
117de2820b OpenSim compatibility
The updater doesn't work yet
2016-10-14 07:02:31 +02:00
WendyStarfall
8bee886130 Merge pull request #985 from RomkaSwallowtail/patch-3
Update oc_shocker.lsl
2016-10-14 05:23:05 +02:00
Romka
3e7fcaef4f Update oc_shocker.lsl
fix ParseAnimList endless loop
2016-10-13 23:25:33 +04:00
WendyStarfall
8e3b7ec3f9 remove logic for server side AO vs. AntiSlide 2016-10-13 12:47:45 +02:00
WendyStarfall
5aa9655737 build opencollar 6.3.3 @ 161013.4
In case anyone is wondering about the many build commits today:

We need those to signalize that the "compiled" build we have in-world,
is the same as the one in the history up to the particular buid commit.

#970
2016-10-13 10:22:46 +02:00
WendyStarfall
c9f1f4ce13 remove logic that checks for other installers
#970
2016-10-13 10:05:30 +02:00
WendyStarfall
549fbda0fb build opencollar 6.3.3 @ 161013.3
#970
2016-10-13 08:45:08 +02:00
WendyStarfall
1d823a5082 don't bother the user with init notifies
#970
2016-10-13 04:53:12 +02:00
WendyStarfall
c8f0c00a72 build opencollar 6.3.3 @ 161013.2
#982 #983
2016-10-13 04:12:29 +02:00
GarvinTwine
676e7aa731 add LINK_AUTH and use it for menuto command
somehow in menuto the 4.0 fixed value for LinkMessage remained, fixed here
2016-10-13 06:45:37 +07:00
GarvinTwine
279c463599 refresh g_sObjectName with notecard value 2016-10-13 06:42:26 +07:00
WendyStarfall
178830b3e0 build opencollar 6.3.2 @ 161013.1
#970 #972 #974 #979
2016-10-13 01:38:41 +02:00
WendyStarfall
3dbdeb2e1c Merge pull request #981 from VirtualDisgrace/GarvinTwine-patch-1
remove doubled unclear legacy command "leashto"
2016-10-11 08:42:50 +02:00
GarvinTwine
64526a3c62 add intern_hover and intern_standhover to g_lDeprecatedSettingTokens 2016-10-11 13:38:32 +07:00
GarvinTwine
f499d36691 change hover token from intern_ to offset_ 2016-10-11 13:35:54 +07:00
GarvinTwine
03db902246 wrap commands for pass and anchor together
clean up deprecated  commented code for easier readability 
more details here #979
2016-10-10 12:38:02 +07:00
GarvinTwine
0daa8cae84 remove doubled unclear legacy command "leashto" 2016-10-09 21:03:49 +07:00
GarvinTwine
b13e26feb0 Merge pull request #978 from stawberri/oc_anim-intern-typo
Fix typo preventing intern setting responses from being read
2016-10-08 10:27:27 +07:00
Pudding
0495c0aa7e Fix typo preventing intern setting responses from being read 2016-10-06 05:11:00 -07:00
GarvinTwine
f13c0fe7c1 Merge pull request #975 from VirtualDisgrace/GarvinTwine-patch-1
check on rez for other installers
2016-10-03 17:16:05 +07:00
WendyStarfall
1d00a4f04b obsess over typos in debug notifies 2016-10-03 12:00:50 +02:00
GarvinTwine
937ea5830d Update oc_installer_sys.lsl 2016-10-03 09:56:25 +07:00
WendyStarfall
18cd1f223e update chat notifies
as requested by @GarvinTwine
2016-10-02 18:39:06 +02:00
GarvinTwine
fc85093f70 check on rez for other installers
and dont allow installations to initiate when one is found.
#970
2016-10-02 21:13:46 +07:00
GarvinTwine
cea7685170 Merge pull request #971 from stawberri/allow-spaces-around-safeword
Perform an additional operation on safewords to trim spaces
2016-10-02 17:46:36 +07:00
WendyStarfall
f5d8d2afcd Merge pull request #973 from GarvinTwine/patch-7
change the check for existing restrictions when trying to add a new one
2016-10-02 12:04:09 +02:00
GarvinTwine
606f493fe8 changed the string check to a single llSubStringIndex
As @stawberri suggested :)
2016-10-02 14:59:50 +07:00
Pudding
8b0f9b6ab4 Just trim OOC messages specifically 2016-10-01 15:51:52 -07:00
GarvinTwine
891fc1f519 change the check for existing restrictions when trying to add a new one
issue #972
2016-10-01 19:39:07 +07:00
Pudding
8d37068427 Perform an additional operation on safewords to trim spaces 2016-10-01 02:16:14 -07:00
lickx
14f3658aa6 Merge pull request #15 from lickx/newoutfits
Changes as suggested in #14
2016-09-30 16:31:40 +02:00
lickx
5f06f26340 Disable update check
This ZHAO version is the final version
2016-09-30 16:07:59 +02:00
lickx
b01e419427 Add logo, also on AO button 2016-09-30 16:03:46 +02:00
WendyStarfall
876b83ee70 Merge pull request #969 from stawberri/aolink-akeyo-nitro
Add basic aolink support for AKEYO NITRO AOs
2016-09-29 03:15:14 +02:00
Pudding
d2986b6c1e Add basic aolink support for AKEYO NITRO AOs 2016-09-28 17:52:44 -07:00
lickx
cd0e0879db Allow subdividing outfits to support smartstrip
Outfit will be immediately worn when chosen
Outfits folder is now single-tier
2016-09-28 21:19:06 +02:00
lickx
66dfc3ecd2 Remove RLVa dependency
Changes in the shared folder:
/.outfits -> /outfits
/.outfits/.core -> /core
2016-09-28 20:59:06 +02:00
lickx
5e4a43eac4 Sound UUID for 808 drop sound (OsGrid) 2016-09-28 12:31:50 +02:00
lickx
81f073c5ea Merge pull request #13 from lickx/zhao_ao
Use legacy zhao AO code for now until OpenSim 0.9 has its first stable release. Closes #11, thanks Wendy
2016-09-28 12:21:58 +02:00
lickx
074f2fc8f0 OpenSim compatibility
Tested and verified on 0.8.3-dev and 0.9 master
2016-09-28 08:17:58 +02:00
lickx
54acc0b0f1 Check out last known zhao AO version
@ commit  3f96f36
2016-09-28 07:24:07 +02:00
lickx
37c848d5b7 Merge remote-tracking branch 'refs/remotes/origin/master' into oscollar6 2016-09-27 14:38:42 +02:00
lickx
53fc60bc54 Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' 2016-09-27 14:37:30 +02:00
WendyStarfall
374babdb5f build opencollar 6.3.1 @ 160927.1 2016-09-27 08:35:26 +02:00
WendyStarfall
e87c770913 build opencollar ao 6.2.0 @ 160927.1
#962
2016-09-27 08:34:47 +02:00
lickx
11030fc396 Merge remote-tracking branch 'refs/remotes/origin/master' into oscollar6
# Conflicts:
#	src/collar/oc_anim.lsl
See also issue #11
2016-09-27 06:19:52 +02:00
lickx
c271bad024 Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' 2016-09-27 05:08:03 +02:00
lickx
095c1b8039 Merge remote-tracking branch 'refs/remotes/origin/master' into oscollar6 2016-09-27 03:49:33 +02:00
lickx
febf93d190 Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' 2016-09-27 03:47:43 +02:00
WendyStarfall
c11cdf9a93 Merge pull request #967 from GarvinTwine/patch-5
Only ResetAnimOverride when Antislide is on
2016-09-26 11:38:59 +02:00
WendyStarfall
ee46c52bcf Merge pull request #968 from GarvinTwine/patch-6
Dont send on every StandOn a antislide off
2016-09-26 11:38:52 +02:00
GarvinTwine
1f64988c6c Dont send on every StandOn a antislide off 2016-09-26 13:42:35 +07:00
GarvinTwine
ff08e89a70 Only ResetAnimOverride when Antislide is on
prevents anim script to stop the AO unintended
some minor changes that make sense
2016-09-26 13:37:43 +07:00
WendyStarfall
aff05dbfa0 Merge pull request #966 from GarvinTwine/patch-4
Add support for multi load page and oracul loader
2016-09-25 18:13:37 +02:00
WendyStarfall
bbe7d1ae6c ship gag 1.3.0 @ 160908.2 2016-09-25 06:38:15 +02:00
WendyStarfall
a3c8c29bfd ship cuffs 2.2.0 @ 160908.2 2016-09-25 06:36:41 +02:00
WendyStarfall
05eb59c951 ship opencollar ao 6.1.5 @ 160924.1 2016-09-25 06:33:39 +02:00
WendyStarfall
2405e7f8ee ship remote 6.1.0 @ 160909.2 2016-09-25 06:30:52 +02:00
GarvinTwine
24325a4397 Add support for multi load page and oracul loader
#962
2016-09-24 21:13:36 +07:00
WendyStarfall
278dc2b7fa build opencollar ao 6.1.5 @ 160924.1
#962
2016-09-24 02:09:14 +02:00
WendyStarfall
0b1fee5c67 Merge pull request #965 from WendyStarfall/ao-patch02
add automatic translation for Oracul/AX/RP configs
2016-09-23 10:07:45 +02:00
WendyStarfall
0ec6e3d9bc don't duplicate state values 2016-09-23 09:32:38 +02:00
WendyStarfall
df4535b252 add Oracul and AX config card separator types 2016-09-23 09:31:53 +02:00
WendyStarfall
47273806b4 list all known Oracul and AX state values 2016-09-23 09:07:17 +02:00
WendyStarfall
4aea65415a list all 22 anim states in translator block 2016-09-23 08:49:56 +02:00
WendyStarfall
4fe5a5d23d Merge pull request #964 from GarvinTwine/patch-3
use else if to translate zaho states
2016-09-21 23:01:01 +02:00
GarvinTwine
7c0e1f3a19 use else if to translate zaho states 2016-09-21 07:18:16 +07:00
WendyStarfall
d43db187f5 Merge pull request #963 from WendyStarfall/ao-patch01
translate common zhao animation states
2016-09-20 20:25:15 +02:00
WendyStarfall
6de4ae4828 translate common zhao animation states
#962
2016-09-20 20:24:00 +02:00
lickx
8f955392fe Reset scripts on ownership change 2016-09-20 05:12:21 +02:00
WendyStarfall
834fe92a1b update web snippets
- edit update print
- update version to current
- remove redundant hc ticker
- adjust list to actively distributing keys only

note to future maintainers: keys should only ever be added when they are
actually being made use of by corresponding groups or avatars
2016-09-20 05:03:58 +02:00
lickx
eb77059c8c Fixes me getting notified after collar getting bought from vendor 2016-09-19 10:11:56 +02:00
lickx
e678f91b39 Remove more links in llDialogs 2016-09-19 05:49:41 +02:00
lickx
c3da86d4db Remove hyperlinks in llDialog
I really like the idea, but not if it only works in Firestorm or v3
viewers
2016-09-19 05:07:09 +02:00
Lotek Ixtar
25d2677870 Update README.md 2016-09-16 12:31:49 +02:00
Lotek Ixtar
2024315478 Update README.md 2016-09-14 20:36:03 +02:00
lickx
48a628d4e8 Merge remote-tracking branch 'refs/remotes/origin/master' into oscollar6 2016-09-13 17:28:35 +02:00
lickx
582a06f7eb Merge remote-tracking branch 'refs/remotes/VirtualDisgrace/master' 2016-09-13 17:07:35 +02:00
lickx
98e71ce00d Fall back on PRIM_BUMP_SHINY on OpenSim
PRIM_SPECULAR throws errors even in OpenSim master and is unlikely to be
backported to 0.8 anyway
2016-09-13 10:46:11 +02:00
Lotek Ixtar
fc2ea706d4 Update hypergrid location + instructions 2016-09-12 16:14:30 +02:00
lickx
d5ae20804c Alternative RLV Suite for SmartStrip use
Allows outfits to be partially stripped (it's a trap!) when having
SmartStrip enabled. You will need to subfolder each outfit with folders
like 'jacket' or 'boots' with a clothing or dummy clothing layer in it
and anything that needs to come off at the same time (like sculpt
cuffs/collar etc). Old school FTW, I use/prefer this myself over the
factory OC outfits system.
2016-09-12 15:42:11 +02:00
lickx
eaf32a598a Fixes #9 for oscollar6 branch 2016-09-12 11:11:55 +02:00
lickx
db698c5b64 OpenSim UUIDs for leash textures (OsGrid) 2016-09-11 21:39:51 +02:00
lickx
e3833995f3 OpenSim UUIDs for fonts (OsGrid) 2016-09-11 21:39:36 +02:00
lickx
ef75dcac8b Start with an empty list 2016-09-11 21:38:08 +02:00
lickx
9dc69630d6 Finally fix a lot of problems with the leash (closes issue #4)
llMinEventDelay(0.44) was causing all the leash debugging headaches.
When this LSL call was used, oc_leash would only receive link_messages
at certain time intervals anymore after being leashed (post-sensor).
Removing this LSL call also allows for the leash menu to be called from
the main menu again without resorting to hacks (g_lMenuIDs would be
empty)
2016-09-11 21:18:33 +02:00
lickx
391f5d4732 Sync with upstream 2016-08-17 08:57:22 +02:00
lickx
be9daf5bc9 Syntax fix + Bell 2016-08-17 08:37:34 +02:00
lickx
7fb40cd0fb osIsUUID 2016-08-16 19:06:27 +02:00
WendyStarfall
7a2bfebbad build opencollar 6.3.0 @ 160809.1
#941 #942 #943 #944 #948 #955 #956
2016-08-09 11:39:03 +02:00
WendyStarfall
b7a85e924a clear news 2016-08-09 11:37:13 +02:00
WendyStarfall
0a11cc1ef6 Merge pull request #957 from GarvinTwine/patch-2
Dont turn AOs on on detach
2016-08-09 09:21:20 +02:00
GarvinTwine
6812a0f5e8 Dont turn AOs on on detach
#955
2016-08-09 14:20:07 +07:00
WendyStarfall
ca2b5a866e build opencollar 6.3.0 @ 160808.1
#941 #942 #943 #944 #948
2016-08-08 19:49:16 +02:00
WendyStarfall
c765adc319 update sample settings and link 2016-08-08 19:44:26 +02:00
WendyStarfall
dd44e9aa78 list textures in alphabetical order
#948
2016-08-08 05:30:20 +02:00
WendyStarfall
6721209456 Merge pull request #954 from GarvinTwine/patch-1
Change the Notify for runaway command (menu button) for non-wearers
2016-08-08 03:32:36 +02:00
WendyStarfall
3210ed39ec save some more memory
The *Touch* feature is commented. If anyone wants to use it, simply add
"*Touch*" as a menu item in the button list at 241 and adjust lines 578
to 586.

I'm also changing the naming to themes which I believe makes more sense
at this point.

#944 #953 #948
2016-08-08 03:28:42 +02:00
WendyStarfall
58f0bff6dd Merge pull request #953 from RomkaSwallowtail/patch-1
oc_themes.lsl - more optimisations
2016-08-08 03:03:55 +02:00
GarvinTwine
e776cccfce Change the Notify for runaway command (menu button) for non-wearers 2016-08-08 07:52:02 +07:00
Romka
1659ccd302 Update oc_themes.lsl
136, 137: remove unused variables

241: forgot "*Touch*" in Elements menu

337-338: It saves up to 1 KB script memory

540: use constant "global_DeviceType" instead  g_sGlobalToken+"DeviceType"
2016-08-07 17:37:36 +04:00
WendyStarfall
316376bcf8 Merge pull request #952 from RomkaSwallowtail/patch-2
Update oc_themes.lsl
2016-08-07 12:42:12 +02:00
Romka
6508f56ebb Update oc_themes.lsl
I think it is more correct
2016-08-07 13:49:35 +04:00
WendyStarfall
10bb6d7d9e Merge pull request #951 from RomkaSwallowtail/patch-1
oc_themes.lsl - very little optimization?

NOTE: check line 307 for bitmask legend
2016-08-07 07:35:42 +02:00
Romka
69423e383c Update oc_themes.lsl
there is no reason to keep the variables used only once
replace constants
2016-08-07 00:36:26 +04:00
WendyStarfall
c120fdb8f8 Merge pull request #950 from RomkaSwallowtail/RomkaSwallowtail-patch-1
oc_themes.lsl - Wendy has found bug: All the textures list for every element in Looks - Texture menu
2016-08-06 01:02:02 +02:00
Romka
e381f3ac7e Update oc_themes.lsl
I forget about it
2016-08-05 19:34:23 +04:00
Romka
350fe8e13d Update oc_themes.lsl
fix textures list for 'Element~Texture,uuid'
2016-08-05 19:16:13 +04:00
WendyStarfall
0e2f73aa38 Merge pull request #949 from RomkaSwallowtail/RomkaSwallowtail-patch-1
Update oc_themes.lsl
2016-07-30 22:43:37 +02:00
Romka
18989b0d25 Update oc_themes.lsl
It saves a few bytes of memory
2016-07-31 00:13:55 +04:00
WendyStarfall
c5cb32ad10 Merge pull request #947 from RomkaSwallowtail/new-themes
new themes format
2016-07-29 19:11:17 +02:00
WendyStarfall
293455ce36 update url 2016-07-29 06:48:55 +02:00
lickx
9c7e8cab41 Debug 2016-07-22 08:39:13 +02:00
lickx
f1abbb30d3 Use osReplaceString here too 2016-07-22 08:26:30 +02:00
Romka
b6cbe8b0e2 stupid typo 2016-07-20 18:24:28 +04:00
Romka
10765b9d14 new themes format
new attempt new format for .themеs notecard:
ElementName ~ texture=texture_id ~ color=color_vector ~ shiny=shiny_type ~ glow=glow_level

I think it is more convenient, informative and flexible.

Element parameters can be arranged in any order, like:
ElementName ~ color=color_vector ~ texture=texture_id ~ glow=glow_level ~ shiny=shiny_type

Ability to use 2 and more lines for same element, like:
ElementName ~ color=color_vector ~ texture=texture_id
ElementName ~ glow=glow_level ~ shiny=shiny_type

Unnecessary element parameter can be skipped, like:
ElementName ~ texture=texture_id ~ shiny=shiny_type

Also can use ALL for all elements, like:
ALL ~ color=<1,1,1> ~ shiny=medium
ElementName ~ texture=texture_id ~ shiny=hone

(It may be the same method is suitable for particles in .themes?)

PS: old format also can be used for compatibility.
2016-07-20 18:11:02 +04:00
WendyStarfall
0c2f1bd8dd sync with agni
points all web lookups to this master branch
complete re-compile of all scripts on the agni grid
including: ao, collar, remote, all accessory and spares
2016-07-16 08:02:33 +02:00
WendyStarfall
a22a62b5f5 build legacy apps @ July 6, 2016 2016-07-06 07:19:37 +02:00
WendyStarfall
fa483119c5 don't mess with the timer while it is running
This will prevent the user to access the timer, even if set by herself,
while it is already running with prerequisite that she is not authorized
as owner.
2016-07-06 07:09:08 +02:00
WendyStarfall
81251c945e build opencollar ao 6.1.3 @ 160706.1 2016-07-06 06:55:14 +02:00
GarvinTwine
9fd2d9c427 Allow SitAnywhere also when the AO is locked
No reason why SitAnywhere should not be possible when the AO is detach locked.
2016-07-06 11:14:10 +07:00
WendyStarfall
eaaf4ecb68 build opencollar 6.2.5 @ 160703.2
#941
#942
#943
#944
2016-07-03 13:12:16 +02:00
lickx
5cbee3ef49 Merge remote-tracking branch 'refs/remotes/OpenCollar/master' into 6-os
# Conflicts:
#	src/collar/oc_anim.lsl
#	src/collar/oc_leash.lsl
2016-07-03 00:33:17 +02:00
lickx
ac04c1c31a Not OK yet
No leash menu possible after being leashed to an object
2016-07-03 00:11:52 +02:00
lickx
ce134b9dd2 Work around opensim incompatibility for string substitution 2016-07-03 00:10:49 +02:00
lickx
2f939769c1 Opensim bugfix: Don't trigger hug animation on leash
Resolves issue #2
2016-07-03 00:10:06 +02:00
WendyStarfall
357fd29126 update notifies and menus
some of the notifies were not correct and I'm removing the *Touch*
button but keep the logic intact; many assemblies have slightly larger
touch parts now that cover most of the artwork
2016-06-29 06:17:25 +02:00
WendyStarfall
2662b8e38c keep the app even when no bell element is present
in case of the bell, some users expressed they wish to keep the plugin,
even if the accessory they wear has no corresponding element; instead of
simply removing the whole app, we inform the user in a notify that the
artwork has no such visual element; @GarvinTwine did the scripting
2016-06-29 06:07:07 +02:00
lickx
d83da60aea Merge remote-tracking branch 'refs/remotes/origin/master' into 6-os 2016-06-28 16:45:23 +02:00
lickx
8d4c542d9d Merge remote-tracking branch 'refs/remotes/OpenCollar/master'
# Conflicts:
#	src/collar/oc_relay.lsl
#	src/collar/oc_rlvsys.lsl
2016-06-28 16:44:32 +02:00
WendyStarfall
0cd6b30473 don't unseat on pulling when strict mode is true
this is very undesirable behavior when sitting on animated furniture
with strict mode active; if anyone wants this behavior, which is to be
automatically unseated when the leash holder pulls by simply walking
off, please just un-comment line 824
2016-06-26 01:14:42 +02:00
WendyStarfall
6a1e58214c Merge pull request #940 from RomkaSwallowtail/master
Update oc_badwords.lsl
2016-06-23 20:42:17 +02:00
Romka
39648e65c8 Update oc_badwords.lsl
bug: badwords disappear form Apps menu after collar update
2016-06-21 14:24:17 +04:00
WendyStarfall
3058d53278 build opencollar 6.2.2 @ 160621.1 2016-06-21 06:24:20 +02:00
WendyStarfall
723bd21c84 fix typo 2016-06-21 06:15:14 +02:00
WendyStarfall
8bea570ae0 separate tokens with tilde character
Theme tokens have to be separated with the tilde "~" character, similar
to how we do it in settings in general.

NOTE: If a token in the middle of a theme is empty, we use two periods
",," like:

Bolt~5748decc-f629-461c-9a36-a35a221fe21f~,,~low

In this example the Bolt element in the theme has a texture, doesn't
touch the color, has low shine and ignores the glow.
2016-06-21 06:14:54 +02:00
WendyStarfall
96b1922043 build opencollar ao 6.1.2 @ 160529.1 2016-05-29 18:11:47 +02:00
GarvinTwine
091c8d683b Dont turn stands/sits/groundsits on when AO is off
Dont set animstate when anims are choosen but the AO is off issue #939
Dont set SitAnim on AO turn on if SitAnim is turned off
2016-05-29 19:11:27 +07:00
WendyStarfall
d5696b0520 build opencollar ao @ 160528.3 2016-05-29 09:18:05 +02:00
WendyStarfall
af352b3371 build opencollar 6.2.2 @ 160529.1 2016-05-29 09:17:42 +02:00
WendyStarfall
56d0f59116 update notify 2016-05-29 00:52:18 +02:00
WendyStarfall
3d42a1ce11 update notify 2016-05-28 21:21:12 +02:00
WendyStarfall
1ceca9a00f Merge pull request #938 from OpenCollar/AO02
adjust AntiSlide to new ServerSide AO
2016-05-28 05:30:03 +02:00
GarvinTwine
039b332926 adjust AntiSlide to new ServerSide AO
adjust the antiSlide to work "better" with our new server side AO
Dont allow it to be tunred on when a ServerSide AO is actuve
Add a call to the AO and ao_link to turn AntiSlide off when an AO is ServerSide based
2016-05-28 10:19:07 +07:00
WendyStarfall
418fbc1916 Merge pull request #937 from OpenCollar/AO02
turn also turning off for collar anims
2016-05-27 15:25:41 +02:00
GarvinTwine
2d9dc71a60 deny config card with names >23 letters 2016-05-27 19:10:42 +07:00
GarvinTwine
68ff4a35d6 use a function for check of valid json values as we do this now 3 times 2016-05-27 16:59:21 +07:00
GarvinTwine
ad625e42a5 turn also turning off for collar anims
when in a collar animation, turn also possible turn left or right anims off, prevents from standing up when kneeling when you turn left or right with a high prio animation configured
2016-05-27 15:58:58 +07:00
GarvinTwine
1758c998d3 add nofity for clear rlv command 2016-05-26 15:36:18 +07:00
GarvinTwine
21d0b326b9 Delete TestFile 2016-05-25 19:11:38 +07:00
GarvinTwine
c685d64e62 Testting
testing gitKtraken
2016-05-25 19:06:17 +07:00
WendyStarfall
b7edf05911 build opencollar ao 6.1.0 @ 160525.5
:shipit:
2016-05-25 11:36:58 +02:00
WendyStarfall
8c017552c1 Merge pull request #936 from OpenCollar/AO01
remove message when inventory changed
2016-05-25 10:28:38 +02:00
GarvinTwine
8014b883fd remove message when inventory changed 2016-05-25 15:23:57 +07:00
WendyStarfall
daf713631f Merge pull request #935 from OpenCollar/AO01
prevent to turn Sits on when no SitAnimation is loaded.
2016-05-25 10:11:10 +02:00
GarvinTwine
0ee0c85715 prevent to turn Sits on when no SitAnimation is loaded. 2016-05-25 15:06:53 +07:00
WendyStarfall
2e4bea2d4d Merge pull request #934 from OpenCollar/AO01
set sitanim state default on if anim present
2016-05-25 09:48:08 +02:00
GarvinTwine
79bda30586 set sitanim state default on if anim present 2016-05-25 14:46:18 +07:00
WendyStarfall
ef6f57ec2d add lock sound and update menu prompts and notifies 2016-05-25 09:17:07 +02:00
WendyStarfall
6e284a0adf Merge pull request #933 from OpenCollar/AO01
Owners and wearer can (un)lock the AO, unlock of course wearer only if
2016-05-25 03:51:40 +02:00
GarvinTwine
87d3e89592 use predifined JSON_RETURN variables
just saw these are as variables available, so no need to use llEscapeURL functions and save some more bytes
2016-05-23 19:15:18 +07:00
lickx
875d1c7127 Merge remote-tracking branch 'refs/remotes/origin/master' into 6-os
# Conflicts:
#	src/collar/oc_rlvsys.lsl
2016-05-20 08:50:25 +02:00
lickx
25d088d0e2 Merge remote-tracking branch 'upstream/master' 2016-05-20 08:35:08 +02:00
GarvinTwine
76c1f8d2db more error handling for not existing or bad-formed config notecards 2016-05-20 09:13:32 +07:00
GarvinTwine
185df380c5 Changed the Lock to a Detach-Lock only which can be toggled by anyone
who has access to the AO's menu. Which are now, besides the wearer,
Owner and Trusted who use the Collar's command "prefix ao menu".
With this the safeword integration got obsolete as there is no lockout
of the AO anymore and the detach-lock can be toggled at anytime by the
wearer themself.
Fixes:
Readded a previous accidently removed entry from the AnimState list. 
Stop to switch stands when the AO is an StandOff state due to collar
poses.
SitAnywhere gets turned off if a collar pose is issued.
Some minor changes to save memory and make things faster.
2016-05-18 16:37:19 +07:00
GarvinTwine
3382254d0d Owners and wearer can (un)lock the AO, unlock of course wearer only if
not an Owner locked it.
Removed the auto-unlock for collars safeword, not sure if this makes
sense or not here.
2016-05-17 20:52:15 +07:00
WendyStarfall
aae93e1731 Merge pull request #932 from OpenCollar/AO01
Error avoiding:
2016-05-17 10:16:51 +02:00
GarvinTwine
85bc0dcc65 Error providing:
AO off, no menu (but load config) until a config card is loaded.
Only multiple animations for "Standing", "Sitting", "Sitting on Ground"
and "Walking" are loaded, else if more than one added to the config
card, only the first gets saved.

Some minor optimisations to save memory.
2016-05-17 12:32:24 +07:00
GarvinTwine
118733374a Merge pull request #931 from RomkaSwallowtail/patch-2
Great AO Idea! but need small fix :)
2016-05-17 08:43:48 +07:00
WendyStarfall
0f19e5ee76 update readme 2016-05-16 16:09:46 +02:00
Romka
3a8d60f37a Great AO Idea! but need small fix :)
swap stand on / off commands
2016-05-16 17:54:42 +04:00
WendyStarfall
9039d0c1b9 update menu prompts + ...
+ open the collar's main menu rather than the animation menu
2016-05-16 15:48:22 +02:00
WendyStarfall
06f6c78bcf Merge pull request #930 from OpenCollar/AO01
Rewrite of the OpenCollar AO HUD:
2016-05-16 13:32:55 +02:00
GarvinTwine
ee273cbab3 Remove obsolete no more needed scripts 2016-05-16 17:54:31 +07:00
GarvinTwine
5be868da13 Rewrite of the OpenCollar AO HUD:
Fully Server-side AO with added OpenCollar interaction and
authentication for locking. Collar menu can open the AO Menu, Owners can
lock and configure the AO, wearers can also open their collar menu from
inside the AO menu. 
HUD configure options have been fully integrated from the old
oc_ao_options script. For low lag purposes no typing or swimming ao is
included, which allows this AO to work completely without ongoing state
checking and makes it, as it is also only 1 script for everything, most
likely the lowest impact AO of SL these days.
2016-05-16 10:33:32 +07:00
WendyStarfall
a39e57314a Merge pull request #929 from OpenCollar/relay01
fix MinMode for Helpless
2016-05-10 13:29:05 +02:00
GarvinTwine
23025e2dca fix MinMode for Helpless 2016-05-10 18:17:55 +07:00
WendyStarfall
62ca0ed740 build opencollar 6.2.0 @ 160507.1 2016-05-07 13:04:38 +02:00
WendyStarfall
59e9c99c4e standardize couples animation notify 2016-05-07 12:08:36 +02:00
WendyStarfall
df13c81062 build legacy apps @ May 3, 2016
now includes the refurbished rlv stuff as well, these feature can be
found in a menu "Stuff" nested in the RLV category menu; un/dress got a
prettier menu
2016-05-03 17:08:18 +02:00
WendyStarfall
49e624278c build opencollar 6.2.0 @ 160503.1 2016-05-03 17:05:43 +02:00
WendyStarfall
0f1f9dece8 update menu prompts 2016-05-03 13:08:11 +02:00
WendyStarfall
b5dbc995c4 recycle helpmap into formatted menu headlines 2016-05-03 12:36:53 +02:00
WendyStarfall
b3e89dc93b fix linebreaks at punctuation marks 2016-05-03 12:09:15 +02:00
WendyStarfall
53bac405df Merge pull request #928 from OpenCollar/rlvstuff01
remove no more needed sit functions
2016-05-03 12:05:09 +02:00
GarvinTwine
c2a9d9e961 remove no more needed sit functions
collect menus in one "Stuff" menu to keep the RLV Main menu one sided.
2016-05-03 17:01:59 +07:00
WendyStarfall
4e821e8107 build opencollar 6.2.0 @ 160423.1
#925
2016-04-23 07:50:48 +02:00
WendyStarfall
5a958e53c1 >:)
#909
2016-04-23 05:45:10 +02:00
WendyStarfall
e74c638fca update safeword notify and button
#925
2016-04-23 05:44:24 +02:00
WendyStarfall
0d2e893f64 make global safeword also unseat the avatar
#925
2016-04-23 03:08:01 +02:00
WendyStarfall
373dabc44b update notify and prompt formatting
We also can't use %PREFIX% and related placeholders in RelayNotify so I
reworded the message in question slightly. When clicking "sources" or
using the "show restrictions" command, we don't end up with a massive
text wall now. #925
2016-04-23 00:33:41 +02:00
WendyStarfall
90733638cf build opencollar 6.2.0 @ 160420.2 2016-04-20 20:54:06 +02:00
WendyStarfall
ecbdc6e98a update help card 2016-04-20 20:40:32 +02:00
WendyStarfall
5732726f36 build opencollar 6.2.0 @ 160420.1 2016-04-20 08:52:12 +02:00
WendyStarfall
5693e87c98 update help card 2016-04-20 08:43:12 +02:00
WendyStarfall
fd773b697f update help card 2016-04-20 08:41:21 +02:00
WendyStarfall
cb6982683c update url and version stamp 2016-04-20 08:30:24 +02:00
WendyStarfall
6014a0e8f9 Merge pull request #923 from VirtualDisgrace/feature_relay
The final sixified relay plugin.
2016-04-20 07:58:50 +02:00
WendyStarfall
8f7cbb71c7 sixify relay plugin
This is the sixified relay plugin (aka "Das Relais") from the Virtual
Disgrace fork. It also has the standard formatting like all other
OpenCollar Six scripts and received a major cosmetic overhaul for the
menu which should now be a lot more user friendly. The "Min Mode"
feature that raised so many questions from users is now automated,
meaning if a higher ranked avatar set something, the wearer can't set it
"lower". Chat notifies offer a bit more info for options and
"helplessness" will reveal or hide the safeword button along with
disabling it if the user chooses to. Relay things are also "spoken by
the relay" so to reflect better than relay and collar while in this
working together, are really two separate things. If the user doesn't
want the relay, she can simply uninstall it with "prefix rm relay".
Documentation will be added on the website, smartstrip "dummy layers"
will provided embedded with the readme in-world.
2016-04-20 07:48:23 +02:00
WendyStarfall
ac5605f8a1 rm obsolete readme
http://www.opencollar.at/relay-plugin.html
2016-04-20 07:28:55 +02:00
WendyStarfall
c4f2b30f2b prepare derivative base for relay
I'm moving the relay file to the collar directory and then merge the
"Das Relais" Virtual Disgrace derivative mod on top of it. 6.2.0 will
have it included by default as simply the "Relay".
2016-04-20 07:26:03 +02:00
lickx
1758ea1510 Merge branch 'master' into 6-os 2016-04-19 18:51:14 +02:00
lickx
c21aad6834 Merge remote-tracking branch 'upstream/master' 2016-04-19 18:48:03 +02:00
lickx
beed4347e8 merge remote tracking
# conflicts: oc_anim.lsl
2016-04-19 18:44:02 +02:00
WendyStarfall
378439b369 Merge pull request #921 from RomkaSwallowtail/patch-1
oc_com.lsl  - don't send to g_iInterfaceChannel "OpenCollar=Yes" on attach()
2016-04-18 15:33:07 +02:00
Romka
a53c6bb9ea Update oc_com.lsl
don't send to g_iInterfaceChannel "OpenCollar=Yes" on attach()

if srcipt reset on_rez(), attach event don't execute when collar attached.
so, lines 376 - 380 makes no sense.

also part of this code has is state_entry()
then transfer llRegionSayTo(g_kWearer, g_iInterfaceChannel, "OpenCollar=Yes"); to the same place
2016-04-18 16:52:17 +04:00
WendyStarfall
0feec71490 build opencollar 6.1.5 @ 160418.3 2016-04-18 02:25:34 +02:00
WendyStarfall
8b2dd23b93 update help card
with flavor and info commands
2016-04-18 02:23:54 +02:00
WendyStarfall
553bfe377e update urls
same license but the "live" variation as blob so we have a verbatim copy
of what's in-world at the time to link sections if necessary at all
2016-04-18 01:56:49 +02:00
WendyStarfall
4e2cf6a1f3 add world api url
this is useful for place, resident and group when uri namespace won't
work

http://wiki.secondlife.com/wiki/World_API
2016-04-18 01:54:42 +02:00
WendyStarfall
843c0050e4 standardize themes card 2016-04-18 01:46:57 +02:00
WendyStarfall
fdad331da8 give better info when scripts can't start up
this happens with permission faults, unfortunately only the last avatar
before the current recipient can repair those so it is only fair to
inform the user
2016-04-18 01:27:43 +02:00
WendyStarfall
5435d9e1ed build opencollar 6.1.5 @ 160413.1 2016-04-13 18:41:55 +02:00
GarvinTwine
31e6434ee9 fixed: menu prompt did not show if "stay" was issued while leashed 2016-04-13 20:38:32 +07:00
WendyStarfall
08495395f1 Merge pull request #920 from OpenCollar/auth-nofity01
notify also collar wearer of changes for group and public access.
2016-04-13 15:12:04 +02:00
WendyStarfall
947d50caf8 update menu prompts and notifies
The menu prompt now tells where the wearer is leashed to or who they
follow and if they are forbidden to move or can move freely. Notifies
have been adjusted as well and "Yank" gives a re-menu.

@GarvinTwine helped me with this task.
2016-04-13 15:07:07 +02:00
GarvinTwine
0c3ccf5bf3 notify also collar wearer of changes for group and public access. 2016-04-13 18:28:02 +07:00
WendyStarfall
01682e7909 remove some cruft 2016-04-13 13:11:05 +02:00
lickx
007288af21 Merge remote-tracking branch 'upstream/master' 2016-04-13 12:28:15 +02:00
WendyStarfall
e76c28d252 Merge branch 'master' of https://github.com/OpenCollar/opencollar 2016-04-13 12:21:26 +02:00
WendyStarfall
63f266465a update "capture me" notifies
So they will inform about the device type rather than "neck" because we
also have facial piercings and such. I also added information how to
turn the "capture me" announcements off once risky was activated.

(I think this was my 1000th commit on this branch.)
2016-04-13 12:21:17 +02:00
lickx
d6da7c0326 Merge pull request #3 from lickx/6-os-leash
Fix for issue #1
2016-04-13 12:02:51 +02:00
WendyStarfall
4c69dc31ec Merge pull request #919 from OpenCollar/label01
fix missguided notifies ;)
2016-04-13 11:30:49 +02:00
GarvinTwine
ea7ca01a48 fix missguided notifies ;) 2016-04-13 16:24:23 +07:00
WendyStarfall
8a72bb1a6b add space
Some notifies provide hints on chat commands. These were formatted to
look like "/1we command". However, if the user's prefix was a number
this would be wrong, so I added a space to all these hints.

Examples: "/2 we menu"; "/1 777 rlv off"; "5 23 skidoo" etc..
2016-04-13 11:14:10 +02:00
WendyStarfall
20acfae4f1 update checkboxes, menu prompts and empty buttons
I swapped most of the "ballot box with x" for a "ballot box with check",
in many cases the "ballot box with x" is used now as "radio buttons" but
it can also be just where it is visually more appealing to alternate the
two types.

Then I also changed the "empty buttons" to a button with a hyphen to
resemble more of an empty socket rather than a blank button which seems
to have made a less confusing impression on those users who gave active
feedback on that minor detail.

The Settings menu prompt is clear now, I think it is best if the man
page for this part of the device is read rather than half-baked info in
the menu prompt. Menu prompts aren't manual pages. 🙊
2016-04-13 09:28:21 +02:00
WendyStarfall
3dd2ce3d36 build opencollar 6.1.5 @ 160412.1
#913 #914 #915 #916
2016-04-12 23:13:43 +02:00
WendyStarfall
1b7adbe9c5 Merge pull request #918 from OpenCollar/sys_glowlock
Saving and restoring glow settings for lock elments.
2016-04-12 08:08:15 +02:00
GarvinTwine
ea8da90c20 Saving and restoring glow settings for lock elments.
issue #916
2016-04-12 12:38:43 +07:00
WendyStarfall
c662c952b7 Merge pull request #911 from OpenCollar/looks+themes01
Looks+themes01
2016-04-11 19:38:31 +02:00
WendyStarfall
1a83823150 Merge pull request #910 from OpenCollar/outfits-rlv01
give notify that the outfit feature does not work with RLV (only RLVa)
2016-04-11 19:02:52 +02:00
WendyStarfall
6b1ad1126a Merge pull request #912 from OpenCollar/heightanims01
Use RLVs to adjust pose heights!
2016-04-11 18:44:46 +02:00
GarvinTwine
56c00ff56c give notify that the outfit feature does not work with RLV (only RLVa)
and to use #folders instead
2016-04-11 14:39:21 +07:00
GarvinTwine
a4cb4a9a7b Use RLVs to adjust pose heights!
Added up and down arrows if RLVa is detected for poses to adjust the
hover height for each pose.
A general hover height can be set without any pose playing which then
will be the one switched back to after a pose's height was adjusted.
settings switch to turn the feature off and set the increment for
up/down:
INTERN=AllowHover~0,0.01
where allowed is 0 or 1 and any sensible float for the increment, if no
float is set, the default of 0.02 will be used.
2016-04-11 14:37:27 +07:00
GarvinTwine
d9d364dfa5 switch [back] and remenus if the [Themes] menu is embedded on the
settings or looks menu
make themes faster!
Add a stride to the themes list to jump directly to the right notecard
line when applying a selected themes (can save up to 30 seconds in a
non-lagged sim!)
2016-04-11 14:33:17 +07:00
GarvinTwine
02365e66fd add a settings switch to show [Looks] or [Themes] in the settings menu 2016-04-11 14:30:45 +07:00
lickx
19337124f4 Possible fix for issue #1 2016-04-11 07:21:25 +02:00
lickx
4b99fa3a56 Add OpenSim note to project readme 2016-04-10 16:33:48 +02:00
lickx
83c8207467 Opensim 2016-04-10 16:02:21 +02:00
lickx
525ab7d428 Merge remote-tracking branch 'refs/remotes/origin/master' into 6-os
# Conflicts:
#	src/collar/oc_settings.lsl
2016-04-10 15:52:58 +02:00
lickx
ac5a95ed87 Merge remote-tracking branch 'refs/remotes/origin/master' into 6-os 2016-04-10 15:40:34 +02:00
lickx
967b841271 Merge remote-tracking branch 'refs/remotes/OpenCollar/master' 2016-04-10 15:35:28 +02:00
lickx
4f736cd632 Merge remote-tracking branch 'refs/remotes/OpenCollar/master' 2016-04-10 15:29:36 +02:00
WendyStarfall
154423e09c build opencollar 6.1.4 @ 160409.2
#889 #901 #902 #903 #904 #905 #906 #909
2016-04-09 21:02:12 +02:00
WendyStarfall
cff40b5a89 update flavor notify II
#909
2016-04-09 20:58:11 +02:00
WendyStarfall
d17722df78 update flavor notify
#909
2016-04-09 20:57:22 +02:00
WendyStarfall
5cba946ba0 Merge pull request #907 from OpenCollar/leash01
dont delete leashedto settings on rez! (this only didnt bother yet
2016-04-08 11:32:50 +02:00
WendyStarfall
b7ab3b2669 Merge pull request #908 from OpenCollar/auth-flavor01
allow users to set their own "flavor" for their own tastes how they like
2016-04-08 11:29:14 +02:00
GarvinTwine
a3e6e5d4ac allow users to set their own "flavor" for their own tastes how they like
to name and see the Button that sets themselves as owner, command:
prefix flavor myFlavor
where myFlavor is limited to 9 characters (due to Button layout)
2016-04-08 16:26:34 +07:00
GarvinTwine
497a6c1942 dont delete leashedto settings on rez! (this only didnt bother yet
(much?) as it fell into a sleep phase of the settings script)
2016-04-08 16:10:44 +07:00
WendyStarfall
9938d2930e add workaround for non-looped petting
The "pet" sequence is the only non-looped couples animation pair that we
have. It's also an all time favourite of our users. If couple animations
were selected to play "endless" this one causes a problem because while
the animations ended (non-looped), AOs don't kick back in. Thanks
@GarvinTwine for engineering.
2016-04-07 20:54:06 +02:00
WendyStarfall
260011994c add ice cream
This adds a global string for ice cream. That's right! We can now rename
our "vanilla" button to any flavour of ice cream the user likes best.
Just in case, the button stays at the same spot regardless, even with a
different name and we also retain the old "vanilla on/off" command as a
fall-back if somebody forget their favourite flavour! 🙊
2016-04-07 16:22:38 +02:00
GarvinTwine
b2bb49b1a3 Update oc_settings.lsl
dont read .settings notecard again after updates. It is anyway loaded in settings and will be saved back by the update process.
Also do not announce new last owners after updates else we over write the real last owner.
2016-04-07 20:18:22 +07:00
GarvinTwine
4c466d6c1c Update oc_themes.lsl
3 more calls for the settings menu fixed
2016-04-07 20:10:57 +07:00
WendyStarfall
cf8d410921 build opencollar 6.1.4 @ 160406.1
#901
#902
#903
#904
2016-04-06 21:35:41 +02:00
GarvinTwine
a59da8d6d2 repairs the BACK button to settings menu 2016-04-06 15:44:16 +07:00
GarvinTwine
a7a06b31cf Update oc_com.lsl
one 0 and 1 were to exchange still :)
2016-04-04 16:15:09 +07:00
GarvinTwine
387f32b13f Update oc_com.lsl
Let the wearer know if an owner made changes to Device Name, Name (for wearer), prefix or channel.
2016-04-04 09:02:20 +07:00
WendyStarfall
bdd60f6b4a update relay button
for "Das Relais" which nestles there
2016-04-03 12:24:18 +02:00
WendyStarfall
62dae7073c update urls and uris 2016-04-03 09:35:44 +02:00
WendyStarfall
bdda0f2f9f update channel listener notify 2016-04-03 06:37:41 +02:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
13b2280f51 Merge pull request #900 from OpenCollar/rlvsys_com1
make sure AO command gets through though not well formatted
2016-04-02 04:44:39 +02:00
GarvinTwine
96c6804d67 make sure AO command gets through though not well formatted
replace Terminal button in the RLV maenu for a possible Relay menu entry
2016-03-30 20:44:57 +07:00
GarvinTwine
dcb562cb11 Merge pull request #898 from Tzolkat/master
Add settings integration for SmartStrip in Relay.
Cool
2016-03-29 15:09:18 +07:00
Tzolkat
6e00606366 Add settings integration for SmartStrip. 2016-03-29 03:02:04 -04:00
Alex Carpenter
bab8619e44 Merge pull request #1 from OpenCollar/master
Merge with Opencollar Master
2016-03-29 02:54:55 -04:00
WendyStarfall
ac399e59e9 build legacy apps @ March 27, 2016
With new simplified version "policy". They all became API Six, were
released then at 1.0. When receiving a fix/tweak/enhancement increment
decimal by 1, when receiving a feature, increment the whole number by 1.
Please see camera (two tweaks) and relay (one feature) as examples.

Regarding the relay: I hid the SmartStrip checkbox for now so this can
be tested a bit more (turn it on and off with chat command line). The
feature will also need documentation and dummy layers packaged (these
are done already) so it can be released smoothly. #896
2016-03-27 06:22:16 +02:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
509f919bc6 Merge pull request #897 from Tzolkat/master
Add 'smart strip' functionality to the relay.
2016-03-27 05:30:11 +02:00
Tzolkat
a03bad664f Add 'smart strip' functionality to the relay. 2016-03-24 23:45:11 -04:00
WendyStarfall
cf5b646047 build opencollar 6.1.3 @ 160324.1 2016-03-24 05:22:31 +01:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
abd5de2fab Merge pull request #895 from OpenCollar/timer1
add a "rm timer" command
2016-03-24 04:38:11 +01:00
GarvinTwine
66ae60ffba add a "rm timer" command 2016-03-24 10:34:55 +07:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
8ffa7caf54 Merge pull request #894 from OpenCollar/sys_seal1
check if the collar is attached when trying to remove the original seal
2016-03-24 04:32:07 +01:00
GarvinTwine
a5844d92d0 check if the collar is attached when trying to remove the original seal 2016-03-24 10:11:14 +07:00
WendyStarfall
cac694b755 build opencollar 6.1.3 @ 160323.3
#890
#889
#888
#883
#871
#866
2016-03-23 18:09:06 +01:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
bf09e8cd19 Merge pull request #893 from OpenCollar/settings_root1
use the right functions....
2016-03-23 14:55:31 +01:00
GarvinTwine
05ddb0cfc1 use the right functions.... 2016-03-23 20:51:01 +07:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
2d64585fce Merge pull request #892 from OpenCollar/settings_root
check root's prim owner not settings' prim, and not during transmutations
2016-03-23 14:40:15 +01:00
GarvinTwine
d4e62ea00f check root prims owner not settings' prim, and not during transmutations 2016-03-23 20:31:09 +07:00
WendyStarfall
b8a4345263 build opencollar 6.1.3 @ 160322.2
#890
#889
#888
#883
#871
#866
2016-03-23 04:34:45 +01:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
acd1d8955c Merge pull request #891 from OpenCollar/auth_bratwurst
filter add and rm commands in auth on valid lists (owner,trust,block)
2016-03-23 03:38:48 +01:00
GarvinTwine
22f7d3222e filter add and rm commands in auth on valid lists (owner,trust,block)
issue #890
2016-03-23 09:33:33 +07:00
WendyStarfall
1ae35b5399 build opencollar 6.1.3 @ 160322.1
#889
#888
#883
#871
#866
2016-03-22 19:00:25 +01:00
WendyStarfall
b35322596a inform wearers when web settings are fetched 2016-03-22 15:00:46 +01:00
WendyStarfall
09cc12c877 build opencollar 6.1.3 @ 160321.2 2016-03-21 22:36:08 +01:00
WendyStarfall
8a7e6e73b6 change jailbreak to rm seal 2016-03-21 21:11:40 +01:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
64a1f290e5 Merge pull request #887 from OpenCollar/intern_token
add new value for distributor if an Original OpenCollar has been
2016-03-21 17:04:23 +01:00
GarvinTwine
5c2b3824b3 add new value for distributor if an Original OpenCollar has been
jailbroken, as Origin, the actual last object owner.
Create a new Setting token to save internal collar information, not
needed for any backups.
Filter those in "print settings" along with theme values.
Add a new command "debug settings" to show all saved settings.
Change global_integrity to intern_integrity
2016-03-21 14:00:07 +07:00
WendyStarfall
e6b9f38bdd build opencollar 6.1.3 @ 160320.1 2016-03-20 21:33:22 +01:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
04c37ee0de Merge pull request #886 from OpenCollar/installer_bundles
add a debug option to switch the display during installation for more
2016-03-20 06:21:16 +01:00
GarvinTwine
59eb99a1e0 add a debug option to switch the display during installation for more
details with TRUE
2016-03-20 12:14:27 +07:00
WendyStarfall
dcfa44461f remove excess link messages
sys takes care of fetching core link numbers already; LEDs are always
the same object that holds the core script, no links needed (this will
also prevent newly linked cosmetic elements on running devices to
erronousely turn into LEDs) - needs quick supervision from @GarvinTwine;
deals with #866
2016-03-20 06:06:00 +01:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
77cf8819f6 Merge pull request #885 from OpenCollar/com_info
make sure core integrity gets committed directly so the info shown is
2016-03-20 05:39:54 +01:00
GarvinTwine
978eb70115 make sure core integrity gets committed directly so the info shown is
always uptodate
2016-03-20 11:29:43 +07:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
3203a8b518 Merge pull request #884 from OpenCollar/shim01
dont check auth_public & auth_group for valid keys
2016-03-20 04:03:26 +01:00
GarvinTwine
c8ece5d5f7 dont check auth_public & auth_group for valid keys
issue  #883
2016-03-19 10:02:42 +07:00
lickx
9ef42f6b94 Init Opensim 0.8
Same bugs as OC3:

* Leash to an object triggers couple hug
* Leash menu can't be opened from main menu, only by doing
<prefix>leashmenu
2016-03-15 18:07:22 +01:00
lickx
a489982443 Init Opensim 0.8 2016-03-15 18:05:37 +01:00
WendyStarfall
4bb6dc3436 build opencollar 6.1.2 @ 160315.1
#879
#880
2016-03-15 04:21:37 +01:00
GarvinTwine
0a4232aefb add remenu and notify from runaway buttons
issue #880
2016-03-15 09:57:04 +07:00
WendyStarfall
dc4dfd2449 add seven color vectors
#879
2016-03-15 02:04:57 +01:00
WendyStarfall
8d2ec579f3 build opencollar 6.1.1 @ 160311.3 2016-03-11 11:28:17 +01:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
0b2ce4b330 Merge pull request #878 from RomkaSwallowtail/patch-2
Leash & strict
2016-03-11 09:16:28 +01:00
WendyStarfall
721e2eac2f don't show the label by default
because this will now keep the labelbase (if present) hidden but show
only the label text prims if coming out of the box
2016-03-11 08:19:37 +01:00
WendyStarfall
c750ea7ad6 build opencollar 6.1.1 @ 160311.1 2016-03-11 07:15:56 +01:00
Romka
cec90edbbd Leash & strict
"strictAuthError" not need anymore
2016-03-11 09:00:18 +03:00
Pippilotta Delicatessa Windowshade Mackrelmint Ephraim's Daughter Longstocking
da7a496970 Merge pull request #877 from OpenCollar/particles01
allow trusted to open the leash configure menu from chat and menu, too.
2016-03-11 03:29:12 +01:00
GarvinTwine
aca6c8580d allow trusted to open the configure menu from chat and menu, too. 2016-03-11 09:26:00 +07:00
GarvinTwine
accb759e63 Merge pull request #876 from RomkaSwallowtail/patch-1
Particles & strict
2016-03-11 09:11:34 +07:00
Romka
8ee546173c Particles & strict 2016-03-10 17:57:43 +03:00
GarvinTwine
a109eafc8e Update oc_label.lsl
forgot to reset the LabelBase list before filling it again.
#875
2016-03-10 13:43:06 +07:00
WendyStarfall
4967ea47de add element LabelBase for name plates and dog tags
thanks @GarvinTwine for the engineering
relates to #875
2016-03-10 06:12:55 +01:00
WendyStarfall
ed5879a8e4 build remote 6.0.1 @ 160307.1
this only corrects one typo but I'm packaging right now, so I will ship
this one too
2016-03-07 06:30:45 +01:00
WendyStarfall
954629897c correct typo 2016-03-07 01:38:01 +01:00
WendyStarfall
8d29cf9138 build opencollar 6.1.0 @ 160303.3 2016-03-03 16:09:33 +01:00
WendyStarfall
59af6aa431 add function to print basic information
#872
2016-03-03 13:56:32 +01:00
WendyStarfall
6e5bac1ccd refresh link numbers once the installer is done
So that we don't get (pending...) in our assembly check. #871
2016-03-03 12:13:47 +01:00
WendyStarfall
bbdd2d3fc0 add a test to learn how the device was built
if linked "professionally" like we do or if arbitrarily like a hobbyist
might do; this way we can ask the user for this bit of information and
can further narrow down errors; I chose "homemade" because it reminded
me of marmalade 🙊
2016-03-01 21:02:47 +01:00
WendyStarfall
4ab8106d63 don't use llSleep and give settings a bit more time
for example during login
2016-03-01 19:23:22 +01:00
WendyStarfall
929924c14b Merge pull request #869 from OpenCollar/titler-camera01
remove not needed resets on runaway and safeword
2016-03-01 15:03:17 +01:00
GarvinTwine
72f10336d1 remove not needed resets on runaway and safeword
do a clean "title off" on runaway
2016-03-01 20:39:57 +07:00
WendyStarfall
2b20f986cf send reboot --f to all others after updates 2016-02-29 21:35:26 +01:00
WendyStarfall
b3ecb8a169 don't reset after "runaway"
relates to  #868
2016-02-29 14:40:16 +01:00
WendyStarfall
edbe758b0c request link nr rather than send it in state entry
relates to  #868
2016-02-29 14:39:58 +01:00
WendyStarfall
7fb957d06d compile 6.0.2 @ 160228.1 2016-02-29 14:31:00 +01:00
WendyStarfall
af8ab96c95 Merge pull request #867 from OpenCollar/com01
add double check for hud/interface channel for a possible same channel
2016-02-28 12:20:49 +01:00
GarvinTwine
2c0594c873 add double check for hud/interface channel for a possible same channel
issue #865
2016-02-28 18:13:08 +07:00
WendyStarfall
3d4a14166c update help card 2016-02-24 17:08:55 +01:00
WendyStarfall
bf3dc5a578 build opencollar 6.0.1 @ 160224.1
#860 #861 #862 #863
2016-02-24 14:48:45 +01:00
WendyStarfall
c0cf13e4a9 Merge pull request #864 from VirtualDisgrace/master
6.0.1 care package from the disgraced fork!
2016-02-23 12:21:54 +01:00
WendyStarfall
042883dffa Merge pull request #857 from RomkaSwallowtail/patch-1
Unexpected texture menu
2016-02-23 12:21:44 +01:00
WendyStarfall
3552a31505 update url again :) 2016-02-23 12:13:48 +01:00
WendyStarfall
90f2af8239 Merge remote-tracking branch 'origin/master' 2016-02-23 12:11:53 +01:00
WendyStarfall
d24901026d Revert "update url"
This reverts commit 42d7d7a7af.
2016-02-23 12:11:37 +01:00
WendyStarfall
42d7d7a7af update url 2016-02-23 12:10:10 +01:00
WendyStarfall
abb396d11a Merge pull request #6 from VirtualDisgrace/sys02
remove one double LM
2016-02-23 10:28:45 +01:00
GarvinTwine
94e94f7444 remove one double LM 2016-02-23 15:31:46 +07:00
WendyStarfall
00c8e5a2ad Merge pull request #5 from VirtualDisgrace/update_shim01
ensure that non full perms scripts get updated, too
2016-02-19 08:08:36 +01:00
GarvinTwine
1c309e7919 ensure that non full perms scripts get updated, too 2016-02-19 12:33:15 +07:00
WendyStarfall
67e45e4b3b Merge pull request #4 from VirtualDisgrace/sys01
Request LINKs upon sys restart after menus to be sure we (sys) didnt
2016-02-18 09:17:33 +01:00
GarvinTwine
fce2a0043c Request LINKs upon sys restart after menus to be sure we (sys) didnt
miss them
2016-02-18 15:13:43 +07:00
WendyStarfall
561f73dbc7 add a slash 2016-02-17 09:14:33 +01:00
WendyStarfall
9df2bcdffa Merge pull request #3 from VirtualDisgrace/rlvsuite
fix cmd level shift on upmenu
2016-02-17 09:13:54 +01:00
GarvinTwine
b0ce115fe1 fix cmd shift upon menu 2016-02-17 15:00:30 +07:00
Romka
e6fa7cf264 Unexpected texture menu
Unexpected texture menu if wrong texture call in themes
2016-02-12 01:08:20 +03:00
WendyStarfall
f0a52a45f7 ship opencollar six
http://www.opencollar.at/blog/opencollar-six
2016-02-10 10:21:22 +01:00
WendyStarfall
23a6688898 update app version stamps and menu headers 2016-02-07 17:15:00 +01:00
WendyStarfall
827cc5a1a4 Merge pull request #856 from OpenCollar/spares01
added/unified rm app command
2016-02-07 03:15:11 +01:00
GarvinTwine
71d752eca7 added/unified rm app command
added or unified messages for the reomve app command for legacy spares:
badwords
cagehome
camera
customizer
rlvstuff
undress
2016-02-07 09:07:39 +07:00
WendyStarfall
0799abbab2 update appversion and menu headlines 2016-02-07 00:48:00 +01:00
WendyStarfall
3176859679 move camera and badwords to spares
because they will be part of the legacy apps bundle which links there
2016-02-07 00:38:26 +01:00
WendyStarfall
6634d8af9a build opencollar six @ 160205.1 2016-02-05 21:30:15 +01:00
WendyStarfall
1c40a62497 add new boolean for disabled rlv menu
This is an improved solution by @GarvinTwine which I was hoping for in
my earlier commit on this issue.

He adds a boolean for the menu to display as pending until we indeed did
our handshake and solves a few more things in a more clever way than I
did when rushing fb9a4949ab

So this and the earlier edit should ease a lot of confusion in users and
gives us some peace of mind when not constantly having to explain the
behaviour with rlv off in the viewer, on in the collar, on in the
viewer, off in the collar etc..
2016-02-05 16:42:44 +01:00
WendyStarfall
f14099c8b2 Merge pull request #855 from OpenCollar/revert-854-themes
Revert "let's wrap the way we change looks completely inside out"
2016-02-05 09:31:35 +01:00
WendyStarfall
e6452b6b05 Revert "let's wrap the way we change looks completely inside out" 2016-02-05 09:15:16 +01:00
WendyStarfall
fb9a4949ab Merge pull request #853 from OpenCollar/rlv
don't turn RLV off on failed handshake
2016-02-05 06:31:33 +01:00
WendyStarfall
3cc63309f5 Merge pull request #854 from OpenCollar/themes
let's wrap the way we change looks completely inside out
2016-02-05 06:31:22 +01:00
WendyStarfall
dde3882d43 don't turn RLV off on failed handshake
There would be better ways to solve this if we hadn't ran out of time.
What happens here is that after a failed flurry of handshakes, we retain
RLV=on~1 and inform the user with a notify. Also the menu has new
informative text and an ON as well as an OFF button. There is also a
short notify to tell when RLV is starting if using the command or
pushing the button (because we can't easily re-menu in this case for
obvious reasons).

A proper solution would be to only give a RLV menu after successful
handshake, whether we have RLV active in the viewer or not doesn't
matter. So the problem remains that users come online with RLV disabled
in their viewers but have a menu full of features that cannot work
available for approx. 2 minutes. What is solved though is the case where
the user logs on with two or more different viewers and then forgets to
turn RLV on once again and erroneously believes she has force teleport
failing.

Unless I made a mistake somewhere, this improves the situation slightly
but doesn't solve the problem properly.
2016-02-05 05:22:01 +01:00
WendyStarfall
97a6f80453 don't run inside of installers + ...
- correct header
- remove debug
2016-02-05 01:21:41 +01:00
WendyStarfall
8068667713 rename plugin 2016-02-05 01:10:40 +01:00
WendyStarfall
c2928ab110 Merge pull request #852 from RomkaSwallowtail/themes
Themes
2016-02-04 17:17:58 +01:00
Romka
8f68edde6c Merge pull request #1 from RomkaSwallowtail/new-themes
New themes
2016-02-04 18:09:49 +03:00
Romka
03834cb2ec new themes
description converter for new themes
2016-02-04 13:35:08 +03:00
Romka
2c26a34043 Update oc_titler.lsl 2016-02-04 13:33:32 +03:00
Romka
57b25d06dc Update oc_meshlabel.lsl 2016-02-04 13:15:32 +03:00
Romka
8e76570280 Update oc_label.lsl
new descriptions
2016-02-04 13:14:12 +03:00
Romka
630d1f2249 Update oc_themes.lsl
new element descriptions
2016-02-04 13:12:46 +03:00
WendyStarfall
d503c2fcdc Merge pull request #851 from OpenCollar/installer_sys
start install on rez after reading name notecard, dont reset when
2016-02-03 20:55:45 +01:00
GarvinTwine
0ccafcce7d start install on rez after reading name notecard, dont reset when
install on rez to prevent install loops
2016-02-03 20:16:53 +07:00
WendyStarfall
d76273f497 build opencollar six @ 160202.2 2016-02-02 17:06:29 +01:00
WendyStarfall
f4b9c8b7f7 Merge pull request #850 from OpenCollar/installer
change the particle color to the color choosen for the pulsing heart
2016-02-02 14:33:27 +01:00
GarvinTwine
e63ddac7f5 change the particle color to the color choosen for the pulsing heart
prim
2016-02-02 14:00:28 +07:00
WendyStarfall
7a133bb27f Merge pull request #849 from OpenCollar/leash
dont sent unleash spam to avatars leashed to who arent in the same sim
2016-02-02 04:03:29 +01:00
GarvinTwine
e0304cc58c dont sent unleash spam to avatars leashed to who arent in the same sim
anymore.
2016-02-02 09:30:44 +07:00
WendyStarfall
f553878cff Merge pull request #848 from OpenCollar/capture
Dont send location to unwanted capturer after safewording in a different
2016-02-02 03:07:03 +01:00
GarvinTwine
55d77446e4 Dont send location to unwanted capturer after safewording in a different
sim
2016-02-02 08:58:36 +07:00
WendyStarfall
0a82ec2a9b update safeword notifies 2016-02-02 00:28:37 +01:00
WendyStarfall
dabacefa7c build opencollar six and installer six @ 160201.1
There is no reason to stuff bell, label, meshlabel, titler and resizer
into every patch that is shipped after 6.0.0 if we include it with the
"full version". Some formatting here and there.
2016-02-01 21:53:54 +01:00
WendyStarfall
8303aee85c Merge pull request #846 from OpenCollar/GarvinTwine-patch-1
remove not needed length check
2016-01-30 15:02:42 +01:00
GarvinTwine
461ab4d6fa remove not needed length check
with the current dialog script we do not have to deny texture names longer than 23 letters
2016-01-30 20:35:46 +07:00
WendyStarfall
c9fc58ad1b Merge pull request #844 from OpenCollar/installer_sounds
stops the installer to play random sounds
2016-01-30 13:48:26 +01:00
WendyStarfall
779b973171 Merge pull request #845 from RomkaSwallowtail/patch-1
Use %DEVICETYPE%
2016-01-30 13:48:10 +01:00
Romka
308697dff3 Use %DEVICETYPE% 2016-01-30 09:52:23 +03:00
Romka
fdf74b40a1 Use %DEVICETYPE% 2016-01-30 09:51:29 +03:00
Romka
7ed5abda1b %DEVICETYPE% 2016-01-30 09:49:56 +03:00
GarvinTwine
86d348b286 stops the installer to play random sounds
random repeats of the sounds where played without the script actually
triggered the sound by llPlaySound commands.
I removed the llPreloadSound on state entry and the issue was gone.
Seems to have been reported once logn time ago but doesnt seem to bother
many at all:
https://jira.secondlife.com/browse/VWR-23660
2016-01-29 09:03:39 +07:00
WendyStarfall
91536bd7c6 update headers 2016-01-28 21:15:44 +01:00
WendyStarfall
d6d3fb9cb7 Merge pull request #843 from OpenCollar/settings02
allow all case commands and urls
2016-01-28 04:28:51 +01:00
GarvinTwine
a803f9ee7d allow all case commands and urls 2016-01-28 10:27:10 +07:00
WendyStarfall
b33c86e8e5 gild opencollar six
- update help card
- format some notifies properly
- don't use llToLower for settings user command block
(because of case sensitive urls from shorteners)
- update sample settigns card
- nest resizer correctly
2016-01-28 01:48:41 +01:00
WendyStarfall
a137a2dae1 build opencollar six
This is the OpenCollar Six Release Candidate.

I added g_sDevStage to indicate the current development stage of the
product. Please use whatever works, legacy OpenCollar had DEV/BETA/RC, I
also think MVP is a good to use. When we are golden this can be an empty
string.

The Remote and AO only indicate their development stage in the fancy
version and object name as these are all the user really sees.

The OpenCollar Remote is also a Release Candidate and the OpenCollar AO
is the minimum viable product, fully compatible and functional, however
should be all means become a server side AO when golden.
2016-01-27 14:16:08 +01:00
WendyStarfall
b6e8f34627 don't follow on capture, just beckon and inform 2016-01-27 13:33:17 +01:00
WendyStarfall
8993f0804a update capture notify 2016-01-27 13:17:23 +01:00
WendyStarfall
58aef677e7 Merge pull request #842 from OpenCollar/auth01
fix "remove all" button
2016-01-27 04:40:20 +01:00
GarvinTwine
396d73d75e fix "remove all" button 2016-01-27 10:29:39 +07:00
WendyStarfall
37e599eb90 Merge pull request #841 from RomkaSwallowtail/patch-1
Update oc_remote_options.lsl
2016-01-26 23:46:47 +01:00
Romka
4f34026846 Update oc_remote_options.lsl 2016-01-26 20:14:36 +03:00
WendyStarfall
b84cc9cfdd build collar at 160125.1 2016-01-26 12:30:33 +01:00
WendyStarfall
dabf3bf548 Merge pull request #840 from OpenCollar/shim01
@GarvinTwine: remove pre OC SIX entries from auth lists which are no more supported
2016-01-25 17:06:18 +01:00
GarvinTwine
6d81c963e5 remove pre OC SIX entries from auth lists which are no more supported 2016-01-25 16:32:59 +07:00
WendyStarfall
f1665e689c Merge pull request #839 from OpenCollar/capture01
menuIDs fixed and some more names removed
2016-01-25 10:22:32 +01:00
WendyStarfall
c694c11b6c Merge pull request #838 from OpenCollar/sys01
allow same versions to update
2016-01-25 10:22:19 +01:00
GarvinTwine
19aaeed198 allow same versions to update 2016-01-25 16:02:24 +07:00
GarvinTwine
311dbf07bb menuIDs fixed and some more names removed 2016-01-25 15:46:09 +07:00
WendyStarfall
feb868f3b1 Merge pull request #837 from OpenCollar/capture
adjusted now completely to the new one strided owner lists
2016-01-25 08:33:23 +01:00
GarvinTwine
aba4030708 adjusted now completely to the new one strided owner lists 2016-01-25 10:18:09 +07:00
WendyStarfall
3f96f36403 build collar, remote and ao at 160124.3
We can say the Remote and AO are production ready if nothing comes up
after testing. The collar will need a few more polishes but the change
set is as always very beautiful. OpenCollar Six is amazing. <3
2016-01-24 12:43:01 +01:00
WendyStarfall
a01a826fe2 Merge pull request #836 from OpenCollar/one-strided-auth-lists
get rid of the 2 strided auth lists!
2016-01-24 12:07:16 +01:00
GarvinTwine
1ef0cde6c6 get rid of the 2 strided auth lists!
finally we decided to remove the names from the auth lists as we use
anyway only IDs
from now on, no more strided auth lists for owner, trusted or block,
just UUIDs.
added a limiter to loadSettings so our limiits for the auth lists cannot
be cheated by websettings or .settings notecard
2016-01-24 17:57:46 +07:00
WendyStarfall
fc56723a13 build collar, remote and ao at 160124.2
same as the folder handed out to collaborators
2016-01-24 06:18:18 +01:00
WendyStarfall
9ca7ccdb54 Merge pull request #835 from OpenCollar/ao-versioncheck
added a version check to display in the menu if an update is available
2016-01-24 05:56:23 +01:00
GarvinTwine
7eda8a6b17 added a version check to display in the menu if an update is available 2016-01-24 11:55:03 +07:00
WendyStarfall
50a1e97e82 disable debug 2016-01-24 04:59:40 +01:00
WendyStarfall
4038541c70 Merge pull request #834 from OpenCollar/sensor
removed the getavi_ syntax from the dialog script and switched auth to
2016-01-24 04:52:58 +01:00
GarvinTwine
540bfeb1fc removed the getavi_ syntax from the dialog script and switched auth to
sensordialog for adding Avatars to lists
issue #833
2016-01-24 10:35:03 +07:00
WendyStarfall
4318f432f3 build ao at 160124.1
updating dates and author where new or missing as well
2016-01-24 03:33:59 +01:00
WendyStarfall
0bb4af6374 update "remove dialog" prompts
this is no longer true
2016-01-24 03:22:21 +01:00
WendyStarfall
b4165929e5 build collar at 160124.1
sys 160123.1 also prints the "build version" if using the version chat
command
2016-01-24 02:54:03 +01:00
WendyStarfall
1366899204 build remote at 160124.1
as a marker; this is what is handed to collaborators with description
160124.1
2016-01-24 02:33:29 +01:00
WendyStarfall
1c8e54a237 remove some cruft
#831
2016-01-24 02:26:32 +01:00
WendyStarfall
9fb2bdfeb4 Merge pull request #832 from OpenCollar/remote_sys
added a switch back to ALL when removing the active partner from the hud
2016-01-24 02:20:59 +01:00
WendyStarfall
742071d5de Merge pull request #830 from OpenCollar/null-check
two little checks to prevent the collar to process "nothing", once in
2016-01-23 22:23:11 +01:00
GarvinTwine
1de1c6b330 added a switch back to ALL when removing the active partner from the hud
also commented the removal from collars out for now, needs further
decision and change
2016-01-23 18:21:51 +07:00
GarvinTwine
3080855226 two little checks to prevent the collar to process "nothing", once in
com before sending to auth and once in settings while loading them from
card or web
2016-01-23 17:38:45 +07:00
WendyStarfall
07a8cc5852 Merge pull request #829 from OpenCollar/leashpost
a short script for leashposts to be rezzed by the Remote SIX hud, that
2016-01-23 10:02:03 +01:00
GarvinTwine
8ac4f5fe0b a short script for leashposts to be rezzed by the Remote SIX hud, that
will sent out leashto me commands to all uuids provided by the hud
2016-01-23 15:59:36 +07:00
WendyStarfall
58d26bf1bf update raw settings sample link
thanks @fsociety00 for the gist
2016-01-23 00:34:58 +01:00
WendyStarfall
18ad07bdff remove standtp restriction in stray 2016-01-22 23:18:22 +01:00
WendyStarfall
1806bf7a09 Merge pull request #828 from RomkaSwallowtail/patch-1
oc_ao_interface.lsl - wrong variable
2016-01-22 17:10:56 +01:00
Romka
54dfc4b8b1 Update oc_ao_interface.lsl 2016-01-22 12:40:42 +03:00
WendyStarfall
8e7909554a Merge pull request #827 from RomkaSwallowtail/patch-2
llGetOwnerKey(kID) don't work at detach collar
2016-01-21 15:04:44 +01:00
Romka
5dea18d35f Update oc_zhao_interface.lsl 2016-01-21 16:34:07 +03:00
Romka
adf4bcf223 llGetOwnerKey(kID) don't work at detach collar
llGetOwnerKey(kID) don't work when decached collar send commands "OpenCollar=No" and "ZHAO_STANDON"
2016-01-21 16:33:03 +03:00
WendyStarfall
58e8d27ca3 Merge pull request #826 from OpenCollar/settings01
added a validation for websettings to load only raw text files and no
2016-01-21 13:23:28 +01:00
WendyStarfall
a959325c22 Merge pull request #825 from OpenCollar/anims02
changed commands sent to the ao for on/off properly
2016-01-21 13:23:20 +01:00
GarvinTwine
88f423a51d added a validation for websettings to load only raw text files and no
http files. changed the Options menu to Settings, new command to print
settings is "print settings"
2016-01-21 19:21:19 +07:00
GarvinTwine
ae8babddc3 changed commands sent to the ao for on/off properly 2016-01-21 18:49:30 +07:00
WendyStarfall
1b71b691b1 Merge pull request #824 from OpenCollar/remote-bookmarks02
changed the map flashing to a uri namespace message after teleporting
2016-01-21 11:11:24 +01:00
WendyStarfall
ca3bf32d85 Merge pull request #823 from OpenCollar/ao-interface
removed the listen to collarID only due to issues to miss an update of
2016-01-21 11:11:10 +01:00
GarvinTwine
915cce661b changed the map flashing to a uri namespace message after teleporting
the partners to allow easy tp following to the same location for the hud
user
2016-01-21 16:43:09 +07:00
GarvinTwine
2c9cde0767 removed the listen to collarID only due to issues to miss an update of
IDs when relogging
2016-01-21 16:05:47 +07:00
WendyStarfall
231c2554be Merge pull request #822 from OpenCollar/websettings
added the ability to load settings from an url
2016-01-21 09:56:11 +01:00
WendyStarfall
ec4ff020a3 update prompts 2016-01-21 09:37:26 +01:00
WendyStarfall
9624026e76 change default partner icon
and update some formatting/wording for prompts
2016-01-21 08:33:33 +01:00
GarvinTwine
251925c324 Merge pull request #821 from RomkaSwallowtail/patch-1
oc_anim.lsl - is a typo?
2016-01-21 09:29:51 +07:00
Romka
0c5f377716 Update oc_anim.lsl
I believe that this is a typo.
correct me.
2016-01-21 01:12:07 +03:00
WendyStarfall
5292ca62ce update chat prompt 2016-01-20 18:48:19 +01:00
WendyStarfall
2d8d7bee6e add several new button textures + ...
- fine polish menu prompts

https://creativecommons.org/licenses/by-sa/4.0/
2016-01-20 18:44:59 +01:00
WendyStarfall
163fec0358 add ao stands, sits and ground sits
These are from the Linda Kellie Henson resource. I created many
derivative variations of these animations when I was preparing them for
upload a couple years ago, however, I tried to choose the "purest" I
still had left as I feel those will be the best to modify.

https://creativecommons.org/licenses/by-sa/4.0/
2016-01-20 14:07:06 +01:00
WendyStarfall
bdf9d40182 add reset on owner change + ...
- fine polish menu prompts
- rename UPMENU button
- change license card name
- add weblink for man page
- deactivate typing overrider as default
2016-01-20 13:56:15 +01:00
WendyStarfall
46c394acb1 re-do #818
this attributes to @GarvinTwine and the description is #818
2016-01-20 12:35:22 +01:00
WendyStarfall
889b542886 Merge pull request #818 from OpenCollar/remote
added handling for the new buttons, rez and collar/hud menu , changed
2016-01-20 12:27:59 +01:00
WendyStarfall
b461e45143 Merge pull request #817 from OpenCollar/installer
added the channels, commands and sounds to use for AO and remote updates
2016-01-20 12:27:50 +01:00
GarvinTwine
82d626babd sounds for the installer 2016-01-20 18:27:11 +07:00
GarvinTwine
a7dbb76850 added handling for the new buttons, rez and collar/hud menu , changed
the target of tp save to the remote bookmarks script.
button descriptions:
to open the collar's menu: menu
to open the hud menu: hudmenu
2016-01-20 16:43:36 +07:00
GarvinTwine
e60e1a7be7 added the channels, commands and sounds to use for AO and remote updates 2016-01-20 16:16:15 +07:00
WendyStarfall
f230630377 Merge pull request #816 from RomkaSwallowtail/patch-1
Update oc_ao_interface.lsl
2016-01-20 09:51:35 +01:00
WendyStarfall
3b2829170c Merge pull request #815 from OpenCollar/remote-bookmarks01
added new script oc_remote_bookmarks, adjusted from oc_bookmarks for the
2016-01-20 09:35:54 +01:00
Romka
e40d360f4a Update oc_ao_interface.lsl
use  llRegionSayTo instead llWhisper
2016-01-20 11:06:48 +03:00
GarvinTwine
2fe07c1a25 added new script oc_remote_bookmarks, adjusted from oc_bookmarks for the
remote hud
added the menu call and command CMD_REMOTE to remote_sys to send
partners to bookmarks
added a command to rlvsuite to enable the hud to send a simple rlv tpto:
command to collars so hud bookmarks are seperated and independend from
collar bookmarks
removed the custom button configuration again
2016-01-20 15:05:40 +07:00
WendyStarfall
78de121a98 update license terms
This shifts §3d to §3e with §3d now addressing the derivative work on
the legacy HUD link-sets. Also shifted is §4e to §4f with $4e now
addressing the new share-alike button textures for various GUIs. The §5a
and §5b now also list the authors of several animations included with
the OpenCollar AO.

This unifies all individiual "OpenCollar Licenses" into one license
addressing the whole software and its creative contents.

On the metaverse this document is generally called ".license" to appear
on top of object inventory contents along with other cards.
2016-01-20 06:40:10 +01:00
WendyStarfall
14adba8b47 Merge pull request #814 from OpenCollar/AO
fixed the LOCK with rlv detach=n, unlock on collar safeword
2016-01-20 02:46:51 +01:00
GarvinTwine
e12b2fc8d7 fixed the LOCK with rlv detach=n, unlock on collar safeword
changed some menus
reformatted some to OC 4 style code
2016-01-19 14:44:39 +07:00
GarvinTwine
aead49a33e Merge pull request #813 from RomkaSwallowtail/patch-1
Update oc_remote_options.lsl - fix small bug
2016-01-19 14:40:45 +07:00
Romka
fe9ceff535 Update oc_remote_options.lsl
fix small bug - can't change to Horisontal
2016-01-19 09:10:16 +03:00
WendyStarfall
1ef3c4cc56 Merge pull request #811 from OpenCollar/remote-personal-button
added a personal button option
2016-01-19 02:50:30 +01:00
WendyStarfall
97c5563ee8 Merge pull request #812 from RomkaSwallowtail/patch-1
Update oc_ao_options.lsl
2016-01-19 00:16:46 +01:00
Romka
2e606e58e4 Update oc_ao_options.lsl
updare Dialog
2016-01-18 23:55:57 +03:00
WendyStarfall
8250fa8a1d add link to customization blurb
I also commented the notify nuisance with collar integration. This is a
debug text in my opinion. The user just expects it to work whether she
has a collar on or not.
2016-01-18 18:36:01 +01:00
WendyStarfall
db48662579 add options and partners; update restrictions 2016-01-18 16:05:08 +01:00
GarvinTwine
126713f6ed Merge pull request #810 from OpenCollar/ao-core-menu
fixed some not working BACK buttons and removed a
2016-01-18 15:29:48 +07:00
GarvinTwine
75f63a9b8a added a personal button option
a hud button with description "Personal" can be programmed by the user,
long touch (over 2 seconds) opens a text box to enter a collar command
to be executed when clicking that button (menus & texts might need
adjustment here)
Added a message if command is issued and no partner is nearby 
removed the rcpt variable from the dialog function as for a hud it is
anyway always the hud owner
2016-01-18 15:28:26 +07:00
GarvinTwine
1a9e95a54d fixed some not working BACK buttons and removed a
llInstantMessage(id,"Menu timed out")
2016-01-18 10:00:03 +07:00
WendyStarfall
e76051dced Merge pull request #808 from RomkaSwallowtail/patch-2
added dynamic link handling
2016-01-17 19:49:31 +01:00
WendyStarfall
eacd008fc0 Merge pull request #807 from RomkaSwallowtail/patch-1
Update oc_remote_options
2016-01-17 19:49:21 +01:00
WendyStarfall
caf1239788 Merge pull request #809 from RomkaSwallowtail/patch-3
oc_ao_options.lsl - no more CHANGED_COLOR loop
2016-01-17 19:49:14 +01:00
Romka
8b2f99c988 Update oc_ao_options.lsl
enable HUD position,
break CHANGED_COLOR loop
2016-01-17 19:15:33 +03:00
Romka
1b3007e752 Update oc_remote_options.lsl
confused "Picture" and "Bookmarks" buttons textures
2016-01-17 15:04:44 +03:00
Romka
1092bae2c0 Update oc_undress.lsl 2016-01-17 14:56:27 +03:00
Romka
57a1796544 Update oc_timer.lsl 2016-01-17 14:56:04 +03:00
Romka
4a7d3a03f9 Update oc_shocker.lsl 2016-01-17 14:55:40 +03:00
Romka
3e3c3cd4b2 Update oc_rlvstuff.lsl 2016-01-17 14:54:59 +03:00
Romka
46e8cb12d9 Update oc_rlvcmd.lsl 2016-01-17 14:54:30 +03:00
Romka
37017f111d Update oc_garble.lsl 2016-01-17 14:53:52 +03:00
Romka
d1c45ba2c3 Update oc_customizer.lsl 2016-01-17 14:53:21 +03:00
Romka
39eaad5b2b Update oc_cagehome.lsl 2016-01-17 14:51:35 +03:00
Romka
7552b74c79 Update oc_remote_options.lsl 2016-01-17 14:36:52 +03:00
Romka
ab485850dd Update oc_remote_options.lsl
small fix
2016-01-17 14:32:11 +03:00
Romka
17be268771 #806
#806
2016-01-17 13:46:24 +03:00
WendyStarfall
131b1f2e2b add three more buttons 2016-01-17 11:11:48 +01:00
GarvinTwine
2df269ea89 Update oc_remote_options.lsl
prevent the hud to move to 0,0,0 while rezzed when the script rests
2016-01-17 17:05:10 +07:00
WendyStarfall
57268d7ae5 Merge pull request #805 from OpenCollar/ao-lock-buttons
added the new lock buttons to the options script
2016-01-17 10:59:20 +01:00
GarvinTwine
06f441d8ac added the new lock buttons to the options script 2016-01-17 16:41:31 +07:00
WendyStarfall
e9a91467fe create folders, lock and restrictions buttons
https://creativecommons.org/licenses/by-sa/4.0/
2016-01-17 10:35:24 +01:00
WendyStarfall
8127750130 Merge pull request #804 from OpenCollar/spares-6
updated badwords and camera for OC SIX new dynamic link management
2016-01-17 10:13:47 +01:00
GarvinTwine
b0aafe079d added dynamic link handling to the relay plugin 2016-01-17 16:11:10 +07:00
GarvinTwine
ec71eafbec updated badwords and camera for OC SIX new dynamic link management 2016-01-17 16:03:19 +07:00
WendyStarfall
b640eebab1 Merge pull request #803 from OpenCollar/ao
small changes to make the new script compatible with old ao prims
2016-01-17 08:50:46 +01:00
GarvinTwine
7b755fbc94 small changes to make the new script compatible with old ao prims as
well
2016-01-17 14:14:19 +07:00
GarvinTwine
ad52864622 Merge pull request #802 from RomkaSwallowtail/patch-1
oc_remote_options.lsl - small change
2016-01-17 14:01:28 +07:00
Romka
55d1a0d490 Update oc_remote_options.lsl
small change
2016-01-17 09:22:20 +03:00
WendyStarfall
e8cd9fa759 Merge pull request #800 from RomkaSwallowtail/patch-1
Update oc_remote_options.lsl
2016-01-17 06:54:35 +01:00
WendyStarfall
7ef0cab15c Merge pull request #801 from RomkaSwallowtail/patch-2
oc_ao_options.lsl - like oc_remote_options
2016-01-17 06:54:28 +01:00
Romka
bcf0a23729 Update oc_ao_options.lsl 2016-01-16 22:41:21 +03:00
Romka
88b2763c15 Update oc_ao_options.lsl
like oc_remote_options
2016-01-16 22:27:52 +03:00
Romka
86a7c69060 Update oc_remote_options.lsl
remove excessive function
2016-01-16 22:25:57 +03:00
WendyStarfall
d3d2fd83f2 add weblink for man page 2016-01-16 12:54:24 +01:00
WendyStarfall
66e8a49857 change ao name 2016-01-16 12:36:16 +01:00
WendyStarfall
0f63c8f862 don't position the hud automatically
It would be useful on first wear, however, this will in many cases pop
the HUD of the visible screen once first minimized or maximized. I will
not remove these bits in case somebody wants to do it properly as it is
done in the new Remote and only comment them. Keep in mind the behaviour
for visible screen differs in between viewers, resolutions and operating
systems.
2016-01-16 12:35:48 +01:00
WendyStarfall
45a310e7e5 Merge pull request #799 from OpenCollar/ao
removed some not needed chats and menus from the options scripts, fixed
2016-01-16 12:23:17 +01:00
GarvinTwine
ca39d16e9c removed some not needed chats and menus from the options scripts, fixed
a false menuList handling in the interface
2016-01-16 18:21:16 +07:00
WendyStarfall
00eeeaccbf Merge pull request #798 from RomkaSwallowtail/patch-2
oc_remote_options.lsl - more flexible, more versatile
2016-01-16 09:56:56 +01:00
Romka
f81f604ba6 Update oc_remote_options.lsl
update menu
2016-01-16 10:05:54 +03:00
Romka
a67624de7a Update oc_remote_options.lsl
add the calculation of the maximum number of columns
2016-01-15 21:36:49 +03:00
Romka
89ab33e856 Update oc_remote_options.lsl
a new method for calculating the position of the buttons
2016-01-15 21:07:30 +03:00
GarvinTwine
47606b8318 Merge pull request #797 from VirtualDisgrace/20160114_ao
first essential changes for oc ao six
2016-01-15 16:14:21 +07:00
WendyStarfall
4782300283 change default buttons (incomplete)
Sorry! I ran out of time and have to travel this weekend. <3
2016-01-15 09:38:25 +01:00
GarvinTwine
e79b4ffd01 added the ability to load settings from an url
commands to load settings now are:
load card
load url http://mysettings.com/xyz
which are only only, non selfowned (vanilla) wearer cant use these
commands (we should disable the auto load of .settings nc on change,
too!)
also theme related settings are ignored to prevent changing textures on
different prim collars which might result in totally unmatching looks.
For now the "Load" button in the Options menu is broken and does nothing
2016-01-15 09:55:04 +07:00
WendyStarfall
f9857eaf6f Merge pull request #796 from RomkaSwallowtail/patch-1
Update oc_remote_options.lsl - columns in 3 rows
2016-01-14 19:04:30 +01:00
Romka
f669a35900 Update oc_remote_options.lsl
columns in 3 rows
2016-01-14 18:07:44 +03:00
WendyStarfall
5c2405ba1b update headers with authors, dates and license 2016-01-14 15:11:34 +01:00
WendyStarfall
f77d5a824e build 160114.3 2016-01-14 12:45:19 +01:00
WendyStarfall
5681d2dff3 Merge pull request #794 from RomkaSwallowtail/patch-1
oc_remote_options.lsl - back to 'old' texturing method
2016-01-14 12:26:43 +01:00
GarvinTwine
b0813e6900 Merge pull request #795 from VirtualDisgrace/OC_SIX
This will bop the api version up by two blips.. yay!
YEAH!
2016-01-14 18:19:51 +07:00
GarvinTwine
22acb72f56 changed the verify logic to the new dynamic link-management and removed
no more used parts from the core scripts
2016-01-14 16:38:55 +07:00
Romka
e63b611e04 Delete .buttons 2016-01-14 12:07:02 +03:00
Romka
6e354eb05c Update oc_remote_options.lsl
back to 'old' texturing method
'.buttons' notecard does not make sense if there are only 2 style
2016-01-14 12:04:38 +03:00
GarvinTwine
7f35ff8fd8 fixed a wronf saving of RLVOn=0 an reattach
removed no more used integrity check
2016-01-14 10:11:00 +07:00
GarvinTwine
733a7a452c added dynamic link management 2016-01-14 09:06:03 +07:00
GarvinTwine
fc841f0b0c adjusted the remote collar channel to the new channel 2016-01-12 16:56:22 +07:00
GarvinTwine
b65406655a added a ")" to fix syntax error ;) 2016-01-12 16:43:37 +07:00
GarvinTwine
3dd7573363 adjusted the remote channel to open the collar menu 2016-01-12 16:42:10 +07:00
GarvinTwine
86cc3cc8a9 added a version check for update installations, AppInstall as wildcard
to install apps
adjusted the remote channel
2016-01-12 16:38:18 +07:00
GarvinTwine
b6d43c55ad introducing dynamic link# handling
added an automatted process that the non root scripts send their link#
to all other scripts which update the value. 
Introduced a new version check for patch installations, so downgrade by
accident or old patch installer is not possible
Changed the remote hud channel
2016-01-12 16:16:00 +07:00
WendyStarfall
1adca7a37d Merge pull request #793 from OpenCollar/remote_sys
cleanup and optimization
2016-01-11 11:14:39 +01:00
GarvinTwine
ee2fdbbcb8 cleanup and optimization
remove from one line one time called funtions, removed no more used
variables, changed rez channel to personal with offset 1234
2016-01-11 16:41:55 +07:00
GarvinTwine
9077fa4fa4 added a default texture for the ALL-Picture
dealt more with the "ALL" entry in the PartnersInSim list, specially when rezzing objects
2016-01-10 18:47:19 +07:00
GarvinTwine
c262863228 fixed an endless loop when no partners were added 2016-01-10 14:57:46 +07:00
GarvinTwine
e61d2bce95 Merge pull request #791 from RomkaSwallowtail/patch-1
oc_remote_options.lsl - error llDialog: must supply a message

when i got energy and time again i will change this dialog function in this script to match other oc scripts :)
2016-01-10 14:36:32 +07:00
Romka
47af2282ac Update oc_remote_options.lsl
it's need for show main menu after Horisonral> Vertical> Alternate> Column> Line>
2016-01-10 08:51:16 +03:00
GarvinTwine
6e0ba451d6 Update .buttons
Updated the nc to @romka last commit
2016-01-10 09:30:55 +07:00
GarvinTwine
bc0ef23acd Update oc_remote_sys.lsl
quite the change here :)
less menus and menu-buttons for more hud buttons
Changed the selection of who an action applies to:
Now a partner is set for any action (or Partners) the Active Partner is shown with their profile picture in the HUD, clicking that picture switches to the next Partner (who is in the same region)... so no more "Pick who this action is meant for" after every single click!!!!
Added the possibility to update.... and more i might forget here
2016-01-10 09:27:30 +07:00
GarvinTwine
8e7d87d7d9 Removed not needed confirm menus
changed the reset from a hud to a style reset, removed tint button, added a linkMessage to let the sys script now the texture for the Picture button for ALL
2016-01-10 09:18:47 +07:00
GarvinTwine
5aa6fce68d Merge pull request #790 from RomkaSwallowtail/patch-2
oc_remote_options.lsl - new order buttons
2016-01-09 20:48:26 +07:00
Romka
b32280ef9f Update oc_remote_options.lsl
move Hide() into DefinePosition() 

use buttons prim name for texture applier and order

in .buttons notecard use 'Button Name' instead link number:

[ Light ]
Minimize~b59f9932-5de4-fc23-b5aa-2ab46d22c9a6
Menu~52c3f4cf-e87e-dbdd-cf18-b2c4f6002a96
Bookmarks~1ac086de-3201-e526-e986-2e67d9de9202
e.t.c.
2016-01-09 15:45:36 +03:00
Romka
663f1846c9 Update oc_remote_options.lsl
new way to order buttons
2016-01-07 11:34:15 +03:00
GarvinTwine
7d523c5e11 Removed the MANAGE menu
Removed the MANAGE menu and not needed buttons in the Main menu, added
there the needed manage buttons
2016-01-06 16:15:09 +07:00
WendyStarfall
2df8b390e4 have a dozen buttons 2016-01-05 22:42:59 +01:00
WendyStarfall
db48ca850b Merge pull request #789 from RomkaSwallowtail/patch-1
oc_themes.lsl - fix typo
2016-01-05 22:24:58 +01:00
WendyStarfall
3725f3badd create hud buttons
The button textures are an original creation by @WendyStarfall and
licensed under CC BY SA (
https://creativecommons.org/licenses/by-sa/4.0/ )
2016-01-05 22:19:15 +01:00
Romka
407e2fac23 Update oc_themes.lsl
fix small typo
2016-01-06 00:01:34 +03:00
WendyStarfall
5df322525d add blood for the blood god 2016-01-05 21:27:15 +01:00
WendyStarfall
a34fe5e4e4 Merge pull request #788 from RomkaSwallowtail/patch-1
oc_remote_options.lsl - new way for texture
2016-01-05 20:48:39 +01:00
Romka
261b3e8344 Update oc_remote_options.lsl
new way for texture
use .buttons notecard
2016-01-05 22:46:46 +03:00
WendyStarfall
3d0cff8b23 Merge pull request #787 from RomkaSwallowtail/RomkaSwallowtail-remote-patch-1
Update oc_remote
2016-01-05 19:55:47 +01:00
Romka
db3471b8e2 Delete .buttons
back to original
2016-01-05 21:44:25 +03:00
Romka
4d6a5bb209 Update oc_remote_options.lsl
back to original
2016-01-05 21:44:00 +03:00
Romka
6d768d00ad Update oc_remote_options.lsl
fix some typos
2016-01-05 18:44:31 +03:00
Romka
e68b60c23b Create .buttons
notecard for new buttons texture
2016-01-05 17:55:07 +03:00
Romka
933d901b73 Update oc_remote_options.lsl
new way for buttons texture, like Themes in Collar
2016-01-05 17:53:20 +03:00
Romka
940f7c933d Update oc_remote_dialog.lsl
remore unused:
UserCommand(), g_lRemoteMenus, MRSBUN, SPAMSWITCH,
iSender, iNum, in g_lSensorDetails
2016-01-05 17:50:39 +03:00
WendyStarfall
3670a155d5 Merge pull request #761 from RomkaSwallowtail/patch-1
oc_dialog.lsl:  unused params in g_lSensorDetails list
2016-01-05 05:57:34 +01:00
WendyStarfall
44c957b050 Merge pull request #783 from hexathos/wip
removed unused integer in oc_bookmarks.lsl
2016-01-05 05:56:26 +01:00
WendyStarfall
812414f9aa Merge pull request #785 from VirtualDisgrace/remote-patch
manually merge vd remote
2016-01-05 05:49:57 +01:00
WendyStarfall
427a4ba1f8 manually merge vd remote
@GarvinTwine version check added
commented out lots i think is not needed
reformatted a bit
added a rezzer menu for possible different objects than the default cage
leash button does directly a leashing now if only 1 managed sub is
nearby (else menus of subs nearby appears to choose 1 or all)
No more quick leash menu (if you want a leash menu, there is one to get
from the remotes main menu)

@WendyStarfall update headers with all known authors
(my other commits became redundant meanwhile)
2016-01-05 05:49:28 +01:00
WendyStarfall
30f701ced4 Merge pull request #784 from VirtualDisgrace/master
optional height variations for poses and relay plugin
2016-01-05 05:25:28 +01:00
WendyStarfall
e775638152 add sidekick to update and compact contact list 2016-01-05 05:03:32 +01:00
GarvinTwine
e4c6685b25 added dynamic into height adjust posing
now not only exact 5 poses are allowed but any number as long as there
is a "pose" and "pose+1"
2016-01-05 09:16:43 +07:00
WendyStarfall
a3e0921919 Merge pull request #782 from RomkaSwallowtail/patch-3
Update oc_remote_options.lsl
2016-01-04 22:30:21 +01:00
Romka
a37adaf2cd Update oc_remote_options.lsl 2016-01-05 00:10:46 +03:00
Rainer Bendig
319ac6db1b removed unused integer
Signed-off-by: Rainer Bendig <hexathos@gmail.com>
2016-01-04 04:38:54 +01:00
Romka
d3ee726abb Update oc_remote_options.lsl
get buttons names from prims descriptions!
2016-01-03 13:37:09 +03:00
Romka
155099b933 Update oc_remote_options.lsl 2016-01-03 13:21:47 +03:00
GarvinTwine
c0f0cc10c8 Merge pull request #780 from RomkaSwallowtail/patch-3
Update Remote
2015-12-31 05:41:11 +07:00
WendyStarfall
17f7050c87 Merge pull request #779 from RomkaSwallowtail/patch-2
Update oc_couples.lsl - force unsit
2015-12-29 15:22:04 +01:00
Romka
bfaeae661c Update oc_remote_sys.lsl 2015-12-26 09:32:38 +03:00
Romka
f414c2b36b Update oc_remote_sys.lsl 2015-12-25 23:23:43 +03:00
Romka
49fc68a7b5 Update oc_remote_sys.lsl 2015-12-25 21:10:49 +03:00
Romka
7dd6b00997 Update oc_remote_sys.lsl 2015-12-24 17:11:30 +03:00
Romka
e2007518e7 Update oc_remote_sys.lsl 2015-12-24 16:46:06 +03:00
Romka
e7a0697a01 Update oc_remote_options.lsl
fix MENUNAME_RESPONSE
2015-12-24 14:06:05 +03:00
Romka
553babea3e Update oc_remote_sys.lsl 2015-12-24 13:41:15 +03:00
Romka
b32f1a6ba3 Update oc_couples.lsl
add force unsit before couples
2015-12-23 22:57:54 +03:00
WendyStarfall
a1e891b39f prevent multiple relays from conflicting
we currently distribute our Heart R8 turbo safety relay derivative and
Satomi's internal relay plugin and these are now prevented from
conflicting with one another: heart r8 will detach if detected by an
actively running oc relay plugin

thanks @GarvinTwine for code implementation
2015-12-18 17:54:53 +01:00
GarvinTwine
7495ce0c44 Added multi height pose support
To allow one pose for different avi sizes to be choosen and played,
poses need to be named: pose+2,pose+1,pose,pose-1,pose-2 
If one pose is detected with height adjustment, up and down arrows will
be added to the pose menu
2015-12-17 06:35:16 +07:00
WendyStarfall
d5117ba1aa build 4.1.0 2015-12-15 22:44:35 +01:00
WendyStarfall
34fb7ec19c Merge pull request #777 from RomkaSwallowtail/patch-2
Update oc_rlvsuite.lsl: sit find
2015-12-12 18:18:47 +01:00
Romka
7b11404206 Update oc_rlvsuite.lsl
add find sit object name by first match
2015-12-12 15:42:43 +03:00
WendyStarfall
e1b3895dcd Merge pull request #776 from RomkaSwallowtail/patch-2
Update oc_rlvsuite.lsl
2015-12-12 08:23:59 +01:00
Romka
89b6c71a06 Update oc_rlvsuite.lsl 2015-12-12 10:20:10 +03:00
WendyStarfall
4d45c6cca9 prevent wearers from ending up on the trust list 2015-12-12 07:09:58 +01:00
WendyStarfall
4cdfc765fb Merge pull request #775 from RomkaSwallowtail/patch-2
oc_rlvsuite.lsl:  outfits folder error
2015-12-12 06:55:27 +01:00
Romka
acb8dfa0a1 Update oc_rlvsuite.lsl
error occurs when "Pick one!" find subfolder
2015-12-09 22:29:13 +03:00
WendyStarfall
8d2f7da003 add notify when standing up is restricted...
...and the wearer is supposed to be seated on a different spot while
already seated on another spot

clear stand up restrictions when the wearer "relogs", receives [Get up]
through the menu or "<prefix>stand" via chat command

#763
2015-12-09 13:36:26 +01:00
WendyStarfall
248347b8ef use no notifies when sitting
and make the buttons [Get up] and [Sit back] more distinct in the menu

I also added proper notify text in case someone wants to mod this and
needs them to be more informative
2015-12-08 16:31:58 +01:00
WendyStarfall
05d718ca0b Merge pull request #774 from OpenCollar/auth
Added a missing confirmation message when the first owner gets added
2015-12-08 12:15:47 +01:00
GarvinTwine
7972addc30 Added a missing confirmation message when the first owner gets added
without vanilla on.
Also a bit message formatting.
2015-12-08 17:41:29 +07:00
WendyStarfall
75d5a21802 Merge branch 'master' of https://github.com/OpenCollar/opencollar 2015-12-08 11:29:22 +01:00
WendyStarfall
8a69e1db13 add notify when dressing is restricted...
...and the user tries to wear an outfit
2015-12-08 11:29:17 +01:00
WendyStarfall
2dd37b759b Merge pull request #773 from OpenCollar/capture
added a command to turn notify for capture me in risky mode on/off:
2015-12-08 11:07:43 +01:00
GarvinTwine
f623fa7c43 added a command to turn notify for capture me in risky mode on/off:
prefix capture info on/off
#770
2015-12-08 17:06:50 +07:00
WendyStarfall
ddbbdcdaea Merge pull request #772 from RomkaSwallowtail/patch-2
Update oc_shocker.lsl: add command to remove app
2015-12-07 17:53:46 +01:00
Romka
69ec53c9e9 Update oc_shocker.lsl
add command to remove app
2015-12-07 19:40:53 +03:00
WendyStarfall
dc4d176995 clear restrictions and shut down before removal 2015-12-07 12:38:31 +01:00
WendyStarfall
602c2b5e74 add command to remove app 2015-12-07 12:34:24 +01:00
WendyStarfall
1e5b7b6b5d add app version stamp and change url
added a placeholder page on the website as well
2015-12-03 13:02:42 +01:00
WendyStarfall
1a51b64975 format safeword, channel and prefix notifies 2015-11-29 13:18:46 +01:00
WendyStarfall
53f358a551 Merge pull request #767 from RomkaSwallowtail/patch-3
Update oc_com.lsl fix #764
2015-11-29 12:58:33 +01:00
Romka
dc041803c5 Update oc_com.lsl
#764
2015-11-29 14:51:21 +03:00
WendyStarfall
8b2347b743 build 4.0.17
this one does not yet include f56e80cb9a
and 4ff921d9a8
2015-11-29 11:04:47 +01:00
WendyStarfall
4a043e72e1 Merge pull request #766 from RomkaSwallowtail/patch-2
Update oc_label.lsl: fix some typos
2015-11-29 10:50:14 +01:00
Romka
6f65b01229 Update oc_label.lsl
fix some typos in the dialog
2015-11-29 12:46:38 +03:00
Romka
35d8a3720e Update oc_dialog.lsl
remove unused params from lSensorDetails list : iSender, iNum
I could not find where they are used on

it will save a few bytes of script memory
2015-11-26 18:28:39 +03:00
GarvinTwine
4ff921d9a8 Merge pull request #759 from RomkaSwallowtail/patch-1
oc_particle.lsl: untargeted dialogue
2015-11-26 10:10:52 +07:00
GarvinTwine
f56e80cb9a Merge pull request #760 from RomkaSwallowtail/patch-2
oc_dialog.lsl:  sanitize NULL_KEY
2015-11-26 10:10:34 +07:00
Romka
19df93f28e Update oc_dialog.lsl
sanitize NULL_KEY kRCPT to prevent unexpected dialogues
2015-11-22 11:41:57 +03:00
Romka
dc88de8d55 Update oc_particle.lsl
sanitize NULL_KEY in Dialog
2015-11-22 11:26:48 +03:00
Romka
59ab11ba4e unacceptable dialogue
I do not understand why it is needed.
because LM_SETTING_RESPONSE  returns with empty kMessageID, and it causes unacceptable ConfigureMenu dialogue to 'null_key user'.
in this case, it is meaningless.
I comment it for the future
2015-11-22 10:17:41 +03:00
WendyStarfall
0e43e4b078 Merge pull request #758 from RomkaSwallowtail/patch-1
Fix Bug  #757
2015-11-21 22:17:02 +01:00
Romka
511ffb5af0 Fix Bug #757
kID <> kAv typo
2015-11-21 23:48:48 +03:00
WendyStarfall
d8c4013c71 make thingy increment more C-like 2015-11-18 18:10:17 +01:00
WendyStarfall
281bb5cfa7 build 4.0.14 2015-11-17 19:08:54 +01:00
GarvinTwine
1dbc358f07 Update oc_remote_sys.lsl
changed while conditions from while (i++ <>= something) to i=i+1; while (i <>= something) as the compare is else done before the +-
2015-11-17 16:17:07 +07:00
WendyStarfall
a4ed66824e Merge pull request #755 from OpenCollar/i++
removed questionable not really needed do while loops with i++
2015-11-17 09:49:16 +01:00
GarvinTwine
7905757358 removed questionable not really needed do while loops with i++
conditions
2015-11-17 15:47:34 +07:00
WendyStarfall
941b2d44e9 don't remove stuff
this reverts 7b43d0a0b5 and
001a7d07e0
2015-11-17 09:34:35 +01:00
WendyStarfall
4da253604c Merge pull request #754 from OpenCollar/specular-themes
added a new shiny option "specular" and enabled to change back to non
2015-11-17 05:03:53 +01:00
GarvinTwine
fac3dc7fd2 added a new shiny option "specular" and enabled to change back to non
textured default shiny options which got somehow "broken" in recent sl
updates.
issue #752
2015-11-17 10:48:16 +07:00
WendyStarfall
001a7d07e0 Merge pull request #753 from OpenCollar/updateshim
added a final remove of listed items before we delete ourselves, just
2015-11-17 04:20:57 +01:00
GarvinTwine
1a027fbfe2 added a final remove of listed items before we delete ourselves, just
another try to fight "Old Script" issues
2015-11-17 10:16:38 +07:00
WendyStarfall
0ecc14973c build 4.0.12 2015-11-15 12:12:37 +01:00
WendyStarfall
5b8d84f7fb Merge pull request #751 from OpenCollar/iintegrity-test
Added a command to test script integrity concerning the core5scripts in
2015-11-15 10:57:33 +01:00
GarvinTwine
6a471fd907 Added a command to test script integrity concerning the core5scripts in
non root prims.
prefix test integrity calls those scritps, collects replies and
interprets giving out a "test passed" or "test failed" with hints to the
failures
issue #750
2015-11-15 16:02:25 +07:00
WendyStarfall
fc69addfe2 ship 4.0.11
#744
#745
#746
2015-11-12 16:24:33 +01:00
WendyStarfall
146546a386 Merge pull request #748 from OpenCollar/bell-meshlabel
fix for issue #746
2015-11-12 04:24:43 +01:00
GarvinTwine
f7ebea1511 fixes #747
added a return after the remove confirm menu to avoid in any case a bell
menu to popup.
2015-11-12 10:17:26 +07:00
GarvinTwine
c96f965b0e fix for issue #746
the command to remove the menu entry was sent to the wrong link, fixed!
2015-11-12 10:12:38 +07:00
WendyStarfall
5c9445879b change order for setting the pin
#745
2015-11-12 02:51:39 +01:00
WendyStarfall
7b43d0a0b5 Merge pull request #744 from OpenCollar/CleanCore5
make triple sure no scripts are left in root that dont belong there!
2015-11-11 01:50:56 +01:00
GarvinTwine
e2eca9b596 make tripe sure no scripts are left in root that dont belong there!
Possibly asset server issues caused this to appear, that after patch
installations a script that gets deleted during installation from root
remained there. Here we try twice more to delete them and added the
deletion to the "Fix" command.
2015-11-10 15:14:41 +07:00
WendyStarfall
224a280b33 Merge pull request #743 from natalja92/master
fixed typo and old urls
2015-11-10 07:28:10 +01:00
Natalja Velvetclaw
667ba7a155 fixed old urls 2015-11-08 20:16:20 +01:00
Natalja Velvetclaw
1639c40d05 fixed typo 2015-11-08 20:04:54 +01:00
WendyStarfall
c72a008872 ship 4.0.7
#739
2015-11-08 17:14:06 +01:00
WendyStarfall
e404e6a53a Merge pull request #740 from OpenCollar/auth-vanilla
fix for issue #739
2015-11-08 15:11:38 +01:00
WendyStarfall
ee9bcc7eb0 Merge pull request #741 from RomkaSwallowtail/patch-1
Update oc_rlvcmd.lsl
2015-11-08 15:11:13 +01:00
WendyStarfall
944f529924 Merge pull request #742 from RomkaSwallowtail/patch-2
Update and rename OpenCollar - cagehome.lsl to oc_cagehome.lsl
2015-11-08 15:11:00 +01:00
Romka
bb738752b5 Update and rename OpenCollar - cagehome.lsl to oc_cagehome.lsl
total rework for 4.0 api
2015-11-08 14:36:54 +03:00
Romka
4464d40e0e Update oc_rlvcmd.lsl
fix some bugs and dialogs
2015-11-08 14:24:53 +03:00
GarvinTwine
2c9cd6f590 fix for issue #739
only set Vanilla check when wearer is owner,
auto-remove wearer from trusted list when they become owner (vanilla
gets enabled).
2015-11-08 17:34:01 +07:00
WendyStarfall
dca379fe3a Merge pull request #738 from RomkaSwallowtail/patch-1
Update and rename OpenCollar - rlvcmd.lsl to oc_rlvcmd.lsl
2015-11-07 20:32:17 +01:00
Romka
4a2ff4b0f0 Update and rename OpenCollar - rlvcmd.lsl to oc_rlvcmd.lsl
update for 4.0 api

maybe need more work
2015-11-07 22:24:53 +03:00
WendyStarfall
e9686c5970 Merge pull request #737 from RomkaSwallowtail/patch-4
Update and rename OpenCollar - garble.lsl to oc_garble.lsl
2015-11-07 19:09:45 +01:00
WendyStarfall
58226c81ac Merge pull request #736 from RomkaSwallowtail/patch-3
Update and rename OpenCollar - timer.lsl to oc_timer.lsl
2015-11-07 19:08:58 +01:00
WendyStarfall
07e6b20619 Merge pull request #735 from RomkaSwallowtail/patch-2
Update oc_undress.lsl
2015-11-07 19:08:21 +01:00
WendyStarfall
6f17cb210a Merge pull request #734 from RomkaSwallowtail/patch-1
Update oc_rlvstuff.lsl
2015-11-07 19:07:37 +01:00
Romka
21955c7cbd Update and rename OpenCollar - garble.lsl to oc_garble.lsl
update for 4.0 api
2015-11-07 20:59:19 +03:00
Romka
a07c29b4e2 Update and rename OpenCollar - timer.lsl to oc_timer.lsl
update for 4.0 api
2015-11-07 20:55:44 +03:00
Romka
26cdbb83ac Update oc_undress.lsl
udate for 4.0 api
2015-11-07 20:52:16 +03:00
Romka
e9b5823c1c Update oc_rlvstuff.lsl
update for 4.0 api
2015-11-07 20:45:24 +03:00
WendyStarfall
9a1d0e3a52 ship 4.0.6
#725 #726 #728 #729 #732 #733
2015-11-07 13:27:25 +01:00
WendyStarfall
be3b23f7f8 drop the bass
This will play a bass drum drop when owners or trusted are added.

The sample is from a Roland TR-808 Rhythm Composer with Bass Drum set to
minimum tuning and maximum decay.

Attribution goes to Michael Fischer who generated this legendary drop
and other samples from a real TR-808 in September 1994 on a Macintosh
Quadra 660AV with SoundEdit 16.
2015-11-07 08:38:16 +01:00
WendyStarfall
8538ac16e4 Merge pull request #731 from OpenCollar/print-settings
fix that settings would only be printed to wearer if not trusted at the
2015-11-07 05:06:09 +01:00
GarvinTwine
63bd830325 fix that settings would only be printed to wearer if not trusted at the
same time...
2015-11-06 20:07:11 +07:00
WendyStarfall
54d684f011 Merge pull request #730 from OpenCollar/rlv-ranking
for issue #729
2015-11-06 10:32:58 +01:00
GarvinTwine
b7e6c60201 for issue #729
added ranks for rlv-restrictions
made RESET and CLEAR ALL owner only functions (wearer can always use
safeword to get released)
2015-11-06 15:01:09 +07:00
WendyStarfall
cb6fcfd9ce Merge pull request #727 from OpenCollar/installer_bundles
prevent % > 100 , change text for action:
2015-11-06 05:45:28 +01:00
GarvinTwine
2a313b2efe prevent % > 100 , change text for action:
installing/removing
2015-11-06 11:43:31 +07:00
WendyStarfall
5965da1ae4 ship 4.0.2
#725
#726
2015-11-05 05:31:12 +01:00
WendyStarfall
91740c8fd1 Merge pull request #724 from OpenCollar/rlvsys
fixed "show restrictions" output
2015-11-05 04:15:34 +01:00
GarvinTwine
858abc0a69 fixed "show restrictions" output
the output missed the first (and if only the only) entry who restricted
what and only showed Collar(): instead of:
Collar(vdRestrict):sendim....
fixed here.
2015-11-04 14:16:38 +07:00
GarvinTwine
a7c0f41cfc Merge pull request #722 from OpenCollar/com-fix
Wrong order of LMs when changing a prefix caused a false notify with
2015-10-30 17:54:53 +07:00
GarvinTwine
88aa30cc81 Wrong order of LMs when changing a prefix caused a false notify with
still the old prefix and not the new one. 
Fixed by sending out the new before doing the notify.
2015-10-30 17:51:46 +07:00
WendyStarfall
76bfe22c6e oops! 2015-10-30 11:33:34 +01:00
WendyStarfall
9e03c4ec7d ship 4.0 pre-release
http://www.opencollar.at/blog/pre-release-time-for-40
2015-10-30 11:31:47 +01:00
WendyStarfall
cd3d3081f9 clear news 2015-10-29 20:47:11 +01:00
WendyStarfall
4a90c17b2e list correct author and copyright date
I remember this was a losely based on the "paint" idea and is a very
useful plugin, possibly the most useful code in the spares directory at
this moment.

This work attributes to @RomkaSwallowtail 🐱
2015-10-27 17:32:10 +01:00
WendyStarfall
7506a3b7ab Merge pull request #721 from RomkaSwallowtail/patch-1
Update and rename OpenCollar - customizer.lsl to oc_customizer.lsl
2015-10-27 17:21:53 +01:00
Romka
bbd8a0dfce Update and rename OpenCollar - customizer.lsl to oc_customizer.lsl
rework for 4.0 api
2015-10-27 17:27:42 +03:00
WendyStarfall
f21010fd18 fix re-init of installation when set to true on rez 2015-10-27 06:39:15 +01:00
WendyStarfall
41fa32e8e2 add readme; change header title; clean up cruft 2015-10-27 04:54:23 +01:00
WendyStarfall
002cdff32a change feature names
there is no need to prefix this with "disgraced", curious people can
find the origin in the header or in the git log
2015-10-27 04:36:35 +01:00
WendyStarfall
b1bfd12e1c change feature name 2015-10-27 03:54:12 +01:00
WendyStarfall
12c1dea98b prepare feature name change
kidnap -> capture
2015-10-27 03:51:45 +01:00
WendyStarfall
0b4c607d70 add switch that enables installations right on rez 2015-10-26 18:12:44 +01:00
WendyStarfall
f00681297d fancify main menu 2015-10-26 04:04:20 +01:00
WendyStarfall
44122f5963 change notify for completed installations 2015-10-26 03:34:33 +01:00
WendyStarfall
aec3c52ad1 prevent conflicts with other chat responsive apps
add app version strings
thanks @GarvinTwine for the override solution
2015-10-24 15:37:31 +02:00
WendyStarfall
32773a31ff don't draw default labels
thanks @RomkaSwallowtail for bringing this to attention and providing a
fix and to @GarvinTwine for the logical implementation; this closes #720
2015-10-21 12:23:00 +02:00
WendyStarfall
7ad39b79ad fall back to original value when custom names reset 2015-10-19 11:28:08 +02:00
WendyStarfall
c36f509227 add command to call StopAnims function 2015-10-19 11:27:26 +02:00
WendyStarfall
5d67f711e9 change loadurl blurb 2015-10-13 22:11:04 +02:00
WendyStarfall
f55ffdd8e2 change ~version name and text to a full name
Instead of adding the version number from the "~version" card to the
object's name we change the objects name to the full text given in a now
called ".name" card. This card will set the first line as object name
and for hover text, will do a linebreak after a space-hyphen-space " -
".

thanks @GarvinTwine
2015-10-13 12:15:45 +02:00
WendyStarfall
d690a911a3 behave more naturally for small installs
thanks @GarvinTwine for that; we are not just plopping to DONE on the
installer bar during small installs, this makes things appear a lot more
naturally
2015-10-13 11:39:20 +02:00
WendyStarfall
f040548fc0 add info feature for release notes etc.
A card ".info" is added to the installer contents. The first line of
this card is an url to be used with the loadurl dialog and the following
lines are a short blurb we print after installations are completed. If
no ".info" card is present, we skip the link and info blurb.
2015-10-13 11:36:24 +02:00
WendyStarfall
0cc34e8372 update slurls 2015-10-12 14:53:27 +02:00
WendyStarfall
4410ce6f63 change "signature"
#711
2015-10-11 17:50:24 +02:00
WendyStarfall
7d6b97fd68 give themes a safe moment to init 2015-10-11 10:58:53 +02:00
WendyStarfall
a1b4a1141e Merge pull request #710 from RomkaSwallowtail/patch-1
Update oc_relay.lsl - too many llSetTimerEvent(g_iGarbageRate);
2015-10-10 19:57:13 +02:00
Romka
f18017e415 Update oc_relay.lsl
remove plurality of repeating llSetTimerEvent(g_iGarbageRate);
2015-10-10 20:33:17 +03:00
WendyStarfall
2dde00d430 Merge pull request #709 from RomkaSwallowtail/patch-1
oc_relay, another bug fix
2015-10-10 19:32:07 +02:00
Romka
3e30b4b2f6 Update oc_relay.lsl
remove unused 'Help' menu

fix relay menu commands
2015-10-10 20:17:17 +03:00
WendyStarfall
e0cbb68ec4 Merge pull request #708 from RomkaSwallowtail/patch-3
Update oc_relay.lsl
2015-10-10 16:41:12 +02:00
Romka
85dc086300 Update oc_relay.lsl 2015-10-10 17:35:48 +03:00
WendyStarfall
845e664b40 Merge pull request #707 from RomkaSwallowtail/patch-3
oc_relay.lsl  small fix
2015-10-10 16:35:40 +02:00
Romka
457c8b4f6d Update oc_relay.lsl
changed MinMode Menu & dialogs
2015-10-10 17:31:24 +03:00
Romka
e0b1592f01 Update oc_relay.lsl
remove unused command
2015-10-10 16:31:57 +03:00
Romka
1de2b8d5e9 Update oc_relay.lsl
small fix
2015-10-10 16:09:55 +03:00
WendyStarfall
7e0dce958e Merge pull request #706 from RomkaSwallowtail/patch-3
Relay reworked for api 4.0
2015-10-10 14:38:17 +02:00
Romka
c437d5e799 reworked for api 4.0
Notify, Dialogs, Links e.t.c.

chaged lists names and settings save/restore
2015-10-10 14:15:41 +03:00
WendyStarfall
dc6d735cbe update license 2015-10-09 12:49:22 +02:00
WendyStarfall
86889a571e correct api compatibility comments 2015-10-09 11:48:30 +02:00
WendyStarfall
1f85640b17 update license and help card headlines
the .cards look off in formatting but will be fine if copied and pasted
into notecards in-world with viewer default fonts
2015-10-08 13:21:52 +02:00
WendyStarfall
ad63b67bbb build lock elements from name rather than desc.
so we can have our lock also as a part of a different looks set
2015-10-08 10:25:21 +02:00
WendyStarfall
2d1fdcafb8 change LED names for less nerdy buttons in "Looks" 2015-10-08 09:53:23 +02:00
WendyStarfall
bd1bf188d6 don't reset leash feel on theme change 2015-10-08 08:47:39 +02:00
WendyStarfall
78faa43eb0 update rm dialogs and corresponding notifies 2015-10-07 21:08:58 +02:00
WendyStarfall
a703ad6c5d fine tune effects for LED i/o states 2015-10-07 16:42:36 +02:00
WendyStarfall
f53ae205b1 fix group URI 2015-10-07 14:46:53 +02:00
WendyStarfall
5632c3327a Merge pull request #703 from RomkaSwallowtail/patch-1
use NameURI in Access List
2015-10-07 14:39:21 +02:00
WendyStarfall
68d20b428f fall back to object name if there is no description
- use the object description or fall back to object name if the device
is reset
2015-10-07 14:30:00 +02:00
WendyStarfall
ff611f4c8b make the object description the default device name 2015-10-07 13:53:39 +02:00
WendyStarfall
c657c6e7f1 apply themes on leashes only if defined in card 2015-10-07 13:51:21 +02:00
Romka
9d3cc68307 use NameURI in Access List 2015-10-07 14:43:18 +03:00
WendyStarfall
2e02f67502 remove rlv specific anchor links 2015-10-07 13:05:10 +02:00
WendyStarfall
ff9d0a5216 improve visibility for LED i/o states 2015-10-07 12:49:38 +02:00
WendyStarfall
1ccd7e9108 remove redundant true at 1003 2015-10-07 11:37:10 +02:00
WendyStarfall
b1b1901dd4 add better info blurb for update releases ... +
- use trademark sign only were meaningful
- hotlink update info in help/about
- adjust version print
2015-10-07 11:32:03 +02:00
WendyStarfall
dac873d8cb add reminder for designers and distributors 2015-10-07 06:54:15 +02:00
WendyStarfall
816f23068c live test version check (3 of 3)
1. Check: Tests the patch value.
2. Check: Tests the minor value.
3. Check: Tests the patch value with newline added.
2015-10-07 03:01:22 +02:00
WendyStarfall
d53eef1603 live test version check (2 of 3) 2015-10-07 02:50:33 +02:00
WendyStarfall
c5d4624a84 live test version check (1 of 3) 2015-10-07 02:30:46 +02:00
WendyStarfall
a71a81cabe nanoscopical cosmetic edits in headlines 2015-10-06 12:02:42 +02:00
WendyStarfall
7af410c693 refresh default destinations on rez 2015-10-06 12:00:04 +02:00
WendyStarfall
1907dcf14c add trademark sign where recommended 2015-10-06 09:13:43 +02:00
WendyStarfall
70956374e3 remove anchor links 2015-10-06 01:33:54 +02:00
WendyStarfall
8a933d89cc change url for auth intro page 2015-10-06 00:45:08 +02:00
WendyStarfall
92aca09cd4 fix typo 2015-10-06 00:10:18 +02:00
WendyStarfall
1d914a8646 make origin uris "inspect" style + ...
- enable strings to be either agent or group
- use substring to compare only ids
2015-10-06 00:10:04 +02:00
WendyStarfall
c2c83f5bf1 update list 2015-10-05 13:52:52 +02:00
WendyStarfall
0a1e03d1bf fix empty entry at avi sensor dialog list
commented in #700
2015-10-05 13:41:49 +02:00
WendyStarfall
f4d4cc7b8e build in-world 151001.1 2015-10-03 12:16:23 +02:00
WendyStarfall
917ceb4464 add sidekick bookmark and update contact slurls 2015-10-02 20:51:08 +02:00
WendyStarfall
ef3869255d sync in-world 151001.1 2015-10-01 01:45:02 +02:00
WendyStarfall
4b80187aa5 refresh script header 2015-09-30 23:44:31 +02:00
WendyStarfall
44674a8ef3 update shocker to new naming convention 2015-09-30 23:40:09 +02:00
WendyStarfall
72af1e4423 update distributors 2015-09-29 08:09:24 +02:00
WendyStarfall
21797172ec Merge pull request #701 from kyrahabattoir/collar-mesh
Added the reference blend files for the collar.
2015-09-29 07:49:09 +02:00
Kyrah Abattoir
d31fb7c848 Added the reference blend files for the collar.
-Opencollar.blend : Work project.
-OpenCollarExport.blend : Parts ready for export.
2015-09-29 07:34:14 +02:00
GarvinTwine
efd667bf65 Merge pull request #700 from RomkaSwallowtail/patch-1
fix Notify & add sort agentList by distace
2015-09-29 05:47:18 +07:00
Romka
2727846cc4 fix Notify & add sort agentList by distace
llMessageLinked(LINK_ROOT,NOTIFY, ....);  is don't work at this condition, replaced for Notify(....);

I think the agentlist sorted by the distance it is convenient, is no?
2015-09-28 23:07:38 +03:00
WendyStarfall
a1a181a74a update temple bookmark 2015-09-28 10:54:26 +02:00
WendyStarfall
44eb3cec86 Merge pull request #699 from OpenCollar/AUTH-Final
removed notices to trusted by removal
2015-09-27 03:04:12 +02:00
GarvinTwine
a1ebf2a868 removed notices to trusted by removal 2015-09-27 06:02:09 +07:00
WendyStarfall
b7714ccf87 Merge pull request #697 from RomkaSwallowtail/patch-1
incorrect saving if glow=0
2015-09-25 11:15:45 +02:00
Romka
5efd5257a5 incorrect saving if glow=0
how to see that bug:
1 set element glow low or high (any , not none)
2 set collar invisibe and visible (on and off 'stealth' in options menu)
3 set element glow none
4 on and off stealth again - and element glow again
2015-09-24 22:22:18 +03:00
WendyStarfall
ac49401955 Merge pull request #695 from RomkaSwallowtail/patch-1
division by zero
2015-09-24 19:23:40 +02:00
WendyStarfall
b5c1fa6dbb Merge pull request #696 from RomkaSwallowtail/patch-3
for OpenCollar/NOTIFY …
2015-09-24 19:22:51 +02:00
Romka
d4989c4636 for OpenCollar/NOTIFY … 2015-09-24 13:24:25 +03:00
Romka
fb3847d3a0 Update oc_installer_bundles.lsl
if (g_iItemCounter == g_iTotalItems) g_iTotalItems= 0;  - ????

in line 84:  fCount = 100*(fCount/g_iTotalItems); - when g_iTotalItems = 0  (division by zero) it causes error message "OpenCollar Updater - 150917.1 [script:oc_installer_bundles] Script run-time error Math Error"
2015-09-24 11:58:59 +03:00
WendyStarfall
b5d9f2afd9 Merge pull request #694 from OpenCollar/LED-Final
chnged the LEDs description to LED~auth, LED~dialog and LED~rlv to be
2015-09-24 04:03:26 +02:00
GarvinTwine
3f2acc41d5 chnged the LEDs description to LED~auth, LED~dialog and LED~rlv to be
able to group them for color changes in themes.
this should be the last non-showstopper commit before release!
2015-09-24 08:45:48 +07:00
WendyStarfall
2888a5d533 Merge pull request #693 from OpenCollar/NOTIFY
Notify
2015-09-24 02:12:12 +02:00
GarvinTwine
1728de878a just a bit cosmetic ;) 2015-09-23 14:27:31 +07:00
GarvinTwine
a6fbba97dd remaining Apps and i forgot to remove the if (iNum == NOTIFY) which is
no more needed
2015-09-23 14:02:59 +07:00
GarvinTwine
6e1951da91 changed the LINK# for NOTIFY and SAY LMs to LINK_DIALOG 2015-09-23 13:44:25 +07:00
GarvinTwine
a87468d92f for #690 by @Romka
For performance reasons we move the NOTIFY and SAY function into the
dialog script to able to direct them to that script only.
removed from com and added to dialog (also a %VARS% substitide function
makes sense here now).
All script need now to send their NOTIFY LMs to the DIALOG_LINK prim!
2015-09-23 13:29:16 +07:00
WendyStarfall
148c2edb81 Merge pull request #691 from OpenCollar/LED
Led
2015-09-23 07:50:29 +02:00
WendyStarfall
75fa756040 Merge pull request #689 from RomkaSwallowtail/patch-2
Shocker 4.0
2015-09-19 08:35:13 +02:00
GarvinTwine
05359f5d0b forgot to clean up some things 2015-09-19 10:45:17 +07:00
GarvinTwine
9df3377146 due to the forced delay of the llDialog function i decided to simlpy
turn the dialog led on before that and off again after that, no timer
nothing needed, it is a bit long (1 second) but i like it.
Also changed the time from 0.11 to 0.22 seconds for auth and rlv leds
(it seems anyway rather inaccurate how long 0.11 seconds in sl script
actually last), also just turn on the LED and start timer that turns it
off again now, seems simpler and more straight forward than using a
variable to turn on and off
2015-09-19 10:34:10 +07:00
GarvinTwine
1f689e2924 Adding LED blinking if auth, dialog or rlvsys get to process
link_messages: scripts check if there is a prim with ~led_auth,
~led_dialog, ~led_rlv in the description, if not, they set their owns
prims as leds.

Auth:
Timer on every link_message with iNum == 0 or iNum == AUTH_REQUEST
(external auth request from attachments) the LED goes bright for 0.11
seconds.

Dialog:
starts timer for 0.11 seconds on every link_message it recieves and
changes it to 5 seconds (default timer to check menu lists) after the
LED has blinked
(no idea why but the LED blinks here always like 2 seconds after the
dialog pops up... as it is called first thing! i tried to reduce the
delay for on to min, still comes delayed, no idea why)

RLVsys:
as adding more to the timer causes issues i cheat here and use a
llSensorRepeat as timer...
i simply do a Sensor for something called "N0thin9" within 0.1 meters
and a small arch, every 0.11 seconds and act on no_sensor as if it were
my timer().
LED gets triggered on RLV menu clicks and RLV_CMDs (else this hardly
happens as rlv does not that much after all but exception and discraged
rlv, folders do most)
2015-09-19 10:20:28 +07:00
Romka
f104066112 Update OpenCollar - shocker.lsl 2015-09-18 08:29:08 +03:00
Romka
c2b1e617b9 Update OpenCollar - shocker.lsl 2015-09-18 08:15:28 +03:00
Romka
07fbff246e Shocker 4.0
converted for compatibility
2015-09-17 17:19:37 +03:00
WendyStarfall
b897f2e9d2 build in-world 150917.2
I was building the full version installers since 150914.3 and did manual
checks in version headers since 150901.1 and so far there weren't any
errors at all. Multi-link is a success! <3

PS: Collar build includes ~led_auth, ~led_dialog and ~led_rlv
2015-09-17 06:07:48 +02:00
WendyStarfall
7f36c90df0 Merge pull request #688 from OpenCollar/badwords
reordered menu buttons, added a "Stop" button so owners can end the
2015-09-16 10:19:59 +02:00
GarvinTwine
2e391de7c6 Update oc_badwords.lsl 2015-09-16 15:09:26 +07:00
GarvinTwine
4dd22d47d0 reordered menu buttons, added a "Stop" button so owners can end the
punishment as well.
2015-09-16 14:53:01 +07:00
WendyStarfall
42accc6768 Merge pull request #687 from RomkaSwallowtail/patch-1
blanks & spaces
2015-09-16 09:33:53 +02:00
Romka
b33d06625c blanks & spaces
Added handling of blank lines and spaces in the BUNDLE notecards, to prevent hang script.
2015-09-16 09:35:37 +03:00
GarvinTwine
4aa80d7b21 Merge pull request #686 from OpenCollar/final
Final
2015-09-16 10:31:31 +07:00
GarvinTwine
147d2503c6 Colored progress bar
auto delete after 5 minutes avi out of range
2015-09-15 10:03:06 +07:00
GarvinTwine
a149b6d07a distributor display changes for unverified status 2015-09-15 09:59:31 +07:00
WendyStarfall
bd034369bb build in-world 150914.3
oc_auth
oc_com
oc_disgraced_rlv
oc_disgraced_themes
oc_leash
oc_sys
oc_installer_bundles
oc_installer_sys
oc_update_shim
2015-09-14 07:48:19 +02:00
WendyStarfall
45bcd38168 wrap WearFolder logic; add pause for SSA baking
attributing @GarvinTwine for work
thanks to @toywylie for advice on SSA
2015-09-14 04:49:43 +02:00
WendyStarfall
f7b7b946cb sync in-world 150914.1 2015-09-14 04:13:54 +02:00
WendyStarfall
61a7819bf2 Merge pull request #685 from OpenCollar/leash
removed give and rez post commands and changed Post to Anchor button.
2015-09-13 07:51:38 +02:00
GarvinTwine
91dc37f338 removed give and rez post commands and changed Post to Anchor button.
park command for ballon remains
2015-09-13 12:30:41 +07:00
GarvinTwine
01158b8d41 Merge pull request #684 from OpenCollar/themes
Installer fix for removing shim
2015-09-11 09:50:54 +07:00
GarvinTwine
30865d54a0 fix to delete itself for non-update installs 2015-09-10 20:11:18 +07:00
GarvinTwine
74645512c1 fix for not removing the shim itself if Installation is not an update 2015-09-10 20:08:19 +07:00
GarvinTwine
0a17336c7f Merge pull request #683 from OpenCollar/themes
Themes
2015-09-10 20:04:54 +07:00
GarvinTwine
d930ef187b add distributor lookup 2015-09-10 10:19:26 +07:00
GarvinTwine
c9e77ed73f added messages for possible future cuff support of themes 2015-09-10 10:17:51 +07:00
GarvinTwine
08857b7931 Merge branch 'master' of https://github.com/OpenCollar/opencollar into themes 2015-09-10 09:23:38 +07:00
GarvinTwine
d187251092 Merge branch 'master' of https://github.com/OpenCollar/opencollar into themes
Conflicts:
	src/collar/oc_disgraced_themes.lsl
2015-09-10 09:22:45 +07:00
WendyStarfall
6993af6320 add new id to test length limit
442 lines
16,353 bit
2015-09-05 10:08:24 +02:00
WendyStarfall
ca20e9b77b create distributor list 2015-09-05 09:57:12 +02:00
WendyStarfall
73b647ac31 add notify to inform of theme change 2015-09-04 11:45:27 +02:00
GarvinTwine
c258d9aeb7 added a notify when a theme was selected 2015-09-04 13:26:11 +07:00
WendyStarfall
2f4f11f836 Merge pull request #682 from OpenCollar/Installer
limit SayOwners to one time per script reset(login) circle
2015-09-04 06:08:05 +02:00
GarvinTwine
f84882dd8c limit SayOwners to one time per script reset(login) circle
only reboot all script if bundles 00, 23 or 42 are installed, else dont
reboot as it is only a small app installation and no patch or update to
core scripts
2015-09-04 09:20:56 +07:00
WendyStarfall
40c5f4d13b Merge pull request #681 from OpenCollar/Installer
finalizing the new Installer
2015-09-03 03:26:45 +02:00
GarvinTwine
7be0117f71 finalizing the new Installer
Fixes for last core5 bundle script solved. 
new status bar added
Auto reset after 10 secounds after completed install
auto delete after check for owner nearby every 30 seconds
new sounds added for ask and do morse code
2015-09-03 08:23:32 +07:00
WendyStarfall
c0960e46f2 build in-world 150902.1 2015-09-02 17:14:29 +02:00
WendyStarfall
5965ab7cf3 remove newlines at bundle end 2015-09-02 04:30:25 +02:00
WendyStarfall
6b30db4a78 rename and clean up bundles 2015-09-02 04:29:28 +02:00
WendyStarfall
9d60b31509 move cleanup to spares 2015-09-02 04:05:52 +02:00
WendyStarfall
9a550d54da build in-world 150901.1 2015-09-02 04:03:11 +02:00
WendyStarfall
128f3e211d Merge pull request #680 from OpenCollar/LMFix
little fix not to reply to all LM collar requests.
2015-08-31 15:09:32 +02:00
GarvinTwine
54268b61f1 little fix not to reply to all LM collar requests. 2015-08-31 15:42:46 +07:00
GarvinTwine
490cf28cac Merge pull request #679 from OpenCollar/Memory
commented experimental memory limitation from collar scripts
2015-08-31 15:41:07 +07:00
GarvinTwine
43fff8e0be commented experimental memory limitation from collar scripts 2015-08-31 11:41:51 +07:00
WendyStarfall
79933a8075 Merge pull request #678 from OpenCollar/Installer
Installer update for multi prim core
2015-08-31 04:16:43 +02:00
GarvinTwine
6304720da4 Update BUNDLE_02_Core_REQUIRED 2015-08-29 18:54:50 +07:00
GarvinTwine
afde6e3038 added the current header 2015-08-29 15:15:17 +07:00
GarvinTwine
d230452084 added the right copyright text 2015-08-29 15:11:57 +07:00
GarvinTwine
cc18cb1d5b Updated Installer for multi prim core
Simplifying Update/Install process for User:
Either click the updater and confirm or just hit the collars Update
button while the updater is rezzed nearby
2015-08-29 10:34:25 +07:00
WendyStarfall
b01c08ae54 Merge pull request #677 from OpenCollar/UpdateFixes
Update fixes
2015-08-28 12:50:31 +02:00
GarvinTwine
2c7806677c finalizing remote script loading:
individualizing LMs to scriptnames and adding a closing LoadPin on first
start
2015-08-28 13:27:59 +07:00
GarvinTwine
521034fc9e added a reboot --f command to reboot scripts without confimation menu
for updates or when ever this might be useful
2015-08-27 11:35:08 +07:00
GarvinTwine
d3343c1ec1 changed the "Cancel" to a "BACK" button that opens the main menu 2015-08-27 10:34:12 +07:00
GarvinTwine
0c021d046b added scriptname into the pin LM, closing loadPin after frist init
prevent ownerlist spam on inventory change during updates
2015-08-27 08:21:07 +07:00
GarvinTwine
d4da6fa4e6 Merge pull request #676 from OpenCollar/AnimationLists
Animation script provites a list of playable animations
2015-08-24 18:31:55 +07:00
GarvinTwine
0a50c716f2 syntax error typo fix 2015-08-24 11:37:22 +07:00
GarvinTwine
872d7657e5 adjusted animation lists to the new design, fixed some wrong menu calls
on "BACK" buttons
2015-08-24 11:36:29 +07:00
GarvinTwine
9f8b9fb500 added new iNum for ANIM_LIST_REQUEST and RESPONSE to send the list of
animations to requesting scripts like badwords
2015-08-24 10:39:31 +07:00
GarvinTwine
667861561b removed remenu after "Fix menu" command to get real refreshed menus 2015-08-24 10:36:33 +07:00
WendyStarfall
45bd4f60dc Merge pull request #675 from VirtualDisgrace/performance
release preparations; i
2015-08-23 20:48:42 +02:00
GarvinTwine
b7776b6a75 had some typos in the LM messages 2015-08-22 18:58:03 +07:00
GarvinTwine
61fceea368 added LM protocoll support for the AO-Link so couple anim partner's AOs
can be stopped, too, when using AO-Link or Firesotrm AO.
2015-08-22 13:57:55 +07:00
GarvinTwine
698c8f39ec changed channel and safeword to global-token,
moved command handling in com script fomr link_message event into a
UserCommand function
2015-08-21 08:16:23 +07:00
GarvinTwine
8a59ec0ca0 just a CAPS change ;) 2015-08-19 20:23:26 +07:00
GarvinTwine
1c92874d8d added LM support for Firestorm buildin AO 2015-08-19 20:18:51 +07:00
GarvinTwine
2367317768 Merge branch 'performance' of https://github.com/VirtualDisgrace/Collar.git into performance 2015-08-19 12:31:08 +07:00
GarvinTwine
a54f8e2fba new linkset adjustment for badwords, camera and label scripts 2015-08-19 12:28:06 +07:00
GarvinTwine
1fa31a92d6 recheck and fine tuning of LMs targets, some formatting.
Leash was missing a setting response for turn off command to update the
menu
2015-08-19 12:19:18 +07:00
GarvinTwine
6c2f09a89b added auto switch to "Looks" button if kidnap is not present 2015-08-19 09:54:32 +07:00
GarvinTwine
dc8b6b6ab7 added command to show prims to add or edit notecards/animations:
prefix show animator
prefix show storage
hide hides them again.
couples renames the linked prim now temporarily when it does a animation
permission request to %DEVICENAME%
some formatting and fine tuning in com and sys
2015-08-19 09:08:34 +07:00
WendyStarfall
f2c21c55bb sync at beta 4.0/3.7.0 2015-08-17 21:33:45 +02:00
GarvinTwine
1a039e28a0 a tempowner save should have been a delete, fixed 2015-08-17 09:43:07 +07:00
GarvinTwine
39d849ac92 corrected a wrong iNum for saving 2015-08-15 14:50:06 +07:00
GarvinTwine
f12c4c97be changed the way to reply to external (attachment) auth request so that
the reply comes from the root prim (com script)
2015-08-15 14:11:12 +07:00
GarvinTwine
c55cb8b8c2 Fixed to open the AO menu from the collar with auth info, needs to be
send from the same object as the identification message (com script in
root)
2015-08-15 09:37:32 +07:00
GarvinTwine
16c72f4716 The idea is to send commands more directed to specific scripts than we
did before.

Instead of sending everything always to everybody with LinkMessages we
seperate the scripts which we can identify actually by the iNum sent:
Those iNums are:
CMD_ZERO - this is only actually processed by the auth script, other
scripts only process it as far as they dont want to process it.
DIALOG - This is a request to the dialog script to create a menu for the
user, no other script does this
RLV_CMD - rlv commands which only are processed by the rlvsys script
LM_SETTING_SAVE and LM_SETTING_DELETE - which are for the settings
script
And commands to ParentMenus where it is known in which prim they are
(rlv or mostly root).

As it is not possible to send messages to dedicated scripts but to
dedicated prims in a linkset,
we split those scripts into different prims and send from all scripts
such linkMessages not to LINK_SET or LINK_THIS but to that link prim we
know the script is in. 
This will prevent all other scripts to check "is this iNum for me?" and
should reduce script load specially on actions that are common:
sending chat commands and using menus and saving settings.


root(link 1): notecards + objects + scripts (apps which need anims,
these anims go to the anim prim as the anim script normally plays them!)
Link 2 (LabelExtra1): Auth
Link 3 (LabelExtra2): Dialog  
dialog script renames this prims to root prim name and if it receives a
%DEVICENAME% to that Name. This should not stick after detach but as
dialog Resets on rez it will be applied next attach again. 
Important: not use a prim that needs a name for other reasons!!!
Link 4(MeshLabel~00): rlvsys
Link 5(MeshLabel~01): settings + .settings notecard
Link n (Slide): anims, couples + animations + .couples notecard (this is
mainly to reduce the loading time of prim contents for the root and for
this one, too, to add/remove anims and or edit the .couples notecard)

Scripts which send to LINK_THIS in all LMs will fail, scripts that send
to LINK_SET will work but dont take advantage of the new low lag design.

integer LINK_AUTH     = 2;
integer LINK_DIALOG = 3;
integer LINK_RLV       = 4;
integer LINK_SAVE     = 5;

all LMs with iNum CMD_ZERO : llMessageLinked(LINK_AUTH, CMD_ZERO....);
all LMs with iNum DIALOG, SENSORDIALOG, or FINID_AGENT:
llMessageLinked(LINK_DIALOG,...);
all LMs with iNum RLV_CMD: llMessageLinked(LINK_RLV, RLV_CMD....);
all LMs with iNum LM_SETTING_SAVE or LM_SETTING_DELETE:
llMessageLinked(LINK_SAVE, LM_SETTING....);
all LMs with iNum NOTIFY or SAY : llMessageLinked(LINK_ROOT,
NOTIFY....);

Our great dynamic menu button system uses specially on startup lots of
LMs... 
To try to reduce this at least a bit, use the right link number when
replying to the request (which is always the one that sent the request):
if(iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
    llMessageLinked(iSender, MENUNAME_RESPONSE, g_sParentMenu + "|" +
g_sSubMenu, "");


all scripts in root (except com) get as first if in link_message : 
if (iNum == NOTIFY || iNum == SAY) return;
 to minimize impact on scripts for notify messages that are always
directed at com and com only.

replies from auth: llMessageLinked(LINK_ALL_OTHERS, CMD_AUTHED....);

replies from dialog: llMessageLinked(LINK_ALL_OTHERS,
DIALOG_RESPONSE....);

replies from settings: llMessageLinked(LINK_ALL_OTHERS,
SETTING_RESPONSE....);

former used listening on LM_SETTING_SAVE to capture special values for
ones script wont work anymore. we which we know are used we sent
additional LM_SETTING_RESPONSE to LINK_SET (for example auth-lists
changes, device name, channel, prefix, name)

All other LMs llMessageLinked(LINK_SET,....);  unless you know better
for sure to use LINK_THIS (in anims/couple or for self LMing this makes
sense) or LINK_ROOT (which should be preferred for scripts in the root
prim)


integer REBOOT = -1000;
settings sends on the reboot command this LM:
llMessageLinked(LINK_ALL_OTHERS, REBOOT, "reboot","");
scripts need this in the link_message event:
if (iNum == REBOOT && sStr == "reboot") llResetScript();


For updates, all scripts not in root have this:
integer LOADPIN = -1904;
if (iNum == LOADPIN) {
    integer iPin = (integer)llFrand(99999.0);
    llSetRemoteScriptAccessPin(iPin);
    llMessageLinked(iLink, LOADPIN, (string)iPin,llGetKey());
}
2015-08-14 14:45:23 +07:00
WendyStarfall
8959fef7a2 sync at beta 4.0/3.6.11 2015-08-11 21:42:22 +02:00
GarvinTwine
e0503c9752 Merge pull request #671 from OpenCollar/auth
removed the remenu to Access after adding an avatar
2015-08-10 20:08:57 +07:00
GarvinTwine
d8eec163cd removed the remenu to Access after adding an avatar 2015-08-10 19:13:48 +07:00
WendyStarfall
789c4e5459 Merge pull request #670 from OpenCollar/663-kidnap
for issue #663
2015-08-10 11:32:15 +02:00
GarvinTwine
2d3d524bcf for issue #663
send the kidnaper a notice that the kidnap roleplay has ended when the
wearer uses safeword (or runaway)
2015-08-10 16:00:32 +07:00
WendyStarfall
fb6640fe43 Merge pull request #669 from OpenCollar/663-com
for issue #663
2015-08-10 10:42:24 +02:00
GarvinTwine
d49fb254b8 for issue #663
the script did not clear the internal owner list when an empty list was
reported (what runaway does)
2015-08-10 15:28:10 +07:00
WendyStarfall
5d76fc4ae5 sync at beta 4.0/3.6.10 2015-08-10 10:10:37 +02:00
WendyStarfall
f710b560e5 fix syntax for 4.0 popup help 2015-08-10 10:06:34 +02:00
WendyStarfall
d454c28cce Merge pull request #668 from OpenCollar/664-exceptions
fixes issue #664
2015-08-10 09:57:49 +02:00
GarvinTwine
bc4cf5e39f fixes issue #664
no more script reset on runaway :)
2015-08-10 14:54:34 +07:00
WendyStarfall
35371662ea Merge pull request #667 from OpenCollar/settings
added a timed SentValues() after a runaway command to reinsure that
2015-08-10 09:51:57 +02:00
GarvinTwine
1fd3a2f510 added a timed SentValues() after a runaway command to reinsure that
block und trust lists are repopulated in all scripts.
2015-08-10 14:49:41 +07:00
WendyStarfall
de62401af2 sync at beta 4.0/3.6.7
.help
oc_accessory_lead
oc_auth
oc_leash
2015-08-10 08:40:26 +02:00
WendyStarfall
16e5642eec Merge pull request #666 from OpenCollar/661+663-auth
fixed issue #663
2015-08-10 08:29:39 +02:00
GarvinTwine
798a510de3 fixed issue #663
added changes for issue #661 concerning runaway, only wearer can runaway
now, owners can remove themselves by using the matching - Owner buttons
in the access menu
Kidnapper can release in the kidnap menu
2015-08-10 12:12:16 +07:00
WendyStarfall
c2182b294f Merge pull request #665 from OpenCollar/659-leash
fix for issue #659
2015-08-10 06:03:50 +02:00
GarvinTwine
d2e2f8126d fix for issue #659
removed a check to prevent releashing while already leashed which also
prevented to change leash states (follow to leash and viseversa)
2015-08-10 08:45:46 +07:00
GarvinTwine
689a7f8e3d Merge pull request #658 from OpenCollar/lead
issue #657 vanilla button gets checked/unchecked by tempowner.
2015-08-09 09:53:12 +07:00
GarvinTwine
ed61b4bb0c issue #657 vanilla button gets checked/unchecked by tempowner.
fixed.
2015-08-09 09:51:08 +07:00
WendyStarfall
bda92be5b9 correct typo and remove trailing space 2015-08-09 02:44:22 +02:00
WendyStarfall
1a37fadc23 Merge pull request #650 from OpenCollar/lead
added a 3rd round to announce the handle for extra safety to get the
2015-08-09 00:42:56 +02:00
GarvinTwine
71cf9f5c67 added a 3rd round to announce the handle for extra safety to get the
leash particles vs any other device (collar)
2015-08-08 20:08:31 +07:00
WendyStarfall
ad9fbdefdd ship beta 4.0/3.6.3
oc_anim
oc_exceptions
oc_meshlabel
oc_particle
oc_rlvsys
oc_sys
.help
2015-08-08 00:02:20 +02:00
WendyStarfall
0cad53aa82 update help card
The formatting is a bit off here but has to be this way or it will be
off in the actual notecard.
2015-08-07 23:23:51 +02:00
WendyStarfall
ab11fbc782 update version 2015-08-07 21:23:52 +02:00
GarvinTwine
0e0315c8bd Merge pull request #646 from OpenCollar/lock-sys
give 1/2 second more time before requesting menu buttons on inventory
2015-08-07 19:59:41 +07:00
GarvinTwine
4a55be26aa Merge pull request #644 from OpenCollar/640exceptions
Let the exception script handle its rlv commands to set exception
2015-08-07 19:59:23 +07:00
GarvinTwine
3e83212fc6 Merge pull request #647 from OpenCollar/leashconfig
changed command for Configure menu to "leash configure"
2015-08-07 19:59:06 +07:00
GarvinTwine
3aa07312be Merge pull request #648 from OpenCollar/640-rlvsys-2
for issue #640
2015-08-07 19:59:01 +07:00
GarvinTwine
6a52f3a497 should also remove the debugging... 2015-08-07 18:33:16 +07:00
GarvinTwine
e93b6fe2e8 the setting token for rlvmain/sys was not consistent used, had to be
changed of course to work with the changed token
2015-08-07 18:17:28 +07:00
GarvinTwine
b2f12bfa59 for issue #640
removed(commented out) all exception related code to see how this works
:)
2015-08-07 16:47:16 +07:00
GarvinTwine
cbf137b8e7 Merge pull request #645 from OpenCollar/640-rlvsys
for issue #640
2015-08-07 16:43:29 +07:00
GarvinTwine
c0879c78d8 changed command for Configure menu to "leash configure" 2015-08-07 09:47:38 +07:00
GarvinTwine
2a8f3e4e08 give 1/2 second more time before requesting menu buttons on inventory
change
add a @detach=n message on locking event to ensure a quick locking on
log in without waiting for rlv handshakes and stuff
2015-08-07 09:31:25 +07:00
GarvinTwine
3e3f3538e9 for issue #640
changed some timing when turning rlv on and sending out that it is
turned on to other scripts. Also started to comment out first exception
sets as this is done by the exceptions script anyway now
2015-08-07 09:17:45 +07:00
GarvinTwine
b684827fac Let the exception script handle its rlv commands to set exception
itsself rather then formatting and sending them as LM to be reformatted
and then applied by the rlvsys script which.
This for once takes load of the anyway busy rlvsys script and reduces
LMs on startup.
Will not fix #640 but is one step to get rlv things better and more
reliable handled
2015-08-07 09:00:54 +07:00
GarvinTwine
b95a28c942 Merge pull request #643 from OpenCollar/642-anim
fixed issue #642 by adding a satting remove for current pose on safeword
2015-08-07 08:23:53 +07:00
GarvinTwine
0431938c04 fixed issue #642 by adding a satting remove for current pose on safeword 2015-08-07 08:21:58 +07:00
GarvinTwine
42fab5efb0 Merge pull request #639 from OpenCollar/638-label
fixed issue #638
2015-08-06 11:52:10 +07:00
GarvinTwine
cb688bb06b fixed issue #638 2015-08-06 11:47:42 +07:00
WendyStarfall
0cb4f114d8 update news 2015-08-05 09:58:24 +02:00
WendyStarfall
8338feafcd ship beta 4.0/3.4.7 2015-08-05 09:56:46 +02:00
WendyStarfall
5dea8394a2 sync at beta 4.0/3.4.7 2015-08-05 09:02:16 +02:00
WendyStarfall
524e38ba8d use link_set message where appropriate 2015-08-05 08:27:20 +02:00
WendyStarfall
ea2e779666 Merge pull request #637 from OpenCollar/636-kidnap
fixes issue #636
2015-08-05 07:08:38 +02:00
GarvinTwine
edff5a1931 fixes issue #636
sending a SETTING_RESPONSE instead of SETTING_EMPTY
2015-08-05 09:12:44 +07:00
WendyStarfall
6a361bca35 sync at 4.0/3.4.6 2015-08-04 22:22:33 +02:00
WendyStarfall
403fab5c74 change default font choice to solid 2015-08-04 21:53:43 +02:00
WendyStarfall
9405b855f9 change reboot button and notify text 2015-08-04 21:41:36 +02:00
WendyStarfall
37feb9693f sync at 3.4.5
oc_accessory_aolink
oc_badwords
oc_bookmarks
oc_dialog
oc_label
oc_meshlabel
oc_sys
oc_titler
2015-08-04 21:22:24 +02:00
WendyStarfall
cbca38a5a0 Merge pull request #635 from OpenCollar/label
adjusted for issue #629
2015-08-04 18:36:44 +02:00
WendyStarfall
be7d44b159 Merge pull request #634 from OpenCollar/meshlabel
adjusted for issue #629
2015-08-04 18:36:27 +02:00
WendyStarfall
52024c7ac2 Merge pull request #633 from OpenCollar/titler
adjusted for issue #629
2015-08-04 18:36:04 +02:00
WendyStarfall
a7a813bdd9 Merge pull request #632 from OpenCollar/629-bookmarks-badwords
adjusted the check fro empty textbox messages for issue #629
2015-08-04 18:35:37 +02:00
WendyStarfall
2ffdbbeb49 Merge pull request #631 from OpenCollar/629-dialog
issue #629
2015-08-04 18:35:19 +02:00
GarvinTwine
3d04238262 adjusted for issue #629
changed the command to set the title:
prefix label new title
(was prefix label text new title)
2015-08-04 15:41:12 +07:00
GarvinTwine
00c41fed80 adjusted for issue #629
changed the command to set the title:
prefix label new title
(was prefix label text new title)
2015-08-04 15:18:45 +07:00
GarvinTwine
83857b8f08 adjusted for issue #629
changed the command to set the title:
prefix title new title
(was prefix title text new title)
2015-08-04 15:18:03 +07:00
GarvinTwine
110c1607cf adjusted the check fro empty textbox messages for issue #629 2015-08-04 15:13:08 +07:00
GarvinTwine
ca0c4504cf issue #629
sending as empty message a " " to be able to use the standard routine to
deal with the dialog_response
2015-08-04 15:09:51 +07:00
WendyStarfall
a44b39247a Merge pull request #630 from OpenCollar/spare-AOlink
added huddles support #624
2015-08-04 06:06:27 +02:00
GarvinTwine
fd0f61b0f3 added huddles support #624
confirmed working for HUDDLES EZ Animator Deluxe
als did some general reformatting to OC standards, removed dialog time
out spam
2015-08-04 10:26:03 +07:00
WendyStarfall
7576827ff9 Merge pull request #628 from OpenCollar/sys-contact
added a chat command for contact
2015-08-03 15:40:59 +02:00
GarvinTwine
4fe7d6e6b9 added a chat command for contact 2015-08-03 20:37:52 +07:00
WendyStarfall
edf7e3ccc2 update news 2015-08-02 16:24:01 +02:00
WendyStarfall
ec25e29faf ship beta part 4b
oc_anim
oc_auth
oc_com
oc_dialog
oc_sys
2015-08-02 16:21:43 +02:00
WendyStarfall
13d0dd0631 Merge pull request #625 from OpenCollar/dialog
fixed false multi-page menus
2015-08-02 10:45:41 +02:00
WendyStarfall
cdebdf5bfe Merge pull request #623 from OpenCollar/attachment-auth
simplified the old attachment auth:
2015-08-02 10:45:35 +02:00
GarvinTwine
e5cf48ec82 fixed false multi-page menus
after sensordialog calls with no dialog but just returning the first
search match, the flag for SelectAviMenu was not resetted and caused
next menu calls to be multi paged though they shouldnt be.
2015-08-02 15:08:40 +07:00
GarvinTwine
94fa1842ec simplified the old attachment auth:
attachments now can simply request an auth from a UUID with:
llRegionSayTo(g_kWearer, channel, "AuthRequest|UUID");
and get a reply like:
"AuthReply|UUID|iAuth"
2015-08-02 12:25:12 +07:00
WendyStarfall
306616cbc8 Merge pull request #621 from OpenCollar/anim-order
change the order to read collar animation to show them in alpha-numeric
2015-08-01 10:55:00 +02:00
GarvinTwine
ccded31186 change the order to read collar animation to show them in alpha-numeric
order in the pose menu
2015-08-01 10:57:48 +07:00
WendyStarfall
c9f26f475f ship beta part 4
oc_accessory_lead
oc_auth
oc_bell
oc_camera
oc_com
oc_couples
oc_disgraced_themes
oc_label
oc_leash
oc_meshlabel
oc_particle
oc_rlvsys
oc_sys
2015-07-31 13:59:28 +02:00
WendyStarfall
a92431261b add noshiny tag to label default 2015-07-31 12:25:56 +02:00
GarvinTwine
11649784ad Merge pull request #619 from OpenCollar/lead
added a var for wearerID and llRegionSayTo when possible instead of
2015-07-31 14:58:52 +07:00
GarvinTwine
a2b411fa12 Merge pull request #620 from OpenCollar/themes
added a themes button in the else empty button of the looks menu
2015-07-31 14:58:34 +07:00
GarvinTwine
ec6d4af8a5 added a themes button in the else empty button of the looks menu 2015-07-31 14:56:16 +07:00
GarvinTwine
589ea385a5 added a var for wearerID and llRegionSayTo when possible instead of
llSay
2015-07-31 14:54:06 +07:00
GarvinTwine
677bb42737 Merge pull request #618 from OpenCollar/611-leash-2
menu handling for #611
2015-07-31 14:05:19 +07:00
GarvinTwine
12c130435e menu handling for #611
changed the menu handling to be used by multiope users without stealing
a dialog window.
removed the ability to cheat around the Confirmation Dialog for
pass/leashto .
removed a setting_request on startup (as this is anyway sent) to reduce
startup LinkMessages
2015-07-31 14:04:41 +07:00
GarvinTwine
9276569fa1 Merge pull request #617 from OpenCollar/camera
removed a douple notify for camdump command
2015-07-31 08:13:08 +07:00
GarvinTwine
f2facd5351 removed a douple notify for camdump command 2015-07-31 08:10:56 +07:00
GarvinTwine
63c9995669 Merge pull request #616 from OpenCollar/614-bell-2
for issue #614
2015-07-30 18:30:10 +07:00
GarvinTwine
67702e15c3 for issue #614
added a 1 second delay each time to play the sound when running
2015-07-30 18:29:50 +07:00
GarvinTwine
b081e965bc Merge pull request #613 from OpenCollar/611-couples
added menu handling for issue #611
2015-07-29 15:01:43 +07:00
GarvinTwine
bb127ef221 added menu handling for issue #611 2015-07-29 15:00:59 +07:00
GarvinTwine
6a307c62f6 Merge pull request #612 from OpenCollar/611-particle
menu handling for #611 for particle script
2015-07-29 14:59:41 +07:00
GarvinTwine
053382dc09 menu handling for #611 for particle script 2015-07-29 12:46:17 +07:00
WendyStarfall
086abc4cef Merge pull request #610 from OpenCollar/607-particle+com
added lmv2 support issue #607
2015-07-29 07:08:14 +02:00
GarvinTwine
c43c188aad added lmv2 support issue #607
also added a timed check on the particle target to ensure the leash
particles are send towards the leashing avatar and never dangle longer
than a few seconds
2015-07-29 12:06:49 +07:00
WendyStarfall
3afb78bd40 Merge pull request #609 from OpenCollar/rlvsys
changed viewer handshake behaviour
2015-07-28 22:54:52 +02:00
GarvinTwine
21b89237a5 changed viewer handshake behaviour
the former endless loop to check for a rlv viewer which had to be
stopped by the user themselves by turning rlv in the collar off is now
changed to a default to check for 90 seconds and with no reply from the
viewer to @version the rlvsys script turns rlv off itself.
For convinience a new command was added to change the default of 3 extra
viewer checks to more suitable ones for individuals with very big
inventories or very slow connections so that they need longer and more
checks to verify an rlv viewer. 
the command is:
prefix rlv handshakes [number]
2015-07-28 19:04:11 +07:00
GarvinTwine
ac1a811852 Merge pull request #608 from OpenCollar/auth
fixed issue #606
2015-07-28 08:39:52 +07:00
GarvinTwine
ee22bb3f76 fixed issue #606
corrected the wronf sCommand with sAction

changed Buttons in Access Menu for Trust and Block instead of Trusted
and Blocked to match the commands.
Changed list names for owners, trusts und blocks
2015-07-28 08:38:44 +07:00
GarvinTwine
654a24bbc8 Merge pull request #605 from OpenCollar/604-rlvsys
fixed issue #604
2015-07-27 14:57:49 +07:00
GarvinTwine
10d88e1df1 fixed issue #604
wrong info message how to turn rlv off corrected
2015-07-27 14:57:26 +07:00
GarvinTwine
644dd48dff Merge pull request #603 from OpenCollar/602-rlvsys
added a save rlvOn on state_entry for issue #602
2015-07-26 17:29:30 +07:00
GarvinTwine
b9fe0e4e61 added a save rlvOn on state_entry for issue #602 2015-07-26 17:28:02 +07:00
WendyStarfall
e141431b4d ship beta part 3 2015-07-26 08:19:04 +02:00
WendyStarfall
8cf040d6b5 update list of commands 2015-07-26 07:46:35 +02:00
WendyStarfall
8e1c0d28de update §1d and §2b/i 2015-07-26 07:45:46 +02:00
GarvinTwine
c80aa23f76 Merge pull request #601 from OpenCollar/572-couples-2
#572 couples
2015-07-26 07:59:54 +07:00
GarvinTwine
e7cd36c728 #572 couples
added text help
2015-07-26 07:59:18 +07:00
GarvinTwine
3133c45ed4 Merge pull request #600 from OpenCollar/572-couples
couples for #572
2015-07-26 07:43:54 +07:00
GarvinTwine
9799a8048c couples for #572
changed command 
stopcouples to
stop couples
2015-07-26 07:43:17 +07:00
WendyStarfall
ba2ab3f30b Merge pull request #599 from RomkaSwallowtail/patch-1
for convenience
2015-07-25 11:24:43 +02:00
Romka
1a53d6c745 for convenience
if the script is renamed
2015-07-25 08:49:04 +03:00
WendyStarfall
69cbc2efa5 fix #588 in the right place 2015-07-25 00:23:50 +02:00
WendyStarfall
b926b85b6e Merge pull request #598 from OpenCollar/revert-588-com
Revert "the Say function needs after all a "/me " for whispering..."
2015-07-25 00:19:38 +02:00
WendyStarfall
d77600a3a6 Revert "the Say function needs after all a "/me " for whispering as else we get" 2015-07-25 00:10:17 +02:00
GarvinTwine
fe2068c818 Merge pull request #597 from OpenCollar/sys
removed scriptcount dependency on change inventory invent.
2015-07-22 10:48:53 +07:00
GarvinTwine
dc65371933 removed scriptcount dependency on change inventory invent.
when inventory items are removed by scripts this does not trigger a
change event which makes the script count check very unreliable and i
rather sent MENU_REQUEST although they are not needed then miss it once
when they are needed...
So doing a RebuildMenu() on any change inventory event until someone got
a better reliable idea.
2015-07-22 10:48:25 +07:00
GarvinTwine
928f98d2c5 Merge pull request #596 from OpenCollar/settings
had to set
2015-07-22 10:45:09 +07:00
GarvinTwine
386e355be0 had to set
g_kCardID = NULL_KEY; 
as default to prevent false handling of change events when there is no
.settings notecard present.
2015-07-22 10:44:15 +07:00
GarvinTwine
4c775b7fbe Merge pull request #595 from OpenCollar/589-camera
camera for #589
2015-07-22 10:40:15 +07:00
GarvinTwine
e5b9bdb245 camera for #589
added rm commmand:
prefix rm camera
2015-07-22 10:39:06 +07:00
GarvinTwine
2fc9771765 Merge pull request #594 from OpenCollar/589-badwords
badwords for #589
2015-07-22 10:36:58 +07:00
GarvinTwine
229c105323 badwords for #589
added command:
prefix rm badwords
2015-07-22 10:36:39 +07:00
GarvinTwine
9fca079910 Merge pull request #593 from OpenCollar/589-label
label scripts for #589
2015-07-22 10:22:00 +07:00
GarvinTwine
f054d16e16 label scripts for #589
added command
prefix rm label
to label and meshlabel scripts
2015-07-22 10:21:31 +07:00
GarvinTwine
39df8663f6 Merge pull request #592 from OpenCollar/589-bell
bell for #589
2015-07-22 10:19:29 +07:00
GarvinTwine
7f27163b13 bell for #589
added command:
prefix rm bell
2015-07-22 10:18:59 +07:00
GarvinTwine
0cb4377855 Merge pull request #591 from OpenCollar/589-bookmarks
bookmarks for #589
2015-07-22 10:17:38 +07:00
GarvinTwine
b3e793702b bookmarks for #589
added command
prefix rm bookmarks
2015-07-22 10:17:13 +07:00
GarvinTwine
5551d051c2 Merge pull request #590 from OpenCollar/589-titler
titler for #589
2015-07-22 10:16:00 +07:00
GarvinTwine
a79efe725f titler for #589
added command to remove the App:
prefix rm titler
2015-07-22 10:15:38 +07:00
GarvinTwine
47938ecde2 Merge pull request #588 from OpenCollar/com
the Say function needs after all a "/me " for whispering as else we get
2015-07-22 10:10:40 +07:00
GarvinTwine
981196b999 the Say function needs after all a "/me " for whispering as else we get
whispers like this:
whispers: Name: whsipertext
2015-07-22 05:52:24 +07:00
GarvinTwine
98e56837eb Merge pull request #587 from OpenCollar/572-meshlabel-2
for issue #572 meshlabel
2015-07-21 07:27:32 +07:00
GarvinTwine
4224463d59 for issue #572 meshlabel
changed command 
label show on/off to label on/off
2015-07-21 07:26:07 +07:00
GarvinTwine
18d73bb554 Merge pull request #586 from OpenCollar/572-dialog-2
issue #551 dialog
2015-07-20 19:18:40 +07:00
GarvinTwine
218a0f439d issue #551 dialog
got a little bug (endless loop) in there, fix here
2015-07-20 19:18:16 +07:00
GarvinTwine
c6ac9a9080 Merge pull request #585 from OpenCollar/572-meshlabel
meshlabel for issue #572
2015-07-20 14:22:35 +07:00
GarvinTwine
5d42f95f18 meshlabel for issue #572
changed commands to new policy:
label show on
label show off
label text Your text here
label color <1,0,1>
label scroll on
label scroll off
lable font UUID
2015-07-20 14:20:43 +07:00
GarvinTwine
5a907b0ba3 Merge pull request #584 from OpenCollar/572-animations
issue #572 - anim
2015-07-20 12:46:41 +07:00
GarvinTwine
dfd410405e issue #572 - anim
changed some command checks to lowercase so either work
2015-07-20 12:45:56 +07:00
GarvinTwine
9d85e6a264 Merge pull request #583 from OpenCollar/572-bookmarks
for issue #572
2015-07-20 12:38:12 +07:00
GarvinTwine
40b359cfde for issue #572
just some lower case conversions for menu commands
2015-07-20 12:23:18 +07:00
GarvinTwine
1a88fdfb1e Merge pull request #582 from OpenCollar/572-titler
command changes for issue #572
2015-07-20 12:13:43 +07:00
GarvinTwine
d837f81943 command changes for issue #572
changed commands to new policy:
commands are now:
title on
title off
title up
title down
title color <1,1,0>
title text Your text here

titler or menu titler - opens the menu
titler color or menu titler color - opens the color menu
title box - opens the text box
2015-07-20 12:13:04 +07:00
GarvinTwine
370581146e Merge pull request #581 from OpenCollar/551-dialog
for issue #551 changed notifies to be more precise:
2015-07-20 11:03:45 +07:00
GarvinTwine
ea12a5d524 for issue #551 changed notifies to be more precise:
When nobody is around but avatars already in lists, the message wont be:
"No avatars in parcel found" but "No avatars found that are not already
listed : [URIs]"
Also sending a "BACK" to reopen the Access menu when nobody new was
found.
2015-07-20 11:03:00 +07:00
GarvinTwine
20e216dccc Merge pull request #580 from OpenCollar/auth-551-572
auth changes for issues #551 and #572
2015-07-20 10:40:49 +07:00
GarvinTwine
9508958c89 auth changes for issues #551 and #572
#551:
removed the remenu to choose avatars after selecting one as
owner/trusted/blocked in favor to go back to the access menu (this
should prevent any unneeded and irritating notifies after adding oneself
or an owner and no one else is around)
#572:
changed commands to add/remove :
owner -> add owner
trust -> add trust
removeowner -> remove owner (rm owner)
changed commands that turn on/off:
setgroup -> group on
unsetgroup -> group off
setgroupname -> set groupname
public -> public on
private -> public off
limitrange -> limitrange on
unlimitedrange -> limitrange off
2015-07-20 10:39:56 +07:00
GarvinTwine
521f2a4d63 Merge pull request #579 from OpenCollar/572-rlvsys
issue #572 - rlvsys
2015-07-20 10:28:55 +07:00
GarvinTwine
5a25ad7667 issue #572 - rlvsys
changed rlv related commands:
rlv on/off
show restrictions
2015-07-20 10:27:48 +07:00
GarvinTwine
cec3fa8fff Merge pull request #578 from OpenCollar/572-com-2
issue #572 com script help info fix
2015-07-20 10:24:51 +07:00
GarvinTwine
edf0556424 issue #572 com script help info fix 2015-07-20 10:24:20 +07:00
GarvinTwine
f461893ef2 Merge pull request #577 from OpenCollar/572-com
issue #572 : starting with com script
2015-07-20 10:20:48 +07:00
GarvinTwine
8528e56279 issue #572 :
1) trimming head of commands to allow prefix command where scripts donr
remove the space by parsing anyway
2) changed command 'devicename' to 'device name'
3) removed the heading space in Say/Whisper function
2015-07-20 10:16:54 +07:00
WendyStarfall
1975e818d2 Merge pull request #576 from RomkaSwallowtail/patch-1
Hide/Show commands don't works with elements!
2015-07-19 13:01:21 +02:00
Romka
4107524904 Update oc_disgraced_themes.lsl 2015-07-19 12:24:34 +03:00
Romka
353f823911 Hide/Show commands don't works with elements!
in lines 356-363 'show' 'hide' and 'stealth' commands change 'iCollarHidden' and 'iCurrentlyShown' only, if 'sElement' are empty

LinkType(iLinkCount, "no"+sCommand); - it works with "color' 'texture' 'shine' and 'glow' , but wrong for "hide", because sCommand happens 'show' 'hide' and 'stealth'
2015-07-19 12:11:33 +03:00
GarvinTwine
b84df480b8 Merge pull request #575 from OpenCollar/revert-573-issue572
Revert "issue #572 started with com, auth and rlvsys"
lets start this again, something strange with rlvsys here
2015-07-19 14:17:58 +07:00
GarvinTwine
c88e217717 Revert "issue #572 started with com, auth and rlvsys" 2015-07-19 19:56:07 +07:00
GarvinTwine
2030a3befb Merge pull request #573 from OpenCollar/issue572
issue #572 started with com, auth and rlvsys
2015-07-19 09:59:54 +07:00
WendyStarfall
f40bba809f ship beta part 2
oc_auth
oc_com
oc_dialog
oc_disgraced_kidnap
oc_leash
oc_settings
oc_sys

Fixed: #551 and #553
Completed: #555, #560, #566 and #569
2015-07-18 23:54:02 +02:00
GarvinTwine
133709deaf issue #572 started with com, auth and rlvsys
com needs to TRIM_STRING_HEAD of commands to allow the space between
prefix and following action+command.
changed commands in auth to the new desired model as well as in rlvsys:
prefix add owner Name or ID
prefix remove trust Name or ID

prefix rlv on/off
2015-07-18 12:12:40 +07:00
GarvinTwine
3d5ab5bc61 Merge pull request #571 from OpenCollar/issue569
allowing other tokens than access lists again #569
2015-07-18 10:02:51 +07:00
GarvinTwine
bf29c51c18 allowing other tokens than access lists again 2015-07-18 06:56:25 +07:00
WendyStarfall
b5c1346cc0 Merge pull request #570 from WendyStarfall/master
Less subjective and more as we knew it
2015-07-18 00:50:16 +02:00
WendyStarfall
9bb1753b68 use OC 3.9 rather than "disgraced" choice of symbols 2015-07-18 00:43:15 +02:00
WendyStarfall
3004b570ee change selfowned to "vanilla mode"
No sarcasm intended: "self" is a very subjective matter and would always
be "Me, myself and I who is looking at the menu this very moment." Next
time, I'll think before I spec, promise!
2015-07-17 23:20:29 +02:00
WendyStarfall
6fd0ffdc35 Merge pull request #568 from OpenCollar/issue551
Added the URI of the listed avi that was found with the find string
2015-07-17 14:30:48 +02:00
GarvinTwine
1437cf2b6c Added the URI of the listed avi that was found with the find string 2015-07-17 19:20:50 +07:00
WendyStarfall
4d73ebe71c Merge pull request #567 from OpenCollar/issue566
SelfOwn command/button Issue #566
2015-07-17 14:01:00 +02:00
GarvinTwine
b94e04cf19 SelfOwn command/button Issue #566
Changed the LimitRange [] to a Self [] Button, new command ownself und
unownself add/remove the wearer to the owner list as well as clicking
the menu button.
limitrange or unlimitrange are the commands for the range limitation
2015-07-17 18:46:35 +07:00
WendyStarfall
bb34bc11ba Merge pull request #565 from OpenCollar/issue560
Referring to Issue #560
2015-07-17 13:30:11 +02:00
GarvinTwine
69cb6d5e6f Referring to Issue #560
Added a distance check, 10m t be able to kidnap
2015-07-17 18:09:51 +07:00
WendyStarfall
eabfe33b4f update readme 2015-07-17 01:01:57 +02:00
WendyStarfall
53c15247ed Merge pull request #562 from RomkaSwallowtail/patch-1
Misleading notify when wearer sets self as owner twice
2015-07-17 00:58:56 +02:00
WendyStarfall
eea9798f80 update readme 2015-07-17 00:37:20 +02:00
Romka
fbf479729a Misleading notify when wearer sets self as owner twice
maybe it solved ?
2015-07-17 00:35:30 +03:00
WendyStarfall
f02e677e14 Merge pull request #561 from RomkaSwallowtail/patch-5
#551
2015-07-16 21:33:19 +02:00
Romka
5b5c8ffc86 #551 2015-07-16 22:19:48 +03:00
WendyStarfall
9f24005d3c Merge pull request #559 from RomkaSwallowtail/patch-4
Force unsit when yank
2015-07-15 22:45:07 +02:00
Romka
29567a5ea2 Force unsit when yank
force unsit by yank if Strict disabled
2015-07-15 19:23:01 +03:00
WendyStarfall
10d8289e09 Merge pull request #558 from RomkaSwallowtail/patch-3
Force Unsit...
2015-07-15 11:48:27 +02:00
WendyStarfall
ec5f0151dd Merge pull request #556 from GarvinTwine/com_aoMenu
fixed issue #553
2015-07-15 11:46:27 +02:00
Romka
91d4cdb0aa Force Unsit...
only if Strict Enabled
2015-07-15 11:07:26 +03:00
GarvinTwine
2e1b2ee393 fixed issue #553
one line to much commented...
2015-07-15 06:21:21 +07:00
WendyStarfall
754d00052f Merge pull request #554 from RomkaSwallowtail/patch-2
Force unsit when "pull leash"
2015-07-14 23:52:22 +02:00
Romka
e92778a43b Force unsit when "pull leash"
avatar don't follow target when sitting
need force unsit
2015-07-15 00:29:06 +03:00
WendyStarfall
fcf094afe8 Merge pull request #552 from kyrahabattoir/textures
added AO and UV maps
2015-07-14 16:25:42 +02:00
Kyrah Abattoir
aa1407ab53 added AO and UV maps 2015-07-14 16:24:03 +02:00
WendyStarfall
b52726abd7 add blog link 2015-07-13 09:56:15 +02:00
WendyStarfall
cad2e9bf3d Merge pull request #550 from WendyStarfall/master
Prepare a first Beta Device
2015-07-13 02:26:56 +02:00
WendyStarfall
f503567453 update queries and sys 2015-07-13 01:51:14 +02:00
WendyStarfall
e6966f7508 update beta device dialogs 2015-07-13 00:34:42 +02:00
WendyStarfall
67236138ba add linebreak in dialog text 2015-07-12 23:42:08 +02:00
WendyStarfall
1ca9257298 see: 0546db5178
I think this should have been 0546db5178
this edit is done by @GarvinTwine
2015-07-12 23:17:07 +02:00
WendyStarfall
e91fd54647 Revert "adjusted menu handling to oc standard"
This reverts commit 0546db5178.
2015-07-12 23:05:03 +02:00
GarvinTwine
30ecfe580a Adjusted to OC 4.0 api
Adjusted to new 4.0 api and changed the wild list parsing back and forth
functions to a Json string. Sadly one issue remains:
vectors get converted to strings and need to be reconverted when put
into the config lists.
2015-07-12 21:11:34 +07:00
GarvinTwine
0546db5178 adjusted menu handling to oc standard 2015-07-12 21:08:41 +07:00
GarvinTwine
0f5bf510df fixed ALL/NONE bug, adjusted menu handling to oc standard, removed double startup LMs 2015-07-12 21:05:56 +07:00
GarvinTwine
1c3cf7e704 adjusted menu handling to oc standard 2015-07-12 21:03:14 +07:00
WendyStarfall
a40bf624f0 Merge pull request #547 from WendyStarfall/master
The Virtual Disgrace RLV Suite
2015-07-12 05:50:18 +02:00
WendyStarfall
a7df96e36a create disgraced rlv suite 2015-07-12 05:35:28 +02:00
WendyStarfall
d52bae8d6f prepare derivative work
Outfits will be merged into the complete Disgraced RLV Suite; we can use
this file as a base
2015-07-12 05:33:09 +02:00
WendyStarfall
63306e9a5f fix syntax error 2015-07-12 05:11:39 +02:00
WendyStarfall
9c0f923875 Merge pull request #546 from WendyStarfall/master
Publish: Graphics for Standard Device
2015-07-12 04:30:18 +02:00
WendyStarfall
382a87107a create standard collar texture maps
These graphics are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/) and were created by
Wendy Starfall based on the UV map for the OpenCollar 4.0 standard
collar 3D model
2015-07-12 04:08:51 +02:00
WendyStarfall
41ce55dfbb create leash textures
the silk and leather leash textures are horizontally aligned, these are
used as ribbon particles

the chain and rope textures are vertically aligned, these are used for
the old particle style

the rope texture was created by Andria Babenco

the chain texture was created by Nandana Singh, has been modified by
Anika Mureaux and further modified by Wendy Starfall

silk and leather textures have both been created by Wendy Starfall

These graphics are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/)
2015-07-12 04:05:40 +02:00
WendyStarfall
0dc3d98b5c use default transparent texture from the library 2015-07-12 03:55:58 +02:00
WendyStarfall
ce5700b02d update textures readme
it's unfortunate that targa won't be properly visible in browsers but
png will do just fine too; for anything with transparency I recommend
exporting as *.tga in gimp 32 bit and with rle compression enabled
2015-07-12 03:50:20 +02:00
WendyStarfall
8ccdd35ff1 Merge pull request #545 from OpenCollar/resizer002
added a romve command for the resizer script "rm resizer" and made the
2015-07-12 03:34:54 +02:00
GarvinTwine
d6cd5d9460 added a romve command for the resizer script "rm resizer" and made the
buttons resizer related buttons in the option menu dynamic depending if
the resizer script is present or not
2015-07-12 07:52:07 +07:00
WendyStarfall
b4c9f950bb Merge pull request #544 from WendyStarfall/master
Manual Pages: Card and Links
2015-07-12 02:49:39 +02:00
WendyStarfall
64cbe1eb89 wrap hyperlinks for manual pages 2015-07-12 02:35:47 +02:00
WendyStarfall
34148dcf3e add (temporary) global for hyperlinked headlines 2015-07-12 01:07:26 +02:00
WendyStarfall
01d673a2a9 update help card with list of commands 2015-07-11 16:44:14 +02:00
GarvinTwine
18aa677e16 Merge pull request #543 from GarvinTwine/resizer001
readded: ForceUpdate()
2015-07-11 16:08:55 +07:00
GarvinTwine
1df0bc649b readded:
workaround for https://jira.secondlife.com/browse/VWR-1168
as position changing was not displayed proberly
2015-07-11 06:28:07 +07:00
WendyStarfall
626167621d Merge pull request #542 from WendyStarfall/master
do some minor cosmetic changes (with major infrastructural impact)
2015-07-09 08:52:31 +02:00
WendyStarfall
c1ab315e93 update script headers with authors and versions 2015-07-09 08:43:55 +02:00
WendyStarfall
01357cc09a update some script names in spares 2015-07-09 08:21:45 +02:00
WendyStarfall
b3baacf4fc Merge pull request #539 from WendyStarfall/master
Sounds and History
2015-07-07 11:06:06 +02:00
WendyStarfall
410705d8cc create soft and subtle bell sound samples
These sound binaries are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/); many of them are based
on pure public domain resources which can be found at
https://www.freesound.org/ and have been remastered, sampled and
prepared for the metaverse by Wendy Starfall.
2015-07-06 23:03:36 +02:00
WendyStarfall
4b985ef8c6 create silver bell sound samples
These sound binaries are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/); many of them are based
on pure public domain resources which can be found at
https://www.freesound.org/ and have been remastered, sampled and
prepared for the metaverse by Wendy Starfall.
2015-07-06 23:03:01 +02:00
WendyStarfall
33cd861ed7 create plastic bell sound samples
These sound binaries are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/); many of them are based
on pure public domain resources which can be found at
https://www.freesound.org/ and have been remastered, sampled and
prepared for the metaverse by Wendy Starfall.
2015-07-06 23:02:42 +02:00
WendyStarfall
487109d8e1 create cow bell sound samples
These sound binaries are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/); many of them are based
on pure public domain resources which can be found at
https://www.freesound.org/ and have been remastered, sampled and
prepared for the metaverse by Wendy Starfall.
2015-07-06 23:02:21 +02:00
WendyStarfall
70af05aede create brass bell sound samples
These sound binaries are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/); many of them are based
on pure public domain resources which can be found at
https://www.freesound.org/ and have been remastered, sampled and
prepared for the metaverse by Wendy Starfall.
2015-07-06 23:01:42 +02:00
WendyStarfall
437d2fad70 create several mechanical lock sound samples
These sound binaries are licensed under a Creative Commons
Attribution-ShareAlike 4.0 International Public License
(http://creativecommons.org/licenses/by-sa/4.0/); many of them are based
on pure public domain resources which can be found at
https://www.freesound.org/ and have been remastered, sampled and
prepared for the metaverse by Wendy Starfall.
2015-07-06 23:01:14 +02:00
WendyStarfall
3124596bdb add unisex 'run' animation
the original of this running motion was created by Vanish Firecaster
2015-07-06 20:51:25 +02:00
WendyStarfall
4c05c3842c Merge pull request #1 from fsociety00/master
Added ocupdater history
2015-07-05 13:27:03 +02:00
fsociety00
491eea7518 cleanup 2015-07-05 12:08:14 +02:00
fsociety00
b3dc0db891 Merge remote-tracking branch 'legacy/master' 2015-07-05 11:53:45 +02:00
fsociety00
a071ef5d07 - 2015-07-05 11:50:40 +02:00
WendyStarfall
666532cbb0 Merge pull request #538 from WendyStarfall/master
- add source for some more anims
- initialize directories for other contents
- prepare meaningful readmes
- prepare a first array of 4.0 queries
2015-07-04 17:54:20 +02:00
WendyStarfall
36230e0847 prep 4.0 beta queries 2015-07-04 17:50:54 +02:00
WendyStarfall
a3fa68f613 init 'models' directory 2015-07-04 17:23:13 +02:00
WendyStarfall
8d7e659b3f init 'textures' directory 2015-07-04 17:13:22 +02:00
WendyStarfall
ad19da858b init 'sounds' directory 2015-07-04 16:58:00 +02:00
WendyStarfall
b32f8332f2 add basic female and male walk
the originals of these walking motions were created by Vanish Firecaster
2015-07-04 16:32:20 +02:00
WendyStarfall
0039cf024f add shy, submit and table pose
to the very best of my knowledge the originals of these poses were
created by Linda Kellie Henson for OpenSimulator based grids
2015-07-04 16:21:22 +02:00
WendyStarfall
2b696e3e04 prep meaningful readme 2015-07-04 14:32:29 +02:00
WendyStarfall
34973ecb1e Merge pull request #537 from WendyStarfall/master
update query and source urls in all places
2015-07-04 14:12:43 +02:00
WendyStarfall
a36cd941da update query and source urls in all places
- remove all trailing and redundant spaces
2015-07-04 14:09:28 +02:00
WendyStarfall
32713d089c Merge pull request #536 from WendyStarfall/master
☭ Centrally Planned Repository!
2015-07-03 13:10:09 +02:00
WendyStarfall
7e8ccec670 Merge remote-tracking branch 'zhao/beta' 2015-07-03 09:40:51 +02:00
WendyStarfall
3b65d886e7 Merge remote-tracking branch 'hud/main' 2015-07-03 09:36:08 +02:00
WendyStarfall
dac034e4bc Merge remote-tracking branch 'anims/master' 2015-07-03 09:31:25 +02:00
WendyStarfall
6841189f4a move queries to web directory 2015-07-03 08:03:12 +02:00
WendyStarfall
72f8a3dd1e that's already covered in the root
and now in the readme as well; DAZ is not free software
2015-07-02 08:12:19 +02:00
WendyStarfall
8ecbe1eabd remove cruft and what's already covered in root 2015-07-02 07:49:56 +02:00
WendyStarfall
2035afc6f2 it's covered in the root 2015-07-02 06:48:09 +02:00
WendyStarfall
60bba80782 Merge pull request #535 from VirtualDisgrace/workshop
Virtual Disgrace Workshop
2015-07-02 04:50:45 +02:00
WendyStarfall
d58421b3f0 adjust indentation at §8 and §9 2015-06-29 13:41:03 +02:00
WendyStarfall
d24b71ed26 add another author
@DrakeSystem contributed the installer methods in late 2011 and will be
attributed properly as one of the authors in the header; these methods
were used in a slightly different form during 39 and early 3.900 as
"Default"/RLV/No RLV/Custom and later as Basic/Standard/Custom
2015-06-29 13:40:07 +02:00
WendyStarfall
dee3718282 License Addendum June 28, 2015
All source code is licensed under the GNU General Public License,
version 2 (http://www.gnu.org/licenses/gpl-2.0)

Many of the new contents, such as textures and sounds which are called
by UUID, are licensed under Creative Commons Attribution-ShareAlike 4.0
International Public License
(https://creativecommons.org/licenses/by-sa/4.0/legalcode)

All the rest that comes with the device and/or installer (which is not
in this git repository) is addressed individually.
2015-06-28 14:06:43 +02:00
WendyStarfall
92db86b083 add list of all known authors and correct dates
While this may not be necessary with a copyleft license, I think it had
to be done if we imagine that on SL and OpenSim a script can only ever
have a single "creator" and considering the nature of the platform,
somebody curious who looks inside can at least see that these scripts
are composed by many people together, which is what I'm trying to
convey.

I also received an e-mail already a while ago that Google Code will shut
down and our legacy SVN trunks are read-only by now and probably soon
won't be accessibly at all.

Maybe we could merge Nandana's initial ocupdater repo as a sub-directory
into our new communal repository and branch off at a 3.701 point to
preserve this important phase in the history of our little, big project
as well.
2015-06-26 11:43:22 +02:00
Garvin
293f0ee9e4 menu function design to fir OC standard 2015-06-25 15:54:10 +07:00
Garvin
48b8872cf3 optimized menu functions to match common OC code 2015-06-25 15:08:17 +07:00
Garvin
f49921ef2c optimized menu functions to match common OC code 2015-06-25 15:03:18 +07:00
Garvin
9c625bf5e9 added a reboot command to reset all scripts except settings 2015-06-24 19:13:09 +07:00
Garvin
e6d98933fc added leash post & pretty balloon
adjustment to no trans balloon in leash script and ID change in auth
2015-06-24 11:46:02 +07:00
Garvin
6b510ac0bf added a news request on state_entry to ensure welcome message for new wearers 2015-06-19 10:58:28 +07:00
WendyStarfall
4a7f24a724 distingish agents from objects (by @GarvinTwine) 2015-06-18 07:21:44 +02:00
WendyStarfall
7e4fc3cabc update master lock sounds 2015-06-18 04:03:06 +02:00
WendyStarfall
4d4e2123b0 adjust setting category for script name change 2015-06-18 01:11:27 +02:00
WendyStarfall
394bce1ddc size titler element when out of the box 2015-06-18 01:11:03 +02:00
WendyStarfall
788dbe9e3a default label to "OpenCollar" 2015-06-18 01:10:19 +02:00
WendyStarfall
d56b107576 add pretty balloon and adjust offset 2015-06-18 00:46:37 +02:00
WendyStarfall
54cb5e4466 don't rotate titler element 2015-06-17 06:48:33 +02:00
WendyStarfall
e67f9f1306 Merge pull request #1 from fsociety00/master
Create ~-00.bvh
2015-06-16 07:58:35 +02:00
WendyStarfall
aaeafb4b66 standardize couples card
Format:

NameOfTheSequence|~WearerAnim|~PartnerAnim|DISTANCE|Text printed to
nearby chat.
2015-06-16 07:54:48 +02:00
WendyStarfall
e238743b4c change time selection for couples
- hide verbose buttons (chat only ftw!)
2015-06-16 07:52:19 +02:00
WendyStarfall
6dd0ca6aa8 use timer instead llSleep; see OpenCollar#534
attributes to @RomkaSwallowtail
https://github.com/OpenCollar/OpenCollarUpdater/pull/534
2015-06-16 06:57:46 +02:00
fsociety00
f5d18f08ee Create ~-00.bvh 2015-06-16 02:50:27 +02:00
WendyStarfall
3c05b1f774 fix bell menu button 2015-06-16 01:34:42 +02:00
WendyStarfall
4876323ac5 fix outlined font variation 2015-06-15 08:39:10 +02:00
WendyStarfall
d4f2abf364 update header and version 2015-06-15 04:02:25 +02:00
WendyStarfall
00e47bbb33 update versions to new policy standard
this will be documented properly yet but versions of individual scripts
will be the YYMMDD.n, sample:  150615.4 = The fourth edit of this script
on the 15th of June in the year 2015; this should make comparing them
in-world a lot more convenient
2015-06-15 00:11:27 +02:00
WendyStarfall
71911ebe3c prepare new script headers 2015-06-14 11:15:52 +02:00
Garvin
fffbc9dbb4 replaced another llSleep for RebuildMenu() with Timer 2015-06-13 20:07:19 +07:00
Garvin
6db50d28a4 replaced sleep with timer like @Romka suggested
https://github.com/OpenCollar/OpenCollarUpdater/pull/533
2015-06-13 17:29:07 +07:00
WendyStarfall
3dc72d3a5c move leashholder to SPARE_PARTS directory 2015-06-13 05:48:06 +02:00
WendyStarfall
fd805829e1 move leashholder to ACCESSORY directory 2015-06-13 05:33:26 +02:00
WendyStarfall
94b06437bc move timer to SPARE_PARTS directory 2015-06-13 04:47:06 +02:00
Garvin
4b4833a8a7 added @Romka 's patch
https://github.com/OpenCollar/OpenCollarUpdater/pull/532
2015-06-12 17:14:37 +07:00
Garvin
85de5012d8 fixed a small but fatal typo ;) 2015-06-11 17:56:42 +07:00
Garvin
0720f213fd fixed to change label on actual label change ;) 2015-06-11 08:22:28 +07:00
WendyStarfall
145ce91aaf update element rotation, scaling, faces and flags 2015-06-10 17:45:35 +02:00
WendyStarfall
895bbc590c update naming, messages, notify, formatting...
...and attribute @GarvinTwine for labour
2015-06-10 17:38:50 +02:00
WendyStarfall
ee99e485c7 reissue original titler source
from upstream; log should do fine but if it don't, please git log the
disgraced titler variation for full history <3
2015-06-10 17:32:51 +02:00
Garvin
ef7230eca4 formatting and cleaning 2015-06-10 20:10:38 +07:00
Garvin
ad53b91327 formatting and cleaning 2015-06-10 19:09:25 +07:00
Garvin
3516ee7a44 formatting and cleaning 2015-06-10 18:38:59 +07:00
Garvin
82904fcac6 Revert "formatting and cleaning"
This reverts commit dbfb95d16106cc1e4e28987f8b6f43f444c90b3d.
2015-06-10 18:33:20 +07:00
Garvin
83f2cfd5dd formatting and cleaning 2015-06-10 17:52:19 +07:00
Garvin
128eba983c formatting and cleaning 2015-06-10 16:20:10 +07:00
Garvin
b750c96e6f formatting and cleaning 2015-06-10 15:29:50 +07:00
Garvin
0fcc690e6e formatting and cleaning 2015-06-10 15:12:50 +07:00
Garvin
cba6cda36d formatting and cleaning 2015-06-10 14:04:50 +07:00
Garvin
682e8b29e7 formatting and cleaning 2015-06-10 12:28:53 +07:00
Garvin
d123321672 formatting and cleanup 2015-06-10 10:39:45 +07:00
Garvin
bf147975a4 formatting and cleanup 2015-06-10 10:37:59 +07:00
Garvin
77daee6562 ungh... had 1 "p" left over at the wrong place 2015-06-10 10:19:57 +07:00
Garvin
f37aa4bc02 formatting and cleaning 2015-06-10 10:18:46 +07:00
WendyStarfall
f979aa23a2 fix prim type declaration
and now it all works =^.^=
2015-06-10 03:36:23 +02:00
WendyStarfall
14767bce52 fix syntax (missed a comma) 2015-06-10 03:31:53 +02:00
WendyStarfall
669bdac5f1 hide the floattext element's faces 2015-06-10 03:29:39 +02:00
WendyStarfall
180d2e9945 rotate the floattext element correctly
in global relation always zero
2015-06-10 03:25:36 +02:00
WendyStarfall
9e770b236e make floattext element a cylinder
this type seems suited for the new assembly style and doesn't protrude
as much as a box or prism would
2015-06-10 03:23:26 +02:00
WendyStarfall
117c11d1dd add noglow flag
so we fully have the floattext hidden from all looks customization
menus; we should consider a flag that addresses all cases for ease of
use
2015-06-10 03:21:03 +02:00
WendyStarfall
58bed79609 allow all prim types with the correct description
we can slice box, cylinder and prism
2015-06-10 03:18:21 +02:00
WendyStarfall
16c292998c increase default primscale
that's actually really important if we want to get accessory small
enough for petite and micro avatars (granted that other elements of the
device can also be scaled down far enough)
2015-06-10 03:14:19 +02:00
Garvin
ed5893e897 switched more UserCommand auth (LM ID) checks to the LM event 2015-06-09 17:36:10 +07:00
Garvin
9322b5b782 changing to check MSG ID in LM event instead in UserCommand function 2015-06-09 17:12:21 +07:00
Garvin
c81da23b9a changed LM handling and a bit clean up
not sure why send every LM first into the UserCommand function, so check
If(CMD) first
2015-06-09 15:14:25 +07:00
Garvin
99e28a85fe changed something that seemed not smart to me
changed LM checking behavior
2015-06-09 14:59:49 +07:00
Garvin
3500ac7bd2 removed spam dialog when command was "out of range" 2015-06-08 20:14:32 +07:00
Garvin
416fb8b01a added function NameURI 2015-06-08 18:15:53 +07:00
Garvin
76f14933a3 added simple function NameURI where uri was set 3x or more in the script 2015-06-08 13:47:59 +07:00
Garvin
2286ef3715 dealing with 6 and 7 avis found in URI dialog 2015-06-07 14:47:02 +07:00
Garvin
6e5432325a had to workaround an issue when 7 or 8 avis are found 2015-06-07 13:58:04 +07:00
Garvin
84ed914501 fixed an issue with sensor Agent URI 2015-06-07 09:32:19 +07:00
Garvin
08281924c6 some fine tuning
remenus added, info messages,
2015-06-07 06:42:56 +07:00
Garvin
fcc7a0ac7b adjusted script status to OpenCollar Dialog script 2015-06-07 06:41:23 +07:00
Garvin
3b7a2ec88d changed Agent Scan range to parcel added resets for AviMenus 2015-06-07 06:34:25 +07:00
Garvin
75a6e93ebf added support for sensor for agent to show URI 2015-06-07 05:41:11 +07:00
Garvin
4a8b17ead8 switched menus to URI 2015-06-06 20:59:17 +07:00
Garvin
0b1dd3c68b added URI support for removing avis from lists 2015-06-06 18:47:17 +07:00
Garvin
cc5050c5b3 added URI to select Avi menus
added in Prompt URI for name and button numbers if the menu is a scan
for avis, had to reduce the button number to 9 for that to work nicely
without running over the 512 char limit for menu text
mtc ;)
2015-06-06 18:03:45 +07:00
Garvin
9dcf293664 some clean up and nice formatting 2015-06-06 11:53:17 +07:00
Garvin
7e6f9dde37 fixed devicename issue with spaces in name 2015-06-06 08:30:49 +07:00
Garvin
a36a0fe148 replaced more legacy Name says with URIs some nice formatting 2015-06-06 07:21:30 +07:00
Garvin
d7f9dfa307 ordered better this time and added LMV2 support 2015-06-05 20:53:22 +07:00
Garvin
9b6bbded2a Revert "played a bit around in the listen event logic"
This reverts commit 48724c3421c4345cc2174eafab9d1b3f85ddc29e.
2015-06-05 19:32:58 +07:00
Garvin
0080064ff9 just some typos 2015-06-05 19:18:06 +07:00
Garvin
f92c695634 played a bit around in the listen event logic
some things seems a bit... strange and some not needed or used... revert
back if problems occur
2015-06-05 19:17:33 +07:00
Garvin
51c4ddba09 only shows subs in menus that are "manageable" (in the same region) 2015-06-05 17:52:44 +07:00
Garvin
a3a54b309b removed limitations that are handled with the new dialog script
like names longer than 24 chars or menu prompts >512 chars
2015-06-05 15:44:33 +07:00
Garvin
00757bd720 update to the current dialog script we use in the collar
This is a complete update to a newer version of the script we use in
OpenCollar 4.0 just slimmed from collar specific stuff the HUD does not
need
2015-06-05 15:41:39 +07:00
Garvin
cc45d91d42 removing "empty" fields from g_lSubs lists 2015-06-05 14:15:00 +07:00
Garvin
4e9554066a some final polish 2015-06-05 14:14:29 +07:00
Garvin
5b905c2d34 added a AddSub
Sub can be added by name or all with access by menu.
Reduced scan range for collars from region to Parcel
2015-06-05 13:14:34 +07:00
Garvin
56b51bddb3 merged the cager (rezzer) basics into this script 2015-06-05 11:43:42 +07:00
Garvin
4819e9a477 sorry there went something terrible wrong before 2015-06-05 08:42:19 +07:00
Garvin
ae0d6aff6f something wrong earlier fixed now i hope 2015-06-05 08:40:54 +07:00
Garvin
36f19f22a8 finished standard formatting 2015-06-05 08:38:51 +07:00
WendyStarfall
e87cdf8681 nest 3.9 relay in apps 2015-06-04 19:08:46 +02:00
WendyStarfall
7c2cbb280a move 3.9 API specific rlv apps to SPARE_PARTS 2015-06-04 18:44:52 +02:00
WendyStarfall
4e8cee6f6e move 3.9 API templates to SPARE_PARTS 2015-06-04 18:19:25 +02:00
Garvin
5cc08d171f mainly reformatting, standard variable names, some optimizing 2015-06-04 20:45:39 +07:00
Garvin
559d8a1a50 integrated menu and leash script into main 2015-06-04 18:59:10 +07:00
Garvin
a16aed7746 removed some... what had to be removed 2015-06-04 12:02:09 +07:00
Garvin
4eba3cf3bd changed variable names to standard + some nice formatting 2015-06-04 11:53:54 +07:00
GarvinTwine
16998dbe6d Merge pull request #9 from VirtualDisgrace/beta
standardization for names, variables, IM methods and messages by @GarvinTwine
2015-06-04 11:40:22 +07:00
WendyStarfall
9f8ee811f4 adjust card name for new naming convention 2015-06-03 12:01:29 +02:00
WendyStarfall
23f48ca0cd standardize textures card
In this card we can specify textures by category and name. If a texture
follows the format "Name,UUID" then this texture will be made available
to all elements of the device that are allowed to be textured. If the
format is "Category~Name,UUID" the texture will only be made available
to elements described as such category.
2015-06-03 11:28:35 +02:00
WendyStarfall
edbd96b7d6 update card names for new naming convention 2015-06-03 11:20:20 +02:00
Garvin
deb094a74e just some name convention standarizing 2015-06-03 14:52:08 +07:00
WendyStarfall
1f76db37fa move help card to LSL directory 2015-06-03 09:48:21 +02:00
WendyStarfall
669539ad1e move smartstrip help card to SPARE_PARTS directory 2015-06-03 09:46:30 +02:00
WendyStarfall
524631b31b move relay help card to SPARE_PARTS directory 2015-06-03 09:45:25 +02:00
Garvin
f0ad8bebc3 changed variable names to OC standard changed whispers to RegionSay 2015-06-03 14:32:53 +07:00
WendyStarfall
e3c0d287a6 standardize DEPRECATED bundle
This installer bundle is called "Cruft" and tagged DEPRECATED. When we
perform an installation, bundles tagged DEPRECATED will always be
removed and cannot be unticked in selection menus. A good choice for
this type of bundle could be everything that makes the device sluggish,
bloated or inoperational.

Example:
ITEM|pr0n
SCRIPT|mcafee
2015-06-03 09:08:51 +02:00
WendyStarfall
1bf291c099 standardize REMOVE bundle
This installer bundle is called "App" and tagged REMOVE. When we perform
an installation, bundles tagged REMOVE must be selected first so to be
installed. A good choice for this type of bundle could be all sort of
optional applications depending on the users individual need and taste.

Example:
SCRIPT|chat
SCRIPT|game
SCRIPT|office
2015-06-03 09:00:57 +02:00
WendyStarfall
0100fdb51f standardize INSTALL bundle
This installer bundle is called "Utility" and tagged INSTALL. When we
perform an installation, bundles tagged INSTALL will be pre-selected to
be installed as "standard" but can be unticked in selection menus if so
desired by the user. A good choice for this type of bundle could be the
kind of features the user usually almost always expects to have in the
device.

Example:
SCRIPT|monitor
SCRIPT|debug
SCRIPT|archive
2015-06-03 08:51:59 +02:00
WendyStarfall
f61bed0de0 standardize REQUIRED bundle
This installer bundle is called "Core" and tagged REQUIRED. When we
perform an installation, bundles tagged REQUIRED will always be
installed and cannot be unticked in selection menus. A good choice for
this type of bundle could be the basic elements to make the device
operational.

Example:
ITEM|license
ITEM|readme
SCRIPT|sys
SCRIPT|com
SCRIPT|db
2015-06-03 08:36:11 +02:00
WendyStarfall
2e3a61352f delete obsolete query cards 2015-06-03 08:01:10 +02:00
Garvin
a47c26cc00 added an else to avoid douple sending of values 2015-06-03 12:12:54 +07:00
WendyStarfall
9c82ff6299 make names pretty and remove clutter :3 2015-06-03 06:39:00 +02:00
Garvin
f80ea5c5cc now its really fixed 2015-06-03 10:26:22 +07:00
Garvin
7e75a25581 fixed a small wearerName bug 2015-06-03 10:11:36 +07:00
Garvin
08ba01e86f normalized SettingTokens and changed var name
g_sScript is now g_sSettingToken for script settings and g_sGlobalToken
for global settings
2015-06-03 09:49:57 +07:00
Garvin
5ca4b14be6 removed not working check 2015-06-02 14:34:40 +07:00
Garvin
2591874ae3 fixed 2 little bugs 2015-06-02 14:14:33 +07:00
Garvin
374dd4df2f ignoring old unused user category
removed limitation of owners
2015-06-02 14:07:52 +07:00
Garvin
31f6ce3e5e switched SayOwners to the proper place 2015-06-02 14:06:41 +07:00
Garvin
58ba77d3b0 changed setting group labels to CAPS (AUTH, GLOBAL...) 2015-06-01 19:01:04 +07:00
Garvin
6059678129 sanity checks when loading .settings nc 2015-06-01 18:32:51 +07:00
Garvin
42dd9fc65c message map constants adjustment 2015-06-01 12:36:43 +07:00
Garvin
a9bc847362 added prefix reset command
and fixed settings read in dialog
2015-06-01 12:09:23 +07:00
Garvin
7aa0e8e03e changed message map constants
general switch to shorter better matching constant names
2015-06-01 10:43:00 +07:00
Garvin
51857315e1 fixed user notices 2015-06-01 09:35:51 +07:00
Garvin
2195fe7071 added user comment when <2 particle prims 2015-06-01 08:53:41 +07:00
Garvin
4e28945428 changed cmd constant names 2015-05-31 19:21:44 +07:00
Garvin
be5bedf38a added DeviceName and completed URI 2015-05-31 18:41:00 +07:00
Garvin
7e9ce2cadc fixed uri from settings 2015-05-31 18:36:43 +07:00
Garvin
de1a28a09d some fixes for rainbow and scroll 2015-05-31 14:32:46 +07:00
Garvin
ab8df22628 last minute change ;) 2015-05-31 12:13:54 +07:00
Garvin
2ef6f86ddc slowed down rainbow a bit
&general code fixing
2015-05-31 12:03:14 +07:00
Garvin
fb88f82829 switch of defaults for verbose
changed to command and general cleanup
2015-05-31 10:17:12 +07:00
Garvin
eeaf7ad650 added verbose switch for couple anims 2015-05-31 09:36:42 +07:00
Garvin
6e366ee702 added a scroll and rainbow for normal titler 2015-05-30 19:07:06 +07:00
Garvin
3abc1d774e added menu for JailBreak 2015-05-30 15:39:12 +07:00
Garvin
eaccb89d68 clean up and removal of unused variables 2015-05-30 12:50:49 +07:00
Garvin
85ac1be5a9 clean up of old code 2015-05-30 12:30:45 +07:00
Garvin
fa67b962af removed MemoryLimit after Stack-Heap Collision
which happened due to forgein command processing with long strings
2015-05-30 06:52:23 +07:00
Garvin
709d0d87ec removing llOwnerSays 2015-05-29 18:29:56 +07:00
Garvin
1d26132b76 removing llOwnerSays 2015-05-29 17:59:26 +07:00
Garvin
e82a34c179 little performance boost 2015-05-29 15:57:07 +07:00
Garvin
b2e4351818 removed 1 OwnerSay to much earlier 2015-05-29 15:20:41 +07:00
Garvin
051d8c5b74 forget the last commit, this is the real one 2015-05-29 14:52:20 +07:00
Garvin
88886fb945 cleaned and polished ready for 4.0 2015-05-29 14:50:04 +07:00
Garvin
bb6cbddbb9 removed delay and started general clean up 2015-05-29 12:38:05 +07:00
Garvin
9e56a77273 removed remaining OnwerSays 2015-05-29 12:36:25 +07:00
WendyStarfall
c466c2f9f4 swap bell samples with brand new ones
The changes to script behavior attribute to @GarvinTwine , I also fixed
a small error in the global wearername tag. If those sound UUIDs are
used elsewhere as stand-alone or in non-OpenCollar based source, use a
CC BY SA license: http://creativecommons.org/licenses/by-sa/4.0/
2015-05-29 03:50:20 +02:00
Garvin
8bc12f5f0e changed llOwnerSays to standard notifies 2015-05-28 08:58:29 +07:00
Garvin
5d878e1c74 added jailbreak text in help-menu 2015-05-27 19:23:37 +07:00
Garvin
efe8cf2c2c tested max label length (1024 bytes) and set memorylimt to deal with that 2015-05-27 15:14:28 +07:00
Garvin
46facfc6af removed memorylimt for endless long labels 2015-05-27 14:18:21 +07:00
WendyStarfall
ad18741082 move rlvundress to SPARE_PARTS directory 2015-05-27 09:01:56 +02:00
Garvin
402ef55b9a changed to standard noaccess messages 2015-05-27 12:01:32 +07:00
Garvin
beac0943fb use of variables and menus 4.0 confirmed 2015-05-27 12:01:29 +07:00
WendyStarfall
d9310e8d0c move grabbypost to SPARE_PARTS directory 2015-05-27 05:50:11 +02:00
Garvin
eb90db66b1 set MemoryLimit to 10kg 2015-05-27 10:09:05 +07:00
Garvin
1008cee928 fixed 1 notify msg 2015-05-27 09:41:40 +07:00
Garvin
911356a547 name functionality fixed again, no debug 2015-05-26 16:15:39 +07:00
Garvin
3d35a4ecea removed genuine list 2015-05-26 15:01:49 +07:00
Garvin
457cae25af globales messaging and variable exchange
%WEARERNAME%,  %DEVICETYPE%, %CHANNEL%.%PREFIX%, %CHANNEL% are gloabl
varibles in strings now.
2015-05-26 13:10:27 +07:00
WendyStarfall
f0b34cbc4c use interface lm instead function for notifies
first practical test to let global interface handle notify;
g_sWearerName has to stay because of dialog text; @GarvinTwine had a
good idea to let the dialog script handle it for "%VARIABLE%" cases in
menus; practical test was successful
2015-05-25 05:52:17 +02:00
WendyStarfall
12cd0d1c32 sync in-world 20150524.2 2015-05-24 13:10:22 +02:00
Garvin
a8c41eb0cb removed rejection of non-scriptname settings 2015-05-24 16:45:05 +07:00
Garvin
4a269285b0 added global %NOACCESS% 2015-05-24 16:44:24 +07:00
Garvin
2f7b2a3dc4 NOTIFY 2015-05-24 15:26:38 +07:00
Garvin
e6d53f3b8f added NOTIFY command that replaces POPUP_HELP and all local notofy functions 2015-05-24 15:17:08 +07:00
Garvin
22f876e259 added g_sDeviceName
var formatting in settings to OC standards
2015-05-24 12:26:58 +07:00
WendyStarfall
3271c2f115 sync in-world 20150524.1 2015-05-24 02:22:24 +02:00
Garvin
99e7046e2a changed a SETTINGS_RESPONSE message for particles
rem one of 2 RenderTitle in LM after startup
2015-05-23 20:26:57 +07:00
Garvin
9c84a52fec rem not needed variables 2015-05-23 14:33:55 +07:00
Garvin
a961d0700b just some formatting 2015-05-23 11:50:35 +07:00
Garvin
d247c64a20 changed max owners/trusted to 3/15, some cleanup
removed for now anything with attach_interface, changed channel in "not
in range" dialog to something random
2015-05-22 19:03:18 +07:00
Garvin
0116f04e0b changed command "dump_cache" into "settings"
and general clean up and formatting
2015-05-22 14:44:20 +07:00
Garvin
656125d128 fixed "missing" themes, some formatting 2015-05-22 11:33:32 +07:00
WendyStarfall
de267d4afc sync in-world 20150521.3
In-world I also polished some of the box art on the side of the updater,
there was some smudgy from when I was painting the logo, now it's all
nerd-perfect!
2015-05-21 22:37:34 +02:00
WendyStarfall
f3eccb47a0 disable profiler 2015-05-21 22:16:25 +02:00
Garvin
acb87aeef3 just color formatting 2015-05-21 19:03:56 +07:00
WendyStarfall
ca3b2c9f33 update dialog text 2015-05-21 12:40:45 +02:00
WendyStarfall
30ebc041dc update color list 2015-05-21 11:46:45 +02:00
Garvin
ddc91075ff removed appLock, set memorylimit(45056) 2015-05-21 15:23:07 +07:00
Garvin
c8f41a5995 colormenu uses dialog
also added 49152 bytes memory limit
2015-05-21 15:03:13 +07:00
Garvin
47dfa45613 color menu switched to dialog adjustment 2015-05-21 09:34:52 +07:00
Garvin
bcd99673e5 moved color menu into dialog script
todo: change in all scripts to use the dialog's color menu
2015-05-20 20:29:57 +07:00
Garvin
1708b7acaf and without debug... 2015-05-20 14:26:00 +07:00
Garvin
d792ce15e1 remove resets to nothing 2015-05-20 14:23:13 +07:00
Garvin
62d1a653ed added glow as option to themes, set defaults no entry
if no entry for values in themes nc, defaults will be set: no glow, no
shine and white.
did some formatting
2015-05-20 12:35:43 +07:00
WendyStarfall
08e614091b sync in-world 20150519.1
profiler keeps running in settings for this one!
2015-05-19 21:20:26 +02:00
Garvin
157f22534c added leash options to themes 2015-05-19 15:58:59 +07:00
WendyStarfall
dec37b3950 sync in-world 20150518.3
I have refreshed the installer box art on the in-world object. All six
sides of the box are new textures I created from scratch with double the
resolution, in case we decide to, the faces with transparency can be
alpha-masked as well now.

http://screencast.com/t/AayeFdAesvv
2015-05-19 04:12:04 +02:00
Garvin
02894f9d6f removed design_id 2015-05-18 15:44:07 +07:00
WendyStarfall
c63a1820b8 Merge pull request #8 from VirtualDisgrace/beta
changed "MORE" Button to "Cancel" for non-wearer
2015-05-18 07:56:18 +02:00
Garvin
e58a06f13f changed "MORE" Button to "Cancel" for non-wearer
changed "MORE" Button to "Cancel" for non-wearer to avoid wearer getting
menus triggered by their owners
2015-05-18 12:43:21 +07:00
Garvin
1006d06470 added a lil sleep for new scripts to start before RebuildMenu 2015-05-18 09:21:04 +07:00
Garvin
28c82a81cb solved the error message on missing resizer with standard OC menuname request 2015-05-17 10:47:13 +07:00
Garvin
405c3c91d3 readded missing command check 2015-05-17 10:25:34 +07:00
Garvin
ca269031cb general clean up of the script 2015-05-17 09:59:49 +07:00
Garvin
1afc32056a readded stealth command, no themes menu without nc
stealth toggles hide/show again, error message and no themes menu when
.themes notecard is missing
2015-05-17 07:02:50 +07:00
WendyStarfall
d3a85f9e98 sync in-world 20150516.1 2015-05-16 17:04:24 +02:00
WendyStarfall
39600187b6 unlimit memory 2015-05-16 16:59:34 +02:00
WendyStarfall
401f1f0f4c disable profiler 2015-05-16 16:57:12 +02:00
Garvin
e0d5879509 removed not needed function use 2015-05-16 17:51:52 +07:00
Garvin
a709bd20ab check for resizer script and error message if not in content 2015-05-16 17:47:25 +07:00
Garvin
1f59cebda1 removed on rez setting requests and some unused variables 2015-05-16 08:38:52 +07:00
Garvin
4ead34a4e1 removed ForceUpdate workaround
refers to a very old issue:
05/Dec/11 2:08 PM
This issue has not been updated in 2011 and relates to a deprecated
viewer.
trying this without this for now
2015-05-16 08:29:17 +07:00
Garvin
6cbfe77e30 removed appLock and some unused variables 2015-05-16 07:01:58 +07:00
Garvin
a7301951ef forgot to comment debug... 2015-05-15 17:57:53 +07:00
Garvin
5a78b5fbbd removed show/hide menu and ability to hide individual parts
Collar can be hidden with stealth button in options and hide show
commands. Label and bell have their own show/hide options, if more is
wanted to hide use textures for that!
2015-05-15 17:56:31 +07:00
Garvin
d48ad7fff9 fixed themes "back" button , 2015-05-14 20:24:47 +07:00
Garvin
7b4fcf577b added a "mother" menu: looks
to switch in menu from one look change to the other i added a look menu.
show/hide menu does not work and needs review
2015-05-14 18:08:32 +07:00
Garvin
59ab2593c7 added a glow menu, removed unused appLock
added glow menu to set glow, removed things with appLock, made cancel
button instead of back .
2015-05-14 15:28:50 +07:00
Garvin
7fed8c0a87 removed color categories menu and added "real" back button support
no more color categories but a multi page color choose menu. Back
buttons from colors/shine/texture go back to element choice and elements
names are displayed in color/texture/shine menus. Back button from
element choice goes to options for now(to discuss)
2015-05-14 12:19:42 +07:00
Garvin
58568cc396 floatText and leashpoint tagged prims generally taken out of elements lists
prims with descriptions floattext or leashpoint are no more added to any
element list no matter if they have the ~nocolor etc tags
2015-05-14 07:18:24 +07:00
Garvin
83c9b057ba further cleanup and no more extra list
removed the other list and also the ability to set specific exceptions
for owners or trusted other than in the menu
2015-05-13 15:05:27 +07:00
Garvin
5cb9ea1552 cleanup unused code
started to comment out complex exception settings with others than
owners and trusted, added a sleep when sending exceptions to rlvmain to
prevent overflow
2015-05-12 16:06:56 +07:00
Garvin
d7756378bf added support for /prefix commands 2015-05-11 11:47:33 +07:00
WendyStarfall
865e651d6c sync in-world 20150508.1 2015-05-08 22:24:20 +02:00
Garvin
a9a90a6a93 removed auto particle size change by type switch 2015-05-08 19:15:16 +07:00
Garvin
c69d047cb9 g_sDeviceType and some formatting 2015-05-08 15:08:17 +07:00
Garvin
04c3f818ae g_sWearerName to URI changed 2015-05-08 11:13:02 +07:00
Garvin
881833c6b5 added prevention badword in penance
badwords cannot be part of the penance phrase
fixed a bug where CRLF wouldnt be recognize as new word in text box
2015-05-08 09:44:34 +07:00
Garvin
783c0c7d81 changed list and runaway (en/disable) behaviour
owner, trust, block list cannot have the same entries anymore
disable runaway is only chat command now, runaway always requires menu
confirmation
2015-05-07 19:23:39 +07:00
WendyStarfall
daf4e7814d sync in-world 20150506.3
includes dedicated vd scripts sobriquet and restrictions inside of the
in-world installer box
2015-05-07 00:09:42 +02:00
WendyStarfall
8fde4ef35e refresh globals
global wearer name
standard auth error
device type
2015-05-06 21:42:38 +02:00
WendyStarfall
7b46923f88 sync in-world 20150506.2
[11:23] Script info: 'Elementary Necklace': [21/21] running scripts,
1000 KB allowed memory size limit, 0.045577 ms of CPU time consumed.

This reading includes 16 plugins additional to the core. I'm satisfied
with this and think we could even have a bigger pillow in some places
still.
2015-05-06 20:27:43 +02:00
WendyStarfall
2009fabf65 set artificial memory limits
Purpose: This will give more accurate readings from nuisant "script
load" measurement devices.

The measuring and profiling was done by Garvin Twine. The profiler logic
was fleshed out by littlemousy. The grunt work has been done by me.
2015-05-06 20:06:47 +02:00
WendyStarfall
54f0fde1d4 sync in-world 20150506.1 2015-05-06 15:53:11 +02:00
Garvin
5da518eb65 Merge remote-tracking branch 'origin/workshop' into workshop
Conflicts:
	LSL/OpenCollar - leash.lsl
2015-05-06 20:31:53 +07:00
Garvin
f9780a329f added auth ranking for strict leash 2015-05-06 20:22:29 +07:00
WendyStarfall
62ce4402d7 sync in-world 150504.3 2015-05-04 21:10:33 +02:00
Garvin
e176c75125 fine tuning 2015-05-04 21:13:17 +07:00
WendyStarfall
8ac5fc3988 refresh header, g_sAuthError and deactivate debug 2015-05-04 11:41:16 +02:00
Garvin
e975fe72b1 memory limited 2015-05-04 15:41:53 +07:00
Garvin
25f8a0d47a reduced memory slightly added notecard texture uuid 2015-05-03 15:16:24 +07:00
Garvin
4c9738abeb add texture dropin, variable menu buttons 2015-05-02 18:44:40 +07:00
Garvin
c868f985f0 variable switch and cleanup
switched 2 integers to 1 string with 3 options for particeMode,general
variable name cleanup
2015-04-29 10:12:20 +07:00
WendyStarfall
d53869c1ad sync in-world 3.7.4/150428.1 2015-04-28 23:06:39 +02:00
Garvin
30b8a3750d worked on saving settings 2015-04-28 20:57:27 +07:00
Garvin
ba7085b955 added invisible leash
leash new turnMode command
2015-04-28 16:29:59 +07:00
Garvin
f44d328854 added ribbon/non ribbon mask, removed color categories 2015-04-28 13:19:44 +07:00
WendyStarfall
e0fc217749 remove sandbox
c'est la vie
2015-04-28 01:21:11 +02:00
Garvin
09da469c87 redo particle leash configuration
changed menu and cleaned old unused code
2015-04-27 18:33:16 +07:00
WendyStarfall
d35b64a629 update naming convention for globals*
* I'm also removing the GetName function here because we don't really
need it anymore if using URI.
2015-04-26 13:11:04 +02:00
WendyStarfall
3ed244cbd6 default to URI for wearername fallback 2015-04-26 11:34:39 +02:00
WendyStarfall
3b224d63a5 use standard notify for insufficient auth 2015-04-25 17:45:18 +02:00
WendyStarfall
c4da9b9077 update naming convention for globals
WEARERNAME -> g_sWearerName
CTYPE -> g_sDeviceType
2015-04-25 12:25:49 +02:00
Garvin
e28b2694eb empty wearerName fix
without a settings_request we need to set a wearername as default
2015-04-25 14:31:01 +07:00
Garvin
8a98d010b3 optimise for URI use
took unneeded Timer (we dont need that check with URI anymore) and
setting_reguest on state_entry out
2015-04-24 17:22:37 +07:00
WendyStarfall
effb68f34b tap into last.fm
- add textbox to enter last.fm ID
- add last.fm titler mode
- add evil titler mode
- add radio-ish buttons to cycle in between modes
- homogenize overall convention for commands
2015-04-24 07:58:54 +02:00
WendyStarfall
e8ee5e7bd7 prepare derivative work
Based on OpenCollar - titler 3.988
2015-04-24 07:52:25 +02:00
WendyStarfall
0b31ee3d36 refactor and optimize composition
- add dedicated vulnerability mode
- add standard auth error
- add dedicated manual web link
- add dedicated timer for notifies
2015-04-24 07:38:18 +02:00
WendyStarfall
dfcbe4e68b prepare derivative work
Based on OpenCollar - takeme by Sumi Perl
2015-04-24 07:31:16 +02:00
WendyStarfall
d6df953ff2 combine all appearance controllers
- nest menu in options
- configure stealth and theme selections
- update naming convention for config cards
- clean up redundant plugins and drafts
2015-04-24 07:16:44 +02:00
WendyStarfall
5c3183d94e prepare derivative work
Based on a merge of all OpenCollar appearance plugins by littlemousy
Virtual Disgrace - Paint is derivate of Virtual Disgrace - Customize
OpenCollar - styles is derivative of Virtual Disgrace - Paint
2015-04-24 06:56:14 +02:00
WendyStarfall
22cc2ee9a6 optimize performance
- nest this in RLV root
- shorten commands and infrastructure
- sort selection in alphabetical order
- add dedicated manual web link
2015-04-24 06:15:56 +02:00
WendyStarfall
398643ddb3 prepare derivative work
Based on a concept and fully functional draft by Sumi Perl
Virtual Disgrace - Outfits is derivative of OpenCollar - outfits
2015-04-24 05:47:02 +02:00
WendyStarfall
15a36d8f28 nest resizing features in options
- add attachment configuration for spine
- add attachment configuration for neck
- change adjustment arrows to reflect 3rd person
- update dialog menu texts and symbols
2015-04-24 05:32:54 +02:00
WendyStarfall
320432603b prepare derivative work
Based on a split of OpenCollar - appearance by Romka Swallowtail
Virtual Disgrace - Resizer is derivative of OpenCollar - adjustment
2015-04-24 05:25:54 +02:00
WendyStarfall
1834582e26 clear personal notify on runaway as well
we don't need to be notified if the list is empty
2015-04-24 04:51:04 +02:00
WendyStarfall
63369cc1d6 move outfits to LSL directory 2015-04-24 01:56:31 +02:00
WendyStarfall
dcfd0f461a move takeme to LSL directory 2015-04-24 01:55:53 +02:00
WendyStarfall
49761e7a5a move spy to LSL directory
this time I get the renaming and moving right! (I hope) 🐱
2015-04-24 01:47:35 +02:00
WendyStarfall
32b008f10a change weblink formatting+...
...make notify chat command exclusive
improve setting behaviour for authorization
add authorization for temporary ownership
2015-04-24 01:28:56 +02:00
WendyStarfall
7b49695252 change symmetry swap; remove owner menu auth 2015-04-24 01:28:31 +02:00
WendyStarfall
a692323aaf set notify to false by default 2015-04-24 01:28:10 +02:00
WendyStarfall
a5304cb5ca add clickable slurl to trace report 2015-04-24 01:27:52 +02:00
WendyStarfall
aa7aa5c9b9 add version number and some more formatting 2015-04-24 01:27:35 +02:00
WendyStarfall
d09809fd5d add manual link 2015-04-24 01:27:15 +02:00
WendyStarfall
762465b176 fix notify menu button; change notify sStr 2015-04-24 01:26:59 +02:00
WendyStarfall
eebb7faf6a add notify feature for wearer 2015-04-24 01:26:42 +02:00
WendyStarfall
1010713b89 create disgraced spy variant
this app is based on OpenCollar - subspy at version 3.957; if user
desires to give additional information on each broadcast, please
un-comment line 137 to 142 (exact line number may change if compiling in
mono on selected virtual worlds or if we update this app in the future)
2015-04-24 01:26:00 +02:00
WendyStarfall
d0ed57ac6d remove options menu
- update naming convention for config cards
2015-04-24 00:36:30 +02:00
WendyStarfall
5acc61ef98 homogenize menu for whether state and viewer
- add standard auth error
- don't rat out the wearer when states differ
- improve chat prompts for whether state
2015-04-24 00:31:52 +02:00
WendyStarfall
b697200a34 move folders menu to root RLV
- remove replace buttons
- remove "global actions" button
- add a new direct command
2015-04-24 00:16:37 +02:00
WendyStarfall
213c31b7f0 add standard auth error for all non authed agents
- adjust defaults for our own auth role style
- combine IM exemptions where meaningful
- make a first pass on removing "other"
- add automagical exemptions for temporaries
2015-04-24 00:08:30 +02:00
WendyStarfall
f86b7141af use original 3.990 main
- update version number to current patch
- update naming convention for config cards
- update urls for tracking version and news
- add dedicated method for our own updaters
- add standard authorization error
- migrate  and integrate options menu from settings
- try a notify without clumsy object name
- change several messages to our own style
2015-04-24 00:05:11 +02:00
WendyStarfall
4a984396ec use original way to fetch owner key
- default prefix to first two characters of username
- default global wearername to dynamic uri
2015-04-23 23:54:21 +02:00
WendyStarfall
49e440bdf4 default to silk leash
- apply default also after cold boot
- remove redundant colour selection
- add ribbon particle mask
- combine size and gravity to feel menu
- add a selection box for glow option
- add rotated rope texture by Nori Ovis
- add leather and silk texture by Wendy Starfall
- make menu composition useful for humans
2015-04-23 23:51:02 +02:00
WendyStarfall
d8120dbd39 default strict mode true
- remove irritating restrictions in strict mode
- add meaningful fly restriction in strict mode
- update command giver name
- make menu composition useful for humans
- give commands creative and meaninful names
- remove manual link (for now)
- update available selectable leash lengths
- add a red balloon
2015-04-23 23:43:24 +02:00
WendyStarfall
46fcd2641b update naming convention for config cards
- change name sample to active member
- remove manual page link (for now)
- update ParterName and formatting
2015-04-23 23:29:27 +02:00
WendyStarfall
8e0e673f3b don't authorize for 502 2015-04-23 13:45:56 +02:00
WendyStarfall
d291a31024 update commands, roles and behaviour 2015-04-23 13:42:19 +02:00
WendyStarfall
3085ebf842 remove old heightfix cruft
- adjust dialog menu text
- conform wearer name to OC naming convention
2015-04-23 13:28:40 +02:00
WendyStarfall
4fdcc8048a give re-menu and infor for... pt.II
oops! forgot the important part 😇
2015-04-14 02:13:33 +02:00
WendyStarfall
f56258cc3b give re-menu and info for all non authorized roles
that means for temporary, secondary, group/public and wearer
2015-04-14 02:11:40 +02:00
WendyStarfall
650f63e8f0 Merge pull request #526 from Judge17/patch-2
Update OpenCollar - leash.lsl
2015-04-10 04:24:39 +02:00
Judge17
6689137836 Update OpenCollar - leash.lsl
Fix for griefer sub problem
2015-04-09 21:22:14 -05:00
WendyStarfall
f3c05030c4 Merge pull request #525 from RomkaSwallowtail/patch-3
Update OpenCollar - bell.lsl
2015-04-10 02:22:48 +02:00
Romka
d125ccc2b5 Update OpenCollar - bell.lsl
reset script when chaged owner
2015-04-09 14:13:25 +03:00
WendyStarfall
b5373045e6 update version number 2015-02-28 03:36:26 +01:00
WendyStarfall
6a37813f1a 3.997 ready to ship
- Increased detail in informal blurb for non-RLV users with active RLV.
- Stability improvement for already listed exceptions for real auth
roles.
- Fix for wearer name refresh in assemblies that didn't reset after
production.
2015-02-28 00:44:41 +01:00
WendyStarfall
1f17edd889 make help blurb print more...
...often for non-rlv users and improve help blurb with popup_help
message.

manually merged from Virtual Disgrace source
2015-02-26 00:28:24 +01:00
WendyStarfall
b727cb4e02 ship with RLV pre-enabled 2015-02-26 00:25:31 +01:00
WendyStarfall
6df5d1bf31 check if exceptions are already part of rlvex lists
addressing #521
Attribution: littlemousy
manually merged from Virtual Disgrace source
2015-02-26 00:10:33 +01:00
WendyStarfall
68379f3611 add footkiss
Attribution: Betsy Hastings
2015-02-23 12:18:41 +01:00
WendyStarfall
54ca0b8fa9 add jumphug
Attribution: Nandana Singh
2015-02-23 12:17:18 +01:00
WendyStarfall
45f88d752b update news
valentine's day 2015
2015-02-13 08:34:45 +01:00
Toy Wylie
2bdc7d368f Fix T pose at the start 2015-02-09 23:08:00 +01:00
Toy Wylie
5d1017fe95 Fix T pose at the start
Upload with in 70 instead to fix loop twitch
2015-02-09 23:03:13 +01:00
Toy Wylie
372546ab03 Fix T pose at the start 2015-02-09 22:58:00 +01:00
WendyStarfall
fc95d7ee50 update readme 2015-02-09 22:55:47 +01:00
Toy Wylie
e06d160c41 Fix T pose at the start 2015-02-09 22:49:07 +01:00
Toy Wylie
62241b2b74 Fix T pose at the start 2015-02-09 22:29:49 +01:00
WendyStarfall
39b403195d create pose for wrists cuffed in front
upload with p5 in 2 out 2 relaxed ease 0.3 / 0.3
2015-02-09 21:59:07 +01:00
WendyStarfall
025e78ae5c create pose for wrists cuffed behind the back
upload with p5 in 2 out 2 relaxed ease 0.3 / 0.3
2015-02-09 21:45:21 +01:00
Toy Wylie
17a61279f0 Created new lying on belly animation
Upload with p4 in 80 out 100 relaxed ease 0.3 / 0.3
2015-02-01 21:33:58 +01:00
Toy Wylie
138fd69bd0 Created new lying on back animation
Upload with p4 in 64 out 100 relaxed ease 0.3 / 0.3
2015-02-01 20:46:52 +01:00
WendyStarfall
b9f81d822c add cc-by-sa 4.0 2015-02-01 18:33:50 +01:00
Toy Wylie
df7bac2376 Created new kneel animation
Upload with p4 in 69.8 out100 relaxed ease 0.3 / 0.3
2015-02-01 18:02:16 +01:00
Toy Wylie
5261533be1 Created new tower animation
Upload with p4 in 65.8 out 100 relaxed ease 0.3 / 0.3
2015-02-01 17:44:56 +01:00
Toy Wylie
b7eb34948a created new stiff neck animation
Upload with p5 in 70 out 100 relaxed ease 0.3 / 0.3
2015-02-01 17:28:59 +01:00
Toy Wylie
31365d01dc Created new nadu animation
Upload with p4 in 68.5 out100 relaxed ease 0.3 / 0.3
2015-02-01 17:27:08 +01:00
WendyStarfall
3ddfbc6a1d Merge pull request #520 from RomkaSwallowtail/patch-3
update prims glow save/restore
2015-01-27 07:02:09 +01:00
Romka
e302417ecd Update OpenCollar - bell.lsl 2015-01-27 08:42:19 +03:00
Romka
381dceb809 Update OpenCollar - hide.lsl
update prims glow save/restore
2015-01-27 08:40:07 +03:00
WendyStarfall
29f85c3ec2 Merge pull request #519 from RomkaSwallowtail/patch-4
Update OpenCollar - customizer.lsl
2015-01-11 15:12:35 +01:00
WendyStarfall
a02c9db5ce Merge pull request #518 from RomkaSwallowtail/patch-3
Update OpenCollar - styles.lsl fix some bugs
2015-01-11 15:12:16 +01:00
Romka
c5a3a22ad7 Update OpenCollar - customizer.lsl 2015-01-10 18:20:28 +03:00
Romka
624801ce3a Update OpenCollar - styles.lsl
fix some bugs
2015-01-10 16:20:28 +03:00
WendyStarfall
5f75ade0a9 Merge pull request #517 from RomkaSwallowtail/patch-5
Update OpenCollar - shininess.lsl
2015-01-05 19:56:50 +01:00
WendyStarfall
a55c4243b7 Merge pull request #515 from RomkaSwallowtail/patch-3
Create OpenCollar - glow.lsl
2015-01-05 19:56:35 +01:00
WendyStarfall
5c544b4f1a Merge pull request #516 from RomkaSwallowtail/patch-4
Create OpenCollar - customizer.lsl
2015-01-05 19:54:09 +01:00
Romka
8f5e6bcb85 Update OpenCollar - shininess.lsl 2015-01-04 19:25:15 +03:00
Romka
3b5989ba8b Create OpenCollar - customizer.lsl
Customizer
to change the description of the elements

I'm not sure that it should be.
2015-01-04 19:22:44 +03:00
Romka
949b510589 Create OpenCollar - glow.lsl
set elements glow, like shininness
2015-01-04 19:10:04 +03:00
WendyStarfall
578bba453b Merge pull request #513 from RomkaSwallowtail/patch-2
Update OpenCollar - bell.lsl  Glow!
2015-01-04 01:30:11 +01:00
Romka
e739e182be Update OpenCollar - hide.lsl 2015-01-03 23:33:57 +03:00
Romka
b8eabc004a Update OpenCollar - bell.lsl 2015-01-03 23:31:38 +03:00
Romka
f63a4f3e76 Update OpenCollar - bell.lsl
prim glow save/restore on hide/show bell, like as hide script
2015-01-03 23:11:50 +03:00
WendyStarfall
0720e93ed2 Merge pull request #511 from RomkaSwallowtail/patch-2
Update OpenCollar - shocker.lsl
2015-01-03 09:58:50 +01:00
WendyStarfall
e031f6f965 Merge pull request #510 from RomkaSwallowtail/patch-1
Update OpenCollar - styles.lsl  standalone
2015-01-03 09:58:40 +01:00
Romka
c6fbcbea6e Update OpenCollar - styles.lsl 2015-01-03 11:54:41 +03:00
Romka
38833ea902 Update OpenCollar - styles.lsl 2015-01-03 11:54:17 +03:00
Romka
8881119e79 Update OpenCollar - shocker.lsl
some polished
2015-01-03 11:39:41 +03:00
Romka
100ebb54f8 Update OpenCollar - styles.lsl
made standalone work, if not installed scripts texture color and shine.

stupid spaces!
2015-01-03 11:36:27 +03:00
WendyStarfall
c4e8a402d4 3.995 ready to ship
- Relay uses the up to date way to query avatar "About".
- Wearers are able to break leashes they created themselves.
- RLV sections no longer irritate users with defunct V̶i̶e̶w̶ features.
- The Grabby Post has been replaced with a solid, minimal memory Leash
Post.
- The camera app has working RLV 2.9 features with alt-pan lock and
mouselook.
2015-01-02 23:52:46 +01:00
WendyStarfall
6ed71d7369 add info note for cam feature requirements 2014-12-31 16:17:25 +01:00
WendyStarfall
6db480f173 Merge pull request #509 from RomkaSwallowtail/main
Update OpenCollar - rlvmain.lsl   what if RLV disabled?
2014-12-26 16:21:47 +01:00
Romka
d2271800c1 Update OpenCollar - rlvmain.lsl
added information in RLV-menu if RLV disabled
2014-12-26 15:12:13 +03:00
WendyStarfall
f757557dc5 Merge pull request #508 from RomkaSwallowtail/main
Update OpenCollar - main.lsl   "Fix Menu" for owners
2014-12-22 00:07:37 +01:00
Romka
81eb40d45f Update OpenCollar - main.lsl
I think it is right.
2014-12-22 00:35:38 +03:00
WendyStarfall
2abda86bb5 Merge pull request #507 from RomkaSwallowtail/main
Update OpenCollar - rlvrelay.lsl
2014-12-20 16:23:17 +01:00
Romka
f5e9671999 Update OpenCollar - rlvrelay.lsl 2014-12-20 11:19:50 +03:00
WendyStarfall
530a0aa899 Merge pull request #506 from RomkaSwallowtail/patch-1
Update OpenCollar - rlvstuff.lsl : Fix previous break View features on RLV 2.9
2014-12-19 22:26:39 +01:00
Romka
a4fed0377e Update OpenCollar - rlvstuff.lsl 2014-12-19 23:35:50 +03:00
Romka
20751d7619 Update OpenCollar - rlvstuff.lsl
fix break View features on RLV 2.9
2014-12-19 23:25:06 +03:00
WendyStarfall
55a43c02a7 Merge pull request #504 from RomkaSwallowtail/patch-2
Update OpenCollar - rlvstuff.lsl  SitNow don't work!
2014-12-19 20:38:10 +01:00
WendyStarfall
811e056dc5 Merge pull request #505 from RomkaSwallowtail/patch-3
Update OpenCollar - listener.lsl   llGetOwnerKey(kID)
2014-12-19 20:36:37 +01:00
WendyStarfall
a3643d4ac9 Merge pull request #503 from RomkaSwallowtail/patch-1
Update BUNDLE_99_Clutter_DEPRECATED, remove old rlv scripts
2014-12-19 20:32:06 +01:00
Romka
b285377ce4 Update OpenCollar - listener.lsl
is no need llGetOwnerKey(kID) in this
auth works properly without them, Owner HUD and Grabby/Leash Post too
2014-12-19 18:16:41 +03:00
Romka
16e1dd822c Update OpenCollar - rlvstuff.lsl
fix sBehavior for  'sit:<uuid>=force' command
2014-12-19 17:59:21 +03:00
Romka
7e2ce2df0b Update BUNDLE_99_Clutter_DEPRECATED
remove old unused scripts, they replaced by rlvstuff
2014-12-19 16:13:02 +03:00
WendyStarfall
9d0ba1d6f6 rlvview redundant with changes in rlvstuff
rather than introducing a whole extra, optional script, this is solved
by a short info note in the view section in stuff
2014-12-19 06:06:10 +01:00
WendyStarfall
c45071a4ec Revert "Use Say instead of regionsay for ping response"
This reverts commit 0351f9cceb.
2014-12-19 05:36:52 +01:00
WendyStarfall
ea599aa6d8 change "landmark" to "bookmark" in dialog 2014-12-19 05:29:15 +01:00
WendyStarfall
44e146367e fix undesired force tps by obsolete devices 2014-12-19 05:25:34 +01:00
WendyStarfall
6976726042 swap posts; make rezpost leash wearer
this is a trick I learned from mouse
2014-12-19 04:45:09 +01:00
WendyStarfall
0d4db6e728 add info note for view features 2014-12-19 04:02:08 +01:00
WendyStarfall
f4afde1500 resurrect view section
Alright, so we said we make a test to see if the minimum required
version of RLV is used and depending on that have several options how to
handle things if the version cannot play camera/view features:

a) We use an alternative menu informing the minimum required RLV version
is not used.

b) We don't show the button in the first place.

c) We show the button but instead of letting it give the menu we do a
notify to inform the minimum required RLV version is not used.
2014-12-17 00:16:07 +01:00
WendyStarfall
94bc332902 create rlvview spare part (read description!)
This is a copy of rlvstuff with only the Camera/View specific features,
however, there are also leftovers from sit commands etc.. so it will
have to be cleaned up before putting it into a collar.

For now, we can work on this source and improve the view section to
merge it back into rlvstuff at a later point or we can work on our
existing optional Camera app.

Camera/View features as present in RLV 2.9 have to remain optional until
the majority of viewers provide this or a similar feature set and there
is no rush for this.
2014-12-15 01:05:36 +01:00
WendyStarfall
68e6afa2de remove view section 2014-12-15 00:52:38 +01:00
WendyStarfall
4701e8364e make modes also set camunlock restriction...
...or the wearer can simply alt-zoom/pan elsewhere; this could
optionally be replaced with a checkbox tho
2014-12-15 00:50:46 +01:00
WendyStarfall
f49b133f9b add mouselook feature 2014-12-15 00:09:09 +01:00
WendyStarfall
9f4f08f7a0 make ClearCam function lift camunlock restriction 2014-12-14 23:10:42 +01:00
WendyStarfall
14d5168832 make LockCam function set camunlock restriction 2014-12-14 23:09:58 +01:00
WendyStarfall
5880d94f10 add rlv command message 2014-12-14 23:07:47 +01:00
littlemousy
c052af35e3 Use Say instead of regionsay for ping response
say the response instead of regionsay.  Regionsay goes further, but always goes to the object's owner, not the object itself.  This breaks grabbypost, and any other items using the ownerchannel that aren't worn attachments.
2014-12-11 20:07:34 +00:00
littlemousy
eed08b2f72 Merge pull request #499 from ml132/main
Added tpto:<coord>=force processing to bookmarks.lsl
2014-12-09 10:28:59 +00:00
littlemousy
9f308ef508 Grant wearer permission to break leashes they create themselves 2014-12-05 16:37:40 +00:00
Alex (ml132)
f5a6df44b3 Added tptp:<coord>=force processing to bookmarks.lsl
Due to recent changes, Opencollar no longer accepts the command
"tpto:<coord>=force" (tested with the old owner hud).  This commit fixes
this issue.
2014-12-01 18:32:21 -08:00
littlemousy
915f6878cf Merge pull request #498 from RomkaSwallowtail/main
Update OpenCollar - badwords.lsl    don't disable and clear badwords on Safeword
2014-12-01 19:54:30 +00:00
Romka
0afeeaa7a3 Update OpenCollar - badwords.lsl 2014-12-01 21:06:00 +03:00
littlemousy
3feb176eeb Merge pull request #497 from RomkaSwallowtail/main
Update OpenCollar - badwords.lsl            clear clutters, fix Safeword
2014-12-01 15:03:48 +00:00
Romka
6a128e6fda Update OpenCollar - badwords.lsl
clear clutters, fix Safeword
2014-12-01 17:35:19 +03:00
WendyStarfall
8d23e84227 update news
marketplace availability
2014-11-28 09:52:22 +01:00
WendyStarfall
17114d2968 3.994 ready to ship
- stabilize behaviour for secowner list
- reliably clear secowner exceptions
2014-11-24 02:54:23 +01:00
WendyStarfall
28a255f545 clear exceptions for removed agents (#493)
for some reason exceptions for primary owners were cleared correctly
without this change but not for secondary owners; this should take care
of both
2014-11-23 23:30:26 +01:00
WendyStarfall
a2512f7af7 remove ~secowners artifact in OldToken fix (#493)
this should clear secondary owner lists properly without leaving an
empty ~secowners string in our settings cache behind
2014-11-23 23:08:58 +01:00
WendyStarfall
eb62b9ce92 bandaid for #493
needs to be looked over by mouse; the problem with sec owners not removed from the list is solved here, we keep a settings artifact "secowners~" but access and exceptions are added and cleared correctly
2014-11-22 15:16:28 +01:00
WendyStarfall
8b9600c443 change default plugin menu to Apps 2014-11-18 22:52:40 +01:00
WendyStarfall
d274b812f4 3.993 ready to ship
- fix for runaway disabler
- fix for clearing rlv in timer
2014-11-18 17:03:43 +01:00
littlemousy
e2305b7b10 fix menu bug going up from root actions 2014-11-18 15:53:00 +00:00
WendyStarfall
8c29a7a1e1 Merge pull request #491 from Ansariel/main
Added basic support for Gaeline AOs
2014-11-03 05:26:34 +01:00
Ansariel Hiller
d5b03ea9a7 Added basic support for Gaeline AOs 2014-11-03 02:13:33 +01:00
littlemousy
27514e933f Merge pull request #486 from ml132/patch-1
Don't treat rlv commands (tplm=n) as teleport requests
2014-10-28 09:13:08 +00:00
Alex
2b6e6fc2fe Don't treat rlv commands (tplm=n) as teleport requests
When using the chat commands for the teleport restrictions, this change prevents the script for searching for landmarks named "m=n", "oc=n" and "ure=n"
2014-10-27 20:48:08 -07:00
littlemousy
c09e5de0bb Fix typo in save settings string
Addresses #485
2014-10-28 01:58:04 +00:00
littlemousy
94f43f02bf Merge pull request #481 from RomkaSwallowtail/main
Adjustment as plugin
2014-10-27 10:57:57 +00:00
littlemousy
8608fec2e1 Merge pull request #484 from masterofsorts/patch-1
Update OpenCollar - rlvstuff.lsl
2014-10-27 09:44:50 +00:00
masterofsorts
07b475c6d2 Update OpenCollar - rlvstuff.lsl
Removing : as a delimiter, these elements should be fed forward to RLV main
2014-10-27 05:08:47 +00:00
littlemousy
9d2e11464d Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main 2014-10-24 16:03:07 +01:00
littlemousy
ceed17a139 Replace "RESET" command with "clear" to release RLV locks
Fix issue #482
2014-10-24 16:00:53 +01:00
Romka
e2d5c3d38b Update BUNDLE_01_Core_REQUIRED
Adjustments as plugin
2014-10-23 20:18:45 +04:00
Romka
273d7ae1ac Create BUNDLE_25_Adjustment_INSTALL
Adjustments as plugin
2014-10-23 20:18:04 +04:00
littlemousy
0d8effb4e3 Merge pull request #477 from RomkaSwallowtail/main
appearance and adjustment menus corrections
2014-10-23 14:53:54 +01:00
Romka
72b274d5e8 Update OpenCollar - main.lsl
fix the url
2014-10-23 14:51:55 +04:00
Romka
8b53654206 Update OpenCollar - adjustment.lsl 2014-10-23 14:36:52 +04:00
littlemousy
f9de5c2137 Merge pull request #475 from RomkaSwallowtail/main
rename Appearace to Adjustment
2014-10-22 21:59:40 +01:00
littlemousy
8a874ef212 Merge pull request #476 from RomkaSwallowtail/patch-1
Update OpenCollar - bell.lsl
2014-10-22 21:58:18 +01:00
Romka
46d8748a62 Update OpenCollar - bell.lsl
remove clutter
add CTYPE
change save settings
2014-10-23 00:51:16 +04:00
littlemousy
88b98b07d3 Reset Appearance menu buttons on menu reset 2014-10-22 14:39:04 +01:00
Romka
2fbc109dcc Update BUNDLE_99_Clutter_DEPRECATED 2014-10-21 08:54:01 +04:00
Romka
fcc80a815b Update BUNDLE_01_Core_REQUIRED
appearance -> adjustment
2014-10-21 08:51:01 +04:00
Romka
42132cfd69 Update and rename OpenCollar - appearance.lsl to OpenCollar - adjustment.lsl
rename
2014-10-21 08:48:38 +04:00
Romka
80c18965c0 Merge pull request #1 from OpenCollar/main
3.992 ready to ship
2014-10-21 08:43:30 +04:00
WendyStarfall
dc05a35fff 3.992 ready to ship
- fix for "re-sit on relog" nuisance
2014-10-20 16:18:42 +02:00
WendyStarfall
64a787f9d0 Merge pull request #471 from RomkaSwallowtail/patch-1
Update OpenCollar - appearance.lsl     swop axes ?
2014-10-18 02:06:20 +02:00
littlemousy
2153d22a30 Fix problem with forced sit on relog 2014-10-17 08:56:51 +01:00
Romka
c23e051583 Update OpenCollar - appearance.lsl 2014-10-16 23:18:54 +04:00
Romka
7c49acdad0 Update OpenCollar - appearance.lsl 2014-10-16 23:15:06 +04:00
Romka
18ebb71357 Update OpenCollar - appearance.lsl
swop  X Y Z axes depending on the attachment, for correct buttons response
2014-10-16 23:06:25 +04:00
littlemousy
fbcc097138 Merge pull request #470 from RomkaSwallowtail/patch-1
Update OpenCollar - appearance.lsl    optimisation
2014-10-16 15:20:24 +01:00
Romka
c77acbb3a3 Update OpenCollar - appearance.lsl
remove clutter
slight optimisation
allow Owner access menu

maybe rename script to 'adjust' ?
2014-10-16 18:05:23 +04:00
littlemousy
4d18c58189 Same again, without the debug. 2014-10-16 03:36:28 +01:00
littlemousy
e64f0650d3 First step in decoupling size/position from root of appearance subsystem.
The current Appearance script act as a root for all of the appearance functions, and also includes a (mainly redundant) resize and positioning system that duplicates viewer controls.  This commit is the first step in getting Main to hold the appearance menu (if any appearance plugins are installed) along with the appearance lock. This will allow users to install whichever appearance module they like without needing the size/position baggage they might not want.
Still needs a few loose ends tidying up, and the normal optimization.
2014-10-16 03:21:51 +01:00
littlemousy
b7ebef32b6 Merge pull request #469 from RomkaSwallowtail/patch-1
Update OpenCollar - badwords.lsl   WEARERNAME
2014-10-15 20:50:02 +01:00
Romka
cefc288ff4 Update OpenCollar - badwords.lsl
llWhisper or llSay ?
2014-10-15 23:14:24 +04:00
littlemousy
363f50d38a Add placeholder for llSetMemoryLimit() in each script
This should be the last of the debug/profile changes ( #331 )
2014-10-15 09:01:57 +01:00
littlemousy
b8b94af118 Merge pull request #468 from RomkaSwallowtail/patch-1
Update OpenCollar - anim.lsl  -  a typo!
2014-10-15 08:53:54 +01:00
Romka
461cd5b8ad Update OpenCollar - anim.lsl
a typo!
2014-10-15 10:52:30 +04:00
WendyStarfall
e556dfac72 3.991 ready to ship
- fix for events in anim
- fix for unwanted sit restriction in stuff
2014-10-15 06:58:05 +02:00
littlemousy
31320ee427 Fix bugs in last round of Debug changes ( issue #331 ) 2014-10-15 02:00:58 +01:00
littlemousy
5a5aef369a Remove unwanted unsit=n
unsit=y....unsit=n sent in error regardless of existing sit restriction.
Another catch by Romka.  Thanks!
2014-10-14 15:15:32 +01:00
littlemousy
33b660095e Add standard debug function with profiling.
See Issue #331
2014-10-14 09:48:26 +01:00
littlemousy
664fac1176 Fix second permissions bug from new collars 2014-10-14 00:32:15 +01:00
littlemousy
0c4041a134 Quick fix to anim permissions bug in new collars 2014-10-13 23:18:23 +01:00
littlemousy
1a186f9972 Quick fix to anim permissions bug
on_rez event fires before change event, where script is reset on owner change.  Getting the owner key dynamically here should prevent the error by requeting permissions from the correct avatar.
2014-10-13 23:14:30 +01:00
littlemousy
d689638eba changes to debug 2014-10-13 23:12:55 +01:00
littlemousy
b1cd00a21b Add llSetTimerEvent call
Well spotted Romka.  Timer events don't do anything without setting up the timers to call them :)
Fixed.
2014-10-13 18:56:51 +01:00
littlemousy
c0d81ca21f Merge pull request #463 from RomkaSwallowtail/patch-1
Update OpenCollar - listener.lsl  a typo
2014-10-13 18:55:00 +01:00
Romka
e32010b1dc Update OpenCollar - listener.lsl
a typo

and look at line 641    timer()
where llSetTimerEvent( time ) ?
2014-10-13 21:50:14 +04:00
littlemousy
fb203acdc7 Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main 2014-10-13 18:50:11 +01:00
littlemousy
1442381017 Re-added GetName(...) function.
Clobbered Romka's GetName function in my last commit, replaced.
2014-10-13 18:39:08 +01:00
littlemousy
a128904eb8 fix typos in variable names 2014-10-13 18:33:47 +01:00
littlemousy
bf01fa444e Make listener respond to WEARERNAME deletes.
If listener sends out the "default" wearername after wearername is reset, all other scripts don't need to know how to preapre the default wearer name.
Also, no need for other scripts to listen for the WEARERNAME delete messages.
2014-10-13 18:23:11 +01:00
littlemousy
ea25df5af7 Refactor for better memory useage 2014-10-13 18:11:17 +01:00
littlemousy
3c653d581f Make listener respond to WEARERNAME deletes.
If listener sends out the "default" wearername after wearername is reset, all other scripts don't need to know how to preapre the default wearer name.
Also, no need for other scripts to listen for the WEARERNAME delete messages.
2014-10-13 17:35:17 +01:00
WendyStarfall
b26ac93d08 3.990 ready to ship
3.990 Summary:

- fix for valid tpto commands in bookmarks from 3.944 HUDs (Sumi)
- touch feature for bell (Romka)
- changes to notify handling in all scripts (Romka)
- cosmetic fix for a chat prompt in leash (mrbendig)
- automatic correction for description in floattext elements on update
(Romka)
- fix for temporary ownership token (mouse)
- fix for a loop coming from the relay (mouse)
- tweak for checking rlv in the viewer (mouse)
- re-menu and information for non-authorized attempts to access rlvex
(Wendy)
- replace and replace all buttons in rlvfolders restored (Wendy)
- wrap-up for touch feature in bell while keeping the menu visually
familiar (Wendy)
- global wearer name support for bell (Wendy)
- optimization for global wearer name support in bell (Romka)
- nicer formatting for multi-page menus and those with menu keys (Wendy)
- major tidy up for timer in menus and code readability (Wendy)
- fix for unleash perms on timer expiration while wearer is offline
(mouse)
- merge of all rlv plugins into rlvstuff (mouse)
- new features for touch restrictions (mouse)
- implementation of miscellaneous feature set in rlvstuff (Wendy)
- new features for visibility restrictions (Wendy)
- "prettynames" can now contain spaces (mouse)
- fine polishes for restriction names and descriptions (Wendy)
- fix for hovertext restriction in misc (Wendy)
- further tidy-up with Notifies (Romka)
- llRegionSayTo implemented where meaningful (Romka)
- changes in timer menu composition (Wendy)
- llOwnerSay where more efficient than Notify (Romka)
- fix in SitNow command rewrite (mouse)
- fix for nuisance in timed unleashing if unleashed (mouse)
- cosmetic enhancements in auth from disgraced collars (Wendy)
- major optimization and cleanup for the animation script (mouse)
- fix for a rare bug where poses might get stuck (mouse)
- change plus and minus unicode symbols for localized OS compatibility
(Wendy)
2014-10-13 05:15:42 +02:00
WendyStarfall
b6e23f3fdf change plus and minus symbols...
...apparently some localized versions of windows 7 don't have the
unicode character block for mathematical operators installed by default.

On the other hand, I already had a funny feeling in my belly when I did
83b7a4c841 hence the pie. (There is also
emoji for pie by the way.)
2014-10-12 18:10:31 +02:00
WendyStarfall
7bc4eb7630 sync in-world at 3.990 (RC)
- major optimization for the animation script
- fixes a rare bug that makes users stuck in a pose
- cosmetic changes in auth dialog menu
2014-10-12 02:10:34 +02:00
littlemousy
ca4ca839a1 Remove debug... D'oh! 2014-10-12 00:50:48 +01:00
littlemousy
f9902ab797 General cleanup, removed un-needed clutter
Big optimize of various parts of the code for better memory use.  Functionality should be same as before.
2014-10-12 00:48:54 +01:00
WendyStarfall
3d5d6bea82 three point one four one five nine two six
five three five eight nine seven nine three two three eight four six two
six four three three eight three two seven nine five zero two eight
eight four one nine seven one six nine three nine nine three seven five
one zero five eight two zero nine seven four nine four four five nine
two three zero seven eight one six four zero six two eight six two zero
eight nine nine eight six two eight zero three four eight two five three
four two one one seven zero six seven nine eight two one four eight zero
eight six five one three two eight two three zero six six four seven
zero nine three eight four four six zero nine five five zero five eight
two two three one seven two five three five nine four zero eight one two
eight four eight one one one seven four five zero two eight four one
zero two seven zero one nine three eight five two one one zero five five
five nine six four four six two two nine four eight nine five four nine
three zero three eight one nine six four four two eight eight one zero
nine seven five six six five nine three three four four six one two
eight four seven five six four eight two three three seven eight six
seven eight three one six five two seven one two zero one nine zero nine
one four five six four eight five six six nine two three four six zero
three four eight six one zero four five four three two six six four
eight two one three three nine three six zero seven two six zero two
four nine one four one two seven three...
2014-10-10 03:02:34 +02:00
WendyStarfall
daed59e7a9 sync in-world at 3.990 (BUILD 8)
- changes in timer menu compostion
- llOwnerSay where more efficient than Notify
- fix in SitNow command
- fix for nuisance in timed unleashing if unleashed
2014-10-10 02:21:18 +02:00
WendyStarfall
3da7e1d962 Merge pull request #458 from RomkaSwallowtail/main
remove clutter
2014-10-10 01:58:00 +02:00
littlemousy
19bcf84926 Add wearer key as recipient for unleash messages 2014-10-10 00:30:52 +01:00
littlemousy
54b7aee52c Fix immediate command bug
Fixed error in strided list lookup for identifying immediate comands
added missing "_" for sit usercommand
removed a bucket full of llToLower I accidentally spilled while coding.. sorry 'bout that
2014-10-10 00:29:25 +01:00
Romka
c9df173b72 Update OpenCollar - timer.lsl 2014-10-10 02:37:14 +04:00
Romka
0882d1ae5f Update OpenCollar - shocker.lsl 2014-10-10 02:34:18 +04:00
Romka
6bb500d7ab Update OpenCollar - rlvstuff.lsl 2014-10-10 02:33:30 +04:00
Romka
ace8513ddf Update OpenCollar - rlvrelay.lsl 2014-10-10 02:32:50 +04:00
Romka
d2e415786f Update OpenCollar - rlvmain.lsl 2014-10-10 02:32:15 +04:00
Romka
29606081c2 Update OpenCollar - main.lsl 2014-10-10 02:31:28 +04:00
Romka
cc365ba78c Update OpenCollar - listener.lsl 2014-10-10 02:30:33 +04:00
Romka
a75d0202c7 Update OpenCollar - leash.lsl 2014-10-10 02:29:03 +04:00
Romka
469c9dc8ed Update OpenCollar - couples.lsl 2014-10-10 02:28:14 +04:00
Romka
563a4b3d93 Update OpenCollar - badwords.lsl 2014-10-10 02:27:27 +04:00
Romka
4003d69e2c Update OpenCollar - auth.lsl 2014-10-10 01:46:53 +04:00
Romka
6ec85d5776 Update OpenCollar - anim.lsl 2014-10-10 01:33:23 +04:00
Romka
fcb82780ef Update OpenCollar - main.lsl 2014-10-10 01:02:44 +04:00
Romka
e3ec5c3641 Update OpenCollar - listener.lsl 2014-10-10 00:59:41 +04:00
Romka
875a9ce3f9 Update OpenCollar - auth.lsl 2014-10-10 00:56:10 +04:00
Romka
126a897829 Update OpenCollar - anim.lsl 2014-10-10 00:50:59 +04:00
WendyStarfall
8665001b62 remove clutter; add pizza 2014-10-09 20:53:22 +02:00
WendyStarfall
5a37f4a314 sync in-world at 3.990 (BUILD 6)
- merge of all rlv plugins
- new features for touch restrictions
- new features for visibility restrictions
- "prettynames" can now contain spaces
- fine polishes for restriction names and descriptions
- fix for hovertext restriction in misc
- further tidy-up with Notifies
- llRegionSayTo implemented where meaningful
2014-10-09 19:12:22 +02:00
WendyStarfall
7c93113b4a Merge pull request #457 from RomkaSwallowtail/main
llRegionSayTo  instead  llWhisper #456
2014-10-09 18:31:59 +02:00
WendyStarfall
f176e64725 Merge pull request #455 from RomkaSwallowtail/patch-1
Update OpenCollar - rlvrelay.lsl    Instant Messages ?
2014-10-09 17:59:06 +02:00
Romka
53e65e2655 Update OpenCollar - timer.lsl 2014-10-09 19:44:30 +04:00
Romka
7342f15b5c Update OpenCollar - main.lsl 2014-10-09 19:41:15 +04:00
Romka
fe48ae2ca6 Update OpenCollar - listener.lsl 2014-10-09 19:39:45 +04:00
Romka
ddcf6f1577 Update OpenCollar - couples.lsl 2014-10-09 19:38:04 +04:00
Romka
508edb0cb2 Update OpenCollar - auth.lsl 2014-10-09 19:35:12 +04:00
Romka
248449a420 Update OpenCollar - anim.lsl 2014-10-09 19:31:35 +04:00
Romka
b9e170ec44 Merge pull request #4 from OpenCollar/main
update3
2014-10-09 19:24:44 +04:00
Romka
6bad5a3f38 Update OpenCollar - rlvrelay.lsl
replace llInstantMessage(kID,...   with Notify(kID, ...
2014-10-09 17:59:45 +04:00
WendyStarfall
b6d2ec4b76 Merge pull request #454 from RomkaSwallowtail/patch-1
Update OpenCollar - rlvstuff.lsl  Notify..
2014-10-09 14:10:41 +02:00
Romka
3472298dda Update OpenCollar - rlvstuff.lsl
add llRegionSayTo into Notify
2014-10-09 12:04:38 +04:00
WendyStarfall
b3baf4b6f1 delete rlvmisc, rlvsit, rlvtalk and rlvtp 2014-10-09 04:05:10 +02:00
WendyStarfall
d26ebbb671 change hovertext command 2014-10-09 00:25:36 +02:00
littlemousy
0db97a80ca Fix "no spaces in button names" issue
also substitute already prepared variable for redundant llList2String calls
correct long comment closes
2014-10-08 21:30:59 +01:00
WendyStarfall
845a826c03 change prettyname and description in rlvtalk...
...and change manual links

This will need a fix for prettynames with spaces.
2014-10-08 21:36:24 +02:00
WendyStarfall
8cf8d7e958 disable debugging and profiling
Mouse added a very clever way to disable/enable debugging. It's
efficient, quick and a chimpanzee would be able to use this method.
However, you should keep in mind that when you let the compiler bop you
from line, it's a genuinely bad idea to do this in a script nested
inside of an object you are currently wearing. The asset will go
hay-wire eventually and you might lose n hours of work unless you
regularly save back to your local drive. This has nothing to do with the
debugging, it's just if saving a nested script in quicker succession
than the database can keep track of it.

I've created a short ritual for myself, you do it your way but maybe
this might help you too:

1. I decide that the script is now production ready
2. I load the contents of my collar
3. I drag the script I had been working on to my inventory
4. I close all scripts to prevent mixing stuff up
5. I open the script in my inventory
6. I follow the pattern to disable debugging
7. I save to my local drive when the compiler is happy
8. I open my object once again and load the production ready script from
my local drive

This is happening in motion with guideline #331 and committed for future
reference.
2014-10-08 19:16:45 +02:00
WendyStarfall
78dafc9739 i eated whitespaec 2014-10-08 18:58:49 +02:00
WendyStarfall
b45eda6524 add view section
The menu button itself is striked through to make it visually more
understandable these features will likely not work.

We require a user to run a minimum RLV version of 2.9 which isn't part
of many viewers yet. A manual page explaining that will be made
available.
2014-10-08 18:30:48 +02:00
WendyStarfall
955ad8dbb3 add unicode, shorten touch restriction names 2014-10-08 17:40:21 +02:00
WendyStarfall
413e3f9a80 Merge pull request #452 from RomkaSwallowtail/patch-1
Update OpenCollar - shocker.lsl
2014-10-07 22:48:09 +02:00
WendyStarfall
7307edec5c add misc section 2014-10-07 21:45:11 +02:00
Romka
dc416a91d1 Merge pull request #3 from OpenCollar/main
update
2014-10-07 22:56:27 +04:00
Romka
3268dc07da Update OpenCollar - shocker.lsl 2014-10-07 22:53:49 +04:00
Romka
67aab3a515 Update OpenCollar - shocker.lsl
notify, wearername, e.t.c.
2014-10-07 22:51:02 +04:00
littlemousy
1d9a0bca3d merge several rlv restrictions scripts 2014-10-07 19:48:48 +01:00
WendyStarfall
5d2d88ec84 sync in-world at 3.989
- re-menu and information for non-authorized attempts to access rlvex
- replace and replace all buttons in rlvfolders restored
- wrap-up for touch feature in bell while keeping the menu visually
familiar
- global wearer name support for bell
- nicer formatting for multi-page menus and those with menu keys
- tidy up for timer and fix for unleash perms on timer expiration while
wearer is offline
2014-10-07 19:59:26 +02:00
Romka
7ae7a9354e Merge pull request #2 from OpenCollar/main
update2
2014-10-07 20:22:57 +04:00
littlemousy
516cfb7790 Test unleash permissions at timer expiry
Timer script was removing unleash request from timers when wearer was releashed.  Removed clearing g_iUnleash at leash change, and added a permission check at timer expiry.
2014-10-07 15:36:09 +01:00
WendyStarfall
9b944e00b8 tidy up and preparations to address #438
- remove redundant commentary
- remove unused keys and integers
- remove dead functions
- remove plugin template artifacts
- update global name for attachments to 3.9 API
- change and format button names
- add feature to reset both timers in root menu
- make buttons arrange orderly
- fix spelling in function names and dialogs
- change flag for link constants
2014-10-07 16:15:11 +02:00
Romka
ea54ef0a40 Merge pull request #1 from OpenCollar/main
1
2014-10-07 08:26:42 +04:00
WendyStarfall
9a4e6cac66 Merge pull request #450 from RomkaSwallowtail/patch-2
Update OpenCollar - bell.lsl DisplayName
2014-10-06 23:08:29 +02:00
Romka
dbe761876b Update OpenCollar - bell.lsl
user define function to get DisplayName for wearer and toucher.
not need spaces for "sort" buttons ON/OFF SHOW/HIDE
2014-10-06 18:29:40 +04:00
WendyStarfall
3267c2a204 add linebreak for page counter...
...and nicer formatting for large dialogs with menu keys
2014-10-06 16:10:35 +02:00
WendyStarfall
f290668c58 restore replace and replace all buttons
#441
2014-10-06 15:56:21 +02:00
WendyStarfall
104452c411 add global wearer name support 2014-10-06 15:35:07 +02:00
WendyStarfall
4f76923227 remove extra token for touch setting
we don't need the extra setting, if shown, it rings on touch and setting
is "show"
2014-10-06 15:18:01 +02:00
WendyStarfall
979b7e2864 make bell always ring on touch if shown
if the bell is ON, we have it ringing on walk, if it is SHOWN we have it
ringing on touch regardless if ON or OFF
2014-10-06 15:13:12 +02:00
WendyStarfall
4f25011560 make owned wearers receive re-menu...
...on touching Exceptions and inform them; #448
2014-10-06 14:42:15 +02:00
WendyStarfall
69aae05b63 sync in-world at 3.988
####Summary

- changes to notify handling in all scripts
- cosmetic fix for a chat prompt in leash
- automatic correction for description in floattext elements when doing
updates on rezzed collars
- fix for temporary ownership token
- fix for a loop coming from the relay
- tweak for checking rlv in the viewer
2014-10-06 14:03:59 +02:00
littlemousy
4cf71a83eb Tweak versioncheck
Verioncheck is now disabled when RLV is switched off
2014-10-06 03:49:47 +01:00
WendyStarfall
e40a088e63 update news
covers the german temple and a version blip
2014-10-03 06:48:20 +02:00
littlemousy
b372189746 fix loop bug in showrestrictions 2014-10-02 00:16:43 +01:00
littlemousy
dd2699e7c6 typo 2014-09-29 14:19:25 +01:00
WendyStarfall
ef85fb87fa Merge pull request #446 from RomkaSwallowtail/patch-1
Update OpenCollar - titler.lsl    colorizer and titler
2014-09-28 13:09:41 +02:00
WendyStarfall
4026252ba1 Merge pull request #445 from mrbendig/main
fixed small double space
2014-09-28 13:09:20 +02:00
Romka
67f30730c5 Update OpenCollar - titler.lsl
add change prim description
for issue #442
2014-09-28 10:59:09 +04:00
Rainer Bendig
578d9bd805 fixed small double space 2014-09-28 02:02:09 +02:00
WendyStarfall
a84d133806 Merge pull request #444 from RomkaSwallowtail/main
Notify.... again... big change.... new attempt
2014-09-27 16:41:55 +02:00
WendyStarfall
3e9133e642 sync in-world at 3.987
auth, main and rlvmain
2014-09-27 14:02:38 +02:00
WendyStarfall
7662ab408c change web link and wording 2014-09-27 14:00:01 +02:00
Romka
c8d663b26d Update OpenCollar - takeme.lsl 2014-09-26 13:45:33 +04:00
Romka
b855d5a8c9 Update OpenCollar - shocker.lsl 2014-09-26 13:44:36 +04:00
Romka
3cdc81ddfd Update OpenCollar - safezone.lsl 2014-09-26 13:43:42 +04:00
Romka
750e6f0013 Update OpenCollar - rlvcmd.lsl 2014-09-26 13:42:48 +04:00
Romka
d993b717b8 Update OpenCollar - paint.lsl 2014-09-26 13:40:45 +04:00
Romka
c38d8c4a8b Update OpenCollar - outfits.lsl 2014-09-26 13:38:54 +04:00
Romka
685fa8e14d Update OpenCollar - leashParticle.lsl 2014-09-26 13:37:54 +04:00
Romka
06fc8a4dfb Update OpenCollar - capture.lsl 2014-09-26 13:36:52 +04:00
Romka
d1ea08c07a Update OpenCollar - cagehome.lsl 2014-09-26 13:35:33 +04:00
Romka
f4867bd9db Update OpenCollarUpdater - Master.lsl 2014-09-26 13:29:19 +04:00
Romka
08d958ddbf Update OpenCollarUpdater - Dialog.lsl 2014-09-26 13:24:26 +04:00
Romka
e8e8d1963e Update OpenCollar - titler.lsl 2014-09-26 13:21:38 +04:00
Romka
978fe98808 Update OpenCollar - timer.lsl 2014-09-26 13:20:19 +04:00
Romka
27e35aa1c9 Update OpenCollar - texture.lsl 2014-09-26 13:16:17 +04:00
Romka
33048caa9b Update OpenCollar - styles.lsl 2014-09-26 13:15:44 +04:00
Romka
645fadcf3d Update OpenCollar - shininess.lsl 2014-09-26 13:14:41 +04:00
Romka
cb589145a5 Update OpenCollar - settings.lsl 2014-09-26 13:13:29 +04:00
Romka
cf5f1f8d21 Update OpenCollar - rlvundress.lsl 2014-09-26 13:12:56 +04:00
Romka
f9109462a3 Update OpenCollar - rlvtp.lsl 2014-09-26 13:04:57 +04:00
Romka
e1a669edd6 Update OpenCollar - rlvtalk.lsl 2014-09-26 13:04:09 +04:00
Romka
eee5e9a659 Update OpenCollar - rlvsit.lsl 2014-09-26 13:03:20 +04:00
Romka
ccf55501ae Update OpenCollar - rlvrelay.lsl 2014-09-26 13:02:26 +04:00
Romka
80307f8227 Update OpenCollar - rlvmisc.lsl 2014-09-26 13:01:41 +04:00
Romka
99bf5bcd90 Update OpenCollar - rlvmain.lsl 2014-09-26 13:01:01 +04:00
Romka
6301517611 Update OpenCollar - rlvfolders.lsl 2014-09-26 13:00:16 +04:00
Romka
7c6d971c71 Update OpenCollar - rlvex.lsl 2014-09-26 12:59:32 +04:00
Romka
d4864bf90d Update OpenCollar - plugin template.lsl 2014-09-26 12:58:04 +04:00
Romka
00d92bb905 Update OpenCollar - main.lsl 2014-09-26 12:56:30 +04:00
Romka
4572efc5e3 Update OpenCollar - listener.lsl 2014-09-26 12:55:30 +04:00
Romka
dba7fdb5c3 Update OpenCollar - leashParticle.lsl 2014-09-26 12:54:18 +04:00
Romka
d1b7ed1f8c Update OpenCollar - leash.lsl 2014-09-26 12:53:27 +04:00
Romka
8c48473c73 Update OpenCollar - leash.lsl 2014-09-26 12:52:41 +04:00
Romka
89afe9b092 Update OpenCollar - label.lsl 2014-09-26 12:51:24 +04:00
Romka
54c9e6a9da Update OpenCollar - hide.lsl 2014-09-26 12:49:33 +04:00
Romka
02b2dee9f1 Update OpenCollar - garble.lsl 2014-09-26 12:49:00 +04:00
Romka
b2704b07c1 Update OpenCollar - dialog.lsl 2014-09-26 12:46:47 +04:00
Romka
ee4e078e2b Update OpenCollar - couples.lsl 2014-09-26 12:46:01 +04:00
Romka
2b04c301f0 Update OpenCollar - color.lsl 2014-09-26 12:44:13 +04:00
Romka
7a6efe2514 Update OpenCollar - camera.lsl 2014-09-26 12:43:20 +04:00
Romka
55b6fb70d5 Update OpenCollar - bookmarks.lsl 2014-09-26 12:41:59 +04:00
Romka
7d2bdd317f Update OpenCollar - badwords.lsl 2014-09-26 12:39:27 +04:00
Romka
60dd932e7f Update OpenCollar - auth.lsl 2014-09-26 12:36:12 +04:00
Romka
403f179890 Update OpenCollar - auth.lsl 2014-09-26 12:35:51 +04:00
Romka
2c95893b1a Update OpenCollar - bell.lsl 2014-09-26 12:34:11 +04:00
Romka
fe010ec7e7 Update OpenCollar - appearance.lsl 2014-09-26 12:33:24 +04:00
Romka
db03a27465 Update OpenCollar - bell.lsl 2014-09-26 12:30:56 +04:00
Romka
712e28298e Update OpenCollar - anim.lsl 2014-09-26 12:30:05 +04:00
littlemousy
04f5c8f7f9 add hook for utility RLV functions to not be cleared by safeword 2014-09-24 21:37:12 +01:00
WendyStarfall
b39f0681ad sync in-world at 3.986
main and rlvmain...

...and a 🍺 for mouse!
2014-09-24 22:35:43 +02:00
littlemousy
8614c08d07 Use textkey for lock in RLV_REFRESH/RLV_CLEAR 2014-09-24 21:11:41 +01:00
littlemousy
e4a35b6985 inlined single line SendCommand() fuction
plus a few other minor fixlets
2014-09-24 20:38:15 +01:00
WendyStarfall
31d9d7784e sync in-world at 3.985
for the changes in auth, bell, listener, rlvmain and UpdateShim
2014-09-24 17:45:43 +02:00
littlemousy
91c6abb94b add RLV_CLEAR message to safeword() 2014-09-24 03:18:46 +01:00
littlemousy
5765b9c4ec typo 2014-09-23 23:24:55 +01:00
littlemousy
fc54140f28 clear exceptions on runaway
deleteing the lists wasn't enough to trigger rlvex to remove exceptions
2014-09-23 21:51:32 +01:00
littlemousy
b36916676c update "fix menus" at end of update 2014-09-23 14:14:45 +01:00
littlemousy
1a5f8208a9 remove debug 2014-09-23 14:10:28 +01:00
littlemousy
3bbbc31166 remove argument from safeword() 2014-09-23 13:47:24 +01:00
littlemousy
96b8f23af4 move safeword from auth to listener 2014-09-23 02:45:57 +01:00
littlemousy
1372cde7a0 Move safeword code to listener 2014-09-23 02:25:50 +01:00
littlemousy
0d642ff271 formatting change 2014-09-23 02:01:18 +01:00
littlemousy
f8053838ae Change safeword to exclude exceptions and lock 2014-09-23 02:00:32 +01:00
littlemousy
9502607fc6 Fix safeword bug 2014-09-23 01:21:59 +01:00
WendyStarfall
da6a8abba4 Merge pull request #439 from RomkaSwallowtail/patch-1
Update OpenCollar - bell.lsl  Ring on Touch - chat spam prevent
2014-09-22 22:26:25 +02:00
littlemousy
83e9bbe1e7 Fix bug where secowner-wearer can't runaway 2014-09-22 21:02:30 +01:00
Romka
e84f7b0983 Update OpenCollar - bell.lsl
add GlobalHide check
add touch timeout and toucher key check
2014-09-22 21:01:31 +04:00
WendyStarfall
1303becd13 sync in-world at 3.984 2014-09-22 04:33:39 +02:00
WendyStarfall
94d7ed3a80 re-add some stuffs that got lost during merge 2014-09-22 04:05:47 +02:00
WendyStarfall
2581be717e sync in-world at 3.983 2014-09-21 22:00:33 +02:00
littlemousy
9ff44da39e add textkey to unlock rlv command 2014-09-20 16:52:30 +01:00
littlemousy
604c66e13b fix clear to leave lock and exceptions in place 2014-09-20 16:43:42 +01:00
littlemousy
4ac0757b4c add textkey to lock rlv command 2014-09-20 16:35:37 +01:00
WendyStarfall
fff636bd7f sync with in-world at 3.982
and leashParticle
2014-09-19 19:42:21 +02:00
littlemousy
af2ba0878b Support changes in listener to removing globals 2014-09-19 12:24:23 +01:00
littlemousy
b1c1841ded remove test code 2014-09-19 09:31:28 +01:00
littlemousy
ef6668af88 Add response to attachmentversion command and new debug 2014-09-19 09:23:42 +01:00
littlemousy
f16c0407c0 Inline single use functions, remove globals, add central notify 2014-09-19 09:11:14 +01:00
littlemousy
e0fd227a0f Improve memory handling of exceptions
general cleanup
inlining HandleCommand()
make DoUnlock()
swap pair of lists  (one for source keys and one for restrictions/exceptions) to a pair of lists (strided list for sources/restrictions and strided list for AvID/exceptions)

This was a 2-way merge, my changes were based on a slightly older version that the script in HEAD.  Apologies to anyone concerned if I pooped on your changes.
2014-09-19 02:15:01 +01:00
WendyStarfall
3c97cc18a0 Merge pull request #437 from RomkaSwallowtail/patch-1
Update OpenCollar - bell.lsl
2014-09-18 18:36:16 +02:00
Romka
9f91f9d0ef Update OpenCollar - bell.lsl
change menu, add 'TouchRing' button ...
2014-09-18 16:40:21 +04:00
littlemousy
ae3f4111a3 Fix bug in long dialog prompt handling 2014-09-17 21:19:04 +01:00
littlemousy
78a25b283a Move "unseat leashed avatar" code
Rather than a continual stream of "unsit=force" while the wearer is leashed, moved this code to the "yank" command to save on link messages, cpu time, and to provide more interaction between the leasher and their unruly subs.
2014-09-17 15:43:44 +01:00
littlemousy
4b2c064865 prevent collar rlv menu from unsitting AVs trapped by relay 2014-09-17 15:40:03 +01:00
WendyStarfall
e28fc7001f Merge pull request #436 from RomkaSwallowtail/patch-1
Update OpenCollar - bell.lsl   bell will ring if the touch
2014-09-17 16:11:55 +02:00
Romka
af49def0b1 Update OpenCollar - bell.lsl
bell will ring if the touch
2014-09-17 16:55:48 +04:00
littlemousy
d1f0bcce12 Check if releashing to same object
this prevents constant releashing when bumping a grabby post you're already leashed to
2014-09-17 13:43:29 +01:00
littlemousy
a8e7492981 make wearer set leash store auth as COMMAND_GROUP
A situation was discovered where a wearer who was their own owner (or secowner) with public access set could leash themselves to an unwillling person, and that person be unable to unleash themselves.  This change forces any leash set by the wearer to be stored with a group level auth, which can be broken in public access mode.
2014-09-17 13:40:50 +01:00
WendyStarfall
0bad44c507 Merge pull request #432 from SumiPerl/patch-26
RE: plugin request #427
2014-09-12 08:57:36 +02:00
SumiPerl
524ef8c583 RE: plugin request #427 2014-09-11 22:46:46 -04:00
WendyStarfall
7f7572b48c Merge pull request #431 from SumiPerl/patch-24
bookmarks.lsl - catch owner hud force teleport commands
2014-09-11 21:56:31 +02:00
WendyStarfall
5d1117d7e2 update news 2014-09-11 20:43:44 +02:00
WendyStarfall
725ac87efe Merge pull request #430 from SumiPerl/patch-23
rlvcmd fixed a bad notify in invalid command, changed to OWNER only acce...
2014-09-11 08:41:43 +02:00
SumiPerl
73ee77ba7d bookmarks.lsl - catch owner hud force teleport commands
Was sending an error to the hud wearer when using the latest hud release.

This trap catches the RLV command, and ignores it since rlvtp.lsl is dealing with that message right now

(tested on hud version 3.944)
2014-09-11 00:35:49 -04:00
SumiPerl
0f75d6998d rlvcmd fixed a bad notify in invalid command, changed to OWNER only access 2014-09-11 00:14:34 -04:00
WendyStarfall
c182e185ef Delete OpenCollar - subspy.lsl
This source can be found on different forks now.
2014-09-11 03:48:52 +02:00
WendyStarfall
e580dc9a99 Merge pull request #429 from SumiPerl/patch-22
AO Link Lite - added (limited) AKEYO support
2014-09-11 01:10:36 +02:00
SumiPerl
23dfa5902f AO Link Lite - added (limited) AKEYO support
My AKEYO AO doesn't have a menu that we can trigger.  This just receives AO On/Off messages from the collar and switches AKEYO AO on/off respectively.
2014-09-10 14:58:37 -04:00
WendyStarfall
9aa6621eac fix "more and less" buttons 2014-09-10 05:24:37 +02:00
WendyStarfall
26094faf08 Merge pull request #428 from SumiPerl/patch-21
rlvcmd - command line and menu tool to interface with RLV
2014-09-09 23:31:56 +02:00
SumiPerl
deeaa2e9bb rlvcmd - command line and menu tool to interface with RLV 2014-09-09 15:52:13 -04:00
WendyStarfall
0ef166665a Merge pull request #426 from SumiPerl/patch-20
rlvcmd.lsl plugin to send direct rlv commands to subs
2014-09-09 20:48:09 +02:00
SumiPerl
5aba88e043 rlvcmd.lsl plugin to send direct rlv commands to subs 2014-09-09 08:50:25 -04:00
WendyStarfall
1809479da2 update news 2014-09-09 09:31:20 +02:00
WendyStarfall
e1fcbf2fbb 3.980 ready to ship 2014-09-09 08:44:41 +02:00
WendyStarfall
4f9fe17e4d fix collar main menu command 2014-09-09 07:38:10 +02:00
WendyStarfall
ced48d1827 make dialog text more fun 2014-09-09 06:28:57 +02:00
WendyStarfall
0042c3152f add manual link to hud styles 2014-09-09 06:13:57 +02:00
WendyStarfall
0bfdf98cf1 remove collar list in dialog; add manual link 2014-09-09 06:10:38 +02:00
WendyStarfall
4a6e192902 make help command print web link 2014-09-09 06:03:16 +02:00
WendyStarfall
edcf781d7a update manual link 2014-09-09 05:52:46 +02:00
littlemousy
af3e3d9ac3 add startim to clearex 2014-09-08 23:39:30 +01:00
WendyStarfall
5f907ebf37 rename physical card for OC guidelines 2014-09-08 22:12:16 +02:00
WendyStarfall
ae31cdf579 move scripts and corresponding guides to spare 2014-09-08 22:10:28 +02:00
WendyStarfall
996330419f delete redundant listener script 2014-09-08 22:09:14 +02:00
WendyStarfall
f117020acc remove redundant readmes 2014-09-08 22:08:38 +02:00
WendyStarfall
bb6f137080 add manual link 2014-09-08 21:55:14 +02:00
WendyStarfall
b0b51b64e2 shorter information for card parsing 2014-09-08 21:48:52 +02:00
WendyStarfall
f482e607c0 remove time out notify 2014-09-08 21:44:25 +02:00
WendyStarfall
6ee135ed56 remove one last "debug" I missed; pew! 2014-09-08 21:37:57 +02:00
WendyStarfall
b77c681a2b make main menu use collar internal leash menu 2014-09-08 21:30:16 +02:00
WendyStarfall
24cd2957f8 add link to collar internal leash menu 2014-09-08 21:23:07 +02:00
WendyStarfall
d2b2378fa3 the menu timed out - we don't care! 2014-09-08 21:19:21 +02:00
WendyStarfall
0838f41e67 de-spamming mega flurry of llOwnerSay 2014-09-08 21:07:02 +02:00
WendyStarfall
f0eb39b49d make hud no longer auto-position...
it was getting kind of unpredictable with so many different viewer GUIs
2014-09-08 12:05:43 +02:00
WendyStarfall
aed7177809 remove redundant help image 2014-09-08 11:56:53 +02:00
WendyStarfall
76bbeede9c change notecard name for OC guidelines 2014-09-08 11:55:01 +02:00
WendyStarfall
5b7d8f0ea8 update primOrder list 2014-09-08 11:37:30 +02:00
WendyStarfall
e1cc2d287a remove wall of text+...
...rename buttons for re-order menus; format dialog text
2014-09-08 11:03:58 +02:00
WendyStarfall
8b1f5d4a00 reorder buttons; format dialog text 2014-09-08 10:47:18 +02:00
WendyStarfall
a0eec1602a jumble main menu buttons 2014-09-08 10:34:53 +02:00
WendyStarfall
2d8cdcfc73 add several buttons; format dialog text 2014-09-08 10:12:13 +02:00
littlemousy
2529bf885f Check for comments before split lines 2014-09-08 08:58:05 +01:00
WendyStarfall
df8b60c372 remove trial and error stuff 2014-09-08 09:44:53 +02:00
WendyStarfall
d3565195ac add attribution, arrange buttons...
now this hud button does commands that won't let us drop out of the hud
menus and into the collar menus, for those, we go to the main menu
2014-09-08 09:43:18 +02:00
WendyStarfall
df32ae488a change hud button arrangement and names 2014-09-08 08:17:30 +02:00
WendyStarfall
b7dd26af30 add several buttons 2014-09-08 07:46:59 +02:00
WendyStarfall
e3bd74900d change menu arrangement and commands 2014-09-08 05:46:41 +02:00
WendyStarfall
389ad7300e make hud button use internal leash menu 2014-09-08 03:25:28 +02:00
WendyStarfall
978cb0379e merge listener into menu 2014-09-08 02:50:00 +02:00
WendyStarfall
4c36f11c83 change hud button behaviour 2014-09-08 01:48:59 +02:00
WendyStarfall
108bb65d38 update menu conformity guidelines+...
...change prompts + remove dialog tabs
2014-09-08 01:04:59 +02:00
WendyStarfall
9d48ca4556 update menu conformity guidelines 2014-09-08 00:22:26 +02:00
WendyStarfall
604ef0851a Merge pull request #425 from SumiPerl/patch-19
takeme.lsl - fix some auth values and temp owner list updates
2014-09-07 23:43:45 +02:00
WendyStarfall
ea1cfa2887 Merge pull request #423 from SumiPerl/patch-18
outfits.lsl an RLV/a outfits plugin …
2014-09-07 23:43:37 +02:00
SumiPerl
c98e3f26a5 takeme.lsl - fix some auth values and temp owner list updates 2014-09-07 17:42:30 -04:00
OpenNC
221db86228 Clean up on top of BuildersBrewery
removed some { }, NULL_KEY now "", "subs" now replaced with generic
"collar" in names and menu, "Subs" menu is now called "Scan" a couple of
spelling mistakes,  notecard reading code cleaned up
2014-09-07 20:26:51 +01:00
SumiPerl
9061812545 outfits.lsl an RLV/a outfits plugin …
This plugin makes dropping viewer made outfits switching easy with #RLV folders.

The plugin looks for saved outfits inside #RLV/.outfits

Once an outfit is worn, it strips off all unlocked items, and wears the full contents of the outfit selected. If a folder named .alwaysadd exists in the subfolder of the outfit, it will auto add those items once the outfit is fully worn.

the #rlv/.outfits/.alwaysadd folder is also always worn on top. It's a good idea to link your collar inside this folder to make sure it's readded if for some reason your collar wasn't locked on.

This detects RLVa, so commandline searches like outfits something may return multiple matches, and it will prompt you with a list of matches that you can select from and wear. If using RLV, it will automatically wear the first match it finds.

Folder structure:
image

You can copy your existing outfits into this folder structure, or simply move them from your saved outfits location into the RLV folder structure
2014-09-07 04:27:15 -04:00
WendyStarfall
d44fa879f9 Merge pull request #422 from SumiPerl/patch-17
outfits.lsl - an RLV/a outfits plugin
2014-09-07 10:22:55 +02:00
SumiPerl
aa8117ef0b outfits.lsl - an RLV/a outfits plugin
This plugin makes dropping viewer made outfits switching easy with #RLV folders.

The plugin looks for saved outfits inside #RLV/.outfits

Once an outfit is worn, it strips off all unlocked items, and wears the full contents of the outfit selected.  If a folder named .alwaysadd exists in the subfolder of the outfit, it will auto add those items once the outfit is fully worn.

the #rlv/.outfits/.alwaysadd folder is also always worn on top.  It's a good idea to link your collar inside this folder to make sure it's readded if for some reason your collar wasn't locked on.

This detects RLVa, so commandline searches like <prefix>outfits something may return multiple matches, and it will prompt you with a list of matches that you can select from and wear.  If using RLV, it will automatically wear the first match it finds.

Folder structure:

#RLV
|_.outfits
  |_.alwaysadd
  |_outfit1
  |_outfit2
  |_outfit_category1
    |_.alwaysadd
    |_someoutfit3

You can copy your existing outfits into this folder structure, or simply move them from your saved outfits location into the RLV folder structure
2014-09-07 04:22:25 -04:00
WendyStarfall
c4e551c861 Merge pull request #421 from SumiPerl/patch-16
takeme.lsl plugin (a capture app)
2014-09-07 10:11:06 +02:00
SumiPerl
58c3769894 takeme.lsl plugin (a capture app)
Uses Auth Tempowner functionality

Settings: 
On/Off - Enable/Disable addon
Limit distance - Proximity to wearer before someone can click to take control
Force - If enabled, the clicker has an option to take control.  If disabled, the wearer gets a popup to allow/reject control
2014-09-07 04:08:55 -04:00
WendyStarfall
abedb3bd4c Merge pull request #420 from marrmist/main
strict leash mode unsits avatar when leash pulled
2014-09-07 06:01:49 +02:00
WendyStarfall
af75a31574 Merge pull request #419 from SumiPerl/patch-15
rlvfolders - added multiple item matching from commandline
2014-09-07 01:58:01 +02:00
WendyStarfall
1eee00f580 Merge pull request #417 from SumiPerl/patch-13
rlvmain - issue #416
2014-09-07 01:57:37 +02:00
marrmist
dc88752978 strict leash mode unsits avatar when leash pulled 2014-09-06 15:52:59 -05:00
SumiPerl
31c1d0ba9a rlvfolders - added multiple item matching from commandline
pops up a dialog box for RLVa enabled viewers.  Normal behavior for RLV only

Depends on #416
2014-09-06 02:36:42 -04:00
SumiPerl
876c7775a4 rlvmain - issue #416
I've tested this in current Firestorm and current Restrained Love Viewer (results in script comments)
2014-09-06 01:26:22 -04:00
littlemousy
ffb616b941 Fix "upmenu from add owner" bug 2014-09-05 09:13:04 +01:00
WendyStarfall
71e073ed7f Merge pull request #412 from SumiPerl/patch-5
listener.lsl <prefix>name command now supports more than one word
2014-09-05 00:55:26 +02:00
SumiPerl
cd8391fd44 listener.lsl <prefix>name command now supports more than one word 2014-09-04 13:21:27 -04:00
WendyStarfall
2bdbac4b42 update news for 3.980 2014-09-04 10:58:24 +02:00
WendyStarfall
1f47a1ffe0 change whitespace for "load from" feature 2014-09-04 06:18:54 +02:00
WendyStarfall
503c5c587e Merge pull request #411 from SumiPerl/patch-4
couples remove debug
2014-09-04 06:09:12 +02:00
SumiPerl
00f79c0e65 couples remove debug 2014-09-04 00:06:03 -04:00
WendyStarfall
f48873ee99 #410 2014-09-04 06:02:05 +02:00
WendyStarfall
9046eb47a2 Merge pull request #409 from SumiPerl/patch-2
rlvmain - more checks for @rlv viewer
2014-09-04 05:55:12 +02:00
WendyStarfall
75866815a0 Merge pull request #408 from SumiPerl/patch-1
listener remove lltolower from sValue for displayname
2014-09-04 05:54:43 +02:00
SumiPerl
86a5daf321 rlvmain - more checks for @rlv viewer
some users were timing out on larger inventories
2014-09-03 23:54:29 -04:00
SumiPerl
d512f87b4f listener remove lltolower from sValue for displayname 2014-09-03 23:53:11 -04:00
WendyStarfall
f2b0bd7342 Merge pull request #407 from SumiPerl/main
DisplayName support to all
2014-09-04 05:38:18 +02:00
SumiPerl
43b8e92d72 DisplayName support to all
Add timer to listener to identify namechange
force update namechange on:
           Global_WearerName token change
           Global_WearerName token deletion
2014-09-03 23:34:41 -04:00
WendyStarfall
474abcdc2f increase viewer check to 10 granulars 2014-09-04 05:29:25 +02:00
WendyStarfall
37ed47f892 create extra scalar installer bundles 2014-09-04 03:12:02 +02:00
WendyStarfall
6d17a0dba7 create bookmarks installer bundle 2014-09-04 03:11:16 +02:00
WendyStarfall
35527020e3 create styles installer bundle 2014-09-04 03:10:36 +02:00
WendyStarfall
77224dc4bc create shininess installer bundle 2014-09-04 03:10:09 +02:00
WendyStarfall
e63af67737 update bundles for 3.980 setup 2014-09-04 03:04:29 +02:00
WendyStarfall
be776476f0 remove verbose http throttle debug 2014-09-04 00:46:34 +02:00
WendyStarfall
97ef1baeda Merge pull request #405 from SumiPerl/patch-12
bookmarks.lsl delint, formatting, add mouse's debug
2014-09-04 00:41:35 +02:00
WendyStarfall
d4fc6f4cd9 Merge pull request #406 from SumiPerl/patch-13
garble.lsl unicode displayname support added
2014-09-04 00:36:16 +02:00
SumiPerl
1e1e43fe62 garble.lsl unicode displayname support added 2014-09-03 18:24:32 -04:00
SumiPerl
294f2203df bookmarks.lsl delint, formatting, add mouse's debug 2014-09-03 18:11:17 -04:00
WendyStarfall
6f0510315d Merge pull request #404 from SumiPerl/patch-10
Add deprecated setting list and test
2014-09-03 23:18:57 +02:00
SumiPerl
78ab5e8f76 Add deprecated setting list and test
Allow for deprecated settings to be removed after update process.
2014-09-03 17:08:35 -04:00
WendyStarfall
9457292980 fix secondary owner tokens
this also makes exceptions work for secondary owners now; the naming
convention for secowner/s is a major pita
2014-09-03 20:44:19 +02:00
WendyStarfall
71c233a3ab Merge pull request #403 from RomkaSwallowtail/patch-1
touch notify
2014-09-03 19:23:20 +02:00
Romka
4325d45099 touch notify
use kToucher instead llDetectedKey is correct.
check kToucher to prevent 'self touch' notify
2014-09-03 12:34:38 +04:00
WendyStarfall
3beb6188ea remove deprecated comment 2014-09-03 04:40:08 +02:00
WendyStarfall
2369d7e4f6 update version header 2014-09-03 04:03:50 +02:00
littlemousy
38b597e257 Optimize 2014-09-03 02:58:31 +01:00
littlemousy
8b9295fb51 Add UPMENU fix from getavi dialog 2014-09-03 02:51:31 +01:00
littlemousy
3e7d201ad2 Set memory limit 2014-09-03 02:36:54 +01:00
littlemousy
5b92116b8b Remove un-needed "default prefix" code 2014-09-03 02:35:03 +01:00
littlemousy
bf88b99d94 Remove unused variable 2014-09-03 02:30:15 +01:00
littlemousy
b6b4360012 Remove nStartsWith function 2014-09-03 02:23:15 +01:00
littlemousy
a7b6ec638f remove g_sBellChatPrefix variable 2014-09-03 02:20:33 +01:00
littlemousy
58727d046f Remove un-needed response to save settings message 2014-09-03 02:14:34 +01:00
littlemousy
1c13ab6ca2 Tidy up old code 2014-09-03 02:12:27 +01:00
littlemousy
1445cd9adf Remove un-needed "bell available" code 2014-09-03 02:10:35 +01:00
littlemousy
f675cbbda5 Remove unused variables 2014-09-03 02:02:33 +01:00
littlemousy
97459ec3c8 Tidy block function comments 2014-09-03 01:57:00 +01:00
littlemousy
5380c906de Tidy notify function 2014-09-03 01:55:49 +01:00
littlemousy
c80748b505 Add new debug function 2014-09-03 01:53:13 +01:00
littlemousy
1157dd4560 Remove unused messages from message map 2014-09-03 01:50:41 +01:00
WendyStarfall
1610044f3b remove warning for missing card 2014-09-03 02:49:05 +02:00
littlemousy
7da2bdd42f Fix "channel command with no parameter" 2014-09-03 01:46:45 +01:00
littlemousy
c388fa9780 Remove verbose http throttle warnings 2014-09-03 01:36:32 +01:00
littlemousy
c3c8a432a6 Remove reporting of http throttle 2014-09-03 01:34:22 +01:00
WendyStarfall
59dc94be2d change version header 2014-09-03 00:34:38 +02:00
WendyStarfall
6291542345 Merge pull request #401 from SumiPerl/patch-9
remove pretty object naming in favor of simpler emotes
2014-09-02 21:30:38 +02:00
SumiPerl
81e3f08892 remove pretty object naming in favor of simpler emotes 2014-09-02 15:30:01 -04:00
littlemousy
70b25602fc Fix dialog error on public access
Fixed a bug where no dialog prompt was generated when nonowner/non-wearer accessed runaway menu
Fixed a bug in "LimitRange" buttons, script was expecting input from buttons called "Limit Range"
Added new debug function, activates profiling when used, should always be commented out in production/released code
2014-09-02 14:59:57 +01:00
WendyStarfall
c59ee9a3ea remove notify in #398
the notify was the issue, I think it would have to be with a kID instead
of an iNum;

currently the collar has no way to understand if stealth/hide all is "on
or off", so our menu checkbox will not behave as expected, this is no
big deal but could be looked at if anyone is up for it
2014-09-02 15:00:59 +02:00
WendyStarfall
7b9282047b revert #398
this one won't compile; reverting it for now
2014-09-02 13:03:02 +02:00
WendyStarfall
694d366acf Merge pull request #398 from SumiPerl/patch-1
stealth command switch state
2014-09-02 07:53:24 +02:00
SumiPerl
c687be6a4f stealth command switch state 2014-09-02 01:52:29 -04:00
WendyStarfall
6a1b6287f5 change ~destinations to g_sCard in print
and some formatting
2014-09-01 00:53:02 +02:00
WendyStarfall
ac7c17ca6d Merge pull request #397 from SumiPerl/main
WearerName and TouchNotify
2014-08-31 19:27:07 +02:00
SumiPerl
860e0218d4 Flip touchnotify bit correctly this time 2014-08-31 13:20:56 -04:00
SumiPerl
2272a3fc62 Formatting 2014-08-31 13:12:37 -04:00
SumiPerl
b3e9abaa30 WEARERNAME change to Global_WearerName token 2014-08-31 13:03:19 -04:00
SumiPerl
709d597028 Merge pull request #1 from OpenCollar/main
sync
2014-08-31 12:42:40 -04:00
WendyStarfall
b1e9c2b55c add touch notify
this one attributes to mouse, Romka and me; we can call <fix>busted
on/off for touch notifications
2014-08-31 18:07:07 +02:00
WendyStarfall
321a05d1bc update conformity for lsl compiler +...
...update conformity for version numbers in headers; and define string
at line 500 in leash.lsl
2014-08-31 12:32:26 +02:00
WendyStarfall
43d210f6e8 Merge pull request #394 from SumiPerl/main
Update Display Name Support
2014-08-31 11:50:46 +02:00
SumiPerl
8704acd522 Update Display Name Support 2014-08-31 05:47:55 -04:00
WendyStarfall
66ff3a583c Merge pull request #392 from RomkaSwallowtail/patch-2
notecard name in 'Dump style'
2014-08-30 10:41:18 +02:00
WendyStarfall
a383123d1c Merge pull request #391 from RomkaSwallowtail/patch-1
BUG: HeightFix state don't save/restore
2014-08-30 10:41:10 +02:00
Romka
59707cec29 notecard name in 'Dump style'
use g_sNotecardName instead '~styles'
2014-08-30 09:55:08 +04:00
Romka
e2d5d577c7 BUG: HeightFix state don't save/restore
fixed
2014-08-30 09:08:39 +04:00
WendyStarfall
967d6e5661 take me away, oh gumby 2014-08-29 04:35:18 +02:00
WendyStarfall
78ff3f9cd8 make Page counter have it's own line 2014-08-29 04:20:48 +02:00
WendyStarfall
d5b8f98228 re-order heightfix checkbox
just a little, so it won't show up on each pose page
2014-08-29 04:19:34 +02:00
WendyStarfall
6f8c23ba90 change some formatting and text 2014-08-29 03:58:59 +02:00
WendyStarfall
ffb91d4f60 Merge pull request #390 from SumiPerl/patch-8
anim.lsl move heightfix to pose menu
2014-08-29 03:51:13 +02:00
SumiPerl
162188d54b anim.lsl move heightfix to pose menu 2014-08-28 21:48:12 -04:00
WendyStarfall
6307d36f9d remove replace/replace_all buttons
we retain chat commands but make it less error prone in menus where the
replace and replace all buttons are broadly used by error; "replace" is
not the same as in outfits; the option remains to just make folders
always add even via chat commands but I won't touch this yet
2014-08-29 03:33:30 +02:00
WendyStarfall
05cbf7872f Merge pull request #389 from SumiPerl/patch-7
rlvfolders - re-order buttons
2014-08-29 03:06:35 +02:00
SumiPerl
8f54b8acf8 rlvfolders - re-order buttons 2014-08-28 21:05:13 -04:00
WendyStarfall
116cc60c19 change some formatting and text 2014-08-29 02:20:00 +02:00
WendyStarfall
06afdbf937 remove take controls for movement
this is supposed to be used with AntiSlide active in the collar; instead
of pausing the collar pose when we move, we just leave the AO turned off
and use the walk defined in the AntiSlide menu of the collar

hax done by Sumi Perl on my request; we need to test it a bit more and
hopefully can make this a public release along with 3.980 collars;
relates to #263
2014-08-28 03:20:21 +02:00
WendyStarfall
149646e68a Merge pull request #388 from SumiPerl/patch-4
anim.lsl - changed buttons, added prompts
2014-08-28 02:08:47 +02:00
SumiPerl
7f3953df8b anim.lsl - changed buttons, added prompts 2014-08-27 20:03:15 -04:00
WendyStarfall
581104cf42 copy AO Link
preparing this script for a "lite" version that will only turn AOs on or
off to work with collar internal AntiSlide technology
2014-08-28 01:41:26 +02:00
WendyStarfall
637a4ae1cd change installation methods
from now on we only have two options, standard or custom; basic and
developer options were misleading and we lack the space in a dialog
header to note it all down for proper explanation; Silkie helped with
the editing for the text to turn my blurb into proper English; the
".version" card is not installed, it only tells the updater hover text
which version to display and how to rename the updater object itself but
should follow the new naming convention nevertheless
2014-08-28 01:02:29 +02:00
WendyStarfall
21d95147b2 change naming convention for cards
these two cards will be new for the 3.980 release; we can change naming
convention for these two already:

cards starting with a dot are supposed to be "stock" and selected
plugins can give cards starting with an exclamation mark priority; I
will explain this better when doing the changes for texture, couples and
ultimately colors and settings
2014-08-28 00:49:43 +02:00
WendyStarfall
9b8b8ef349 change posture animation name
this is also because we change the license for this animation to a
CC-BY-SA 4.0 with Medea's permission
2014-08-27 23:51:26 +02:00
WendyStarfall
3dd9d1299f Merge pull request #16 from SumiPerl/patch-1
hudoptions.lsl fixed attaching to hud and syntax error
2014-08-27 22:36:43 +02:00
SumiPerl
e389aa7abc hudoptions.lsl fixed attaching to hud and syntax error 2014-08-27 16:10:22 -04:00
WendyStarfall
7a4d13332d move into spare_parts directory 2014-08-26 20:33:14 +02:00
WendyStarfall
d61b955a87 Merge pull request #387 from SumiPerl/main
Removed run selection, but retain matching for ~walk_animation auto sele...
2014-08-26 20:26:18 +02:00
WendyStarfall
f0069f1dde delete beta directory 2014-08-26 20:25:23 +02:00
WendyStarfall
8cad783cbf delete alternative label
all of Romka's changes to label are now part of the public distribution
and can be found in the label script in the lsl directory
2014-08-26 20:22:36 +02:00
WendyStarfall
a677046b00 delete customize 2014-08-26 20:20:14 +02:00
WendyStarfall
4ac6be1e05 move into lsl directory
this stuff is part of the public distribution now and will be released
with 3.980
2014-08-26 20:15:45 +02:00
WendyStarfall
a4de5ca089 add oc header 2014-08-26 20:11:36 +02:00
WendyStarfall
5914736506 add file endings
so we can export from in-world editors seamlessly
2014-08-26 20:09:32 +02:00
SumiPerl
d5fdbc40fb Removed run selection, but retain matching for ~walk_animation auto select ~run_animation - default to ~run if available 2014-08-26 14:07:07 -04:00
WendyStarfall
19b51dec28 sync with in-world styles
this is a bit cleaner, based on Romka's own in-world styles and uses the
tilde in front of the styles setting card for conformity
2014-08-26 20:06:30 +02:00
WendyStarfall
155dc2f2a3 merge 3.980 into main (manually)
we are getting merge conflicts otherwhise and I don't want to override
the files we need for queries; attribution to hide goes to Romka;
attribution to changes in settings and main go to mouse; all other
commits are cherry-picked from main to 3.980 or vice versa and show
correctly in the history; the alternate hide, main and settings can be
found for now in the alpha branch as of the 26th of August 2014
2014-08-26 18:28:50 +02:00
WendyStarfall
476de1f5bd Merge pull request #383 from SumiPerl/main
anim.lsl auth.lsl
2014-08-26 16:40:41 +02:00
SumiPerl
0ef4aa4bd4 Merge branch 'main' of https://github.com/SumiPerl/OpenCollarUpdater into main 2014-08-26 07:26:31 -04:00
SumiPerl
59ca101aac sync 2014-08-26 07:26:02 -04:00
SumiPerl
76d9d9fac3 sync 2014-08-26 07:24:19 -04:00
SumiPerl
d817887a70 sync 2014-08-26 07:21:21 -04:00
SumiPerl
fedbc147f6 sync 2014-08-26 07:20:42 -04:00
SumiPerl
22d9f085d1 Sync 2014-08-26 07:16:40 -04:00
SumiPerl
bffc0beb8e sync 2014-08-26 07:07:18 -04:00
WendyStarfall
56e172a493 Merge pull request #369 from SumiPerl/patch-26
anim.lsl added custom walk selection and menu
2014-08-25 23:32:51 +02:00
SumiPerl
519a41691a anim.lsl added custom walk selection and menu 2014-08-25 17:31:35 -04:00
WendyStarfall
9c99dfea2c update dialog and message text 2014-08-25 23:29:31 +02:00
WendyStarfall
7bd4d8f4dc Merge pull request #6 from buildersbrewery/beta
Update OpenCollarAO documentation
2014-08-25 20:35:13 +02:00
WendyStarfall
75a4b488d3 Merge pull request #15 from buildersbrewery/master
Updated repository
2014-08-25 20:34:25 +02:00
Builder's Brewery
8ff25ca73b 'Illse Mannonen' should be 'Ilse Mannonen' 2014-08-25 16:02:35 +02:00
Builder's Brewery
912918aec1 Update OpenCollar AO License.md 2014-08-25 15:56:49 +02:00
Builder's Brewery
aaf94dcdc7 Update and rename OpenCollar AO License to OpenCollar AO License.md 2014-08-25 15:55:34 +02:00
Builder's Brewery
8d88a9d822 Update OpenCollar AO Guide.md 2014-08-25 15:48:28 +02:00
Builder's Brewery
a3078f26af Update OpenCollar AO Guide.md 2014-08-25 15:46:11 +02:00
Builder's Brewery
83c4b4edeb Update and rename OpenCollar AO Guide to OpenCollar AO Guide.md 2014-08-25 15:44:16 +02:00
Builder's Brewery
2c1f0551ba Update OpenCollarHUD - rezzer.lsl 2014-08-25 15:09:57 +02:00
Builder's Brewery
e9d7c18d0b Update OpenCollarHUD - hudoptions.lsl 2014-08-25 14:59:24 +02:00
Builder's Brewery
ecd3ec3431 Update OpenCollarHUD - hudmenu.lsl 2014-08-25 14:38:46 +02:00
Builder's Brewery
accb6ea1ef Update OpenCollarHUD - hudmain.lsl 2014-08-25 14:28:34 +02:00
Builder's Brewery
a2c79b9d2d Update OpenCollarHUD - hudlistener.lsl 2014-08-25 13:53:25 +02:00
Builder's Brewery
bd83a1257b Update OpenCollarHUD - hudleash.lsl
* removed unused code
2014-08-25 13:50:03 +02:00
Builder's Brewery
0a733a2a8b Update OpenCollarHUD - hudforcetp.lsl 2014-08-25 13:40:07 +02:00
Builder's Brewery
c7e6a9d36f Update OpenCollarHUD - dialog.lsl 2014-08-25 13:28:25 +02:00
Builder's Brewery
e2b251ef93 Update OpenCollarHUD - Ownermenu.lsl
* removed unused code
2014-08-25 13:01:10 +02:00
Builder's Brewery
b91b2ac24d Update and rename OpenCollar Owner Update Guide to OpenCollar Owner Update Guide.md 2014-08-25 12:46:42 +02:00
Builder's Brewery
677e09d1df Update and rename OpenCollar Owner Hud TPHelp to OpenCollar Owner Hud TPHelp.md 2014-08-25 12:43:37 +02:00
Builder's Brewery
98dbfbe04f Update and rename OpenCollar Owner HUD Ownermenu Guide to OpenCollar Owner HUD Ownermenu Guide.md 2014-08-25 12:39:56 +02:00
Builder's Brewery
ff728c8e4c Update and rename OpenCollar Owner HUD License to OpenCollar Owner HUD License.md 2014-08-25 12:33:18 +02:00
Builder's Brewery
4a27fd8816 Update and rename OpenCollar Owner HUD Guide to OpenCollar Owner HUD Guide.md 2014-08-25 12:25:18 +02:00
Builder's Brewery
912b78d651 Reformat LSL/OpenCollar Guide for markdown 2014-08-25 12:15:22 +02:00
Builder's Brewery
b0776f3a00 updated SPARE_PARTS/OpenCollarHUD - hudspy.lsl
* updated header
* removed trailing whitespace
* updated how to generate short keys
* removed unused code from source
2014-08-25 12:08:02 +02:00
WendyStarfall
70b218a1a2 Merge pull request #367 from SumiPerl/patch-23
styles.lsl Remove OwnerSay if no notecard present
2014-08-25 04:22:31 +02:00
SumiPerl
fbe1a62238 styles.lsl Remove OwnerSay if no notecard present 2014-08-24 22:20:41 -04:00
WendyStarfall
6630e11dbc Merge pull request #366 from SumiPerl/patch-22
anim.lsl Bypass error if no notecard present
2014-08-25 04:07:24 +02:00
SumiPerl
3be33e21cc Bypass error if no notecard present 2014-08-24 22:06:36 -04:00
WendyStarfall
b9863de452 Merge pull request #365 from SumiPerl/patch-20
paint.lsl - Bypass error if no notecard present
2014-08-25 04:02:46 +02:00
SumiPerl
acd7cec9ee paint.lsl - Bypass error if no notecard present 2014-08-24 22:01:58 -04:00
WendyStarfall
82f029890f Merge pull request #364 from SumiPerl/patch-19
anim.sl - Move out of pose using llSetAnimationOverride
2014-08-25 02:01:16 +02:00
SumiPerl
146e369863 anim.sl - Move out of pose using llSetAnimationOverride
This avoids any timers and trickery

Poses become a "Standing" animation override, so you don't get dragged around

There's a button to enable in Animations menu - defaults to OFF

Notes: We could add custom walks and runs etc at line #345
2014-08-24 17:02:33 -04:00
SumiPerl
25ca04c7de ~hug.bvh
120 frames - upload with:
1 second ease-in
1 second ease-out
looped
2014-08-23 18:37:37 -04:00
WendyStarfall
ab5a688e7e Merge pull request #363 from SumiPerl/patch-18
(Discussion) possible solution to RLV status inconsistency
2014-08-23 23:42:56 +02:00
SumiPerl
f3814a867e (Discussion) possible solution to RLV status inconsistency 2014-08-23 12:06:40 -04:00
WendyStarfall
e217a02fe1 add manual link 2014-08-23 17:27:57 +02:00
WendyStarfall
4743d1f16b change sMessages to upper case 2014-08-23 16:00:22 +02:00
WendyStarfall
317680f91f Merge pull request #362 from SumiPerl/patch-17
bookmarks.lsl - re-order utility buttons, call menu on blank save field
2014-08-23 15:53:25 +02:00
SumiPerl
ca1bed6c0a bookmarks.lsl - re-order utility buttons, call menu on blank save field 2014-08-23 09:52:37 -04:00
WendyStarfall
f3cdbc81d3 Merge pull request #361 from SumiPerl/patch-16
change as per upper management
2014-08-22 17:00:50 +02:00
SumiPerl
96d5924752 change as per upper management 2014-08-22 11:00:22 -04:00
WendyStarfall
d80f0728a5 Merge pull request #360 from SumiPerl/patch-15
removed bugs, put in garbage, set on fire
2014-08-22 16:48:49 +02:00
SumiPerl
62ce431817 removed bugs, put in garbage, set on fire 2014-08-22 10:47:59 -04:00
WendyStarfall
fd7292008a Merge pull request #359 from SumiPerl/patch-13
update some hard coded 'bookmark' references to global variable
2014-08-22 16:27:09 +02:00
SumiPerl
d128b3c3a7 update some hard coded 'bookmark' references to global variable 2014-08-22 10:24:23 -04:00
WendyStarfall
292cb7a297 Merge pull request #358 from SumiPerl/patch-12
added case insensitivity
2014-08-22 16:08:33 +02:00
WendyStarfall
5bb7d460cd Merge pull request #357 from SumiPerl/patch-11
removed landmark logic and menus
2014-08-22 16:07:54 +02:00
SumiPerl
642a98fd61 added case insensitivity
and multiple bookmark matching
2014-08-22 10:07:33 -04:00
SumiPerl
5c2a519098 removed landmark logic and menus
re-mapped tp command to rlvtp
2014-08-22 10:06:43 -04:00
WendyStarfall
79747826a2 Merge pull request #354 from RomkaSwallowtail/patch-2
Update OpenCollar - appearance.lsl   MENUNAME_REMOVE
2014-08-21 15:58:57 +02:00
Romka
667352dc5a Update OpenCollar - appearance.lsl
added MENUNAME_REMOVE processing
2014-08-21 17:41:49 +04:00
WendyStarfall
c3deaf2ca0 Merge pull request #352 from RomkaSwallowtail/patch-2
Update OpenCollar - label.lsl   HIDE bug fixed
2014-08-20 11:17:18 +02:00
Romka
5702ffe4e3 Update OpenCollar - label.lsl
bug fixed: label visible if attach/rez hided collar
2014-08-20 02:00:05 +04:00
WendyStarfall
1877138f8c Merge pull request #351 from RomkaSwallowtail/patch-1
Update OpenCollar - hide.lsl  GLOW  bugfix
2014-08-19 22:54:45 +02:00
Romka
503e734f8c Update OpenCollar - hide.lsl
fixed bug: not restore glow after detach/attach hidden collar
2014-08-20 00:45:50 +04:00
WendyStarfall
091f749ef3 Merge pull request #350 from RomkaSwallowtail/patch-1
Update OpenCollar - hide.lsl  GLOW
2014-08-19 20:51:45 +02:00
Romka
d98627d8c4 Update OpenCollar - hide.lsl
add save and restore prims glow, before/after hide/show elements and all collar
2014-08-19 22:46:15 +04:00
WendyStarfall
c57f4956e5 Merge pull request #349 from SumiPerl/patch-10
Issue #344 - clear folder locks on safeword
2014-08-19 10:26:13 +02:00
WendyStarfall
3363b9a5ba Merge pull request #346 from SumiPerl/patch-9
Generated errors on SAFEWORD due to invalid key
2014-08-19 10:25:42 +02:00
SumiPerl
13fa7095e9 Issue #344 - clear folder locks on safeword
https://github.com/OpenCollar/OpenCollarUpdater/issues/344
2014-08-19 02:04:26 -04:00
SumiPerl
beb0497524 Generated errors on SAFEWORD due to invalid key 2014-08-19 00:34:18 -04:00
littlemousy
d70e796429 fix bug in "reauth after auth list change" 2014-08-18 16:02:04 +01:00
KaroWeirsider
f2d420ab81 animations 2014-08-18 08:29:00 -04:00
WendyStarfall
4d43b258ef init readmes 2014-08-18 14:13:27 +02:00
WendyStarfall
babe5548f1 Initial commit 2014-08-18 13:30:42 +02:00
WendyStarfall
4cc433277f testing formatted links 2014-08-17 06:09:00 +02:00
littlemousy
0b4029396f Apply "runaway disable" logic to runaway action 2014-08-17 02:26:40 +02:00
WendyStarfall
29aa913f86 update news
z-offset blog post; tpv meeting
2014-08-16 10:07:30 +02:00
WendyStarfall
22beff0e80 update formatting 2014-08-16 05:07:35 +02:00
WendyStarfall
8886d50be3 updates news test 004 formatting
to make it work for default communications box sizes
2014-08-16 04:51:56 +02:00
WendyStarfall
f6a680b37d update news for test 004
let's try some real news
2014-08-16 04:49:22 +02:00
WendyStarfall
6651bb0dc5 make adding owners by UUID perform...
...dataserver look-up for the name, ignore the name it returns and send
the UUID to AddUniquePerson function instead; fixes problem with runaway
and add by UUID (no name) -> attributes to littlemousy
2014-08-16 03:43:29 +02:00
littlemousy
3cde3f0df1 Update ~news 2014-08-15 18:43:42 +01:00
littlemousy
63ab7ea0e9 Update ~news 2014-08-15 18:32:17 +01:00
WendyStarfall
2e56839949 update news for test 003 2014-08-15 17:49:09 +02:00
WendyStarfall
521db06cb0 update news for test 002 2014-08-15 17:12:29 +02:00
WendyStarfall
4b7f07e96b update news for test 001 2014-08-15 17:06:20 +02:00
WendyStarfall
5e96e5fa2b change default visibility to false + ...
...set bell element alpha in state_entry (to prevent the bell from
showing each time we runaway)

attributes to mouse
2014-08-15 16:22:32 +02:00
littlemousy
65427adcff Fix bugs in runaway, re-auth when owner list changes, restrict tempowners from runaway enable 2014-08-15 14:27:13 +01:00
WendyStarfall
580c71f534 change button name and dialog text
"Sack Wearer" changed to "Release" and just a few linebreaks here and
there
2014-08-15 13:30:27 +02:00
WendyStarfall
5b2db833c7 change 3 default colours
this colour selection should now work for most engravings and also led
labels
2014-08-15 11:42:56 +02:00
WendyStarfall
4011f86897 change button name and dialog header text
says now "Set Label", so it's like in Titler with "Set Title"; the note
in the dialog header we don't need anymore because label self destructs
in items that have no label element prims defined
2014-08-15 11:29:31 +02:00
WendyStarfall
c6567b39d8 update version coherency in header 2014-08-15 08:14:06 +02:00
WendyStarfall
d42a57a448 make commands send user key to rlvmain
bookmarks part of mouses fix for #316
2014-08-15 07:13:27 +02:00
WendyStarfall
2fc088463c remove deprecated destinations
superseded by bookmarks
2014-08-15 07:08:36 +02:00
WendyStarfall
4bad4b1c48 remove redundant smarthelp and reference 2014-08-15 06:53:33 +02:00
WendyStarfall
03590b9346 remove redundant help button 2014-08-15 06:51:38 +02:00
WendyStarfall
869d7b01c3 change default blank button to dash
to distinguish these clearly from dynamic blank buttons in Leash and the
Main Menu
2014-08-15 06:49:37 +02:00
WendyStarfall
3282d5cf47 make heightscalars dynamic and non-contiguous
This commit attributes to littlemousy.

We are able to add, remove and hand-pick heightscalar animations without
them having to follow a hard defined list from -30 to -50.
2014-08-15 06:39:35 +02:00
littlemousy
e9ae584595 Fix issue #316
rlvtp now sends user key to rlvmain.  rlvmain now checks for baked tp restrictions before allowing tpto command.  Chat message sent to person requesting the TP.
Needs better error reporting, as per Satomi's comment, but fixes the problem reported by the OP.
2014-08-14 02:00:29 +01:00
WendyStarfall
1a31d98153 change Customize button to Paint 2014-08-13 21:43:44 +02:00
littlemousy
3804568506 Add symantic version check, tidy up, fix remenus 2014-08-13 15:33:54 +01:00
littlemousy
1965c5e657 add sample capture app
Demonstration/test script for the new temp owners function in auth
2014-08-13 11:18:27 +01:00
WendyStarfall
2669bdbfb6 change upmenu for conformity 2014-08-13 10:15:23 +02:00
WendyStarfall
2fba57515a mix paint...
...as a whole and in main. Also includes invisible and visible paint!

[fix]paint spikes invisible
2014-08-13 10:12:28 +02:00
littlemousy
f7b58d3270 merge main and update 2014-08-13 04:06:07 +01:00
littlemousy
01b28afdeb no need for duplicate main 2014-08-13 03:29:08 +01:00
littlemousy
449ccde962 Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main 2014-08-13 03:27:47 +01:00
littlemousy
2014ddedf3 Add menuresponse 2014-08-13 03:25:22 +01:00
littlemousy
700096bdbb Change menu entries 2014-08-12 21:36:02 +01:00
littlemousy
7274755552 Fix menu rebuild bug 2014-08-12 21:11:45 +01:00
WendyStarfall
91154b9c6f Merge pull request #339 from SumiPerl/patch-5
Update OpenCollar - bookmarks.lsl
2014-08-12 09:01:55 +02:00
SumiPerl
1dbdf971b9 Update OpenCollar - bookmarks.lsl
Fixed notecard reading
updated bookmark ordering for OC to take top spots
2014-08-12 02:23:15 -04:00
WendyStarfall
f77d9f7ed1 Merge pull request #338 from SumiPerl/patch-4
Update OpenCollar - bookmarks.lsl
#309
2014-08-12 07:40:52 +02:00
SumiPerl
e52e178a1c Update OpenCollar - bookmarks.lsl
Fix printing destinations and confirmation notifications
2014-08-12 01:38:21 -04:00
WendyStarfall
ab153a7131 fix menu nesting + ...
...sync with development channel

I received help from Sumi for this one!
2014-08-12 07:04:59 +02:00
WendyStarfall
0b3278283d Merge pull request #337 from SumiPerl/patch-3
Update OpenCollar - bookmarks.lsl
#309
2014-08-12 06:10:06 +02:00
SumiPerl
d0d5c2ba4d Update OpenCollar - bookmarks.lsl
Updated to ~bookmarks notecard
Kept silent if notecard does not exist
2014-08-12 00:07:25 -04:00
WendyStarfall
4a0b2453d8 add text and links
addresses #335
2014-08-12 03:32:57 +02:00
littlemousy
4ec496bee3 Remove "No updaters found" message
This message will be included in the text downloaded from the web
2014-08-12 02:20:37 +01:00
WendyStarfall
90189cd03a Merge pull request #336 from SumiPerl/patch-1
Bookmarks Guideline #309
2014-08-12 03:14:08 +02:00
SumiPerl
90d19ebc31 Bookmarks Guideline #309
Added manual entry capabilities to the 'Save' button
Cleaned up some menus and buttons
Added a function to validate user input
Added a slurl to location conversion
2014-08-11 21:12:29 -04:00
WendyStarfall
e991a92269 remove redundant quick help
addresses #304
2014-08-12 03:12:10 +02:00
littlemousy
736765bf2f Add tempowner list, add "no runaway" options
Addresses issue #308
2014-08-12 01:55:06 +01:00
littlemousy
bb3acdab06 Change menu structre for main, settings and update
Move fixmenus command to main and remove button.
2014-08-12 01:20:23 +01:00
WendyStarfall
a660fd3d91 add links 2014-08-12 00:15:47 +02:00
WendyStarfall
7c02c55832 Merge pull request #334 from RomkaSwallowtail/patch-1
Update OpenCollar - label.lsl
2014-08-11 22:35:57 +02:00
Romka
4fd4ae6eca Update OpenCollar - label.lsl
font, color, scroll
2014-08-12 00:29:12 +04:00
littlemousy
a04b84bee4 Improve memory handling
Quick fix to issue #332
2014-08-11 21:11:46 +01:00
WendyStarfall
1d37448e0b Merge pull request #333 from SumiPerl/main
Bookmarks Guideline #309
2014-08-10 22:29:17 +02:00
SumiPerl
08fbcbec20 Bookmarks Guideline #309 2014-08-10 16:04:47 -04:00
WendyStarfall
d6175806b0 change region name 2014-08-10 21:44:13 +02:00
WendyStarfall
7737b65f20 init bookmarks file empty
fresh canvas! <3
2014-08-10 21:24:46 +02:00
WendyStarfall
9722cc356f create ~bookmarks card 2014-08-10 21:16:43 +02:00
WendyStarfall
c9c5ab0911 Merge pull request #328 from RomkaSwallowtail/patch-1
Update OpenCollar - listener.lsl  sim-wide HUD response
2014-08-09 19:09:52 +02:00
Romka
fd39729255 Update OpenCollar - listener.lsl
use llRegionSayTo instead llSay for hud response
2014-08-09 19:34:56 +04:00
WendyStarfall
6f044e3de4 create thingy
is pretty <3
2014-08-09 04:17:49 +02:00
WendyStarfall
ee5d2165f2 Merge pull request #315 from RomkaSwallowtail/patch-7
Update OpenCollar - main.lsl
2014-08-08 00:40:34 +02:00
WendyStarfall
81c2983272 Merge pull request #314 from RomkaSwallowtail/patch-6
Update OpenCollar - settings.lsl
2014-08-08 00:39:35 +02:00
Romka
b37257ab5d Update OpenCollar - main.lsl 2014-08-07 20:37:14 +04:00
Romka
378eb06e33 Update OpenCollar - settings.lsl 2014-08-07 20:31:04 +04:00
WendyStarfall
868e1fca5c Merge pull request #303 from RomkaSwallowtail/patch-5
Update OpenCollar - settings.lsl
2014-08-05 09:53:28 +02:00
Romka
aaacc40eed Update OpenCollar - settings.lsl 2014-08-05 09:28:27 +04:00
WendyStarfall
65a6b91c91 Merge pull request #297 from RomkaSwallowtail/patch-4
Update textures - same textures keys
2014-07-27 07:50:52 +02:00
Romka
ac5307d405 Update textures 2014-07-26 22:21:20 +04:00
Romka
f35b545b3f Update textures 2014-07-26 22:20:05 +04:00
Romka
74781d6d43 Update textures 2014-07-26 22:18:24 +04:00
littlemousy
30eb290d21 Remove old "change text colour with prim" code
fixes issue #295
2014-07-24 19:32:08 +01:00
WendyStarfall
eb1a15397b 3.970 ready to ship 2014-07-24 19:35:31 +02:00
WendyStarfall
f2bf429975 update news 3.970 2014-07-23 06:00:56 +02:00
WendyStarfall
34dd79c0e7 add links and formatting 2014-07-22 04:51:43 +02:00
WendyStarfall
7c4f2bb8b0 remove sandbox and shack 2014-07-21 05:43:04 +02:00
WendyStarfall
d609ab7481 fix grammar and formatting 2014-07-21 05:14:00 +02:00
WendyStarfall
fea11b7808 deprecated shack and sandbox 2014-07-21 05:03:53 +02:00
WendyStarfall
954ec045ef add places and groups http request 2014-07-21 04:55:41 +02:00
WendyStarfall
46e7a3204b update slurl 2014-07-21 04:53:45 +02:00
WendyStarfall
820b401831 create places slurls and groups uris 2014-07-21 04:34:07 +02:00
WendyStarfall
3e5741de29 Merge pull request #292 from RomkaSwallowtail/patch-1
Create OpenCollar - styles.lsl
2014-07-15 11:46:15 +02:00
Romka
b5cadf79f2 Update OpenCollar - styles.lsl
some polish...
2014-07-15 11:30:25 +03:00
Romka
70e588305e Update OpenCollar - styles.lsl
add applock feature and changed style command
2014-07-15 10:45:09 +03:00
Romka
c6f0910e02 Create OpenCollar - styles.lsl
want to quickly change styles collar? Now it's easy!

in Appearance menu *Styles* , with "Dump Style" button dump current appearance that set using "texture", "color" ("shine"), and write it as "your style" in 'styles' notecard in the collar.
And this style will appear in the Styles menu for further use.
2014-07-15 08:28:16 +03:00
WendyStarfall
0e9959a96c Merge pull request #286 from RomkaSwallowtail/patch-1
Update OpenCollar - customize.lsl
2014-07-15 04:15:38 +02:00
WendyStarfall
6419fa0499 Merge pull request #287 from RomkaSwallowtail/patch-2
Update OpenCollar - texture.lsl
2014-07-13 23:04:34 +02:00
WendyStarfall
61b3520469 Merge pull request #288 from RomkaSwallowtail/patch-3
Update OpenCollar - shocker
2014-07-13 23:03:40 +02:00
Romka
0d66d8ffd1 Update OpenCollar - shocker 2014-07-13 14:08:23 +04:00
Romka
452df6869f Update OpenCollar - texture.lsl
altered processing of user commands,
use llSetLinkPrimitiveParamsFast, instead llSetLinkTexture, for improve applying textures
2014-07-13 12:39:26 +04:00
Romka
eb4890806e Update OpenCollar - customize.lsl
optimize texture and color apply
2014-07-12 10:45:38 +03:00
Romka
cce699efce Update OpenCollar - customize.lsl
elements with "notexture" & "nocolor" & "nohide" and empty tags don't show in element menu
2014-07-12 09:05:43 +03:00
WendyStarfall
ebdc1b4e82 create customize+...
create OpenCollar - customize + nesting changes for OpenCollar - main
for SPARE_PARTS -> #281
2014-07-09 11:00:49 +02:00
WendyStarfall
478b9ac768 change submenu name to Particle
customization for the leash is revolving fully around particles; we keep
the name "customize" reserved to avoid doubling up menus in the future
2014-07-09 10:55:26 +02:00
WendyStarfall
26c809b213 add rlv query and response lms
please take a look at rlvmain to see how that works
2014-07-09 10:47:26 +02:00
WendyStarfall
49fe1c1ddc Merge pull request #247 from NorthGlenwalker/patch-1
Update OpenCollar - rlvmisc.lsl
2014-07-08 18:18:04 +02:00
WendyStarfall
5acde472cb fix #277 by littlemousy
I have received this as in-world contribution by littlemousy. She also
mentioned that this is a really good example of saving code from the
"textkey" change. I feel the same because I have been able to understand
it this way too now and for those interested, this could be reference to
gain better understanding about it all.
2014-07-08 10:16:22 +02:00
WendyStarfall
0bed4d835e Merge pull request #278 from VirtualDisgrace/raspberrytarzan
auth; Refactor and Optimize by littlemousy
2014-07-07 22:42:15 +02:00
WendyStarfall
8c4e6c8242 auth; Refactor and Optimize by littlemousy
auth in the upstream currently has 9,592 bytes free on start-up; after
refactor and optimization we have 17,134 bytes free on start-up; that's
a difference of 7,542 bytes more memory available
2014-07-07 06:14:36 +02:00
WendyStarfall
90c94d6cb8 Merge pull request #276 from RomkaSwallowtail/patch-1
Update OpenCollar - listener.lsl   ml132 found bug:  #275
2014-07-05 08:35:18 +02:00
Romka
2e6d2ca191 Update OpenCollar - listener.lsl
#275
2014-07-05 07:30:13 +03:00
WendyStarfall
7c3176f711 Merge pull request #274 from RomkaSwallowtail/patch-1
Create OpenCollar SPARE PARTS - shininess & shocker plugins
2014-07-04 15:28:38 +02:00
Romka
d50785badd Update OpenCollar - shininess 2014-07-04 15:00:41 +04:00
Romka
899d1f4328 Create OpenCollar - shocker 2014-07-04 12:57:40 +04:00
Romka
2c6e482a6a Create OpenCollar - shininess
Based on 'Opencollar - texture'
2014-07-04 12:49:46 +04:00
WendyStarfall
8566c2d0d7 Merge pull request #272 from RomkaSwallowtail/patch-110
Update OpenCollar - label.lsl   with scroll long text
relates to #266
2014-07-03 19:28:11 +02:00
Romka
28dae8b08d Update OpenCollar - label.lsl 2014-07-03 21:00:51 +04:00
WendyStarfall
1eb3a3c02b init base source for alternative label 2014-07-03 18:56:10 +02:00
WendyStarfall
803df13202 Merge pull request #270 from VirtualDisgrace/raspberrytarzan
fix element calculation
2014-07-03 18:45:24 +02:00
WendyStarfall
f7a26c0826 fix element calculation 2014-07-03 18:39:25 +02:00
WendyStarfall
ba6514f8a1 Merge pull request #269 from SilkieSabra/patch-1
Update OpenCollar - AO Link.lsl
2014-07-03 17:59:23 +02:00
SilkieSabra
c4d55ac1a3 Update OpenCollar - AO Link.lsl
Edit the first sentence in the version notes, fix a typo, say where to drop in the scripts, add Vista.
2014-07-03 11:57:30 -04:00
WendyStarfall
ba5075b637 3.968 ready to ship 2014-07-03 15:28:20 +02:00
WendyStarfall
802ba5fb3e Merge pull request #268 from VirtualDisgrace/raspberrytarzan
add send exceptions through rlvmain
2014-07-03 14:47:10 +02:00
WendyStarfall
5bdb705780 add send exceptions through rlvmain
addresses #267 in upstream source
2014-07-03 13:48:03 +02:00
WendyStarfall
6149c4e1fe Merge pull request #265 from NorthGlenwalker/patch-2
Update OpenCollar - anim.lsl
2014-07-02 14:16:07 +02:00
WendyStarfall
f264ae28e1 3.967 ready to ship 2014-07-02 13:39:13 +02:00
NorthGlenwalker
6201da947f Update OpenCollar - anim.lsl
To show what our current pose is in the pose menu
2014-07-02 11:40:05 +01:00
WendyStarfall
cce85dada4 Merge pull request #264 from XenHat/patch-1
Basic VISTA AO support
#263
2014-07-01 04:12:22 +02:00
Tarnix Wilcox
249bf4bb16 Fixed whitespaces in AO Link 2014-06-30 22:07:22 -04:00
Tarnix Wilcox
22999b7e65 Basic VISTA AO support
Supports:
- AO ON/OFF
- Sits ON/OFF
- Next Stand (differs from ZHAO)
2014-06-30 22:00:00 -04:00
WendyStarfall
a97d4217c4 init Medea Destiny's AO Link
Medea Destiny's AO interface script for OpenCollar

This script is inteneded to be a drop-in for ZHAO-2 and Oracul AOs that
are not already compatible with OpenCollar's AO interface.

Scope: The script tries to identify the AO type by checking script
naming. It receives the ZHAO ON, ZHAO OFF and ZHAO Menu commands from
the collar, and uses link messages to send appropriate commands to the
AO, depending on the detected collar type. It is not a complete
replacement of the Sub AO as it cannot allow as complete access to the
AO as that does, but it should provide most of the functionality while
being very easy to add to user's pre-existing AOs.

When the AO is switched on, but the collar sends a command to switch it
off, the script will take controls and detect for movement. While the
avatar is trying to move, the AO will told to switch the AO back on
again until movement ceases.

An alternative to this method would be to capture the AO's walk
animation and play the animation itself as a walk overrider. The
disadvantage of that is trying to capture the walk animation isn't
straightforward, particular when there is more than one walk configured.
The disadvantage of this method is that it does a lot more AO
triggering.
2014-06-30 23:18:46 +02:00
littlemousy
6db5efac43 Merge pull request #262 from VirtualDisgrace/lemoncheese
Add dialog...
2014-06-30 02:00:36 +01:00
WendyStarfall
8e7a946370 Add dialog...
...to select from non-unique TP destinations from chat
2014-06-30 02:56:07 +02:00
WendyStarfall
2ea003dc75 OCD check; in-world sync
We arrive at 3.967 in summary with all changes here and in-world. Source
is synchronized. (I wished there was a way to push from in-world to git
repos, this should be a top priority feature for the next virtual
world..)
2014-06-30 01:16:24 +02:00
WendyStarfall
68ca1a7011 added destinations command... +...
this is by littlemousy and adds a chat command for calling the
destinations menu, also a more sophisticated approach for finding and
executing landmark teleports via chat command, shortened commands are
possible now for landmarks containing spaces and a check is in place if
the shortened command could have addressed more than 1 such landmark
"More than one matching landmark was found in the collar..."
2014-06-29 22:59:57 +02:00
WendyStarfall
f8a6590635 added stuff!
by littlemousy; this adds the new query and response messages for rlv
plugins, also corrects the cosmetic issues with the "All" button and
sets the new StartIM exception as default for fresh collars
2014-06-29 05:15:48 +02:00
WendyStarfall
d1f6d18116 i made thingy error, sorry!
also less confusing say messages, this time giving a positive when
approrpiate instead pending
2014-06-29 03:06:59 +02:00
WendyStarfall
839bbe85f4 removed redundant scalars
from ~-40 on we need avatars taller than possible unless if using a
deformer animation which would conflict with the scalars; 11 less
contents is the bigger win here
2014-06-29 01:17:54 +02:00
WendyStarfall
784377d1ab adjusted for #254, #255 and #259
(loosely related to #243)
2014-06-29 01:10:07 +02:00
WendyStarfall
c0f93b3bce Merge pull request #259 from VirtualDisgrace/powerpony
self destructing titler
2014-06-29 00:23:22 +02:00
WendyStarfall
fa0686de49 self destructing titler
if we don't have a FloatText element, the script cleans itself up;
otherwhise the same theory/practice case like in #254 and #255
2014-06-29 00:19:50 +02:00
WendyStarfall
29ed7ec7eb Merge pull request #258 from VirtualDisgrace/yesbunny
shorter dialog text and weblink
2014-06-29 00:07:12 +02:00
WendyStarfall
b875be2dfd Merge pull request #257 from VirtualDisgrace/megapie
Refactor and Optimize... +...
2014-06-29 00:06:34 +02:00
WendyStarfall
79f2a1ddc4 Merge pull request #255 from VirtualDisgrace/doodoopop
self destructing label
2014-06-29 00:05:19 +02:00
WendyStarfall
75c7cbde96 Merge pull request #254 from VirtualDisgrace/moobell
self destructing bell
2014-06-29 00:05:05 +02:00
WendyStarfall
bce2d5a9ec Merge pull request #253 from VirtualDisgrace/shoechew
Multisearch for RLV Folders
2014-06-29 00:04:48 +02:00
WendyStarfall
a58a5a2f84 Merge pull request #252 from VirtualDisgrace/saladbomb
dynamic main
2014-06-29 00:04:13 +02:00
WendyStarfall
189bcc7429 Merge pull request #251 from VirtualDisgrace/powerpony
dedicated colorizer for titler
2014-06-29 00:03:57 +02:00
WendyStarfall
ef3414717e Merge pull request #250 from VirtualDisgrace/mybranch2
restrictive garble
2014-06-29 00:03:29 +02:00
WendyStarfall
e4e5de43a5 shorter dialog text and weblink
weblink leads to essentially the same spot the Help button does but we
might want this for continuity throughout menus; shorter text should
encourage users who seek more documentation to follow up on a properly
formatted web page - the rest don't read it anyway, amirite?
2014-06-28 23:14:35 +02:00
WendyStarfall
831f93fcec Refactor and Optimize... +...
This refactoring and optimization is by littlemousy:

Refactoring and optimize memory footprint. Fix broken "repeat
restrictions on region change", add "RLV_QUERY" and "RLV_RESPONSE"
messages for checking current rlv state, Add support for tracking
restrictions by script: use textString instead of key. Add StartIM
exception.
2014-06-28 04:03:23 +02:00
WendyStarfall
acf5fbccfe self destructing label
if we don't have label prims, the script cleans itself up; mouse found a
clever solution to determine if we have label prims for this case;
unfortunate is that the label text on the default collar design is
slightly off center but that was always the case for any other collar
design that had labels smaller or greater than a dozen characters and
weren't using tortured cylinders; otherwhise the same as stated in #254
2014-06-28 02:37:18 +02:00
WendyStarfall
4215ad440f self destructing bell
if we don't have a bell element, the script cleans itself up; designs
that have a bell element that shouldn't be hidden will have to give it a
~nohide tag; in theory users wouldn't install bell if there is no such
element present, in practice users ask where the bell is after they
installed the script on their design that simply didn't feature the
element, this should clean up script load and confusion
2014-06-28 02:36:37 +02:00
WendyStarfall
af3441224b Multisearch for RLV Folders
This feature is by Medea Destiny:

improved chat functionality for attaching folders. Now accepts two-level
search terms with a /. Example: <prefix>&&gag/rr will find the first
folder with "gag" in the title just as <prefix>&&gag would now, but
instead of attaching that, will look for a subfolder below that with
"rr" in the title, and attach that folder instead.

additional improvement: search with no result caused "no folder found"
message to be sent to kID, which is llGetOwner() in listen event,
changed to g_kAsyncMenuUser to return error message to person issuing
the search command.
2014-06-27 06:55:10 +02:00
WendyStarfall
f1e7e38a27 dynamic main
blanks out Animations and RLV buttons if those features are not
installed; the overall menu buttons stay consistent though and don't
jump around; also appearance will blank out if the script is /manually/
removed
2014-06-27 02:10:00 +02:00
WendyStarfall
159069b79b dedicated colorizer for titler
this is saves the need for a global colorizer in collars that are
otherwhise without coloable elements but feature a titler; this script
has also been moused ( = overall optimization by littlemousy)
2014-06-26 21:27:19 +02:00
WendyStarfall
5f02023d30 restrictive garble 2014-06-26 03:04:08 +02:00
WendyStarfall
1db01bb18d Merge pull request #249 from VirtualDisgrace/main
140624test
2014-06-24 19:22:04 +02:00
littlemousy
9a1cda82dc Please ignore - no real changes
Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main
2014-06-24 10:02:29 +01:00
Romka
845d0ae953 Update OpenCollar - rlvmain.lsl
I think it will be correctly
2014-06-24 06:01:12 +02:00
WendyStarfall
b98e982f82 manual link corrected
this link is received by owners after being added; thanks to Vulcan
Viper for reporting this
2014-06-24 06:01:11 +02:00
littlemousy
f188b3581a Added chat command for "Set Title" dialog 2014-06-24 06:01:11 +02:00
KireF
3a2190bdb8 Update OpenCollar - rlvtp.lsl 2014-06-24 06:01:10 +02:00
WendyStarfall
5593fbe120 Merge pull request #246 from RomkaSwallowtail/patch-109
Update OpenCollar - rlvmain.lsl
2014-06-24 04:41:33 +02:00
NorthGlenwalker
fb74b4b6b1 Update OpenCollar - rlvmisc.lsl
To add support of "Force Mouselook" using new RLV 2.9 API to rlvmisc
2014-06-19 14:34:54 +01:00
Romka
df3d15745c Update OpenCollar - rlvmain.lsl
I think it will be correctly
2014-06-09 19:17:25 +04:00
WendyStarfall
ea7c43d286 manual link corrected
this link is received by owners after being added; thanks to Vulcan
Viper for reporting this
2014-05-07 17:45:04 +02:00
WendyStarfall
dd66380a15 Merge pull request #8 from RomkaSwallowtail/patch-2
Update OpenCollarHUD - hudforcetp.lsl
2014-05-03 13:44:16 +02:00
WendyStarfall
67c08eaf03 Merge pull request #13 from RomkaSwallowtail/patch-8
Update OpenCollarHUD - hudoptions.lsl
2014-05-03 13:44:09 +02:00
WendyStarfall
8c59370dcf Merge pull request #11 from RomkaSwallowtail/patch-5
Update OpenCollarHUD - hudmenu.lsl
2014-05-03 13:44:00 +02:00
WendyStarfall
15812b4c4a Merge pull request #10 from RomkaSwallowtail/patch-4
Update OpenCollarHUD - hudmain.lsl
2014-05-03 13:43:51 +02:00
WendyStarfall
53b0183d5d Merge pull request #9 from RomkaSwallowtail/patch-3
Update OpenCollarHUD - hudleash.lsl
2014-05-03 13:43:43 +02:00
WendyStarfall
379d3711e0 Merge pull request #7 from RomkaSwallowtail/patch-1
Update OpenCollarHUD - Ownermenu.lsl   llGenerateKey()
2014-05-03 13:43:34 +02:00
WendyStarfall
cedd1cc07b 3.944 ready to ship
changelog moved to commit notice; readme summarized
-------------------------
- 3.940
- -----------------------
- - added a reset for menu; bugfixes (NG)
- - removed selection menu if owning only a single sub (NG)
- - updated the guide (NG)
- - proper headers and proper attribution in license (Wendy)
- - defaulting to white (Wendy)
-
- 3.910 Owners Hud bug fix
- ------------------------
- - Fixed rare bug with the hud erroring with "to many listeners" in
hudmain script. This was a known rare bug but has taken upto now to find
a fix. (NG)
- - Removed all Couple animation scripts and now pointing to the collar
for all animations. (NG)
-
- 3.900 Owners Hud Finished items:
- -------------------------------
- - New collar link direct to RLV main menu - Update linking into
Un/Dress menu instead, Hud section written in - Done (NG)
- - Requested hook into Un/Dress Menu from Joy, along with change the
main menu hook from "menuto" to "menu", this change will make the Owner
hud incompatible with <3.840 collars (Joy has removed the old "menuto"
code section as bad coding and rewritten) whole new "auth" system writen
into collar, hud changed to reflect this. - Done (NG)
- - Change llRegionSay and llSay -> llRegionSayTo - Done (NG)
- - Remove all the AutoTP code since we no longer use this option in the
Hud (Why did we have an option in the hud to turn AutoTP on and off?) -
Done (NG)
- - Adjusted the llOwnerSay string to be more descriptive by using
Key2Name - EG when access to a sub called sub123, the main collar menu
will respond - "Sending to Sub123 Resident's collar - menu" - Done (NG)
- - Added "post" command to leash menu to bring up the collar "post
menu" to display items to leash the collar to - Done (NG)
- - update cage rezzer script to use llRegionSayTo - Done (NG)
- - Add leash post to cager menu
- - Adjusted Animation timeout from the HUD from 30 to 60 seconds - Done
(NG)
- - Added update guide to the HUD to show changes - Done (NG)
- - Updated Camera script, but makes HUD and collar laggy, since not
used by most people it has been removed from HUD - Done (NG)
- - Changed Sensor scan to Region wide was set at 20M, and old system
limited to 96M maximum - Done (NG)
- - Added OwnerSay when trying to send a command to a collar not on the
Sim - Done (NG)
- - Added ForceSit and ForceStand to leash menu, seamed a good place for
them - Done (NG)
- - Added bound and unbound to leash menu as attach/detach standard #RLV
folder called bound - Done (NG)
- - Added OwnerMenu to enable 11 non standard commands to be added by
the user, and help guild - Done (NG)
- - Added chat command /7reset to clear the settings in the hud - Done
(NG)
- - Added Subs notecard to load sub name and key into hud from the Subs
menu - Done (NG)
- - Added Dump Subs, to dump subs and keys to chat to copy and paste to
the Subs notecard - Done (NG)
- - Spy menu buttons adjusted to layed out berrer - -Done (NG)
-
- 3.800 Owners hud finished items:
- ---------------------------------
- - Updated the RLV strip code in the cages to add the extra attach/wear
points - Done (NG)
- - New leash/unleash/follow Menu system - Done (NG)
- - Re do TP menu system working within SL limits - Done (NG)
- - Clean up orphaned code in the scripts. ---- Some clean up done. (NG)
- - Provide better commentary/documentation. ---- Extra help files added
to hud and comments in code (NG)
-
- - Arrange things to make it more easily for a broader spectrum of
people with various skill levels to contribute to this project!
- - Find someone else then wendy101 with greater skill in programming to
take on pull requests, keep code in-sync with their disk and the
in-world device.
- - - Found someone else yes, greater programming skill no! (NG)
2014-05-03 13:42:49 +02:00
WendyStarfall
fab41acf6b spare parts init
this is kept here intact for users who wish to compile 3.957 subspy from
source and want the corresponding owner hud feature, see link:

https://github.com/OpenCollar/OpenCollarUpdater/blob/main/SPARE_PARTS/OpenCollar%20-%20subspy.lsl
2014-05-03 13:12:19 +02:00
WendyStarfall
0d52204571 redundant with 3.960 collars 2014-05-03 13:08:15 +02:00
littlemousy
24a8bd8b82 Added chat command for "Set Title" dialog 2014-05-03 01:51:08 +01:00
WendyStarfall
5c9d865cc3 Merge pull request #239 from KireF/main
Update OpenCollar - rlvtp.lsl - further on the LM tp bug
2014-05-03 01:03:22 +02:00
KireF
b2249b5a0a Update OpenCollar - rlvtp.lsl 2014-05-03 00:43:39 +02:00
littlemousy
7040150674 Adds support for LMs with spaces in the name 2014-04-24 15:41:37 +01:00
WendyStarfall
cfbfad7fbe PATCH I 3.960 ready to ship
Fixes #227, #229, #230, #231, #232 and #236
2014-04-24 01:58:06 +02:00
littlemousy
6717ab0b47 Adds "add secowner by uuid" function 2014-04-23 13:45:31 +01:00
WendyStarfall
05287b2bb4 Sub AO 3.960 ready to ship 2014-04-23 10:39:18 +02:00
littlemousy
cb67d657b8 Fix for "request permission after notecard settings change" bug
Replaced bitwise & for logical && in test for getting permissions after new settings are received.  g_iBellOn is not a bool, it is an int reflecting auth level of last user to set the bell.
2014-04-19 23:48:11 +01:00
littlemousy
310b300429 Merge pull request #233 from RomkaSwallowtail/patch-107
Update OpenCollar - bell.lsl  bugfix #232
2014-04-18 11:48:03 +01:00
Romka
ba34d68996 Update OpenCollar - bell.lsl
add PERMISSION_TAKE_CONTROLS at on_rez
2014-04-18 12:23:18 +03:00
littlemousy
bb0b085a97 Fixes problem with initial state of g_iAllAlpha
Fixes issue with initial setting of g_iAllAlpha on collars with more than one side
2014-04-15 13:18:08 +01:00
littlemousy
4f5b5f67e2 Update OpenCollar - leash.lsl 2014-04-14 10:34:37 +01:00
littlemousy
277ff765c2 Fixed typo, Thanks Romka! 2014-04-14 10:31:31 +01:00
littlemousy
e990648cc4 Quick fix for pose and posture permissions
Quick fix for Pose lock and Posture lock being unsettable by wearer.  Full "Can't override setting of person with higher auth" will come later.
2014-04-14 09:49:47 +01:00
littlemousy
5f3aafcf9a Fixed "No anim when no name given" bug
Permission to animate was not being requested when a non-wearer triggered a couples anim without using a name.
2014-04-14 00:38:07 +01:00
littlemousy
3cf99cd00c Refresh RLV state on script start
#227 looks like a failure to get the RLV state when the script starts, probably down to script reset order.  Asking for it at state_entry seems to help on an isolate leash script reset.
2014-04-13 21:20:10 +01:00
WendyStarfall
5c80963a94 Merge pull request #226 from JoyStipe/main
final changes
2014-04-11 22:51:19 +02:00
JoyStipe
40191bd2e6 final changes
mixed last of Romka's edits that went to main release in, is all
2014-04-11 13:41:24 -07:00
WendyStarfall
82adccc892 3.960 ready to ship
#RLV History, HeightFix, Strict Leashing, lightning fast Trace, Relay
Buffer, RLV Viewer/Server fail-safe, fewer scripts, lower memory
consumption, add owners grid-wide, all new web guide
2014-04-11 18:44:45 +02:00
WendyStarfall
526a51a92d Updated urls 2014-04-11 13:47:09 +02:00
WendyStarfall
b42a5a6e2a Updated settings help url 2014-04-11 09:16:08 +02:00
WendyStarfall
3efc74f141 Updated help url 2014-04-11 02:36:58 +02:00
littlemousy
797a6dfde2 Changed chat commands to something a little more keyboard friendly 2014-04-10 00:47:32 +01:00
littlemousy
539c373ef9 Merge pull request #225 from RomkaSwallowtail/patch-106
Update OpenCollar - leashParticle.lsl 'chain' & 'rope' buttons don't work
2014-04-09 19:33:34 +01:00
Romka
8a993e1bc5 Update OpenCollar - leashParticle.lsl
Texture menu:
buttons 'chain' and 'rope' don't set texture name
2014-04-09 09:42:03 +03:00
WendyStarfall
5f9084e934 Merge pull request #224 from JoyStipe/main
defaults bugfix
2014-04-08 21:56:12 +02:00
JoyStipe
cfe8487dfc defaults bugfix
"leashDefaults_" is not a valid ScriptName in the current settings
format (does not exist), so the script's default list is never filled,
causing revert to oc defaults on any default button usage (chain, etc),
regardless of settings in NC. Removed all reference to the variable, as
it is only used for that & repaired particle (current used) script to
properly establish it's defaults.
2014-04-08 12:44:06 -07:00
WendyStarfall
be788baa05 Merge pull request #223 from RomkaSwallowtail/patch-105
Update OpenCollar - couples.lsl  iAuth bug
2014-04-08 21:41:11 +02:00
Romka
1b71f69cf3 Update OpenCollar - couples.lsl
wrong use iNum instead iAuth for SENSORDIALOG
2014-04-08 22:36:00 +03:00
WendyStarfall
3fa7982098 working clear all in badwords root
I needed help from littlemousy for this one; fixes #220
2014-04-08 20:47:16 +02:00
WendyStarfall
5acd27e840 Merge pull request #222 from RomkaSwallowtail/patch-104
Update OpenCollar - couples.lsl  bugfix #219
2014-04-08 20:44:46 +02:00
Romka
b66df5575e Update OpenCollar - couples.lsl
fix #219
2014-04-08 15:44:10 +03:00
WendyStarfall
bc529e8310 Merge pull request #221 from RomkaSwallowtail/patch-103
Update OpenCollar - leashParticle.lsl
2014-04-08 09:28:12 +02:00
Romka
fbbda9c339 Update OpenCollar - leashParticle.lsl 2014-04-08 10:19:56 +03:00
WendyStarfall
9a264706fb Added guide links; point 38 2014-04-08 08:34:33 +02:00
WendyStarfall
99f9164af5 Added guide links 2014-04-08 07:51:27 +02:00
WendyStarfall
810a398266 Added guide links; declutter 2014-04-08 07:35:19 +02:00
WendyStarfall
8b97b504c5 Added guide link 2014-04-08 06:49:53 +02:00
WendyStarfall
d12df2bd78 Added guide link; quick formatting 2014-04-08 06:33:45 +02:00
WendyStarfall
6298f05d5f Merge pull request #218 from JoyStipe/main
remenu
2014-04-08 06:16:06 +02:00
WendyStarfall
888f0167e0 Added guide link; check point 34 2014-04-08 06:08:06 +02:00
WendyStarfall
3b07003557 Added guide link; removed clutter 2014-04-08 05:58:00 +02:00
WendyStarfall
58bedd68bd Added guide link 2014-04-08 05:39:59 +02:00
WendyStarfall
3cabc863f0 Added guide link; less spaces 2014-04-08 05:33:46 +02:00
WendyStarfall
8af3ee8184 Added guide link 2014-04-08 05:23:18 +02:00
WendyStarfall
9a4262b6e7 Added guide link 2014-04-08 05:18:19 +02:00
WendyStarfall
9ec65810f8 Added guide link; minor formatting 2014-04-08 05:10:55 +02:00
JoyStipe
f921c272b3 remenu
*blushing* I forgot to put in a re-menu on the on/off buttons for
emitters
2014-04-07 20:05:52 -07:00
WendyStarfall
c540bb5f54 Added guide link; clear all button
the clear all button needs a re-menu yet
2014-04-08 05:02:14 +02:00
WendyStarfall
884c87647b Added guide link; some formatting 2014-04-08 04:28:02 +02:00
WendyStarfall
43452cc27a Added guide link; reversed checkboxes 2014-04-08 03:41:03 +02:00
WendyStarfall
02a079d2e9 mouse & wendy in-world;
added guide link; formatting; removed menu key title in dialog
2014-04-08 02:34:26 +02:00
WendyStarfall
eb001f2264 Added guide link; formatting 2014-04-08 01:48:52 +02:00
WendyStarfall
13cacfbfaf Merge pull request #217 from JoyStipe/main
bugfixes
2014-04-08 01:09:08 +02:00
JoyStipe
7bf3bfb5d5 bugfixes
Default list bug &
lsl convention crap issue define+set variable inside conditional test
2014-04-07 16:01:50 -07:00
WendyStarfall
2a96a5cca4 mouse & wendy in-world; anim
Added CTYPE; reworded prompts; added chat messages; kerrect bizarro
legassy gremmer nad spaling
2014-04-07 23:25:17 +02:00
WendyStarfall
b32b08873b Added CTYPE string and guide link 2014-04-07 22:54:27 +02:00
WendyStarfall
8017513b0d littlemousy in-world; anim
cancels offsets past the end of the range
2014-04-07 18:20:48 +02:00
WendyStarfall
b1e3aeacc3 Romka Swallowtail added to attribution 2014-04-07 17:06:24 +02:00
WendyStarfall
355da18e0a Merge pull request #214 from JoyStipe/main
multi-leash variant edits
2014-04-07 16:17:11 +02:00
JoyStipe
cf70b10a18 made the adjustments to/for the *latest* submit (pull 213)
just started with the changes in 213 from Romka & plugged in (reworked
as needed) my variations for multi-attachment leashes
2014-04-07 00:02:58 -07:00
JoyStipe
cfbb8d7713 adds
Added "instructions" for usage of this script; also added variable
definition (for prim description field) up top, to make it easier for
user to change that value.
2014-04-06 23:32:33 -07:00
WendyStarfall
4493b3d9bb Merge pull request #213 from RomkaSwallowtail/patch-102
Update OpenCollar - leashParticle.lsl  Errors HotFix
2014-04-07 08:03:29 +02:00
Romka
70d63697de Update OpenCollar - leashParticle.lsl
fix some typo and mistakes
2014-04-07 07:41:22 +03:00
WendyStarfall
316b487820 littlemousy in-world; anim
moved the sub ao url to the dialog prompt
2014-04-07 02:52:04 +02:00
WendyStarfall
c9d30b6d3f littlemousy in-world; anim
We are now able to adjust height offset with handy up and down arrows,
as well as store the individually selected scalar for the specified
pose. mouse kicks ass!
2014-04-07 01:47:59 +02:00
WendyStarfall
47a3b65634 3.960; sync IV
titler, label, main, leashParticle, update; build11
2014-04-06 17:20:18 +02:00
WendyStarfall
0d8d749038 Joy Stipe in-world; MultiLeash point 2014-04-06 17:09:15 +02:00
WendyStarfall
7e3f2bce37 Merge pull request #211 from RomkaSwallowtail/patch-100
Update OpenCollar - appearance.lsl  buttons
2014-04-06 17:07:36 +02:00
WendyStarfall
45501d505c Merge pull request #212 from RomkaSwallowtail/patch-101
Update OpenCollar - leashParticle.lsl   defaultsettings?
2014-04-06 17:06:53 +02:00
Romka
fbd9f427a8 Update OpenCollar - leashParticle.lsl
added reading default particles parameters from 'defaultsettings' notecard, if it's present.
changed method of save/restore particles settings.
refined treatment menu buttons.

tested on a cat =^_^=
2014-04-06 17:59:06 +03:00
WendyStarfall
827d37e493 Merge pull request #210 from RomkaSwallowtail/patch-99
Update OpenCollar - update.lsl BETA   broken link
2014-04-06 06:20:52 +02:00
WendyStarfall
59f2799864 Merge pull request #209 from RomkaSwallowtail/patch-98
Update OpenCollar - update.lsl  broken link
2014-04-06 06:20:39 +02:00
WendyStarfall
552ce53c68 Joy Stipe in-world; multi-point leash
Notes for Multi-point/Satellite leash particle systems (by Joy Stipe)
- Command TO satellites is
llRegionSayTO (Wearer) - so that ONLY the collar wearer's stuff hears
ON (HUD_CHANNEL) - see state-entry for specifics
3-part message, begins with KEY (UUID) of target to leash TO
+ "\\LeashUp\\" - exactly as in the quotes, case sensitive
+ settings as a comma-seperated string (CSV)
OR (string)NULL_KEY + "\\Unleash"
It is up to the satellite script to "interpret" the message
and make/remove leash particles
2014-04-06 01:58:45 +02:00
Romka
538c4855b3 Update OpenCollar - appearance.lsl
move "adjust" buttons to end
2014-04-05 20:27:27 +03:00
WendyStarfall
38d548de59 heightfix back as standard
attribution to the improved p4 scalars as of 3.960 BUILD10 goes to Karo
Weirsider!
2014-04-05 19:24:36 +02:00
WendyStarfall
7e28970209 merge of legacy heightfix with new source
as a marker: BUILD9 is the last variant of 3.960 without this code
2014-04-05 19:18:55 +02:00
Romka
80b7163de7 Update OpenCollar - update.lsl
broken link on the marketplace
2014-04-05 19:58:41 +03:00
Romka
10ad9faadf Update OpenCollar - update.lsl
broken link on the marketplace
2014-04-05 19:56:38 +03:00
WendyStarfall
b574bc24c7 dialog prompt adjusted for 3.960 bundles 2014-04-05 18:47:39 +02:00
WendyStarfall
8288c4fde5 making the url easier to spot 2014-04-05 18:41:58 +02:00
WendyStarfall
ee6f314fe3 these two fonts play fine on cut boxes;
while they may not ideally align on cut cylinders, it doesn't break
anything as users can just flip to a different font
2014-04-04 23:48:33 +02:00
WendyStarfall
89637c867d ketchup & nests snuggly in 3.960s;
for 3.950s, please use the variation before this commit
2014-04-04 23:45:01 +02:00
WendyStarfall
7c79d2ac72 we keep heightscalars just in case;
also, I'm trying to get rid of script asset artifacts appearing usually
as 'Old Script', for the spy module, please see
ce6cdccd0c
2014-04-04 23:39:34 +02:00
WendyStarfall
2e3977f223 littlemousy in-world; titler
this is if a prim type in >3.960 was no box, so a user who had a
deformed sphere or other type displaying text, would end up having this
text forever and ever, thanks mousekin!!
2014-04-04 22:48:50 +02:00
WendyStarfall
a1cdf1c4a3 mouse & wendy in-world; titler
we add as requirement that the floattext prim also must be a box because
of behaviour in size, slicing and rotation; this is OK we had always
boxes in our stock design, recommended and showed box on google code and
have it stated on our new guide as well - better than torturing poor
spheres or tori? <3
2014-04-04 22:26:05 +02:00
WendyStarfall
da2c42b898 Merge pull request #208 from RomkaSwallowtail/patch-97
Update OpenCollar - titler.lsl   BUG!  'no textprim' message don't appear
2014-04-04 21:30:25 +02:00
Romka
c3333de6bb Update OpenCollar - titler.lsl
change Titler menu if no textprim
2014-04-04 23:18:03 +04:00
Romka
7e87dff5f2 Update OpenCollarHUD - hudoptions.lsl
use llGenerateKey() instead Shortkey()
2014-04-04 14:52:55 +04:00
Romka
27c91e47d3 Update OpenCollarHUD - hudmenu.lsl
use llGenerateKey() instead Shortkey()
2014-04-04 14:48:34 +04:00
Romka
8b2bb559bf Update OpenCollarHUD - hudmain.lsl 2014-04-04 14:47:12 +04:00
Romka
933ab8ba89 Update OpenCollarHUD - hudleash.lsl
use llGenerateKey() instead Shortkey()
2014-04-04 14:45:49 +04:00
Romka
e048af5f43 Update OpenCollarHUD - hudforcetp.lsl
use llGenerateKey() instead Shortkey()
2014-04-04 14:45:02 +04:00
Romka
7eb0c5851c Update OpenCollarHUD - Ownermenu.lsl
use llGenerateKey() instead Shortkey()
2014-04-04 14:43:25 +04:00
WendyStarfall
75b85b75b9 Merge pull request #207 from RomkaSwallowtail/patch-96
Update OpenCollar - update.lsl
2014-04-03 23:14:33 +02:00
Romka
9897434952 Update OpenCollar - update.lsl 2014-04-03 23:46:08 +04:00
WendyStarfall
cea22b63ee 3.960; sync III
main, update
2014-04-03 21:27:34 +02:00
WendyStarfall
d554677748 littlemousy in-world; main 2014-04-03 21:25:00 +02:00
WendyStarfall
d873f494e9 Merge pull request #205 from RomkaSwallowtail/patch-94
Update OpenCollar - update.lsl   MENUNAME_RESPONSE
2014-04-03 21:22:07 +02:00
Romka
d483f26ec4 Update OpenCollar - update.lsl 2014-04-03 22:46:41 +04:00
Romka
53d4fe33f9 Update OpenCollar - update.lsl
no need MENUNAME_RESPONSE for Help/about menu, because it is not processed in main script.
2014-04-03 22:23:54 +04:00
WendyStarfall
cb3d118175 3.960; sync II
badwords, bell, camera, garble, label, timer, titler
2014-04-03 20:03:13 +02:00
WendyStarfall
b03e104cf6 3.960; sync I
anim, appearance, auth, leash, main, rlvmain, settings
2014-04-03 19:32:28 +02:00
WendyStarfall
3f7a4b9298 Merge pull request #204 from RomkaSwallowtail/patch-93
Update OpenCollar - settings.lsl MENUNAME_RESPONSE
2014-04-03 19:13:56 +02:00
WendyStarfall
dfbfcbe8fd Merge pull request #203 from RomkaSwallowtail/patch-92
Update OpenCollar - leash.lsl  MENUNAME_RESPONSE
2014-04-03 19:13:49 +02:00
WendyStarfall
7148b1baf6 Merge pull request #202 from RomkaSwallowtail/patch-91
Update OpenCollar - auth.lsl  MENUNAME_RESPONSE
2014-04-03 19:13:43 +02:00
WendyStarfall
71c4a72a5d Merge pull request #201 from RomkaSwallowtail/patch-90
Update OpenCollar - appearance.lsl  MENUNAME_RESPONSE
2014-04-03 19:13:36 +02:00
WendyStarfall
9aeb43f386 Merge pull request #200 from RomkaSwallowtail/patch-89
Update OpenCollar - anim.lsl   MENUNAME_RESPONSE
2014-04-03 19:13:29 +02:00
WendyStarfall
faea2b4f53 Merge pull request #199 from RomkaSwallowtail/patch-88
OpenCollar - rlvmain.lsl  bug:  RLV submenu don't update on "Fix Menus"
2014-04-03 19:13:18 +02:00
Romka
b28884d736 Update OpenCollar - settings.lsl 2014-04-03 01:14:59 +03:00
Romka
015e16171a Update OpenCollar - leash.lsl
no need MENUNAME_RESPONSE for Main menu, because it is not processed in main script.
2014-04-03 01:01:49 +03:00
Romka
508b1b8fcc Update OpenCollar - auth.lsl
no need MENUNAME_RESPONSE for Main menu, because it is not processed in main script.
2014-04-03 01:00:36 +03:00
Romka
daea681137 Update OpenCollar - appearance.lsl
no need MENUNAME_RESPONSE for Main menu, because it is not processed in main script.
2014-04-03 00:59:24 +03:00
Romka
623b010e24 Update OpenCollar - anim.lsl
no need MENUNAME_RESPONSE for Main menu, because it is not processed in main script.
2014-04-03 00:58:29 +03:00
Romka
047b38e638 Update OpenCollar - rlvmain.lsl
no need MENUNAME_RESPONSE for Main menu, because it is not processed in main script.

add update submenu for "Fix Menus"
2014-04-03 00:52:00 +03:00
WendyStarfall
23d1a52d4e Merge pull request #198 from RomkaSwallowtail/patch-87
Update OpenCollar - main.lsl  Global_trace !
2014-04-02 23:34:51 +02:00
WendyStarfall
493e45383f BETA 3.959 ready to ship 2014-04-02 23:25:45 +02:00
Romka
aa4aff621e Update OpenCollar - main.lsl
fixes Trace button changing state on fix menus
2014-04-03 00:25:18 +03:00
WendyStarfall
84c1448cf1 fixes lock button changing state on fix menus 2014-04-02 22:16:13 +02:00
WendyStarfall
8537ff22f1 prepping 3.959; sync III
auth, garble, leash, main
2014-04-02 20:02:25 +02:00
WendyStarfall
98e4f44092 littlemousy in-world; garble
and we have a remenu (that was quick!)
2014-04-02 18:15:30 +02:00
WendyStarfall
25a53b3d07 boxes instead on/off
we need a remenu here yet
2014-04-02 18:12:57 +02:00
WendyStarfall
ea7580d5a4 fancier boxes for trace 2014-04-02 18:04:19 +02:00
WendyStarfall
85ee9d5e74 mouse & wendy in-world; main 2014-04-02 17:19:51 +02:00
WendyStarfall
8c3660e9f1 littlemousy in-world; auth 2014-04-02 16:51:09 +02:00
WendyStarfall
550e082f75 tidy up; debugs 2014-04-01 11:01:12 +02:00
WendyStarfall
ecb5897518 ketchup; grabbypost 2014-04-01 10:47:10 +02:00
WendyStarfall
8884622f6d ketchup; leashholder 2014-04-01 10:42:01 +02:00
WendyStarfall
4f4d1fbba0 attribution to littlemousy
and attribution to a few legacy members, in this case Lulu Pink for
rewriting the old leash, Garvin Twine for the initial
leash/leashParticle split and Cleo Collins for the bell; OpenCollar
Organiser was removed as it is "the organization" and not actually a
legal entity like an individual
2014-04-01 04:28:56 +02:00
WendyStarfall
522a9c470b ketchup; Master 2014-04-01 04:17:36 +02:00
WendyStarfall
71b2806a31 ketchup; Dialog 2014-04-01 04:16:53 +02:00
WendyStarfall
e20fadd5ec ketchup; BundleGiver 2014-04-01 04:14:07 +02:00
WendyStarfall
fc882c1882 ketchup; UpdateShim 2014-04-01 04:12:13 +02:00
WendyStarfall
03968c9868 grooming & ketchup; update 2014-04-01 04:09:34 +02:00
WendyStarfall
01962f2114 grooming & ketchup; update
//3.935 Bugfix for sending collarversion to menu script, 1 and 0 instead
of TRUE and FALSE;
//3.940 doesn't give regular updaters, informs user where to get an
updater, and get updater button gives current updater
2014-04-01 04:04:54 +02:00
WendyStarfall
1a855f8050 grooming & ketchup; titler
// SatomiAhn Initial support for llTextBox.
// Romka Swallowtail add some buttons =^_^=
2014-04-01 04:02:28 +02:00
WendyStarfall
d86f31babd bbq sauce; timer 2014-04-01 03:56:02 +02:00
WendyStarfall
313f1266ac grooming & ketchup; texture
//3.936 reset script on owner change
//Version 3.934 New Feature. Allow textures to be specified in a texture
notecard. Notecard must contain textures on a separate line per texture,
in the format name,uuid. -MD

//Version 3.935 Added support for texture notecard named textures_custom
which will be read instead of the standard texture notecard if present.
Also put MENUNAME_RESPONSE into onrez in place of reset. This menu
building system is... uh... yeah. -MD

//Version 3.935 removed llToLower() in GetLongName(),
GetElementHasTexs() and BuildTexButtons() functions. This commit makes
textureable elements case sensitive; we need that if textures are
exclusive to specific elements on the collar otherwhise those textures
would have to be named like the element but in lower caps - Karo
Weirsider
// Flip side, now it relies on them being the same. Risk of breaking
some existing content here? I'm inclined to say it would be better to
put llToLower on both sides of the test comparisons, no? -Medea Destiny.
2014-04-01 03:51:13 +02:00
WendyStarfall
617d4e6caf grooming & ketchup; settings
//3.936 Fixed up multiline and multi-item cache dump to text to properly
use new line characters at the start of each line so that the output
list is properly NOT concatenated into a single line per script despite
continuation characters.
//3.934 Added a load defaults button to menu to user to reload the
settings from the defaults notecard without having to open the notecard,
edit it, and save it again, as script is only being reset on a changed
owner. This allows people to restore settings more easily, for example
if they change appearance or if they runaway and want to restore the
owner settings from the defaults card. -MD
//3.934 Menu Changes: the help/debug > settings setup removed, now help
goes into the help/about menu and these functions appear in the Options
menu under main. For the sake of simplicity, Fix Menus is now handled
here, by using llResetOtherScript(); -MD
2014-04-01 03:48:05 +02:00
WendyStarfall
db62b8e51a grooming & ketchup; rlvundress
// 3.936 New feature! Smartstrip. When smartstrip is activated, the
standard clothing removal folder will use detachallthis instead of
remoutfit, to remove everything in the same folder or child folders of
the item being removed. For people with a sensibly set up #RLV, this
makes this a far more useful option! Because lots of people *don't* have
a #RLV folder set up for this, we also have a notecard to give to help
people with setting up folders. Yay! Smartstrip gets turned on and off
via the menus or via the chat commands "smartstrip on" and "smartstrip
off". Owners and Wearers can both change this setting. However! We also
have a g_kSmartUser key. If someone other an Owner or Wearer selects it,
their key gets dumped into this value, which is not saved. This allows
other people to activate it for themselves only, for that session only.
As an additional bonus, removing clothing can now be accessed by an easy
chat command, "strip (item)" or "strip all". For now, I haven't changed
the behaviour of strip all, however the code is there commented out if
we think it's a good idea for strip all to use smartstrip.
2014-04-01 03:44:34 +02:00
WendyStarfall
da16352eb2 grooming & ketchup; rlvtp
//3.004 - adding "accepttp" support.  No button, just automatically
turned on for owner.
//3.524+ - moving accepttp to the exception script.
2014-04-01 03:39:25 +02:00
WendyStarfall
30906aff18 ketchup; rlvtalk 2014-04-01 03:33:25 +02:00
WendyStarfall
cfe716874c grooming & ketchup; rlvsit
//3.928 -- addition to 3.925, sensor is called in two separate places
(ugh), fix to apply 3.925 change to both. Spotted by Edgar Yven. --
3.925 Revision Proposal, Medea Destiny. ISSUE: Sit Now button will not
return all objects. What's going on? It's a bit of an oddity about the
way sensors work. The SCRIPTED sensor flag only returns active scripted
items, i.e. scripts actually doing something like listening. A
work-around that seems to work is to search for PASSIVE|SCRIPTED in the
sensor, then filter by llDetectedType, which gives SCRIPTED for
non-active scripts. I've implemented that in this script. The downside
is you'll get fewer objects returned to the SIT_NOW menu as the sensor
will pick up the nearest 16 PASSIVE or SCRIPTED items, so you'll have to
be nearer to the object. So, pro: you'll now be able to find dumb sit
scripts. Con: you'll have to be nearer the item. Is this a good
trade-off?
2014-04-01 03:30:24 +02:00
WendyStarfall
899933944c ketchup; rlvrelay 2014-04-01 03:26:30 +02:00
WendyStarfall
98efeb74a4 ketchup; rlvmisc 2014-04-01 03:20:44 +02:00
WendyStarfall
864a1e49dd grooming & ketchup; rlvmain
//3.934: Something situation could cause the viewer check to get stuck.
Not clear what, but I've thrown in a few robustness measures that
hopefully should sort that out.
2014-04-01 03:18:24 +02:00
WendyStarfall
6051e0747d grooming & ketchup; rlvfolders
//3.934 removed many newlines from browse folder prompts, it was getting
ridiculously big! -MD
2014-04-01 03:13:17 +02:00
WendyStarfall
f21d7390c2 OCD grooming & ketchup; rlvex 2014-04-01 03:11:17 +02:00
WendyStarfall
48f48b0531 grooming & ketchup; rlvex
//3.959 Medea/Lucian: g_iAuth was not being set in menu path to adding
user, resulting in no auth value for return menu. Added  g_iAuth=auth;
to fetchAvi command.

//3.936 Bugfixes:  1. Reported issue, message about UUID not found when
trying to add other. I haven't found this to be repeatable, but I have
managed to get it to do it once. Increased llRequestAgentInfo timer to 4
seconds from 0.5, because 0.5 may simply be too short to reliably get a
response from the dataserver, particularly in a laggy sim. Hopefully
this will remove the issue, but let's monitor this.  2. Reported issue
in secowner exceptions not being set. Typo in settings was looking for
auth_secowner rather than auth_secowners in LM_SETTINGS_RESPONSE, so
secowners list was not getting filled.

//3.934 notes. I've overhauled the menu appearance as it wasn't really
that easy to understand, following the RLV terminology which is a bit of
a headache for scripters, let alone users. Descriptions are clearer and
now represent the current state, and we use unicode ☐ and ☒ to indicate
selected/deselected state on the buttons, common with unicode
enhancements to other menus. ALL buttons indicators swapped to make
clearer the effect of pressing them, and the person to whom the
exceptions will be added/removed is now named at the top of the menu.
Finally, I've cleared up remenuing a little. When someone who is not an
owner/secowner is set to default and removed from the list, we now
return the personlist, and when a new person is added, we remenu. -
Medea

//3.934 notes. Removed SetOwnerExs as it's never called. Added a check
to setAllExs to  avoid setting exceptions for wearer (for example if the
wearer is set as an owner) as they're pointless. - Medea
2014-04-01 03:09:03 +02:00
WendyStarfall
ea697a71eb grooming & ketchup; main
//3.934d fix for kID instead of kAv for inventory giving. Duh.

// 3.934 reimplemented Menuto function for hud channel. This seems to
have been lost by the wayside in the interface channel mods. I've added
a check to see if the object owner is the same as the menuto target key,
as this will mean a new auth is not required and saves double authing in
that situation (probably the most common). -MD
// 3.934 Menu changes. help/debug is now replaced with Options menu,
operated from the settings script. Refresh menus is now done from the
Options menu in settings, using llResetOtherScript instead of from here,
to keep things simple. Info button in main menu is now a Help/About
menu, which has links to wiki in a button in it, and gets the various
help buttons formerly in the help/debug menu. Update script now sends
the current version and whether there's an update available. The actual
version number is now reported in main and in help/about, and the prompt
text for all three menus is returned by a function now instead of stored
in a list, which allows us to keep up to date, and notify in help/about
prompt when an update is available.  -MD
//3.934 Added button in Help/About to give license notecard and another
to open Defaultsettings help URL.
2014-04-01 03:07:13 +02:00
WendyStarfall
3941567395 grooming & ketchup; listener
//3.941 - littlemousy - combined listen script with touch script, so all
input to collar goes through a single script.  Should save us some
memory.
2014-04-01 03:05:32 +02:00
WendyStarfall
ee0a029a52 grooming & ketchup; leashParticle
// ADDED "LIFE" MENU FUNCTION TO LEASH MENU FOR ST ("Slave Trash"
version) by Jean Severine 2014-01-25

//Split from the leash script in April 2010 by Garvin Twine

//3.934 replace g_sParticleTextureID with texture name if NULL_KEY. This
is for non full perms textures, which return a null key, giving a blank
particle. This should still work for linked leash points if the texture
is added to the leash point as well.
2014-04-01 03:02:59 +02:00
WendyStarfall
a249eb56e4 grooming & ketchup; leash
// -------------------------------
// Original leash scripting & ongoing updates
// Author: Nandana Singh
// Date: Oct. 18, 2008
// -------------------------------
// Rewrite & various updates
// Author: Lulu Pink
// -------------------------------
// Various updates
// Author: Garvin Twine
// -------------------------------
// Edited & Added integration for particle-system to OC Settings &
Dialog Subsystems (3.421)
// Author: Joy Stipe
// -------------------------------
//April 2010 splitting of the particle part into its own script April
2010
// Author: Garvin Twine
// -------------------------------
2014-04-01 02:56:01 +02:00
WendyStarfall
7491480071 grooming & ketchup; label
// SatomiAhn Initial support for llTextBox.
2014-04-01 02:48:39 +02:00
WendyStarfall
45c0179892 ketchup; hide 2014-04-01 02:47:38 +02:00
WendyStarfall
8938b22249 grooming & ketchup; garble
//v3.601 by Joy Stipe 2010/07/28
2014-04-01 02:46:28 +02:00
WendyStarfall
65ba7f5f53 grooming & ketchup; dialog
// SatomiAhn Initial support for llTextBox.
//3.951 <512 not <513 for dialog message length. AAAARGH. *bangs head
against wall* -MD
2014-04-01 02:44:09 +02:00
WendyStarfall
e845317642 ketchup; couples 2014-04-01 02:41:38 +02:00
WendyStarfall
b2f719ea2f ketchup; color 2014-04-01 02:40:56 +02:00
WendyStarfall
da94d7bd19 ketchup; cleanup 2014-04-01 02:39:55 +02:00
WendyStarfall
0593345a43 grooming & ketchup; camera
//3.927 MD: added perms check before attempting to clear camera params
in case of reset when collar not worn.
2014-04-01 02:38:17 +02:00
WendyStarfall
45a81b623d grooming & ketchup; bell
//3.927 MD: Update g_kOwners in on_rez event, as we don't necessarily
reset this script and currently we may get failed permission requests
targeting the wrong avatar! See line 513. Added check for runaway, if
bell should be hidden, sleep for 4 seconds then re-hide the bell
elements. This is to avoid other scripts resetting visibility. See line
712. Added changed event: INVENTORY changes mean more sounds may be
available, so redo prepareSounds(), and LINK to redo
BuildBellElementList(). See line 753

//Collar Cuff Menu

//=============================================================================
//== OC Bell Plugin - Adds bell sounds while moving to the collar,
allows to adjust vol, sound and timing
//== as well to switch them off and hide the bell
//==
//== Note to Designers
//== Plugin offers option to show/hide the bell if there are prims named
"Bell"
//== Plugin has a few default sounds, you can add more by putting them
in the collar. The plugin scan for sounds starting with "bell_", f.i.
"bell_kitty1"
//==
//== 2009-01-30 Cleo Collins - 1. draft
//==
//==

//=============================================================================
2014-04-01 02:35:56 +02:00
WendyStarfall
59e9c9b9b4 grooming & ketchup; badwords
// SatomiAhn Initial support for llTextBox.
2014-04-01 02:17:27 +02:00
WendyStarfall
4d04b8e379 grooming & ketchup; auth
//3.934 submenu name changed to "access" for menu updates and chat
command for submenu updated to match (now works with both <prefix>owners
and <prefix>access. Much bigger update to this script is in the works,
but I think that's all that's needed for this release.
2014-04-01 02:16:05 +02:00
WendyStarfall
22547ddd26 ketchup; appearance 2014-04-01 02:14:52 +02:00
WendyStarfall
b0144acfc0 grooming & ketchup; anim
//3.940 gives AO from inventory only

//3.936 bugfix: out of order command handling in dialog response was
sending some commands back to child scripts. Also, added script reset on
changed owner.

//3.935   Added support for posture collar neck locking using provided
~PostureOverride animation, or another animation named in
g_sPostureAnim. Supplied animation locks head and neck and priority 6 to
ensure overriding. If the animation is found in inventory, animation
menu will have a "☐Posture" as button defined in POSTURE. Button will
not show if animation is not present. Also responds to chat commands
"posture on" and "posture off". Posture is saved in settings with the
token (g_sPostureToke) posture=1 when active, and read back from
settings/defaultsettings notecard when settings are sent by settings
script. Posture is reposed when animations refreshed and when
permissions are granted (i.e. on attach) if g_iPosture is TRUE.

//3.935 Removed reset on rez. CreateAnimList now happens if
g_iNumberOfAnims changes instead of each rez. Much more sensible.
requestperm() removed (let's not have single use functions! Bad!
Naughty!) and permission requested in attach event instead, saving the
unnecessary if(llGetAttached()); call. run_time_permissions is added to
allow restoring posture. Also, good practice to have it. Probably should
store permission in an integer to save llGetPermissions checks. We
should consider if we want to refresh poses here rather than having all
poses scrapped on rez as current. Added remenuing to the animation menu
where sensible.

//2009-03-22, Lulu Pink, animlock - issue 367
2014-04-01 02:13:52 +02:00
WendyStarfall
a63a26f8bc This is the wonderful thing about espionage;
nothing exists anymore. - Sir William Samuel Stephenson
2014-04-01 01:34:47 +02:00
WendyStarfall
7fcc8c3051 Merge pull request #193 from RomkaSwallowtail/patch-85
Update OpenCollar - timer.lsl  WEARERLOCKEDOUT
2014-04-01 00:48:49 +02:00
WendyStarfall
0a68431a9e installer; new main menu setup
we no longer need an extra menu and master lock as both elements are now
combined to "main"
2014-04-01 00:33:37 +02:00
WendyStarfall
66bb6bc820 prepping 3.959; in-world sync II
auth, couples, label, rlvfolders, rlvundress, settings
2014-04-01 00:00:23 +02:00
littlemousy
1e29c8f16f removed redundant button handling code 2014-03-31 19:06:49 +01:00
littlemousy
9fbc60b866 Fixed endless anims bug in new timer setup 2014-03-31 19:02:44 +01:00
littlemousy
0b8dea9e74 Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main 2014-03-31 18:59:37 +01:00
WendyStarfall
d9b888969a box labels default to Serif 2
which would be the more common case; for designs that need LCD like
colony or tech, I will adjust the defaultsettings cards
2014-03-31 14:52:46 +02:00
WendyStarfall
c20a0fc6da littlemousy in-world; settings 2014-03-31 14:31:13 +02:00
littlemousy
a5345b3bb1 changed script name to reflect renamed/merged menu script 2014-03-31 13:21:14 +01:00
littlemousy
06c4d01fc9 Fixed update bug 2014-03-31 13:03:43 +01:00
littlemousy
b7a88795be Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main 2014-03-31 13:02:13 +01:00
littlemousy
602d93959c Add owner by key
Add owner by key

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2014-03-31 12:59:21 +01:00
WendyStarfall
fb663ad3c2 Merge pull request #194 from KeiyraAeon/patch-1
Dialog typo - rlvundress.lsl
2014-03-31 11:50:11 +02:00
KeiyraAeon
2c38b0be6f rlvundress.lsl dialog typo
Since the dawn of time, "attachEments" has been the bane of grammar enthusiasts everywhere.
2014-03-30 18:20:02 -04:00
littlemousy
89e76f2dae merged main and lock 2014-03-30 21:29:47 +01:00
Romka
c6b925a80e Update OpenCollar - timer.lsl 2014-03-29 20:54:44 +03:00
WendyStarfall
11426075b6 littlemousy in-world; leash 2014-03-29 05:00:38 +01:00
WendyStarfall
5ddb57292a littlemousy in-world; leashParticle 2014-03-29 05:00:00 +01:00
WendyStarfall
c50b5533e2 Revert "Moved absent leasher detect code from leashparticle to leash"
This reverts commit 8cc3f67f86.
2014-03-29 04:37:14 +01:00
WendyStarfall
7782562e59 mouse & wendy in-world; titler 2014-03-29 04:19:29 +01:00
littlemousy
975bd8ef19 Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main 2014-03-29 02:57:40 +00:00
littlemousy
02f8ba617a Moved absent leasher detect code from leashparticle to leash 2014-03-29 02:49:00 +00:00
WendyStarfall
e8de1c5b6d copyright; date 2014-03-29 02:02:13 +01:00
WendyStarfall
7c02656731 prepping 3.959; in-world sync I
rlvrelay, rlvex, lock, titler
2014-03-29 01:54:36 +01:00
WendyStarfall
5537514464 Merge pull request #192 from RomkaSwallowtail/patch-84
Update OpenCollar - lock.lsl   BUG, if changed "Lock" prims links
2014-03-29 01:49:05 +01:00
WendyStarfall
0e053f1b70 Satomi Ahn in-world; rlvrelay 2014-03-29 00:03:54 +01:00
littlemousy
64a2057115 Added "remove restrictions when leasher out of range" code 2014-03-28 19:47:45 +00:00
Romka
f156fa99a6 Update OpenCollar - lock.lsl
I link "padlock" to collar, but the script did not see it until script was reset.
need rebuild LockElementList if links changed.
2014-03-28 19:04:30 +03:00
littlemousy
0e00f91104 Added check on strict mode active when setting restrictions (Duhhh) 2014-03-28 14:33:57 +00:00
WendyStarfall
1f9c5c6398 Merge pull request #190 from RomkaSwallowtail/patch-83
Update OpenCollar - titler.lsl  fix loses the auth on relog
2014-03-27 23:43:20 +01:00
Romka
47726914f9 Update OpenCollar - titler.lsl
increased to 0.5 default text offset 
add save and restore last auth from settings
2014-03-27 23:51:55 +03:00
WendyStarfall
c6d139ec3c Satomi Ahn in-world; rlvrelay
"Change of queue cleaning policy in relay ask mode: when memory is full,
oldest request is dropped instead of newest."
2014-03-26 23:39:43 +01:00
WendyStarfall
ac93bbb6ce Medea Destiny in-world; rlvex
"g_iAuth was not being set in menu path to adding user, resulting in no
auth value for return menu. Added  g_iAuth=auth; to fetchAvi command";
bug found by Lucian Underwood
2014-03-26 20:38:41 +01:00
littlemousy
3a05cc0c9a Merge pull request #188 from RomkaSwallowtail/patch-82
Update OpenCollar - leash.lsl length set 30m don't work
2014-03-26 18:37:32 +00:00
Romka
555f137cd0 Update OpenCollar - leash.lsl
fix max length 30 m
2014-03-26 19:25:58 +03:00
WendyStarfall
35069c1b90 BETA 3.958 ready to ship 2014-03-26 04:21:52 +01:00
WendyStarfall
b56308c666 Satomi Ahn in-world; rlvrelay
adds a memory check patch
2014-03-26 02:22:09 +01:00
WendyStarfall
1cfb094c31 in-world sync; cleanup 2014-03-26 01:00:10 +01:00
littlemousy
c93e19b3ee added third test, for "!totallytransparent" as string not uuid 2014-03-25 23:51:55 +00:00
littlemousy
2f3047cc04 Replaced missing notify message for wearer 2014-03-25 21:33:05 +00:00
WendyStarfall
02b4c6b2a6 prepping 3.958; OCD check and headers 2014-03-25 17:40:10 +01:00
littlemousy
c00070e3de Merge pull request #175 from RomkaSwallowtail/patch-69
Update OpenCollar - couples.lsl   I correct my big mistake
2014-03-25 09:34:44 +00:00
littlemousy
c70f0d8492 Merge pull request #176 from RomkaSwallowtail/patch-70
Update OpenCollar - garble.lsl   I correct my big mistake
2014-03-25 09:34:37 +00:00
littlemousy
c3155465c6 Merge pull request #177 from RomkaSwallowtail/patch-71
Update OpenCollar - leash.lsl   I correct my big mistake
2014-03-25 09:34:29 +00:00
littlemousy
a9aa491f1c Merge pull request #178 from RomkaSwallowtail/patch-72
Update OpenCollar - lock.lsl   I correct my big mistake
2014-03-25 09:34:22 +00:00
littlemousy
1e64146033 Merge pull request #179 from RomkaSwallowtail/patch-73
Update OpenCollar - rlvex.lsl   I correct my big mistake
2014-03-25 09:34:14 +00:00
littlemousy
340b7850b8 Merge pull request #180 from RomkaSwallowtail/patch-74
Update OpenCollar - rlvfolders.lsl    corrected my big mistake
2014-03-25 09:34:01 +00:00
littlemousy
bc0499ba41 Merge pull request #181 from RomkaSwallowtail/patch-75
Update OpenCollar - rlvmain.lsl corrected my big mistake
2014-03-25 09:33:51 +00:00
littlemousy
5f7ac5ddc6 Merge pull request #182 from RomkaSwallowtail/patch-76
Update OpenCollar - rlvmisc.lsl  corrected my big mistake
2014-03-25 09:33:42 +00:00
littlemousy
2b4b32cbc1 Merge pull request #183 from RomkaSwallowtail/patch-77
Update OpenCollar - rlvrelay.lsl  corrected my big mistake
2014-03-25 09:33:33 +00:00
littlemousy
440043601c Merge pull request #184 from RomkaSwallowtail/patch-78
Update OpenCollar - rlvsit.lsl  corrected my big mistake
2014-03-25 09:33:24 +00:00
littlemousy
2cf1534f26 Merge pull request #185 from RomkaSwallowtail/patch-79
Update OpenCollar - rlvtalk.lsl  corrected my big mistake
2014-03-25 09:33:16 +00:00
littlemousy
7a573ead61 Merge pull request #186 from RomkaSwallowtail/patch-80
Update OpenCollar - rlvtp.lsl  corrected my big mistake
2014-03-25 09:33:02 +00:00
littlemousy
8dc612fe39 Merge pull request #187 from RomkaSwallowtail/patch-81
Update OpenCollar - rlvundress.lsl   corrected my big mistake
2014-03-25 09:32:47 +00:00
Romka
8447a270cc Update OpenCollar - rlvundress.lsl 2014-03-25 12:24:08 +03:00
Romka
5c0abd7383 Update OpenCollar - rlvtp.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:22:57 +03:00
Romka
2f3c068dd8 Update OpenCollar - rlvtalk.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:22:06 +03:00
Romka
5d3f5942a0 Update OpenCollar - rlvsit.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:21:20 +03:00
Romka
04b01e3458 Update OpenCollar - rlvrelay.lsl 2014-03-25 12:20:24 +03:00
Romka
f6fc79c804 Update OpenCollar - rlvmisc.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:19:24 +03:00
Romka
2a91b4d6e4 Update OpenCollar - rlvmain.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:18:31 +03:00
Romka
a35abe020f Update OpenCollar - rlvfolders.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:16:21 +03:00
Romka
17afd8f6bb Update OpenCollar - rlvex.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:15:16 +03:00
Romka
21dcbc4de1 Update OpenCollar - lock.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:14:11 +03:00
Romka
1b7238f9ac Update OpenCollar - leash.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:13:08 +03:00
Romka
20b178f89a Update OpenCollar - garble.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:11:40 +03:00
Romka
e2f376bd8f Update OpenCollar - couples.lsl
RLV commands not work properly without NULL_KEYs
2014-03-25 12:09:38 +03:00
littlemousy
e2dc488683 Oops, forgot to replace constant from testing with variable in loop
Now also replaces default testure, to fix up collars broken by the previous version
2014-03-25 01:22:21 +00:00
WendyStarfall
d5d053a293 BETA 3.957 ready to ship 2014-03-25 00:36:49 +01:00
WendyStarfall
5bd8cdeb5b just commented out the debug line for free memory 2014-03-24 23:20:24 +01:00
WendyStarfall
c3516e7bcb ready for 3.960 2014-03-24 23:08:59 +01:00
WendyStarfall
994d25c01d #RLV and Relay guides are embedded
this is just to be tidy; in-world we have the #RLV and Relay help
notecards embedded in the OpenCollar Guide
2014-03-24 23:04:08 +01:00
WendyStarfall
5f32c00391 cleaning up at 3.957
merged: dialog now also plays getavi dialogs; merged: listener takes
care of touch events; what we don't uninstall anymore by default are old
couple animations just as we don't install or override new couple
animations or the coupleanims notecard
2014-03-24 23:00:05 +01:00
WendyStarfall
4873b49a33 hovertext becomes titler
in installers, menus and now also the script itself
2014-03-24 22:49:54 +01:00
WendyStarfall
9d06815e9d putting rlvmisc back in
rlvmisc is now also default-able and can be part of the standard rlv
suite
2014-03-24 22:46:16 +01:00
WendyStarfall
e86ad290ff we <3 animals
this bundles includes anim, couples and the posture animation; it has an
INSTALL tag by default because most users will want to play poses,
however, animal avatars who cannot play standard poses or couple
animations can now simply untick this bundle when running the custom
installation option; yay!
2014-03-24 22:42:25 +01:00
WendyStarfall
40104e8c58 mousekins magical coupleanim merge
just renaming the coupleanim.lsl file to couples.lsl and binning the old
files
2014-03-24 22:35:49 +01:00
WendyStarfall
8acfe5dcf5 Strict Mode and final polish
littlemousy did a /flawless/ job there merging real leash with leash,
all credit and more power to her; all I did here was obsessing over
cosmetic stuff and for the reason the original real leash plugin allowed
setting restrictions individually, I felt it necessary to give it a
fresh name to prevent misunderstandings about the functionality; this
push concludes and closes #75
2014-03-24 22:21:41 +01:00
WendyStarfall
93c1337853 grabby post is back as an actual post
this was a popular request; I changed the folder name to reflect the
same name of the object in-world
2014-03-24 21:05:36 +01:00
WendyStarfall
356b754574 new raw urls; merge beta/main
mousekin merged; I adjusted the new raw urls github gives us now which
used to be raw.github.com and then became raw2.github.com and now is
raw.githubusercontent.com for some reason
2014-03-24 14:42:57 +01:00
WendyStarfall
bf00f079b8 Merge pull request #174 from RomkaSwallowtail/patch-68
Update OpenCollar - update.lsl   prevent  possible collarversion bug
2014-03-24 13:47:49 +01:00
Romka
2621ab6f64 Update OpenCollar - update.lsl
add delete old version if it's saved in db.
to prevent LM_SETTING_RESPONSE conflicts of the new version vs old, if it's saved in settings DB.
2014-03-24 11:17:04 +03:00
WendyStarfall
d7a3507c3f prepping 3.957; OCD check and headers 2014-03-24 05:20:03 +01:00
littlemousy
410d7d7ed6 Settings loaded from database are now applied 2014-03-24 02:13:10 +00:00
littlemousy
a8b33c928c Merge branch 'main' of https://github.com/OpenCollar/OpenCollarUpdater into main 2014-03-24 01:15:25 +00:00
littlemousy
695455a346 added code to replace !totallytransparent texture with the system transparent texture key 2014-03-24 01:13:37 +00:00
littlemousy
5941cd13c7 Merge pull request #173 from RomkaSwallowtail/patch-67
Update OpenCollar - hovertext.lsl   use settings DB
2014-03-23 12:49:41 +00:00
Romka
d04ec07efc Update OpenCollar - hovertext.lsl
use save and restore parameters into/from DB
2014-03-23 15:17:15 +03:00
littlemousy
6d178206f0 New file, merges coupleanim1 and coupleanim2 scripts, and uses sensordialogs from dialog script instead of rolling its own 2014-03-23 10:07:49 +00:00
littlemousy
9dddd1c10b Merge pull request #172 from RomkaSwallowtail/patch-66
Update OpenCollar - hovertext.lsl
2014-03-23 09:02:33 +00:00
Romka
107cbe6984 Update OpenCollar - hovertext.lsl
add arrows in the up and down buttons
add restore hovertext prim size
2014-03-23 08:31:02 +03:00
WendyStarfall
5ae9b2b213 Merge pull request #170 from RomkaSwallowtail/patch-65
Update OpenCollar - update.lsl NULL_KEY
2014-03-22 21:31:01 +01:00
WendyStarfall
2992078c91 Merge pull request #169 from RomkaSwallowtail/patch-64
Update OpenCollar - update.lsl NULL_KEY
2014-03-22 21:19:41 +01:00
WendyStarfall
7d83af1afc Merge pull request #168 from RomkaSwallowtail/patch-63
Update OpenCollar - timer.lsl NULL_KEY
2014-03-22 21:19:01 +01:00
WendyStarfall
4569f941d9 Merge pull request #167 from RomkaSwallowtail/patch-62
Update OpenCollar - texture.lsl NULL_KEY
2014-03-22 21:18:54 +01:00
WendyStarfall
82749f4cee Merge pull request #166 from RomkaSwallowtail/patch-61
Update OpenCollar - subspy.lsl NULL_KEY
2014-03-22 21:18:47 +01:00
WendyStarfall
2e207cf7c5 Merge pull request #165 from RomkaSwallowtail/patch-60
Update OpenCollar - settings.lsl NULL_KEY
2014-03-22 21:18:40 +01:00
WendyStarfall
37e91ad475 Merge pull request #164 from RomkaSwallowtail/patch-59
Update OpenCollar - rlvundress.lsl NULL_KEY
2014-03-22 21:18:32 +01:00
WendyStarfall
ed7e9c7c78 Merge pull request #163 from RomkaSwallowtail/patch-58
Update OpenCollar - rlvtp.lsl NULL_KEY
2014-03-22 21:18:24 +01:00
WendyStarfall
f05c65ecb5 Merge pull request #162 from RomkaSwallowtail/patch-57
Update OpenCollar - rlvtalk.lsl NULL_KEY
2014-03-22 21:18:15 +01:00
WendyStarfall
b0af263fa4 Merge pull request #161 from RomkaSwallowtail/patch-56
Update OpenCollar - rlvsit.lsl NULL_KEY
2014-03-22 21:18:08 +01:00
WendyStarfall
0cb0b67ef2 Merge pull request #160 from RomkaSwallowtail/patch-55
Update OpenCollar - rlvrelay.lsl  NULL_KEY
2014-03-22 21:18:01 +01:00
WendyStarfall
dccebaed1c Merge pull request #159 from RomkaSwallowtail/patch-54
Update OpenCollar - rlvmisc.lsl NULL_KEY
2014-03-22 21:17:53 +01:00
WendyStarfall
3a0a9f2841 Merge pull request #158 from RomkaSwallowtail/patch-53
Update OpenCollar - rlvmain.lsl NULL_KEY
2014-03-22 21:17:45 +01:00
WendyStarfall
6379cf0c36 Merge pull request #157 from RomkaSwallowtail/patch-52
Update OpenCollar - rlvfolders.lsl NULL_KEY
2014-03-22 21:17:33 +01:00
WendyStarfall
7190e7df0c Merge pull request #156 from RomkaSwallowtail/patch-51
Update OpenCollar - rlvex.lsl NULL_KEY
2014-03-22 21:17:25 +01:00
WendyStarfall
d9812a3701 Merge pull request #155 from RomkaSwallowtail/patch-50
Update OpenCollar - plugin template.lsl NULL_KEY
2014-03-22 21:17:10 +01:00
WendyStarfall
b881e361df Merge pull request #154 from RomkaSwallowtail/patch-49
Update OpenCollar - menu.lsl NULL_KEY
2014-03-22 21:17:02 +01:00
WendyStarfall
34c283a4b1 Merge pull request #153 from RomkaSwallowtail/patch-48
Update OpenCollar - lock.lsl NULL_KEY
2014-03-22 21:16:53 +01:00
WendyStarfall
c1a7214bc4 Merge pull request #152 from RomkaSwallowtail/patch-47
Update OpenCollar - listener.lsl NULL_KEY
2014-03-22 21:16:36 +01:00
WendyStarfall
a5376c5930 Merge pull request #151 from RomkaSwallowtail/patch-46
Update OpenCollar - leashParticle.lsl NULL_KEY
2014-03-22 21:16:27 +01:00
WendyStarfall
cf0592dc5b Merge pull request #150 from RomkaSwallowtail/patch-45
Update OpenCollar - leash.lsl NULL_KEY
2014-03-22 21:16:19 +01:00
WendyStarfall
a6e7658a2c Merge pull request #149 from RomkaSwallowtail/patch-44
Update OpenCollar - label.lsl NULL_KEY
2014-03-22 21:16:10 +01:00
WendyStarfall
9a5863cb1a Merge pull request #148 from RomkaSwallowtail/patch-43
Update OpenCollar - hovertext.lsl NULL_KEY
2014-03-22 21:16:01 +01:00
WendyStarfall
ea9146c239 Merge pull request #147 from RomkaSwallowtail/patch-42
Update OpenCollar - hide.lsl NULL_KEY
2014-03-22 21:15:46 +01:00
WendyStarfall
ad1f3832d2 Merge pull request #146 from RomkaSwallowtail/patch-41
Update OpenCollar - garble.lsl NULL_KEY
2014-03-22 21:15:33 +01:00
WendyStarfall
c28af2e0d0 Merge pull request #145 from RomkaSwallowtail/patch-40
Update OpenCollar - dialog.lsl NULL_KEY
2014-03-22 21:15:15 +01:00
WendyStarfall
0c5e89d999 Merge pull request #144 from RomkaSwallowtail/patch-39
Update OpenCollar - coupleanim1.lsl NULL_KEY
2014-03-22 21:15:04 +01:00
WendyStarfall
b72a3dab4d Merge pull request #143 from RomkaSwallowtail/patch-38
Update OpenCollar - color.lsl NULL_KEY
2014-03-22 21:14:51 +01:00
WendyStarfall
fcbd694c49 Merge pull request #142 from RomkaSwallowtail/patch-37
Update OpenCollar - bell.lsl NULL_KEY
2014-03-22 21:14:39 +01:00
WendyStarfall
24e6abb396 Merge pull request #141 from RomkaSwallowtail/patch-36
Update OpenCollar - badwords.lsl  NULL_KEY
2014-03-22 21:14:05 +01:00
WendyStarfall
3d80f9c51a Merge pull request #140 from RomkaSwallowtail/patch-35
Update OpenCollar - auth.lsl NULL_KEY
2014-03-22 21:13:52 +01:00
WendyStarfall
a1e7b1d4cd Merge pull request #139 from RomkaSwallowtail/patch-34
Update OpenCollar - appearance.lsl  NULL_KEY
2014-03-22 21:13:37 +01:00
WendyStarfall
ca7a7b86ad Merge pull request #138 from RomkaSwallowtail/patch-33
Update OpenCollar - anim.lsl   NULL_KEYs
2014-03-22 21:13:20 +01:00
Romka
c987f681be Update OpenCollar - update.lsl 2014-03-22 22:21:08 +03:00
Romka
4e360d0ad8 Update OpenCollar - update.lsl 2014-03-22 22:18:35 +03:00
Romka
f7e275f1c7 Update OpenCollar - timer.lsl 2014-03-22 22:16:04 +03:00
Romka
de8cebfad9 Update OpenCollar - texture.lsl 2014-03-22 22:15:18 +03:00
Romka
bb5298607d Update OpenCollar - subspy.lsl 2014-03-22 22:14:35 +03:00
Romka
31008daf01 Update OpenCollar - settings.lsl 2014-03-22 22:13:29 +03:00
Romka
251f4c8b02 Update OpenCollar - rlvundress.lsl 2014-03-22 22:12:52 +03:00
Romka
7671383fb4 Update OpenCollar - rlvtp.lsl 2014-03-22 22:11:54 +03:00
Romka
8f1fa1c3dc Update OpenCollar - rlvtalk.lsl 2014-03-22 22:11:14 +03:00
Romka
1d7b0777f6 Update OpenCollar - rlvsit.lsl 2014-03-22 22:10:37 +03:00
Romka
973362731e Update OpenCollar - rlvrelay.lsl 2014-03-22 22:09:50 +03:00
Romka
8ba3180a7c Update OpenCollar - rlvmisc.lsl 2014-03-22 22:09:07 +03:00
Romka
5d16a6fb86 Update OpenCollar - rlvmain.lsl 2014-03-22 22:08:19 +03:00
Romka
f5e49476e2 Update OpenCollar - rlvfolders.lsl 2014-03-22 22:06:44 +03:00
Romka
72ec4a367e Update OpenCollar - rlvex.lsl 2014-03-22 22:05:35 +03:00
Romka
5cc8ed3dd3 Update OpenCollar - plugin template.lsl 2014-03-22 22:02:32 +03:00
Romka
9bc0d49202 Update OpenCollar - menu.lsl 2014-03-22 22:00:18 +03:00
Romka
383bc0518f Update OpenCollar - lock.lsl 2014-03-22 21:59:42 +03:00
Romka
81d62a1dc3 Update OpenCollar - listener.lsl 2014-03-22 21:58:57 +03:00
Romka
bf4a5cde69 Update OpenCollar - leashParticle.lsl 2014-03-22 21:58:12 +03:00
Romka
1286645404 Update OpenCollar - leash.lsl 2014-03-22 21:57:32 +03:00
Romka
c3d078d50f Update OpenCollar - label.lsl 2014-03-22 21:49:25 +03:00
Romka
ecaf405420 Update OpenCollar - hovertext.lsl 2014-03-22 21:48:19 +03:00
Romka
e01ea3e990 Update OpenCollar - hide.lsl 2014-03-22 21:46:31 +03:00
Romka
32a969529f Update OpenCollar - garble.lsl 2014-03-22 21:32:07 +03:00
Romka
e98d724eed Update OpenCollar - dialog.lsl 2014-03-22 21:31:21 +03:00
Romka
312ec40931 Update OpenCollar - coupleanim1.lsl 2014-03-22 21:30:08 +03:00
Romka
52e443196e Update OpenCollar - color.lsl 2014-03-22 21:29:12 +03:00
Romka
1e4f78434a Update OpenCollar - bell.lsl 2014-03-22 21:27:32 +03:00
Romka
a49b907f28 Update OpenCollar - badwords.lsl
NULL_KEY
2014-03-22 21:25:50 +03:00
Romka
ee231d0358 Update OpenCollar - auth.lsl
replace NULL_KEY's with ""
2014-03-22 21:24:38 +03:00
Romka
33a73e7e3c Update OpenCollar - appearance.lsl
replace NULL_KEY's with ""
2014-03-22 21:23:08 +03:00
Romka
84c2e56775 Update OpenCollar - anim.lsl
NULL_KEY
2014-03-22 21:20:21 +03:00
WendyStarfall
f8d501ba27 sandbox & shack 2014-03-20 20:09:27 +01:00
littlemousy
5c6ecae0a5 Merge branch 'patch-32' of https://github.com/RomkaSwallowtail/OpenCollarUpdater into RomkaSwallowtail-patch-32
Conflicts:
	LSL/OpenCollar - hide.lsl
2014-03-20 10:54:29 +00:00
Romka
58a08011a6 Update OpenCollar - hide.lsl 2014-03-20 13:43:31 +03:00
littlemousy
c3354d1427 Merge pull request #136 from lucianunderwood/patch-1
Update OpenCollar - hide.lsl
2014-03-20 10:13:55 +00:00
Romka
6753235990 Update OpenCollar - hide.lsl
reworking фтв fix #135 issue
2014-03-20 13:12:11 +03:00
lucianunderwood
d341f28007 Update OpenCollar - hide.lsl
Removes notification occurring on menu use - Quick Fix
2014-03-20 02:18:47 -07:00
WendyStarfall
03875f2440 BETA 3.956 ready to ship 2014-03-19 03:56:56 +01:00
WendyStarfall
8d630e71a4 I pity the fool who doesn't know this is V...
let's display the version number as float text above the software box
instead of a long blurb that no a** ever reads and is already better
read-able in the confirmation dialog
2014-03-19 03:09:21 +01:00
WendyStarfall
046d1018f0 prepping 3.956; OCD check and headers 2014-03-19 02:11:50 +01:00
littlemousy
1e79d71c95 Merge pull request #133 from littlemousy/main
Lots of refactoring to save memory
2014-03-19 00:35:04 +00:00
littlemousy
33a199e2de Lots of refactoring to save memory 2014-03-19 00:28:07 +00:00
WendyStarfall
0006948eb9 Merge pull request #131 from SatomiAhn/SmarterSt
Update OpenCollar - rlvfolders.lsl
2014-03-19 01:11:27 +01:00
littlemousy
8184f86833 Merge pull request #132 from littlemousy/main
Added checks on change to alpha state to avoid infinite loops
2014-03-18 23:59:06 +00:00
littlemousy
cbe137d61f Added checks on change to alpha state to avoid infinite loops 2014-03-18 23:57:47 +00:00
Satomi Ahn
2f62a52387 Update OpenCollar - rlvfolders.lsl
- removed stray llOwnerSay()
- more logical returns from action menu (back to where we come from after any action, except "Browse", which leads to browsing current folder if it contains subfolders, or its parent otherwise).
2014-03-18 14:00:28 +01:00
WendyStarfall
62181a18ab Merge pull request #130 from SatomiAhn/SmarterSt
Update OpenCollar - rlvfolders.lsl
2014-03-18 13:08:34 +01:00
Satomi Ahn
c1ab3af3d9 Update OpenCollar - rlvfolders.lsl
Added:
- history of recently used #RLV folders
- chat command for the above (xxhistory)
- chat command for direct access to browsing some subfolder (xx#rlv substring)
2014-03-18 12:50:35 +01:00
WendyStarfall
77ea7f07cd removed; maintained by original author 2014-03-18 10:47:36 +01:00
WendyStarfall
9d61b96e60 Merge pull request #124 from RomkaSwallowtail/patch-26
Update OpenCollar - rlvmain.lsl
2014-03-18 10:38:10 +01:00
WendyStarfall
c231397ad8 Merge pull request #123 from RomkaSwallowtail/patch-25
Update OpenCollar - rlvfolders.lsl
2014-03-18 10:38:03 +01:00
WendyStarfall
b59f5e1262 Merge pull request #125 from RomkaSwallowtail/patch-27
Update OpenCollar - rlvmisc.lsl
2014-03-18 10:37:56 +01:00
WendyStarfall
26621e837b Merge pull request #126 from RomkaSwallowtail/patch-28
Update OpenCollar - rlvundress.lsl
2014-03-18 10:36:47 +01:00
WendyStarfall
0387583e0c Merge pull request #120 from RomkaSwallowtail/patch-22
Update OpenCollar - appearance.lsl
2014-03-18 10:34:25 +01:00
WendyStarfall
12c1db69d2 Merge pull request #122 from RomkaSwallowtail/patch-24
Update OpenCollar - garble.lsl
2014-03-18 10:34:16 +01:00
WendyStarfall
4a63b79670 Merge pull request #128 from RomkaSwallowtail/patch-30
Update OpenCollar - cagehome.lsl
2014-03-18 06:28:12 +01:00
Romka
5c8816b6f0 Update OpenCollar - cagehome.lsl
use  llGenerateKey();
2014-03-17 14:12:12 +03:00
Romka
b76b8a6c4d Update OpenCollar - cagehome.lsl
update MENUNAME_REQUEST /
2014-03-17 14:09:41 +03:00
Romka
6bb879412b Update OpenCollar - rlvundress.lsl
deprecated "refreshmenu"

no need MENUNAME_RESPONSE / MENUNAME_REQUEST at start
2014-03-17 13:52:56 +03:00
Romka
f2cad14886 Update OpenCollar - rlvmisc.lsl 2014-03-17 13:16:48 +03:00
Romka
69821eb5c2 Update OpenCollar - rlvmisc.lsl
add page to Misc menu
2014-03-17 13:15:02 +03:00
Romka
320564bf53 Update OpenCollar - rlvmain.lsl
no need to send MENUNAME_RESPONSE at start
2014-03-17 13:04:11 +03:00
Romka
16f026d7ac Update OpenCollar - rlvfolders.lsl
no need to send MENUNAME_RESPONSE at start
2014-03-17 12:57:21 +03:00
Romka
5249473a1a Update OpenCollar - garble.lsl
no need to send gkWear in LM_SETTING_REQUEST
no need llSleep
2014-03-17 12:49:16 +03:00
Romka
dc8837a9d0 Update OpenCollar - appearance.lsl
senseless three times:  if (vSize.x > 10.0) return TRUE;

deprecated "refreshmenu"
2014-03-17 12:31:58 +03:00
littlemousy
df9ff4f8b3 Merge pull request #118 from RomkaSwallowtail/patch-7
Update OpenCollar - leash.lsl :   improvement leash menu
2014-03-16 23:59:58 +00:00
Romka
81ae632bf3 Update OpenCollar - leash.lsl
"give Holder" - fix return to post menu instead leash menu
"stay" "unstay" - add return to leash menu
2014-03-16 11:10:02 +03:00
WendyStarfall
8ab960b469 BETA 3.955 ready to ship 2014-03-16 05:44:11 +01:00
littlemousy
b58f467aa9 Merge pull request #117 from littlemousy/main
changed default size
2014-03-16 03:36:02 +00:00
littlemousy
e28765735a changed default size 2014-03-16 03:31:49 +00:00
littlemousy
05b2c1696b Merge pull request #116 from littlemousy/main
Sensor dialog patch
2014-03-16 03:02:17 +00:00
littlemousy
f5854dbfa0 Sensor dialog patch 2014-03-16 02:59:27 +00:00
WendyStarfall
3dd55bef30 adjusted for ao and leash textures 2014-03-16 02:44:55 +01:00
WendyStarfall
87d879d58d littlemousy in-world; leashParticle
I asked Mlle Mouse to add a bit of UUIDness here into the script so we
can spare another two contents from the object inventory -> we nijna
asshet sevre! >,,<'
2014-03-16 02:28:35 +01:00
WendyStarfall
8022ef78c1 sub AO from MP
pew! pew! another content less and users will always get the recent one
that way \o/
2014-03-16 02:26:46 +01:00
WendyStarfall
956923c9a8 help cards links in the main guide instead 2014-03-16 01:55:03 +01:00
WendyStarfall
6ee69d7344 no more updater from contents; web link
Get Updater now gives a load url that either links directly to
marketplace or the user can click one of the urls in the dialog
2014-03-16 01:33:17 +01:00
WendyStarfall
584014e6c4 headers and help links changed
yet two less object contents
2014-03-16 01:27:17 +01:00
littlemousy
59211401f2 Merge pull request #115 from littlemousy/main
re make rlv restrictions after teleport or region change, because SL seems to be losing them
2014-03-15 23:13:54 +00:00
WendyStarfall
79db08bb13 listener; header and bundles
we no longer require a dedicated touch plugin
2014-03-15 23:59:19 +01:00
littlemousy
4c3b284f85 fixed line feeds in last commit 2014-03-15 21:50:41 +00:00
littlemousy
a56bf0c739 added "resend rlv restrictions after tp or change region" code 2014-03-15 21:47:56 +00:00
littlemousy
225cabba17 Merge pull request #114 from littlemousy/main
Merged listener and touch scripts, reducing overall script count
2014-03-15 17:24:45 +00:00
littlemousy
ac0441252a Merged listener and touch scripts, reducing overall script count 2014-03-15 17:10:36 +00:00
WendyStarfall
c2e17d19e6 prepping 3.955; Bundles I
First here is addressing the realleash plugins that have to be
uninstalled or we would double up the same the normal leash does now.

Second is the updater that caused more confusion if handed from
contents, so for now, let's have Get Updater inform users /where/ to get
the actual update rather than receive a package manager style updater
from contents. I will be working on the necessary changes in OpenCollar
- update to have it shipped with 3.955.

Third is the keys/keyholder/keyholder plugin. Putting it back in
received no feedback, the issues on it received no response and the
problem with missing attributions has been addressed properly. I believe
at this point it will be best to stick to our popular set of official
plugins and the two "missing" rlv features. I will contact Whitefire
Sondergaard and ask for a link and slurl where interested people could
acquire the plugin from the original author. These links can be blogged
with the announcement for beta 3.955!
2014-03-15 06:51:32 +01:00
WendyStarfall
9f12e23f5f we no longer override couple anims
makes a slimmer update and prevents buttz from hurted; also in case the
stock couple anims are desired we have them included in all our stock
designs, this is not necessary to include over and over in a software
update
2014-03-15 06:38:54 +01:00
WendyStarfall
2c94f35047 deprecated; merged with leash
from 3.955 on realistic rlv restrictions are part of the standard leash
2014-03-15 06:32:52 +01:00
WendyStarfall
69ad16b80e prepping 3.955; OCD check and headers
these 15 scripts are back in sync with the beta updater in-world!
2014-03-15 06:01:04 +01:00
WendyStarfall
f4dfa401ce Merge pull request #113 from littlemousy/main
Merged realleash functions into main leash script.  Changed menu layout to avoid multi page menu. Settings script resends settings when script is edited.
2014-03-15 03:12:23 +01:00
littlemousy
31ef22fde8 Merged realleash functions into main leash script. 2014-03-14 21:09:09 +00:00
littlemousy
754ef51339 send settings whenever inventory changes, so settings are sent out when a script is edited 2014-03-14 21:07:57 +00:00
WendyStarfall
d991c9355d Merge pull request #94 from RomkaSwallowtail/patch-8
Update OpenCollar - leashParticle.lsl
2014-03-14 13:49:02 +01:00
WendyStarfall
35eac4d597 Merge pull request #95 from RomkaSwallowtail/patch-9
Update OpenCollar - realleash.lsl
2014-03-14 13:48:49 +01:00
WendyStarfall
52eb08b166 Merge pull request #96 from RomkaSwallowtail/patch-10
Update OpenCollar - leash.lsl
2014-03-14 13:48:39 +01:00
WendyStarfall
97baaa189e Merge pull request #106 from RomkaSwallowtail/patch-20
Update OpenCollar - update.lsl
2014-03-14 13:42:10 +01:00
WendyStarfall
4c6e75f263 Merge pull request #100 from RomkaSwallowtail/patch-14
Update OpenCollar - badwords.lsl
2014-03-14 13:41:54 +01:00
WendyStarfall
49b5135874 Merge pull request #101 from RomkaSwallowtail/patch-15
Update OpenCollar - color.lsl
2014-03-14 13:41:35 +01:00
WendyStarfall
ebab4d331b Merge pull request #102 from RomkaSwallowtail/patch-16
Update OpenCollar - hide.lsl
2014-03-14 13:41:26 +01:00
WendyStarfall
3b211491be Merge pull request #103 from RomkaSwallowtail/patch-17
Update OpenCollar - label.lsl
2014-03-14 13:41:06 +01:00
WendyStarfall
d4ddb24733 Merge pull request #104 from RomkaSwallowtail/patch-18
Update OpenCollar - texture.lsl
2014-03-14 13:40:55 +01:00
WendyStarfall
82bf5b8083 Merge pull request #111 from RomkaSwallowtail/patch-6
Update OpenCollar - hovertext.lsl
2014-03-14 13:40:41 +01:00
WendyStarfall
9f6860e846 Merge pull request #99 from RomkaSwallowtail/patch-13
Update OpenCollar - auth.lsl
2014-03-14 13:40:16 +01:00
WendyStarfall
a61d358e7e Merge pull request #98 from RomkaSwallowtail/patch-12
Update OpenCollar - appearance.lsl
2014-03-14 13:39:52 +01:00
WendyStarfall
c8e1ac4e14 Merge pull request #88 from RomkaSwallowtail/patch-4
Update OpenCollar - update.lsl
2014-03-14 13:39:42 +01:00
WendyStarfall
287975a133 Merge pull request #105 from RomkaSwallowtail/patch-19
Update OpenCollar - timer.lsl
2014-03-14 13:39:09 +01:00
WendyStarfall
ff134a5140 Merge pull request #97 from RomkaSwallowtail/patch-11
Update OpenCollar - anim.lsl
2014-03-14 13:38:58 +01:00
littlemousy
32516c0d45 Merge pull request #3 from RomkaSwallowtail/patch-1
Update OpenCollarAO - Options.lsl
2014-03-10 13:19:07 +00:00
littlemousy
18fc8571e3 Merge pull request #4 from RomkaSwallowtail/patch-2
Update OpenCollarZHAOII - Interface.lsl  fix #2
2014-03-10 13:18:14 +00:00
littlemousy
fff4512a49 Merge pull request #5 from RomkaSwallowtail/patch-3
Update OpenCollarZHAOII - Core.lsl
2014-03-10 13:17:19 +00:00
Romka
988a1ed0b5 Update OpenCollar - hovertext.lsl
fix MENUNAME_REQUEST / RESPONSE
2014-03-10 09:30:47 +03:00
Romka
697c82e6d4 Update OpenCollarZHAOII - Core.lsl 2014-03-08 13:18:11 +03:00
Romka
09bb36d508 Update OpenCollarZHAOII - Interface.lsl
use llGenerateKey() instead ShortKey()
2014-03-08 13:11:45 +03:00
Romka
58764337d2 Update OpenCollarAO - Options.lsl
use llGenerateKey() instead ShortKey()
2014-03-08 13:07:27 +03:00
Romka
3271e815e9 Update OpenCollar - timer.lsl
add flush submenu buttons
2014-03-04 08:20:41 +03:00
Romka
ec4f661010 Update OpenCollar - leash.lsl
add flush submenu buttons
2014-03-04 08:10:19 +03:00
Romka
a61163430a Update OpenCollar - appearance.lsl 2014-03-03 19:54:22 +03:00
Romka
7885345731 Update OpenCollar - anim.lsl
reset and update submenu buttons
2014-03-03 19:23:00 +03:00
WendyStarfall
3a9f638b90 Merge pull request #91 from RomkaSwallowtail/patch-7
Update OpenCollar - coupleanim1.lsl
2014-03-02 21:40:08 +01:00
Romka
1547aafb11 Update OpenCollar - update.lsl
no need to MENUNAME_REQUEST at the start script.
(reduces link_message flow)
2014-03-01 18:00:15 +03:00
Romka
d163bae4ee Update OpenCollar - timer.lsl
no need to MENUNAME_REQUEST at the start script.
(reduces link_message flow)

change buttons (*) ( )  >  ☒  ☐
2014-03-01 17:58:12 +03:00
Romka
f40f58de21 Update OpenCollar - texture.lsl
no need to MENUNAME_REQUEST at the start script.
(reduces link_message flow)
2014-03-01 17:51:44 +03:00
Romka
f2f6c59dc6 Update OpenCollar - label.lsl
no need to MENUNAME_REQUEST at the start script.
(reduces link_message flow)
2014-03-01 17:42:36 +03:00
Romka
a6515b9e76 Update OpenCollar - hide.lsl
no need to SETTING_REQUEST at the start script, because settings script sends all settings after rez automatically.
no need to MENUNAME_REQUEST at the start script.
(reduces link_message flow)
2014-03-01 17:39:34 +03:00
Romka
7fe7922fdc Update OpenCollar - color.lsl
no more need MENUNAME_RESPONSE at start script
2014-03-01 17:29:30 +03:00
Romka
781978d1f9 Update OpenCollar - badwords.lsl 2014-03-01 17:23:33 +03:00
Romka
5b0bbfac04 Update OpenCollar - badwords.lsl
no need to SETTING_REQUEST at the start script, because settings script sends all settings after rez automatically.
(reduces link_message flow)
2014-03-01 17:22:21 +03:00
Romka
3a7b25e6fe Update OpenCollar - auth.lsl
no need to SETTING_REQUEST at the start script, because settings script sends all settings after rez automatically.
(reduces link_message flow)
2014-03-01 17:19:22 +03:00
Romka
eaf64c6caa Update OpenCollar - appearance.lsl
first response to request parent menu 
and then request sub menu
2014-03-01 17:10:23 +03:00
Romka
c3c61ffde0 Update OpenCollar - anim.lsl
first response to request parent menu
and then request sub menu
2014-03-01 17:07:51 +03:00
Romka
4f1380e721 Update OpenCollar - leashParticle.lsl
particle defaultsettings should not change
2014-02-28 14:57:42 +03:00
Romka
6728de00a1 Update OpenCollar - leashParticle.lsl 2014-02-28 14:49:50 +03:00
Romka
f31d5ca6ea Update OpenCollar - leash.lsl
fix nocorrect MENUNAME_REQUEST for parent menu
add MENUNAME_REQUEST for submenu
2014-02-27 00:02:09 +03:00
Romka
6935bc973c Update OpenCollar - realleash.lsl
use llGenerateKey() instead ShortKey()
2014-02-26 22:37:39 +03:00
Romka
ed2d4d283f Update OpenCollar - leashParticle.lsl
fix no correct MENUNAME_REQUEST responce
2014-02-26 22:31:10 +03:00
WendyStarfall
1aacb40069 new forever home 2014-02-24 02:04:51 +01:00
WendyStarfall
5f82aec041 littlemousy in-world; dialog
might fix #92
2014-02-22 18:26:47 +01:00
Romka
08cace289c Update OpenCollar - coupleanim1.lsl
just add duration time information in couple menu
2014-02-22 19:10:35 +03:00
WendyStarfall
0c14bd9fcc "region full" issue 2014-02-21 20:53:01 +01:00
Romka
bbc19da434 Update OpenCollar - update.lsl
because the script does not save 'collar version' to database, 
script does not respond version at any time upon request.
2014-02-20 15:44:01 +03:00
WendyStarfall
a0395bfb34 BETA 3.954 ready to ship 2014-02-20 10:56:52 +01:00
WendyStarfall
e35cb84b11 littlemousy in-world; dialog
I pushed the wrong dialog 2 days ago! Sorry! (Wendy)
2014-02-20 10:37:18 +01:00
WendyStarfall
7a58f559d2 Merge pull request #87 from RomkaSwallowtail/patch-3
Update OpenCollar - menu.lsl
2014-02-19 23:08:24 +01:00
Romka
b399a371d9 Update OpenCollar - menu.lsl
fix "OpenCollar Version (loading...)" after "Fix Menus"
2014-02-19 23:34:03 +03:00
WendyStarfall
773e8ae093 BETA 3.953 ready to ship 2014-02-19 19:51:30 +01:00
WendyStarfall
647969cfa4 removed Qandico slurl 2014-02-19 19:15:18 +01:00
WendyStarfall
b330d24f90 added a g_
that's right! I added a g_
\o/
2014-02-19 19:02:20 +01:00
WendyStarfall
cdf1ffd9c3 prepping 3.953; OCD check and headers 2014-02-19 18:47:07 +01:00
WendyStarfall
855f6b1a9f Merge pull request #85 from RomkaSwallowtail/patch-2
Update OpenCollar - hide.lsl
2014-02-19 17:32:24 +01:00
WendyStarfall
de2eb2971b prepping new dialog
the debug line for dialog is commented out; bundles no longer install
getavi and remove it if present
2014-02-18 02:45:16 +01:00
WendyStarfall
260ccb7bf8 littlemousy in-world; dialog
mousekin says: "Merged getavi dialogs into main dialog script. Stopped
passing g_lMenus as parameter to RemoveMenuStride function."
2014-02-18 02:32:08 +01:00
WendyStarfall
e5d6fa4771 Romka Swallowtail in-world; badwords
adds a more sophisticated way to use sounds for badwords, also makes
things work with defaultsettings, yay!
2014-02-18 02:24:41 +01:00
WendyStarfall
b5bfecb4d9 Merge pull request #86 from RomkaSwallowtail/patch-1
Update OpenCollar - appearance.lsl
2014-02-17 19:03:54 +01:00
Romka
59d72c1636 Update OpenCollar - appearance.lsl
fix 'nudge' buttons
2014-02-17 20:57:26 +03:00
Romka
640939bcf1 Update OpenCollar - hide.lsl
total revision, 
added restore settings from the database (by LM_SETTING_REQUEST),
changed menu: 'show / hide All' replaced by 'show/hide collar',

'show/hide collar' now does not affect to hide settings of elements
2014-02-13 16:40:42 +03:00
WendyStarfall
2f4bb23c14 Merge pull request #84 from RomkaSwallowtail/patch-1
Update OpenCollar - hovertext.lsl
2014-02-12 22:19:33 +01:00
Romka
2e6709b92e Update OpenCollar - hovertext.lsl 2014-02-12 20:01:52 +03:00
WendyStarfall
c4ac5f9b08 BETA 3.952 ready to ship 2014-02-12 15:21:17 +01:00
WendyStarfall
e5b063c39e final formatting.. weew! 2014-02-12 14:30:09 +01:00
WendyStarfall
4dc2650bdc oopsie! kept the debugz
and mouse helped me again, I learnt something new! \o/
2014-02-12 14:21:26 +01:00
WendyStarfall
1ed1d1ec42 we just need one temple kthx
now that we (thankfully) only have one in-world temple to manage we can
bin this tardissimo idea about having two landmarks, yin and yang, and
keep it to a single landmark -> Temple
2014-02-12 14:08:34 +01:00
WendyStarfall
742340aa21 littlemousy in-world; hovertext
mouse helped me there with the formatting changes I wanted to do and we
also needed the prim desc seperated from the menu button name after
renaming the feature to "Titler"
2014-02-12 13:52:26 +01:00
WendyStarfall
c5765b12ba formatting for the menu
keeping it short so we don't have to scroll and can have more continuity
with other menus
2014-02-12 12:40:06 +01:00
WendyStarfall
576a766a16 corrected a typo and some formatting <3 2014-02-12 12:21:12 +01:00
WendyStarfall
7ecd0c109e menu item renamed to: Titler
so we have it called the same like the bundle in the updater/installer
2014-02-12 11:58:25 +01:00
WendyStarfall
c39061546e prepping 3.952; OCD check and headers 2014-02-12 11:50:03 +01:00
WendyStarfall
bfd66bc1de Romka Swallowtail in-world; hovertext
Satomi Ahn's initial llTextBox support; refined and merged with current
versions by Ромка; major usability improvements, no longer error prone
if missing a hovertext prim and persistency after resets also programmed
by Ромка - thank you! <3
2014-02-12 10:37:54 +01:00
WendyStarfall
6e5ec90607 Romka Swallowtail in-world; label
Satomi Ahn's initial llTextBox support; refined and merged with current
versions by Ромка
2014-02-12 10:31:51 +01:00
WendyStarfall
ae71790626 Romka Swallowtail in-world; badwords
Satomi Ahn's initial llTextBox support; refined with extra buttons,
features and merged with current versions by Ромка
2014-02-12 10:30:00 +01:00
WendyStarfall
6b394a4837 Romka Swallowtail in-world; dialog
Satomi Ahn's initial llTextBox support; refined and merged with current
versions by Ромка
2014-02-12 10:24:56 +01:00
WendyStarfall
2ad8d843f1 Merge pull request #83 from littlemousy/main
updated subspy and getavi
2014-02-11 02:34:56 +01:00
littlemousy
16968a01cc Revert "Changed notificcations, reduced startup spam. Renamed module."
This reverts commit 38722d6927.
2014-02-11 00:58:45 +00:00
littlemousy
5892030831 Revert "revoked"
This reverts commit 8fe389fd21.
2014-02-11 00:58:03 +00:00
littlemousy
a4ee811dde revoked 2014-02-11 00:52:11 +00:00
littlemousy
6061d7c71f Added UPMENU to avi search dialog 2014-02-11 00:48:44 +00:00
littlemousy
857c600ce5 Changed notfications, removed spurious debug, changed module name. 2014-02-11 00:39:43 +00:00
littlemousy
63809ce3ea Changed notificcations, reduced startup spam. Renamed module. 2014-02-11 00:15:28 +00:00
littlemousy
3407fb4cac merging upstream changes with fork
Merge remote-tracking branch 'upstream/main' into main
2014-02-11 00:02:17 +00:00
WendyStarfall
e406ab2c93 Romka Swallowtail in-world; hovertext III
removes the redundant pin and function for cleaning up the hover text
prim contents and adds parameters for minimum and maximum offset for the
text
2014-02-09 21:20:26 +01:00
WendyStarfall
07832275dd Romka Swallowtail via tracker; hovertext II
that one is even better than just using the slice parameter; it lets us
adjust the offset for hover text with neat buttons in the AddOns -
FloatText menu
2014-02-09 20:14:13 +01:00
WendyStarfall
be51b85c67 Romka Swallowtail via tracker; hovertext
Ромка had a really clever idea how to deal with the expanding hover text
prim; we need to expand it to get the text high up enough but then we
end up having the invisible stick poking out of our heads! Ромка's
solution is to just slice the prim parameters -> keep in mind this
requires the hover text prim to be a box!
2014-02-09 09:25:49 +01:00
WendyStarfall
d226dd77c7 Romka Swallowtail via tracker; anim
This one deals with the re-menu hiccup if clicking AnimLock; #77 fixed
2014-02-09 09:09:43 +01:00
littlemousy
5a1d2e6aa5 Merge pull request #1 from OpenCollar/main
update my repo with changes from main OC
2014-02-08 20:25:08 +00:00
WendyStarfall
4a2da512df BETA 3.951 ready to ship 2014-02-08 18:57:58 +01:00
WendyStarfall
8b883e640b version from card instead string
this is kinda a test if we get the version number in the main menu
properly fetched from the card; I used to always put it in the string at
line 25 each update to work around the problem described in #26 but that
didn't really solve it; Medea wrote the parts to have the version number
fetched from the card and recommended to put something like "fetching"
or "loading" lets see if it works!
2014-02-08 17:09:19 +01:00
WendyStarfall
15b4b919cd beta urls and current slurls 2014-02-08 16:40:23 +01:00
WendyStarfall
712e9194a6 BETA channel init
so instead of a seperated branch lets try having the "beta channel" just
as a folder; included are version and news item as well as the update
script so we won't have to edit the url each time in the "main channel"
update script
2014-02-08 16:29:43 +01:00
WendyStarfall
462ae22c49 rolling back realtime feature
for the next beta version we want the broken feature back inside to be
able running more tests; I believe the problem is fixed with the updated
keyholder script by WhiteFire Sondergaard
2014-02-08 10:05:40 +01:00
WendyStarfall
444c027764 Jean Severine in-world; leashParticle
this commit ads a "life" menu function for the particle engine for
leashes
2014-02-08 10:01:46 +01:00
WendyStarfall
ef3c399ab2 WhiteFire Sondergaard in-world; keyholder
WhiteFire: "Fixed the refactoring in UserCommand() so it actually works
with buttons from foreign menus."
2014-02-04 10:46:52 +01:00
WendyStarfall
7e5c32c8ff re-added missing attributions and changelog
The script was missing attributions which must have been lost while work
was done on it in-world; this script was originally created by WhiteFire
Sondergaard based on the plugin template at the time by Cleo Collins.
Kadah Coba, Satomi Ahn and various others contributed improvements and
patches to this script.
2014-02-04 09:22:54 +01:00
WendyStarfall
5a082eed62 Medea Destiny in-world; dialog
Medea says: "<512 not <513 for dialog message length. AAAARGH. *bangs
head against wall*"

This fixes #76
2014-01-30 00:45:48 +01:00
WendyStarfall
7a13197535 legacy credits and attribution for typing
since the legacy anims are all back inside now, we need to give credit
also in this note (these credits were part of the extra pack and the old
Sub AO as well), added was the attribution to Vasa Vella for the typing
animation, also mentioned should be MissSpoken who networked for us to
get this animation done!
2014-01-25 20:14:05 +01:00
WendyStarfall
8e5c20ba6e littlemousy in-world; ZHAOII Interface
That's a big one; it's splitting the Sub AO quickmenu and ZHAOII legacy
AO menu better up in one more suited for the collar wearer and the other
better suited for the collar owners; there are also a whole ton of
cosmetic uglies removed, replaced and polished; for this one to fully
figured out it is best to take a 3.600 or 3.940 Sub AO and compare it to
the 3.950 Sub AO by clicking through the menus! thanks mousy!!!
2014-01-25 20:10:56 +01:00
WendyStarfall
adb9044711 littlemousy in-world; Dialog
this one I asked mousy to help me with so we could sort the buttons
better in the legacy ZHAOII menu
2014-01-25 20:08:00 +01:00
WendyStarfall
45484b9593 3.950 ready to ship 2014-01-25 20:02:21 +01:00
WendyStarfall
73977fdbd5 prepping 3.950 II; bundles 2014-01-25 19:44:47 +01:00
WendyStarfall
1ce46dbbf6 anim; teensy bit of cosmetic syntax 2014-01-25 19:35:22 +01:00
WendyStarfall
c79ba84a55 new rez position for mesh post; renamed
Carina Asbrink created a 1 prim LI mesh variation based on my ball&chain
design. I renamed it to "OpenCollar Post" as some people were confused
why a sphere thing popped up if they clicked Rez Post. There have not
been any changes in Toy Wylie's grabbypost script; the folder has been
renamed to reflect the new name of the in-world object.
2014-01-25 13:05:01 +01:00
WendyStarfall
8ac7db68cc Medea Destiny in-world; rlvundress
Medea: "Removed kSmartUser stuff, cos I decided it's a bad idea. Using
smartstrip for stripAll now (was already present, just uncommented it)."
2014-01-25 10:31:11 +01:00
WendyStarfall
7ab61af3fe rlvmisc optional
this commit removes poses as bundle and adds rlvmisc instead as an
optional feature to install; most people never need rlvmisc, it makes
sense to keep it optional not only because it is excluded from defaults;
investigated for issue #65; poses are removed because of the many
requests to have our updaters not mess with peoples custom arrangements
for poses, our own poses will be supplied inside of stock designs and
the signature collar but not part of the software/content package in the
updater
2014-01-24 05:38:44 +01:00
WendyStarfall
7e02c4efaf Updater - Master; Help weblink 2014-01-24 05:13:08 +01:00
WendyStarfall
1e231691ef prepping 3.950 I
adjusting headers for 3.950 in the scripts specific to the collar;
OCDing if they are the same in-world
2014-01-24 05:11:05 +01:00
WendyStarfall
b40bcf4070 Merge pull request #74 from littlemousy/main
Fixes for broken buttons and help notecard
2014-01-23 13:11:38 -08:00
littlemousy
286a0f5062 Added response to "RLV help" button 2014-01-23 21:06:50 +00:00
littlemousy
1c9b06aa62 We also need to parse arguments separated by spaces 2014-01-23 21:04:47 +00:00
WendyStarfall
6f8161e730 Merge pull request #73 from littlemousy/main
A selection of updates from Ray Zopf's latest in-world file
2014-01-23 12:10:12 -08:00
littlemousy
b84ef2ffa2 Added additional logging of position in spy reports when attached from ground, from Ray Zopf 2014-01-23 02:31:12 +00:00
littlemousy
9999bd3bfa Added missing line feed, from Ray Zopf 2014-01-23 02:27:59 +00:00
littlemousy
878280185f Changed logical tests in case Linden change "0 means false", from Ray Zopf 2014-01-23 02:26:13 +00:00
littlemousy
6997da712e Added additional logging in spy reports for settings changes, from Ray Zopf 2014-01-23 02:20:54 +00:00
littlemousy
14232a4c38 Added notify for settings change by non-wearer in local sim 2014-01-23 02:14:40 +00:00
littlemousy
1d59c3cb9e Don't get location unless you need to, from Ray Zopf 2014-01-23 01:44:48 +00:00
littlemousy
e1ff1d1ede Moved warning text and parameter reporting to fix a "messages out of order" bug introduced by Littlemousy's big change, from Ray Zopf 2014-01-23 01:15:23 +00:00
littlemousy
2ab32174ff Added log of configuration changes to spy reports, from Ray Zopf 2014-01-23 01:10:48 +00:00
littlemousy
2dd989341d Added additional text to dialog, repeating information available in the button checkboxes. From Ray Zopf. 2014-01-23 00:42:02 +00:00
WendyStarfall
f1ff38456b Merge pull request #72 from KaroWeirsider/main
#60 Timer issue
2014-01-22 12:54:33 -08:00
KaroWeirsider
27d9417d87 #60 Timer issue
Removed the menu references to the Realtime timer. Everything else
remains with the assumption the timer will be replaced in later
versions.
2014-01-22 15:33:44 -05:00
WendyStarfall
a210fa8689 Merge pull request #71 from littlemousy/main
Updated formatting to remove change made during last in-world submission...
2014-01-22 07:29:14 -08:00
littlemousy
e708773a42 Updated formatting to remove change made during last in-world submission. This should make subsequent commits a lot easier to read. 2014-01-22 12:27:09 +00:00
WendyStarfall
3ca9939e1f littlemousy in-world; bell
There we go, bell is cured of the global show/hide annoyances too now.
mousy rocks! <3
2014-01-21 01:32:06 +01:00
WendyStarfall
f7eb4d777a RomkaSwallowtail via tracker; lock
This the fix proposed by Romka Swallowtail to handle the lock in both
states showing if doing a global hide and show. littlemousy added it to
the script in-world and it worked flawlessly. #58 fixed
2014-01-21 01:17:25 +01:00
WendyStarfall
823e66375d littlemousy in-world; subspy
This is a working spy plugin now; we (mousy and wendy) tested it
in-world and the result is as good as this feature possibly could get.
Also the script is much tidier and easier to read. Cosmetic changes make
#69 mostly redundant but please do know that Ray's efforts are valued
and appreciated equally and mentioned on the blog.
2014-01-20 23:19:29 +01:00
WendyStarfall
0c9e055cfe fixes #64
I'm basically just reverting one change, added the reset back and
doubled up the request for permissions. That fixes our problem with
losing perms to animate. It's a bizarre way to go about it and the reset
feels out of place but I have yet to see an alternative fix that works?
2014-01-20 22:28:20 +01:00
WendyStarfall
2054935104 Medea Destiny in-world; rlvundress
Medea: "New feature! Smartstrip. When smartstrip is activated, the
standard clothing removal folder will use detachallthis instead of
remoutfit, to remove everything in the same folder or child folders of
the item being removed. For people with a sensibly set up #RLV, this
makes this a far more useful option! Because lots of people *don't* have
a #RLV folder set up for this, we also have a notecard to give to help
people with setting up folders. Yay! Smartstrip gets turned on and off
via the menus or via the chat commands "smartstrip on" and "smartstrip
off". Owners and Wearers can both change this setting. However! We also
have a g_kSmartUser key. If someone other an Owner or Wearer selects it,
their key gets dumped into this value, which is not saved. This allows
other people to activate it for themselves only, for that session only.
As an additional bonus, removing clothing can now be accessed by an easy
chat command, "strip (item)" or "strip all". For now, I haven't changed
the behaviour of strip all, however the code is there commented out if
we think it's a good idea for strip all to use smartstrip."
2014-01-20 07:42:08 +01:00
WendyStarfall
161e0bdcbf littlemousy in-world; subspy
final fix for #66
2014-01-09 07:19:17 +01:00
WendyStarfall
2b857f2e8f Merge pull request #4 from RayZopf/OpenCollar-master
Open collar master - manual commit fix
2013-12-30 14:49:34 -08:00
RayZopf
8b39da629f manual commit fix
manual diff / bcomp
adding changes from #3 (ZinnIxtar)
reverting changes from Wendy (higher llSleep)
2013-12-30 23:33:38 +01:00
WendyStarfall
75c4ef3197 Merge pull request #3 from ZinnIxtar/master
Track and Clear listener handles of ":ping"ed avatars, rather than switc...
2013-12-27 13:05:47 -08:00
WendyStarfall
7ff2ad3d84 Merge pull request #67 from RayZopf/main
subspy: minor bugfix for messages on settings change
2013-12-27 00:01:35 -08:00
RayZopf
83cb706139 Merge pull request #8 from OpenCollar/main
sync for 3.940
2013-12-26 20:48:18 -08:00
RayZopf
10f7bd4e32 more information on settings change
workaround for not getting messages on changed settings
state more clearly if option is on or off
2013-12-27 05:44:37 +01:00
RayZopf
b5e3a5ddb2 annotation
#66
2013-12-20 14:21:09 +01:00
ZinnIxtar
628a5d3a37 Track and Clear listener handles of ":ping"ed avatars, rather than switching states.
Rather than switching states to clear the listeners after a ping for subs, (and therefore having to reinstate the ones we need), this change tracks the listener handles and removes them after 5 seconds.

I also believe this is cleaner for future maintainability of default/state_entry(), which many would assume only occurs on script reset.
2013-12-19 15:32:31 -06:00
WendyStarfall
ca55eae699 ball and chain release 2013-12-13 01:17:42 +01:00
WendyStarfall
4546228ff1 Toy Wylie in-world; grabbypost init (rewrite)
folder name is the same as the in-world object name
2013-12-11 16:35:24 +01:00
WendyStarfall
b353fc476b leashholder init; folder name = object name 2013-12-11 16:32:44 +01:00
WendyStarfall
9adf9d8fa1 3.940 ready to ship 2013-12-09 23:34:50 +01:00
WendyStarfall
9f730b7457 prepping 3.940 2013-12-09 21:19:29 +01:00
WendyStarfall
88df928d30 hierarchy adjusted to prevent cosmetic errors
this is to prevent the collar telling it skipped an animation because it
wasn't found if the asset loaded too slow
2013-12-09 21:18:19 +01:00
WendyStarfall
bbc94dd30d removing grabby post and other redundant items
grabby is replaced with Ball&Chain; leash script tweaked for rez
position; this commit also uninstalls the remaining keyholder scripts in
older versions
2013-12-09 19:07:11 +01:00
WendyStarfall
8c6a85f946 attribution to Medea Destiny and Marine Kelley 2013-12-09 00:00:45 +01:00
WendyStarfall
c98ffc56f3 lil change in the hover text 2013-12-08 22:22:03 +01:00
RayZopf
667f4782e2 make messages look nicer (NG)
Displayed commands now use screen name; North Glenwalker in-world
2013-12-06 23:10:43 +01:00
RayZopf
7c1433a05b double script reset on owner change removed
talking to North - changed() is the better way
2013-12-06 15:19:54 +01:00
RayZopf
ff9d57ca14 reset scripts on owner change
hudmain needs some more function when Subs NC is edited
2013-12-06 14:51:29 +01:00
RayZopf
fcf6e2297b comment on the revert in on_rez
disabling debug
adding comment - waiting for code addition to reset on owner change
2013-12-06 14:28:59 +01:00
RayZopf
9cf52cddd7 disabling debug 2013-12-06 14:24:52 +01:00
RayZopf
5b90ff0d02 horizontal/vertical layout
as it stays in horizontal when attachted on top position (default)
2013-12-06 14:14:51 +01:00
RayZopf
a48c216a52 more comment on gridwide tp 2013-12-06 14:13:21 +01:00
RayZopf
19baa0e1cc comment on grid wide forced tp
no changes only comment - easy to enhance?
2013-12-06 09:09:12 +01:00
RayZopf
f4cc57db51 help line output
give that not only on reattach (on_rez) or user requested reset, but
also on full script reset and on first run
2013-12-06 00:05:24 +01:00
RayZopf
4f3908c8a3 playing with menu registration
adding similar piece of code to scripts where it was not already in
place, now someone should use channel MENUNAME_REQUEST to get the
buttons
2013-12-05 23:58:54 +01:00
RayZopf
5769263919 added debug code, disabled script reset
show which buttons get registered for menu
disable script reset on_rez - kinda reverting:

8b85d74762
2013-12-05 23:20:53 +01:00
RayZopf
684fa63543 added debug code
find out if/when scripts go into default state
see if/when menu buttons get registered
2013-12-05 23:19:13 +01:00
WendyStarfall
0f5dbfb876 xx Reyes in-world; adding more sleep time
slut was helping me with the problem where we miss the Subs and Options
buttons; it makes still no sense to us because these sleeps were 1.0 for
a long, long time and it never failed but upping them to 2.0 made the
buttons magically appear! thanks slut <3
2013-12-05 15:08:30 +01:00
WendyStarfall
70ab0b7a0c bundle adjusted to install AO 2013-12-05 04:44:55 +01:00
WendyStarfall
8b1734769e looped subhug; fixes #56
the non looped variation is now called "pet"; emotes have been adjusted
to more neutral sounding phrases as this was requested by some users
2013-12-05 04:42:49 +01:00
WendyStarfall
260df5e69f update; Updater from contents 2013-12-05 04:36:48 +01:00
WendyStarfall
6d34841da3 anim; AO from contents 2013-12-05 04:35:39 +01:00
WendyStarfall
2530111c3e 3.940; we don't call home to AppEngine 2013-12-05 02:48:11 +01:00
WendyStarfall
ea86153305 customization guide improved 2013-12-05 02:43:49 +01:00
WendyStarfall
b561a101af proper version header 2013-12-05 02:22:26 +01:00
WendyStarfall
3f98b3f9c9 looks continuity; couples removed; pers. guide 2013-12-05 02:21:07 +01:00
WendyStarfall
5614cf5efa menu looks continuity; defaulting to white 2013-12-05 02:17:58 +01:00
WendyStarfall
0265b80fe5 menu looks continuity 2013-12-05 02:16:55 +01:00
WendyStarfall
ed2dc52458 3.940; proper attribution, redundancies removed 2013-12-05 02:09:22 +01:00
WendyStarfall
dfbef7803d 3.940; we don't call home to AppEngine no more \o/ 2013-12-04 23:32:28 +01:00
WendyStarfall
5c5b1de5b8 HUD 3.940 ready to ship 2013-12-04 22:48:39 +01:00
WendyStarfall
d3b204d864 North Glenwalker in-world; Owner HUD Guide 2013-12-04 22:33:47 +01:00
WendyStarfall
e478251850 proper attribution in hud specific license 2013-12-04 22:24:24 +01:00
WendyStarfall
f2ee5ba794 default to white 2013-12-04 22:18:55 +01:00
WendyStarfall
fcf473ad4a North Glenwalker in-world; hudmenu
we reset on rez
2013-12-04 22:18:07 +01:00
WendyStarfall
33c3cc7453 North Glenwalker in-world; hudmain
will not give selection menu for sub if owning only a single one
2013-12-04 22:16:45 +01:00
WendyStarfall
0452ef3253 proper headers 2013-12-04 22:14:44 +01:00
RayZopf
adb1f327cf Merge pull request #7 from OpenCollar/main
resync 3.937
2013-11-16 14:45:54 -08:00
WendyStarfall
04239ea561 3.937 ready to ship 2013-11-15 03:27:20 +01:00
WendyStarfall
c5f8d07cd1 prepping 3.937 2013-11-13 21:40:47 +01:00
WendyStarfall
2c7433214a Medea Destiny in-world; rlvex (fixes #45)
Medea: Bugfixes -  1. Reported issue, message about UUID not found when
trying to add other. I haven't found this to be repeatable, but I have
managed to get it to do it once. Increased llRequestAgentInfo timer to 4
seconds from 0.5, because 0.5 may simply be too short to reliably get a
response from the dataserver, particularly in a laggy sim. Hopefully
this will remove the issue, but let's monitor this.  2. Reported issue
in secowner exceptions not being set. Typo in settings was looking for
auth_secowner rather than auth_secowners in LM_SETTINGS_RESPONSE, so
secowners list was not getting filled.
2013-11-11 03:08:35 +01:00
WendyStarfall
9e5a0a0a2d 3.936 ready to ship 2013-11-08 05:38:11 +01:00
WendyStarfall
4a8a3938b7 Medea Destiny in-world; anim (fixes #53) 2013-11-08 04:56:58 +01:00
WendyStarfall
8d8047e76b Merge pull request #51 from RayZopf/main
changes to realleash and subspy + workaround for #54
2013-11-07 12:05:48 -08:00
RayZopf
45172da556 Merge pull request #6 from OpenCollar/main
sync back
2013-11-07 07:43:33 -08:00
RayZopf
ecbe4ac035 listener: try to avoid heap collision
just discarding and capping chat messages above a certain limit - 450
chars
giving out of order reports when limit (1000 chars) is reached
that is a workaround - no solution
state to user that radar timer is listen report timer too
2013-11-07 16:40:58 +01:00
WendyStarfall
b7c58dc05f rolling rlvtalk back for now 2013-11-06 06:53:41 +01:00
WendyStarfall
90ee5a032b Rebbie in-world; settings
Rebbie: Fixed up multiline and multi-item cache dump to text to properly
use new line characters at the start of each line so that the output
list is properly NOT concatenated into a single line per script despite
continuation characters.
2013-11-05 23:02:54 +01:00
WendyStarfall
e1ff08ce5a xx Reyes in-world; rlvtalk
slut (xx.Reyes): "stripped out all the @emote logic there..  emotes are
truncated automatically with chat exceptions"

fixes the problem with emotes sticking as restricted if using the clear
all button in the talk menu
2013-11-04 23:47:31 +01:00
WendyStarfall
2a88f2e679 Medea Destiny in-world; texture 2013-11-04 21:26:02 +01:00
RayZopf
f28319fb80 rewording message
not that someone thinks it's checking every and each feature
2013-11-04 01:21:25 +01:00
RayZopf
a6b7f7f9d0 startup messages again
removed parts of what i messed with before
2013-11-04 00:36:31 +01:00
RayZopf
fcdddbed88 Merge pull request #5 from OpenCollar/main
sync back
2013-11-03 13:22:28 -08:00
RayZopf
b617780eb6 some more startup info
installed does not mean active - (re)added messages
2013-11-03 22:03:10 +01:00
RayZopf
0f5404cf23 only date change 2013-11-03 22:01:55 +01:00
WendyStarfall
1ec1460f83 3.935 ready to ship 2013-10-29 11:36:46 +01:00
WendyStarfall
bd8f72cec5 version string for 3.935
for this release I'll put the version number, we can put an (is
checking) instead in the future but I don't mind editing this manually
2013-10-29 05:47:33 +01:00
WendyStarfall
8c96cd6675 Medea Destiny in-world; update
Medea: Bugfix for sending collarversion to menu script, 1 and 0 instead
of TRUE and FALSE;
2013-10-29 05:28:24 +01:00
WendyStarfall
99c0839c1a 3.935 bundles
stock textures bundle is back and independant of the texturizer; Posture
is in by default to bring it among people for feedback
2013-10-29 03:49:30 +01:00
WendyStarfall
a0f3bc8044 Medea Destiny in-world; texture
Medea: "Added support for texture notecard named textures_custom which
will be read instead of the standard texture notecard if present. Also
put MENUNAME_RESPONSE into onrez in place of reset. This menu building
system is... uh... yeah."

Karo: "removed llToLower() in GetLongName(), GetElementHasTexs() and
BuildTexButtons() functions. This commit makes textureable elements case
sensitive; we need that if textures are exclusive to specific elements
on the collar otherwhise those textures would have to be named like the
element but in lower caps"

Medea: "Flip side, now it relies on them being the same. Risk of
breaking some existing content here? I'm inclined to say it would be
better to put llToLower on both sides of the test comparisons, no?"
2013-10-28 09:50:54 +01:00
WendyStarfall
74a5dab548 Medea Destiny in-world; menu
Medea: fix for kID instead of kAv for inventory giving.
2013-10-28 09:47:26 +01:00
WendyStarfall
9c02cce5c5 Medea Destiny in-world; lock
Medea:

New feature: Added support for setting in defaultsettings notecard
User_lock=locksound~<value> and User_lock=unlocksound~<value> accepting
either a UUID or a sound in inventory or "default", which restores the
sounds to the default setting: User_lock=locksound~default . Shall we
put something in Options menu to set this? Or keep it as a designer's
thing? Or play a sound called "lock" if found in inventory regardless of
settings?

Other enchancements: Memory limit set to llGetUsedMemory (after building
list)+6000 should enough memory, but THIS NEEDS WATCHING! Minor
efficiency improvement to SetLockElementAlpha (using g_iLocked and
!g_iLocked for alpha values instead of fAlpha). Removed unnecessary
on_rez event. Fixed GetPSTDate so that conversion on the 1st of the
month before 8am UST doesn't return the 0th of the month. Fix foolishly
does not account for centuries not being leap years, yes, yes, I know I
was lazy, but we've got 86 years to fix this.
2013-10-28 09:45:56 +01:00
WendyStarfall
6b76410d72 Medea Destiny in-world; anim
Medea: Added support for posture collar neck locking using provided
~PostureOverride animation, or another animation named in
g_sPostureAnim. Supplied animation locks head and neck and priority 6 to
ensure overriding. If the animation is found in inventory, animation
menu will have a "☐Posture" as button defined in POSTURE. Button will
not show if animation is not present. Also responds to chat commands
"posture on" and "posture off". Posture is saved in settings with the
token (g_sPostureToke) posture=1 when active, and read back from
settings/defaultsettings notecard when settings are sent by settings
script. Posture is reposed when animations refreshed and when
permissions are granted (i.e. on attach) if g_iPosture is TRUE.

Removed reset on rez. CreateAnimList now happens if g_iNumberOfAnims
changes instead of each rez. Much more sensible. requestperm() removed
(let's not have single use functions! Bad! Naughty!) and permission
requested in attach event instead, saving the unnecessary
if(llGetAttached()); call. run_time_permissions is added to allow
restoring posture. Also, good practice to have it. Probably should store
permission in an integer to save llGetPermissions checks. We should
consider if we want to refresh poses here rather than having all poses
scrapped on rez as current. Added remenuing to the animation menu where
sensible.
2013-10-28 09:41:41 +01:00
RayZopf
b5ae6488fe mini change to realleash -notify wearer on enable
much more to do ... also kind of bugfixing needed
2013-10-27 23:30:04 +01:00
RayZopf
ef232e0a18 Merge pull request #4 from OpenCollar/main
3.934 sync
2013-10-27 15:28:08 -07:00
WendyStarfall
51e9c441f7 3.934 ready to ship 2013-10-27 05:16:41 +01:00
WendyStarfall
c03a1e8789 font compatibility III
that one is just specific to the updater itself
2013-10-27 04:14:43 +01:00
WendyStarfall
d12f3a73d3 font compatibility II
swapped are the eject, stop and endless symbols
2013-10-27 02:57:54 +01:00
WendyStarfall
334025e2b0 font compatibility; anim
the next bunch of commits will remove all unicode characters that aren't
compatible with the custom fonts some viewers use
2013-10-27 02:25:35 +01:00
WendyStarfall
03a2c9cd7c inventory kinks; wording
For whatever reason we need to spoof the chat command to be authorized
getting notecards from the inventory; that's fine and we can look into
this whenever we have time or entirely for OC4; also some changes to
wrap up with the previous commit for settings
2013-10-27 02:07:49 +01:00
WendyStarfall
f81f17e5f0 help url in options menu; wording
I'm putting the url loader for the settings guide right into the
options/settings menu, then we have full buttons and I think the feature
in general is something you either bother with for a reason or totally
can ignore as a user; it's all in one place now =)
2013-10-27 02:36:50 +02:00
WendyStarfall
6811dc3c04 priority rank; redundant textures
We run smoother updates if we remove clutter right away, I left Core as
Nr. 1 but might be best to do the DEPRACATED bundle as first. Let's see
for 3.935
2013-10-26 13:27:41 +02:00
WendyStarfall
b935aca974 extended attention blurb
I've added a little more text to the heads-up print for subspy being
installed. Couldn't resist it..
2013-10-26 13:23:01 +02:00
WendyStarfall
c360a17593 3.934 for headers
so we know which of the scripts are in fact altered with an update;
let's just bounce all the changed ones up to the current version to
remove some confusion if people edit in-world
2013-10-26 12:05:04 +02:00
WendyStarfall
918f54fc3d updater prompt re-merge 2013-10-26 11:56:54 +02:00
WendyStarfall
7a1a2abd7e texture UUIDs; texture bundles adjusted
addendum to efe9d1163c
2013-10-26 11:53:07 +02:00
WendyStarfall
82a8442bad Medea Destiny in-world; update
Medea: version check now sends LM_SETTINGS_RESPONSE
collarversion=versionnumber=isLatestVersion(TRUE/FALSE). this is read by
the menu script to put the actual version number in menus, and allow
prompts to indicate if an update is available.
2013-10-26 09:50:37 +02:00
WendyStarfall
bdab4b844c Medea Destiny in-world; texture
Medea: New Feature. Allow textures to be specified in a texture
notecard. Notecard must contain textures on a separate line per texture,
in the format name,uuid.

Wendy: Woooot! \o/
2013-10-26 09:47:44 +02:00
WendyStarfall
3736eecc9a Medea Destiny in-world; settings
Medea: Added a load defaults button to menu to user to reload the
settings from the defaults notecard without having to open the notecard,
edit it, and save it again, as script is only being reset on a changed
owner. This allows people to restore settings more easily, for example
if they change appearance or if they runaway and want to restore the
owner settings from the defaults card.

Menu Changes: the help/debug > settings setup removed, now help goes
into the help/about menu and these functions appear in the Options menu
under main. For the sake of simplicity, Fix Menus is now handled here,
by using llResetOtherScript();
2013-10-26 09:43:14 +02:00
WendyStarfall
def66459b3 Medea Destiny in-world; rlvmain
Medea: Some situation could cause the viewer check to get stuck. Not
clear what, but I've thrown in a few robustness measures that hopefully
should sort that out.
2013-10-26 09:40:55 +02:00
WendyStarfall
b92c146173 Medea Destiny in-world; rlvfolders
Medea: removed many newlines from browse folder prompts, it was getting
ridiculously big!

Wendy: thanks for looking over the formatting, I did it pretty much in
one run for all scripts and it's true, in this case it's tidy enough
without the line breaks; had to laugh about the menu getting so big,
it's hilarious, I wonder if we could hit a size limit? XD

Support Question: "Help! My menu is so big it don't fit on the screen
anymore!!!"

Support Answer: "If you have a HD 16:9 screen, turn your monitor 90°."
2013-10-26 09:35:29 +02:00
WendyStarfall
c053eb5c75 Medea Destiny in-world; rlvex
Medea: Removed SetOwnerExs as it's never called. Added a check to
setAllExs to  avoid setting exceptions for wearer (for example if the
wearer is set as an owner) as they're pointless.
2013-10-26 09:28:44 +02:00
WendyStarfall
e75817065a Medea Destiny in-world; menu
Medea: reimplemented Menuto function for hud channel. This seems to have
been lost by the wayside in the interface channel mods. I've added a
check to see if the object owner is the same as the menuto target key,
as this will mean a new auth is not required and saves double authing in
that situation (probably the most common).

Menu changes. help/debug is now replaced with Options menu, operated
from the settings script. Refresh menus is now done from the Options
menu in settings, using llResetOtherScript instead of from here, to keep
things simple. Info button in main menu is now a Help/About menu, which
has links to wiki in a button in it, and gets the various help buttons
formerly in the help/debug menu. Update script now sends the current
version and whether there's an update available. The actual version
number is now reported in main and in help/about, and the prompt text
for all three menus is returned by a function now instead of stored in a
list, which allows us to keep up to date, and notify in help/about
prompt when an update is available.

Added button in Help/About to give license notecard and another to open
Defaultsettings help URL.
2013-10-26 09:26:43 +02:00
WendyStarfall
57c3dc0f86 Medea Destiny in-world; dialog
Medea: Project:despam! NOT READY FOR RELEASE, still needs a small logic
check at minimum, not to mention a little testing to see how effective
it is! What is Project: despam!? It's about making certain menus less
spammy. Previously, if any button options were sent to dialog where the
button length is too long, the dialog system would add numbers to the
buttons, and send the list of them to Noftify, so the menu user has a
key to truncated buttons. Example: #RLV browsing, you might have buttons
for Black Leather Skirt and Black Leather Cuffs. This would then become
"1.Black Leath" and "2.Black Leath" as buttons, and the chat would
include "1. Black Leather Skirt", "2. Black Leather Cuffs". Necessary
for identifying truncated buttons, but horribly spammy!

So, Project: despam does this. Instead of listing out all the buttons
after the dialog is sent, as current, the listing process is now done in
the dialog function. Advantages: removed doubling up of various
functions used both in the dialog routine and in the spamming routine,
the list now only provides a list for the current page when selected to
reduce spamminess, and best of all, if there's enough room, the list
will be displayed in the menu prompt and not sent to local chat at all.

Added PrettyMain to make main menu look better.
2013-10-26 09:21:12 +02:00
WendyStarfall
effb8c2e06 Medea Destiny in-world; auth
Medea: submenu name changed to "access" for menu updates and chat
command for submenu updated to match (now works with both <prefix>owners
and <prefix>access. Much bigger update to this script is in the works,
but I think that's all that's needed for this release.
2013-10-26 09:18:10 +02:00
WendyStarfall
171942295e Merge pull request #49 from RayZopf/main
Notify owners on SubSpy disable
2013-10-26 00:05:08 -07:00
RayZopf
157ade3fc8 remove double message
only one message if wearer = owner, added sub's name to message
2013-10-25 03:37:26 +02:00
RayZopf
52309ed713 Notify owners on SubSpy disable
only when safeword is used
2013-10-25 02:59:01 +02:00
WendyStarfall
7386956975 header, unicode 2013-10-11 17:35:52 +02:00
WendyStarfall
6e67985da1 Merge pull request #44 from RayZopf/main
bugfixes and minor modifications
2013-10-11 04:28:12 -07:00
RayZopf
7bc4318ace additional warning messages for wearer
on rez, when wearer/owner changes or when using safeword/runnaway
2013-10-10 02:54:09 +02:00
RayZopf
199e9a5d74 bugfixes, minor modification
save settings working again
added runaway
warning on startup when enabled via defaultsettings NC
2013-10-10 02:18:21 +02:00
RayZopf
215e70fc83 small bugfix
show Real-Leash status only once when reading from defaultsettings NC
2013-10-10 01:53:35 +02:00
RayZopf
49b139878f Merge pull request #3 from OpenCollar/main
3.933 sync
2013-10-09 03:16:23 -07:00
WendyStarfall
fc20e23771 3.933 ready to ship 2013-10-09 09:06:21 +02:00
WendyStarfall
3e0a06bb28 3.933; headers and OCD check 2013-10-09 08:41:47 +02:00
WendyStarfall
7a4f189d06 3.933; update menu text 2013-10-09 08:11:21 +02:00
WendyStarfall
c8278e8f50 3.933; Updater Master wording/naming 2013-10-09 08:10:11 +02:00
WendyStarfall
7cec8e0e78 3.933; Real Leash added 2013-10-09 08:06:46 +02:00
WendyStarfall
8e3049342e 3.933; Core bundle adjusted 2013-10-09 08:03:23 +02:00
WendyStarfall
8f05979930 3.933; Couples bundle new 2013-10-09 08:01:26 +02:00
WendyStarfall
cf743b04e6 3.933; Poses bundle new 2013-10-09 08:00:15 +02:00
WendyStarfall
35018a9a1c 3.933; Texture bundle split 2013-10-09 07:58:24 +02:00
WendyStarfall
568af58ea9 3.933; RLV bundle unified 2013-10-09 07:54:26 +02:00
WendyStarfall
802e51b832 3.933; renaming bundles 2013-10-09 07:51:04 +02:00
WendyStarfall
8f90599931 Medea Destiny in-world
Medea: "replace g_sParticleTextureID with texture name if NULL_KEY. This
is for non full perms textures, which return a null key, giving a blank
particle. This should still work for linked leash points if the texture
is added to the leash point as well. "
2013-10-09 06:26:45 +02:00
WendyStarfall
e1ea0e2274 should fix #41 2013-10-09 06:24:18 +02:00
RayZopf
660651207b Merge pull request #2 from OpenCollar/main
backsync
2013-10-08 13:02:50 -07:00
WendyStarfall
4c065e25db typo and trying to make diffs work
I also bin the old "real leash", Ray was right to change the naming for
convention and in case it would up the settings if a name is two words
2013-10-08 21:16:01 +02:00
WendyStarfall
8c0ade4019 Merge pull request #42 from RayZopf/main
bugfixing on Real Leash
2013-10-08 10:39:09 -07:00
RayZopf
28637f97a8 stay in menu after dis/enabling RealLeash
stupid mistake
2013-10-08 18:14:50 +02:00
RayZopf
12c46f367c version number
only in comment
2013-10-08 17:13:09 +02:00
RayZopf
49ba8d605d code cleanup, minor bugfixes
removed unused functions
have defaultsettings NC working
2013-10-08 17:08:43 +02:00
RayZopf
c428d97242 initial version
same as last OpenCollar - real leash.lsl
with minor changes
2013-10-08 16:11:10 +02:00
RayZopf
9548528386 many small changes 2013-10-08 16:11:08 +02:00
RayZopf
4810aa9175 Revert "many small changes"
This reverts commit f39761f809.
2013-10-08 16:00:00 +02:00
RayZopf
f081c973fd many small changes 2013-10-08 15:59:41 +02:00
RayZopf
7f7190d230 debug code, indent again
much indent changes...
- linkmessage part is badly coded
2013-10-07 22:23:53 +02:00
RayZopf
fbd2c70ddf indent changes
let LSL-Editor change document/indent format
2013-10-07 19:16:08 +02:00
RayZopf
66373a61aa Merge pull request #1 from OpenCollar/main
sync back
2013-10-06 16:41:15 -07:00
RayZopf
8aee5b8f6a try to get it working again
cosmetic changes
save settings - changed everything to former httpdb
rlv-detection/leashto - new linkmessages
2013-10-07 01:28:36 +02:00
WendyStarfall
6a7e75b670 Medea Destiny: major rlvex menu overhaul
Medea: "I've overhauled the menu appearance as it wasn't really that
easy to understand, following the RLV terminology which is a bit of a
headache for scripters, let alone users. Descriptions are clearer and
now represent the current state, and we use unicode ☐ and ☒ to indicate
selected/deselected state on the buttons, common with unicode
enhancements to other menus. ALL buttons indicators swapped to make
clearer the effect of pressing them, and the person to whom the
exceptions will be added/removed is now named at the top of the menu.
Finally, I've cleared up remenuing a little. When someone who is not an
owner/secowner is set to default and removed from the list, we now
return the personlist, and when a new person is added, we remenu."
2013-10-07 01:04:14 +02:00
WendyStarfall
f36fcc5e6a by Karo Weirsider in-world: case sensitivity
this commit makes textureable elements case sensitive; we need that if
textures are exclusive to specific elements on the collar otherwhise
those textures would have to be named like the element but in lower caps
2013-10-06 20:35:31 +02:00
WendyStarfall
507dafeb7a by Medea Destiny in-world: boy/girl request
Medea: "Anyway. This version has Wendy's request to offer a menu when
the ao is reset or has a new owner, asking the user to pick the correct
notecard."
2013-10-06 19:25:35 +02:00
RayZopf
1a0a03e480 cosmetic
only formating and comments
2013-10-04 02:20:23 +02:00
WendyStarfall
50556eaecf Merge pull request #39 from RayZopf/main
make badwords addon working again with defaultsettings NC
2013-10-03 04:14:16 -07:00
RayZopf
350fc06478 make badwords addon working again with defaultsettings NC
replaced '~' with ','
-makes reading settings from NC working again
-gives correct dump settings output to place in NC
and cosmetic change by replacing 'or' with ',' when listing badwords
2013-10-03 01:27:07 +02:00
WendyStarfall
3076c9279b spare parts init
I'm adding them to repo in case somebody will want to work on them or
dig around in the spare parts box we keep under the bed. =)
2013-10-01 22:48:19 +02:00
WendyStarfall
9602f7e5b7 3.932 ready to ship 2013-10-01 00:00:46 +02:00
WendyStarfall
bf1ba27124 prepping 3.932 2013-09-30 23:40:23 +02:00
WendyStarfall
30b52ab92f Merge pull request #37 from KaroWeirsider/main
Update for Issue #23 Update button giving 2 dialogs
2013-09-30 14:22:51 -07:00
KaroWeirsider
fdaca90ccc Update for Issue #23 Update button giving 2 dialogs
TucoSolo's suggested correction is accurate.
Also updated the formatting for consistency
2013-09-30 16:29:34 -04:00
WendyStarfall
8ee315b576 Merge pull request #36 from KaroWeirsider/main
Update for Issue #25 OpenCollar 3.931 - Badwords: button "ClearAll" call...
2013-09-30 12:29:04 -07:00
KaroWeirsider
5847e2ddbf Update for Issue #25 OpenCollar 3.931 - Badwords: button "ClearAll" call DialogBadwords twice
Commented out the duplicate call for a dialog.
Modified some other sections for consistency in coding style.
2013-09-30 15:24:24 -04:00
WendyStarfall
6c070d6022 Merge pull request #35 from KaroWeirsider/main
Update for Issue #30 Post button pops up unusable Leash menu
2013-09-30 11:19:15 -07:00
KaroWeirsider
edadee6bf2 Update for Issue 30
Correction for Buttons in Leash menu not functioning properly
2013-09-30 13:51:09 -04:00
WendyStarfall
3a10c92ce3 Update README.md 2013-09-30 19:40:14 +02:00
WendyStarfall
907dc8ac16 fixes issue #27 2013-09-30 12:25:26 +02:00
WendyStarfall
0d597890a4 Merge pull request #1 from Tzolkat/beta
Add Typing Override from ZHAO-II-MB2.x
2013-09-28 21:59:44 -07:00
Alex Carpenter
7392f7845f Add Typing Override from ZHAO-II-MB2.x
This is a simple port of the necessary code to make a typing override
work. A better fix would be to rebuild the Opencollar AO on top of the
MB2.x modified ZHAO, which includes memory optimizations, but I am not
sure how the OC devs feel about doing that. I did my best to mimic the
style of the original script, though IMO parts of it are horrible to try
and read.
2013-09-28 06:26:04 -04:00
WendyStarfall
0ca44b2fe7 bringing back 3.600 as is for the base 2013-09-27 20:29:19 +02:00
WendyStarfall
8dc5f4c6a3 3.931 Main ready to ship 2013-09-27 16:00:48 +02:00
WendyStarfall
1de6ebabe7 #22 badwords clearall fixed 2013-09-27 15:33:00 +02:00
WendyStarfall
7d5dc3cc88 3.930 Main ready to ship II
typo..
2013-09-26 00:53:49 +02:00
WendyStarfall
de2d4d178e 3.930 Main ready to ship 2013-09-26 00:53:00 +02:00
WendyStarfall
9860977887 3.930; main channel links 2013-09-25 22:29:21 +02:00
WendyStarfall
bf0d6a6573 3.930 ready to ship 2013-09-25 21:36:24 +02:00
WendyStarfall
58487b2011 3.930; updater master tiny edit 2013-09-25 21:06:05 +02:00
WendyStarfall
c35252d13b 3.930; unicode and formatting 2013-09-25 21:02:19 +02:00
WendyStarfall
37c55d0dfc 3.930; unicode and commenting timeout 2013-09-25 21:01:12 +02:00
WendyStarfall
800a87efe3 3.930; update help text 2013-09-25 20:57:19 +02:00
WendyStarfall
ed4bbe7bb6 3.930; menu polishing
#21 I'm asking to query for version number so users can see it spot-on
in their main menu without having to <fix>version or Get Version; I put
a static number there as a pita until we put a proper query there; the ℹ
text works now better with 3rd party designs, nobody should get confused
no more =)
2013-09-25 19:45:22 +02:00
WendyStarfall
00133b9480 3.930; OCD check and headers
this helps me in my workflow for compiling in world and making sure what
we have in world is what we host on github; the scripts with changes get
a sticker (version up in the header) when loaded up and sent back with
it
2013-09-25 19:40:23 +02:00
WendyStarfall
9b1263c24e menu: enhancement proposal #21 2013-09-25 15:48:04 +02:00
WendyStarfall
894ffda240 rlvundress: unicode, wording and formatting 2013-09-25 15:23:08 +02:00
WendyStarfall
6c1f4a5da1 rlvtp: unicode, wording and formatting 2013-09-25 15:06:49 +02:00
WendyStarfall
ae7819ec0a rlvtalk: unicode, wording and formatting 2013-09-25 15:05:31 +02:00
WendyStarfall
26c69be822 rlvsit: unicode, wording and formatting 2013-09-25 15:04:50 +02:00
WendyStarfall
35ab9543dc rlvmisc: unicode, wording and formatting II 2013-09-25 15:04:00 +02:00
WendyStarfall
ddd904ba67 rlvrelay: unicode, wording and formatting 2013-09-25 14:33:58 +02:00
WendyStarfall
0a0fdd6a55 rlvmisc: unicode, wording and formatting 2013-09-25 14:14:38 +02:00
WendyStarfall
2e8c70ed3f rlvmain: unicode and formatting 2013-09-25 14:06:12 +02:00
WendyStarfall
b78e697085 rlvfolders: unicode and formatting 2013-09-25 14:04:41 +02:00
WendyStarfall
5750d24a0a rlvex: unicode and formatting 2013-09-25 13:52:35 +02:00
WendyStarfall
5382e768b7 timer: unicode, wording and formatting
issue #20 described the problem with this addon not doing well together
with the key return feature; otherwhise the timer works just fine
2013-09-25 13:47:16 +02:00
WendyStarfall
82e3c6a7ed keyholder: unicode, wording and formatting III
this one won't do well with unicode symbol checkboxes; I also opened
issue #20 to tell about the broken inter-compatibility with the timer
addon
2013-09-25 13:45:24 +02:00
WendyStarfall
d20ae48912 subspy: unicode, wording and formatting 2013-09-25 12:34:51 +02:00
WendyStarfall
64b9cf7238 texture: unicode, wording and formatting 2013-09-24 22:41:24 +02:00
WendyStarfall
7541555221 update: just formatting 2013-09-24 22:36:22 +02:00
WendyStarfall
ab49771b70 settings: unicode, wording and formatting
and that solves the problem with the cut off button! hrhrhr :3
2013-09-24 22:33:07 +02:00
WendyStarfall
f8519ba939 menu: unicode, wording and formatting
along to that there is also an "About" (ℹ) pop-up now that will serve as
homepage link, license info and copyright info; there are also two more
buttons for Help/Debug to join the Chatter or R&D group; for line 285 to
294 I have received help by xx Reyes in world - thank you!!
2013-09-24 22:11:13 +02:00
WendyStarfall
0392da7718 lock: wording and formatting 2013-09-24 21:36:56 +02:00
WendyStarfall
b111554271 leashParticle: unicode, wording and formatting
here I also add the new color set and rename the L(eash)-Options inside
of Leash Options to "Advanced" (in submenu: Advanced Leash Options)
2013-09-24 21:34:57 +02:00
WendyStarfall
b370547cff leash: unicode, wording and formatting 2013-09-24 21:32:55 +02:00
WendyStarfall
f09edf6403 label: unicode, wording and formatting 2013-09-24 13:15:12 +02:00
WendyStarfall
192330e16d keyholder: unicode, wording and formatting II
forgot checkboxes; also needs some formatting for the menu texts yet
2013-09-24 13:05:58 +02:00
WendyStarfall
d52e2c0974 keyholder: unicode, wording and formatting
this one is still unstable
2013-09-24 13:01:23 +02:00
WendyStarfall
c1330dea01 hide: unicode, wording and formatting 2013-09-24 12:58:14 +02:00
WendyStarfall
06720da029 getavi: unicode, wording and formatting 2013-09-24 12:29:52 +02:00
WendyStarfall
a3ccbf5782 garble: updated safeword 2013-09-24 12:28:32 +02:00
WendyStarfall
f2a50a4d7f dialog: unicode, wording and formatting
here I also comment the timeout line that would display in each menu; we
keep it in case we want it back or for others to see how it is possible
to add the same string to each menu
2013-09-24 12:25:56 +02:00
WendyStarfall
e69f646ec5 coupleanim: unicode, wording and formatting 2013-09-24 12:21:40 +02:00
WendyStarfall
57b89f7163 color: unicode, wording and formatting 2013-09-24 12:16:53 +02:00
WendyStarfall
e9fcd4f858 camera: unicode, wording and formatting 2013-09-24 11:42:27 +02:00
WendyStarfall
d37de69941 bell: unicode, wording and formatting 2013-09-24 08:11:44 +02:00
WendyStarfall
a54e69a45b badwords: unicode, wording and formatting 2013-09-24 07:52:46 +02:00
WendyStarfall
101adea303 auth: unicode, wording and formatting 2013-09-24 07:43:04 +02:00
WendyStarfall
33ab027c56 appearance: unicode, wording and formatting 2013-09-24 07:38:53 +02:00
WendyStarfall
dc12b69325 unicode, wording and formatting I
I'm also adding a new chat command "stop" here  to release poses;
2013-09-24 07:29:50 +02:00
WendyStarfall
a5ff1182c1 issue #14 keyholder: force return added by medea 2013-09-22 20:34:25 +02:00
WendyStarfall
8af7ad2bee issue #14 keyholder: safeword issue fixed
that one adds the bit to the safeword so it will also lift the lockout;
that was only half the issue fixed tho, owners can force return the key
but the other person who held the key still keeps access to the menu
2013-09-19 15:06:50 +02:00
WendyStarfall
1b485d4f7e some edits and formatting 2013-09-19 13:07:35 +02:00
WendyStarfall
b8c6ed5501 3.929 ready to ship 2013-09-19 12:47:30 +02:00
WendyStarfall
f8a7e362b6 version in comments
ups the version in appearance in badwords to reflect those two were
altered; it was the == in badwords and the grammar corrections in
appearance; both contributed by Nori Ovis/Boxspring
2013-09-19 07:36:04 +02:00
WendyStarfall
ac5c7e20aa 3.929; Medea in-world
MD: "fixing that messed up chat retextureing command with "settexture
element texture" format to do it properly. See notes to 3.921 below,
this kills the scriptiness. Also, removes arbitrary warning when
appearance is locked which was spamming the message on unfiltered link
messages from wearer."
2013-09-19 07:03:02 +02:00
WendyStarfall
4bf700edd2 Merge pull request #15 from Boxspring/beta
Appearance script grammar fixes: "From Tuco Solo's incorrect grammar report. #13"
Contributed by Nori Ovis
2013-09-18 19:34:14 -07:00
Boxspring
dc310289b0 Appearance script grammar fixes. 2013-09-18 07:26:15 -07:00
WendyStarfall
7e0f4f8f7c Merge pull request #12 from Boxspring/beta
Contributed by Nori Ovis; Fixed setting overwrite in Badwords: "Penance Phrase would overwrite Badwords list."
2013-09-18 06:06:34 -07:00
Boxspring
929f475280 Fixed setting overwrite in Badwords:
Penance Phrase would overwrite Badwords list.
2013-09-18 05:54:36 -07:00
WendyStarfall
1ca28469fd 3.928 ready to ship 2013-09-18 13:47:10 +02:00
WendyStarfall
f58b702348 3.928; grooming and mayonese
yep, yep! this one includes a new tidy header for license and such, some
formatting and mayonese.
2013-09-18 13:19:08 +02:00
WendyStarfall
652d0fc6ac 3.928; Medea Destiny and Edgar Yven in-world
@rlvsit.lsl - Medea: "addition to 3.925, sensor is called in two
separate places (ugh), fix to apply 3.925 change to both. Spotted by
Edgar Yven."
2013-09-18 09:08:50 +02:00
WendyStarfall
5c2b581144 3.927 ready to ship 2013-09-17 23:28:38 +02:00
WendyStarfall
2f33d99a7b 3.927; Medea Destiny in-world contribution
@bell.lsl - Medea: "Update g_kOwners in on_rez event, as we don't
necessarily reset this script and currently we may get failed permission
requests targeting the wrong avatar! See line 513. Added check for
runaway, if bell should be hidden, sleep for 4 seconds then re-hide the
bell elements. This is to avoid other scripts resetting visibility. See
line 712. Added changed event: INVENTORY changes mean more sounds may be
available, so redo prepareSounds(), and LINK to redo
BuildBellElementList(). See line 753"

@camera.lsl - Medea: "added perms check before attempting to clear
camera params in case of reset when collar not worn."
2013-09-17 07:30:39 +02:00
WendyStarfall
6e7b6be930 3.926 ready to ship 2013-09-17 06:03:28 +02:00
WendyStarfall
4bd3f3e8f2 3.926; Corwin Davidson pull request #4
we are adding this one afterall to solve a problem with the bell plugin
getting confused by the menu and element sharing the same name; the menu
or element should be renamed nevertheless; also correcting the
"contributors so far" to reflect Corwin because we didn't really know
who and I just added Kittyn believing it came from her, doesn't matter
though as both shared with us; this commit does not deal with issue #7
yet!
2013-09-17 03:34:13 +02:00
WendyStarfall
26361577c6 added a website button
so this empty, lonely button in the main menu finally has a good purpose
now <3
2013-09-16 22:33:08 +02:00
WendyStarfall
f2c401d34c 3.925 ready to ship 2013-09-16 18:04:44 +02:00
WendyStarfall
6efad70df9 3.925; we send out full replacements for updates 2013-09-16 17:23:26 +02:00
WendyStarfall
0504381c17 3.925; North Glenwalker in-world contribution
adds a little cuffs specific magic
2013-09-16 12:44:39 +02:00
WendyStarfall
39bf3d5de2 notecards brought up to speed 2013-09-16 12:30:02 +02:00
WendyStarfall
f21a2a03f2 file extensions for sync; news item redundant 2013-09-16 12:02:19 +02:00
WendyStarfall
5f76595604 North's tidier update 2013-09-16 11:57:02 +02:00
WendyStarfall
6c00f0a1c3 3.925; Medea Destiny in-world contribution I
"3.925 Revision Proposal, Medea Destiny. ISSUE: Sit Now button will not
return all objects. What's going on? It's a bit of an oddity about the
way sensors work. The SCRIPTED sensor flag only returns active scripted
items, i.e. scripts actually doing something like listening. A
work-around that seems to work is to search for PASSIVE|SCRIPTED in the
sensor, then filter by llDetectedType, which gives SCRIPTED for
non-active scripts. I've implemented that in this script. The downside
is you'll get fewer objects returned to the SIT_NOW menu as the sensor
will pick up the nearest 16 PASSIVE or SCRIPTED items, so you'll have to
be nearer to the object. So, pro: you'll now be able to find dumb sit
scripts. Con: you'll have to be nearer the item. Is this a good
trade-off?"

It's a good trade-off.
2013-09-16 04:34:22 +02:00
WendyStarfall
a45d2be963 3.924 ready to ship 2013-09-16 03:06:39 +02:00
WendyStarfall
f09f90ef41 removal of interface.lsl III
this one will rid contents of the interface script after installing
3.924; one last time if we need it back, it is still present in the
3.844 branch
2013-09-16 02:48:22 +02:00
WendyStarfall
edcddf52d7 removal of interface.lsl II
this one removes the interface from the core bundle; again if we need it
back, it is still present in the 3.844 branch
2013-09-16 02:43:31 +02:00
WendyStarfall
3bd5fd08a4 removal of interface.lsl
okay, that's a tough one, this commit makes the interface.lsl script
gone, poof, away.. if we need it back, it is still present in the 3.844
branch!
2013-09-16 02:26:56 +02:00
WendyStarfall
b6d74c109e 3.924; Medea Destiny in-world contribution
rlvmain: line 16, halved query timer to 30s * 2. line 510, removed
llResetScript(). line 560, i_OwnerCount added to remove llGetListLength
from a loop.
listener: brings back old interface behaviour; line 13-16, line 41-42,
line 92-93, line 142-143, line 189, line 209-232, line 318-322 and line
336 (putting it for those who will not want to use diff for whatever
reason)
2013-09-16 01:50:25 +02:00
WendyStarfall
dd7ebcea77 two contributors were missing 2013-09-12 04:22:20 +02:00
WendyStarfall
756c163888 3.923 ready to ship
this one has the fix for the subspy plugin contributed by LoveMeNow2013
(github: macom2013)
2013-09-11 14:37:57 +02:00
WendyStarfall
f6319b2e93 Merge pull request #6 from macom2013/macom2013
Fix subspy notification code by LoveMeNow2012
2013-09-11 04:13:24 -07:00
macom2013
ce2eb5a451 Fix subspy notification code by LoveMeNow2012
Notify collar owner via IM if he is not nearby, else notify him via
RegionSay
2013-09-11 12:45:57 +02:00
WendyStarfall
e40370f05d 3.922; Medea Destiny in-world Contribution
Medea Destiny's fix for the dump cache/texture setting bug: "The
previous version was basically treating everything as a texture setting
to an arbitrary element, because it didn't check to see if the element
exists." Medea feels that the current technique used is possibly
over-scripty and will hit that routine too often.
2013-09-08 19:26:25 +02:00
WendyStarfall
7cd2d2f9d1 3.921 ready to ship
Altered parentheses for AO/HUD compatibility by North Glenwalker;
we still have the funny "feature" to issue a <prefix>iwffjnf
CollarElement Texture Name;
we contemplate if to fix the ghost menu items in the texture settings
dump are to be fixed with protective code or if to investigate further
2013-09-04 22:14:40 +02:00
WendyStarfall
032660c7eb parantheses changes
contributed by North Glenwalker
2013-09-04 20:20:59 +02:00
WendyStarfall
f16de57a20 North Glenwalker; AO to collar II 2013-09-04 12:38:58 +02:00
WendyStarfall
4cd396c932 North Glenwalker; AO talk to collar 2013-09-04 12:01:19 +02:00
WendyStarfall
fc6b2a4219 North Glenwalker fix for AO/Hud compatibility 2013-09-04 11:52:17 +02:00
opencollar
d61bd58c5e beta channel 2013-09-04 09:23:39 +02:00
opencollar
77ff6c4470 a ninja eated .gitattributes 2013-09-04 09:00:43 +02:00
opencollar
be89322307 markdown fun 2013-09-02 20:02:29 +02:00
opencollar
8549165d91 blurb 2013-09-02 20:00:32 +02:00
opencollar
d94a8a5fe7 file extensions for scripts 2013-09-02 19:13:35 +02:00
opencollar
08c157fff3 3.920 bundles 2013-09-02 12:17:18 +02:00
opencollar
8ec584790f 3.920 ready to ship
touch back as default
2013-09-01 09:40:05 +02:00
opencollar
33fe60978b 3.919 ready to ship
fixed a content bug that would wrap root prims in the plywood texture
2013-08-31 10:17:09 +02:00
opencollar
bfa67503f6 3.9 api templates 2013-08-31 08:25:59 +02:00
opencollar
3e5fe54650 3.918 ready to ship (formatting) 2013-08-31 07:53:17 +02:00
opencollar
1f6e399315 3.918 ready to ship
mission goals; nirea's original text for the readme modified and put
back
2013-08-31 07:33:26 +02:00
opencollar
e43560ed74 3.918 wrap-up II
interface has to be a core item; keyholder plugin plugin "replaced" by
keyholder plugin; touch and garble are by default optional features
2013-08-31 06:38:04 +02:00
opencollar
a25f98d86f 3.918 wrap-up
interface and garble added; manual merge 3.844 -> 3.913 -> 3.914;
in-world steps towards 3.918; all scripts got a newline at end;
practical test of saving scripts stored in object contents to the
desktop ->
will asset lag have any impact on saving to desktop from the script
editor?
2013-08-31 06:17:05 +02:00
opencollar
310960f852 GPLv2 + Addendum
This is just so people won't have to digg around the LSL folder to read
the full license.
2013-08-31 02:41:29 +02:00
opencollar
03042c5747 gitattributes
newlines cannot be normalized for us:
bundles even if being non-binary don't love newlines, it messes with the
updater parsing the "playlist" if the last item is
nullnilnadazeronothingyemptynewline
2013-08-31 02:24:03 +02:00
opencollar
faa0e7d2d8 Revert "3.913 merge (messy)"
This reverts commit c3ee38d3f5.
2013-08-31 02:16:22 +02:00
opencollar
318dd490fb 3.913 merge (messy)
This looks like I will have to manually go over file by file but...
let's see what happens anyway! =)
2013-08-31 02:09:05 +02:00
opencollar
ba789f56a9 3.914 bundles
defaultsettings need no longer be overidden; touch and garble optional
2013-08-31 01:54:09 +02:00
opencollar
d52b2d7895 3.912 ready to ship 2013-08-28 00:25:57 +02:00
opencollar
80a2e3e163 rotations fix by Mickey Drayman 2013-08-28 00:03:09 +02:00
opencollar
ef1915c76a just file extensions; no code changes 2013-08-27 23:45:35 +02:00
NorthGlenwalker
520353a9b0 Update README.md 2013-08-22 16:04:11 +01:00
North Glenwalker
baff4330a5 Clean-up and update help cards
Forgot to remove all couple animations scripts and card and updated help
and change log
2013-08-22 15:59:28 +01:00
North Glenwalker
eaa5f4d6e6 Updated scripts to 3.910
removed Couple animations, and now pointing to the subs collar.
Fixed "to many open listens in hudmain" by forcing a state change and
moving a number of items that were in default.
2013-08-22 15:45:23 +01:00
WendyStarfall
f94eaae7d6 Merge pull request #1 from NorthGlenwalker/patch-1
Create News.md
2013-08-21 14:14:59 -07:00
NorthGlenwalker
ebf0225719 Create News.md 2013-08-21 13:57:01 +01:00
opencollar
e89aecaa2e moved to correct folder 2013-08-19 14:34:59 +02:00
opencollar
fa99171109 naming conventions; folder tree redundant 2013-08-19 14:33:06 +02:00
opencollar
4c281e9e2e original merged with north's; naming; cleanup 2013-08-19 14:26:31 +02:00
opencollar
aeeb55dd5d ao sauce as is; naming conventions adjusted 2013-08-19 02:41:19 +02:00
WendyStarfall
5f3a49ae0a Initial commit 2013-08-18 15:09:26 -07:00
opencollar
6c99d4f093 Revert "merge of 3.844"
This reverts commit 816cbf2c26.
2013-08-17 13:21:58 +02:00
opencollar
a886b0e012 Revert "bmc design defaults"
This reverts commit 25c8d9dd3a.
2013-08-17 13:21:32 +02:00
JoyStipe
d0a34c4c12 bmc design defaults
since this system is now wiping out existing cards and replacing them, all BMCs come with these settings in the card
2013-08-16 21:26:41 -07:00
Joy Stipe
b7c5085d0f merge of 3.844
this adds in teh changes made between 3.841 & 3.844. Apologies if I
stepped on anyone's toes (unintentional)
2013-08-16 21:20:41 -07:00
opencollar
67f6462c49 3.911 ready to distribute 2013-08-16 08:24:24 +02:00
opencollar
e5cc73dc2f Contributed by Rebbie (rebbie.resident) in-world
This is a kluge to take care of the problem that there is NO way to have
more than four owners,
subowners, or blacklist entries in the default settings, which is
normally used as permanent
storage to avoid the problems that occur when a collar needs to have
it's scripts reset.

Unfortunately, this need appears to occur more frequently when the
collar has multiple
owners - it needs to be reset when there is a script error (such as the
RLV relay
settings script crashing due to having too many exceptions + large
numbers of
relay commands). Since the original script can't dump and restore
multiple owners,
however, this is probably not something the original scripters
considered.

The kluge is in two parts.

Part 1 - Reading the data lines.

In the Dataserver event, each line being read is inspected to see if it
ends with "&&", which
is considered to be a continuation indicator.  If this is found, the
line is saved (in g_sSavedLine),
and no processing of the line is done.  When the next line is read, then
the saved line is
prepended to the line being read to regenerate the full original line.
This reoccurs until
a line is read that does NOT have a "&&" at the end, at which point the
entire reassembled
line is read.   The only limitation on the number of continuation lines
is script memory.

The only values that appear to exceed the 255 character limit are owners
lists, and
texture settings for complex collars. Neither of these have "&&"
anywhere in the typical
data strings, thus the && should be a safe choice.

Part 2 - Writing a data dump that does NOT have lines longer than 255
characters.

The easiest part of the fix is to simply change the length at which the
script preferentially
breaks the output into separate parts to 255 characters instead of 1023.
This causes the
script to break up data values for the same module into multiple lines
when possible,
each of which is individually readable without error.  It is NOT optimal
in terms of making
the dump output a minimum number of actual lines output, but it does
make it more
readable i.e. makes it easier for manual editing of the result, and
incidentally reduces
the need for splitting up long values using continuation flags. As an
example, it forces
the owners list settings and the group settings to be

The second part of the fix is to take lines that cannot (because of long
value strings) be
written as multiple lines.  The subroutine "WhisperLine" will output a
long line in chunks
approximately 250 characters long, with all but the last chunk marked
with an "&&" flag.
2013-08-16 08:15:58 +02:00
opencollar
407f070888 adjusted for beta 2013-08-16 08:14:11 +02:00
opencollar
9dd533d346 3.910 HOTFIX 2013-08-15 06:55:50 +02:00
opencollar
a395bf4af5 couple anims re-rolled/fixed 2013-08-15 06:48:31 +02:00
opencollar
0ad93fdad7 url for beta version tracking and news 2013-08-10 20:56:03 +02:00
opencollar
19bd665ef6 url for news and version tracking 2013-08-10 20:42:46 +02:00
opencollar
ac64baa9ab fresh for 3.900 2013-08-10 20:33:38 +02:00
Satomi Ahn
e7196c049d Merge pull request #28 from OpenCollarUpdates/master
Message update
2013-02-17 15:24:00 -08:00
OpenCollarUpdates
d39e651911 Update news.md 2013-02-18 00:17:06 +01:00
Satomi Ahn
2cf9d646f2 Merge pull request #26 from SatomiAhn/release
Release (should have been done a long time ago... but I did not have necessary rights back then).
2013-02-06 06:36:15 -08:00
OpenCollarUpdates
f854255f9c Update news.md 2012-11-13 02:23:56 +01:00
OpenCollarUpdates
e6793da1e6 Update news.md
Even shorter message
2012-11-13 02:18:57 +01:00
OpenCollarUpdates
bd7caadaa2 Merge pull request #1 from SatomiAhn/master
Shorter release notes
2012-11-12 17:06:08 -08:00
Satomi Ahn
15aef2a7e1 Update news.md 2012-11-13 02:02:49 +01:00
Satomi Ahn
67fd0cafea Update news.md 2012-11-13 02:01:48 +01:00
Satomi Ahn
c1417ea3b1 Switched update URLS to
OpenCollar shared account
2012-11-12 18:23:24 +01:00
Satomi Ahn
3a8edc422b Updated news 2012-11-12 15:00:44 +01:00
Satomi Ahn
9c76455a0a Ready for release? 2012-11-12 14:13:12 +01:00
Satomi Ahn
0f2a301db1 No need to limit animation names either. 2012-09-24 17:13:34 +02:00
Satomi Ahn
c79ab82d74 No need to restrict dialog label length in client plugins
anymore.
2012-09-24 15:08:23 +02:00
Satomi Ahn
8fb5c84970 Consistency: no .md extension in notecard names. 2012-05-07 14:41:41 +02:00
Satomi Ahn
e86c36361e Added startIM. 2012-05-07 13:36:56 +02:00
Satomi Ahn
9c62d0a5fd (from Tarnix) Adding a new line in the settings dump process to reduce user error risk when copy/pasting 2012-05-07 12:36:09 +02:00
Satomi Ahn
3352c0d97e Plugin template should also be tracked in git. 2012-04-30 11:23:14 +02:00
Satomi Ahn
ee882d0738 Relay help to markdown 2012-04-30 11:13:53 +02:00
Satomi Ahn
53b0e71624 Update Guide for 3.8 2012-04-30 10:05:04 +02:00
Satomi Ahn
e0db04308e A few quirks in leash script.
- the script would attempt at finding object first names...
- startswith() function not working anymore, likely due to SCR-306
2012-04-29 18:50:47 +02:00
Satomi Ahn
a8e37c1ced nitpicking 2012-04-21 09:51:01 +02:00
Satomi Ahn
4c18c6eecd 2 bugs fixed in dialog:
- the method for determining the real length in bytes of a string was taking too much script time so that it
could take ages to get a sit target list in a laggy sim. Now it's performing better.
- ClearUser would not remove old listeners so that eventually dialog script would run out of listeners.
2012-04-21 09:23:19 +02:00
Satomi Ahn
1a77e17a8b Let's try a tad longer delay before sending settings, to prevent the rare remaining cases of owner loss. 2012-04-05 07:54:06 +02:00
Satomi Ahn
ee0f24639f Fixed leash options button not showing for non-wearers. Thanks to Executioner Magic for the report. 2012-03-20 21:43:41 +01:00
Satomi Ahn
ded3e6ab9f Shortened the code for text changing.
Fixed an endless event loop (somehow, changing the text triggers
CHANGED_COLOR, which in turn will call ShowText(), and so on).
2012-03-20 10:14:11 +01:00
Kisamin
c1c5efcaf3 Issue 1478, not handling "\n" correctly in multi-line hover text 2012-03-18 10:30:43 -07:00
Satomi Ahn
66bc2b6f03 fixed "Trust Owner" not working 2012-03-16 11:07:08 +01:00
Satomi Ahn
ce41696afe Branching 3.8 2012-03-15 23:05:27 +01:00
Satomi Ahn
4bf298ff60 Merge branch 'settings_store_cleanup' into SatomiAlpha 2012-03-15 23:03:22 +01:00
Satomi Ahn
794707c9e6 clean up: settings LM 2012-03-15 23:02:23 +01:00
Satomi Ahn
18597f8433 Merge branch 'folders' into SatomiAlpha
Conflicts:
	lsl/OpenCollar - rlvfolders.lsl
2012-03-09 10:10:01 +01:00
Satomi Ahn
9ce76a5307 - added missing first level trigger "&" for attaching folders over.
- relaxed search&wear syntax as to allow not repeating an operator in a sequence of several items (last
operator will be repeated)
2012-03-09 10:01:06 +01:00
Satomi Ahn
44f8186ffd changing update channel 2012-03-06 10:42:56 +01:00
Satomi Ahn
08a11fbfc2 Merge branch 'message_map_cleanup' into SatomiAlpha 2012-03-06 10:00:56 +01:00
Satomi Ahn
097b1edaf3 version up 2012-03-06 09:59:56 +01:00
Satomi Ahn
866e0186c8 Merge branch 'touch' into SatomiAlpha 2012-03-06 00:31:26 +01:00
Satomi Ahn
f358d2f822 Removed redundant RLVR_CMD = 6010 (merged its semantics with RLV_CMD = 6000) 2012-03-05 13:01:29 +01:00
Satomi Ahn
729f50622e Removed TIMER_TOMESSAGE = 609 and TIMER_FROMMESSAGE = 610 2012-03-05 12:48:22 +01:00
Satomi Ahn
60cec22d3c Removed COMMAND_OBJECT = 506
Some clean up
2012-03-05 12:21:44 +01:00
Satomi Ahn
3ad8231b13 Removed CHAT = 505 in message map. 2012-03-05 11:00:00 +01:00
Satomi Ahn
de2da186c0 COMMAND_COLLAR was not really a member of the internal message map, but actually used in chat
messages to AO or Cuffs, so I renamed it to EXT_COMMAND_COLLAR.
2012-03-05 10:52:26 +01:00
Satomi Ahn
c89baa941c Removed OCCD stuff (used to make the keyholder compatible with an outdated Chastity Belt by Kadah
Coba)
2012-03-05 10:45:10 +01:00
Satomi Ahn
67d85b677f Added still pose when a touch request is pending. 2012-03-05 10:06:02 +01:00
Wendy Starfall
ff39e1d858 .DS_Store again.. 2011-12-28 17:22:51 +01:00
Wendy Starfall
bc12ebc80c Updated goals and markdown formatting. 2011-12-28 17:21:14 +01:00
Wendy Starfall
b1e489a072 In-World changes made by Kire Faulkes to restore basic functionality. 2011-12-28 14:33:43 +01:00
Satomi Ahn
87cf5c1ddd Merge branch 'auth_once' into SatomiAlpha
Conflicts:
	lsl/OpenCollar - leash.lsl
2011-12-07 00:43:56 +01:00
Satomi Ahn
c6d6ede3f3 remenu fix for some of the leash menu buttons 2011-12-07 00:39:51 +01:00
Satomi Ahn
e62ce606d3 Merge branch 'long_buttons' into SatomiAlpha
Conflicts:
	lsl/OpenCollar - dialog.lsl
	lsl/OpenCollar - leash.lsl
	lsl/OpenCollar - rlvsit.lsl
2011-12-07 00:00:24 +01:00
Satomi Ahn
92e5cf94d8 Added support for keys as buttons. Dialog helper will display names instead, but still return the
key to the calling script.
Changed rlvsit and leash to use this new feature.
2011-12-06 23:25:15 +01:00
Satomi Ahn
b92eaef16c Filling buttons with blanks was not a good idea: it makes Truncate() bug and does not help aligning
labels.
2011-12-06 19:49:41 +01:00
Satomi Ahn
2a1a5d8dbb Removed a few articifial limits which are not needed since now long button labels are handled by the
dialog helper.
Numbered lists where choice names were in the dialog prompt are kept unchanged for now. Ultimately,
leaving this task to the dialog helper's care would remove the 512 chars limit in the prompt.
2011-12-06 19:32:58 +01:00
Satomi Ahn
58b0a1aefb Merge branch 'long_buttons' into SatomiAlpha
Conflicts:
	lsl/OpenCollar - dialog.lsl
	lsl/OpenCollar - rlvfolders.lsl
2011-12-06 17:29:55 +01:00
Satomi Ahn
6db3e24a23 - Allow long buttons in dialog helper: this will actually prefix buttons by their index and truncate them, and list full labels in Notify()
- Rlvfolders now uses this new capacity.
2011-12-06 16:26:22 +01:00
Satomi Ahn
96454ff99f Merge branch 'rlvrelay' into SatomiAlpha 2011-12-05 22:52:21 +01:00
Satomi Ahn
2b1e6038a2 Merge branch 'touch' into SatomiAlpha 2011-12-05 22:51:24 +01:00
Satomi Ahn
c80f6e7b32 Merge branch 'auth_once' into SatomiAlpha 2011-12-05 22:51:11 +01:00
Satomi Ahn
68af4a7a07 Updating relay version in !implversion
issue 1448
(thank you Melancholy Lemon)
2011-12-05 00:24:04 +01:00
Satomi Ahn
0b10a29d3b Added touch support for texture and hide.
Improved touch support for color.
2011-12-04 22:03:21 +01:00
Satomi Ahn
a7eb5ae2c2 Fixing a loophole in the menuto command, where the recipient of the menu would inherit the auth
of the wearer.
This is not ideal yet, since it means an auth request occurs in menu script for an action whose
initiating input event was in the listener script.
TODO: fix the HUD protocol in order to make it possible to issue arbitrary commands on behalf
of an arbitrary avatar.
2011-12-04 14:42:11 +01:00
Satomi Ahn
20df98692c Added "touch" to the default bundle. 2011-12-01 22:29:37 +01:00
Satomi Ahn
9f1d54df1b - fixed error in touch
- added "toggle" commands in lock and leash ("toggleleash" and "togglelock")
2011-12-01 22:19:39 +01:00
Satomi Ahn
8c15b8256f Merge branch 'touch' into SatomiAlpha 2011-12-01 18:30:12 +01:00
Satomi Ahn
b28abaa255 First implementation of the new touch input system.
There are 2 subsystems:
- permanent actions which are collar chat command that can be added in the prim descriptions. "menu" is the default if nothing is specified. It is
also possible to disable the default action.
- temporary actions which will be enabled only for the next click, and can be used like dialogs, except the user "presses" a prim instead of a
button. Temporary actions override all other actions, but only for the next click.
Both subsystems can address touch_start and touch_end events separately.

As an example, the color plugin has been modified to make it possible for the user to pick the part to recolor using this second subsystem.
2011-12-01 18:24:16 +01:00
Satomi Ahn
a739bd8789 Little Fix for LeashParticles
iAuth redefined within scope, maybe it did not cause any visible bug in SecondLife, but it's only
calling for troubles. In OpenSim it did not even compile.
2011-11-30 11:19:12 +01:00
Satomi Ahn
cda367a654 Merge branch 'auth_once' into SatomiAlpha 2011-11-29 22:37:11 +01:00
Satomi Ahn
2eabfbb7c0 Fixed leash script
- post now works again
- reviewed cases were to pop up leash menu again (target choice dialogs should not call
the main leash menu back if they were called by a chat command)
- side effect: the command to follow somebody from a list of choices is now
"followtarget" (to document)
2011-11-29 22:25:52 +01:00
Satomi Ahn
f56fe6fdc6 Merge branch 'master' into folders 2011-11-28 09:12:45 +01:00
Satomi Ahn
255cfe2e2f Merge branch 'master' into auth_once
Conflicts:
	lsl/OpenCollar - rlvmain.lsl
	lsl/OpenCollar - rlvrelay.lsl
	lsl/OpenCollar - rlvundress.lsl
2011-11-28 09:11:09 +01:00
Satomi Ahn
d22110e917 Merge branch 'master' into SatomiAlpha 2011-11-28 09:06:36 +01:00
Nirea
bd48bfedfe version 3.720 2011-11-27 13:44:39 -08:00
nirea
6c57174c4c Merge pull request #17 from SatomiAhn/rlvmain
Use @versionnum instead on @version.
2011-11-27 13:34:58 -08:00
nirea
509f3f7cf8 Merge pull request #21 from SatomiAhn/rlvrelay
Rlvrelay
2011-11-27 13:34:35 -08:00
nirea
c97cf6e851 Merge pull request #16 from SatomiAhn/rlvundress
Added physics, neck and avatar center to rlvundress
2011-11-27 13:33:01 -08:00
Nirea
cfb03cb274 web interface for updates 2011-11-27 13:32:31 -08:00
Satomi Ahn
fc6bf75e4a Merge branch 'auth_once' into SatomiAlpha 2011-11-25 01:33:26 +01:00
Satomi Ahn
50d1850634 This one was forgotten... 2011-11-25 01:25:05 +01:00
Satomi Ahn
d44873c483 After merge adjustments 2011-11-23 14:07:22 +01:00
Satomi Ahn
51010ae53c Merge branch 'folders' of https://github.com/SatomiAhn/ocupdater into SatomiAlpha
Conflicts:
	lsl/OpenCollar - rlvfolders.lsl
2011-11-23 13:31:37 +01:00
Satomi Ahn
a1fb539a2c Merge branch 'rlvrelay' of https://github.com/SatomiAhn/ocupdater into SatomiAlpha
Conflicts:
	lsl/OpenCollar - rlvrelay.lsl
2011-11-23 11:39:56 +01:00
Satomi Ahn
16537ced4f Merge branch 'rlvmain' of https://github.com/SatomiAhn/ocupdater into SatomiAlpha
Conflicts:
	lsl/OpenCollar - rlvmain.lsl
2011-11-23 11:26:09 +01:00
Satomi Ahn
26bc472dcf Merge branch 'rlvundress' of https://github.com/SatomiAhn/ocupdater into SatomiAlpha
Conflicts:
	lsl/OpenCollar - rlvundress.lsl
2011-11-23 11:21:11 +01:00
Satomi Ahn
c6b2c1a90f First commit to the "auth once" branch.
This branch involves:
 - removing SUBMENU LMs, now replaced by authed LM's COMMAND_XXX
	with prefix "menu "
 - adding another parameter to dialog helper LMs to carry auth data
As a result, COMMAND_NOAUTH is now only used by auth plugin and
input plugins such as menu (touch event) and listener.
Also, SUBMENU is now deprecated.

Another part of the work was to make menu calls synchronous
everywhere it was now posssible, since auth is preserved
(so way less "remenu" stuff).
COMMAND_XXX handlers are usually moved to a function UserCommand()
which can be called from anywhere in the script to call internal
commands instead of having to send yet another LM to all scripts.
2011-11-23 09:56:56 +01:00
Satomi Ahn
63fab5e24c Use @versionnum instead on @version.
(issue 870)
2011-11-17 12:38:49 +01:00
Satomi Ahn
9858b481b1 Fixed a few bugs:
- explicit integer conversion to string (did work on opensim though)
- settings would not be cleared when unsharedunwear and unsharedwear are removed
Added:
- chat commands unsharedwear/unsharedunwear=y/n
2011-11-17 12:38:40 +01:00
Satomi Ahn
ee9f11bacf Added a lot of recent RLV commands for folders: all the @attach*over, the folder locks, @unsharedwear and @unsharedunwear 2011-11-17 12:38:40 +01:00
Satomi Ahn
354c49b217 Issue 1258: relay uses llRegionSayTo, added some debug commands and
documentation
2011-11-17 12:38:17 +01:00
Satomi Ahn
a411686468 Issue 1253: consistently store/restore keys as strings in black/white
lists
2011-11-17 12:38:16 +01:00
Satomi Ahn
91e7130691 User friendliness improvements (I hope)
- Changed some menu labels in rlvundress
- Added buttons to quickly change to attachments from clothing and the other way around
2011-11-17 12:37:42 +01:00
Satomi Ahn
e43fd0bcc9 Added physics, neck and avatar center to rlvundress 2011-11-17 12:37:42 +01:00
Wendy Starfall
d4dcee5c97 added .DS_Store to .gitignore to undizz Mac users (typo the 2nd, le gah!) 2011-11-14 13:12:08 +01:00
Wendy Starfall
a0a7925205 added .DS_Store to .gitignore to undizz Mac users (- typo) 2011-11-14 13:00:29 +01:00
Wendy Starfall
b90c8585dd added .DS_Store to .gitignore to undizz Mac users 2011-11-14 12:57:00 +01:00
Wendy Starfall
3c00e125af cleanup 2011-11-14 12:53:59 +01:00
Wendy Starfall
020771ea9b unconfusing version control 2011-11-14 03:17:41 +01:00
Wendy Starfall
77a8ee3a22 cleanup 2011-11-14 03:13:15 +01:00
Wendy Starfall
30afbd74aa and wah... 2011-11-14 03:07:11 +01:00
Wendy Starfall
78604247a7 waaaaahh 2011-11-14 03:06:55 +01:00
Wendy Starfall
b93f1b2cbd moar chaos? 2011-11-14 03:05:28 +01:00
Wendy Starfall
3d04c2e6a3 making some chaos.. 2011-11-14 03:03:56 +01:00
Wendy Starfall
46695f8cbc Revert 89e0fbe441c3d2b9073f52f723b800c40979b514^..HEAD 2011-11-14 03:01:23 +01:00
Wendy Starfall
a835d89bc8 Revert "version 3.6x subfolder"
This reverts commit 89e0fbe441c3d2b9073f52f723b800c40979b514.
2011-11-14 03:01:06 +01:00
Wendy Starfall
dc5656faaa version 3.6x subfolder 2011-11-14 02:59:30 +01:00
Wendy Starfall
5b2362504f added dummy readme.md 2011-11-14 02:55:20 +01:00
Wendy Starfall
0ff64b0b7e moved to lsl subfolder 2011-11-14 02:50:53 +01:00
Wendy Starfall
4a04131179 notecards, readme and license 2011-11-14 02:48:10 +01:00
Wendy Starfall
00a3aea86f removed the .txt *blush* 2011-11-14 02:43:57 +01:00
Wendy Starfall
edfde9b69b Initial Sync! 2011-11-14 02:29:04 +01:00
Nirea
cf040df2ea ver 3.717. Fix for auth script getting out of sync with settings 2011-11-12 13:57:26 -08:00
Nirea
83740af545 ver 3.716 2011-11-05 15:50:04 -07:00
nirea
48ab147b20 Merge pull request #14 from kaorigray/master
Code cleanup in OpenCollar - leash.lsl.
Deduplicated auth handling and notifications.
Added notifications for unleash.
New commands: follow, followmenu, unfollow.
2011-11-05 10:36:39 -07:00
nirea
7b1ecfd018 Merge pull request #11 from Tzolkat/master
Fixes issue 1404 where a hard script reset causes all settings to be lost, regardless of notecard contents.
2011-11-05 10:32:34 -07:00
nirea
63c1c2f947 Merge pull request #13 from mewtwo064/master
Fixed some weirdness with the clear command in chat
2011-11-05 10:30:30 -07:00
kaorigray
6b57077502 Code cleanup in OpenCollar - leash.lsl. Deduplicated auth handling and notifications. Added notifications for unleash. Also contains new follow & followmenu commands from previous pull request. 2011-10-28 21:56:42 -05:00
mewtwo064
f4868ead66 Last but not least; <prefix>clear bugfix for rlvsit :D 2011-10-27 23:12:14 -05:00
mewtwo064
8d9e295f54 More <prefix>clear bugfixes for rlvtalk too 2011-10-27 23:08:57 -05:00
mewtwo064
79f5753bf0 More <prefix>clear bug fixes 2011-10-27 23:06:12 -05:00
mewtwo064
3eb6f5c2a9 Fix bug where <prefix>clear would appear to prevent an owned sub from clearing RLV restrictions but would go ahead and clear it anyway (effects are not noticed until relog) 2011-10-27 23:00:18 -05:00
kaorigray
0c5dba3798 Added follow functionality: new command line commands: follow, unfollow, followmenu. New follow submenu. Changed main leashmenu to only show menu options that are relevant to the user. 2011-10-27 07:24:19 -05:00
Tzolkat
25d598a096 1) Notecard read now supports multiple lines of same setting, to work around llGetNotecardLine()'s limit of 255 bytes.
2) Notecard read reads to a separate list and merges into the main settings list when done, to allow for the above change to happen correctly.

3) Notecard reader forces send of all settings when done, as llGetNotecardLine() causes script sleep in the dataserver event, throwing it out of sync with the part of the script that would ordinarily send it.
2011-10-23 22:18:13 -03:00
Nirea
2a075be6b5 adding higher level update menu 2011-10-22 11:50:38 -07:00
nirea
9cd26acd1d Merge pull request #10 from DrakeSystem/5ac27dc24be60d4056e0d46391668dec657910fd
Ocupdater new Method Buttons
2011-10-22 11:06:43 -07:00
Nirea
af72ac68ba ver 3.714. Committing change that kills misbehaving hovertext script before getting going on update 2011-10-21 22:40:49 -07:00
Nirea
3030f8e1e2 ver 3.713, cleanup of dupe textures, switch to in-memory news remembering, and send all new defaults as they're read from the notecard 2011-10-21 16:55:05 -07:00
Nirea
9c30e3261b ver 3.712. hovertext script should not set script pin 2011-10-21 15:48:38 -07:00
DrakeSystem
5ac27dc24b Update lsl/OpenCollarUpdater - Master.lsl 2011-10-19 21:41:40 +03:00
DrakeSystem
970164fb7c Added a "Install/Update Method Menu" with 4 modes
Full: Will Set anything exept bundles with the "DEPRECATED" tag as "to be installed/updated"
Default: "Will use the Bundle State from the notecards and do the update with this defaults.
Minumum: Will set Anything to be Removed exept the Bundles with the "REQUIRED" Flag
Custom: Will open the old Menu where you can set the Stuff you want manually.

im Sorry For bad Spelling in the menu Text.. English isnt my native.... Feel free to correct me there.
2011-10-19 18:13:19 +03:00
Nirea
735f9475b7 news formatting 2011-10-18 22:21:38 -07:00
Nirea
ff533a4ef4 Athy's signature 2011-10-18 22:21:05 -07:00
Nirea
1a38bc47fb Athy's signature 2011-10-18 22:20:48 -07:00
Nirea
d4ade375c1 news link to FAQ 2011-10-18 22:19:55 -07:00
Nirea
080b0057c8 FAQ links 2011-10-18 22:17:51 -07:00
Nirea
7cdfc4a80d FAQ links 2011-10-18 22:17:06 -07:00
Nirea
3938021a80 improved FAQ formatting 2011-10-18 22:04:07 -07:00
Nirea
77dffa2645 improved FAQ formatting 2011-10-18 22:03:36 -07:00
Nirea
5613477e83 adding DB FAQ 2011-10-18 22:01:37 -07:00
Nirea
91e13ec2fb updating news for 3.711 release 2011-10-18 21:47:43 -07:00
Nirea
6a112d2dbb moved redundant *version command from listener to updater 2011-10-16 20:35:49 -07:00
Nirea
06ecfea3f9 removed comment clutter 2011-10-16 20:04:11 -07:00
Nirea
ab38208676 Merge branch 'master' of github.com:nirea/ocupdater 2011-10-16 19:59:41 -07:00
Nirea
d8e781c09e bump version card and remove rlvrelay version number 2011-10-16 19:59:32 -07:00
nirea
369c2c031d Merge pull request #7 from Sei-Lisa/master
rlvundress.lsl: Fix restoration of locked item settings.
2011-10-16 19:55:37 -07:00
Sei Lisa
8493183b19 rlvundress.lsl: Fix restoration of locked item settings.
Solves http://code.google.com/p/opencollar/issues/detail?id=1395
2011-10-17 04:44:55 +02:00
nirea
3ad05d43b5 Merge pull request #6 from Sei-Lisa/master
rlvrelay.lsl: Fix 2 bugs; overall memory optimization
2011-10-16 15:15:52 -07:00
Nirea
793ccc840c adding news about the full perms transfer bug 2011-10-16 00:41:58 -07:00
Nirea
b235cd9574 adding 3rd party extension policy 2011-10-16 00:31:42 -07:00
Nirea
b8e2a23542 RLV installed by default (but not relay). Fix to defaultsettings reading. Particles now shown during update. 2011-10-15 00:55:24 -07:00
Sei Lisa
8d9513f0ea auth.lsl: Remove another dependency from the app server.
To find the group name, it queried grouplookup.mycollar.org which in turn queried world.secondlife.com; this patch changes it to query world.secondlife.com directly to get rid of the dependency.
2011-10-15 05:09:10 +02:00
Sei Lisa
a7bb07c391 Merge commit 'upstream/master' 2011-10-15 04:17:33 +02:00
Nirea
fbaa1cd930 ver 3.708. allow updates while worn. 2011-10-12 23:30:17 -07:00
Nirea
204957cc38 bringing the news back 2011-10-12 22:52:22 -07:00
Nirea
b5fa34082f trying blank news 2011-10-12 22:49:49 -07:00
Nirea
d21226f3d1 fix to RightOfDecimal function in updater script 2011-10-12 22:42:27 -07:00
Nirea
f284cf7b62 new news 2011-10-12 21:53:54 -07:00
Nirea
92631e0349 adding news feature to update script 2011-10-12 21:48:23 -07:00
Nirea
95567b597b changing news date format 2011-10-12 19:54:39 -07:00
Nirea
d8a219904a Adding a news item 2011-10-12 19:33:40 -07:00
Nirea
31f1093561 makes ~version notecard the only authority on what version is installed 2011-10-11 21:26:25 -07:00
Sei Lisa
e4b26817f8 rlvrelay.lsl: Fix 2 bugs and optimize
Revert the order of Min and non-Min when restoring settings. Fixes issue 1342 and issue 1224.

Add key sanitization function. Fixes issue 1388.

Due to the code added in the fix of 1388 and the scarce memory available for normal relay operation, an agressive overall memory optimization is also applied to regain the lost memory.
2011-10-11 15:46:14 +02:00
Nirea
f79e14ed6b major revamp to OpenCollar - update. Now pull current version from github 2011-10-11 01:49:43 -07:00
Nirea
db20ad3720 adding version file 2011-10-10 23:09:23 -07:00
Nirea
8f4faa48b9 adding 'human' mode to camera script 2011-10-08 23:17:41 -07:00
Nirea
02288530e4 renaming guide with .md extension 2011-10-06 23:24:05 -07:00
nirea
5bb5d4f327 Pasting in results of collaborative editing at piratepad. 2011-10-06 23:18:57 -07:00
nirea
9368f0a110 Merge pull request #4 from Sei-Lisa/master
New feature: beckon command
2011-10-06 23:04:25 -07:00
Sei Lisa
5dda2d502d Add ReleaseNotes.txt
ReleaseNotes.txt:
New file containing a tentative release notes for the collar release, including the changes added
2011-10-04 18:20:25 +02:00
Sei Lisa
f259ef0e6a OpenCollar - leash.lsl:
New feature: Add <prefix>beckon command. Equivalent to yanking the leash, but without a leash. Idea from Dari's collar.

OpenCollar Guide:

Add the corresponding documentation.
2011-10-04 10:11:06 +02:00
nirea
9178bbd110 Merge pull request #3 from Sei-Lisa/master
Merging Sei's rlvsit cleanup and readme tweak.
2011-10-03 17:13:32 -07:00
Nirea
9e206c29bb adding OC/Git guide 2011-10-04 01:03:35 +01:00
Sei Lisa
358913eb95 OpenCollar - rlvsit.lsl:
The SitNow command scans for active objects and excludes those named "Object". When one is skipped, though, it is not added to the list of objects used later for sitting, however the index used in the dialog is the loop index which also counts skipped numbers. This results in desynchronization of the dialog with the list indices, resulting in selecting the wrong object to sit on.

For example, say the sensor detects 4 objects, called A, Object, C and D. Then the list will contain A, C, D in positions 0, 1, and 2 respectively, and the dialog will contain buttons ( 1 ), ( 3 ) and ( 4 ) claiming they are for A, C, and D respectively. Pressing ( 1 ) correctly selects index 0 which is A. However, pressing ( 3 ) invokes index 2 which is D instead of C, and pressing ( 4 ) invokes index 3 which does not exist at all.

This mess is fixed by keeping a separately running index which is incremented only when objects are actually added to the list.

And since I'm here, global substitution of SiTPrompt with SitPrompt.
2011-10-04 01:49:54 +02:00
Sei Lisa
cb0abf9630 README.md:
Note that the clone part might not be necessary.
2011-10-04 00:55:06 +02:00
Nirea
bf4d3a037b proper git add -A this time, and changing README links to be inline 2011-10-02 18:24:53 +01:00
Nirea
1d48d10826 deleted buggy xml import/export stuff 2011-10-02 18:10:54 +01:00
Nirea
7769c6362c reset auth script on owner change. remove defaultsettings card 2011-10-02 12:17:56 +01:00
Nirea
3f75d4e367 fixing settings dump on rez bug, and removing defaultsettings from core bundle 2011-09-29 23:23:09 +01:00
Nirea
b5a4201655 adding cleanup for OC 3.5 2011-09-25 11:46:24 +01:00
Nirea
540bbad6d0 add 'deprecated' bundle support. Eliminate 10 sec wait in bundle script 2011-09-17 16:49:08 -07:00
Nirea
88160d385b changing default bundles 2011-09-14 16:39:01 -07:00
Nirea
92082a6f23 set RLV to not installed by default 2011-09-14 15:48:07 -07:00
Nirea
11c78af009 adding hovertext and cleanup script. splitting bundles 2011-09-14 15:43:33 -07:00
Nirea
4087eeaf09 removed settings code related to online storage 2011-09-05 16:22:35 -07:00
Nirea
bc0e64c6a4 adding TODO file to gitignore 2011-09-05 14:00:31 -07:00
Nirea
922fa530d0 remove remoteserver. removed textures from updater.xml 2011-09-05 13:24:29 -07:00
Nirea
5faf7fcd6a added reminder about other inventory types 2011-09-04 01:14:00 -07:00
Nirea
6b5b66ab05 added links to github help and lxml 2011-09-04 01:03:56 -07:00
Nirea
dfffcb448b added mote on contributions 2011-09-04 01:00:33 -07:00
Nirea
4376467493 adding headings 2011-09-04 00:54:17 -07:00
Nirea
1dc969b330 Making the python lxml requirement more prominent 2011-09-04 00:53:21 -07:00
Nirea
ec3f3038f1 adding headings 2011-09-04 00:51:57 -07:00
Nirea
af67b71c3f adding headings 2011-09-04 00:49:39 -07:00
Nirea
0164357e61 typo fix 2011-09-04 00:46:00 -07:00
Nirea
c2981d38ce updated readme 2011-09-04 00:44:47 -07:00
Nirea
845878bf95 really adding updater.xml, and cleaning out pyc file 2011-09-04 00:16:06 -07:00
Nirea
25f73570d2 adding updater.xml to repo 2011-09-03 23:55:32 -07:00
Nirea
311b8a7cb0 add pyc files to .gitignore 2011-09-03 23:51:52 -07:00
Nirea
22251226fd fix bug with deleting versionless scripts 2011-09-03 23:49:51 -07:00
Nirea
9dd3bf8ca0 updater no longer resets anything. Shim and bundle giver now handle scripts without version numbers 2011-09-03 23:14:37 -07:00
Nirea
96ecb913cc adding lsl2xml.py 2011-09-03 21:43:12 -07:00
Nirea
e5472ff245 really deleting I think 2011-09-03 20:27:31 -07:00
Nirea
3917a20137 updated to xml export-compatible filenames. added xml_2_lsl.py converter 2011-09-03 20:25:40 -07:00
Nirea
1817cf3f64 initial commit 2011-09-01 22:28:29 -07:00
298 changed files with 81347 additions and 28318 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.lsl text eol=lf

82
LICENSE
View File

@@ -1,78 +1,4 @@
The OpenCollar scripts are licensed under the GPLv2 with the following addendum:
Throughout this license the term "authors" refers to Nandana Singh,
OpenCollar Organiser, Wendy Starfall, Satomi Ahn, Joy Stipe and
other contributors to OpenCollar - submission set free.
"Full perms" means maintaining the modify, copy, and transfer permissions in
Second Life. If the Second Life platform should allow more fine-grained
permissions in the future, then "full perms" will mean the most permissive
possible set of permissions allowed by the platform.
The OpenCollar scripts are free to be copied, modified, and redistributed,
subject to the following conditions:
If you distribute the OpenCollar scripts, you must leave them full perms.
(This includes using the scripts in collars that you make.)
If you modify the OpenCollar scripts and distribute the modifications, you
must also make your modifications full perms.
Custom plugins that are entirely created by you, and which communicate with the
OpenCollar scripts only through link messages, are not subject to the above
restrictions.
The OpenCollar hug and kiss scripts were originally created by Francis Chung,
with only slight modifications by Ilse Mannonen. To the best of our knowledge,
they are in the public domain.
To the best of our knowledge, the animations included in OpenCollar which were
not created by the authors (which is most of them), may be used without
restriction. Animations created by the authors must remain full perms. If you
created one of the included animations and would like to have it removed,
please notify Wendy Starfall.
Likewise, all textures included in the OpenCollar that were not created by the
authors are, to the best of our knowledge, free to use for any purpose. The
textures included which were created by the authors must remain full perms. If
you created one of the included textures and would like to have it removed,
please notify Wendy Starfall.
The base OpenCollar object (in which the OpenCollar scripts are placed) must
also remain full perms. (If you want to use the OpenCollar scripts in collars
that you have made and wish to sell, you can restrict copy or trans permissions
on your prims, but you must leave the OpenCollar scripts full perms).
OpenCollar 3rd Party Extension Policy
Part of OpenCollar being "open" means that we aim to provide a platform that
people can easily integrate with. We encourage people to create their own
products, tools, extensions, or services that integrate with OpenCollar.
You're even free to charge money for them. There are a few ground rules though:
1. Any scripts containing OpenCollar code must use the GPL license and remain
full perms in SL.
2. You must be very very clear that your product/service/whatever is not
affiliated with or supported by the OpenCollar project. Users must not be
confused about who they're trusting.
3. You must not advertise in the OpenCollar groups. Our groups prohibit all
advertising. There is no exception for products that integrate with OpenCollar
in some way.
(We may add to those rules if we missed something important or see people trying
to pick loopholes in them, but that's it for now.)
We are eager to welcome creators willing to follow these rules. We want to
support your creativity by giving you a solid platform to build on, and we want
you as part of our community.
For now, violations of these rules will be dealt with through group ejection and
public shunning. We may in the future create a directory of third party products
and services that we trust. Violators of these rules will be forbidden from
being on that list.
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
@@ -364,8 +290,8 @@ to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
The repository for the OpenCollar main release channel.
Copyright (C) 2013 opencollar
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -403,7 +329,7 @@ necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into

View File

@@ -1,16 +0,0 @@
ITEM|OpenCollar Guide
ITEM|OpenCollar License
ITEM|Leash Holder
ITEM|Grabby Post
SCRIPT|OpenCollar - cleanup
SCRIPT|OpenCollar - main
SCRIPT|OpenCollar - auth
SCRIPT|OpenCollar - listener
SCRIPT|OpenCollar - dialog
SCRIPT|OpenCollar - settings
SCRIPT|OpenCollar - leash
SCRIPT|OpenCollar - leashParticle
SCRIPT|OpenCollar - hide
SCRIPT|OpenCollar - label
SCRIPT|OpenCollar - bell
SCRIPT|OpenCollar - titler

View File

@@ -1,8 +0,0 @@
SCRIPT|OpenCollar - rlvmain
SCRIPT|OpenCollar - rlvex
SCRIPT|OpenCollar - rlvtalk
SCRIPT|OpenCollar - rlvtp
SCRIPT|OpenCollar - rlvsit
SCRIPT|OpenCollar - rlvundress
SCRIPT|OpenCollar - rlvfolders
SCRIPT|OpenCollar - rlvmisc

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - rlvrelay

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - texture

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - color

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - shininess

View File

@@ -1 +0,0 @@
ITEM|textures

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - styles

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - adjustment

View File

@@ -1,19 +0,0 @@
ITEM|~-30
ITEM|~-31
ITEM|~-32
ITEM|~-33
ITEM|~-34
ITEM|~-35
ITEM|~-36
ITEM|~-37
ITEM|~-38
ITEM|~-39
ITEM|~walk_Male
ITEM|~walk_Female
ITEM|~walk_Crawl
ITEM|~walk_Pony
ITEM|~walk_Worm
ITEM|~run
ITEM|~stiff
SCRIPT|OpenCollar - anim
SCRIPT|OpenCollar - couples

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - bookmarks

View File

@@ -1,2 +0,0 @@
ITEM|~shock
SCRIPT|OpenCollar - badwords

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - timer

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - camera

View File

@@ -1 +0,0 @@
SCRIPT|OpenCollar - garble

View File

@@ -1,10 +0,0 @@
ITEM|~-20
ITEM|~-21
ITEM|~-22
ITEM|~-23
ITEM|~-24
ITEM|~-25
ITEM|~-26
ITEM|~-27
ITEM|~-28
ITEM|~-29

View File

@@ -1,10 +0,0 @@
ITEM|~-10
ITEM|~-11
ITEM|~-12
ITEM|~-13
ITEM|~-14
ITEM|~-15
ITEM|~-16
ITEM|~-17
ITEM|~-18
ITEM|~-19

View File

@@ -1,9 +0,0 @@
ITEM|~-1
ITEM|~-2
ITEM|~-3
ITEM|~-4
ITEM|~-5
ITEM|~-6
ITEM|~-7
ITEM|~-8
ITEM|~-9

View File

@@ -1,11 +0,0 @@
ITEM|~-40
ITEM|~-41
ITEM|~-42
ITEM|~-43
ITEM|~-44
ITEM|~-45
ITEM|~-46
ITEM|~-47
ITEM|~-48
ITEM|~-49
ITEM|~-50

View File

@@ -1,80 +0,0 @@
SCRIPT|Old Script
SCRIPT|OpenCollar - menu
SCRIPT|OpenCollar - lock
SCRIPT|OpenCollar - touch
SCRIPT|OpenCollar - getavi
SCRIPT|OpenCollar - interface
SCRIPT|OpenCollar - remoteserver
SCRIPT|OpenCollar - anim/pose
SCRIPT|OpenCollar - cmdupdate
SCRIPT|OpenCollar - techlabel
SCRIPT|OpenCollar - BMC
SCRIPT|OpenCollar - realleash
SCRIPT|OpenCollar - real leash - 0.1
SCRIPT|OpenCollar - real leash - 0.2
SCRIPT|OpenCollar - coupleanim1
SCRIPT|OpenCollar - coupleanim2
SCRIPT|OpenCollar - hovertext
SCRIPT|OpenCollar - subspy
SCRIPT|OpenCollar - update
SCRIPT|OpenCollar - appearance
SCRIPT|OpenCollar - rlvmisc
SCRIPT|OpenCollar - rlvsit
SCRIPT|OpenCollar - rlvtalk
SCRIPT|OpenCollar - rlvtp
ITEM|How to set up your #RLV and use SmartStrip
ITEM|OpenCollar - rlvrelay - Help
ITEM|OpenCollar RLV Relay Help
ITEM|OpenCollar Updater
ITEM|OpenCollar Sub AO
ITEM|OpenCollar Post
ITEM|OC_Leash_Post
ITEM|Ball&Chain
ITEM|chain
ITEM|rope
ITEM|brushedmetal-hshaded-contrasty
ITEM|brushedmetal-hshaded
ITEM|brushedmetal-roundshaded
ITEM|brushedmetal-vshaded
ITEM|blank
ITEM|blkgraindot
ITEM|Celtic
ITEM|diamond
ITEM|I-Beam
ITEM|metal-h
ITEM|metal-h-contrast
ITEM|metal-round
ITEM|metal-v
ITEM|opaque gradient circle
ITEM|Rusty Metal Chest
ITEM|Rusty Panel
ITEM|seamless foil
ITEM|seamless gold foil
ITEM|Silver Filligree
ITEM|!fadestripe
ITEM|!whiteleather
ITEM|!totallytransparent
ITEM|5fadestripes
ITEM|Blank
ITEM|Brass
ITEM|Chrome
ITEM|Fur Dark
ITEM|Fur Light
ITEM|Gem
ITEM|Gold
ITEM|Grunge
ITEM|Lace
ITEM|Leather Dark
ITEM|Leather Light
ITEM|Rust
ITEM|Silver
ITEM|Snake
ITEM|Steel
ITEM|yin
ITEM|yang
ITEM|Tranquility
ITEM|Shack
ITEM|Sandbox
ITEM|~version
ITEM|Temple
ITEM|~PostureOverride

View File

@@ -1,68 +0,0 @@
================
OpenCollar - Quick Guide
================
Your prefix are the first letter of your firstname and the first letter of your surname. If you don't have a surname, your surname will always be "Resident".
- Wendy Starfall (wendy.starfall)'s prefix is: ws
- wendy4u (wendy4u Resident)'s prefix is: wr
- ????i? ?l?? (fraulein.fapalot)'s prefix is: ff
Your prefix is used to issue commands in the Nearby Chat.
<prefix>menu
<prefix>pose
<prefix>kneel
<prefix>release
<prefix>grab
<prefix>yank
<prefix>unleash
<prefix>sitnow
If you don't like your prefix, you can change it.
wsprefix wen
wrprefix we
jsprefix sex
You can also issue commands on channel 1.
/1<prefix>menu
Or if you don't like channel 1 set a different channel.
<prefix>channel 2
<prefix>channel 3
<prefix>channel 69
<prefix>channel 9001
If you are considerate about lag, you can also turn off the Nearby Chat listener.
<prefix>channel -1
Your collar also has a safeword which you simply type in the nearby chat. This will lift all RLV resctrictions, unpose, unleash and unlock you. It will also send your Owner a message to check for your well being.
RED
RED in capital letters is the default safeword.
If that's too hard to remember you can easily change it.
<prefix>safeword Mayday!
<prefix>safeword taxi
<prefix>safeword BANANA
Too much to type? There is also a menu that has buttons for all these many commands. The menu can be opened in multiple ways.
1. <prefix>menu
2. Click the collar!
3. If you use the Sub AO, it's menu has a button.
4. If you are an Owner, use the Owner HUD.
Yay! Now that you know how to use your prefix, your channel, chat commands and the menu, you are ready to find an Owner. If things don't turn out all that great:
<prefix>runaway
===============================
For a full manual, please visit www.opencollar.at
===============================

View File

@@ -1,148 +0,0 @@
Table of contents
-----------------
1. Introduction
2. User help
1. Menu buttons
2. Chat commands
3. Technical information for RLV scripters
1. Features and specifications
2. Caveats
3. Want more fun?
*****
1. Introduction
===============
Restrained Love Viewer API (Application Programming Interface) is a Second Life viewer feature that allows rezzed objects that you own to speak to your viewer and ask it to perform certain actions (teleporting, force-sitting or stripping the avatar) or toggle certain restrictions (such as on chat or clothing). This is limited to *your* objects, however.
A Restrained Love Viewer relay, or just "relay", is a script that listens for in-world object commands and transmits them to your viewer so that you can be controlled by objects belonging to *other* people. Of course, the task of the relay is not only to transmit such commands, but also to manage which objects should be allowed or not, and to keep track of the applied restrictions.
OpenCollar includes such a relay. The relay included in OpenCollar has a few particularities:
- In contrast to most older relays (prior to 2009), it allows several concurrent sources to communicate with your viewer and lock your relay.
- It has many access control options (both basic and more complicated modes, along with blacklists and whitelists).
- It optionally allows release from restrictions via safewording.
- It is integrated with the collar system in that (1) sources owned by owners are automatically accepted by the relay, and (2) owners can force the relay mode above a specified level of acceptance.
2. User help
============
1.1. Menu buttons
-----------------
(Don't be surprised if some of these buttons aren't always displayed, since, depending on the context, irrelevant ones are automatically hidden.)
In the main dialog:
* Auto: the relay accepts every future request (except from blacklisted devices).
* Ask: the relay asks before accepting future requests (except from whitelisted or blacklisted devices).
* Restricted: the relay rejects every future request (except from whitelisted devices and devices already controlling you).
* ( )/(*)Playful: enables/disables automatic acceptance of non-restraining commands (combines with the previous modes).
* ( )/(*)Land: enables/disables automatic acceptance of commands from devices belonging to the sim landowner.
* ( )/(*)Safeword: enables/disables the possibility to escape restriction by use of a safeword.
* Grabbed by: shows the list of devices currently controlling your avatar, and the list of restrictions enforced.
* Pending: shows the request dialog, in case there are pending requests.
* Help: gives this notecard.
* Safeword: clears all restrictions; equivalent to typing "[initials]relay safeword".
* Access lists: opens the access list management dialog, for removing trusted or banned sources.
* MinMode (owner only): pops up a submenu in which a primary owner can set minimal function levels for the relay. If the owner chooses the Restricted option here, for instance, the sub cannot go "under" it by disabling the relay completely, but can choose between Restricted and the options "above", namely Ask and Auto; while if the owner chooses the highest level, Auto, it may not be changed and neither Restricted nor Ask is available to the sub. Likewise, if the "lower" settings with safeword, not playful, and landowner not trusted are set in MinMode, they can be changed by the sub; but if the owner dictates that the safeword cannot be used, that the sub must be playful, and/or that landowner must be trusted, the sub cannot change these settings.
In the request dialog, which will pop up in Ask mode when an RLV source tries to lock the relay:
* Yes: accept this command (and other commands from the same device until unrestricted).
* No: rejects this command (and other commands from the same device in the following seconds).
* Trust Object: same as Yes, but adds the object to the whitelist.
* Ban Object: same as No, but adds the object to the blacklist.
* Trust Owner: same as Yes, but adds the owner of the object to the whitelist.
* Ban Owner: same as No, but adds the owner of the object to the blacklist.
* Trust User: same as Yes, but adds the avatar using the object to the whitelist.
* Ban User: same as No, but adds the avatar using the object to the blacklist.
1.2. Chat commands:
-------------------
* [initials]showrestrictions: shows the list of restrictions to which the wearer is subject, and the devices issuing these.
* [initials]relay [ask/auto/restricted/off]: toggles the selected mode.
* [initials]relay playful [on/off]: toggles playful submode.
* [initials]relay land [on/off]: toggles landowner submode.
* [initials]relay safeword [on/off]: toggles safewording.
* [initials]relay safeword: safewords.
* [initials]relay minmode [ask/auto/restrcted/off]: sets the minimal basic mode.
* [initials]relay minmode [playful/land/safeword] [on/off] (owner only): sets the minimal submodes.
* [initials]relay getdebug: starts relay debugging, i.e. forwards all relay chat to the person issuing this command
* [initials]relay stopdebug: stops relay debugging
3. Technical information for RLV scripters
==========================================
2.1. Features and specifications
--------------------------------
As an ORG (Open Relay Group) relay, this relay conforms to
[this specification](https://wiki.secondlife.com/wiki/LSL_Protocol/Restrained_Love_Open_Relay_Group)
- the [basic relay specification version 1.100](https://wiki.secondlife.com/wiki/LSL_Protocol/Restrained_Love_Relay)
- the [ORG additional requirements version 0003](https://wiki.secondlife.com/wiki/LSL_Protocol/Restrained_Love_Open_Relay_Group/ORG_Requirements)
- and to one optional "x-tension", [who, version 001](https://wiki.secondlife.com/wiki/LSL_Protocol/Restrained_Love_Open_Relay_Group/who)
In particular, this means that this relay will understand relay commands using a wildcard "ffffffff-ffff-ffff-ffff-ffffffffffff" instead of the avatar key, allowing efficient scanning and zone effects.
Also, through the x-tension who, this relay understands the meta-command !x-who, which allows RLV sources to specify who (which avatar) is now using the source to grab the relay. This information is reported in the Ask dialog prompt and can be used by the wearer to decide whether to accept being locked, and also maybe to blacklist or whitelist the avatar using the source.
2.2. Caveats
------------
This script uses a lot of memory, and even more when it has to decompose and analyze relay commands. Moreover, this relay manages several RLV sources (an arbitrary number of them) from only two scripts, which makes things even worse. We took great care in optimizing it the best we could, but it is not impossible that a stack-heap collision will still occur. If that happens:
- To make your relay work again, you will have to reset the script using the Tools menu of your viewer (alas, a script that crashed cannot be reset by another script).
- We would be glad if you could tell us where and how the crash happened, and report your incident on the [OpenCollar bug tracker](http://code.google.com/p/opencollar/issues). Any other bug in the relay or issue with the documentation should be reported there as well.
Also, due to the way RLV works, having several RLV sources managing from a single script (and hence a single prim) can trigger unexpected results. For instance, the command @getstatus would report all restrictions set by the collar, instead of just those set by the source sending the command. This is not something we can fix unless we restrict the relay to a single source (which would be a shame!) or unless we use a multiprim approach, which would be highly impractical in the OpenCollar context.
Some other bugs might arise, related to contradictory commands, restrictions and exceptions from different sources. This category of bugs can sometimes be mitigated in some way by using scripting tricks, so if you notice one of this kind please report it on the bug tracker so we can see if something can be done.
2.3. Want more fun?
-------------------
If you are interested in relays with advanced features, there is a HUD version of this relay (also open source), implementing even more fancy features from ORG. Look for "Satomi's Multi-Relay HUD" on the SL market place or grab it at the OpenCollar Temple if you want a copy of that relay.
If you want to to discuss relay features, you can comment on the [ORG wiki pages](https://wiki.secondlife.com/wiki/LSL_Protocol/Restrained_Love_Open_Relay_Group), and/or join the Restrained Love Open Relay Group in SecondLife.

View File

@@ -1,66 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - leashholder //
// version 3.940 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// based on a script by Ilse Mannonen
integer g_iMychannel = -8888;
string g_sListenfor;
string g_sResponse;
AnnounceLeashHolder()
{
llSay(g_iMychannel, g_sResponse);
}
default
{
state_entry()
{
g_sListenfor = (string)llGetOwner() + "handle";
g_sResponse = (string)llGetOwner() + "handle ok";
llListen(g_iMychannel, "", NULL_KEY, g_sListenfor);
AnnounceLeashHolder();
llSetTimerEvent(2.0);
}
listen(integer channel, string name, key id, string message)
{
AnnounceLeashHolder();
llSetTimerEvent(2.0);
}
attach(key kAttached)
{
if (kAttached == NULL_KEY)
{
llSay(g_iMychannel, (string)llGetOwner() + "handle detached");
}
}
changed(integer change)
{
if (change & CHANGED_TELEPORT)
{
AnnounceLeashHolder();
llSetTimerEvent(2.0);
}
}
timer()
{
llSetTimerEvent(0.0);
AnnounceLeashHolder();
}
on_rez(integer param)
{
llResetScript();
}
}

View File

@@ -1,277 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - UpdateShim //
// version 3.985 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// This script is like a kamikaze missile. It sits dormant in the updater
// until an update process starts. Once the initial handshake is done, it's
// then inserted into the object being updated, where it chats with the bundle
// giver script inside the updater to let it know what to send over. When the
// update is finished, this script does a little final cleanup and then deletes
// itself.
integer iStartParam;
// a strided list of all scripts in inventory, with their names,versions,uuids
// built on startup
list lScripts;
// list where we'll record all the settings and local settings we're sent, for replay later.
// they're stored as strings, in form "<cmd>|<data>", where cmd is either LM_SETTING_SAVE
list lSettings;
// list of deprecated tokens to remove from previous collar scripts
list lDeprecatedSettingTokens = [
"collarversion"
];
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
// Return the name and version of an item as a list. If item has no version, return empty string for that part.
list GetNameParts(string name) {
list nameparts = llParseString2List(name, [" - "], []);
string shortname = llDumpList2String(llList2List(nameparts, 0, 1), " - ");
string version;
if (llGetListLength(nameparts) > 2) {
version = llList2String(nameparts, -1);
} else {
version = "";
}
return [shortname, version];
}
// Given the name (but not version) of a script, look it up in our list and return the key
// returns "" if not found.
key GetScriptFullname(string name) {
integer idx = llListFindList(lScripts, [name]);
if (idx == -1) {
return (key)"";
}
string version = llList2String(lScripts, idx + 1);
if (version == "") {
return name;
} else {
return llDumpList2String([name, version], " - ");
}
}
integer COMMAND_NOAUTH = 0;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to settings store
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from store
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the settings store
// Some versions of the collar have a hover text script in them that breaks
// updates because it set a script pin that overwrites the one set by this shim
// script. So before starting, delete any script that starts with "OpenCollar
// - hovertext".
// In general, removal of old cruft should be done with the cleanup script or
// a "DEPRECATED" bundle, but this has to be done here because it breaks the updater
// before bundles get going.
RemoveHoverTextScript() {
string kill = "OpenCollar - hovertext";
integer n;
// loop from the top down to avoid shifting indices
for (n = llGetInventoryNumber(INVENTORY_SCRIPT) - 1; n >= 0; n--) {
string name = llGetInventoryName(INVENTORY_SCRIPT, n);
if (llSubStringIndex(name, kill) == 0) {
llRemoveInventory(name);
}
}
}
default
{
state_entry()
{
iStartParam = llGetStartParameter();
RemoveHoverTextScript();
// build script list
integer n;
integer stop = llGetInventoryNumber(INVENTORY_SCRIPT);
for (n = 0; n < stop; n++) {
string name = llGetInventoryName(INVENTORY_SCRIPT, n);
// add to script list
lScripts += GetNameParts(name);
}
//Debug(llDumpList2String(lScripts, "|"));
// listen on the start param channel
llListen(iStartParam, "", "", "");
// let mama know we're ready
llWhisper(iStartParam, "reallyready");
//Debug("Starting");
}
listen(integer channel, string name, key id, string msg) {
//Debug("heard: " + msg);
if (llGetOwnerKey(id) == llGetOwner()) {
list parts = llParseString2List(msg, ["|"], []);
if (llGetListLength(parts) == 4) {
string type = llList2String(parts, 0);
string name = llList2String(parts, 1);
key uuid = (key)llList2String(parts, 2);
string mode = llList2String(parts, 3);
string cmd;
if (mode == "INSTALL" || mode == "REQUIRED") {
if (type == "SCRIPT") {
// see if we have that script in our list.
integer idx = llListFindList(lScripts, [name]);
if (idx == -1) {
// script isn't in our list.
cmd = "GIVE";
} else {
// it's in our list. Check UUID.
string script_name = GetScriptFullname(name);
key script_id = llGetInventoryKey(script_name);
if (script_id == uuid) {
// already have script. skip
cmd = "SKIP";
} else {
// we have the script but it's the wrong version. delete and get new one.
llRemoveInventory(script_name);
cmd = "GIVE";
}
}
} else if (type == "ITEM") {
if (llGetInventoryType(name) != INVENTORY_NONE) {
// item exists. check uuid.
if (llGetInventoryKey(name) != uuid) {
// mismatch. delete and report
llRemoveInventory(name);
cmd = "GIVE";
} else {
// match. Skip
cmd = "SKIP";
}
} else {
// we don't have item. get it.
cmd = "GIVE";
}
}
} else if (mode == "REMOVE" || mode == "DEPRECATED") {
//Debug("remove: " + msg);
if (type == "SCRIPT") {
string script_name = GetScriptFullname(name);
//Debug("script name: " + script_name);
if (llGetInventoryType(script_name) != INVENTORY_NONE) {
llRemoveInventory(script_name);
}
} else if (type == "ITEM") {
if (llGetInventoryType(name) != INVENTORY_NONE) {
llRemoveInventory(name);
}
}
cmd = "OK";
}
string response = llDumpList2String([type, name, cmd], "|");
//Debug("responding: " + response);
llRegionSayTo(id, channel, response);
} else {
if (llSubStringIndex(msg, "CLEANUP") == 0) {
// Prior to 3.706, collars would store version number in
// both the object name and description. This has
// problems: 1) It prevents running updates while worn,
// since llSetObjectName doesn't reliably persist for
// attachments, 2) it's needless repetition and creates
// unnecessary complexity, and 3) version numbers are ugly.
// So now we store version number in just one place, inside
// the "~version" notecard, which is automatically kept up
// to date when the core bundle is installed. The lines
// below here exist to clean up version numbers in old
// collars.
list msgparts = llParseString2List(msg, ["|"], []);
// look for a version in the name and remove if present
list nameparts = llParseString2List(llGetObjectName(), [" - "], []);
if (llGetListLength(nameparts) == 2 && (integer)llList2String(nameparts, 1)) {
// looks like there's a version in the name. Remove
// it!
string just_name = llList2String(nameparts, 0);
llSetObjectName(just_name);
}
// We used to set the version in the desc too. Now we just
// leave it alone in this script. The in-collar update
// script now uses that part of the desc to remember the
// timestamp of the last news item that it reported.
//restore settings
integer n;
integer stop = llGetListLength(lSettings);
list sDeprecatedSplitSettingTokenForTest;
for (n = 0; n < stop; n++) {
string setting = llList2String(lSettings, n);
//Look through deprecated settings to see if we should ignore any...
// Settings look like rlvmain_on=1, we want to deprecate the token ie. rlvmain_on <--store
sDeprecatedSplitSettingTokenForTest = llList2List(llParseString2List(setting,["="],[]),0,0);
if (llListFindList(lDeprecatedSettingTokens,sDeprecatedSplitSettingTokenForTest) < 0) { //If it doesn't exist in our list
llMessageLinked(LINK_SET, LM_SETTING_SAVE, setting, "");
//Debug("SP - Saving :"+setting);
}
else {
//Debug("SP - Deleting :"+ llList2String(sDeprecatedSplitSettingTokenForTest,0));
//remove it if it's somehow persistent still
llMessageLinked(LINK_SET, LM_SETTING_DELETE, llList2String(sDeprecatedSplitSettingTokenForTest,0), "");
}
}
// tell scripts to rebuild menus (in case plugins have been removed)
llMessageLinked(LINK_SET, COMMAND_NOAUTH, "fixmenus", llGetOwner());
// remove the script pin
llSetRemoteScriptAccessPin(0);
// celebrate
llOwnerSay("Update complete!");
// delete shim script
llRemoveInventory(llGetScriptName());
}
}
}
}
link_message(integer sender, integer num, string str, key id) {
// The settings script will dump all its settings when an inventory change happens, so listen for that and remember them
// so they can be restored when we're done.
if (num == LM_SETTING_RESPONSE) {
if (str != "settings=sent") {
if (llListFindList(lSettings, [str]) == -1) {
lSettings += [str];
}
}
}
}
}

View File

@@ -1,608 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - adjustment //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//handle appearance menu
//handle saving position on detach, and restoring it on httpdb_response
string g_sSubMenu = "Size/Position";
string g_sParentMenu = "Appearance";
string CTYPE = "collar";
list g_lMenuIDs;//3-strided list of avkey, dialogid, menuname
integer g_iMenuStride = 3;
string POSMENU = "Position";
string ROTMENU = "Rotation";
string SIZEMENU = "Size";
float g_fSmallNudge=0.0005;
float g_fMediumNudge=0.005;
float g_fLargeNudge=0.05;
float g_fNudge=0.005; // g_fMediumNudge;
float g_fRotNudge;
// SizeScale
list SIZEMENU_BUTTONS = [ "-1%", "-2%", "-5%", "-10%", "+1%", "+2%", "+5%", "+10%", "100%" ]; // buttons for menu
list g_lSizeFactors = [-1, -2, -5, -10, 1, 2, 5, 10, -1000]; // actual size factors
list g_lPrimStartSizes; // area for initial prim sizes (stored on rez)
integer g_iScaleFactor = 100; // the size on rez is always regarded as 100% to preven problem when scaling an item +10% and than - 10 %, which would actuall lead to 99% of the original size
integer g_iSizedByScript = FALSE; // prevent reseting of the script when the item has been chnged by the script
integer g_iAppLock = FALSE;
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
//integer POPUP_HELP = 1001;
//integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
//integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
//integer LM_SETTING_DELETE = 2003;//delete token from DB
//integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
//string UPMENU = "↑";//when your menu hears this, give the parent menu
string UPMENU = "BACK";
key g_kWearer;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
integer MinMaxUnscaled(vector vSize, float fScale)
{
if (fScale < 1.0)
{
if (vSize.x <= 0.01) return TRUE;
if (vSize.y <= 0.01) return TRUE;
if (vSize.z <= 0.01) return TRUE;
}
else
{
if (vSize.x >= 10.0) return TRUE;
if (vSize.y >= 10.0) return TRUE;
if (vSize.z >= 10.0) return TRUE;
}
return FALSE;
}
integer MinMaxScaled(vector vSize, float fScale)
{
if (fScale < 1.0)
{
if (vSize.x < 0.01) return TRUE;
if (vSize.y < 0.01) return TRUE;
if (vSize.z < 0.01) return TRUE;
}
else
{
if (vSize.x > 10.0) return TRUE;
if (vSize.y > 10.0) return TRUE;
if (vSize.z > 10.0) return TRUE;
}
return FALSE;
}
Store_StartScaleLoop()
{
g_lPrimStartSizes = [];
integer iPrimIndex;
vector vPrimScale;
vector vPrimPosit;
list lPrimParams;
if (llGetNumberOfPrims()<2)
{
vPrimScale = llGetScale();
g_lPrimStartSizes += vPrimScale.x;
}
else
{
for (iPrimIndex = 1; iPrimIndex <= llGetNumberOfPrims(); iPrimIndex++ )
{
lPrimParams = llGetLinkPrimitiveParams( iPrimIndex, [PRIM_SIZE, PRIM_POSITION]);
vPrimScale=llList2Vector(lPrimParams,0);
vPrimPosit=(llList2Vector(lPrimParams,1)-llGetRootPosition())/llGetRootRotation();
g_lPrimStartSizes += [vPrimScale,vPrimPosit];
}
}
g_iScaleFactor = 100;
}
ScalePrimLoop(integer iScale, integer iRezSize, key kAV)
{
integer iPrimIndex;
float fScale = iScale / 100.0;
list lPrimParams;
vector vPrimScale;
vector vPrimPos;
vector vSize;
if (llGetNumberOfPrims()<2)
{
vSize = llList2Vector(g_lPrimStartSizes,0);
if (MinMaxUnscaled(llGetScale(), fScale) || !iRezSize)
{
Notify(kAV, "The object cannot be scaled as you requested; prims are already at minimum or maximum size.", TRUE);
return;
}
else if (MinMaxScaled(fScale * vSize, fScale) || !iRezSize)
{
Notify(kAV, "The object cannot be scaled as you requested; prims would surpass minimum or maximum size.", TRUE);
return;
}
else
{
llSetScale(fScale * vSize); // not linked prim
}
}
else
{
if (!iRezSize)
{
// first some checking
for (iPrimIndex = 1; iPrimIndex <= llGetNumberOfPrims(); iPrimIndex++ )
{
lPrimParams = llGetLinkPrimitiveParams( iPrimIndex, [PRIM_SIZE, PRIM_POSITION]);
vPrimScale = llList2Vector(g_lPrimStartSizes, (iPrimIndex - 1)*2);
if (MinMaxUnscaled(llList2Vector(lPrimParams,0), fScale))
{
Notify(kAV, "The object cannot be scaled as you requested; prims are already at minimum or maximum size.", TRUE);
return;
}
else if (MinMaxScaled(fScale * vPrimScale, fScale))
{
Notify(kAV, "The object cannot be scaled as you requested; prims would surpass minimum or maximum size.", TRUE);
return;
}
}
}
Notify(kAV, "Scaling started, please wait ...", TRUE);
g_iSizedByScript = TRUE;
for (iPrimIndex = 1; iPrimIndex <= llGetNumberOfPrims(); iPrimIndex++ )
{
// lPrimParams = llGetLinkPrimitiveParams(iPrimIndex, [PRIM_SIZE, PRIM_POSITION]);
vPrimScale = fScale * llList2Vector(g_lPrimStartSizes, (iPrimIndex - 1)*2);
vPrimPos = fScale * llList2Vector(g_lPrimStartSizes, (iPrimIndex - 1)*2+1);
if (iPrimIndex == 1)
{
llSetLinkPrimitiveParamsFast(iPrimIndex, [PRIM_SIZE, vPrimScale]);
}
else
{
llSetLinkPrimitiveParamsFast(iPrimIndex, [PRIM_SIZE, vPrimScale, PRIM_POSITION, vPrimPos]);
}
}
g_iScaleFactor = iScale;
g_iSizedByScript = TRUE;
Notify(kAV, "Scaling finished, the "+CTYPE+" is now on "+ (string)g_iScaleFactor +"% of the rez size.", TRUE);
}
}
ForceUpdate()
{
//workaround for https://jira.secondlife.com/browse/VWR-1168
llSetText(".", <1,1,1>, 1.0);
llSetText("", <1,1,1>, 1.0);
}
vector ConvertPos(vector pos)
{
integer ATTACH = llGetAttached();
vector out ;
if (ATTACH == 1) { out.x = pos.y; out.y = pos.z; out.z = pos.x; }
else if (ATTACH == 5 || ATTACH == 20 || ATTACH == 21 ) { out.x = pos.x; out.y = -pos.z; out.z = pos.y ; }
else if (ATTACH == 6 || ATTACH == 18 || ATTACH == 19 ) { out.x = pos.x; out.y = pos.z; out.z = -pos.y; }
else out = pos ;
return out ;
}
AdjustPos(vector vDelta)
{
if (llGetAttached())
{
llSetPos(llGetLocalPos() + ConvertPos(vDelta));
ForceUpdate();
}
}
vector ConvertRot(vector rot)
{
integer ATTACH = llGetAttached();
vector out ;
if (ATTACH == 1) { out.x = rot.y; out.y = rot.z; out.z = rot.x; }
else if (ATTACH == 5 || ATTACH == 20 || ATTACH == 21) { out.x = rot.x; out.y = -rot.z; out.z = rot.y; }
else if (ATTACH == 6 || ATTACH == 18 || ATTACH == 19) { out.x = rot.x; out.y = rot.z; out.z = -rot.y; }
else out = rot ;
return out ;
}
AdjustRot(vector vDelta)
{
if (llGetAttached())
{
llSetLocalRot(llGetLocalRot() * llEuler2Rot(ConvertRot(vDelta)));
ForceUpdate();
}
}
RotMenu(key kAv, integer iAuth)
{
string sPrompt = "\nAdjust the "+CTYPE+"'s rotation.\n\nNOTE: Arrows refer to the neck joint.";
list lMyButtons = ["tilt up ↻", "left ↶", "tilt left ↙", "tilt down ↺", "right ↷", "tilt right ↘"];// ria change
key kMenuID = Dialog(kAv, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
integer iMenuIndex = llListFindList(g_lMenuIDs, [kAv]);
list lAddMe = [kAv, kMenuID, ROTMENU];
if (iMenuIndex == -1)
{
g_lMenuIDs += lAddMe;
}
else
{
g_lMenuIDs = llListReplaceList(g_lMenuIDs, lAddMe, iMenuIndex, iMenuIndex + g_iMenuStride - 1);
}
}
PosMenu(key kAv, integer iAuth)
{
string sPrompt = "\nAdjust the "+CTYPE+"'s position.\n\nNOTE: Arrows refer to the neck joint.\n\nCurrent nudge strength is: ";
list lMyButtons = ["left ←", "up ↑", "forward ↳", "right →", "down ↓", "backward ↲"];// ria iChange
if (g_fNudge!=g_fSmallNudge) lMyButtons+=["▸"];
else sPrompt += "▸";
if (g_fNudge!=g_fMediumNudge) lMyButtons+=["▸▸"];
else sPrompt += "▸▸";
if (g_fNudge!=g_fLargeNudge) lMyButtons+=["▸▸▸"];
else sPrompt += "▸▸▸";
key kMenuID = Dialog(kAv, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
integer iMenuIndex = llListFindList(g_lMenuIDs, [kAv]);
list lAddMe = [kAv, kMenuID, POSMENU];
if (iMenuIndex == -1)
{
g_lMenuIDs += lAddMe;
}
else
{
g_lMenuIDs = llListReplaceList(g_lMenuIDs, lAddMe, iMenuIndex, iMenuIndex + g_iMenuStride - 1);
}
}
SizeMenu(key kAv, integer iAuth)
{
string sPrompt = "\nAdjust the "+CTYPE+"'s scale.\n\nIt is based on the size the "+CTYPE+" has upon rezzing. You can change back to this size by using '100%'.\n\nCurrent size: " + (string)g_iScaleFactor + "%\n\nWARNING: Make a backup copy of your "+CTYPE+" first! Considering the massive variation of designs, this feature is not granted to work in all cases. Possible rendering bugs mean having to right-click your "+CTYPE+" first to see the actual result.";
key kMenuID = Dialog(kAv, sPrompt, SIZEMENU_BUTTONS, [UPMENU], 0, iAuth);
integer iMenuIndex = llListFindList(g_lMenuIDs, [kAv]);
list lAddMe = [kAv, kMenuID, SIZEMENU];
if (iMenuIndex == -1)
{
g_lMenuIDs += lAddMe;
}
else
{
g_lMenuIDs = llListReplaceList(g_lMenuIDs, lAddMe, iMenuIndex, iMenuIndex + g_iMenuStride - 1);
}
//Debug("FreeMem: " + (string)llGetFreeMemory());
}
DoMenu(key kAv, integer iAuth)
{
list lMyButtons ;
string sPrompt;
if (g_iAppLock && iAuth != COMMAND_OWNER) {
sPrompt = "\nThe appearance of the "+CTYPE+" has been locked.\n\nAn owner must unlock it to allow modification.";
} else {
sPrompt = "\nChange the position, rotation and size of your "+CTYPE+".\n\nwww.opencollar.at/appearance";
lMyButtons = [POSMENU, ROTMENU, SIZEMENU]; //["Position", "Rotation", "Size"];
}
key kMenuID = Dialog(kAv, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
integer iMenuIndex = llListFindList(g_lMenuIDs, [kAv]);
list lAddMe = [kAv, kMenuID, g_sSubMenu];
if (iMenuIndex == -1) g_lMenuIDs += lAddMe;
else g_lMenuIDs = llListReplaceList(g_lMenuIDs, lAddMe, iMenuIndex, iMenuIndex + g_iMenuStride - 1);
}
UserCommand(integer iNum, string sStr, key kID) {
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
string sValue = llToLower(llList2String(lParams, 1));
if (sCommand == "menu" && llGetSubString(sStr, 5, -1) == g_sSubMenu)
{
//someone asked for our menu
//give this plugin's menu to id
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the "+CTYPE+"'s appearance.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu " + g_sParentMenu, kID);
}
else DoMenu(kID, iNum);
} else if (sCommand=="lockappearance") {
g_iAppLock=(integer)sValue;
} else if (sStr == "appearance")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the "+CTYPE+"'s appearance.", FALSE);
}
else DoMenu(kID, iNum);
}
else if (sStr == "rotation")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the "+CTYPE+"'s rotation.", FALSE);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the "+CTYPE+" is locked. You cannot access this menu now!", FALSE);
DoMenu(kID, iNum);
}
else RotMenu(kID, iNum);
}
else if (sStr == "position")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the "+CTYPE+"'s position.", FALSE);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the "+CTYPE+" is locked. You cannot access this menu now!", FALSE);
DoMenu(kID, iNum);
}
else PosMenu(kID, iNum);
}
else if (sStr == "size")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the "+CTYPE+"'s size.", FALSE);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the "+CTYPE+" is locked. You cannot access this menu now!", FALSE);
DoMenu(kID, iNum);
}
else SizeMenu(kID, iNum);
}
}
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
g_fRotNudge = PI / 32.0;//have to do this here since we can't divide in a global var declaration
Store_StartScaleLoop();
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)
{
UserCommand( iNum, sStr, kID);
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == "Appearance_Lock") g_iAppLock = (integer)sValue;
}
else if (iNum == DIALOG_RESPONSE)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
string sMenuType = llList2String(g_lMenuIDs, iMenuIndex + 1);
//remove stride from g_lMenuIDs
//we have to subtract from the index because the dialog id comes in the middle of the stride
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
if (sMenuType == g_sSubMenu)
{
if (sMessage == UPMENU) llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
else if (sMessage == POSMENU) PosMenu(kAv, iAuth);
else if (sMessage == ROTMENU) RotMenu(kAv, iAuth);
else if (sMessage == SIZEMENU) SizeMenu(kAv, iAuth);
}
else if (sMenuType == POSMENU)
{
if (sMessage == UPMENU)
{
DoMenu(kAv, iAuth);
return;
}
else if (llGetAttached())
{
if (sMessage == "forward ↳") AdjustPos(<g_fNudge, 0, 0>);
else if (sMessage == "left ←") AdjustPos(<0, g_fNudge, 0>);
else if (sMessage == "up ↑") AdjustPos(<0, 0, g_fNudge>);
else if (sMessage == "backward ↲") AdjustPos(<-g_fNudge, 0, 0>);
else if (sMessage == "right →") AdjustPos(<0, -g_fNudge, 0>);
else if (sMessage == "down ↓") AdjustPos(<0, 0, -g_fNudge>);
else if (sMessage == "▸") g_fNudge=g_fSmallNudge;
else if (sMessage == "▸▸") g_fNudge=g_fMediumNudge;
else if (sMessage == "▸▸▸") g_fNudge=g_fLargeNudge;
}
else Notify(kAv, "Sorry, position can only be adjusted while worn",FALSE);
PosMenu(kAv, iAuth);
}
else if (sMenuType == ROTMENU)
{
if (sMessage == UPMENU)
{
DoMenu(kAv, iAuth);
return;
}
else if (llGetAttached())
{
if (sMessage == "tilt right ↘") AdjustRot(<g_fRotNudge, 0, 0>);
else if (sMessage == "tilt up ↻") AdjustRot(<0, g_fRotNudge, 0>);
else if (sMessage == "left ↶") AdjustRot(<0, 0, g_fRotNudge>);
else if (sMessage == "right ↷") AdjustRot(<0, 0, -g_fRotNudge>);
else if (sMessage == "tilt left ↙") AdjustRot(<-g_fRotNudge, 0, 0>);
else if (sMessage == "tilt down ↺") AdjustRot(<0, -g_fRotNudge, 0>);
}
else Notify(kAv, "Sorry, position can only be adjusted while worn", FALSE);
RotMenu(kAv, iAuth);
}
else if (sMenuType == SIZEMENU)
{
if (sMessage == UPMENU)
{
DoMenu(kAv, iAuth);
return;
}
else
{
integer iMenuCommand = llListFindList(SIZEMENU_BUTTONS, [sMessage]);
if (iMenuCommand != -1)
{
integer iSizeFactor = llList2Integer(g_lSizeFactors, iMenuCommand);
if (iSizeFactor == -1000)
{
// ResSize requested
if (g_iScaleFactor == 100)
{
Notify(kAv, "Resizing canceled; the "+CTYPE+" is already at original size.", FALSE);
}
else
{
ScalePrimLoop(100, TRUE, kAv);
}
}
else
{
ScalePrimLoop(g_iScaleFactor + iSizeFactor, FALSE, kAv);
}
}
SizeMenu(kAv, iAuth);
}
}
}
}
else if (iNum == DIALOG_TIMEOUT)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
//remove stride from g_lMenuIDs
//we have to subtract from the index because the dialog id comes in the middle of the stride
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
}
}
}
timer()
{
// the timer is needed as the changed_size even is triggered twice
llSetTimerEvent(0);
if (g_iSizedByScript)
g_iSizedByScript = FALSE;
}
changed(integer iChange)
{
if (iChange & (CHANGED_SCALE))
{
if (g_iSizedByScript)
// the item had ben rescaled by the script, do NOT reset the script and store new positions
{
// ignore the event and trigger timer to reset flag. needed as we got the event twice after scaling
llSetTimerEvent(0.5);
}
else
// it was a user change, so we have to store the basic values again
{
Store_StartScaleLoop();
}
}
if (iChange & (CHANGED_SHAPE | CHANGED_LINK))
{
Store_StartScaleLoop();
}
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,662 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - anim //
// version 3.990 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//needs to handle anim requests from sister scripts as well
//this script as essentially two layers
//lower layer: coordinate animation requests that come in on link messages. keep a list of playing anims disable AO when needed
//upper layer: use the link message anim api to provide a pose menu
list g_lAnims; //list of queued anims
list g_lPoseList; //list of standard poses to use in the menu
integer g_iNumberOfAnims; //we store this to avoid running createanimlist() every time inventory is changed...
//PoseMove tweak stuff
integer g_iTweakPoseAO = 0; //Disable/Enable AO for posed animations - set it to 1 to default PoseMove tweak to ON
string g_sPoseMoveWalk; //Variable to hold our current Walk animation
string g_sPoseMoveRun; //Variable to hold our run animation
string g_sWalkButtonPrefix = ""; //This can be changed to prefix walks in the PoseMove menu
list g_lPoseMoveAnimationPrefix = ["~walk_","~run_"];
//for the height scaling feature
key g_kDataID; //uuid of notecard read request
integer g_iLine = 0; //records progress through notecard
list g_lAnimScalars; //a 3-strided list in form animname,scalar,delay
integer g_iAdjustment = 0; //heightfix on/off
string g_sCurrentPose = "";
integer g_iLastRank = 0; //in this integer, save the rank of the person who posed the av, according to message map. 0 means unposed
integer g_iLastPostureRank = 504;
integer g_iLastPoselockRank = 504;
list g_lAnimButtons; // initialized in state_entry for OpenSim compatibility (= ["Pose", "AO Menu", g_sGiveAO, "AO ON", "AO OFF"];)
integer g_iAnimLock = FALSE; //animlock on/off
integer g_iPosture; //posture lock on/off
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_SAFEWORD = 510;
//EXTERNAL MESSAGE MAP
integer EXT_COMMAND_COLLAR = 499; //added for collar or cuff commands to put ao to pause or standOff
integer LM_SETTING_SAVE = 2000; //scripts send messages on this channel to have settings saved to httpdb
integer LM_SETTING_RESPONSE = 2002; //the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003; //delete token from DB
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer ANIM_START = 7000;
integer ANIM_STOP = 7001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer g_iAOChannel = -782690;
integer g_iInterfaceChannel = -12587429;
key g_kWearer;
string WEARERNAME;
list g_lMenuIDs; //three strided list of avkey, dialogid, and menuname
integer g_iMenuStride = 3;
integer g_iHeightFix = TRUE; //stores setting for should we use heightfix or not
list g_lHeightFixAnims; //stores a list of all of the heighfix anims installed in the collar
integer g_iMaxHeightAdjust; //largest height fix anim
integer g_iMinHeightAdjust; //smallest height fix anim
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Dialog(key kID, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth, string sName) {
key kMenuID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kID + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kMenuID);
integer iIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iIndex) g_lMenuIDs = llListReplaceList(g_lMenuIDs, [kID, kMenuID, sName], iIndex, iIndex + g_iMenuStride - 1); //we've alread given a menu to this user. overwrite their entry
else g_lMenuIDs += [kID, kMenuID, sName]; //we've not already given this user a menu. append to list
//Debug("Made "+sName+" menu.");
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
AnimMenu(key kID, integer iAuth) {
string sPrompt = WEARERNAME;
list lButtons;
if (g_iAnimLock) {
sPrompt += " is forbidden to change or stop poses on their own";
lButtons = ["☒ AnimLock"];
} else {
sPrompt += " is allowed to change or stop poses on their own";
lButtons = ["☐ AnimLock"];
}
if (llGetInventoryType("~stiff")==INVENTORY_ANIMATION) {
if (g_iPosture) {
sPrompt +=" and has their neck forced stiff.";
lButtons += ["☒ Posture"];
} else {
sPrompt +=" and can relax their neck.";
lButtons += ["☐ Posture"];
}
}
if (g_iTweakPoseAO) lButtons += ["☒ AntiSlide"];
else lButtons += ["☐ AntiSlide"];
lButtons += ["AO Menu", "AO ON", "AO OFF", "Pose"];
sPrompt +="\n\nwww.opencollar.at/animations";
Dialog(kID, sPrompt, lButtons+g_lAnimButtons, ["BACK"], 0, iAuth, "Anim");
}
PoseMenu(key kID, integer iPage, integer iAuth) { //create a list
string sPrompt = "\nChoose a pose to play.\n\nwww.opencollar.at/animations\n\nCurrent Pose is ";
if (g_sCurrentPose == "")sPrompt += "None\n";
else sPrompt += g_sCurrentPose +"\n";
string sHeightFixButton= "☐ HeightFix";
if (g_iHeightFix) sHeightFixButton = "☒ HeightFix";
list lUtilityButtons=["STOP", "BACK"];
if (g_iHeightFix) lUtilityButtons=["↑","↓"]+lUtilityButtons;
Dialog(kID, sPrompt, [sHeightFixButton]+g_lPoseList, lUtilityButtons, iPage, iAuth, "Pose");
}
PoseMoveMenu(key kID, integer iPage, integer iAuth) {
string sPrompt = "\nChoose a pose to play.\n\nwww.opencollar.at/animations\n\n";
list lButtons;
if (g_iTweakPoseAO) {
sPrompt += "\nThe AntiSlide tweak is enabled.";
lButtons += ["OFF"];
} else {
sPrompt += "\nThe AntiSlide tweak is disabled.";
lButtons += ["ON"];
}
if (g_sPoseMoveWalk != "") {
if (g_iTweakPoseAO) {
sPrompt += "\n\nSelected Walk: "+g_sPoseMoveWalk;
if (llGetInventoryKey(g_sPoseMoveRun)) sPrompt += "\nSelected Run: "+g_sPoseMoveRun;
else sPrompt += "\nSelected Run: ~run";
}
lButtons += ["☐ none"];
} else {
sPrompt += "\n\nAntiSlide is not overriding any walk animations.";
lButtons += ["☒ none"];
}
integer i = 0;
integer iAnims = llGetInventoryNumber(INVENTORY_ANIMATION) - 1;
string sAnim;
for (i=0;i<=iAnims;++i) {
sAnim = llGetInventoryName(INVENTORY_ANIMATION,i);
if (llSubStringIndex(sAnim,llList2String(g_lPoseMoveAnimationPrefix,0)) == 0 ) {
if (sAnim == g_sPoseMoveWalk) lButtons += ["☒ " + g_sWalkButtonPrefix+ llGetSubString(sAnim,llStringLength(llList2String(g_lPoseMoveAnimationPrefix,0)),-1)];
else lButtons += ["☐ " +g_sWalkButtonPrefix+ llGetSubString(sAnim,llStringLength(llList2String(g_lPoseMoveAnimationPrefix,0)),-1)];
}
}
Dialog(kID, sPrompt, lButtons, ["BACK"], 0, iAuth, "AntiSlide");
}
AOMenu(key kID, integer iAuth) { // wrapper to send menu back to the AO's menu
llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarCommand|" + (string)iAuth + "|ZHAO_MENU|" + (string)kID);
llRegionSayTo(g_kWearer,g_iAOChannel, "ZHAO_MENU|" + (string)kID);
}
integer SetPosture(integer iOn, key kCommander) {
if (llGetInventoryType("~stiff")!=INVENTORY_ANIMATION) return FALSE;
if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) {
if (iOn && !g_iPosture) {
llStartAnimation("~stiff");
if (kCommander) Notify(kCommander,"Posture override active.",TRUE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "anim_posture=1","");
} else if (!iOn) {
llStopAnimation("~stiff");
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_posture", "");
}
g_iPosture=iOn;
return TRUE;
} else {
llOwnerSay("Error: Somehow I lost permission to animate you. Try taking me off and re-attaching me.");
return FALSE;
}
}
RefreshAnim() { //g_lAnims can get lost on TP, so re-play g_lAnims[0] here, and call this function in "changed" event on TP
if (llGetListLength(g_lAnims)) {
if (g_iPosture) llStartAnimation("~stiff");
if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) {
string sAnim = llList2String(g_lAnims, 0);
if (llGetInventoryType(sAnim) == INVENTORY_ANIMATION) StartAnim(sAnim); //get and stop currently playing anim
} else llOwnerSay( "Error: Somehow I lost permission to animate you. Try taking me off and re-attaching me.");
}
}
StartAnim(string sAnim) { //adds anim to queue, calls PlayAnim to play it, and calls AO as necessary
if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) {
if (llGetInventoryType(sAnim) == INVENTORY_ANIMATION) {
//stop currently playing anim
if (llGetListLength(g_lAnims)) UnPlayAnim(llList2String(g_lAnims, 0));
//add new anim to list
g_lAnims = [sAnim] + g_lAnims; //this way, g_lAnims[0] is always the currently playing anim
//play new anim
PlayAnim(sAnim);
//switch off AO
llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarComand|" + (string)EXT_COMMAND_COLLAR + "|ZHAO_STANDOFF");
llRegionSayTo(g_kWearer,g_iAOChannel, "ZHAO_STANDOFF");
}
} else llOwnerSay( "Error: Somehow I lost permission to animate you. Try taking me off and re-attaching me.");
}
PlayAnim(string sAnim){ //plays anim and heightfix, depending on methods configured for each
//play anim
llStartAnimation(sAnim);
//play heightfix
if (g_iHeightFix) {
integer iIndex = llListFindList(g_lAnimScalars, [sAnim]);
if (~iIndex) { //we just started playing an anim in our g_lAnimScalars list
llSleep((float)llList2String(g_lAnimScalars, iIndex + 2)); //pause to give certain anims time to ease in
vector vAvScale = llGetAgentSize(g_kWearer);
float fScalar = (float)llList2String(g_lAnimScalars, iIndex + 1);
g_iAdjustment = llRound(vAvScale.z * fScalar);
if (g_iAdjustment > g_iMaxHeightAdjust) g_iAdjustment = g_iMaxHeightAdjust;
else if (g_iAdjustment < g_iMinHeightAdjust) g_iAdjustment = g_iMinHeightAdjust;
llStartAnimation("~" + (string)g_iAdjustment);
}
}
}
StopAnim(string sAnim) { //deals with removing anim from queue, calls UnPlayAnim to stop it, calls AO as nexessary
if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) {
if (llGetInventoryType(sAnim) == INVENTORY_ANIMATION) {
//remove all instances of stopped anim from the queue
while(~llListFindList(g_lAnims,[sAnim])){
integer n=llListFindList(g_lAnims,[sAnim]);
g_lAnims=llDeleteSubList(g_lAnims, n, n);
}
//stop the pose
UnPlayAnim(sAnim);
//play the new g_lAnims[0]. If anim list is empty, turn AO back on
if (llGetListLength(g_lAnims)) PlayAnim(llList2String(g_lAnims, 0));
else {
llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarComand|" + (string)EXT_COMMAND_COLLAR + "|ZHAO_STANDON");
llRegionSayTo(g_kWearer,g_iAOChannel, "ZHAO_STANDON");
}
}
} else llOwnerSay( "Error: Somehow I lost permission to animate you. Try taking me off and re-attaching me.");
}
UnPlayAnim(string sAnim){ //stops anim and heightfix, depending on methods configured for each
//stop the pose
llStopAnimation(sAnim);
//stop any currently-playing height adjustment
if (g_iAdjustment) {
llStopAnimation("~" + (string)g_iAdjustment);
g_iAdjustment = 0;
}
}
CreateAnimList() {
g_lPoseList=[];
g_lHeightFixAnims=[];
g_iNumberOfAnims=llGetInventoryNumber(INVENTORY_ANIMATION);
integer iNumberOfAnims = g_iNumberOfAnims;
while (iNumberOfAnims--) {
string sName=llGetInventoryName(INVENTORY_ANIMATION, iNumberOfAnims);
if (sName != "" && llGetSubString(sName, 0, 0) != "~") g_lPoseList+=[sName]; //check here if the anim start with ~ or for some reason does not get a name returned (spares to check that all again in the menu ;)
if (llSubStringIndex(sName,"~")==0 && llStringLength(sName)==4) {
sName=llGetSubString(sName,1,3);
if ((integer)sName != 0) g_lHeightFixAnims += sName;
}
}
g_lHeightFixAnims=llListSort(g_lHeightFixAnims,1,1);
g_iMaxHeightAdjust=llList2Integer(g_lHeightFixAnims,0);
g_iMinHeightAdjust=llList2Integer(g_lHeightFixAnims,-1);
}
AdjustOffset(integer direction) {
if (llGetListLength(g_lAnims)>0) { //first, check we're running an anim
//get sleep time from list
string sNewAnim = llList2String(g_lAnims, 0);
integer iIndex = llListFindList(g_lAnimScalars, [sNewAnim]);
string sleepTime="2.0";
if (iIndex != -1) {
sleepTime=llList2String(g_lAnimScalars, iIndex + 2);
g_lAnimScalars=llDeleteSubList(g_lAnimScalars,iIndex,iIndex+2); //we re-write it at the end
}
//stop last adjustment anim and play next one
integer iOldAdjustment=g_iAdjustment;
if (g_iAdjustment) {
g_iAdjustment+=direction;
while (g_iAdjustment > g_iMinHeightAdjust && g_iAdjustment < g_iMaxHeightAdjust && !~llListFindList(g_lHeightFixAnims,[(string)g_iAdjustment])) {
//Debug("Re-adjust "+(string)g_iAdjustment);
g_iAdjustment+=direction;
}
if (g_iAdjustment > g_iMaxHeightAdjust) {
g_iAdjustment = 0;
llOwnerSay(sNewAnim+" height fix cancelled");
} else if (g_iAdjustment < g_iMinHeightAdjust) g_iAdjustment = g_iMinHeightAdjust;
} else if (direction == -1) g_iAdjustment=g_iMaxHeightAdjust;
if (g_iAdjustment != 0) {
llStartAnimation("~" + (string)g_iAdjustment);
//now calculate the new offset for notecard dump print
vector avscale = llGetAgentSize(g_kWearer);
float test = (float)g_iAdjustment/avscale.z;
llOwnerSay(sNewAnim+"|"+(string)test+"|"+sleepTime);
//and store it
g_lAnimScalars+=[sNewAnim,test,sleepTime];
}
if (iOldAdjustment && iOldAdjustment != g_iAdjustment) {
llStopAnimation("~" + (string)iOldAdjustment);
}
}
}
UserCommand(integer iNum, string sStr, key kID) {
if (iNum == COMMAND_EVERYONE) return; // No command for people with no privilege in this plugin.
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
string sValue = llToLower(llList2String(lParams, 1));
if (sCommand == "menu") {
string sSubmenu = llGetSubString(sStr, 5, -1);
if (sSubmenu == "Pose") PoseMenu(kID, 0, iNum);
else if (sSubmenu == "AntiSlide") PoseMoveMenu(kID,0,iNum);
else if (sSubmenu == "AO") AOMenu(kID, iNum);
else if (sSubmenu == "Animations") AnimMenu(kID, iNum);
} else if (sStr == "release" || sStr == "stop") { //only release if person giving command outranks person who posed us
if (iNum <= g_iLastRank || !g_iAnimLock) {
g_iLastRank = 0;
llMessageLinked(LINK_SET, ANIM_STOP, g_sCurrentPose, "");
g_sCurrentPose = "";
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_currentpose", "");
}
} else if (sStr == "animations") AnimMenu(kID, iNum); //give menu
else if (sStr == "pose") PoseMenu(kID, 0, iNum); //pose menu
else if (sStr == "runaway" && (iNum == COMMAND_OWNER || iNum == COMMAND_WEARER)) { //stop pose on runaway
if (g_sCurrentPose != "") StopAnim(g_sCurrentPose);
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_currentpose", "");
llResetScript();
} else if ( sCommand=="posture") { //posture
if ( sValue=="on") { //posture
if (iNum<=COMMAND_WEARER) {
g_iLastPostureRank=iNum;
SetPosture(TRUE,kID);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "anim_PostureRank="+(string)g_iLastPostureRank,"");
llOwnerSay( "Your neck is locked in place.");
if (kID != g_kWearer) Notify(kID, WEARERNAME + "'s neck is locked in place.", FALSE);
} else Notify(kID,"Only owners can do that, sorry.",FALSE);
} else if ( sValue=="off") {
if (iNum<=g_iLastPostureRank) {
g_iLastPostureRank=COMMAND_WEARER;
SetPosture(FALSE,kID);
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_PostureRank", "");
llOwnerSay( "You can move your neck again.");
if (kID != g_kWearer) Notify(kID, WEARERNAME + " is free to move their neck.", FALSE);
} else Notify(kID,"Someone more important locked "+WEARERNAME+"'s neck in this position",FALSE);
}
} else if ( sCommand=="animlock") { //anim lock
if ( sValue=="on") { //anim lock
if (iNum<=COMMAND_WEARER) {
g_iLastPoselockRank=iNum;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "anim_PoselockRank="+(string)g_iLastPoselockRank,"");
g_iAnimLock = TRUE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "anim_animlock=1", "");
llOwnerSay( "Only owners can change or stop your poses now.");
if (kID != g_kWearer) Notify(kID, WEARERNAME + " can have their poses changed or stopped only by owners.", FALSE);
} else Notify(kID,"You don't have permission to lock "+WEARERNAME+" in this position",FALSE);
} else if ( sValue=="off") {
if (iNum<=g_iLastPoselockRank) {
g_iAnimLock = FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_animlock", "");
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_PoselockRank", "");
llOwnerSay( "You are now free to change or stop poses on your own.");
if (kID != g_kWearer) Notify(kID, WEARERNAME + " is free to change or stop poses on their own.", FALSE);
} else Notify(kID,"Someone more important locked "+WEARERNAME+" in this position",FALSE);
}
} else if ( sCommand=="heightfix") { //heightfix
if ((iNum == COMMAND_OWNER)||(kID == g_kWearer)) {
if (sValue=="on"){
g_iHeightFix = TRUE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_HFix", "");
} else if (sValue=="off"){
g_iHeightFix = FALSE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "anim_HFix=0", "");
}
Notify(kID, "HeightFix override "+sValue+".", TRUE);
if (g_sCurrentPose != "") {
StopAnim(g_sCurrentPose);
StartAnim(g_sCurrentPose);
}
} else Notify(kID,"Only owners or the wearer can change HeightFix settings.",FALSE);
} else if (sCommand == "ao") { //AO
if (sValue == "" || sValue == "menu") AOMenu(kID, iNum);
else if (sValue == "off") {
llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarCommand|" + (string)iNum + "|ZHAO_AOOFF|" + (string)kID);
llRegionSayTo(g_kWearer,g_iAOChannel,"ZHAO_AOOFF");
} else if (sValue == "on") {
llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarCommand|" + (string)iNum + "|ZHAO_AOON|" + (string)kID);
llRegionSayTo(g_kWearer,g_iAOChannel,"ZHAO_AOON");
} else if (sValue == "lock") llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarCommand|" + (string)iNum + "|ZHAO_LOCK|" + (string)kID);
else if (sValue == "unlock") llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarCommand|" + (string)iNum + "|ZHAO_UNLOCK|" + (string)kID);
else if (sValue == "hide") llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarCommand|" + (string)iNum + "|ZHAO_AOHIDE|" + (string)kID);
else if (sValue == "show") llRegionSayTo(g_kWearer,g_iInterfaceChannel, "CollarCommand|" + (string)iNum + "|ZHAO_AOSHOW|" + (string)kID);
} else if (sCommand == "antislide") { //check for text command of PoseMoveMenu's string
if ((iNum == COMMAND_OWNER)||(kID == g_kWearer)) {
string sValueNotLower = llList2String(lParams, 1);
if (sValue == "on") {
g_iTweakPoseAO = 1;
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, "anim_TweakPoseAO=1" , "");
RefreshAnim();
Notify(kID, "AntiSlide is now enabled.", TRUE);
} else if (sValue == "off") {
g_iTweakPoseAO = 0;
llMessageLinked(LINK_THIS, LM_SETTING_DELETE, "anim_TweakPoseAO", "");
RefreshAnim();
Notify(kID, "AntiSlide is now disabled.", TRUE);
} else if (sValue == "none") {
llMessageLinked(LINK_THIS, LM_SETTING_DELETE, "anim_PoseMoveWalk", "");
g_sPoseMoveWalk = "";
g_sPoseMoveRun = "";
RefreshAnim();
Notify(kID, "AntiSlide animation is \"none\".", TRUE);
} else if (llGetInventoryType(llList2String(g_lPoseMoveAnimationPrefix,0)+sValueNotLower)==INVENTORY_ANIMATION) {
g_sPoseMoveWalk = llList2String(g_lPoseMoveAnimationPrefix,0) + sValueNotLower;
g_sPoseMoveRun = llList2String(g_lPoseMoveAnimationPrefix,1) + sValueNotLower;
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, "anim_PoseMoveWalk=" + g_sPoseMoveWalk, "");
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, "anim_PoseMoveRun=" + g_sPoseMoveRun, "");
RefreshAnim();
Notify(kID, "AntiSlide animation is \""+sValueNotLower+"\".", TRUE);
} else if (sValue=="") PoseMoveMenu(kID,0,iNum);
else Notify(kID,"Can't find animation "+llList2String(g_lPoseMoveAnimationPrefix,0)+sValueNotLower,FALSE);
} else llOwnerSay( "Only owners or the wearer can change antislide settings.");
} else if (llGetInventoryType(sStr) == INVENTORY_ANIMATION) { //strike a pose...
if (iNum <= g_iLastRank || !g_iAnimLock || g_sCurrentPose == "") {
if (g_sCurrentPose != "") llMessageLinked(LINK_SET, ANIM_STOP, g_sCurrentPose, "");
g_sCurrentPose = sStr;
g_iLastRank = iNum;
llMessageLinked(LINK_SET, ANIM_START, g_sCurrentPose, "");
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "anim_currentpose=" + g_sCurrentPose + "," + (string)g_iLastRank, "");
} else Notify(kID, "Someone more important has locked "+WEARERNAME+" in this position.",FALSE);
}
}
default {
on_rez(integer iNum) {
if (llGetOwner() != g_kWearer) llResetScript();
//if (llGetAttached()) llRequestPermissions(g_kWearer, PERMISSION_TRIGGER_ANIMATION | PERMISSION_OVERRIDE_ANIMATIONS );
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
g_iInterfaceChannel = (integer)("0x" + llGetSubString(g_kWearer,30,-1));
if (g_iInterfaceChannel > 0) g_iInterfaceChannel = -g_iInterfaceChannel;
if (llGetAttached()) llRequestPermissions(g_kWearer, PERMISSION_TRIGGER_ANIMATION);
CreateAnimList();
if (llGetInventoryKey("~heightscalars")) g_kDataID = llGetNotecardLine("~heightscalars", g_iLine); //start reading the ~heightscalars notecard
//Debug("Starting");
}
dataserver(key kID, string sData) {
if (kID == g_kDataID) {
if (sData != EOF) {
g_lAnimScalars += llParseString2List(sData, ["|"], []);
g_kDataID = llGetNotecardLine("~heightscalars", ++g_iLine);
}
//else Debug("Notecard read complete");
}
}
run_time_permissions(integer iPerm) {
if (iPerm & PERMISSION_TRIGGER_ANIMATION) {
if (g_iPosture) llStartAnimation("~stiff");
}
}
attach(key kID) {
if (kID == NULL_KEY) { //we were just detached. clear the anim list and tell the ao to play stands again.
llRegionSayTo(g_kWearer,g_iInterfaceChannel, (string)EXT_COMMAND_COLLAR + "|ZHAO_STANDON");
llRegionSayTo(g_kWearer,g_iAOChannel, "ZHAO_STANDON");
g_lAnims = [];
}
else llRequestPermissions(g_kWearer, PERMISSION_TRIGGER_ANIMATION);
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
if (iNum <= COMMAND_EVERYONE && iNum >= COMMAND_OWNER) UserCommand(iNum, sStr, kID);
else if (iNum == ANIM_START) StartAnim(sStr);
else if (iNum == ANIM_STOP) StopAnim(sStr);
else if (iNum == MENUNAME_REQUEST && sStr == "Main") {
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, "Main|Animations", ""); //no need for fixed main menu
llMessageLinked(LINK_SET, MENUNAME_REQUEST, "Animations", "");
} else if (iNum == MENUNAME_RESPONSE) {
if (llSubStringIndex(sStr, "Animations|")==0) { //if sStr starts with "Animations|"
string child = llList2String(llParseString2List(sStr, ["|"], []), 1);
if (llListFindList(g_lAnimButtons, [child]) == -1) g_lAnimButtons += [child];
}
} else if (iNum == COMMAND_SAFEWORD) { // saefword command recieved, release animation
if (llGetInventoryType(g_sCurrentPose) == INVENTORY_ANIMATION) {
g_iLastRank = 0;
llMessageLinked(LINK_SET, ANIM_STOP, g_sCurrentPose, "");
g_iAnimLock = FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "anim_animlock", "");
g_sCurrentPose = "";
}
} else if (iNum == LM_SETTING_RESPONSE) {
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == "anim_") {
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "currentpose") {
list lAnimParams = llParseString2List(sValue, [","], []);
g_sCurrentPose = llList2String(lAnimParams, 0);
g_iLastRank = (integer)llList2String(lAnimParams, 1);
llMessageLinked(LINK_SET, ANIM_START, g_sCurrentPose, "");
} else if (sToken == "animlock") g_iAnimLock = (integer)sValue;
else if (sToken =="posture") SetPosture((integer)sValue,NULL_KEY);
else if (sToken == "PoseMoveWalk") g_sPoseMoveWalk = sValue;
else if (sToken == "PoseMoveRun") g_sPoseMoveRun = sValue;
else if (sToken == "TweakPoseAO") g_iTweakPoseAO = (integer)sValue;
else if (sToken == "PostureRank") g_iLastPostureRank= (integer)sValue;
else if (sToken == "PoselockRank") g_iLastPoselockRank= (integer)sValue;
else if (sToken == "TweakPoseAO") g_iTweakPoseAO = (integer)sValue;
else if (sToken == "HFix") g_iHeightFix = (integer)sValue;
} else if (sToken == "Global_WearerName") WEARERNAME = sValue;
} else if (iNum == DIALOG_RESPONSE) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex) { //got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = llList2Integer(lMenuParams, 3);
string sMenuType = llList2String(g_lMenuIDs, iMenuIndex + 1);
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
if (sMenuType == "Anim") {
//Debug("Got message "+sMessage);
if (sMessage == "BACK") llMessageLinked(LINK_SET, iAuth, "menu Main", kAv);
else if (sMessage == "Pose") PoseMenu(kAv, 0, iAuth);
else if (llGetSubString(sMessage, 2, -1) == "AntiSlide") PoseMoveMenu(kAv,iNum,iAuth); //This is the Animation menu item, we need to call the PoseMoveMenu item from here...
else if (~llListFindList(g_lAnimButtons, [sMessage])) llMessageLinked(LINK_SET, iAuth, "menu " + sMessage, kAv); // SA: can be child scripts menus, not handled in UserCommand()
else if (sMessage == "AO Menu") {
Notify(kAv, "Attempting to trigger the AO menu. This will only work if " + WEARERNAME + " is using a Submissive AO or an AO Link script in their normal AO.", FALSE);
AOMenu(kAv, iAuth);
} else {
if (sMessage== "☐ AnimLock") UserCommand(iAuth, "animlock on", kAv);
else if (sMessage== "☒ AnimLock") UserCommand(iAuth, "animlock off", kAv);
else if (sMessage== "☐ Posture") UserCommand(iAuth, "posture on", kAv);
else if (sMessage== "☒ Posture") UserCommand(iAuth, "posture off", kAv);
else UserCommand(iAuth, sMessage, kAv);
AnimMenu(kAv, iAuth);
}
} else if (sMenuType == "Pose") {
if (sMessage == "BACK") AnimMenu(kAv, iAuth); //return on parent menu, so the animmenu below doesn't come up
else {
if (sMessage == "STOP") UserCommand(iAuth, "release", kAv);
else if (sMessage == "↑") AdjustOffset(1);
else if (sMessage == "↓") AdjustOffset(-1);
else if (sMessage == "☒ HeightFix") UserCommand(iAuth, "heightfix off", kAv);
else if (sMessage == "☐ HeightFix") UserCommand(iAuth, "heightfix on", kAv);
else UserCommand(iAuth, sMessage, kAv); //got pose name
PoseMenu(kAv, iPage, iAuth);
}
} else if (sMenuType == "AntiSlide") {
if (sMessage == "BACK") AnimMenu(kAv, iAuth); //return on parent menu, so the animmenu below doesn't come up
else {
if (sMessage == "ON") UserCommand(iAuth, "antislide on", kAv);
else if (sMessage == "OFF") UserCommand(iAuth, "antislide off", kAv);
else if (llGetSubString(sMessage,2,-1) == "none" ) UserCommand(iAuth, "antislide none", kAv);
else if (llGetInventoryType(llList2String(g_lPoseMoveAnimationPrefix,0)+llGetSubString(sMessage,2+llStringLength(g_sWalkButtonPrefix),-1))==INVENTORY_ANIMATION) UserCommand(iAuth, "antislide "+llGetSubString(sMessage,2+llStringLength(g_sWalkButtonPrefix),-1), kAv);
PoseMoveMenu(kAv,iNum,iAuth);
}
}
}
}
}
changed(integer iChange) {
if (iChange & CHANGED_OWNER) llResetScript();
if (iChange & CHANGED_TELEPORT) RefreshAnim();
if (iChange & CHANGED_INVENTORY) { //start re-reading the ~heightscalars notecard
g_lAnimScalars = [];
g_iLine = 0;
if (llGetInventoryKey("~heightscalars")) g_kDataID = llGetNotecardLine("~heightscalars", g_iLine);
if (g_iNumberOfAnims!=llGetInventoryNumber(INVENTORY_ANIMATION)) CreateAnimList();
}
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,929 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - auth //
// version 3.994 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
key g_kWearer;
list g_lOwners;//strided list in form key,name
list g_lSecOwners;//strided list in the form key,name
list g_lBlackList;//list of blacklisted UUID
list g_lTempOwners;//list of temp owners UUID. Temp owner is just like normal owner, but can't add new owners.
key g_kGroup = "";
string g_sGroupName;
integer g_iGroupEnabled = FALSE;
string g_sParentMenu = "Main";
string g_sSubMenu = "Access";
integer g_iRunawayDisable=0;
string g_sPrefix;
list g_lQueryId; //5 strided list of dataserver/http request: key, uuid, requestType, kAv, remenu. For AV name/group name lookups
integer g_iQueryStride=5;
//added for attachment auth
integer g_iInterfaceChannel;
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510; // new for safeword
integer COMMAND_BLACKLIST = 520;
// added so when the sub is locked out they can use postions
integer COMMAND_WEARERLOCKEDOUT = 521;
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
//integer MENUNAME_REQUEST = 3000;
//integer MENUNAME_RESPONSE = 3001;
//integer MENUNAME_REMOVE = 3003;
//integer RLV_CMD = 6000;
//integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
//integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
//integer ANIM_START = 7000;//send this with the name of an anim in the string part of the message to play the anim
//integer ANIM_STOP = 7001;//send this with the name of an anim in the string part of the message to stop the anim
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer FIND_AGENT = -9005;
//added for attachment auth (garvin)
integer ATTACHMENT_REQUEST = 600;
integer ATTACHMENT_RESPONSE = 601;
//new evolution style to handle attachment auth
integer INTERFACE_REQUEST = -9006;
integer INTERFACE_RESPONSE = -9007;
//this can change
integer WEARERLOCKOUT=620;
string UPMENU = "BACK";
string CTYPE = "collar";
integer g_iOpenAccess; // 0: disabled, 1: openaccess
integer g_iLimitRange=1; // 0: disabled, 1: limited
integer g_iWearerlocksOut;
list g_lMenuIDs;
integer g_iMenuStride = 3;
key REQUEST_KEY;
string g_sScript;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Dialog(key kID, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth, string sName) {
key kMenuID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kID + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kMenuID);
integer iIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iIndex) g_lMenuIDs = llListReplaceList(g_lMenuIDs, [kID, kMenuID, sName], iIndex, iIndex + g_iMenuStride - 1);
else g_lMenuIDs += [kID, kMenuID, sName];
//Debug("Made "+sName+" menu.");
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
FetchAvi(integer iAuth, string type, string name, key kAv) {
if (name == "") name = " ";
string out = llDumpList2String(["getavi_", g_sScript, kAv, iAuth, type, name], "|");
integer i = 0;
list src = g_lOwners;
if (type == "tempowner") src += g_lTempOwners;
if (type == "secowner") src += g_lSecOwners;
else if (type == "blacklist") src = g_lBlackList;
list exclude; // build list of existing-listed keys to exclude from name search
for (; i < llGetListLength(src); i += 2)
{
exclude += [llList2String(src, i)];
}
if (llGetListLength(exclude))
out += "|" + llDumpList2String(exclude, ",");
REQUEST_KEY = llGenerateKey();
llMessageLinked(LINK_THIS, FIND_AGENT, out, REQUEST_KEY);
}
AuthMenu(key kAv, integer iAuth) {
string sPrompt = "\nOpen the pod bay doors, "+CTYPE+".\n\nwww.opencollar.at/access";
list lButtons = ["+ Owner", "+ Secowner", "+ Blacklisted", " Owner", " Secowner", " Blacklisted"];
if (g_kGroup=="") lButtons += ["Group ☐"]; //set group
else lButtons += ["Group ☒"]; //unset group
if (g_iOpenAccess) lButtons += ["Public ☒"]; //set open access
else lButtons += ["Public ☐"]; //unset open access
if (g_iLimitRange) lButtons += ["LimitRange ☒"]; //set ranged
else lButtons += ["LimitRange ☐"]; //unset open ranged
lButtons += ["Runaway","List Owners"];
Dialog(kAv, sPrompt, lButtons, [UPMENU], 0, iAuth, "Auth");
}
RemPersonMenu(key kID, string sToken, integer iAuth) {
list lPeople;
if (sToken=="owner") lPeople=g_lOwners;
else if (sToken=="tempowner") lPeople=g_lTempOwners;
else if (sToken=="secowner") lPeople=g_lSecOwners;
else if (sToken=="blacklist") lPeople=g_lBlackList;
else return;
if (llGetListLength(lPeople)){
string sPrompt = "\nChoose the person to remove:\n";
list lButtons;
integer iNum= llGetListLength(lPeople);
integer n;
for (n=1; n <= iNum/2; n = n + 1) {
string sName = llList2String(lPeople, 2*n-1);
if (sName != "") {
sPrompt += "\n" + (string)(n) + " - " + sName;
lButtons += [(string)(n)];
}
}
lButtons += ["Remove All"];
Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth, "rem"+sToken);
} else {
Notify(kID, "The list is empty", FALSE);
AuthMenu(kID, iAuth);
}
}
RemovePerson(string sName, string sToken, key kCmdr) {
//where "lPeople" is a 2-strided list in form key,name
//looks for strides identified by "name", removes them if found, and returns the list
//also handles notifications so as to reduce code duplication in the link message event
//Debug("removing: " + sName);
//all our comparisons will be cast to lower case first
list lPeople;
if (sToken=="owner") lPeople=g_lOwners;
else if (sToken=="tempowner") lPeople=g_lTempOwners;
else if (sToken=="secowner") lPeople=g_lSecOwners;
else if (sToken=="blacklist") lPeople=g_lBlackList;
else return;
if ((~llListFindList(g_lTempOwners,[(string)kCmdr])) && ! (~llListFindList(g_lOwners,[(string)kCmdr])) && sToken != "tempowner"){
Notify(kCmdr,"Temporary owners can only change the temporary owners list",FALSE);
return;
}
sName = llToLower(sName);
integer iFound=FALSE;
integer numPeople= llGetListLength(lPeople)/2;
while (numPeople--) {
string sThisName = llToLower(llList2String(lPeople, numPeople*2+1));
//Debug("checking " + sThisName);
if (sName == sThisName || sName == "remove all") { //remove name and key
if (sToken == "owner") {
Notify(llList2String(lPeople,numPeople*2),"You have been removed as owner on the " + CTYPE + " of " + llKey2Name(g_kWearer) + ".",FALSE);
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "CollarCommand|499|OwnerChange"); //tell attachments owner changed
} else if (sToken == "secowner") {
Notify(llList2String(lPeople,numPeople*2),"You have been removed as secowner on the " + CTYPE + " of " + llKey2Name(g_kWearer) + ".",FALSE);
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "CollarCommand|499|OwnerChange"); //tell attachments owner changed
}
lPeople = llDeleteSubList(lPeople, numPeople*2, numPeople*2+1);
Notify(kCmdr, sThisName + " removed from list.", TRUE);
iFound=TRUE;
}
}
if (iFound){
//save to db
string sOldToken=sToken;
if (sToken == "secowner") sOldToken+="s";
if (llGetListLength(lPeople)>0)
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + sOldToken + "=" + llDumpList2String(lPeople, ","), "");
else
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + sOldToken, "");
//store temp list
if (sToken=="owner") g_lOwners = lPeople;
else if (sToken=="tempowner") g_lTempOwners = lPeople;
else if (sToken=="secowner") g_lSecOwners = lPeople;
else if (sToken=="blacklist") g_lBlackList = lPeople;
} else
Notify(kCmdr, "Error: '" + sName + "' not in list.",FALSE);
}
AddUniquePerson(key kPerson, string sName, string sToken, key kAv) {
list lPeople;
//Debug(llKey2Name(kAv)+" is adding "+llKey2Name(kPerson)+" to list "+sToken);
if ((~llListFindList(g_lTempOwners,[(string)kAv])) && ! (~llListFindList(g_lOwners,[(string)kAv])) && sToken != "tempowner"){
Notify(kAv,"Temporary owners can only change the temporary owners list",FALSE);
} else {
if (sToken=="owner") {
lPeople=g_lOwners;
} else if (sToken=="secowner") {
lPeople=g_lSecOwners;
if (llGetListLength (lPeople) >=20) {
Notify(kAv, "The maximum of 10 people allowed in this list.",FALSE);
return;
}
} else if (sToken=="tempowner") {
lPeople=g_lTempOwners;
if (llGetListLength (lPeople) >=20) {
Notify(kAv, "The maximum of 10 people allowed in this list.",FALSE);
return;
}
} else if (sToken=="blacklist") {
lPeople=g_lBlackList;
if (llGetListLength (lPeople) >=20) {
Notify(kAv, "The maximum of 10 people allowed in this list.",FALSE);
return;
}
} else
return;
if (! ~llListFindList(lPeople, [(string)kPerson])) //owner is not already in list. add him/her
lPeople += [(string)kPerson, sName];
if (kPerson != g_kWearer) {
Notify(kAv, "Added " + sName + " to " + sToken + ".", FALSE);
if (sToken == "owner")
llOwnerSay("Your owner can have a lot power over you and you consent to that by adding " + sName + " as owner to your " + CTYPE + ". They can leash you, put you in poses and lock your " + CTYPE + ". If you are using RLV they can undress you, make you wear clothes, restrict your chat, IMs and TPs as well as force TP you anywhere they like. Please read the [http://www.opencollar.at/manual.html manual on the web] for more info. If you do not consent, you can use the command \"" + g_sPrefix + "runaway\" to remove all owners from the " + CTYPE + ".");
}
if (sToken == "owner" || sToken == "secowner") {
Notify(kPerson, "You have been added to the " + sToken + " list on " + llKey2Name(g_kWearer) + "'s " + CTYPE + ". For help concerning the " + CTYPE + " usage, please see the [http://www.opencollar.at/manual.html manual on the web] or type \"" + g_sPrefix + "menu\" in chat to explore the " + CTYPE + " and find links to dedicated manual pages in the menu headers.",FALSE);
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "CollarCommand|499|OwnerChange"); //tell attachments owner changed
}
string sOldToken=sToken;
if (sToken == "secowner") sOldToken+="s";
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + sOldToken + "=" + llDumpList2String(lPeople, ","), "");
if (sToken=="owner") g_lOwners = lPeople;
else if (sToken=="secowner") g_lSecOwners = lPeople;
else if (sToken=="tempowner") g_lTempOwners = lPeople;
else if (sToken=="blacklist") g_lBlackList = lPeople;
}
}
SayOwners() {
// Give a "you are owned by" message, nicely formatted.
list ownernames = llList2ListStrided(llDeleteSubList(g_lOwners, 0, 0), 0, -1, 2);
integer ownercount = llGetListLength(ownernames);
if (ownercount) {
string msg = "You are owned by ";
if (ownercount == 1) {
// if one person, then just name.
msg += (string)ownernames;
} else if (ownercount == 2) {
// if two people, then A and B.
msg += llDumpList2String(ownernames, " and ");
} else {
// if >2 people, then A, B, and C
list init = llDeleteSubList(ownernames, -1, -1);
list tail = llDeleteSubList(ownernames, 0, -2);
msg += llDumpList2String(init, ", ");
msg += ", and " + (string)tail;
}
// end with a period.
msg += ".";
Notify(llGetOwner(), msg, FALSE);
}
}
SetPrefix(string sValue) {
if (sValue != "auto") g_sPrefix = sValue;
else {
list name = llParseString2List(llKey2Name(g_kWearer), [" "], []);
string init = llGetSubString(llList2String(name, 0), 0, 0);
init += llGetSubString(llList2String(name, 1), 0, 0);
g_sPrefix = llToLower(init);
}
}
integer in_range(key kID) {
if (g_iLimitRange) {
if (llVecDist(llGetPos(), llList2Vector(llGetObjectDetails(kID, [OBJECT_POS]), 0)) > 20) { //if the distance between my position and their position > 20
llDialog(kID, "\nNot in range...", [], 298479);
return FALSE;
}
}
return TRUE;
}
integer Auth(string kObjID, integer attachment) {
string kID = (string)llGetOwnerKey(kObjID); // if kObjID is an avatar key, then kID is the same key
integer iNum;
if (~llListFindList(g_lOwners+g_lTempOwners, [kID]))
iNum = COMMAND_OWNER;
else if (g_iWearerlocksOut && kID == (string)g_kWearer && !attachment)
iNum = COMMAND_WEARERLOCKEDOUT;
else if (llGetListLength(g_lOwners+g_lTempOwners) == 0 && kID == (string)g_kWearer)
//if no owners set, then wearer's cmds have owner auth
iNum = COMMAND_OWNER;
else if (~llListFindList(g_lBlackList, [kID]))
iNum = COMMAND_BLACKLIST;
else if (~llListFindList(g_lSecOwners, [kID]))
iNum = COMMAND_SECOWNER;
else if (kID == (string)g_kWearer)
iNum = COMMAND_WEARER;
else if (g_iOpenAccess) {
if (in_range((key)kID))
iNum = COMMAND_GROUP;
else
iNum = COMMAND_EVERYONE;
} else if (g_iGroupEnabled && (string)llGetObjectDetails((key)kObjID, [OBJECT_GROUP]) == (string)g_kGroup && (key)kID != g_kWearer) //meaning that the command came from an object set to our control group, and is not owned by the wearer
iNum = COMMAND_GROUP;
else if (llSameGroup(kID) && g_iGroupEnabled && kID != (string)g_kWearer) {
if (in_range((key)kID))
iNum = COMMAND_GROUP;
else
iNum = COMMAND_EVERYONE;
} else
iNum = COMMAND_EVERYONE;
//Debug("Authed as "+(string)iNum);
return iNum;
}
// returns TRUE if eligible (AUTHED link message number)
integer UserCommand(integer iNum, string sStr, key kID, integer remenu) { // here iNum: auth value, sStr: user command, kID: avatar id
//Debug ("UserCommand("+(string)iNum+","+sStr+","+(string)kID+")");
if (iNum == COMMAND_EVERYONE) return TRUE; // No command for people with no privilege in this plugin.
else if (iNum > COMMAND_EVERYONE || iNum < COMMAND_OWNER) return FALSE; // sanity check
string sMessage=llToLower(sStr);
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
string sOwnerError="Sorry, only an owner can do that.";
if (sStr == "menu "+g_sSubMenu) {
AuthMenu(kID, iNum);
} else if (sStr == "listowners") { //say owner, secowners, group
if (iNum == COMMAND_OWNER || kID == g_kWearer) {
//Do Owners list
integer iLength = llGetListLength(g_lOwners);
string sOutput="";
while (iLength)
sOutput += "\n" + llList2String(g_lOwners, --iLength) + " (" + llList2String(g_lOwners, --iLength) + ")";
if (sOutput) Notify(kID, "Owners: " + sOutput,FALSE);
else Notify(kID, "Owners: None",FALSE);
//Do TempOwners list
iLength = llGetListLength(g_lTempOwners);
sOutput="";
while (iLength)
sOutput += "\n" + llList2String(g_lTempOwners, --iLength) + " (" + llList2String(g_lTempOwners, --iLength) + ")";
if (sOutput) Notify(kID, "Temp Owners: " + sOutput,FALSE);
//Do Secowners list
iLength = llGetListLength(g_lSecOwners);
sOutput="";
while (iLength)
sOutput += "\n" + llList2String(g_lSecOwners, --iLength) + " (" + llList2String(g_lSecOwners, --iLength) + ")";
if (sOutput) Notify(kID, "Secowners: " + sOutput,FALSE);
iLength = llGetListLength(g_lBlackList);
sOutput="";
while (iLength)
sOutput += "\n" + llList2String(g_lBlackList, --iLength) + " (" + llList2String(g_lBlackList, --iLength) + ")";
if (sOutput) Notify(kID, "Black List: " + sOutput,FALSE);
if (g_sGroupName) Notify(kID, "Group: " + g_sGroupName,FALSE);
if (g_kGroup) Notify(kID, "Group Key: " + (string)g_kGroup,FALSE);
sOutput="false";
if (g_iOpenAccess) sOutput="true";
Notify(kID, "Open Access: "+ sOutput,FALSE);
sOutput="false";
if (g_iLimitRange) sOutput="true";
Notify(kID, "LimitRange: "+ sOutput,FALSE);
}
else Notify(kID, "Only Owners & Wearer may access this command",FALSE);
if (remenu) AuthMenu(kID, iNum);
} else if (sStr == "owners" || sStr == "access") { //give owner menu
AuthMenu(kID, iNum);
// } else if (sStr=="give hud" || sMessage == "give hud") {
// if (kID == g_kWearer) llGiveInventory(kID,"Virtual Disgrace - Collar HUD");
// else llGiveInventory(kID,"Virtual Disgrace - Owner HUD");
// if (remenu) AuthMenu(kID, iNum);
} else if (sMessage == "owner" && remenu==FALSE) { //request for access menu from chat
AuthMenu(kID, iNum);
} else if (sCommand == "owner" || sCommand == "tempowner" || sCommand == "secowner" || sCommand == "blacklist") { //add a person to a list
string sTmpName = llDumpList2String(llDeleteSubList(lParams,0,0), " "); //get full name
if (iNum!=COMMAND_OWNER) {
Notify(kID, sOwnerError, FALSE);
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (osIsUUID(sTmpName)){
g_lQueryId+=[llRequestAgentData( sTmpName, DATA_NAME ),sTmpName,sCommand, kID, remenu];
if (remenu) FetchAvi(Auth(kID,FALSE), sCommand, sTmpName, kID);
} else
FetchAvi(iNum, sCommand, sTmpName, kID);
} else if (llSubStringIndex(sCommand,"rem")==0) { //remove person from a list
if (sCommand=="remowners") sCommand="remowner";
//Debug("got command "+sCommand);
string sToken = llGetSubString(sCommand,3,-1);
//Debug("got token "+sToken);
string sTmpName = llDumpList2String(llDeleteSubList(lParams,0,0), " "); //get full name
if (iNum!=COMMAND_OWNER){
Notify(kID, sOwnerError, FALSE);
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (sTmpName=="")
RemPersonMenu(kID, sToken, iNum);
else {
RemovePerson(sTmpName, sToken, kID);
if (remenu) RemPersonMenu(kID, sToken, Auth(kID,FALSE));
}
} else if (sCommand == "setgroup") {
if (iNum==COMMAND_OWNER){
//if key provided use that, else read current group
if (osIsUUID(llList2String(lParams, -1))) g_kGroup = (key)llList2String(lParams, -1);
else g_kGroup = (key)llList2String(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0); //record current group key
if (g_kGroup != "") {
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "group=" + (string)g_kGroup, "");
g_iGroupEnabled = TRUE;
key kGroupHTTPID = llHTTPRequest("http://world.secondlife.com/group/" + (string)g_kGroup, [], ""); //get group name from world api
g_lQueryId+=[kGroupHTTPID,"","group", kID, FALSE];
}
} else {
Notify(kID, sOwnerError, FALSE);
}
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (sCommand == "setgroupname") {
if (iNum==COMMAND_OWNER){
g_sGroupName = llDumpList2String(llList2List(lParams, 1, -1), " ");
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "groupname=" + g_sGroupName, "");
} else {
Notify(kID, sOwnerError, FALSE);
}
} else if (sCommand == "unsetgroup") {
if (iNum==COMMAND_OWNER){
g_kGroup = "";
g_sGroupName = "";
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "group", "");
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "groupname", "");
g_iGroupEnabled = FALSE;
Notify(kID, "Group unset.", FALSE);
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "CollarCommand|499|OwnerChange"); //tell attachments owner changed
} else {
Notify(kID, sOwnerError, FALSE);
}
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (sCommand == "setopenaccess") {
if (iNum==COMMAND_OWNER){
g_iOpenAccess = TRUE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "openaccess=" + (string) g_iOpenAccess, "");
Notify(kID, "Your " + CTYPE + " is open to the public.", FALSE);
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "CollarCommand|499|OwnerChange"); //tell attachments owner changed
} else {
Notify(kID, sOwnerError, FALSE);
}
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (sCommand == "unsetopenaccess") {
if (iNum==COMMAND_OWNER){
g_iOpenAccess = FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "openaccess", "");
Notify(kID, "Your " + CTYPE + " is closed to the public.", FALSE);
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "CollarCommand|499|OwnerChange"); //tell attachments owner changed
} else {
Notify(kID, sOwnerError, FALSE);
}
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (sCommand == "setlimitrange") {
if (iNum==COMMAND_OWNER){
g_iLimitRange = TRUE;
// as the default is range limit on, we do not need to store anything for this
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "limitrange", "");
Notify(kID, "Range is limited.", FALSE);
} else {
Notify(kID, sOwnerError, FALSE);
}
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (sCommand == "unsetlimitrange") {
if (iNum==COMMAND_OWNER){
g_iLimitRange = FALSE;
// save off state for limited range (default is on)
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "limitrange=" + (string) g_iLimitRange, "");
Notify(kID, "Range is simwide.", FALSE);
} else {
Notify(kID, sOwnerError, FALSE);
}
if (remenu) AuthMenu(kID, Auth(kID,FALSE));
} else if (sCommand == "runaway"){
list lButtons=[];
string message="Only the wearer or an Owner can access this menu";
if (iNum == COMMAND_OWNER && kID == g_kWearer) { //wearer-owner called for menu
if (g_iRunawayDisable){
lButtons=["Stay","Enable"];
message="\nYou chose to disable the runaway function.\n\nAs an owner you can restore this ability if desired.";
} else {
lButtons=["Runaway!", "Disable"];
message="\nYou can run away from your owners or you can disable your ability to ever run from them.";
}
} else if (kID == g_kWearer){ //wearer called for menu
if (g_iRunawayDisable){
lButtons=["Stay","Cancel","Remain","Don't Run", "Stay Loyal"];
message="\nACCESS DENIED:\n\nYou chose to disable the runaway function.\n\nOnly primary owners can restore this ability.";
} else {
lButtons=["Runaway!", "Disable"];
message="\nYou can run away from your owners or you can disable your ability to ever run from them.";
}
} else if (iNum == COMMAND_OWNER ) { //owner called for menu
if (g_iRunawayDisable){
lButtons=["Release", "Enable"];
message="\nYou can release this sub of your service or you can return their ability to run away on their own.";
} else {
lButtons=["Release"];
message="\nYou can release this sub of your service.";
}
}
//Debug("runaway button");
Dialog(kID, message, lButtons, [UPMENU], 0, iNum, "runawayMenu");
}
return TRUE;
}
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "auth_";
g_kWearer = llGetOwner(); //until set otherwise, wearer is owner
SetPrefix("auto");
//added for attachment auth
g_iInterfaceChannel = (integer)("0x" + llGetSubString(g_kWearer,30,-1));
if (g_iInterfaceChannel > 0) g_iInterfaceChannel = -g_iInterfaceChannel;
//Debug("Auth starting: "+(string)llGetFreeMemory());
// Request owner list. Be careful about doing this in all scripts,
// because we can easily flood the 64 event limit in LSL's event queue
// if all the scripts send a ton of link messages at the same time on
// startup.
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, g_sScript + "owner", "");
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, g_sScript + "secowners", "");
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, g_sScript + "tempowners", "");
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, g_sScript + "blacklist", "");
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
if (iNum == COMMAND_NOAUTH) { //authenticate messages on COMMAND_NOAUTH
integer iAuth = Auth((string)kID, FALSE);
if ( kID == g_kWearer && sStr == "runaway") { // note that this will work *even* if the wearer is blacklisted or locked out
if (g_iRunawayDisable){
llOwnerSay("Runaway is currently disabled.");
} else {
llOwnerSay("Running away from all owners started, your owners will now be notified!");
integer n;
integer stop = llGetListLength(g_lOwners+g_lTempOwners);
for (n = 0; n < stop; n += 2) {
key kOwner = (key)llList2String(g_lOwners+g_lTempOwners, n);
if (kOwner != g_kWearer)
{
Notify(kOwner, llKey2Name(g_kWearer) + " has run away!",FALSE);
}
}
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + "owner=", "");
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + "secowners=", "");
llMessageLinked(LINK_THIS, LM_SETTING_DELETE, g_sScript + "all", "");
llOwnerSay("Runaway finished, the " + CTYPE + " will now release locks!");
// moved reset request from settings to here to allow noticifation of owners.
llMessageLinked(LINK_SET, COMMAND_OWNER, "clear", kID); // clear RLV restrictions
llMessageLinked(LINK_SET, COMMAND_OWNER, "runaway", kID); // this is not a LM loop, since it is now really authed
llResetScript();
}
}
else if (kID != g_kWearer && iAuth == COMMAND_OWNER && sStr == "runaway") { //owner requests the runaway menu
//We trap here and pull up the UserCommand manually to avoid passing 'runaway' prematurely to linkmessage (this was unlocking/unleashing)
UserCommand(iAuth, "runaway", kID, FALSE);
}
else llMessageLinked(LINK_SET, iAuth, sStr, kID);
//Debug("noauth: " + sStr + " from " + (string)kID + " who has auth " + (string)iAuth);
return; // NOAUTH messages need go no further
} else if (UserCommand(iNum, sStr, kID, FALSE)) return;
else if (iNum == LM_SETTING_RESPONSE) {
//Debug("Got setting response: "+sStr);
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript) {
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "owner") {
// temporarily stash owner list so we can see if it's changing.
list tmpowners = g_lOwners;
g_lOwners = llParseString2List(sValue, [","], []);
// only say the owner list if it has changed (including on_rez)
if (llGetListLength(g_lOwners) && tmpowners != g_lOwners) SayOwners();
} else if (sToken == "tempowner") {
// temporarily stash owner list so we can see if it's changing.
list tmpowners = g_lTempOwners;
g_lTempOwners = llParseString2List(sValue, [","], []);
//Debug("Tempowners: "+llDumpList2String(g_lTempOwners,","));
// only say the owner list if it has changed (including on_rez)
if (llGetListLength(g_lTempOwners) && tmpowners != g_lTempOwners) SayOwners();
} else if (sToken == "group") {
g_kGroup = (key)sValue;
//check to see if the object's group is set properly
if (g_kGroup != "") {
if ((key)llList2String(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0) == g_kGroup) g_iGroupEnabled = TRUE;
else g_iGroupEnabled = FALSE;
}
else g_iGroupEnabled = FALSE;
}
else if (sToken == "groupname") g_sGroupName = sValue;
else if (sToken == "openaccess") g_iOpenAccess = (integer)sValue;
else if (sToken == "limitrange") g_iLimitRange = (integer)sValue;
else if (sToken == "runawayDisable") g_iRunawayDisable = (integer)sValue;
else if (sToken == "secowners") g_lSecOwners = llParseString2List(sValue, [","], [""]);
else if (sToken == "blacklist") g_lBlackList = llParseString2List(sValue, [","], [""]);
}
else if (sToken == "Global_prefix") SetPrefix(sValue);
else if (sToken == "Global_CType") CTYPE = sValue;
} else if (iNum == LM_SETTING_EMPTY) {
//Debug("Got setting empty: "+sStr);
integer i = llSubStringIndex(sStr, "_");
if (llGetSubString(sStr, 0, i) == g_sScript) {
sStr = llGetSubString(sStr, i + 1, -1);
if (sStr == "owner") {
g_lOwners = [];
SayOwners();
} else if (sStr == "tempowner") {
g_lTempOwners = [];
SayOwners();
} else if (sStr == "group") {
g_kGroup = NULL_KEY;
g_iGroupEnabled = FALSE;
}
else if (sStr == "groupname") g_sGroupName = "";
else if (sStr == "openaccess") g_iOpenAccess = FALSE;
else if (sStr == "limitrange") g_iLimitRange = TRUE;
else if (sStr == "runawayDisable") g_iRunawayDisable = FALSE;
else if (sStr == "secowners") g_lSecOwners = [];
else if (sStr == "blacklist") g_lBlackList = [];
}
} else if (iNum == LM_SETTING_SAVE) {
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == "Global_prefix") SetPrefix(sValue);
}
// JS: For backwards compatibility until all attachments/etc are rolled over to new interface
//added for attachment auth (Garvin)
else if (iNum == ATTACHMENT_REQUEST) {
integer iAuth = Auth((string)kID, TRUE);
llMessageLinked(LINK_SET, ATTACHMENT_RESPONSE, (string)iAuth+"|"+sStr, kID);
}
// JS: Remove ATTACHMENT_REQUEST & RESPONSE after all attachments have been updated properly
else if (iNum == INTERFACE_REQUEST) {
list lParams = llParseString2List(sStr, ["|"], []);
string sTarget = llList2String(lParams, 0);
string sCommand = llList2String(lParams, 1);
if (sTarget == "auth_") {
if (sCommand == "level") {
string sAuth = (string)Auth((string)kID, TRUE);
lParams = llListReplaceList(lParams, ["level=" + sAuth], 1, 1);
}
else return; // do not send response if the message was erroneous
llMessageLinked(LINK_SET, INTERFACE_RESPONSE, llDumpList2String(lParams, "|"), kID);
}
} else if (iNum == WEARERLOCKOUT) {
if (sStr == "on") g_iWearerlocksOut=TRUE;
else if (sStr == "off") g_iWearerlocksOut=FALSE;
} else if (iNum == DIALOG_RESPONSE) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex) {
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
//remove stride from g_lMenuIDs
string sMenu=llList2String(g_lMenuIDs, iMenuIndex + 1);
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
if (sMenu == "Auth") {
//g_kAuthMenuID responds to setowner, setsecowner, setblacklist, remowner, remsecowner, remblacklist, setgroup, unsetgroup, setopenaccess, unsetopenaccess
if (sMessage == UPMENU)
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
else {
list lTranslation=[
"+ Owner","owner",
// "+ Temp Owner","tempowner",
"+ Secowner","secowner",
"+ Blacklisted","blacklist",
" Owner","remowner",
// " Temp Owner","remtempowner",
" Secowner","remsecowner",
" Blacklisted","remblacklist",
"Group ☐","setgroup",
"Group ☒","unsetgroup",
"Public ☐","setopenaccess",
"Public ☒","unsetopenaccess",
"LimitRange ☐","setlimitrange",
"LimitRange ☒","unsetlimitrange",
//"Give Hud","givehud",
"List Owners","listowners",
"Runaway","runaway"
];
integer buttonIndex=llListFindList(lTranslation,[sMessage]);
if (~buttonIndex){
sMessage=llList2String(lTranslation,buttonIndex+1);
}
//Debug("Sending UserCommand "+sMessage);
UserCommand(iAuth, sMessage, kAv, TRUE);
}
} else if (sMenu == "remowner" || sMenu == "remsecowner" || sMenu == "remblacklist" ) {
if (sMessage == UPMENU) {
AuthMenu(kAv, iAuth);
} else if (sMessage == "Remove All") {
UserCommand(iAuth, sMenu + " Remove All", kAv,TRUE);
} else if (sMenu == "remowner") {
UserCommand(iAuth, sMenu+" " + llList2String(g_lOwners, (integer)sMessage*2 - 1), kAv, TRUE);
} else if (sMenu == "remtempowner") {
UserCommand(iAuth, sMenu+" " + llList2String(g_lTempOwners, (integer)sMessage*2 - 1), kAv, TRUE);
} else if(sMenu == "remsecowner") {
UserCommand(iAuth, sMenu+" " + llList2String(g_lSecOwners, (integer)sMessage*2 - 1), kAv, TRUE);
} else if(sMenu == "remblacklist") {
UserCommand(iAuth, sMenu+" " + llList2String(g_lBlackList, (integer)sMessage*2 - 1), kAv, TRUE);
}
} else if (sMenu == "runawayMenu" ) { //no chat commands for this menu, by design, so handle it all here
if (sMessage == UPMENU) {
AuthMenu(kAv, iAuth);
} else if (sMessage == "Runaway!") {
llMessageLinked(LINK_SET, COMMAND_NOAUTH, "runaway", kAv);
} else if (sMessage == "Enable") {
if ((~llListFindList(g_lTempOwners,[(string)kAv])) && ! (~llListFindList(g_lOwners,[(string)kAv])) ){
Notify(kAv,"Temporary owners can't enable runaway.",FALSE);
} else {
g_iRunawayDisable=FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript+"runawayDisable","");
Notify(kAv,"The ability to runaway has been restored.", TRUE);
UserCommand(iAuth, "runaway", kAv, TRUE);
}
} else if (sMessage == "Disable") {
g_iRunawayDisable=TRUE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"runawayDisable=1","");
llOwnerSay("You have disabled your ability to runaway.");
UserCommand(iAuth, "runaway", kAv, TRUE);
} else if (sMessage == "Cancel") {
return; //no remenu on canel
} else if (sMessage == "Release") {
integer iOwnerIndex=llListFindList(g_lOwners,[(string)kAv]);
if (~iOwnerIndex){
string name=llList2String(g_lOwners,iOwnerIndex+1);
UserCommand(iAuth, "remowner "+name, kAv, FALSE); //no remenu, owner is done with this sub
//llMessageLinked(LINK_SET, COMMAND_OWNER, "runaway", kID); //let other scripts know we're running away
} else {
Notify(kAv, "You are not on the owners list.", TRUE);
UserCommand(iAuth,"runaway",kAv, TRUE); //remenu to runaway
}
} else {
UserCommand(iAuth,"runaway",kAv, TRUE); //remenu to runaway
}
}
}
} else if (iNum == FIND_AGENT) { //reply from add-by-name or add-from-menu (via FetchAvi dialog)
if (kID == REQUEST_KEY) {
list params = llParseString2List(sStr, ["|"], []);
if (llList2String(params, 0) == g_sScript) {
string sRequestType = llList2String(params, 4);
key kAv = llList2Key(params, 2);
integer iAuth= llList2Integer(params, 3);
string sNewOwner=llList2String(params, 5);
if (osIsUUID(sNewOwner)){
AddUniquePerson((key)sNewOwner, llKey2Name((key)sNewOwner), sRequestType, kAv); //should be safe to uase key2name here, as we added from sensor dialog
//FetchAvi(llList2Integer(params, 3), sRequestType, "", kAv); //remenu
integer iNewAuth=Auth(kAv,FALSE);
if (iNewAuth == COMMAND_OWNER){
UserCommand(iNewAuth,sRequestType,kAv,TRUE);
//FetchAvi(COMMAND_OWNER, sRequestType, "", kAv); //remenu
} else {
AuthMenu(kAv,iNewAuth);
}
} else {
AuthMenu(kAv,iAuth);
}
}
}
} else if (iNum == DIALOG_TIMEOUT) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
//remove stride from g_lMenuIDs
//we have to subtract from the index because the dialog id comes in the middle of the stride
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
}
}
http_response(key kQueryId, integer iStatus, list lMeta, string sBody) { //response to a group name lookup
integer listIndex=llListFindList(g_lQueryId,[kQueryId]);
if (listIndex!= -1){
key g_kDialoger=llList2Key(g_lQueryId,listIndex+3);
g_lQueryId=llDeleteSubList(g_lQueryId,listIndex,listIndex+g_iQueryStride-1);
g_sGroupName = "(group name hidden)";
if (iStatus == 200) {
integer iPos = llSubStringIndex(sBody, "<title>");
integer iPos2 = llSubStringIndex(sBody, "</title>");
if ((~iPos) // Found
&& iPos2 > iPos // Has to be after it
&& iPos2 <= iPos + 43 // 36 characters max (that's 7+36 because <title> has 7)
&& !~llSubStringIndex(sBody, "AccessDenied") // Check as per groupname.py (?)
) {
g_sGroupName = llGetSubString(sBody, iPos + 7, iPos2 - 1);
}
}
Notify(g_kDialoger, "Group set to " + g_sGroupName + ".", FALSE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "groupname=" + g_sGroupName, "");
}
}
dataserver(key kQueryId, string sData){ //response after an add-by-uuid
integer listIndex=llListFindList(g_lQueryId,[kQueryId]);
if (listIndex!= -1){
key newOwner=llList2Key(g_lQueryId,listIndex+1);
string sRequestType=llList2String(g_lQueryId,listIndex+2);
key kAv =llList2Key(g_lQueryId,listIndex+3);
integer remenu =llList2Integer(g_lQueryId,listIndex+4);
g_lQueryId=llDeleteSubList(g_lQueryId,listIndex,listIndex+g_iQueryStride-1);
AddUniquePerson(newOwner, sData, sRequestType, kAv);
if (remenu){
integer iNewAuth=Auth(kAv,FALSE);
if (iNewAuth == COMMAND_OWNER){
UserCommand(iNewAuth,sRequestType,kAv,TRUE);
//FetchAvi(COMMAND_OWNER, sRequestType, "", kAv); //remenu
} else {
AuthMenu(kAv,iNewAuth);
}
}
}
}
changed(integer iChange) {
if (iChange & CHANGED_OWNER) llResetScript();
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,391 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - badwords //
// version 3.990 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//MESSAGE MAP
integer COMMAND_OWNER = 500;
integer COMMAND_EVERYONE = 504;
integer COMMAND_SAFEWORD = 510; // new for safeword
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer ANIM_START = 7000;
integer ANIM_STOP = 7001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
//5000 block is reserved for IM slaves
string CTYPE = "collar";
string WEARERNAME;
string g_sNoSound = "silent" ;
string g_sBadWordSound;
string g_sBadWordAnim ;
list g_lBadWords;
string g_sPenance = "I didn't do it!";
integer g_iListenerHandle;
key g_kWearer;
list g_lMenuIDs;
integer g_iMenuStride=3;
integer g_iIsEnabled=0;
integer g_iHasSworn = FALSE;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Dialog(key kID, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth, string sName) {
key kMenuID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kID + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kMenuID);
integer iIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iIndex) g_lMenuIDs = llListReplaceList(g_lMenuIDs, [kID, kMenuID, sName], iIndex, iIndex + g_iMenuStride - 1);
else g_lMenuIDs += [kID, kMenuID, sName];
//Debug("Made "+sName+" menu.");
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
ListenControl() {
if(g_iIsEnabled && llGetListLength(g_lBadWords)) g_iListenerHandle = llListen(0, "", g_kWearer, "");
else llListenRemove(g_iListenerHandle);
}
string DePunctuate(string sStr) {
string sLastChar = llGetSubString(sStr, -1, -1);
if (sLastChar == "," || sLastChar == "." || sLastChar == "!" || sLastChar == "?") sStr = llGetSubString(sStr, 0, -2);
return sStr;
}
string WordPrompt() {
string sName = llKey2Name(g_kWearer);
string sPrompt = sName + " is forbidden from saying ";
integer iLength = llGetListLength(g_lBadWords);
if (!iLength) sPrompt = sName + " is not forbidden from saying anything.";
else if (iLength == 1) sPrompt += llList2String(g_lBadWords, 0);
else if (iLength == 2) sPrompt += llList2String(g_lBadWords, 0) + " or " + llList2String(g_lBadWords, 1);
else sPrompt += llDumpList2String(llDeleteSubList(g_lBadWords, -1, -1), ", ") + ", or " + llList2String(g_lBadWords, -1);
sPrompt += "\nThe penance phrase to clear the punishment anim is '" + g_sPenance + "'.";
return sPrompt;
}
MenuBadwords(key kID, integer iNum){
list lButtons = ["Penance", "Add", "Remove", "Animation", "Sound", "Clear"];
if (g_iIsEnabled) lButtons += ["OFF"];
else lButtons += ["ON"];
string sText="\n\nwww.opencollar.at/badwords\n\n";
sText+="\nBad Words: " + llDumpList2String(g_lBadWords, ", ");
sText+="\nBad Word Anim: " + g_sBadWordAnim;
sText+="\nPenance: " + g_sPenance;
sText+="\nBad Word Sound: " + g_sBadWordSound;
Dialog(kID, sText, lButtons, ["BACK"],0, iNum, "BadwordsMenu");
}
// returns TRUE if eligible (AUTHED link message number)
UserCommand(integer iNum, string sStr, key kID, integer remenu) { // here iNum: auth value, sStr: user command, kID: avatar id
if (iNum != COMMAND_OWNER && kID != g_kWearer) return;
//Debug("Got command:"+sStr);
sStr=llStringTrim(sStr,STRING_TRIM);
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
if (llToLower(sStr) == "badwords" || llToLower(sStr) == "menu badwords") {
MenuBadwords(kID, iNum);
} else if (llToLower(sCommand)=="badwords"){
if (iNum != COMMAND_OWNER) return;
sCommand = llToLower(llList2String(lParams, 1));
if (sCommand == "add") { //support owner adding words
list lNewBadWords = llDeleteSubList(lParams, 0, 1);
if (llGetListLength(lNewBadWords)){
while (llGetListLength(lNewBadWords)){
string sNewWord=llToLower(DePunctuate(llList2String(lNewBadWords,-1)));
if (llListFindList(g_lBadWords, [sNewWord]) == -1) g_lBadWords += [sNewWord];
lNewBadWords=llDeleteSubList(lNewBadWords,-1,-1);
}
if (llGetListLength(g_lBadWords)) {
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "badwords_words=" + llDumpList2String(g_lBadWords, ","), "");
Notify(kID, WordPrompt(),TRUE);
}
if (remenu) MenuBadwords(kID,iNum);
} else {
string sText = "\n- Submit the new badword in the field below.\n- Submit a blank field to go back.";
Dialog(kID, sText, [], [], 0, iNum, "BadwordsAdd");
}
} else if (sCommand == "animation") { //Get all text after the command, strip spaces from start and end
if (llGetListLength(lParams)>2){
integer iPos=llSubStringIndex(llToLower(sStr),"on");
string sName = llStringTrim(llGetSubString(sStr, iPos+2, -1),STRING_TRIM);
if(sName == "Default") sName = "~shock";
if (llGetInventoryType(sName) == INVENTORY_ANIMATION) {
g_sBadWordAnim = sName;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "badwords_animation=" + g_sBadWordAnim, "");
Notify(kID, "Punishment animation for bad words is now '" + g_sBadWordAnim + "'.",FALSE);
} else Notify(kID, sName + " is not a valid animation name.",FALSE);
if (remenu) MenuBadwords(kID,iNum);
} else {
list lPoseList = ["Default"];
integer iMax = llGetInventoryNumber(INVENTORY_ANIMATION);
integer i;
string sName;
for (i=0;i<iMax;i++)
{
sName=llGetInventoryName(INVENTORY_ANIMATION, i);
//check here if the anim start with ~ or for some reason does not get a name returned (spares to check that all again in the menu ;)
if (sName != "" && llGetSubString(sName, 0, 0) != "~") lPoseList+=sName;
}
string sText = "Current punishment animation is: "+g_sBadWordAnim+"\n\n";
sText += "Select a new animation to use as a punishment.\n\n";
Dialog(kID, sText, lPoseList, ["BACK"],0, iNum, "BadwordsAnimation");
}
} else if (sCommand == "sound") { //Get all text after the command, strip spaces from start and end
if (llGetListLength(lParams)>2){
integer iPos=llSubStringIndex(llToLower(sStr),"nd");
string sName = llStringTrim(llGetSubString(sStr, iPos+2, -1),STRING_TRIM);
if (sName == "silent") Notify(kID, "Punishment will be silent.",FALSE);
else if (llGetInventoryType(sName) == INVENTORY_SOUND) {
Notify(kID, "You will hear the sound "+sName+" when "+WEARERNAME+" is punished.",FALSE);
} else {
Notify(kID, "Can't find sound "+sName+", using default.",FALSE);
sName = "Default" ;
}
g_sBadWordSound = sName;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "badwords_sound=" + g_sBadWordSound, "");
if (remenu) MenuBadwords(kID,iNum);
} else {
list lSoundList = ["Default","silent"];
integer iMax = llGetInventoryNumber(INVENTORY_SOUND);
integer i;
string sName;
for (i=0;i<iMax;i++)
{
sName=llGetInventoryName(INVENTORY_SOUND, i);
//check here if the sound start with ~ or for some reason does not get a name returned (spares to check that all again in the menu ;)
if (sName != "" && llGetSubString(sName, 0, 0) != "~") lSoundList+=[sName];
}
string sText = "Current sound is: "+g_sBadWordSound+"\n\n";
sText += "Select a new sound to use.\n\n";
Dialog(kID, sText, lSoundList, ["BACK"],0, iNum, "BadwordsSound");
}
} else if (sCommand == "penance") {
if (llGetListLength(lParams)>2){
integer iPos=llSubStringIndex(llToLower(sStr),"ce");
g_sPenance = llStringTrim(llGetSubString(sStr, iPos+2, -1),STRING_TRIM);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "badwords_penance=" + g_sPenance, "");
Notify(kID, WordPrompt() ,TRUE);
if (remenu) MenuBadwords(kID,iNum);
} else {
string sText = "\n- Submit the new penance in the field below.\n- Submit a blank field to go back.";
sText += "\n\n- Current penance is: " + g_sPenance;
Dialog(kID, sText, [], [],0, iNum, "BadwordsPenance");
}
} else if (sCommand == "remove") {
list lNewBadWords = llDeleteSubList(lParams, 0, 1);
if (llGetListLength(lNewBadWords)){
while (llGetListLength(lNewBadWords)){
string sNewWord=llToLower(DePunctuate(llList2String(lNewBadWords,-1)));
integer iIndex=llListFindList(g_lBadWords, [sNewWord]);
if (~iIndex) g_lBadWords = llDeleteSubList(g_lBadWords,iIndex,iIndex);
lNewBadWords=llDeleteSubList(lNewBadWords,-1,-1);
}
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "badwords_words=" + llDumpList2String(g_lBadWords, ","), "");
Notify(kID, WordPrompt(),TRUE);
if (remenu) MenuBadwords(kID,iNum);
} else {
if (llGetListLength(g_lBadWords)) Dialog(kID, "Select a badword to remove or clear them all.", g_lBadWords, ["Clear", "BACK"],0, iNum, "BadwordsRemove");
else {
Notify(kID, "The list of badwords is currently empty.", FALSE);
MenuBadwords(kID,iNum);
}
}
} else if (sCommand == "on") {
g_iIsEnabled = 1;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "badwords_on=1", "");
Notify(kID, "Use of bad words will now be punished.",FALSE);
if (remenu) MenuBadwords(kID,iNum);
} else if(sCommand == "off") {
g_iIsEnabled = 0;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "badwords_on","");
Notify(kID, "Use of bad words will not be punished.",FALSE);
if (remenu) MenuBadwords(kID,iNum);
} else if(sCommand == "clear") {
g_lBadWords = [];
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "badwords_words","");
Notify(kID, "The list of bad words has been cleared.",FALSE);
if (remenu) MenuBadwords(kID,iNum);
}
ListenControl();
}
}
default {
on_rez(integer iParam) {
ListenControl();
}
state_entry() {
llSetMemoryLimit(36*1024);
g_kWearer = llGetOwner();
g_sBadWordAnim = "~shock" ;
g_sBadWordSound = "Default" ;
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
//Debug("Got message:"+(string)iNum+" "+sStr);
if (iNum <= COMMAND_EVERYONE && iNum >= COMMAND_OWNER) UserCommand(iNum, sStr, kID, FALSE);
else if (iNum == MENUNAME_REQUEST && sStr == "Apps") llMessageLinked(LINK_SET, MENUNAME_RESPONSE, "Apps|Badwords", "");
else if (iNum == COMMAND_SAFEWORD)
{
//stop sound and animation
if(g_sBadWordSound != g_sNoSound) llStopSound();
llMessageLinked(LINK_SET, ANIM_STOP, g_sBadWordAnim, "");
g_iHasSworn = FALSE;
}
else if (iNum == LM_SETTING_RESPONSE) {
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == "badwords_") {
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "on") g_iIsEnabled = (integer)sValue;
else if (sToken == "animation") g_sBadWordAnim = sValue;
else if (sToken == "sound") g_sBadWordSound = sValue;
else if (sToken == "words") g_lBadWords = llParseString2List(llToLower(sValue), [","], []);
else if (sToken == "penance") g_sPenance = sValue;
ListenControl();
} else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken == "Global_WearerName") WEARERNAME = sValue;
}
else if (iNum == DIALOG_RESPONSE) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex) {
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iAuth = (integer)llList2String(lMenuParams, 3);
//remove stride from g_lMenuIDs
string sMenu=llList2String(g_lMenuIDs, iMenuIndex + 1);
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
if (sMenu=="BadwordsMenu") {
if (sMessage == "BACK") llMessageLinked(LINK_SET, iAuth, "menu apps", kAv);
else UserCommand(iAuth, "badwords "+sMessage, kAv, TRUE);
} else if (sMenu=="BadwordsAdd") {
if (sMessage) UserCommand(iAuth, "badwords add " + sMessage, kAv, TRUE);
else MenuBadwords(kID,iNum);
} else if (sMenu=="BadwordsRemove") {
if (sMessage == "BACK") MenuBadwords(kID,iNum);
else if (sMessage == "Clear") UserCommand(iAuth, "badwords clear", kAv, TRUE);
else if (sMessage) UserCommand(iAuth, "badwords remove " + sMessage, kAv, TRUE);
else MenuBadwords(kID,iNum);
} else if (sMenu=="BadwordsAnimation") {
if (sMessage == "BACK") MenuBadwords(kID,iNum);
else UserCommand(iAuth, "badwords animation " + sMessage, kAv, TRUE);
} else if (sMenu=="BadwordsSound") {
if (sMessage == "BACK") MenuBadwords(kID,iNum);
else UserCommand(iAuth, "badwords sound " + sMessage, kAv, TRUE);
} else if (sMenu=="BadwordsPenance") {
if (sMessage) UserCommand(iAuth, "badwords penance " + sMessage, kAv, TRUE);
else MenuBadwords(kID,iNum);
}
}
} else if (iNum == DIALOG_TIMEOUT) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
//remove stride from g_lMenuIDs
//we have to subtract from the index because the dialog id comes in the middle of the stride
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
}
}
listen(integer iChannel, string sName, key kID, string sMessage) {
//release anim if penance & play anim if swear
if ((~(integer)llSubStringIndex(llToLower(sMessage), llToLower(g_sPenance))) && g_iHasSworn ) { //stop sound
if(g_sBadWordSound != g_sNoSound) llStopSound();
//stop anim
llMessageLinked(LINK_SET, ANIM_STOP, g_sBadWordAnim, "");
Notify(g_kWearer, "Penance accepted.",FALSE);
g_iHasSworn = FALSE;
}
else if (~llSubStringIndex(sMessage, "rembadword")) return; //subs could theoretically circumvent this feature by sticking "rembadowrd" in all chat, but it doesn't seem likely to happen often
else { //check for swear
sMessage = llToLower(sMessage);
list lWords = llParseString2List(sMessage, [" "], []);
while (llGetListLength(lWords)) {
string sWord = llList2String(lWords, -1);
sWord = DePunctuate(sWord);
if (llListFindList(g_lBadWords, [sWord]) != -1) {
//start sound
if(g_sBadWordSound != g_sNoSound) {
if(g_sBadWordSound == "Default") llLoopSound( "4546cdc8-8682-6763-7d52-2c1e67e8257d", 1.0 );
else llLoopSound( g_sBadWordSound, 1.0 );
}
//start anim
llMessageLinked(LINK_SET, ANIM_START, g_sBadWordAnim, "");
llWhisper(0, WEARERNAME + " has said a bad word and is being punished.");
g_iHasSworn = TRUE;
}
lWords=llDeleteSubList(lWords,-1,-1);
}
}
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,646 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - bell //
// version 3.995 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//scans for sounds starting with: bell_
//show/hide for elements named: Bell
//2009-01-30 Cleo Collins - 1. draft
string g_sSubMenu = "Bell";
string g_sParentMenu = "Apps";
key g_kDialogID;
list g_lLocalButtons = ["Next Sound","Vol +","Delay +","Ring it!","Vol -","Delay -"];
float g_fVolume=0.5; // volume of the bell
float g_fVolumeStep=0.1; // stepping for volume
float g_fSpeed=1.0; // Speed of the bell
float g_fSpeedStep=0.5; // stepping for Speed adjusting
float g_fSpeedMin=0.5; // stepping for Speed adjusting
float g_fSpeedMax=5.0; // stepping for Speed adjusting
integer g_iBellOn=0; // are we ringing. Off is 0, On = Auth of person which enabled
string g_sBellOn="ON"; // menu text of bell on
string g_sBellOff="OFF"; // menu text of bell off
integer g_iBellShow=FALSE; // is the bell visible
string g_sBellShow="SHOW"; //menu text of bell visible
string g_sBellHide="HIDE"; //menu text of bell hidden
list g_listBellSounds=["10b27c32-43b5-40fb-b5a2-bbf770fbec5c",
"a4c075a9-359e-4055-b093-5aa42cddea1c",
"1e6f849d-9fee-42f2-b89a-98882a28b152",
"d1cdd688-42d7-4780-804f-0abe94ebca2a",
"ac855add-8834-4284-a6c1-74769b7cccb4",
"aba3c635-efb6-4642-aea4-5a4ea94df059",
"a6a3fcd4-3330-451f-b332-3fd59e3d698a",
"74811182-df1d-4b72-a9de-87f3706ac7bd",
"1d1b675c-4bee-4cc4-b225-69793893e66b",
"687a10f6-5c97-419f-8fc4-51013b821d9d",
"0c3774b9-90d9-4089-9198-f0445fa053e6",
"d71c05d2-1869-4e94-b077-9de8551e8917"];
key g_kCurrentBellSound ; // curent bell sound key
integer g_iCurrentBellSound; // curent bell sound sumber
integer g_iBellSoundCount; // number of avail bell sounds
key g_kLastToucher ; // store tocher key
float g_fNextTouch ; // store time for the next touch
float g_fTouch = 10.0 ; // timeout for touch chat notify
list g_lBellElements; // list with number of prims related to the bell
list g_lGlows; // 2-strided list [integer link_num, float glow]
float g_fNextRing; // store time for the next ringing here;
key g_kWearer; // key of the current wearer to reset only on owner changes
integer g_iHasControl=FALSE; // dow we have control over the keyboard?
list g_lButtons;
integer g_iHide ; // global hide
//MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
//integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer COMMAND_RLV_RELAY = 507;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
//integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
//integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
//integer DIALOG_TIMEOUT = -9002;
string UPMENU = "BACK";//when your menu hears this, give the parent menu
string g_sScript;
string CTYPE="collar";
string WEARERNAME;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
DoMenu(key kID, integer iAuth)
{
string sPrompt = "\n";
// sPrompt += "(Menu will time out in " + (string)g_iTimeOut + " seconds.)\n";
list lMyButtons;
//fill in your button list here
// Show buton for ringing the bell and add a text for it
if (g_iBellOn>0) // the bell rings currently
{
lMyButtons+= g_sBellOff;
sPrompt += "Bell is ringing";
}
else
{
lMyButtons+= g_sBellOn;
sPrompt += "Bell is NOT ringing";
}
// Show button for showing/hidding the bell and add a text for it, if there is a bell
if (g_iBellShow) // the bell is hidden
{
lMyButtons+= g_sBellHide;
sPrompt += " and shown.\n\n";
}
else
{
lMyButtons+= g_sBellShow;
sPrompt += " and NOT shown.\n\n";
}
// and show the volume and timing of the bell sound
sPrompt += "The volume of the bell is now: "+(string)((integer)(g_fVolume*10))+"/10.\n";
sPrompt += "The bell rings every "+llGetSubString((string)g_fSpeed,0,2)+" seconds when moving.\n";
sPrompt += "Currently used sound: "+(string)(g_iCurrentBellSound+1)+"/"+(string)g_iBellSoundCount+"\n";
sPrompt +="\nwww.opencollar.at/bell";
lMyButtons += g_lLocalButtons + g_lButtons;
g_kDialogID=Dialog(kID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
}
SetBellElementAlpha()
{
if (g_iHide) return ; // ***** if collar is hide, don't do anything
//loop through stored links, setting color if element type is bell
integer n;
integer iLinkElements = llGetListLength(g_lBellElements);
for (n = 0; n < iLinkElements; n++)
{
llSetLinkAlpha(llList2Integer(g_lBellElements,n), (float)g_iBellShow, ALL_SIDES);
UpdateGlow(llList2Integer(g_lBellElements,n), g_iBellShow);
}
}
UpdateGlow(integer link, integer alpha)
{
if (alpha == 0)
{
SavePrimGlow(link);
llSetLinkPrimitiveParamsFast(link, [PRIM_GLOW, ALL_SIDES, 0.0]); // set no glow;
}
else RestorePrimGlow(link);
}
SavePrimGlow(integer link)
{
float glow = llList2Float(llGetLinkPrimitiveParams(link,[PRIM_GLOW,0]),0); // get current prim glow
integer i = llListFindList(g_lGlows,[link]); // search in list
if (glow > 0) // if glow
{
if (i !=-1) g_lGlows = llListReplaceList(g_lGlows,[glow],i+1,i+1); // update if present
else g_lGlows += [link, glow]; // add if absent
}
else if (i !=-1) g_lGlows = llDeleteSubList(g_lGlows,i,i+1); // remove if present
}
RestorePrimGlow(integer link)
{
integer i = llListFindList(g_lGlows,[link]);
if (i != -1) llSetLinkPrimitiveParamsFast(link, [PRIM_GLOW, ALL_SIDES, llList2Float(g_lGlows, i+1)]);
}
BuildBellElementList()
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
list lParams;
// clear list just in case
g_lBellElements = [];
//root prim is 1, so start at 2
for (n = 2; n <= iLinkCount; n++)
{
// read description
lParams=llParseString2List((string)llGetObjectDetails(llGetLinkKey(n), [OBJECT_DESC]), ["~"], []);
// check inf name is baell name
if (llList2String(lParams, 0)=="Bell")
{
// if so store the number of the prim
g_lBellElements += [n];
// Debug("added " + (string)n + " to elements");
}
}
if (llGetListLength(g_lBellElements)==0){
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu + "|" + g_sSubMenu, "");
llRemoveInventory(llGetScriptName());
}
}
PrepareSounds()
{
// parse names of sounds in inventiory if those are for the bell
integer i;
integer m=llGetInventoryNumber(INVENTORY_SOUND);
string s;
for (i=0;i<m;i++)
{
s=llGetInventoryName(INVENTORY_SOUND,i);
if (llSubStringIndex(s,"bell_")==0)
{
// sound found, add key to list
g_listBellSounds+=llGetInventoryKey(s);
}
}
// and set the current sound
g_iBellSoundCount=llGetListLength(g_listBellSounds);
g_iCurrentBellSound=0;
g_kCurrentBellSound=llList2Key(g_listBellSounds,g_iCurrentBellSound);
}
// returns TRUE if eligible (AUTHED link message number)
integer UserCommand(integer iNum, string sStr, key kID) // here iNum: auth value, sStr: user command, kID: avatar id
{
if (iNum > COMMAND_WEARER || iNum < COMMAND_OWNER) return FALSE; // sanity check
string test=llToLower(sStr);
if (sStr == "menu " + g_sSubMenu || sStr == "bell")
{// the command prefix + bell without any extentsion is used in chat
//give this plugin's menu to kID
DoMenu(kID, iNum);
}
// we now chekc for chat commands
else if (llSubStringIndex(test,"bell")==0)
{
// it is a chat commad for the bell so process it
list lParams = llParseString2List(test, [" "], []);
string sToken = llList2String(lParams, 1);
string sValue = llList2String(lParams, 2);
if (sToken=="volume")
{
integer n=(integer)sValue;
if (n<1) n=1;
if (n>10) n=10;
g_fVolume=(float)n/10;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "vol=" + (string)llFloor(g_fVolume*10), "");
Notify(kID,"Bell volume set to "+(string)n, TRUE);
}
else if (sToken=="delay")
{
g_fSpeed=(float)sValue;
if (g_fSpeed<g_fSpeedMin) g_fSpeed=g_fSpeedMin;
if (g_fSpeed>g_fSpeedMax) g_fSpeed=g_fSpeedMax;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "speed=" + (string)llFloor(g_fSpeed*10), "");
Notify(kID,"Bell delay set to "+llGetSubString((string)g_fSpeed,0,2)+" seconds.", TRUE);
}
else if (sToken=="show" || sToken=="hide")
{
if (sToken=="show")
{
g_iBellShow=TRUE;
Notify(kID,"The bell is now visible.",TRUE);
}
else
{
g_iBellShow=FALSE;
Notify(kID,"The bell is now invisible.",TRUE);
}
SetBellElementAlpha();
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "show=" + (string)g_iBellShow, "");
}
else if (sToken=="on")
{
if (iNum!=COMMAND_GROUP)
{
if (g_iBellOn==0)
{
g_iBellOn=iNum;
if (!g_iHasControl) llRequestPermissions(g_kWearer,PERMISSION_TAKE_CONTROLS);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "on=" + (string)g_iBellOn, "");
Notify(kID,"The bell rings now.",TRUE);
}
}
else
{
Notify(kID,"Group users or Open Acces users cannot change the ring status of the bell.",TRUE);
}
}
else if (sToken=="off")
{
if ((g_iBellOn>0)&&(iNum!=COMMAND_GROUP))
{
g_iBellOn=0;
if (g_iHasControl)
{
llReleaseControls();
g_iHasControl=FALSE;
}
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "on=" + (string)g_iBellOn, "");
Notify(kID,"The bell is now quiet.",TRUE);
}
else
{
Notify(kID,"Group users or Open Access users cannot change the ring status of the bell.",TRUE);
}
}
else if (sToken=="nextsound")
{
g_iCurrentBellSound++;
if (g_iCurrentBellSound>=g_iBellSoundCount)
{
g_iCurrentBellSound=0;
}
g_kCurrentBellSound=llList2Key(g_listBellSounds,g_iCurrentBellSound);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "sound=" + (string)g_iCurrentBellSound, "");
Notify(kID,"Bell sound changed, now using "+(string)(g_iCurrentBellSound+1)+" of "+(string)g_iBellSoundCount+".",TRUE);
}
// let the bell ring one time
else if (sToken=="ring")
{
// update variable for time check
g_fNextRing=llGetTime()+g_fSpeed;
// and play the sound
llPlaySound(g_kCurrentBellSound,g_fVolume);
}
}
return TRUE;
}
string GetName(key uuid)
{
string name = llGetDisplayName(uuid);
if (name == "???" || name == "") name = llKey2Name(uuid);
return name;
}
default {
on_rez(integer param) {
g_kWearer=llGetOwner();
if (g_iBellOn) llRequestPermissions(g_kWearer,PERMISSION_TAKE_CONTROLS);
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
g_kWearer=llGetOwner(); // key of the wearer
WEARERNAME = GetName(g_kWearer); //quick and dirty default, will get replaced by value from settings
llResetTime(); // reset script time used for ringing the bell in intervalls
BuildBellElementList(); //build up list of prims with bell elements
PrepareSounds();
SetBellElementAlpha();
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
// the menu structure is to be build again, so make sure we get recognized
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
g_lButtons = [] ; // flush submenu buttons
llMessageLinked(LINK_SET, MENUNAME_REQUEST, g_sSubMenu, "");
}
else if (iNum == MENUNAME_RESPONSE)
{
list lParts = llParseString2List(sStr, ["|"], []);
if (llList2String(lParts, 0) == g_sSubMenu)
{//someone wants to stick something in our menu
string button = llList2String(lParts, 1);
if (llListFindList(g_lButtons, [button]) == -1)
{
g_lButtons = llListSort(g_lButtons + [button], 1, TRUE);
}
}
}
else if (iNum == MENUNAME_REMOVE)
{
list lParts = llParseString2List(sStr, ["|"], []);
if (llList2String(lParts, 0) == g_sSubMenu)
{
string button = llList2String(lParts, 1);
integer iIndex = llListFindList(g_lButtons , [button]);
if (iIndex != -1)
{
g_lButtons = llDeleteSubList(g_lButtons , iIndex, iIndex);
}
}
}
else if (iNum == LM_SETTING_RESPONSE)
{
// some responses from the DB are coming in, check if it is about bell values
integer i = llSubStringIndex(sStr, "=");
string sToken = llGetSubString(sStr, 0, i - 1);
string sValue = llGetSubString(sStr, i + 1, -1);
i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "on")
{
g_iBellOn=(integer)sValue;
if (g_iBellOn && !g_iHasControl)
{
llRequestPermissions(g_kWearer,PERMISSION_TAKE_CONTROLS);
}
else if (!g_iBellOn && g_iHasControl)
{
llReleaseControls();
g_iHasControl=FALSE;
}
}
else if (sToken == "show")
{
g_iBellShow=(integer)sValue;
SetBellElementAlpha();
}
else if (sToken == "sound")
{
g_iCurrentBellSound=(integer)sValue;
g_kCurrentBellSound=llList2Key(g_listBellSounds,g_iCurrentBellSound);
}
else if (sToken == "vol") g_fVolume=(float)sValue/10;
else if (sToken == "speed") g_fSpeed=(float)sValue/10;
} else if (sToken=="Global_WearerName") WEARERNAME=sValue;
else if (sToken == "Global_CType") CTYPE = sValue;
}
else if (UserCommand(iNum, sStr, kID)) return;
else if (iNum==DIALOG_RESPONSE)
{
//str will be a 2-element, pipe-delimited list in form pagenum|response
if (kID == g_kDialogID)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAV = llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
//give id the parent menu
llMessageLinked(LINK_SET, iAuth, "menu "+g_sParentMenu, kAV);
return; // no "remenu"
}
else if (~llListFindList(g_lLocalButtons, [sMessage]))
{
//we got a response for something we handle locally
if (sMessage == "Vol +") // pump up the volume and store the value
{
g_fVolume+=g_fVolumeStep;
if (g_fVolume>1.0) g_fVolume=1.0;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "vol=" + (string)llFloor(g_fVolume*10), "");
}
else if (sMessage == "Vol -") // be more quiet, and store the value
{
g_fVolume-=g_fVolumeStep;
if (g_fVolume<0.1) g_fVolume=0.1;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "vol=" + (string)llFloor(g_fVolume*10), "");
}
else if (sMessage == "Delay +") // dont annoy people and ring slower
{
g_fSpeed+=g_fSpeedStep;
if (g_fSpeed>g_fSpeedMax) g_fSpeed=g_fSpeedMax;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "speed=" + (string)llFloor(g_fSpeed*10), "");
}
else if (sMessage == "Delay -") // annoy the hell out of the, ring plenty, ring often
{
g_fSpeed-=g_fSpeedStep;
if (g_fSpeed<g_fSpeedMin) g_fSpeed=g_fSpeedMin;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "speed=" + (string)llFloor(g_fSpeed*10), "");
}
else if (sMessage == "Next Sound") // choose another sound for the bell
{
g_iCurrentBellSound++;
if (g_iCurrentBellSound>=g_iBellSoundCount) g_iCurrentBellSound=0;
g_kCurrentBellSound=llList2Key(g_listBellSounds,g_iCurrentBellSound);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "sound=" + (string)g_iCurrentBellSound, "");
}
//added a button to ring the bell. same call as when walking.
else if (sMessage == "Ring it!")
{
// update variable for time check
g_fNextRing=llGetTime()+g_fSpeed;
// and play the sound
llPlaySound(g_kCurrentBellSound,g_fVolume);
//Debug("Bing");
}
}
else if (sMessage == g_sBellOff || sMessage == g_sBellOn)
// someone wants to change if the bell rings or not
{
string s;
if (g_iBellOn>0) s="bell off";
else s="bell on";
UserCommand(iAuth,s,kAV);
}
else if (sMessage == g_sBellShow || sMessage == g_sBellHide)
// someone wants to hide or show the bell
{
g_iBellShow=!g_iBellShow;
SetBellElementAlpha();
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "show=" + (string)g_iBellShow, "");
}
else if (~llListFindList(g_lButtons, [sMessage]))
{
//we got a submenu selection
//UserCommand(iAuth, "menu "+sMessage, kAV);
llMessageLinked(LINK_SET, iAuth, "menu " + sMessage, kAV);
return; // no main menu
}
// do we want to see the menu again?
DoMenu(kAV, iAuth);
}
}
else if(iNum=COMMAND_OWNER && sStr=="runaway")
{
llSleep(4);
SetBellElementAlpha();
}
}
control( key kID, integer nHeld, integer nChange )
// we watch for movement from
{
// we dont want the bell to ring, so just exit
if (!g_iBellOn) return;
// Is the user holding down a movement key
if ( nHeld & (CONTROL_LEFT|CONTROL_RIGHT|CONTROL_DOWN|CONTROL_UP|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_FWD|CONTROL_BACK) )
{
// check if the time is ready for the next ring
if (llGetTime()>g_fNextRing)
{
// update variable for time check
g_fNextRing=llGetTime()+g_fSpeed;
// and play the sound
llPlaySound(g_kCurrentBellSound,g_fVolume);
//Debug("Bing");
}
}
}
run_time_permissions(integer nParam)
// we requested permissions, now we take control
{
if( nParam & PERMISSION_TAKE_CONTROLS)
{
//Debug("Bing");
llTakeControls( CONTROL_DOWN|CONTROL_UP|CONTROL_FWD|CONTROL_BACK|CONTROL_LEFT|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT, TRUE, TRUE);
g_iHasControl=TRUE;
g_fNextRing=llGetTime()+g_fSpeed;
}
}
touch_start(integer n)
{
if (g_iBellShow && !g_iHide && llListFindList(g_lBellElements,[llDetectedLinkNumber(0)]) != -1)
{
key toucher = llDetectedKey(0);
g_fNextRing=llGetTime()+g_fSpeed;
llPlaySound(g_kCurrentBellSound,g_fVolume);
if (toucher != g_kLastToucher || llGetTime() > g_fNextTouch)
{
g_fNextTouch=llGetTime()+g_fTouch;
g_kLastToucher = toucher;
llSay(0, GetName(toucher) + " plays with the trinket on " + WEARERNAME + "'s "+CTYPE+"." );
}
}
}
changed(integer change) {
if(change & CHANGED_LINK) BuildBellElementList();
else if (change & CHANGED_INVENTORY) PrepareSounds();
if (change & CHANGED_COLOR) {
integer iNewHide=!(integer)llGetAlpha(ALL_SIDES) ; //check alpha
if (g_iHide != iNewHide){ //check there's a difference to avoid infinite loop
g_iHide = iNewHide;
SetBellElementAlpha(); // update hide elements
}
}
if (change & CHANGED_OWNER) llResetScript();
if (change & CHANGED_REGION) {
if (g_iBellOn) g_fNextRing=llGetTime()+g_fSpeed;
/* if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}*/
}
}
}

View File

@@ -1,562 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - bookmarks //
// version 3.995 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string SUBMENU_BUTTON = "Bookmarks"; // Name of the submenu
string COLLAR_PARENT_MENU = "Apps"; // name of the menu, where the menu plugs in, should be usually Addons. Please do not use the mainmenu anymore
string PLUGIN_CHAT_COMMAND = "tp"; // every menu should have a chat command, so the user can easily access it by type for instance *plugin
string PLUGIN_CHAT_COMMAND_ALT = "bookmarks"; //taking control over some map/tp commands from rlvtp
integer IN_DEBUG_MODE = FALSE; // set to TRUE to enable Debug messages
string g_sCard = ".bookmarks"; //Name of the notecards to store destinations.
key webLookup;
list g_lDestinations = []; //Destination list direct from static notecard
list g_lDestinations_Slurls = []; //Destination list direct from static notecard
list g_lVolatile_Destinations = []; //These are in memory preferences that are not yet saved into the notecard
list g_lVolatile_Slurls = []; //These are in memory preferences that are not yet saved into the notecard
key g_kRequestHandle = NULL_KEY; //Sim Request Handle to convert global coordinates
vector g_vLocalPos = ZERO_VECTOR;
key g_kRemoveMenu = NULL_KEY; //Use a separate key for the remove menu ID
integer g_iRLVOn = FALSE; //Assume RLV is off until we hear otherwise
string g_tempLoc = ""; //This holds a global temp location for manual entry from provided location but no favorite name - g_kTBoxIdLocationOnly
key g_kMenuID; // menu handler
key g_kWearer; // key of the current wearer to reset only on owner changes
key g_kTBoxIdSave = "null";
key g_kTBoxIdLocationOnly = "null";
string g_sScript; // part of script name used for settings
key g_kDataID;
integer g_iLine = 0;
string UPMENU = "BACK"; // when your menu hears this, give the parent menu
key g_kCommander;
string CTYPE = "collar"; // designer can set in notecard to appropriate word for their item
list PLUGIN_BUTTONS = ["SAVE", "PRINT", "REMOVE"];
list g_lButtons;
integer COMMAND_OWNER = 500;
integer COMMAND_WEARER = 503;
integer LM_SETTING_SAVE = 2000; // scripts send messages on this channel to have settings saved to settings store
integer LM_SETTING_RESPONSE = 2002; // the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003; // delete token from settings store
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer RLV_CMD = 6000;
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if((integer)llStringLength(sMsg) > 1023) { //Line too long, gotta chop this up!
integer i;
integer x = 0;
for(i = 1023; x <= i; --i) {
if(llGetSubString(sMsg, i, i) == "\n") { //got a breaking point
Notify(kID, llGetSubString(sMsg, 0, i), iAlsoNotifyWearer);
Notify(kID, llGetSubString(sMsg, i, -1), iAlsoNotifyWearer);
return;
}
}
}
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
DoMenu(key keyID, integer iAuth)
{
string sPrompt = "\nTake me away, gumby!\n\nwww.opencollar.at/bookmarks";
list lMyButtons = PLUGIN_BUTTONS + g_lButtons + g_lDestinations + g_lVolatile_Destinations;
g_kMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
}
integer UserCommand(integer iNum, string sStr, key kID)
{
if(!(iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)) {
return FALSE;
}
// a validated command from a owner, secowner, groupmember or the wearer has been received
list lParams = llParseString2List(sStr, [" "], []);
//string sCommand = llToLower(llList2String(lParams, 0));
//string sValue = llToLower(llList2String(lParams, 1));
// So commands can accept a value
if(sStr == "reset") {
// it is a request for a reset
if(iNum == COMMAND_WEARER || iNum == COMMAND_OWNER) {
//only owner and wearer may reset
llResetScript();
}
} else if(sStr == PLUGIN_CHAT_COMMAND || sStr == "menu " + SUBMENU_BUTTON || sStr == PLUGIN_CHAT_COMMAND_ALT) {
// an authorized user requested the plugin menu by typing the menus chat command
DoMenu(kID, iNum);
} else if(llGetSubString(sStr, 0, llStringLength(PLUGIN_CHAT_COMMAND + " save") - 1) == PLUGIN_CHAT_COMMAND + " save") { //grab partial string match to capture destination name
if(llStringLength(sStr) > llStringLength(PLUGIN_CHAT_COMMAND + " save")) {
string sAdd = llStringTrim(llGetSubString(sStr, llStringLength(PLUGIN_CHAT_COMMAND + " save") + 1, -1), STRING_TRIM);
if(llListFindList(g_lVolatile_Destinations, [sAdd]) >= 0 || llListFindList(g_lDestinations, [sAdd]) >= 0) {
Notify(kID, "This destination name is already taken", FALSE);
} else {
string slurl = FormatRegionName();
addDestination(sAdd, slurl, kID);
}
} else {
// Notify that they need to give a description of the saved destination ie. <prefix>bookmarks save description
g_kTBoxIdSave = Dialog(kID,
"Enter a name for the destination below. Submit a blank field to cancel and return.
You can enter:
1) A friendly name to save your current location to your favorites
2) A new location or SLurl", [], [], 0, iNum);
}
} else if(llGetSubString(sStr, 0, llStringLength(PLUGIN_CHAT_COMMAND + " remove") - 1) == PLUGIN_CHAT_COMMAND + " remove") { //grab partial string match to capture destination name
if(llStringLength(sStr) > llStringLength(PLUGIN_CHAT_COMMAND + " remove")) {
string sDel = llStringTrim(llGetSubString(sStr, llStringLength(PLUGIN_CHAT_COMMAND + " remove"), -1), STRING_TRIM);
if(llListFindList(g_lVolatile_Destinations, [sDel]) < 0) {
Notify(kID, "Can't find bookmark " + (string)sDel + " to be deleted", FALSE);
} else {
integer iIndex;
llMessageLinked(LINK_THIS, LM_SETTING_DELETE, g_sScript + sDel, "");
iIndex = llListFindList(g_lVolatile_Destinations, [sDel]);
g_lVolatile_Destinations = llDeleteSubList(g_lVolatile_Destinations, iIndex, iIndex);
g_lVolatile_Slurls = llDeleteSubList(g_lVolatile_Slurls, iIndex, iIndex);
Notify(kID, "Removed destination " + sDel, FALSE);
}
} else {
g_kRemoveMenu = Dialog(kID, "Select a bookmark to be removed...", g_lVolatile_Destinations, [UPMENU], 0, iNum);
}
} else if(llGetSubString(sStr, 0, llStringLength(PLUGIN_CHAT_COMMAND + " print") - 1) == PLUGIN_CHAT_COMMAND + " print") { //grab partial string match to capture destination name
PrintDestinations(kID);
} else if(llGetSubString(sStr, 0, llStringLength(PLUGIN_CHAT_COMMAND) - 1) == PLUGIN_CHAT_COMMAND) {
string sCmd = llStringTrim(llGetSubString(sStr, llStringLength(PLUGIN_CHAT_COMMAND) + 1, -1), STRING_TRIM);
g_kCommander = kID;
if(llGetSubString(sStr,-2,-1) == "=n" || llGetSubString(sStr,-2,-1) == "=y" || llGetSubString(sStr,-4,-1) == "=add" || llGetSubString(sStr,-4,-1) == "=rem") { //ignore RLV restriction commands in this script
} else if(llListFindList(g_lVolatile_Destinations, [sCmd]) >= 0) {
integer iIndex = llListFindList(g_lVolatile_Destinations, [sCmd]);
TeleportTo(llList2String(g_lVolatile_Slurls, iIndex));
} else if(llListFindList(g_lDestinations, [sCmd]) >= 0) { //Found exact match, TP over
integer iIndex = llListFindList(g_lDestinations, [sCmd]);
TeleportTo(llList2String(g_lDestinations_Slurls, iIndex));
} else if(llStringLength(sCmd) > 0) { // We didn't get a case sensitive match, so lets loop through what we know and try find what we need
integer i = 0;
integer x = llGetListLength(g_lDestinations);
string s;
integer found = 0;
list matchedBookmarks;
for(i = 0; i < x; i++) { //First check OC locations
s = llList2String(g_lDestinations, i);
if(llSubStringIndex(llToLower(s), llToLower(sCmd)) >= 0) {
//store it, if we only find one, we'll go there
//Notify(kID,"Matched bookmark '"+s+"'",FALSE);
found += 1;
matchedBookmarks += s;
}
}
i = 0;
x = llGetListLength(g_lVolatile_Destinations);
for(i = 0; i < x; i++) { //Then check volatile destinations
s = llList2String(g_lVolatile_Destinations, i);
if(llSubStringIndex(llToLower(s), llToLower(sCmd)) >= 0) {
//store it, if we only find one, we'll go there
//Notify(kID,"Matched bookmark '"+s+"'",FALSE);
found += 1;
matchedBookmarks += s;
}
}
if(found == 0) {
//old hud command compatibility: 'o:176382.800000/261210.900000/3503.276000=force'
if (llSubStringIndex(sCmd,"o:") == 0){} // prevents errors in obsolete huds
else Notify(kID, "The bookmark '" + sCmd + "' has not been found in the " + CTYPE + " of " + llKey2Name(g_kWearer) + ".", FALSE);
} else if(found > 1) {
g_kMenuID = Dialog(kID, "More than one matching bookmark was found in the " + CTYPE + " of " + llKey2Name(g_kWearer) +
".\nChoose a bookmark to teleport to.", matchedBookmarks, [UPMENU], 0, iNum);
} else { //exactly one matching LM found, so use it
UserCommand(iNum, PLUGIN_CHAT_COMMAND + " " + llList2String(matchedBookmarks, 0), g_kCommander); //Push matched result to command for processing
}
}
//Can't find in list, lets try find substring matches
else {
Notify(kID, "I didn't understand your command.", FALSE);
}
}
return TRUE;
}
addDestination(string sMessage, string sLoc, key kID)
{
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + sMessage + "=" + sLoc, "");
g_lVolatile_Destinations += sMessage;
g_lVolatile_Slurls += sLoc;
Notify(kID, "Added destination " + sMessage + " with a location of: " + sLoc, FALSE);
}
string FormatRegionName()
{
//Formatting to regionname(x,x,x)
string region = llGetRegionName();
vector pos = llGetPos();
string posx = (string)llRound(pos.x);
string posy = (string)llRound(pos.y);
string posz = (string)llRound(pos.z);
return (region + "(" + posx + "," + posy + "," + posz + ")");
}
string convertSlurl(string sStr, key kAv, integer iAuth) //convert the slurl http strings to region (xxx,xxx,xxx)
{
sStr = llStringTrim(llUnescapeURL(sStr), STRING_TRIM);
string sIndex = "http:";
list lPieces = llParseStringKeepNulls(sStr, ["/"], []);
integer iHttploc = 0;
string sStringToKeep;
integer iHttpInString = llSubStringIndex(llList2String(lPieces, 0), sIndex);
if(iHttpInString > 0) {
sStringToKeep = llGetSubString(llList2String(lPieces, 0), 0, iHttpInString - 1);
}
if(llGetListLength(lPieces) == 8) { //
string sRegion = llList2String(lPieces, iHttploc + 4);
string sLocationx = llList2String(lPieces, iHttploc + 5);
string sLocationy = llList2String(lPieces, iHttploc + 6);
string sLocationz = llList2String(lPieces, iHttploc + 7);
sStr = sStringToKeep + sRegion + "(" + sLocationx + "," + sLocationy + "," + sLocationz + ")";
//Debug("Converted slurl, sending for processing..." + sStr);
return sStr; //successful conversion, send converted string assembly
}
//Debug("No slurl detected, sending for processing anyways :" + sStr);
return sStr; //failed conversion, send raw string assuming there's no Slurls
}
integer isInteger(string input) //for validating location scheme
{
return ((string)((integer)input) == input);
}
integer validatePlace(string sStr, key kAv, integer iAuth)
{
//Debug("validatePlaces working on: "+sStr);
list lPieces;
integer MAX_CHAR_TYPE = 2; //we use +1 due since we're counting with a list split. We can only accept 1 of each of the following: ()~
string sAssembledLoc;
string sRegionName;
string sFriendlyName;
sStr = llStringTrim(sStr, STRING_TRIM); //clean up whitespace
lPieces = llParseStringKeepNulls(sStr, ["~"], []); // split location from friendly name
if(llGetListLength(lPieces) == MAX_CHAR_TYPE) { //We have a tilde, so make sure the friendly name is good
if(llStringLength(llList2String(lPieces, 0)) < 1) { return 2;} //make sure friendly name isn't empty
sFriendlyName = llStringTrim(llList2String(lPieces, 0), STRING_TRIM); //assign friendly name
lPieces = llParseStringKeepNulls(llList2String(lPieces, 1), ["("], []); // split location from friendly name
} else if(llGetListLength(lPieces) > MAX_CHAR_TYPE) { return 1; } //too many tildes, retreat
else { lPieces = llParseStringKeepNulls(llList2String(lPieces, 0), ["("], []); } // We don't have a friendly name, so let's ignore that for now and split at 0
if(llGetListLength(lPieces) == MAX_CHAR_TYPE) { //Check to see we don't have extra ('s - this might also mean there's no location coming...
if(llStringLength(llList2String(lPieces, 0)) < 1) { return 4;} //make sure region name isn't empty
sRegionName = llStringTrim(llList2String(lPieces, 0), STRING_TRIM); //trim off whitespace from region name
} else if(llGetListLength(lPieces) > MAX_CHAR_TYPE) {return 3; } //this location looks wrong, retreat
else { //there's no location here, kick out new menu
UserCommand(iAuth, PLUGIN_CHAT_COMMAND + " save " + sStr, kAv);
UserCommand(iAuth, PLUGIN_CHAT_COMMAND, kAv);
return 0;
}
//we're left with sFriendlyname,sRegionName,["blah","123,123)"] - so lets validate the last list item
sAssembledLoc = llStringTrim("(" + llList2String(lPieces, 1), STRING_TRIM); //reattach the bracket we lost, clean up whitespace
lPieces = llParseStringKeepNulls(sAssembledLoc, [","], []); // split location from friendly name
if(llGetListLength(lPieces) != 3) { return 5; } //Check to see we don't have extra ,'s
if(llGetSubString(sAssembledLoc, 0, 0) != "(") { return 6; } //location doesn't start with (
if(llGetSubString(sAssembledLoc, llStringLength(sAssembledLoc) - 1, llStringLength(sAssembledLoc) - 1) != ")") { return 7; } //location doesn't end with )
lPieces = llParseStringKeepNulls(llGetSubString(sAssembledLoc, 1, llStringLength(sAssembledLoc) - 2), [","], []); // lPieces should be a list of 3 sets of numbers
integer i = 0;
integer x = llGetListLength(lPieces) - 1;
for(i = 0; i <= x; ++i) { //run through this number list to make sure each character is numeric
integer y = 0;
integer z = llStringLength(llList2String(lPieces, i)) - 1;
for(y = 0; y <= z; ++y) {
if(isInteger(llGetSubString(llList2String(lPieces, i), y, y)) != 1) { return 8; } //something left in here isn't an integer
}
}
if(sFriendlyName == "") {
g_tempLoc = sRegionName + sAssembledLoc; //assign a global for use in response menu
g_kTBoxIdLocationOnly = Dialog(kAv,
"\nEnter a name for the destination " + sRegionName + sAssembledLoc + "
below.\n- Submit a blank field to cancel and return.", [], [], 0, iAuth);
} else {
addDestination(sFriendlyName, sRegionName, kAv);
UserCommand(iAuth, PLUGIN_CHAT_COMMAND, kAv);
}
return 0;
}
ReadDestinations() // On inventory change, re-read our ~destinations notecard and pull from https://raw.githubusercontent.com/OpenCollar/OpenCollarUpdater/main/LSL/~bookmarks
{
key kAv;
webLookup = llHTTPRequest("https://raw.githubusercontent.com/OpenCollar/OpenCollarUpdater/main/LSL/~bookmarks",
[HTTP_METHOD, "GET", HTTP_VERBOSE_THROTTLE, FALSE], "");
g_lDestinations = [];
g_lDestinations_Slurls = [];
//start re-reading the notecards
if(llGetInventoryKey(g_sCard)) {
g_kDataID = llGetNotecardLine(g_sCard, 0);
}
}
TeleportTo(string sStr) //take a string in region (x,y,z) format, and retrieve global coordinates. The teleport takes place in the data server section
{
string sRegion = llStringTrim(llGetSubString(sStr, 0, llSubStringIndex(sStr, "(") - 1), STRING_TRIM);
string sCoords = llStringTrim(llGetSubString(sStr, llSubStringIndex(sStr, "(") + 1 , llStringLength(sStr) - 2), STRING_TRIM);
list tokens = llParseString2List(sCoords, [","], []);
// Extract local X, Y and Z
g_vLocalPos.x = llList2Float(tokens, 0);
g_vLocalPos.y = llList2Float(tokens, 1);
g_vLocalPos.z = llList2Float(tokens, 2);
// Request info about the sim
if(g_iRLVOn == FALSE) { //If we don't have RLV, we can just send to llMapDestination for a popup
llMapDestination(sRegion, g_vLocalPos, ZERO_VECTOR);
} else { //We've got RLV, let's use it
g_kRequestHandle = llRequestSimulatorData(sRegion, DATA_SIM_POS);
}
}
PrintDestinations(key kID) // On inventory change, re-read our ~destinations notecard
{
integer i;
integer length = llGetListLength(g_lDestinations);
string sMsg;
sMsg += "\n\nThe below can be copied and pasted into the " + g_sCard + " notecard. The format should follow:\n\ndestination name~region name(123,123,123)\n\n";
for(i = 0; i < length; i++) {
sMsg += llList2String(g_lDestinations, i) + "~" + llList2String(g_lDestinations_Slurls, i) + "\n";
}
length = llGetListLength(g_lVolatile_Destinations);
for(i = 0; i < length; i++) {
sMsg += llList2String(g_lVolatile_Destinations, i) + "~" + llList2String(g_lVolatile_Slurls, i) + "\n";
}
Notify(kID, sMsg, i);
}
default {
on_rez(integer iParam) {
if(llGetOwner() != g_kWearer) llResetScript(); // Reset if wearer changed
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
g_kWearer = llGetOwner(); // store key of wearer
ReadDestinations(); //Grab our presets
// send request to main menu and ask other menus if they want to register with us
llMessageLinked(LINK_THIS, MENUNAME_REQUEST, SUBMENU_BUTTON, "");
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, COLLAR_PARENT_MENU + "|" + SUBMENU_BUTTON, "");
//Debug("Starting");
}
http_response(key id, integer status, list meta, string body) {
if(status == 200) { // be silent on failures.
// Debug(body);
if(id == webLookup) {
list lResponse;
lResponse = llParseString2List(body, ["\n"], [""]);
integer i = 0;
integer x = 0;
string sData;
list split;
x = llGetListLength(lResponse) - 1;
for(i = 0; i <= x; ++i) {
sData = llStringTrim(llList2String(lResponse, i), STRING_TRIM);
split = llParseString2List(sData, ["~"], []);
g_lDestinations = [ llStringTrim(llList2String(split, 0), STRING_TRIM) ] + g_lDestinations;
g_lDestinations_Slurls = [ llStringTrim(llList2String(split, 1), STRING_TRIM) ] + g_lDestinations_Slurls ;
}
// Debug("Body: " + body);
}
}
}
dataserver(key kID, string sData) {
if(kID == g_kRequestHandle) {
// Parse the dataserver response (it is a vector cast to a string)
list tokens = llParseString2List(sData, ["<", ",", ">"], []);
string pos_str;
vector global_pos;
// The coordinates given by the dataserver are the ones of the
// South-West corner of this sim
// => offset with the specified local coordinates
global_pos.x = llList2Float(tokens, 0);
global_pos.y = llList2Float(tokens, 1);
global_pos.z = llList2Float(tokens, 2);
global_pos += g_vLocalPos;
// Build the command
pos_str = (string)((integer)global_pos.x)
+ "/" + (string)((integer)global_pos.y)
+ "/" + (string)((integer)global_pos.z);
//Debug("Global position : "+(string)pos_str); // Debug purposes
// Pass command to main
if(g_iRLVOn) {
string sRlvCmd = "tpto:" + pos_str + "=force";
llMessageLinked(LINK_SET, RLV_CMD, sRlvCmd, g_kCommander);
}
}
if(kID == g_kDataID) { //User notecard
list split;
if(sData != EOF) {
if(llGetSubString(sData, 0, 2) != "") { //Ignore blank lines
sData = llStringTrim(sData, STRING_TRIM);
split = llParseString2List(sData, ["~"], []);
g_lDestinations += [ llStringTrim(llList2String(split, 0), STRING_TRIM) ];
g_lDestinations_Slurls += [ llStringTrim(llList2String(split, 1), STRING_TRIM) ];
}
g_iLine++;
g_kDataID = llGetNotecardLine(g_sCard, g_iLine);
}
}
}
// listen for linked messages from OC scripts
link_message(integer iSender, integer iNum, string sStr, key kID) {
// Debug((string)iSender + "|" + (string)iNum + "|" + sStr + "|" + (string)kID);
if(iNum == MENUNAME_REQUEST && sStr == COLLAR_PARENT_MENU) {
// our parent menu requested to receive buttons, so send ours
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, COLLAR_PARENT_MENU + "|" + SUBMENU_BUTTON, "");
g_lButtons = [] ;
llMessageLinked(LINK_THIS, MENUNAME_REQUEST, SUBMENU_BUTTON, "");
} else if(iNum == RLV_OFF) { // rlvoff -> we have to turn the menu off too
g_iRLVOn = FALSE;
} else if(iNum == RLV_ON) { // rlvon -> we have to turn the menu on again
g_iRLVOn = TRUE;
} else if(iNum == MENUNAME_RESPONSE) {
// a button is send to be added to a menu
list lParts = llParseString2List(sStr, ["|"], []);
if(llList2String(lParts, 0) == SUBMENU_BUTTON) {
// someone wants to stick something in our menu
string button = llList2String(lParts, 1);
if(llListFindList(g_lButtons, [button]) == -1) {
// if the button isnt in our menu yet, than we add it
g_lButtons = llListSort(g_lButtons + [button], 1, TRUE);
}
}
} else if(iNum == LM_SETTING_RESPONSE) {
// response from setting store have been received
// pares the answer
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
// and check if any values for use are received
// replace "value1" by your own token
integer i = llSubStringIndex(sToken, "_");
if(llGetSubString(sToken, 0, i) == g_sScript) {
list lDestination = [llGetSubString(sToken, llSubStringIndex(sToken, "_") + 1, llSubStringIndex(sToken, "="))];
if(llListFindList(g_lVolatile_Destinations, lDestination) < 0) {
g_lVolatile_Destinations += lDestination;
g_lVolatile_Slurls += [sValue];
}
} else if(sToken == "Global_CType") { CTYPE = sValue; }
} else if(UserCommand(iNum, sStr, kID)) {
// do nothing more if TRUE
} else if(iNum == DIALOG_RESPONSE) {
if(llListFindList([g_kMenuID, g_kTBoxIdSave, g_kRemoveMenu, g_kTBoxIdLocationOnly], [kID]) != -1) {
//got a menu response meant for us, extract the values
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0); // avatar using the menu
string sMessage = llList2String(lMenuParams, 1); // button label
integer iPage = (integer)llList2String(lMenuParams, 2); // menu page
integer iAuth = (integer)llList2String(lMenuParams, 3); // auth level of avatar
list lParams = llParseStringKeepNulls(sStr, ["|"], []);
if(kID == g_kTBoxIdLocationOnly) {
//got a menu response meant for us. pull out values
if(sMessage != "") {
addDestination(sMessage, g_tempLoc, kID);
}
UserCommand(iAuth, PLUGIN_CHAT_COMMAND, kAv);
} else if(kID == g_kTBoxIdSave) {
//got a menu response meant for us. pull out values
// if(sMessage != "") UserCommand(iAuth, "bookmarks save " + sMessage, kAv);
//Debug("TBoxIDSave " + sMessage);
if(sMessage != "") {
validatePlace(convertSlurl(sMessage, kAv, iAuth), kAv, iAuth);
} else {
UserCommand(iAuth, PLUGIN_CHAT_COMMAND, kAv);
}
} else if(kID == g_kRemoveMenu) {
// Debug("|"+sMessage+"|");
if(sMessage == UPMENU) {
UserCommand(iAuth, PLUGIN_CHAT_COMMAND, kAv);
return;
}
if(sMessage != "") {
//got a menu response meant for us. pull out values
UserCommand(iAuth, PLUGIN_CHAT_COMMAND + " remove " + sMessage, kAv);
UserCommand(iAuth, PLUGIN_CHAT_COMMAND + " remove", kAv);
} else { UserCommand(iAuth, PLUGIN_CHAT_COMMAND, kAv); }
} else if(sMessage == UPMENU) {
llMessageLinked(LINK_THIS, iAuth, "menu " + COLLAR_PARENT_MENU, kAv);
} else if(~llListFindList(PLUGIN_BUTTONS, [sMessage])) {
if(sMessage == "SAVE") {
UserCommand(iAuth, PLUGIN_CHAT_COMMAND + " save", kAv);
} else if(sMessage == "REMOVE") {
UserCommand(iAuth, PLUGIN_CHAT_COMMAND + " remove", kAv);
} else if(sMessage == "PRINT") {
UserCommand(iAuth, PLUGIN_CHAT_COMMAND + " print", kAv);
UserCommand(iAuth, PLUGIN_CHAT_COMMAND, kAv);
}
} else if(~llListFindList(g_lDestinations + g_lVolatile_Destinations, [sMessage])) {
UserCommand(iAuth, PLUGIN_CHAT_COMMAND + " " + sMessage, kAv);
} else if(~llListFindList(g_lButtons, [sMessage])) {
llMessageLinked(LINK_THIS, iAuth, "menu " + sMessage, kAv);
}
}
}
}
changed(integer iChange) {
if(iChange & CHANGED_INVENTORY) {
ReadDestinations();
}
if(iChange & CHANGED_OWNER) { llResetScript(); }
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,475 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - camera //
// version 3.996.1 //
// Only compatible with OpenSim 0.9 or higher //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2016 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//allows owner to set different camera mode
//responds to commands from modes list
key g_kWearer;
integer g_iLastNum;
string g_sSubMenu = "Camera";
string g_sParentMenu = "Apps";
key g_kMenuID;
string g_sCurrentMode = "default";
float g_fReapeat = 0.5;
//these 4 are used for syncing dom to us by broadcasting cam pos/rot
integer g_iSync2Me;//TRUE if we're currently dumping cam pos/rot iChanges to chat so the owner can sync to us
vector g_vCamPos;
rotation g_rCamRot;
integer g_rBroadChan;
string g_sJsonModes;
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510; // new for safeword
integer COMMAND_BLACKLIST = 520;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to settings store
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from store
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the settings store
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
integer RLV_CLEAR = 6002;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
string UPMENU = "BACK";
//string MORE = ">";
string g_sScript;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
//changed the mode handles to a Json object with json arrays, one issue remains:
//vectors get converted into strings and need to be reconverted to vectors.
//For this to work easiest seems to just put for any mode which contains a vector,
//the vector as last entry (if there shall be a mode which contains 2 vectors,
//this needs to be addressed and handles as excetion in the list lJsonModes function
string JsonModes() {
string sDefault = llList2Json(JSON_ARRAY, [CAMERA_ACTIVE,FALSE]);
string sHuman = llList2Json(JSON_ARRAY, [CAMERA_ACTIVE,TRUE,
CAMERA_BEHINDNESS_ANGLE,0.0,
CAMERA_BEHINDNESS_LAG,0.0,
CAMERA_DISTANCE,2.5,
CAMERA_FOCUS_LAG,0.05,
CAMERA_POSITION_LOCKED,FALSE,
CAMERA_FOCUS_THRESHOLD,0.0,
CAMERA_PITCH,20.0,
CAMERA_POSITION_LAG,0.0,
CAMERA_POSITION_THRESHOLD,0.0,
CAMERA_FOCUS_OFFSET,<0.0, 0.0, 0.35>]);
string s1stperson = llList2Json(JSON_ARRAY,[CAMERA_ACTIVE,TRUE,
CAMERA_DISTANCE, 0.5,
CAMERA_FOCUS_OFFSET, <2.5,0,1.0>]);
string sAss = llList2Json(JSON_ARRAY,[CAMERA_ACTIVE,TRUE,
CAMERA_DISTANCE,0.5]);
string sFar = llList2Json(JSON_ARRAY,[CAMERA_ACTIVE,TRUE,
CAMERA_DISTANCE,10.0]);
string sGod = llList2Json(JSON_ARRAY,[CAMERA_ACTIVE,TRUE,
CAMERA_DISTANCE,10.0,
CAMERA_PITCH,80.0]);
string sGround = llList2Json(JSON_ARRAY,[CAMERA_ACTIVE,TRUE,
CAMERA_PITCH,-15.0]);
string sWorm = llList2Json(JSON_ARRAY,[CAMERA_ACTIVE,TRUE,
CAMERA_PITCH,-15.0,
CAMERA_FOCUS_OFFSET, <0.0,0.0,-0.75>]);
return llList2Json(JSON_OBJECT,["default",sDefault,"human", sHuman, "1stperson",s1stperson,"ass",sAss,"far",sFar,"god",sGod,"ground",sGround,"worm",sWorm]);
}
list lJsonModes(string sMode) {
string sJsonTmp = llJsonGetValue(g_sJsonModes, [sMode]);
list lTest = llJson2List(sJsonTmp);
integer index = llGetListLength(lTest)-1;
//last entry is checked if it is a vector to be converted from string to vector here:
if ((vector)llList2String(lTest,index)) lTest = llListReplaceList(lTest,[(vector)llList2String(lTest,index)],index,index);
return lTest;
}
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
CamMode(string sMode) {
llClearCameraParams();
llSetCameraParams(lJsonModes(sMode));
}
ClearCam()
{
if (llGetPermissions()&PERMISSION_CONTROL_CAMERA) llClearCameraParams();
g_iLastNum = 0;
g_iSync2Me = FALSE;
llMessageLinked(LINK_SET, RLV_CMD, "camunlock=y", "camera");
llMessageLinked(LINK_SET, RLV_CMD, "camdistmax:0=y", "camera");
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "all", "");
}
CamFocus(vector g_vCamPos, rotation g_rCamRot)
{
vector vStartPose = llGetCameraPos();
rotation rStartRot = llGetCameraRot();
float fSteps = 8.0;
//Keep fSteps a float, but make sure its rounded off to the nearest 1.0
fSteps = (float)llRound(fSteps);
//Calculate camera position increments
vector vPosStep = (g_vCamPos - vStartPose) / fSteps;
//Calculate camera rotation increments
//rotation rStep = (g_rCamRot - rStartRot);
//rStep = <rStep.x / fSteps, rStep.y / fSteps, rStep.z / fSteps, rStep.s / fSteps>;
float fCurrentStep = 0.0; //Loop through motion for fCurrentStep = current step, while fCurrentStep <= Total steps
for(; fCurrentStep <= fSteps; ++fCurrentStep)
{
//Set next position in tween
vector vNextPos = vStartPose + (vPosStep * fCurrentStep);
rotation rNextRot = Slerp( rStartRot, g_rCamRot, fCurrentStep / fSteps);
//Set camera parameters
llSetCameraParams([
CAMERA_ACTIVE, 1, //1 is active, 0 is inactive
CAMERA_BEHINDNESS_ANGLE, 0.0, //(0 to 180) degrees
CAMERA_BEHINDNESS_LAG, 0.0, //(0 to 3) seconds
CAMERA_DISTANCE, 0.0, //(0.5 to 10) meters
CAMERA_FOCUS, vNextPos + llRot2Fwd(rNextRot), //Region-relative position
CAMERA_FOCUS_LAG, 0.0 , //(0 to 3) seconds
CAMERA_FOCUS_LOCKED, TRUE, //(TRUE or FALSE)
CAMERA_FOCUS_THRESHOLD, 0.0, //(0 to 4) meters
CAMERA_POSITION, vNextPos, //Region-relative position
CAMERA_POSITION_LAG, 0.0, //(0 to 3) seconds
CAMERA_POSITION_LOCKED, TRUE, //(TRUE or FALSE)
CAMERA_POSITION_THRESHOLD, 0.0, //(0 to 4) meters
CAMERA_FOCUS_OFFSET, ZERO_VECTOR //<-10,-10,-10> to <10,10,10> meters
]);
}
}
rotation Slerp( rotation a, rotation b, float f ) {
float fAngleBetween = llAngleBetween(a, b);
if ( fAngleBetween > PI )
fAngleBetween = fAngleBetween - TWO_PI;
return a*llAxisAngle2Rot(llRot2Axis(b/a)*a, fAngleBetween*f);
}//Written by Francis Chung, Taken from http://forums.secondlife.com/showthread.php?p=536622
LockCam()
{
llSetCameraParams([
CAMERA_ACTIVE, TRUE,
//CAMERA_POSITION, llGetCameraPos()
CAMERA_POSITION_LOCKED, TRUE
]);
llMessageLinked(LINK_SET, RLV_CMD, "camunlock=n", "camera");
}
CamMenu(key kID, integer iAuth)
{
string sPrompt = "\n[http://www.example.com Camera]\n\nCurrent camera mode is " + g_sCurrentMode +
"\nThis app requires OpenSim 0.9 and RLV v2.9+";
list lButtons = ["CLEAR","FREEZE","MOUSELOOK"];
integer n;
integer stop = llGetListLength(llJson2List(g_sJsonModes));
for (n = 0; n < stop; n +=2)
{
lButtons += [Capitalize(llList2String(llJson2List(g_sJsonModes),n))];
}
g_kMenuID = Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
string Capitalize(string sIn)
{
return llToUpper(llGetSubString(sIn, 0, 0)) + llGetSubString(sIn, 1, -1);
}
SaveSetting(string sToken)
{
sToken = g_sScript + sToken;
string sValue = (string)g_iLastNum;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, sToken + "=" + sValue, "");
}
ChatCamParams(integer chan)
{
g_vCamPos = llGetCameraPos();
g_rCamRot = llGetCameraRot();
string sPosLine = osReplaceString((string)g_vCamPos, " ", "", -1, 0) + " " + osReplaceString((string)g_rCamRot, " ", "", -1, 0);
//if not channel 0, say to whole region. else just say locally
if (chan)
{
llRegionSay(chan, sPosLine);
}
else
{
llSay(chan, sPosLine);
}
}
integer UserCommand(integer iNum, string sStr, key kID) // here iNum: auth value, sStr: user command, kID: avatar id
{
if (iNum > COMMAND_WEARER || iNum < COMMAND_OWNER) return FALSE; // sanity check
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
string sValue2 = llList2String(lParams, 2);
if (sStr == "menu " + g_sSubMenu) {
CamMenu(kID, iNum);
}
else if (sCommand == "cam" || sCommand == "camera")
{
if (sValue == "")
{
//they just said *cam. give menu
CamMenu(kID, iNum);
return TRUE;
}
if (!(llGetPermissions() & PERMISSION_CONTROL_CAMERA))
{
Notify(kID, "Permissions error: Can not control camera.", FALSE);
return TRUE;
}
if (g_iLastNum && iNum > g_iLastNum)
{
Notify(kID, "Sorry, cam settings have already been set by someone outranking you.", FALSE);
return TRUE;
}
//Debug("g_iLastNum=" + (string)g_iLastNum);
if (sValue == "clear")
{
ClearCam();
Notify(kID, "Cleared camera settings.", TRUE);
}
else if (sValue == "freeze")
{
LockCam();
Notify(kID, "Freezing current camera position.", TRUE);
g_iLastNum = iNum;
SaveSetting("freeze");
}
else if (sValue == "mouselook")
{
Notify(kID, "Enforcing mouselook.", TRUE);
g_iLastNum = iNum;
llMessageLinked(LINK_SET, RLV_CMD, "camdistmax:0=n", "camera");
SaveSetting("mouselook");
}
else if ((vector)sValue != ZERO_VECTOR && (vector)sValue2 != ZERO_VECTOR)
{
Notify(kID, "Setting camera focus to " + sValue + ".", TRUE);
//CamFocus((vector)sValue, (vector)sValue2);
g_iLastNum = iNum;
//Debug("newiNum=" + (string)iNum);
}
else
{
integer iIndex = llSubStringIndex(g_sJsonModes, sValue);//llListFindList(g_lModes, [sValue]);
if (iIndex != -1)
{
CamMode(sValue);
g_iLastNum = iNum;
llMessageLinked(LINK_SET, RLV_CMD, "camunlock=n", "camera");
Notify(kID, "Set " + sValue + " camera mode.", TRUE);
SaveSetting(sValue);
}
else
{
Notify(kID, "Invalid camera mode: " + sValue, FALSE);
}
}
}
else if (sCommand == "camto")
{
if (!g_iLastNum || iNum <= g_iLastNum)
{
CamFocus((vector)sValue, (rotation)sValue2);
g_iLastNum = iNum;
}
else
{
Notify(kID, "Sorry, cam settings have already been set by someone outranking you.", FALSE);
}
}
else if (sCommand == "camdump")
{
g_rBroadChan = (integer)sValue;
integer g_fReapeat = (integer)sValue2;
ChatCamParams(g_rBroadChan);
if (g_fReapeat)
{
g_iSync2Me = TRUE;
llSetTimerEvent(g_fReapeat);
}
}
else if ((iNum == COMMAND_OWNER || kID == g_kWearer) && sStr == "runaway")
{
ClearCam();
llResetScript();
}
return TRUE;
}
default {
on_rez(integer iNum) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
g_kWearer = llGetOwner();
g_sJsonModes = JsonModes();
if (llGetAttached()) llRequestPermissions(g_kWearer, PERMISSION_CONTROL_CAMERA | PERMISSION_TRACK_CAMERA);
//Debug("Starting");
}
run_time_permissions(integer iPerms)
{
if (iPerms & (PERMISSION_CONTROL_CAMERA | PERMISSION_TRACK_CAMERA))
{
llClearCameraParams();
}
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
//only respond to owner, secowner, group, wearer
if (UserCommand(iNum, sStr, kID)) return;
else if (iNum == COMMAND_SAFEWORD || iNum == RLV_CLEAR)
{
ClearCam();
llResetScript();
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["=", ","], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
if (llGetPermissions() & PERMISSION_CONTROL_CAMERA)
{
if (sToken == "freeze") LockCam();
else if (sToken == "mouselook") llMessageLinked(LINK_SET, RLV_CMD, "camdistmax:0=n", "camera");
else if (~llSubStringIndex(g_sJsonModes, sToken)) CamMode(sToken);
g_iLastNum = (integer)sValue;
}
}
}
else if (iNum == DIALOG_RESPONSE)
{
if (kID == g_kMenuID)
{
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
// integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
}
else
{
UserCommand(iAuth, "cam " + llToLower(sMessage), kAv);
CamMenu(kAv, iAuth);
}
}
}
}
timer()
{
//handle cam pos/rot changes
if (g_iSync2Me)
{
vector vNewPos = llGetCameraPos();
rotation rNewRot = llGetCameraRot();
if (vNewPos != g_vCamPos || rNewRot != g_rCamRot)
{
ChatCamParams(g_rBroadChan);
}
}
else
{
llSetTimerEvent(0.0);
}
}
changed(integer iChange) {
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,492 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - color //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//on getting color command, give menu to choose which element, followed by menu to pick color
list g_lElements;
string g_sCurrentElement = "";
string g_sCurrentCategory = "";
list g_lCategories = ["Shades", "Bright", "Soft"];
list g_lAllColors = [
"Light Shade|<0.82745, 0.82745, 0.82745>
Gray Shade|<0.70588, 0.70588, 0.70588>
Dark Shade|<0.20784, 0.20784, 0.20784>
Brown Shade|<0.65490, 0.58431, 0.53333>
Red Shade|<0.66275, 0.52549, 0.52549>
Blue Shade|<0.64706, 0.66275, 0.71765>
Green Shade|<0.62353, 0.69412, 0.61569>
Pink Shade|<0.74510, 0.62745, 0.69020>
Gold Shade|<0.69020, 0.61569, 0.43529>
Black|<0.00000, 0.00000, 0.00000>
White|<1.00000, 1.00000, 1.00000>",
"Magenta|<1.00000, 0.00000, 0.50196>
Pink|<1.00000, 0.14902, 0.50980>
Hot Pink|<1.00000, 0.05490, 0.72157>
Firefighter|<0.88627, 0.08627, 0.00392>
Sun|<1.00000, 1.00000, 0.18039>
Flame|<0.92941, 0.43529, 0.00000>
Matrix|<0.07843, 1.00000, 0.07843>
Electricity|<0.00000, 0.46667, 0.92941>
Violet Wand|<0.63922, 0.00000, 0.78824>
Black|<0.00000, 0.00000, 0.00000>
White|<1.00000, 1.00000, 1.00000>",
"Baby Blue|<0.75686, 0.75686, 1.00000>
Baby Pink|<1.00000, 0.52157, 0.76078>
Rose|<0.93333, 0.64314, 0.72941>
Beige|<0.86667, 0.78039, 0.71765>
Earth|<0.39608, 0.27451, 0.18824>
Ocean|<0.25882, 0.33725, 0.52549>
Yolk|<0.98824, 0.73333, 0.29412>
Wasabi|<0.47059, 1.00000, 0.65098>
Lavender|<0.89020, 0.65882, 0.99608>
Black|<0.00000, 0.00000, 0.00000>
White|<1.00000, 1.00000, 1.00000>"
];
list g_lColorSettings;
string g_sParentMenu = "Appearance";
string g_sSubMenu = "Colors";
list g_lColors;
integer g_iStridelength = 2;
integer g_iLength;
list g_lButtons;
list g_lNewButtons;
list g_lMenuIDs;
key g_kTouchID;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
//MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the httpdb
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer TOUCH_REQUEST = -9500;
integer TOUCH_CANCEL = -9501;
integer TOUCH_RESPONSE = -9502;
integer TOUCH_EXPIRE = -9503;
//5000 block is reserved for IM slaves
string UPMENU = "BACK";
string CTYPE = "collar";
key g_kWearer;
string g_sScript;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
key TouchRequest(key kRCPT, integer iTouchStart, integer iTouchEnd, integer iAuth)
{
key kID = llGenerateKey();
integer iFlags = 0;
if (iTouchStart) iFlags = iFlags | 0x01;
if (iTouchEnd) iFlags = iFlags | 0x02;
llMessageLinked(LINK_SET, TOUCH_REQUEST, (string)kRCPT + "|" + (string)iFlags + "|" + (string)iAuth, kID);
return kID;
}
CategoryMenu(key kAv, integer iAuth)
{
//give kAv a dialog with a list of color cards
string sPrompt = "\nSelect a color catagory.";
g_lMenuIDs+=[Dialog(kAv, sPrompt, g_lCategories, [UPMENU],0, iAuth)];
}
ColorMenu(key kAv, integer iAuth)
{
string sPrompt = "\nChoose a color.";
list g_lButtons = llList2ListStrided(g_lColors,0,-1,2);
g_lMenuIDs+=[Dialog(kAv, sPrompt, g_lButtons, [UPMENU],0, iAuth)];
}
ElementMenu(key kAv, integer iAuth)
{
string sPrompt = "\nWhich element of the " + CTYPE + " would you like to tint?\n\nChoose *Touch* if you want to select the part by directly clicking on the " + CTYPE + ".";
g_lButtons = llListSort(g_lElements, 1, TRUE);
g_lMenuIDs+=[Dialog(kAv, sPrompt, g_lButtons, ["*Touch*", UPMENU],0, iAuth)];
}
string ElementType(integer iLinkNumber)
{
string sDesc = (string)llGetObjectDetails(llGetLinkKey(iLinkNumber), [OBJECT_DESC]);
//each prim should have <elementname> in its description, plus "nocolor" or "notexture", if you want the prim to
//not appear in the color or texture menus
list lParams = llParseString2List(sDesc, ["~"], []);
if ((~(integer)llListFindList(lParams, ["nocolor"])) || sDesc == "" || sDesc == " " || sDesc == "(No Description)")
{
return "nocolor";
}
else
{
return llList2String(lParams, 0);
}
}
BuildElementList()
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (n = 2; n <= iLinkCount; n++)
{
string sElement = ElementType(n);
if (!(~llListFindList(g_lElements, [sElement])) && sElement != "nocolor")
{
g_lElements += [sElement];
//llSay(0, "added " + sElement + " to elements");
}
}
}
SetElementColor(string sElement, vector vColor)
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
for (n = 2; n <= iLinkCount; n++)
{
string thiselement = ElementType(n);
if (thiselement == sElement)
{
//set link to new color
//llSetLinkPrimitiveParams(n, [PRIM_COLOR, ALL_SIDES, color, 1.0]);
llSetLinkColor(n, vColor, ALL_SIDES);
}
}
//create shorter string from the color vectors before saving
string sStrColor = Vec2String(vColor);
//change the g_lColorSettings list entry for the current element
integer iIndex = llListFindList(g_lColorSettings, [sElement]);
if (iIndex == -1)
{
g_lColorSettings += [sElement, sStrColor];
}
else
{
g_lColorSettings = llListReplaceList(g_lColorSettings, [sStrColor], iIndex + 1, iIndex + 1);
}
//save to settings
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + sElement + "=" + sStrColor, "");
//g_sCurrentElement = "";
}
integer StartsWith(string sHayStack, string sNeedle) // http://wiki.secondlife.com/wiki/llSubStringIndex
{
return llDeleteSubString(sHayStack, llStringLength(sNeedle), -1) == sNeedle;
}
string Vec2String(vector vVec)
{
list lParts = [vVec.x, vVec.y, vVec.z];
integer n;
for (n = 0; n < 3; n++)
{
string sStr = llList2String(lParts, n);
//remove any trailing 0's or .'s from sStr
while ((~(integer)llSubStringIndex(sStr, ".")) && (llGetSubString(sStr, -1, -1) == "0" || llGetSubString(sStr, -1, -1) == "."))
{
sStr = llGetSubString(sStr, 0, -2);
}
lParts = llListReplaceList(lParts, [sStr], n, n);
}
return "<" + llDumpList2String(lParts, ",") + ">";
}
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "color_";
g_kWearer = llGetOwner();
BuildElementList(); //loop through non-root prims, build element list
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (sStr == "reset" && (iNum == COMMAND_OWNER || iNum == COMMAND_WEARER))
{
//clear saved settings
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "all", "");
llResetScript();
}
else if (iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)
{
if (sStr == "settings")
{
string out;
integer i = 0;
for (; i < llGetListLength(g_lColorSettings); i += 2)
{
if (i != 0) out += ",";
out += llList2String(g_lColorSettings, i) + "=";
out += llList2String(g_lColorSettings, i + 1);
}
Notify(kID, "Color Settings: " + out,FALSE);
}
else if (StartsWith(sStr, "setcolor"))
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the colors.", FALSE);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the " + CTYPE + " is locked. You cannot access this menu now!", FALSE);
}
else
{
list lParams = llParseString2List(sStr, [" "], []);
string sElement = llList2String(lParams, 1);
lParams = llParseString2List(sStr, ["<"], []);
vector vColor = (vector)("<"+llList2String(lParams, 1));
SetElementColor(sElement, vColor);
}
}
else if (sStr == "menu "+ g_sSubMenu || sStr == "colors")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the colors.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu "+g_sParentMenu, kID);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the " + CTYPE + " is locked. You cannot access this menu now!", FALSE);
llMessageLinked(LINK_SET, iNum, "menu "+g_sParentMenu, kID);
}
else
{
g_sCurrentElement = "";
ElementMenu(kID, iNum);
}
}
else if (llGetSubString(sStr,0,13) == "lockappearance")
{
if (iNum == COMMAND_OWNER)
{
if(llGetSubString(sStr, -1, -1) == "0")
{
g_iAppLock = FALSE;
}
else
{
g_iAppLock = TRUE;
}
}
}
}
else if (iNum == LM_SETTING_RESPONSE)
{
integer i = llSubStringIndex(sStr, "=");
string sToken = llGetSubString(sStr, 0, i - 1);
string sValue = llGetSubString(sStr, i + 1, -1);
i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
SetElementColor(sToken, (vector)sValue);
}
else if (sToken == g_sAppLockToken)
{
g_iAppLock = (integer)sValue;
}
else if (sToken == "Global_CType") CTYPE = sValue;
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == DIALOG_RESPONSE)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
g_lMenuIDs=llDeleteSubList(g_lMenuIDs,iMenuIndex,iMenuIndex);
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
if (g_sCurrentElement == "")
{
//main menu
llMessageLinked(LINK_SET, iAuth, "menu "+g_sParentMenu, kAv);
}
else if (g_sCurrentCategory == "")
{
g_sCurrentElement = "";
ElementMenu(kAv, iAuth);
}
else
{
g_sCurrentCategory = "";
CategoryMenu(kAv, iAuth);
}
}
else if (sMessage == "*Touch*")
{
Notify(kAv, "Please touch the part of the " + CTYPE + " you want to recolor.", FALSE);
g_kTouchID = TouchRequest(kAv, TRUE, FALSE, iAuth);
}
else if (g_sCurrentElement == "")
{
//we just got the element name
g_sCurrentElement = sMessage;
g_sCurrentCategory = "";
CategoryMenu(kAv, iAuth);
}
else if (g_sCurrentCategory == "")
{
g_lColors = [];
g_sCurrentCategory = sMessage;
integer iIndex = llListFindList(g_lCategories,[sMessage]);
//sDatakID = llGetNotecardLine("colors-" + g_sCurrentCategory, g_iLine);
//we'll have gotten several lines like "Chartreuse|<0.54118, 0.98431, 0.09020>"
//parse that into 2-strided list of colorname, colorvector
g_lColors = llParseString2List(llList2String(g_lAllColors, iIndex), ["\n", "|"], []);
g_lColors = llListSort(g_lColors, 2, TRUE);
ColorMenu(kAv,iAuth);
}
//JS: Just curious, why do we have to convert an integer to an (um) integer?? Or did I miss something about indexes in C++??
else if (~(integer)llListFindList(g_lColors, [sMessage]))
{
//found a color, now set it
integer iIndex = llListFindList(g_lColors, [sMessage]);
vector vColor = (vector)llList2String(g_lColors, iIndex + 1);
//llSay(0, "color = " + (string)vColor);
//loop through links, setting color if element type matches what we're changing
//root prim is 1, so start at 2
SetElementColor(g_sCurrentElement, vColor);
//ElementMenu(kID);
ColorMenu(kAv, iAuth);
}
}
}
else if (iNum == DIALOG_TIMEOUT)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
g_lMenuIDs=llDeleteSubList(g_lMenuIDs,iMenuIndex,iMenuIndex);
}
}
else if (iNum == TOUCH_RESPONSE)
{
if (kID == g_kTouchID)
{
list lParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lParams, 0);
integer iAuth = (integer)llList2String(lParams, 1);
integer iLinkNumber = (integer)llList2String(lParams, 3);
string sElement = ElementType(iLinkNumber);
if (sElement != "nocolor")
{
CategoryMenu(kAv, iAuth);
g_sCurrentElement = sElement;
Notify(kAv, "You selected \""+sElement+"\".", FALSE);
}
else
{
Notify(kAv, "You selected a prim which is not colorable. You can try again.", FALSE);
ElementMenu(kAv, iAuth);
}
}
}
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,552 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - couples //
// version 3.990.1 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sParentMenu = "Animations";
string g_sSubMenu = " Couples";
string UPMENU = "BACK";
//string MORE = ">";
key g_kAnimmenu; //Dialog handle
key g_kPart; //Dialog handle
key g_kTimerMenu; //Dialog handle
integer g_iAnimTimeout;
integer g_iPermissionTimeout;
key g_kWearer;
string STOP_COUPLES = "STOP";
string TIME_COUPLES = "TIME";
integer g_iLine1;
integer g_iLine2;
key g_kDataID1;
key g_kDataID2;
string CARD1 = "coupleanims";
string CARD2 = "coupleanims_personal";
integer card1line1;
integer card1line2;
integer iCardComplete;
string WEARERNAME;
list g_lAnimCmds;//1-strided list of strings that will trigger
list g_lAnimSettings;//4-strided list of subAnim|domAnim|offset|text, running parallel to g_lAnimCmds,
//such that g_lAnimCmds[0] corresponds to g_lAnimSettings[0:3], and g_lAnimCmds[1] corresponds to g_lAnimSettings[4:7], etc
key g_kCardID1;//used to detect whether coupleanims card has changed
key g_kCardID2;
float g_fRange = 10.0;//only scan within this range for anim partners
float g_fWalkingDistance = 1.0; // How close to try to get to the target point while walking, in meters
float g_fWalkingTau = 1.5; // how hard to push me toward partner while walking
float g_fAlignTau = 0.05; // how hard to push me toward partner while aligning
float g_fAlignDelay = 0.6; // how long to let allignment settle (in seconds)
key g_kCmdGiver; // id of the avatar having issued the last command
integer g_iCmdAuth; // auth level of that avatar
integer g_iCmdIndex;
key g_kPartner;
string g_sPartnerName;
float g_fTimeOut = 20.0;//duration of anim
integer g_iTargetID; // remember the walk target to delete; target handle
string g_sSubAnim;
string g_sDomAnim;
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
//integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
//integer COMMAND_EVERYONE = 504;
//integer COMMAND_RLV_RELAY = 507;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
//integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
//integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
//integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
//integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
//integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
integer ANIM_START = 7000;//send this with the name of an anim in the string part of the message to play the anim
integer ANIM_STOP = 7001;//send this with the name of an anim in the string part of the message to stop the anim
//integer CPLANIM_PERMREQUEST = 7002;//id should be av's key, str should be cmd name "hug", "kiss", etc
//integer CPLANIM_PERMRESPONSE = 7003;//str should be "1" for got perms or "0" for not. id should be av's key
//integer CPLANIM_START = 7004;//str should be valid anim name. id should be av
//integer CPLANIM_STOP = 7005;//str should be valid anim name. id should be av
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
//integer DIALOG_TIMEOUT = -9002;
integer SENSORDIALOG = -9003;
string g_sScript;
string g_sStopString = "stop";
integer g_iStopChan = 99;
integer g_iListener; //stop listener handle
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
refreshTimer(){
integer timeNow=llGetUnixTime();
if (g_iAnimTimeout <= timeNow && g_iAnimTimeout > 0){
//Debug("Anim timeout="+(string)g_iAnimTimeout+"\ntime now="+(string)timeNow);
g_iAnimTimeout=0;
StopAnims();
} else if (g_iPermissionTimeout <= timeNow && g_iPermissionTimeout > 0){
//Debug("Perm timeout="+(string)g_iPermissionTimeout+"\ntime now="+(string)timeNow);
g_iPermissionTimeout=0;
llListenRemove(g_iListener);
//llMessageLinked(LINK_SET, CPLANIM_PERMRESPONSE, "0", g_kPartner);
g_kPartner = NULL_KEY;
}
integer nextTimeout=g_iAnimTimeout;
if (g_iPermissionTimeout < g_iAnimTimeout && g_iPermissionTimeout > 0){
nextTimeout=g_iPermissionTimeout;
}
llSetTimerEvent(nextTimeout-timeNow);
}
CoupleAnimMenu(key kID, integer iAuth)
{
string sPrompt = "\nChoose an animation to play.\n\nAnimations will play " ;
if(g_fTimeOut == 0) sPrompt += "ENDLESS." ;
else sPrompt += "for "+(string)llCeil(g_fTimeOut)+" seconds.";
sPrompt += "\n\nwww.opencollar.at/animations\n\n";
list lButtons = g_lAnimCmds;//we're limiting this to 9 couple anims then
lButtons += [TIME_COUPLES, STOP_COUPLES];
g_kAnimmenu=Dialog(kID, sPrompt, lButtons, [UPMENU],0, iAuth);
}
//added to stop eventual still going animations
StopAnims()
{
if (llGetInventoryType(g_sSubAnim) == INVENTORY_ANIMATION) llMessageLinked(LINK_SET, ANIM_STOP, g_sSubAnim, "");
if (llGetInventoryType(g_sDomAnim) == INVENTORY_ANIMATION)
{
if (llKey2Name(g_kPartner) != "") llStopAnimation(g_sDomAnim);
}
g_sSubAnim = "";
g_sDomAnim = "";
}
// Calmly walk up to your partner and face them. Does not position the avatar precicely
MoveToPartner() {
list partnerDetails = llGetObjectDetails(g_kPartner, [OBJECT_POS, OBJECT_ROT]);
vector partnerPos = llList2Vector(partnerDetails, 0);
rotation partnerRot = llList2Rot(partnerDetails, 1);
vector partnerEuler = llRot2Euler(partnerRot);
// turn to face the partner
llMessageLinked(LINK_SET, RLV_CMD, "setrot:" + (string)(-PI_BY_TWO-partnerEuler.z) + "=force", NULL_KEY);
g_iTargetID = llTarget(partnerPos, g_fWalkingDistance);
llMoveToTarget(partnerPos, g_fWalkingTau);
}
default {
on_rez(integer start) {
//added to stop anims after relog when you logged off while in an endless couple anim
if (g_sSubAnim != "" && g_sDomAnim != "") {
llSleep(1.0); // wait a second to make sure the poses script reseted properly
StopAnims();
}
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "coupleanim_";
g_kWearer = llGetOwner();
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
if (llGetInventoryType(CARD1) == INVENTORY_NOTECARD) { //card is present, start reading
g_kCardID1 = llGetInventoryKey(CARD1);
g_iLine1 = 0;
g_lAnimCmds = [];
g_lAnimSettings = [];
g_kDataID1 = llGetNotecardLine(CARD1, g_iLine1);
}
if (llGetInventoryType(CARD2) == INVENTORY_NOTECARD) { //card is present, start reading
g_kCardID2 = llGetInventoryKey(CARD2);
g_iLine2 = 0;
g_kDataID2 = llGetNotecardLine(CARD2, g_iLine2);
}
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
//Debug("Starting");
}
listen(integer channel, string sName, key kID, string sMessage) {
//Debug("listen: " + sMessage + ", channel=" + (string)channel);
llListenRemove(g_iListener);
if (channel == g_iStopChan)
{//this abuses the GROUP auth a bit but i think it's ok.
//Debug("message on stop channel");
llMessageLinked(LINK_SET, COMMAND_GROUP, "stopcouples", kID);
}
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
//if you don't care who gave the command, so long as they're one of the above, you can just do this instead:
if (iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)
{
//the command was given by either owner, secowner, group member, or wearer
list lParams = llParseString2List(sStr, [" "], []);
g_kCmdGiver = kID; g_iCmdAuth = iNum;
string sCommand = llToLower(llList2String(lParams, 0));
string sValue = llToLower(llList2String(lParams, 1));
integer tmpiIndex = llListFindList(g_lAnimCmds, [sCommand]);
if (tmpiIndex != -1) //if the couple anim exists
{
g_iCmdIndex = tmpiIndex;
//Debug(sCommand);
//we got an anim command.
if (llGetListLength(lParams) > 1)//we've been given a name of someone to kiss. scan for it
{
string sTmpName = llDumpList2String(llList2List(lParams, 1, -1), " ");//this makes it so we support even full names in the command
//llSensor("", NULL_KEY, AGENT, g_fRange, PI); //replaced with call to sensor dialog
g_kPart=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|\nChoose a partner:\n|0|``"+(string)AGENT+"`"+(string)g_fRange+"`"+(string)PI +"`"+sTmpName+"`1"+ "|BACK|" + (string)iNum, g_kPart);
}
else //no name given.
{
if (kID == g_kWearer) //if commander is not sub, then treat commander as partner
{
llMessageLinked(LINK_SET, POPUP_HELP, "Error: you didn't give the name of the person you want to animate. To " + sCommand + " Nandana Singh, for example, you could say /_CHANNEL__PREFIX" + sCommand + " nan", g_kWearer);
}
else //else set partner to commander
{
g_kPartner = g_kCmdGiver;
g_sPartnerName = llGetDisplayName(g_kPartner);
if (g_sPartnerName == "???" || g_sPartnerName == "") g_sPartnerName = llKey2Name(g_kWearer); //sanity check, fallback if necessary
//added to stop eventual still going animations
StopAnims();
//llMessageLinked(LINK_SET, CPLANIM_PERMREQUEST, sCommand, g_kPartner);
llRequestPermissions(g_kPartner, PERMISSION_TRIGGER_ANIMATION);
llOwnerSay("Offering to " + sCommand + " " + g_sPartnerName + ".");
}
}
}
else if (sStr == "stopcouples")
{
StopAnims();
}
else if (sStr == "menu "+g_sSubMenu || sStr == "couples")
{
CoupleAnimMenu(kID, iNum);
}
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if(sToken == g_sScript + "timeout")
{
g_fTimeOut = (float)sValue;
} else if (sToken=="Global_WearerName") WEARERNAME=sValue;
}
else if (iNum == DIALOG_RESPONSE)
{
if (kID == g_kAnimmenu)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
}
else if (sMessage == STOP_COUPLES)
{
StopAnims();
CoupleAnimMenu(kAv, iAuth);
}
else if (sMessage == TIME_COUPLES)
{
string sPrompt = "\nChoose the duration for couple animations.\n\nCurrent duration: ";
if(g_fTimeOut == 0) sPrompt += "ENDLESS." ;
else sPrompt += "for "+(string)llCeil(g_fTimeOut)+" seconds.";
g_kTimerMenu=Dialog(kAv, sPrompt, ["10", "20", "30","40", "50", "60","90", "120", "ENDLESS"], [UPMENU],0, iAuth);
}
else
{
integer iIndex = llListFindList(g_lAnimCmds, [sMessage]);
if (iIndex != -1)
{
g_kCmdGiver = kAv;
g_iCmdAuth = iAuth;
g_iCmdIndex = iIndex;
//llSensor("", NULL_KEY, AGENT, g_fRange, PI);
g_kPart=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|\nChoose a partner:\n|0|``"+(string)AGENT+"`"+(string)g_fRange+"`"+(string)PI + "|BACK|" + (string)iAuth, g_kPart);
}
}
}
else if (kID == g_kPart)
{
//Debug("Response from partner"+sStr);
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
CoupleAnimMenu(kAv, iAuth);
}
else
{
//process return from sensordialog
g_kPartner = (key)sMessage;
g_sPartnerName = llGetDisplayName(g_kPartner);
if (g_sPartnerName == "???" || g_sPartnerName == "") g_sPartnerName = llKey2Name(g_kPartner); //sanity check, fallback if necessary
StopAnims();
string sCommand = llList2String(g_lAnimCmds, g_iCmdIndex);
llRequestPermissions(g_kPartner, PERMISSION_TRIGGER_ANIMATION);
llOwnerSay("Offering to "+ sCommand +" "+ g_sPartnerName);
Notify(g_kPartner, WEARERNAME + " would like to give you a " + sCommand + ". Click [Yes] to accept.", FALSE );
}
}
else if (kID == g_kTimerMenu)
{
//Debug("Response from timer menu"+sStr);
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
CoupleAnimMenu(kAv, iAuth);
}
else if ((integer)sMessage > 0 && ((string)((integer)sMessage) == sMessage))
{
g_fTimeOut = (float)((integer)sMessage);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "timeout=" + (string)g_fTimeOut, "");
Notify (kAv, "Couple Anmiations play now for " + (string)llRound(g_fTimeOut) + " seconds.",TRUE);
CoupleAnimMenu(kAv, iAuth);
}
else if (sMessage == "ENDLESS")
{
g_fTimeOut = 0.0;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "timeout=0.0", "");
Notify (kAv, "Couple Anmiations play now forever. Use the menu or type *stopcouples to stop them again.",TRUE);
CoupleAnimMenu(kAv, iAuth);
}
}
}
}
not_at_target()
{
// Opensim leash fix
if (g_iTargetID==0) return;
//this might make us chase the partner. we'll see. that might not be bad
llTargetRemove(g_iTargetID);
MoveToPartner();
}
at_target(integer tiNum, vector targetpos, vector ourpos)
{
// Opensim leash fix
if (g_iTargetID==0) return;
llTargetRemove(tiNum);
g_iTargetID = 0;
llStopMoveToTarget();
//AlignWithPartner
float offset = 10.0;
if (g_iCmdIndex != -1) offset = (float)llList2String(g_lAnimSettings, g_iCmdIndex * 4 + 2);
list partnerDetails = llGetObjectDetails(g_kPartner, [OBJECT_POS, OBJECT_ROT]);
vector partnerPos = llList2Vector(partnerDetails, 0);
rotation partnerRot = llList2Rot(partnerDetails, 1);
vector myPos = llList2Vector(llGetObjectDetails(llGetOwner(), [OBJECT_POS]), 0);
vector target = partnerPos + (<1.0, 0.0, 0.0> * partnerRot * offset); // target is <offset> meters in front of the partner
target.z = myPos.z; // ignore height differences
llMoveToTarget(target, g_fAlignTau);
llSleep(g_fAlignDelay);
llStopMoveToTarget();
//we've arrived. let's play the anim and spout the text
g_sSubAnim = llList2String(g_lAnimSettings, g_iCmdIndex * 4);
g_sDomAnim = llList2String(g_lAnimSettings, g_iCmdIndex * 4 + 1);
llMessageLinked(LINK_SET, ANIM_START, g_sSubAnim, "");
llStartAnimation(g_sDomAnim);//note that we don't double check for permissions here, so if the coupleanim1 script sends its messages out of order, this might fail
g_iListener = llListen(g_iStopChan, "", g_kPartner, g_sStopString);
//llInstantMessage(g_kPartner, "If you would like to stop the animation early, say /" + (string)g_iStopChan + g_sStopString + " to stop.");
Notify(g_kPartner, "If you would like to stop the animation early, say /" + (string)g_iStopChan + g_sStopString + " to stop.", FALSE);
string text = llList2String(g_lAnimSettings, g_iCmdIndex * 4 + 3);
if (text != "")
{
string sName = llGetObjectName();
string sObjectName;
text = osReplaceString(text, "_PARTNER_", g_sPartnerName, -1, 0);
text = osReplaceString(text, "_SELF_", WEARERNAME, -1, 0);
llSetObjectName("");
llSay(0, "/me " + text);
llSetObjectName(sName);
}
if (g_fTimeOut > 0.0){
g_iAnimTimeout=llGetUnixTime()+(integer)g_fTimeOut;
} else {
g_iAnimTimeout=0;
}
refreshTimer();
}
timer()
{
refreshTimer();
}
dataserver(key kID, string sData)
{
if (sData == EOF){
iCardComplete++;
} else {
list lParams = llParseString2List(sData, ["|"], []);
//don't try to add empty or misformatted lines
//valid if length = 4 or 5 (since text is optional) and anims exist
integer iLength = llGetListLength(lParams);
if (iLength == 4 || iLength == 5){
if (!llGetInventoryType(llList2String(lParams, 1)) == INVENTORY_ANIMATION){
llOwnerSay(CARD1 + " line " + (string)g_iLine1 + ": animation '" + llList2String(lParams, 1) + "' is not present. Skipping.");
} else if (!llGetInventoryType(llList2String(lParams, 2)) == INVENTORY_ANIMATION){
llOwnerSay(CARD1 + " line " + (string)g_iLine2 + ": animation '" + llList2String(lParams, 2) + "' is not present. Skipping.");
} else {
integer iIndex = llListFindList(g_lAnimCmds, llList2List(lParams, 0, 0));
if (iIndex != -1){
g_lAnimCmds=llDeleteSubList(g_lAnimCmds,iIndex,iIndex);
g_lAnimSettings=llDeleteSubList(g_lAnimSettings,iIndex*4,iIndex*4+3);
}
//add cmd, and text
g_lAnimCmds += llList2List(lParams, 0, 0);
//anim names, offset,
g_lAnimSettings += llList2List(lParams, 1, 3);
//text. this has to be done by casting to string instead of list2list, else lines that omit text will throw off the stride
g_lAnimSettings += [llList2String(lParams, 4)];
//Debug(llDumpList2String(g_lAnimCmds, ","));
//Debug(llDumpList2String(g_lAnimSettings, ","));
}
}
if ( iCardComplete <2){
if (kID == g_kDataID1){
g_iLine1++;
g_kDataID1 = llGetNotecardLine(CARD1, g_iLine1);
} else if (kID == g_kDataID2){
g_iLine2++;
g_kDataID2 = llGetNotecardLine(CARD2, g_iLine2);
}
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
key kID = llGetPermissionsKey();
//Debug("changed anim permissions\nPerm ID="+(string)kID+"g_kPartner="+(string)g_kPartner);
if (kID == g_kPartner)
{
g_iPermissionTimeout=0;
MoveToPartner();
}
else
{
Notify(kID, "Sorry, but the request timed out.",TRUE);
}
}
}
changed(integer iChange)
{
if (iChange & CHANGED_INVENTORY)
{
if (llGetInventoryKey(CARD1) != g_kCardID1)
{
//because notecards get new uuids on each save, we can detect if the notecard has changed by seeing if the current uuid is the same as the one we started with
//just switch states instead of restarting, so we can preserve any settings we may have gotten from db
state default;
}
if (llGetInventoryKey(CARD2) != g_kCardID1)
{
state default;
}
}
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,722 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - dialog //
// version 3.989 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//an adaptation of Schmobag Hogfather's SchmoDialog script
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
//integer COMMAND_EVERYONE = 504;
//integer COMMAND_RLV_RELAY = 507;
//integer COMMAND_SAFEWORD = 510;
//integer COMMAND_RELAY_SAFEWORD = 511;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
//integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
//integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
//integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
//integer MENUNAME_REQUEST = 3000;
//integer MENUNAME_RESPONSE = 3001;
//integer MENUNAME_REMOVE = 3003;
//integer RLV_CMD = 6000;
//integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
//integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
//integer RLV_VERSION = 6003; //RLV Plugins can recieve the used rl viewer version upon receiving this message..
//integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
//integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
//integer ANIM_START = 7000;//send this with the name of an anim in the string part of the message to play the anim
//integer ANIM_STOP = 7001;//send this with the name of an anim in the string part of the message to stop the anim
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer SENSORDIALOG = -9003;
integer FIND_AGENT = -9005;
integer iPagesize = 12;
string MORE = "►";
string PREV = "◄";
string UPMENU = "BACK"; // string to identify the UPMENU button in the utility lButtons
//string SWAPBTN = "swap";
//string SYNCBTN = "sync";
string BLANK = "-";
integer g_iTimeOut = 300;
integer g_iReapeat = 5;//how often the timer will go off, in seconds
list g_lMenus;//11-strided list in form listenChan, dialogid, listener, starttime, recipient, prompt, list buttons, utility buttons, currentpage, button digits, auth level
//where "list buttons" means the big list of choices presented to the user
//and "page buttons" means utility buttons that will appear on every page, such as one saying "go up one level"
//and "currentpage" is an integer meaning which page of the menu the user is currently viewing
list g_lRemoteMenus;
integer g_iStrideLength = 12;
// List of user keys who opt-out of chat-spammage, ie chose "off"
list MRSBUN = []; // blatant monty python reference - list of those who do not like spam
string SPAMSWITCH = "verbose"; // lowercase chat-command token
key g_kWearer;
string g_sScript;
list g_lSensorDetails;
integer g_bSensorLock;
integer g_iSensorTimeout;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
Dialog(key kRecipient, string sPrompt, list lMenuItems, list lUtilityButtons, integer iPage, key kID, integer iWithNums, integer iAuth,string extraInfo)
{
//calculate page start and end
integer iNumitems = llGetListLength(lMenuItems);
integer iStart = 0;
integer iMyPageSize = iPagesize - llGetListLength(lUtilityButtons);
string sPagerPrompt;
if (iNumitems > iMyPageSize)
{
iMyPageSize=iMyPageSize-2;//we'll use two slots for the MORE and PREV button, so shrink the page accordingly
integer numPages=(iNumitems-1)/iMyPageSize;
if (iPage>numPages)iPage=0;
else if (iPage<0) iPage=numPages;
iStart = iPage * iMyPageSize;
//multi page menu
sPagerPrompt = sPagerPrompt + "\nPage "+(string)(iPage+1)+"/"+(string)(numPages+1);
}
integer iEnd = iStart + iMyPageSize - 1;
if (iEnd >= iNumitems) iEnd = iNumitems - 1;
integer iPagerPromptLen = GetStringBytes(sPagerPrompt);
//Debug("start at "+(string)iStart+", end at "+(string)iEnd);
//if we've been told to, calculate numbering from buttons supplied, inlined ButtonDigits function
if (iWithNums == -1){
integer iNumButtons=llGetListLength(lMenuItems);
iWithNums=llStringLength((string)iNumButtons);
//if ( iNumButtons < 10 ) iWithNums = 1;
//else if (iNumButtons < 100) iWithNums = 2;
//else if (iNumButtons < 1000) iWithNums = 3; // more than 100 is unlikely, considering the size of a LM
while (iNumButtons--) {
if (GetStringBytes(llList2String(lMenuItems,iNumButtons))>18) {
jump longButtonName; //one of the options is too long for a button, thats all we need to know.
}
}
iWithNums=0;
@longButtonName;
}
//Debug("numbered list:"+(string)iWithNums);
// create list of buttons to use, and number them if needed
string sNumberedButtons;
integer iNBPromptlen;
list lButtons; //list of buttons to be used in the dialog, sliced by page and maybe with numbers added, not the lMenuItems we were supplied
if (iWithNums) { // put numbers in front of buttons: "00 Button1", "01 Button2", ...
integer iCur;
sNumberedButtons="\n"; //let's make this a linebreak instead
for (iCur = iStart; iCur <= iEnd; iCur++)
{
string sButton = llList2String(lMenuItems, iCur);
if ((key)sButton) {
//fixme: inlined single use key2name function
if (llGetDisplayName((key)sButton)) sButton=llGetDisplayName((key)sButton);
else sButton=llKey2Name((key)sButton);
}
//inlined single use Integer2String function
string sButtonNumber = (string)iCur;
while (llStringLength(sButtonNumber)<iWithNums){
sButtonNumber = "0"+sButtonNumber;
}
sButton=sButtonNumber + " " + sButton;
//Debug("ButtonNumber="+sButtonNumber);
sNumberedButtons+=sButton+"\n";
sButton = TruncateString(sButton, 24);
lButtons += [sButton];
}
iNBPromptlen=GetStringBytes(sNumberedButtons);
} else if (iNumitems > iMyPageSize) {
lButtons = llList2List(lMenuItems, iStart, iEnd);
} else {
lButtons = lMenuItems;
}
//Debug("buttons:"+llDumpList2String(lButtons,","));
//make a prompt small enough to fit in the 512 limit for dialogs, prepare overflow for chat message
integer iPromptlen=GetStringBytes(sPrompt);
string sThisPrompt;
string sThisChat;
if (iPromptlen + iNBPromptlen + iPagerPromptLen < 512) { //we can fit it all in the dialog
sThisPrompt = sPrompt + sNumberedButtons + sPagerPrompt ;
} else if (iPromptlen + iPagerPromptLen < 512) { //we can fit in the whole prompt and pager info, but not the buttons list
sThisPrompt = sPrompt + sPagerPrompt;
sThisChat = sNumberedButtons;
} else { //can't fit prompt and pager, so send truncated prompt, pager and chat full prompt and button list
sThisPrompt=TruncateString(sPrompt,510-iPagerPromptLen)+sPagerPrompt;
sThisChat = sPrompt+sNumberedButtons;
}
//Debug("prompt:"+sThisPrompt);
//unless asked not to, chat anything that wouldn't fit to menu user
if (! ~llListFindList(MRSBUN, [kRecipient])){
integer iRemainingChatLen;
while (iRemainingChatLen=llStringLength(sThisChat)){ //capture and compare in one go
if(iRemainingChatLen<1015) {
Notify(kRecipient,sThisChat,FALSE); //if its short enough, IM it in one chunk
sThisChat="";
} else {
string sMessageChunk=TruncateString(sPrompt,1015);
Notify(kRecipient,sMessageChunk,FALSE);
sThisChat=llGetSubString(sThisChat,llStringLength(sMessageChunk),-1);
}
}
}
//Debug("chat prompt:"+sThisChat);
//calculate random channel number for dialog, inlined single use RandomUniqueChanel function
integer iChan=llRound(llFrand(10000000)) + 100000;
while (~llListFindList(g_lMenus, [iChan])){
iChan=llRound(llFrand(10000000)) + 100000;
}
integer iListener = llListen(iChan, "", kRecipient, "");
//send dialog to viewer
if (llGetListLength(lMenuItems+lUtilityButtons)){
list lNavButtons;
if (iNumitems > iMyPageSize) {
lNavButtons=[PREV,MORE];
}
llDialog(kRecipient, sThisPrompt, PrettyButtons(lButtons, lUtilityButtons, lNavButtons), iChan);
}
else llTextBox(kRecipient, sThisPrompt, iChan);
//set dialog timeout
llSetTimerEvent(g_iReapeat);
integer ts = llGetUnixTime() + g_iTimeOut;
//write entry in tracking list
g_lMenus += [iChan, kID, iListener, ts, kRecipient, sPrompt, llDumpList2String(lMenuItems, "|"), llDumpList2String(lUtilityButtons, "|"), iPage, iWithNums, iAuth,extraInfo];
//Debug("Made Dialog");
}
integer GetStringBytes(string sStr)
{
sStr = llEscapeURL(sStr);
integer l = llStringLength(sStr);
list lAtoms = llParseStringKeepNulls(sStr, ["%"], []);
return l - 2 * llGetListLength(lAtoms) + 2;
}
string TruncateString(string sStr, integer iBytes)
{
sStr = llEscapeURL(sStr);
integer j = 0;
string sOut;
integer l = llStringLength(sStr);
for (; j < l; j++)
{
string c = llGetSubString(sStr, j, j);
if (c == "%")
{
if (iBytes >= 2)
{
sOut += llGetSubString(sStr, j, j+2);
j += 2;
iBytes -= 2;
}
}
else if (iBytes >= 1)
{
sOut += c;
iBytes --;
}
}
return llUnescapeURL(sOut);
}
list PrettyButtons(list lOptions, list lUtilityButtons, list iPagebuttons){ //returns a list formatted to that "options" will start in the top left of a dialog, and "utilitybuttons" will start in the bottom right
list lSpacers;
list lCombined = lOptions + lUtilityButtons + iPagebuttons;
while (llGetListLength(lCombined) % 3 != 0 && llGetListLength(lCombined) < 12)
{
lSpacers += [BLANK];
lCombined = lOptions + lSpacers + lUtilityButtons + iPagebuttons;
}
// check if a UPBUTTON is present and remove it for the moment
integer u = llListFindList(lCombined, [UPMENU]);
if (u != -1)
{
lCombined = llDeleteSubList(lCombined, u, u);
}
list lOut = llList2List(lCombined, 9, 11);
lOut += llList2List(lCombined, 6, 8);
lOut += llList2List(lCombined, 3, 5);
lOut += llList2List(lCombined, 0, 2);
//make sure we move UPMENU to the lower right corner
if (u != -1)
{
lOut = llListInsertList(lOut, [UPMENU], 2);
}
return lOut;
}
/*
list PrettyMain(list lOptions)
{
integer iA=llListFindList(lOptions,["Access"]);
integer iO=llListFindList(lOptions,["Options"]);
integer iH=llListFindList(lOptions,["Help/About"]);
if(~iA && ~iO && ~iH) //all three buttons found. Otherwise menu isn't main or is messed up, and we return
{
lOptions=llDeleteSubList(lOptions,iA,iA);
if(iO>iA) --iO;
if(iH>iA) --iH;
lOptions=llDeleteSubList(lOptions,iO,iO);
if (iH>iO) --iH;
lOptions=llDeleteSubList(lOptions,iH,iH);
return lOptions+["Access","Options","Help/About"];
}
else return lOptions;
}
*/
RemoveMenuStride(integer iIndex) //fixme: duplicates entire global lMenu list
{
//tell this function the menu you wish to remove, identified by list index
//it will close the listener, remove the menu's entry from the list, and return the new list
//should be called in the listen event, and on menu timeout
integer iListener = llList2Integer(g_lMenus, iIndex + 2);
llListenRemove(iListener);
g_lMenus=llDeleteSubList(g_lMenus, iIndex, iIndex + g_iStrideLength - 1);
}
CleanList()
{
//Debug("cleaning list");
//loop through menus and remove any whose timeouts are in the past
//start at end of list and loop down so that indices don't get messed up as we remove items
integer iLength = llGetListLength(g_lMenus);
integer n;
integer iNow = llGetUnixTime();
for (n = iLength - g_iStrideLength; n >= 0; n -= g_iStrideLength)
{
integer iDieTime = llList2Integer(g_lMenus, n + 3);
//Debug("dietime: " + (string)iDieTime);
if (iNow > iDieTime)
{
//Debug("menu timeout");
key kID = llList2Key(g_lMenus, n + 1);
llMessageLinked(LINK_SET, DIALOG_TIMEOUT, "", kID);
RemoveMenuStride(n);
}
}
if (g_iSensorTimeout>iNow){ //sensor took too long to return. Ignore it, and do the next in the list
g_lSensorDetails=llDeleteSubList(g_lSensorDetails,0,3);
if (llGetListLength(g_lSensorDetails)>0){
dequeueSensor();
}
}
}
ClearUser(key kRCPT)
{
//find any strides belonging to user and remove them
integer iIndex = llListFindList(g_lMenus, [kRCPT]);
while (~iIndex)
{
//Debug("removed stride for " + (string)kRCPT);
RemoveMenuStride(iIndex -4);
//g_lMenus = llDeleteSubList(g_lMenus, iIndex - 4, iIndex - 5 + g_iStrideLength);
iIndex = llListFindList(g_lMenus, [kRCPT]);
}
//Debug(llDumpList2String(g_lMenus, ","));
}
integer UserCommand(integer iNum, string sStr, key kID)
{
if (iNum < COMMAND_OWNER || iNum > COMMAND_WEARER) return FALSE;
if (iNum == COMMAND_GROUP) return FALSE;
list lParams = llParseString2List(llToLower(sStr), ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == SPAMSWITCH) // add/rem user to verbose=off list
{
integer i = llListFindList(MRSBUN, [kID]);
if (sValue == "off")
{
if (~i) return TRUE; // already in list
MRSBUN += [kID];
Notify(kID, "Verbose Feature activated for you.", FALSE);
}
else if (~i)
{
MRSBUN = llDeleteSubList(MRSBUN, i, i);
Notify(kID, "Verbose Feature de-activated for you.", FALSE);
}
else return TRUE; // not in list to start with
if (!llGetListLength(MRSBUN)) llMessageLinked(LINK_THIS, LM_SETTING_DELETE, g_sScript + SPAMSWITCH, "");
else llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + SPAMSWITCH + "=" + llList2CSV(MRSBUN), "");
return TRUE;
}
return FALSE;
}
dequeueSensor(){
//get sStr of first set of sensor details, unpack it and run the apropriate sensor
//Debug((string)llGetListLength(g_lSensorDetails));
list lParams = llParseStringKeepNulls(llList2String(g_lSensorDetails,2), ["|"], []);
//sensor information is encoded in the first 5 fields of the lButtons list, ready to feed to the sensor command,
list lSensorInfo = llParseStringKeepNulls(llList2String(lParams, 3), ["`"], []);
/* Debug("Running sensor with\n"+
llList2String(lSensorInfo,0)+"\n"+
llList2String(lSensorInfo,1)+"\n"+
(string)llList2Integer(lSensorInfo,2)+"\n"+
(string)llList2Float(lSensorInfo,3)+"\n"+
(string)llList2Float(lSensorInfo,4)
);
*/
llSensor(llList2String(lSensorInfo,0),(key)llList2String(lSensorInfo,1),llList2Integer(lSensorInfo,2),llList2Float(lSensorInfo,3),llList2Float(lSensorInfo,4));
g_iSensorTimeout=llGetUnixTime()+10;
llSetTimerEvent(g_iReapeat);
}
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "dialog_";
g_kWearer=llGetOwner();
//Debug("Starting");
}
sensor(integer num_detected){
//get sensot request info from list
list lSensorInfo=llList2List(g_lSensorDetails,0,3);
g_lSensorDetails=llDeleteSubList(g_lSensorDetails,0,3);
list lParams=llParseStringKeepNulls(llList2String(lSensorInfo,2), ["|"], []);
list lButtons = llParseStringKeepNulls(llList2String(lParams, 3), ["`"], []);
//sensor information is encoded in the first 5 fields of the lButtons list, we've run the sensor so we don't need that now.
//6th field is "find" information
//7th is boolean, 0 for return a dialog, 1 for return the first matching name
string sFind=llList2String(lButtons,5);
integer bReturnFirstMatch=llList2Integer(lButtons,6);
lButtons=[];
integer i;
for (i=0; i<num_detected;i++){
lButtons += llDetectedKey(i);
if (bReturnFirstMatch){ //if we're supposed to be finding the first match,
if (llSubStringIndex(llToLower(llDetectedName(i)),llToLower(sFind))==0){ //if they match, send it back as a dialogresponse without popping the dialog
llMessageLinked(LINK_SET, DIALOG_RESPONSE, llList2String(lParams,0) + "|" + (string)llDetectedKey(i)+ "|0|" + llList2String(lParams,5), (key)llList2String(lSensorInfo,3));
//if we have more sensors to run, run another one now, else unlock subsys and quite
if (llGetListLength(g_lSensorDetails) > 0){
dequeueSensor();
} else {
g_bSensorLock=FALSE;
}
return;
}
}
}
//pack buttons back into a ` delimited list, and put it back into lParams
string sButtons=llDumpList2String(lButtons,"`");
lParams=llListReplaceList(lParams,[sButtons],3,3);
//fake fresh dialog call with our new buttons in place, using the rest of the information we were sent
llMessageLinked(LINK_THIS,DIALOG,llDumpList2String(lParams,"|"),(key)llList2String(lSensorInfo,3));
//if we have more sensors to run, run another one now, else unlock subsys and quite
if (llGetListLength(g_lSensorDetails) > 0){
dequeueSensor();
} else {
g_bSensorLock=FALSE;
}
}
no_sensor()
{
list lSensorInfo=llList2List(g_lSensorDetails,0,3);
g_lSensorDetails=llDeleteSubList(g_lSensorDetails,0,3);
list lParams=llParseStringKeepNulls(llList2String(lSensorInfo,2), ["|"], []);
lParams=llListReplaceList(lParams,[""],3,3);
//fake fresh dialog call with our new buttons in place, using the rest of the information we were sent
llMessageLinked(LINK_THIS,DIALOG,llDumpList2String(lParams,"|"),(key)llList2String(lSensorInfo,3));
//if we have more sensors to run, run another one now, else unlock subsys and quit
if (llGetListLength(g_lSensorDetails) > 0){
dequeueSensor();
} else {
g_bSensorLock=FALSE;
}
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (iNum == FIND_AGENT) {
//Debug("FIND_AGENT:"+sStr);
list lParams = llParseStringKeepNulls(sStr, ["|"], []);
if (llList2String(lParams, 0) == "getavi_"){ //identifies a getavi_ request
//fixme: REQ(params[1]),
string REQ = llList2String(lParams, 1); //name of script that sent the message
key kRCPT = llGetOwnerKey((key)llList2String(lParams, 2)); //key of requesting user
integer iAuth = (integer)llList2String(lParams, 3); //auth of requesting user
string TYPE = llList2String(lParams, 4); //type field, returned in the response to help calling script track the nature of the search
string find = llList2String(lParams, 5); //find string.. only return avatars whose neames start with this string
if (find == " ") find = "";
list excl = llParseString2List(llList2String(lParams, 6), [","], []); //list of uuids to exclude from the search
//list AVIS = [];
list agentList = llGetAgentList(AGENT_LIST_REGION, []);
integer numAgents = llGetListLength(agentList);
while(numAgents--){
key avId=llList2Key(agentList, numAgents);
string name = llKey2Name(avId);
if ( !(~llSubStringIndex(llToLower(name), llToLower(find))) ||
(~llListFindList(excl,[(string)avId]))) {
//if this name does not contain find string or key is in the exclude list
agentList=llDeleteSubList(agentList,numAgents,numAgents); //delete this agent from the list
} else if (osIsNpc(avId)) {
agentList=llDeleteSubList(agentList,numAgents,numAgents);
}
}
numAgents = llGetListLength(agentList);
if (!numAgents){
string findNotify;
if (find != "") findNotify = "starting with \"" + find + "\" ";
llInstantMessage(kRCPT, "No (other) avatars "+ findNotify + "in this region.");
} else {
//Debug("Found avatars:"+llDumpList2String(agentList,","));
ClearUser(kRCPT);
Dialog(kRCPT, "\nChoose the person you like to add:\n", agentList, [UPMENU], 0, kID, -1, iAuth, "getavi_|"+REQ+"|"+TYPE); //iDigits==-1 means dialog should calculate numbered dialogs
}
//} else {
//Debug(sStr);
}
} else
if (iNum == SENSORDIALOG){
//first, store all incoming parameters in a global sensor details list
//test for locked sensor subsystem
//if subsys locked, do nothing
//if subsys open, run sensor with first set of details in the list, and set timeout
//list g_lSensorDetailsList;
//list g_bSensorLock;
g_lSensorDetails+=[iSender, iNum, sStr, kID];
if (! g_bSensorLock){
g_bSensorLock=TRUE;
dequeueSensor();
}
} else
if (iNum == DIALOG)
{//give a dialog with the options on the button labels
//str will be pipe-delimited list with rcpt|prompt|page|backtick-delimited-list-buttons|backtick-delimited-utility-buttons|auth
//Debug("DIALOG:"+sStr);
list lParams = llParseStringKeepNulls(sStr, ["|"], []);
key kRCPT = llGetOwnerKey((key)llList2String(lParams, 0));
integer iIndex = llListFindList(g_lRemoteMenus, [kRCPT]);
if (~iIndex)
{
if (llKey2Name(kRCPT)=="") //if recipient is not in the sim. Inlined single use InSim(kRCPT) function
{
llHTTPRequest(llList2String(g_lRemoteMenus, iIndex+1), [HTTP_METHOD, "POST"], sStr+"|"+(string)kID);
return;
}
else
{
g_lRemoteMenus = llListReplaceList(g_lRemoteMenus, [], iIndex, iIndex+1);
}
}
string sPrompt = llList2String(lParams, 1);
integer iPage = (integer)llList2String(lParams, 2);
list lButtons = llParseString2List(llList2String(lParams, 3), ["`"], []);
integer iDigits=-1; //iDigits==-1 means Dialog should run idigits on the buttons
list ubuttons = llParseString2List(llList2String(lParams, 4), ["`"], []);
integer iAuth = COMMAND_NOAUTH;
if (llGetListLength(lParams)>=6) iAuth = llList2Integer(lParams, 5);
//first clean out any strides already in place for that user. prevents having lots of listens open if someone uses the menu several times while sat
ClearUser(kRCPT);
Dialog(kRCPT, sPrompt, lButtons, ubuttons, iPage, kID, iDigits, iAuth,"");
}
else if (llGetSubString(sStr, 0, 10) == "remotemenu:")
{
if (iNum == COMMAND_OWNER || iNum == COMMAND_SECOWNER)
{
string sCmd = llGetSubString(sStr, 11, -1);
//Debug("dialog cmd:" + sCmd);
if (llGetSubString(sCmd, 0, 3) == "url:")
{
integer iIndex = llListFindList(g_lRemoteMenus, [kID]);
if (~iIndex)
{
g_lRemoteMenus = llListReplaceList(g_lRemoteMenus, [kID, llGetSubString(sCmd, 4, -1)], iIndex, iIndex+1);
}
else
{
g_lRemoteMenus += [kID, llGetSubString(sCmd, 4, -1)];
}
llMessageLinked(LINK_SET, iNum, "menu", kID);
}
else if (llGetSubString(sCmd, 0, 2) == "off")
{
integer iIndex = llListFindList(g_lRemoteMenus, [kID]);
if (~iIndex)
{
g_lRemoteMenus = llListReplaceList(g_lRemoteMenus, [], iIndex, iIndex+1);
}
}
else if (llGetSubString(sCmd, 0, 8) == "response:")
{
list lParams = llParseString2List(llGetSubString(sCmd, 9, -1), ["|"], []);
//llMessageLinked(LINK_SET, DIALOG_RESPONSE, (string)kAv + "|" + sMessage + "|" + (string)iPage, kMenuID);
llMessageLinked(LINK_SET, DIALOG_RESPONSE, llList2String(lParams, 0) + "|" + llList2String(lParams, 1) + "|" + llList2String(lParams, 2), llList2String(lParams, 3));
}
else if (llGetSubString(sCmd, 0, 7) == "timeout:")
{
llMessageLinked(LINK_SET, DIALOG_TIMEOUT, "", llGetSubString(sCmd, 8, -1));
}
}
}
else if (UserCommand(iNum, sStr, kID)) return;
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(llToLower(sStr), ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == g_sScript + SPAMSWITCH) MRSBUN = llParseString2List(sValue, [","], []);
}
}
listen(integer iChan, string sName, key kID, string sMessage)
{
integer iMenuIndex = llListFindList(g_lMenus, [iChan]);
if (~iMenuIndex)
{
key kMenuID = llList2Key(g_lMenus, iMenuIndex + 1);
key kAv = llList2Key(g_lMenus, iMenuIndex + 4);
string sPrompt = llList2String(g_lMenus, iMenuIndex + 5);
// SA: null strings should not be kept for dialog buttons
list items = llParseString2List(llList2String(g_lMenus, iMenuIndex + 6), ["|"], []);
list ubuttons = llParseString2List(llList2String(g_lMenus, iMenuIndex + 7), ["|"], []);
integer iPage = llList2Integer(g_lMenus, iMenuIndex + 8);
integer iDigits = llList2Integer(g_lMenus, iMenuIndex + 9);
integer iAuth = llList2Integer(g_lMenus, iMenuIndex + 10);
string sExtraInfo = llList2String(g_lMenus, iMenuIndex + 11);
RemoveMenuStride(iMenuIndex);
if (sMessage == MORE) Dialog(kID, sPrompt, items, ubuttons, ++iPage, kMenuID, iDigits, iAuth,sExtraInfo);
else if (sMessage == PREV) Dialog(kID, sPrompt, items, ubuttons, --iPage, kMenuID, iDigits, iAuth, sExtraInfo);
else if (sMessage == BLANK) Dialog(kID, sPrompt, items, ubuttons, iPage, kMenuID, iDigits, iAuth, sExtraInfo);
else {
string sAnswer;
integer iIndex = llListFindList(ubuttons, [sMessage]);
if (iDigits && !~iIndex)
{
integer iBIndex = (integer) llGetSubString(sMessage, 0, iDigits);
sAnswer = llList2String(items, iBIndex);
}
else sAnswer = sMessage;
if (llSubStringIndex(sExtraInfo,"getavi_|")==0){
//Debug("Getavi response:"+sAnswer);
list lExtraInfo=llParseString2List(sExtraInfo,["|"],[]); //unpack info for avi dialog
string REQ=llList2String(lExtraInfo,1); //name of script that originated the request
string TYPE=llList2String(lExtraInfo,2); //type string sent in initial request by calling script
llMessageLinked(LINK_THIS, FIND_AGENT, REQ+"|"+"getavi_"+"|"+(string)kAv+"|"+(string)iAuth+"|"+TYPE+"|"+sAnswer, kMenuID);
}
llMessageLinked(LINK_SET, DIALOG_RESPONSE, (string)kAv + "|" + sAnswer + "|" + (string)iPage + "|" + (string)iAuth, kMenuID);
}
}
}
timer()
{
CleanList();
//if list is empty after that, then stop timer
if (!llGetListLength(g_lMenus) && !llGetListLength(g_lSensorDetails))
{
//Debug("no active dialogs, stopping timer");
llSetTimerEvent(0.0);
}
}
changed(integer iChange){
if (iChange & CHANGED_OWNER) llResetScript();
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,300 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - garble //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//original by Joy Stipe
//OpenCollar MESSAGE MAP
// messages for authenticating users
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
//integer COMMAND_EVERYONE = 504;
//integer COMMAND_OBJECT = 506;
//integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510;
//integer COMMAND_BLACKLIST = 520;
//integer COMMAND_WEARERLOCKEDOUT = 521;
// messages for storing and retrieving values in the settings script
integer LM_SETTING_SAVE = 2000;
integer LM_SETTING_REQUEST = 2001;
integer LM_SETTING_RESPONSE = 2002;
integer LM_SETTING_DELETE = 2003;
integer LM_SETTING_EMPTY = 2004;
// messages for creating OC menu structure
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
// messages for RLV commands
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
string g_sParentMenu = "Apps";
string GARBLE = "☐ Garble";
string UNGARBLE = "☒ Garble";
string WEARERNAME;
string SAFE = "RED";
key g_kWearer;
string gsPref;
string gsFir;
integer giCRC;
integer giGL;
integer bOn;
integer g_iBinder;
key g_kBinder;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Notify(key _k, string _m, integer NotifyWearer)
{
if (_k == g_kWearer) llOwnerSay(_m);
else
{
if (llGetAgentSize(_k)) llRegionSayTo(_k, 0, _m);
else llInstantMessage(_k, _m);
if (NotifyWearer) llOwnerSay(_m);
}
}
string GetScriptID()
{
// strip away "OpenCollar - " leaving the script's individual name
list parts = llParseString2List(llGetScriptName(), ["-"], []);
return llStringTrim(llList2String(parts, 1), STRING_TRIM) + "_";
}
string PeelToken(string in, integer slot)
{
integer i = llSubStringIndex(in, "_");
if (!slot) return llGetSubString(in, 0, i);
return llGetSubString(in, i + 1, -1);
}
SetPrefix(string in)
{
if (in != "auto") gsPref = in;
else
{
string sName = llKey2Name(g_kWearer);
integer i = llSubStringIndex(sName, " ") + 1;
string init = llGetSubString(sName, 0, 0) + llGetSubString(sName, i, i);
gsPref = llToLower(init);
}
//Debug("Prefix set to: " + gsPref);
}
string garble(string _i)
{
// return punctuations unharmed
if (_i == "." || _i == "," || _i == ";" || _i == ":" || _i == "?") return _i;
if (_i == "!" || _i == " " || _i == "(" || _i == ")") return _i;
// phonetically garble letters that have a rather consistent sound through a gag
if (_i == "a" || _i == "e" || _i == "i" || _i == "o" || _i == "u" || _i == "y") return "eh";
if (_i == "c" || _i == "k" || _i == "q") return "k";
if (_i == "m") return "w";
if (_i == "s" || _i == "z") return "shh";
if (_i == "b" || _i == "p" || _i == "v") return "f";
if (_i == "x") return "ek";
// randomly garble everything else
if (llFloor(llFrand(10.0) < 1)) return _i;
return "nh";
}
bind(key _k, integer auth)
{
bOn = TRUE;
g_iBinder = auth;
g_kBinder = _k;
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + UNGARBLE, "");
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu + "|" + GARBLE, "");
llMessageLinked(LINK_SET, LM_SETTING_SAVE, GetScriptID() + "Binder=" + (string)_k + "," + (string)auth, "");
// Garbler only listen to the wearer, as a failsafe
giGL = llListen(giCRC, "", g_kWearer, "");
llMessageLinked(LINK_SET, RLV_CMD, "redirchat:" + (string)giCRC + "=add,chatshout=n,sendim=n", NULL_KEY);
if (llGetAgentSize(_k) != ZERO_VECTOR)
{
if (_k != g_kWearer) llOwnerSay(llKey2Name(_k) + " ordered you to be quiet");
Notify(_k, WEARERNAME + "'s speech is now garbled", FALSE);
}
llMessageLinked(LINK_THIS, auth, "menu "+g_sParentMenu, _k);
}
release(key _k ,integer auth)
{
bOn = g_iBinder = FALSE;
g_kBinder = NULL_KEY;
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + GARBLE, "");
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu + "|" + UNGARBLE, "");
llMessageLinked(LINK_SET, LM_SETTING_DELETE, GetScriptID() + "Binder", "");
llListenRemove(giGL);
llMessageLinked(LINK_SET, RLV_CMD, "chatshout=y,sendim=y,redirchat:" + (string)giCRC + "=rem", NULL_KEY);
if (llGetAgentSize(_k) != ZERO_VECTOR)
{
if (_k != g_kWearer) llOwnerSay("You are free to speak again");
Notify(_k, WEARERNAME + " is allowed to talk again", FALSE);
}
llMessageLinked(LINK_THIS, auth, "menu "+g_sParentMenu, _k);
}
integer UserCommand(integer iNum, string sStr, key kID)
{
if (iNum < COMMAND_OWNER || iNum > COMMAND_WEARER) return FALSE;
if (llToLower(sStr) == "settings")
{
if (bOn) Notify(kID, "Garbled.", FALSE);
else Notify(kID, "Not Garbled.", FALSE);
}
else if (sStr == "menu " + GARBLE || llToLower(sStr) == "garble on")
{
if (bOn && g_kBinder == kID) Notify(kID, "I can't garble 'er any more, Jim! She's only a subbie!", FALSE);
else if (iNum > g_iBinder) bind(kID, iNum);
}
else if (sStr == "menu " + UNGARBLE || llToLower(sStr) == "garble off")
{
if (iNum <= g_iBinder) release(kID,iNum);
else Notify(kID, "Sorry, " + llKey2Name(kID) + ", the garbler can only be released by someone with an equal or higher rank than the person who set it.", FALSE);
}
else return FALSE;
return TRUE;
}
default {
on_rez(integer _r) {
if (llGetOwner() != g_kWearer) llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
giCRC = llRound(llFrand(499) + 1);
if (bOn) release(g_kWearer,0);
llMessageLinked(LINK_THIS, LM_SETTING_REQUEST, "listener_safeword", "");
llMessageLinked(LINK_THIS, LM_SETTING_REQUEST, GetScriptID() + "Binder", "");
//Debug("Starting");
}
listen(integer _c, string _n, key _k, string _m)
{
if (_c == giCRC)
{
if (_k == g_kWearer)
{
string sw = _m;
integer i = llStringLength(WEARERNAME);
if (llGetSubString(sw, 0, 1) == "((" && llGetSubString(sw, -2, -1) == "))")
sw = llGetSubString(sw, 2, -3);
if (llSubStringIndex(sw, gsPref) == 0)
{
integer i = llStringLength(sw);
sw = llGetSubString(sw, i, -1);
}
if (sw == SAFE) // Wearer used the safeword
{
llMessageLinked(LINK_SET, COMMAND_SAFEWORD, "", "");
llOwnerSay("You used your safeword, your owner will be notified you did.");
return;
}
}
string sOut;
integer iL;
integer iR;
for (iL = 0; iL < llStringLength(_m); ++iL)
sOut += garble(llToLower(llGetSubString(_m, iL, iL)));
string sMe = llGetObjectName();
llSetObjectName("");
llWhisper(0, "/me " +WEARERNAME+" mumbles: " + sOut);
llSetObjectName(sMe);
return;
}
}
link_message(integer iL, integer iM, string sM, key kM)
{
if (UserCommand(iM, sM, kM)) return;
if (iM == MENUNAME_REQUEST && sM == g_sParentMenu)
{
if (bOn) llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + UNGARBLE, "");
else llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + GARBLE, "");
}
else if (iM == RLV_REFRESH)
{
if (bOn) llMessageLinked(LINK_SET, RLV_CMD, "redirchat:" + (string)giCRC + "=add,chatshout=n,sendim=n", NULL_KEY);
else llMessageLinked(LINK_SET, RLV_CMD, "chatshout=y,sendim=y,redirchat:" + (string)giCRC + "=rem", NULL_KEY);
}
else if (iM == RLV_CLEAR) release(kM,iL);
else if (iM == LM_SETTING_RESPONSE)
{
list lP = llParseString2List(sM, ["="], []);
string sT = llList2String(lP, 0);
string sV = llList2String(lP, 1);
if (sT == GetScriptID() + "Binder")
{
lP = llParseString2List(sV, [","], []);
g_kBinder = (key)llList2String(lP, 0);
g_iBinder = (integer)llList2String(lP, 1);
bind(g_kBinder, g_iBinder);
}
else if (sT == "listener_safeword") SAFE = sV;
else if (sT == "Global_prefix")
{
if (sV == "") sV = "auto";
SetPrefix(sV);
} else if (sT=="Global_WearerName") WEARERNAME=sV;
}
else if (iM == LM_SETTING_EMPTY && sM == GetScriptID() + "Binder") release(kM,iL);
else if (iM == LM_SETTING_SAVE) // Have to update the safeword if it is changed between resets
{
integer iS = llSubStringIndex(sM, "=");
string tok = llGetSubString(sM, 0, iS - 1);
string val = llGetSubString(sM, iS + 1, -1);
if (tok == "listener_safeword") SAFE = val;
else if (tok == "Global_prefix")
{
if (val == "") val = "auto";
SetPrefix(val);
}
}
if (iM == COMMAND_SAFEWORD) release(kM,iL);
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,540 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - hide //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//on getting menu request, give element menu
//on getting element type, give Hide and Show buttons
//on hearing "hide" or "show", do that for the current element type
string g_sParentMenu = "Appearance";
string g_sSubMenu = "Hide/Show";
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the httpdb
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer TOUCH_REQUEST = -9500;
integer TOUCH_CANCEL = -9501;
integer TOUCH_RESPONSE = -9502;
integer TOUCH_EXPIRE = -9503;
//5000 block is reserved for IM slaves
string CTYPE = "Collar";
string HIDE = "☒";
string SHOW = "☐";
string UPMENU = "BACK";
string g_sScript;
list g_lElements;
list g_lGlows; // 2-strided list [integer link_num, float glow]
key g_kWearer;
key g_kDialogID;
key g_kTouchID;
list g_lAlphaSettings;
string g_sIgnore = "nohide";
list g_lButtons;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
integer g_iAllAlpha = 1 ;
integer g_iHasElements = FALSE;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
string Float2String(float in)
{
string out = (string)in;
integer i = llSubStringIndex(out, ".");
while ((~i) && llStringLength(llGetSubString(out, i + 2, -1)) && llGetSubString(out, -1, -1) == "0")
{
out = llGetSubString(out, 0, -2);
}
return out;
}
key TouchRequest(key kRCPT, integer iTouchStart, integer iTouchEnd, integer iAuth)
{
key kID = llGenerateKey();
integer iFlags = 0;
if (iTouchStart) iFlags = iFlags | 0x01;
if (iTouchEnd) iFlags = iFlags | 0x02;
llMessageLinked(LINK_SET, TOUCH_REQUEST, (string)kRCPT + "|" + (string)iFlags + "|" + (string)iAuth, kID);
return kID;
}
UpdateElementAlpha(string element_to_set, integer iAlpha)
{
//loop through links, setting alpha if element type matches what we're changing
//root prim is 1, so start at 2
integer n;
integer iLinkCount = llGetNumberOfPrims();
for (n = 2; n <= iLinkCount; n++)
{
string sElement = ElementType(n);
if (sElement == element_to_set)
{
llSetLinkAlpha(n, (float)iAlpha, ALL_SIDES);
UpdateGlow(n,iAlpha);
}
}
}
SetAllElementsAlpha(integer iAlpha)
{
if(g_iAllAlpha == iAlpha) return ;
g_iAllAlpha = iAlpha ;
if(iAlpha == 0) // then hide all
{
SaveAllGlows(); // save all prims glows before
llSetLinkPrimitiveParamsFast(LINK_SET, [PRIM_GLOW, ALL_SIDES, 0.0]); // set all no glow
}
llSetLinkAlpha(LINK_SET, (float)iAlpha, ALL_SIDES);
if(iAlpha == 0) return ;
RestoreAllGlows();
//update alpha for all elements to fAlpha (either 1.0 or 0.0 here)
integer n;
integer iStop = llGetListLength(g_lElements);
for (n = 0; n < iStop; n++)
{
string sElement = llList2String(g_lElements, n);
integer iIndex = llListFindList(g_lAlphaSettings, [sElement]);
if(iIndex !=-1)
{
iAlpha = llList2Integer(g_lAlphaSettings, iIndex+1);
UpdateElementAlpha(sElement,iAlpha);
}
}
}
SetElementAlpha(string element_to_set, integer iAlpha)
{
if(g_iAllAlpha == 1)
{
//loop through links, setting alpha if element type matches what we're changing
//root prim is 1, so start at 2
integer n;
integer iLinkCount = llGetNumberOfPrims();
for (n = 2; n <= iLinkCount; n++)
{
string sElement = ElementType(n);
if (sElement == element_to_set)
{
llSetLinkAlpha(n, (float)iAlpha, ALL_SIDES);
UpdateGlow(n,iAlpha);
}
}
}
//update element in list of settings
integer i = llListFindList(g_lAlphaSettings, [element_to_set]);
if (i == -1) g_lAlphaSettings += [element_to_set, (string)iAlpha];
else g_lAlphaSettings = llListReplaceList(g_lAlphaSettings, [(string)iAlpha], i+1, i+1);
}
SaveElementAlpha(string element_to_set, integer iAlpha)
{
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+element_to_set + "=" + (string)iAlpha, "");
}
ElementMenu(key kAv, integer iAuth)
{
string sPrompt = "\nWhich element of the " + CTYPE + " would you like to hide or show?\n\n☒: element is shown\n☐: element is hidden\n\nChoose *Touch* if you want to select the part by directly clicking on the " + CTYPE + ".";
g_lButtons = [];
if (g_iAllAlpha) g_lButtons += HIDE + " " + CTYPE ;
else g_lButtons += SHOW + " " + CTYPE ;
//loop through elements, show appropriate buttons and prompts if hidden or shown
integer n;
integer iStop = llGetListLength(g_lElements);
for (n = 0; n < iStop; n++)
{
string sElement = llList2String(g_lElements, n);
integer iIndex = llListFindList(g_lAlphaSettings, [sElement]);
if (iIndex == -1)
{
g_lButtons += HIDE + " " + sElement;
}
else
{
integer iAlpha = llList2Integer(g_lAlphaSettings, iIndex + 1);
if (iAlpha) g_lButtons += HIDE + " " + sElement;
else g_lButtons += SHOW + " " + sElement;
}
}
g_kDialogID=Dialog(kAv, sPrompt, g_lButtons, ["*Touch*", UPMENU],0, iAuth);
}
string ElementType(integer link)
{
string sDesc = llStringTrim(llList2String(llGetLinkPrimitiveParams(link,[PRIM_DESC]),0),STRING_TRIM);
//each prim should have <elementname> in its description, plus "nohide", if you want the prim to
//not appear in the hede menu
if (sDesc == "" || sDesc == "(No Description)") return g_sIgnore ;
list lParams = llParseString2List(sDesc, ["~"], []);
if ( ~llListFindList(lParams,[g_sIgnore]) ) return g_sIgnore ;
else return llList2String(lParams, 0);
}
BuildElementList()
{
g_lElements = [];
integer link;
integer count = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (link = 2; link <= count; link++)
{
string sElement = ElementType(link);
if (llListFindList(g_lElements,[sElement])==-1 && sElement != g_sIgnore)
{
g_lElements += [sElement];
}
}
g_lElements = llListSort(g_lElements, 1, TRUE);
if (llGetListLength(g_lElements) > 0 ) g_iHasElements = TRUE;
else g_iHasElements = FALSE;
}
UpdateGlow(integer link, integer alpha)
{
if (alpha == 0)
{
SavePrimGlow(link);
llSetLinkPrimitiveParamsFast(link, [PRIM_GLOW, ALL_SIDES, 0.0]); // set no glow;
}
else RestorePrimGlow(link);
}
SavePrimGlow(integer link)
{
float glow = llList2Float(llGetLinkPrimitiveParams(link,[PRIM_GLOW,0]),0); // get current prim glow
integer i = llListFindList(g_lGlows,[link]); // search in list
if (glow > 0) // if glow
{
if (i !=-1) g_lGlows = llListReplaceList(g_lGlows,[glow],i+1,i+1); // update if present
else g_lGlows += [link, glow]; // add if absent
}
else if (i !=-1) g_lGlows = llDeleteSubList(g_lGlows,i,i+1); // remove if present
}
RestorePrimGlow(integer link)
{
integer i = llListFindList(g_lGlows,[link]);
if (i != -1) llSetLinkPrimitiveParamsFast(link, [PRIM_GLOW, ALL_SIDES, llList2Float(g_lGlows, i+1)]);
}
SaveAllGlows()
{
integer link;
integer count = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (link = 1; link < count; link++)
{
SavePrimGlow(link);
}
}
RestoreAllGlows()
{
integer link;
integer count = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (link = 1; link < count; link++)
{
RestorePrimGlow(link);
}
}
MakeOneButtonMenu()
{
if (g_iAllAlpha)
{
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu+"|"+HIDE+" Stealth", "");
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu+"|"+SHOW+" Stealth", "");
}
else
{
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu+"|"+SHOW+" Stealth", "");
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu+"|"+HIDE+" Stealth", "");
}
}
integer UserCommand(integer iNum, string sStr, key kID)
{
if (iNum > COMMAND_WEARER || iNum < COMMAND_OWNER) return FALSE; // sanity check
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
string sValue = llList2String(lParams, 1);
if (!g_iAppLock || iNum == COMMAND_OWNER) // if unlocked or Owner can do it
{
if (sStr == "menu " + g_sSubMenu || sStr == "hidemenu") ElementMenu(kID, iNum) ;
else if (sCommand == "hide")
{
if(sValue == "" || sValue == CTYPE)
{
SetAllElementsAlpha(0);
if (!g_iHasElements) MakeOneButtonMenu();
}
else
{
SetElementAlpha(sValue, 0);
SaveElementAlpha(sValue, 0);
}
}
else if (sCommand == "stealth")
{
if (g_iAllAlpha == 0) {
SetAllElementsAlpha(1);
}
else {
SetAllElementsAlpha(0);
}
}
else if (sCommand == "show")
{
if(sValue == "" || sValue == CTYPE)
{
SetAllElementsAlpha(1);
if (!g_iHasElements) MakeOneButtonMenu();
}
else
{
SetElementAlpha(sValue, 1);
SaveElementAlpha(sValue, 1);
}
}
else if (sStr == "menu "+HIDE+" Stealth")
{
SetAllElementsAlpha(1);
if (!g_iHasElements) MakeOneButtonMenu();
llMessageLinked(LINK_SET, iNum, "menu " + g_sParentMenu, kID);
}
else if (sStr == "menu "+SHOW+" Stealth")
{
SetAllElementsAlpha(0) ;
if (!g_iHasElements) MakeOneButtonMenu();
llMessageLinked(LINK_SET, iNum, "menu " + g_sParentMenu, kID);
}
}
else
{
if (sStr == "menu " + g_sSubMenu || sStr == "hidemenu" || sCommand == "hide" || sCommand == "show")
Notify(kID,"The appearance of the " + CTYPE + " is locked. You cannot access this menu now!", FALSE);
}
if (iNum == COMMAND_OWNER && sCommand == "lockappearance")
{
if (sValue == "0") g_iAppLock = FALSE;
else if (sValue == "1") g_iAppLock = TRUE;
}
else if (iNum == COMMAND_WEARER && sStr == "runaway")
{
SetAllElementsAlpha(1);
}
return TRUE ;
}
// Get Group or Token, 0=Group, 1=Token, 2=Value
string SplitTokenValue(string in, integer slot)
{
string out ;
if (slot==0) out = llGetSubString(in, 0, llSubStringIndex(in, "_") );
else if (slot==1) out = llGetSubString(in, llSubStringIndex(in, "_")+1, llSubStringIndex(in, "=")-1);
else if (slot==2) out = llGetSubString(in, llSubStringIndex(in, "=")+1, -1);
return out ;
}
default {
on_rez(integer iParam) {
g_iAllAlpha=0;
if (llGetAlpha(ALL_SIDES)>0) g_iAllAlpha=1;
if (!g_iHasElements) BuildElementList();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
BuildElementList();
g_sScript = "hide_";
g_kWearer = llGetOwner();
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (UserCommand(iNum, sStr, kID)) return;
else if (iNum == LM_SETTING_RESPONSE)
{
string sGroup = SplitTokenValue(sStr, 0);
string sToken = SplitTokenValue(sStr, 1);
string sValue = SplitTokenValue(sStr, 2);
if (sGroup == g_sScript)
{
SetElementAlpha(sToken, (integer)sValue);
}
else if (sGroup+sToken == g_sAppLockToken)
{
g_iAppLock = (integer)sValue;
}
else if (sGroup+sToken == "Global_CType") CTYPE = sValue;
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
if (g_iHasElements) llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
else MakeOneButtonMenu() ;
}
else if (iNum == DIALOG_RESPONSE)
{
if (kID==g_kDialogID)
{
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
//main menu
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
}
else if (sMessage == "*Touch*")
{
Notify(kAv, "Please touch the part of the " + CTYPE + " you want to hide or show. You can press ctr+alt+T to see invisible parts.", FALSE);
g_kTouchID = TouchRequest(kAv, TRUE, FALSE, iAuth);
}
else
{
//get "Hide" or "Show" and element name
list lParams = llParseString2List(sMessage, [" "], []);
string sCmd = llList2String(lParams, 0);
string sElement = llList2String(lParams, 1);
if (sCmd == HIDE ) sCmd = "hide";
else if (sCmd == SHOW ) sCmd = "show";
UserCommand(iAuth, sCmd + " " + sElement, kAv);
ElementMenu(kAv, iAuth);
}
}
}
else if (iNum == TOUCH_RESPONSE)
{
if (kID == g_kTouchID)
{
list lParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lParams, 0);
integer iAuth = (integer)llList2String(lParams, 1);
integer iLinkNumber = (integer)llList2String(lParams, 3);
string sElement = ElementType(iLinkNumber);
if (sElement != g_sIgnore)
{
integer iIndex = llListFindList(g_lAlphaSettings, [sElement]);
integer iAlpha;
if (iIndex == -1) iAlpha = 1; // assuming visible
else iAlpha = llList2Integer(g_lAlphaSettings, iIndex + 1);
Notify(kAv, "You selected \"" + sElement+"\". Toggling its transparency.", FALSE);
SetElementAlpha(sElement, !iAlpha);
SaveElementAlpha(sElement, !iAlpha);
}
else
{
Notify(kAv, "You selected a prim which is not hideable. You can try again.", FALSE);
}
ElementMenu(kAv, iAuth);
}
}
}
changed(integer change) {
if (change & CHANGED_LINK) BuildElementList();
if (change & CHANGED_OWNER) llResetScript();
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,692 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - label //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sParentMenu = "Apps";
string g_sSubMenu = "Label";
key g_kWearer;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
//opencollar MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the httpdb
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer g_iCharLimit = -1;
string UPMENU = "BACK";
string CTYPE = "collar";
string g_sTextMenu = "Set Label";
string g_sFontMenu = "Font";
string g_sColorMenu = "Color";
key g_kDialogID;
key g_kTBoxID;
key g_kFontID;
key g_kColorID;
list g_lColours=[
"Gray Shade",<0.70588, 0.70588, 0.70588>,
"Gold Shade",<0.69020, 0.61569, 0.43529>,
"Baby Pink",<1.00000, 0.52157, 0.76078>,
"Hot Pink",<1.00000, 0.05490, 0.72157>,
"Firefighter",<0.88627, 0.08627, 0.00392>,
"Flame",<0.92941, 0.43529, 0.00000>,
"Matrix",<0.07843, 1.00000, 0.07843>,
"Electricity",<0.00000, 0.46667, 0.92941>,
"Violet Wand",<0.63922, 0.00000, 0.78824>,
"Black",<0.00000, 0.00000, 0.00000>,
"White",<1.00000, 1.00000, 1.00000>
];
integer g_iScroll = FALSE;
integer g_iShow = TRUE;
vector g_vColor;
string g_sLabelText = "";
float g_iRotIncrement = 11.75;
// defaults for cylinders
vector g_vGridOffset;
vector g_vRepeats;
vector g_vOffset;
////////////////////////////////////////////
// Changed for the OpenColar label, only one face per prim on a cut cylinder,
// HEAVILY reduced to what we need, else functions removed for easier reading
// Lulu Pink 11/2008
//
// XyzzyText v2.1.UTF8 (UTF8-support) by Salahzar Stenvaag
// XyzzyText v2.1 Script (Set Line Color) by Huney Jewell
// XyzzyText v2.0 Script (5 Face, Single Texture)
//
// Heavily Modified by Thraxis Epsilon, Gigs Taggart 5/2007 and Strife Onizuka 8/2007
// Rewrite to allow one-script-per-object operation w/ optional slaves
// Enable prim-label functionality
// Enabled Banking
//
// Modified by Kermitt Quirk 19/01/2006
// To add support for 5 face prim instead of 3
//
// Core XyText Originally Written by Xylor Baysklef
//
//
////////////////////////////////////////////
/////////////// CONSTANTS ///////////////////
// XyText Message Map.
integer DISPLAY_STRING = 204000;
integer DISPLAY_EXTENDED = 204001;
integer REMAP_INDICES = 204002;
integer RESET_INDICES = 204003;
//integer SET_FADE_OPTIONS = 204004;
integer SET_FONT_TEXTURE = 204005;
//integer SET_LINE_COLOR = 204006;
//integer SET_COLOR = 204007;
integer RESCAN_LINKSET = 204008;
// This is an extended character escape sequence.
string ESCAPE_SEQUENCE = "\\e";
// This is used to get an index for the extended character.
string EXTENDED_INDEX = "12345";
// Face numbers.
// only one face needed. -1 lets setup function know that it hasn't run yet
integer FACE = -1;
// Used to hide the text after a fade-out.
//key TRANSPARENT = "701917a8-d614-471f-13dd-5f4644e36e3c";
//key null_key = NULL_KEY;
///////////// END CONSTANTS ////////////////
///////////// GLOBAL VARIABLES ///////////////
// This is the key of the font we are displaying.
//key gFontTexture = "b2e7394f-5e54-aa12-6e1c-ef327b6bed9e";
// 48 pixel font key g_kFontTexture = "f226766c-c5ac-690e-9018-5a37367ae95a";
// 38 pixel font
//key g_kFontTexture= "ac955f98-74bb-290f-7eb6-dca54e5e4491";
//key g_kFontTexture= "e5efeead-c69e-eb81-e7bd-dad2bb787d2b"; // Bitstream Vera Monotype // SALAHZAR
//key g_kFontTexture= "41b57e2d-e60b-01f0-8f23-e109f532d01d"; //oldEnglish Chars
//key g_kFontTexture = "0d3c99c1-5df4-638c-0f51-ed8591ae8b93"; //Bitstream Vera Serif
//key g_kFontTexture = "a37110e0-5a1f-810d-f999-d0b88568adf0"; //Apple Chancery
//key g_kFontTexture = "020f8783-0d0d-88e3-487d-df3e07d068e7"; //Lucida Bright
//key g_kFontTexture = "fa87184c-35ca-5143-fe24-cdf70e427a09"; // monotype Corsiva
//key g_kFontTexture = "34835ebf-b13a-a054-46bc-678d0849025c"; // DejaVu Sans Mono
//key g_kFontTexture = "316b2161-0669-1796-fec2-976526a29efd";//Andale Mono, Etched
//key g_kFontTexture = "f38c6993-d85e-cffb-fce9-7aed87b80c2e";//andale mono etched 45 point
//key g_kFontTexture = "bf2b6c21-e3d7-877b-15dc-ad666b6c14fe";//verily serif 40 etched, on white
key g_kFontTexture = NULL_KEY;
list g_lFonts = [
"Andale 1", "ccc5a5c9-6324-d8f8-e727-ced142c873da", //
"Andale 2", "8e10462f-f7e9-0387-d60b-622fa60aefbc", //not ideally aligned
"Serif 1", "2c1e3fa3-9bdb-2537-e50d-2deb6f2fa22c",
"Serif 2", "bf2b6c21-e3d7-877b-15dc-ad666b6c14fe",
"LCD", "014291dc-7fd5-4587-413a-0d690a991ae1"
];
// All displayable characters. Default to ASCII order.
string g_sCharIndex;
list g_lDecode=[]; // to handle special characters from CP850 page for european countries // SALAHZAR
string g_sScript;
/////////// END GLOBAL VARIABLES ////////////
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
ResetCharIndex() {
g_sCharIndex = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`";
g_sCharIndex += "abcdefghijklmnopqrstuvwxyz{|}~\n\n\n\n\n";
g_lDecode= [ "%C3%87", "%C3%BC", "%C3%A9", "%C3%A2", "%C3%A4", "%C3%A0", "%C3%A5", "%C3%A7", "%C3%AA", "%C3%AB" ];
g_lDecode+=[ "%C3%A8", "%C3%AF", "%C3%AE", "%C3%AC", "%C3%84", "%C3%85", "%C3%89", "%C3%A6", "%C3%AE", "xxxxxx" ];
g_lDecode+=[ "%C3%B6", "%C3%B2", "%C3%BB", "%C3%B9", "%C3%BF", "%C3%96", "%C3%9C", "%C2%A2", "%C2%A3", "%C2%A5" ];
g_lDecode+=[ "%E2%82%A7", "%C6%92", "%C3%A1", "%C3%AD", "%C3%B3", "%C3%BA", "%C3%B1", "%C3%91", "%C2%AA", "%C2%BA"];
g_lDecode+=[ "%C2%BF", "%E2%8C%90", "%C2%AC", "%C2%BD", "%C2%BC", "%C2%A1", "%C2%AB", "%C2%BB", "%CE%B1", "%C3%9F" ];
g_lDecode+=[ "%CE%93", "%CF%80", "%CE%A3", "%CF%83", "%C2%B5", "%CF%84", "%CE%A6", "%CE%98", "%CE%A9", "%CE%B4" ];
g_lDecode+=[ "%E2%88%9E", "%CF%86", "%CE%B5", "%E2%88%A9", "%E2%89%A1", "%C2%B1", "%E2%89%A5", "%E2%89%A4", "%E2%8C%A0", "%E2%8C%A1" ];
g_lDecode+=[ "%C3%B7", "%E2%89%88", "%C2%B0", "%E2%88%99", "%C2%B7", "%E2%88%9A", "%E2%81%BF", "%C2%B2", "%E2%82%AC", "" ];
// END // SALAHZAR
}
vector GetGridOffset(integer iIndex) {
// Calculate the offset needed to display this character.
integer iRow = iIndex / 10;
integer iCol = iIndex % 10;
// Return the offset in the texture.
return <g_vGridOffset.x + 0.1 * iCol, g_vGridOffset.y - 0.05 * iRow, g_vGridOffset.z>; // SALAHZAR modified vertical offsets for 512x1024 textures // Lulu modified for cut cylinders
// return <-0.725 + 0.1 * iCol, 0.472 - 0.05 * iRow, 0.0>;
}
//ShowChars(integer link,vector grkID_offset1, vector grkID_offset2, vector grkID_offset3, vector grkID_offset4, vector grkID_offset5)
ShowChars(integer link,vector grkID_offset)
{
// SALAHZAR modified .1 to .05 to handle different sized texture
float alpha = llList2Float(llGetLinkPrimitiveParams( link,[PRIM_COLOR,FACE]),1);
llSetLinkPrimitiveParamsFast( link,[
PRIM_TEXTURE, FACE, (string)g_kFontTexture, g_vRepeats, grkID_offset - g_vOffset, 0.0,
PRIM_COLOR, FACE, g_vColor, alpha]);
}
// SALAHZAR intelligent procedure to extract UTF-8 codes and convert to index in our "cp850"-like table
integer GetIndex(string sChar)
{
integer iRet=llSubStringIndex(g_sCharIndex, sChar);
if(iRet>=0) return iRet;
// special char do nice trick :)
string sEscaped=llEscapeURL(sChar);
integer iFound=llListFindList(g_lDecode, [sEscaped]);
// Return blank if not found
if(iFound<0) return 0;
// return correct index
return 100+iFound;
}
// END SALAHZAR
RenderString(integer iLink, string sStr)
{
if(iLink <= 0) return; // check for negative and zero linknumber
// Get the grid positions for each pair of characters.
vector GridOffset1 = GetGridOffset( GetIndex(llGetSubString(sStr, 0, 0)) ); // SALAHZAR intermediate function
// Use these grid positions to display the correct textures/offsets.
// ShowChars(iLink,GridOffset1, GridOffset2, GridOffset3, GridOffset4, GridOffset5);
ShowChars(iLink,GridOffset1);
}
integer ConvertIndex(integer iIndex) {
// This converts from an ASCII based index to our indexing scheme.
if (iIndex >= 32) // ' ' or higher
iIndex -= 32;
else { // index < 32
// Quick bounds check.
if (iIndex > 15)
iIndex = 15;
iIndex += 94; // extended characters
}
return iIndex;
}
/////END XYTEXT FUNCTIONS
// add for text scroll
float g_fScrollTime = 0.2 ;
integer g_iSctollPos ;
string g_sScrollText;
list g_lLabelLinks ;
// find all 'Label' prims, count and store it's link numbers for fast work SetLabel() and timer
integer LabelsCount()
{
integer ok = TRUE ;
g_lLabelLinks = [] ;
string sLabel;
list lTmp;
integer iLink;
integer iLinkCount = llGetNumberOfPrims();
//find all 'Label' prims and count it's
for(iLink=2; iLink <= iLinkCount; iLink++)
{
sLabel = llList2String(llGetLinkPrimitiveParams(iLink,[PRIM_NAME]),0);
lTmp = llParseString2List(sLabel, ["~"],[]);
sLabel = llList2String(lTmp,0);
if(sLabel == "Label")
{
g_lLabelLinks += [0]; // fill list witn nulls
//change prim description
llSetLinkPrimitiveParamsFast(iLink,[PRIM_DESC,"Label~notexture~nocolor~nohide"]);
}
}
g_iCharLimit = llGetListLength(g_lLabelLinks);
//find all 'Label' prims and store it's links to list
for(iLink=2; iLink <= iLinkCount; iLink++)
{
sLabel = llList2String(llGetLinkPrimitiveParams(iLink,[PRIM_NAME]),0);
lTmp = llParseString2List(sLabel, ["~"],[]);
sLabel = llList2String(lTmp,0);
if(sLabel == "Label")
{
integer iLabel = (integer)llList2String(lTmp,1);
integer link = llList2Integer(g_lLabelLinks,iLabel);
if(link == 0)
{
g_lLabelLinks = llListReplaceList(g_lLabelLinks,[iLink],iLabel,iLabel);
}
else
{
ok = FALSE;
llOwnerSay("Warning! Found duplicated label prims: "+sLabel+" with link numbers: "+(string)link+" and "+(string)iLink);
//llOwnerSay("Prims marked RED!");
//llSetLinkPrimitiveParamsFast(link, [PRIM_COLOR, 1, <1,0,0>, 1.0, PRIM_TEXTURE, 1, TEXTURE_BLANK, <1,1,1>, <0,0,0>, 0] );
//llSetLinkPrimitiveParamsFast(iLink, [PRIM_COLOR, 1, <1,0,0>, 1.0, PRIM_TEXTURE, 1, TEXTURE_BLANK, <1,1,1>, <0,0,0>, 0] );
}
}
}
return ok;
}
SetLabel()
{
string sText ;
if (g_iShow) sText = g_sLabelText;
string sPadding;
if(g_iScroll==TRUE) // || llStringLength(g_sLabelText) > g_iCharLimit)
{
// add some blanks
while(llStringLength(sPadding) < g_iCharLimit) sPadding += " ";
g_sScrollText = sPadding + sText;
llSetTimerEvent(g_fScrollTime);
//g_iScroll = TRUE;
}
else
{
g_sScrollText = "";
llSetTimerEvent(0);
//inlined single use CenterJustify function
while(llStringLength(sPadding + sText + sPadding) < g_iCharLimit) sPadding += " ";
string sText = sPadding + sText;
integer iCharPosition;
for(iCharPosition=0; iCharPosition < g_iCharLimit; iCharPosition++)
{
RenderString(llList2Integer(g_lLabelLinks, iCharPosition), llGetSubString(sText, iCharPosition, iCharPosition));
}
}
}
SetOffsets(key font)
{
// get 1-st link number from list
integer link = llList2Integer(g_lLabelLinks, 0);
// Compensate for label box-prims, which must use face 0. Others can be added as needed.
list params = llGetLinkPrimitiveParams(link, [PRIM_DESC, PRIM_TYPE]);
string desc = llGetSubString(llList2String(params, 0), 0, 4);
if (desc == "Label")
{
integer t = (integer)llList2String(params, 1);
if (t == PRIM_TYPE_BOX)
{
if (font == NULL_KEY) font = "bf2b6c21-e3d7-877b-15dc-ad666b6c14fe"; // LCD default for box
g_vGridOffset = <-0.45, 0.425, 0.0>;
g_vRepeats = <0.126, 0.097, 0>;
g_vOffset = <0.036, 0.028, 0>;
FACE = 0;
}
else if (t == PRIM_TYPE_CYLINDER)
{
if (font == NULL_KEY) font = "2c1e3fa3-9bdb-2537-e50d-2deb6f2fa22c"; // Serif default for cyl
g_vGridOffset = <-0.725, 0.425, 0.0>;
g_vRepeats = <1.434, 0.05, 0>;
g_vOffset = <0.037, 0.003, 0>;
FACE = 1;
}
integer o = llListFindList(g_lFonts, [(string)g_kFontTexture]);
integer n = llListFindList(g_lFonts, [(string)font]);
if (~o && o != n) // changing fonts - adjust for differences in font offsets
{
if (n < 8 && o == 9) g_vOffset.y += 0.0015;
else if (o < 8 && n == 9) g_vOffset.y -= 0.0015;
}
//Debug("Offset = " + (string)g_vOffset);
}
g_kFontTexture = font;
}
MainMenu(key kID, integer iAuth)
{
list lButtons= [g_sTextMenu, g_sColorMenu, g_sFontMenu];
if (g_iShow) lButtons += ["☒ Show"];
else lButtons += ["☐ Show"];
if (g_iScroll) lButtons += ["☒ Scroll"];
else lButtons += ["☐ Scroll"];
string sPrompt = "\nCustomize the " + CTYPE + "'s label!\n\nwww.opencollar.at/label";
g_kDialogID=Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
TextMenu(key kID, integer iAuth)
{
string sPrompt="\n- Submit the new label in the field below.\n- Submit a few spaces to clear the label.\n- Submit a blank field to go back to " + g_sSubMenu + ".\n\nwww.opencollar.at/label";
g_kTBoxID = Dialog(kID, sPrompt, [], [], 0, iAuth);
}
ColorMenu(key kID, integer iAuth)
{
string sPrompt = "\n\nSelect a colour from the list";
list lColourNames;
integer numColours=llGetListLength(g_lColours)/2;
while (numColours--)
{
lColourNames+=llList2String(g_lColours,numColours*2);
}
g_kColorID=Dialog(kID, sPrompt, lColourNames, [UPMENU], 0, iAuth);
}
FontMenu(key kID, integer iAuth)
{
list lButtons=llList2ListStrided(g_lFonts,0,-1,2);
string sPrompt = "\nSelect the font for the " + CTYPE + "'s label.\n\nNOTE: This feature requires a design with label prims. If the worn design doesn't have any of those, it is recommended to uninstall Label with the updater.\n\nwww.opencollar.at/label";
g_kFontID=Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
integer UserCommand(integer iAuth, string sStr, key kAv)
{
if (iAuth > COMMAND_WEARER || iAuth < COMMAND_OWNER) return FALSE; // sanity check
if (iAuth == COMMAND_OWNER || !g_iAppLock)
{
if (sStr == "menu " + g_sSubMenu || llToLower(sStr)=="label")
{
MainMenu(kAv, iAuth);
return TRUE;
}
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
if (sCommand == "lockappearance" && iAuth == COMMAND_OWNER)
{
if (llToLower(llList2String(lParams, 1)) == "0") g_iAppLock = FALSE;
else g_iAppLock = TRUE;
}
else if (sCommand == "labeltext")
{
lParams = llDeleteSubList(lParams, 0, 0);
g_sLabelText = llDumpList2String(lParams, " ");
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "text=" + g_sLabelText, "");
SetLabel();
}
else if (sCommand == "labelfont")
{
lParams = llDeleteSubList(lParams, 0, 0);
string font = llDumpList2String(lParams, " ");
integer iIndex = llListFindList(g_lFonts, [font]);
if (iIndex != -1)
{
SetOffsets((key)llList2String(g_lFonts, iIndex + 1));
SetLabel();
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "font=" + (string)g_kFontTexture, "");
}
else FontMenu(kAv, iAuth);
}
else if (sCommand == "labelcolor")
{
string sColour= llDumpList2String(llDeleteSubList(lParams,0,0)," ");
integer colourIndex=llListFindList(g_lColours,[sColour]);
if (~colourIndex)
{
g_vColor=(vector)llList2String(g_lColours,colourIndex+1);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"color="+(string)g_vColor, "");
SetLabel();
}
}
else if (sCommand == "labelshow")
{
g_iShow = llList2Integer(lParams, 1);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"show="+(string)g_iShow, "");
SetLabel();
}
else if (sCommand == "labelscroll")
{
g_iScroll = llList2Integer(lParams, 1);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"scroll="+(string)g_iScroll, "");
SetLabel();
}
}
else if ((iAuth >= COMMAND_SECOWNER && iAuth <= COMMAND_WEARER) && g_iAppLock)
{
string sCommand = llToLower(llList2String(llParseString2List(sStr, [" "], []), 0));
if (sStr=="menu "+g_sSubMenu)
{
llMessageLinked(LINK_SET, iAuth, "menu "+g_sParentMenu, kAv);
Notify(kAv,"Only owners can change the label!", FALSE);
}
else if (sCommand=="labeltext" || sCommand == "labelfont" || sCommand == "labelcolor" || sCommand == "labelshow")
{
Notify(kAv,"Only owners can change the label!", FALSE);
}
}
return TRUE;
}
default
{
on_rez(integer iNum) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "label_";
g_kWearer = llGetOwner();
integer ok = LabelsCount(); //first count the label prims.
SetOffsets(NULL_KEY);
ResetCharIndex(); // Initialize the character index.
if (g_iCharLimit <= 0) {
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu + "|" + g_sSubMenu, "");
llRemoveInventory(llGetScriptName());
}
g_sLabelText = llList2String(llParseString2List(llKey2Name(llGetOwner()), [" "], []), 0);
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if ( UserCommand(iNum, sStr, kID) ) {}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "text") g_sLabelText = sValue;
else if (sToken == "font") SetOffsets((key)sValue);
else if (sToken == "color") g_vColor = (vector)sValue;
else if (sToken == "show") g_iShow = (integer)sValue;
else if (sToken == "scroll") g_iScroll = (integer)sValue;
}
else if (sToken == g_sAppLockToken) g_iAppLock = (integer)sValue;
else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken == "settings" && sValue == "sent") SetLabel();
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == DIALOG_RESPONSE)
{
if (kID==g_kDialogID)
{
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU) llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
else if (sMessage == g_sTextMenu) TextMenu(kAv, iAuth);
else if (sMessage == g_sColorMenu) ColorMenu(kAv, iAuth);
else if (sMessage == g_sFontMenu) FontMenu(kAv, iAuth);
else if (sMessage == "☐ Show")
{
UserCommand(iAuth, "labelshow 1", kAv);
MainMenu(kAv, iAuth);
}
else if (sMessage == "☒ Show")
{
UserCommand(iAuth, "labelshow 0", kAv);
MainMenu(kAv, iAuth);
}
else if (sMessage == "☐ Scroll")
{
UserCommand(iAuth, "labelscroll 1", kAv);
MainMenu(kAv, iAuth);
}
else if (sMessage == "☒ Scroll")
{
UserCommand(iAuth, "labelscroll 0", kAv);
MainMenu(kAv, iAuth);
}
}
else if (kID == g_kColorID)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else
{
UserCommand(iAuth, "labelcolor "+sMessage, kAv);
ColorMenu(kAv, iAuth);
}
}
else if (kID == g_kFontID)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else
{
UserCommand(iAuth, "labelfont " + sMessage, kAv);
FontMenu(kAv, iAuth);
}
}
else if (kID == g_kTBoxID) // TextBox response, extract values
{
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage != "") UserCommand(iAuth, "labeltext " + sMessage, kAv);
llMessageLinked(LINK_ROOT, iAuth, "menu " + g_sSubMenu, kAv);
}
}
}
timer()
{
string sText = llGetSubString(g_sScrollText, g_iSctollPos, -1);
integer iCharPosition;
for(iCharPosition=0; iCharPosition < g_iCharLimit; iCharPosition++)
{
RenderString(llList2Integer(g_lLabelLinks, iCharPosition), llGetSubString(sText, iCharPosition, iCharPosition));
}
g_iSctollPos++;
if(g_iSctollPos > llStringLength(g_sScrollText)) g_iSctollPos = 0 ;
}
changed(integer change) {
if(change & CHANGED_LINK) // if links changed
{
if (LabelsCount()==TRUE) SetLabel();
}
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,820 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - leash //
// version 3.995.2 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// Oct. 18, 2008
// Nandana Singh, Lulu Pink, Garvin Twine, Joy Stipe
// ------ TOKEN DEFINITIONS ------
// ---- Immutable ----
// - Should be constant across collars, so not prefixed
// --- db tokens ---
string TOK_LENGTH = "leashlength";
string TOK_DEST = "leashedto"; // format: uuid,rank
// --- channel tokens ---
// - MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
//integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_SAFEWORD = 510;
integer POPUP_HELP = 1001;
// -- SETTINGS (whatever the actual backend)
// - Setting strings must be in the format: "token=value"
integer LM_SETTING_SAVE = 2000; // to have settings saved to httpdb
integer LM_SETTING_REQUEST = 2001; // send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002; // responses received on this channel
integer LM_SETTING_DELETE = 2003; // delete token from DB
integer LM_SETTING_EMPTY = 2004; // returned when a token has no value in the httpdb
// -- MENU/DIALOG
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
//integer DIALOG_TIMEOUT = -9002;
integer SENSORDIALOG = -9003;
integer COMMAND_PARTICLE = 20000;
integer COMMAND_LEASH_SENSOR = 20001;
// --- menu button tokens ---
string BUTTON_UPMENU = "BACK";
string BUTTON_PARENTMENU = "Main";
string BUTTON_SUBMENU = "Leash";
//string BUTTON_LEASH = "Grab";
//string BUTTON_LEASH_TO = "LeashTo";
//string BUTTON_FOLLOW = "Follow Me";
//string BUTTON_FOLLOW_MENU = "FollowTarget";
//string BUTTON_UNLEASH = "Unleash";
//string BUTTON_UNFOLLOW = "Unfollow";
//string BUTTON_STAY = "Stay";
//string BUTTON_UNSTAY = "UnStay";
//string BUTTON_ROT = "Rotate";
//string BUTTON_UNROT = "Don't Rotate";
//string BUTTON_LENGTH = "Length";
//string BUTTON_GIVE_HOLDER = "give Holder";
//string BUTTON_GIVE_POST = "give Post";
//string BUTTON_REZ_POST = "Rez Post";
//string BUTTON_POST = "Post";
//string BUTTON_YANK = "Yank";
// ---------------------------------------------
// ------ VARIABLE DEFINITIONS ------
// ----- menu -----
key g_kMenuUser;
key g_kMainDialogID;
key g_kSetLengthDialogID;
key g_kLeashTargetDialogID;
key g_kFollowTargetDialogID;
key g_kPostTargetDialogID;
key g_kPostMenuDialogID;
list g_lDialogs; //tracks dialogs generated. 2 strided, key, type
list g_lButtons; //buttons added by other scripts
// ----- collar -----
key g_kWearer;
integer g_iJustMoved;
// ----- leash -----
integer g_iLength = 3;
integer g_iStay = FALSE;
integer g_iTargetHandle;
integer g_iLastRank;
integer g_iStayRank;
vector g_vPos = ZERO_VECTOR;
string g_sTmpName;
key g_kCmdGiver;
key g_kLeashedTo = NULL_KEY;
integer g_bLeashedToAvi;
integer g_bFollowMode;
string g_sScript="leash_";
string CTYPE = "collar";
string WEARERNAME;
integer g_iRezAuth;
string g_sCheck;
//realleash variables
integer g_iStrictModeOn=FALSE; //default is Real-Leash OFF
integer g_iLeasherInRange=FALSE; //
integer g_iRLVOn=FALSE; // To store if RLV was enabled in the collar
integer g_iAwayCounter=0;
list g_lRestrictionNames= ["fartouch","sittp","tplm","tplure","tploc"];
string RLV_STRING = "rlvmain_on";
string OWNER_STRING = "auth_owner";
// ---------------------------------------------
// ------ FUNCTION DEFINITIONS ------
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth){
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer){
if (kID == g_kWearer) llOwnerSay(sMsg);
else{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
integer CheckCommandAuth(key kCmdGiver, integer iAuth){
// Check for invalid auth
if (iAuth < COMMAND_OWNER || iAuth > COMMAND_WEARER) return FALSE;
// If leashed, only move leash if Comm Giver outranks current leasher
if (g_kLeashedTo != NULL_KEY && iAuth > g_iLastRank){
Notify(kCmdGiver, "Sorry, someone who outranks you on " + WEARERNAME +"'s " + CTYPE + " leashed " + WEARERNAME + " already.", FALSE);
return FALSE;
}
return TRUE;
}
SetLength(integer iIn){
g_iLength = iIn;
// llTarget needs to be changed to the new length if leashed
if(g_kLeashedTo){
llTargetRemove(g_iTargetHandle);
g_iTargetHandle = llTarget(g_vPos, g_iLength);
}
}
ApplyRestrictions(){
//Debug("Applying Restrictions");
if (g_iLeasherInRange){
if (g_iStrictModeOn){
if (g_kLeashedTo){
//Debug("Setting restrictions");
llMessageLinked(LINK_SET, RLV_CMD, "fartouch=n,sittp=n,tplm=n,tplure=n,tploc=n,tplure:" + (string) g_kLeashedTo + "=add", "realleash"); //set all restrictions
return;
}
//} else {
//Debug("Strict is off");
}
//} else {
//Debug("Leasher out of range");
}
//Debug("Releasing restrictions");
llMessageLinked(LINK_SET, RLV_CMD, "clear", "realleash"); //release all restrictions
}
// Wrapper for DoLeash with notifications
integer LeashTo(key kTarget, key kCmdGiver, integer iAuth, list lPoints, integer iFollowMode){
// can't leash wearer to self.
if (kTarget == g_kWearer) return FALSE;
if (!CheckCommandAuth(kCmdGiver, iAuth)){
return FALSE;
}
if (g_kLeashedTo==kTarget) return TRUE;
if (g_kLeashedTo){
DoUnleash();
}
integer bCmdGiverIsAvi=llGetAgentSize(kCmdGiver) != ZERO_VECTOR;
integer bTargetIsAvi=llGetAgentSize(kTarget) != ZERO_VECTOR;
// Send notices to wearer, leasher, and target
// Only send notices if Leasher is an AV, as objects normally handle their own messages for such things
if (bCmdGiverIsAvi) {
string sTarget = llGetDisplayName(kTarget);
if (sTarget == "???" || sTarget == "") sTarget = llKey2Name(kTarget);
string sCmdGiver = llGetDisplayName(kCmdGiver);
if (sCmdGiver == "???" || sCmdGiver == "") sCmdGiver = llKey2Name(kCmdGiver);
string sWearMess;
if (kCmdGiver == g_kWearer) {// Wearer is Leasher
if (iFollowMode){
sWearMess = "You begin following " + sTarget + ".";
} else {
//sCmdMess = ""; // Only one message will need to be sent
sWearMess = "You take your leash";
if (bTargetIsAvi) { // leashing self to someone else
sWearMess += ", and hand it to " + sTarget + ".";
} else { // leashing self to an object
sWearMess += ", and tie it to " + sTarget + ".";
}
}
} else {// Leasher is not Wearer
string sCmdMess;
if (iFollowMode){
if (kCmdGiver != kTarget) { // LeashTo someone else
Notify(kTarget, sCmdGiver + " commands " + WEARERNAME + " to follow you.", FALSE);
sCmdMess= "You command " + WEARERNAME + " to follow " + sTarget + ".";
sWearMess = sCmdGiver + " commands you to follow " + sTarget + ".";
} else {
sCmdMess= "You command " + WEARERNAME + " to follow you.";
sWearMess = sCmdGiver + " commands you to follow them.";
}
} else {
string sPsv = "'s"; // Possessive, will vary if name ends in "s"
if (llGetSubString(WEARERNAME, -1,-1)=="s") sPsv = "'";
sCmdMess= "You grab " + WEARERNAME + sPsv + " leash";
sWearMess = sCmdGiver + " grabs your leash";
if (kCmdGiver != kTarget) { // Leasher is not LeashTo
if (bTargetIsAvi) { // LeashTo someone else
sCmdMess += ", and hand it to " + sTarget + ".";
sWearMess += ", and hands it to " + sTarget + ".";
Notify(kTarget, sCmdGiver + " hands you " + WEARERNAME + sPsv + " leash.", FALSE);
} else {// LeashTo object
sCmdMess += ", and tie it to " + sTarget + ".";
sWearMess += ", and ties it to " + sTarget + ".";
}
}
}
Notify(kCmdGiver, sCmdMess, FALSE);
}
llOwnerSay(sWearMess);
}
g_bFollowMode = iFollowMode; // leashing, or following
if (bTargetIsAvi) g_bLeashedToAvi = TRUE;
if (llGetOwnerKey(kCmdGiver)==g_kWearer) iAuth=COMMAND_WEARER; //prevents owner-wearer with public access creating an unbreakable leash to an unwilling participant
DoLeash(kTarget, iAuth, lPoints);
// Notify Target how to unleash, only if:
// Avatar
// Didn't send the command
// Don't own the object that sent the command
if (g_bLeashedToAvi && kCmdGiver != kTarget && llGetOwnerKey(kCmdGiver) != kTarget) {
if (iFollowMode){
llMessageLinked(LINK_SET, POPUP_HELP, WEARERNAME + " has been commanded to follow you. Say \"_PREFIX_unfollow\" to relase them.", g_kLeashedTo);
} else {
llMessageLinked(LINK_SET, POPUP_HELP, WEARERNAME + " has been leashed to you. Say \"_PREFIX_unleash\" to unleash them. Say \"_PREFIX_giveholder\" to get a leash holder.", g_kLeashedTo);
}
}
return TRUE;
}
DoLeash(key kTarget, integer iAuth, list lPoints){
g_iLastRank = iAuth;
g_kLeashedTo = kTarget;
if (g_bFollowMode) {
llMessageLinked(LINK_THIS, COMMAND_PARTICLE, "unleash", g_kLeashedTo);
} else {
integer iPointCount = llGetListLength(lPoints);
g_sCheck = "";
if (iPointCount) {//if more than one leashpoint, listen for all strings, else listen just for that point
if (iPointCount == 1) g_sCheck = (string)llGetOwnerKey(kTarget) + llList2String(lPoints, 0) + " ok";
}
//Send link message to the particle script
//Debug("leashing with "+g_sCheck);
llMessageLinked(LINK_THIS, COMMAND_PARTICLE, "leash" + g_sCheck + "|" + (string)g_bLeashedToAvi, g_kLeashedTo);
llSetTimerEvent(3.0); //check for leasher out of range
}
// change to llTarget events by Lulu Pink
g_vPos = llList2Vector(llGetObjectDetails(g_kLeashedTo, [OBJECT_POS]), 0);
//to prevent multiple target events and llMoveToTargets
llTargetRemove(g_iTargetHandle);
llStopMoveToTarget();
g_iTargetHandle = llTarget(g_vPos, (float)g_iLength);
if (g_vPos != ZERO_VECTOR) {
llMoveToTarget(g_vPos, 0.7);
}
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + TOK_DEST + "=" + (string)kTarget + "," + (string)iAuth + "," + (string)g_bLeashedToAvi + "," + (string)g_bFollowMode, "");
g_iLeasherInRange=TRUE;
ApplyRestrictions();
}
// Wrapper for DoUnleash()
Unleash(key kCmdGiver)
{
string sTarget = llGetDisplayName(g_kLeashedTo);
if (sTarget == "???" || sTarget == "") sTarget = llKey2Name(g_kLeashedTo);
if ( osIsUUID(g_kLeashedTo) ){
string sCmdGiver = llGetDisplayName(kCmdGiver);
if (sCmdGiver == "???" || sCmdGiver == "") sCmdGiver = llKey2Name(kCmdGiver);
string sWearMess;
string sCmdMess;
string sTargetMess;
integer bCmdGiverIsAvi=llGetAgentSize(kCmdGiver) != ZERO_VECTOR;
if (bCmdGiverIsAvi) {
if (kCmdGiver == g_kWearer) // Wearer is Leasher
{
if (g_bFollowMode) {
sWearMess = "You stop following " + sTarget + ".";
sTargetMess = WEARERNAME + " stops following you.";
} else {
sWearMess = "You unleash yourself from " + sTarget + "."; // sTarget might be an object
sTargetMess = WEARERNAME + " unleashes from you.";
}
if (g_bLeashedToAvi) Notify(g_kLeashedTo, sTargetMess, FALSE);
} else { // Unleasher is not Wearer
if (kCmdGiver == g_kLeashedTo) {
if (g_bFollowMode) {
sCmdMess= "You release " + WEARERNAME + " from following you.";
sWearMess = sCmdGiver + " releases you from following.";
} else {
sCmdMess= "You unleash " + WEARERNAME + ".";
sWearMess = sCmdGiver + " unleashes you.";
}
} else {
if (g_bFollowMode) {
sCmdMess= "You release " + WEARERNAME + " from following " + sTarget + ".";
sWearMess = sCmdGiver + " releases you from following " + sTarget + ".";
sTargetMess = WEARERNAME + " stops following you.";
} else {
sCmdMess= "You unleash " + WEARERNAME + " from " + sTarget + ".";
sWearMess = sCmdGiver + " unleashes you from " + sTarget + ".";
sTargetMess = sCmdGiver + " unleashes " + WEARERNAME + " from you.";
}
if (g_bLeashedToAvi) Notify(g_kLeashedTo, sTargetMess, FALSE);
}
Notify(kCmdGiver, sCmdMess, FALSE);
}
llOwnerSay(sWearMess);
}
DoUnleash();
} else {
Notify(kCmdGiver, WEARERNAME+" is not leashed", FALSE);
}
}
DoUnleash(){
llTargetRemove(g_iTargetHandle);
llStopMoveToTarget();
llMessageLinked(LINK_SET, COMMAND_PARTICLE, "unleash", g_kLeashedTo);
g_kLeashedTo = NULL_KEY;
g_iLastRank = COMMAND_EVERYONE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + TOK_DEST, "");
llSetTimerEvent(0.0); //stop checking for leasher out of range
g_iLeasherInRange=FALSE;
ApplyRestrictions();
}
YankTo(key kIn){
llMoveToTarget(llList2Vector(llGetObjectDetails(kIn, [OBJECT_POS]), 0), 0.5);
llSleep(2.0);
llStopMoveToTarget();
}
integer UserCommand(integer iAuth, string sMessage, key kMessageID, integer bFromMenu){
//Debug("Got user comand:\niAuth: "+(string)iAuth+"\nsMessage: "+sMessage+"\nkMessageID: "+(string)kMessageID+"\nbFromMenu: "+(string)bFromMenu);
if (iAuth >= COMMAND_OWNER && iAuth <= COMMAND_WEARER) {
g_kCmdGiver = kMessageID;
list lParam = llParseString2List(sMessage, [" "], []);
string sComm = llToLower(llList2String(lParam, 0));
string sVal = llToLower(llList2String(lParam, 1));
string sVal2= llList2String(lParam, 2);
sMessage = llToLower(sMessage); //convert sMessage to lower case for caseless comparisson
//debug(sMessage);
if (sMessage=="leashmenu" || sMessage == "menu leash"){
list lButtons;
if (g_iStrictModeOn==TRUE) {
lButtons += "Strict ☒";
} else {
lButtons += "Strict ☐";
}
if (kMessageID != g_kWearer) lButtons += "Grab";// Only if not the wearer.
else lButtons += [" "];
if (g_kLeashedTo != NULL_KEY) {
if (g_bFollowMode) lButtons += ["Unfollow"];
else lButtons += ["Unleash"];
}
else lButtons += " ";
lButtons += ["LeashTo","Post"];
//lButtons += ["give Post"];
if (kMessageID == g_kLeashedTo) lButtons += "Yank";//only if leash holder
else lButtons += " ";
lButtons += ["FollowTarget"];
if (g_iStay) lButtons += ["UnStay"];
else lButtons += ["Stay"];
lButtons += ["give Holder"];
lButtons += ["Length"];
lButtons += g_lButtons;
string sPrompt = "\nLet's go walkies!\n\nwww.opencollar.at/leash";
g_kMainDialogID = Dialog(kMessageID, sPrompt, lButtons, [BUTTON_UPMENU], 0, iAuth);
} else if (sComm == "post") {
if (sComm == "post" && !bFromMenu) UserCommand(iAuth, "find"+sMessage, kMessageID ,bFromMenu); //hack to keep old chat comand behaviour
else if (sVal==llToLower(BUTTON_UPMENU)){
UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else if (sMessage == "post give post") {
UserCommand(iAuth, "givepost", kMessageID ,bFromMenu);
} else if (sMessage == "post rez post") {
UserCommand(iAuth, "rezpost", kMessageID ,bFromMenu);
} else if (sMessage == "post find post") {
UserCommand(iAuth, "findpost", kMessageID ,bFromMenu);
} else {
g_kPostMenuDialogID = Dialog(kMessageID, "\n\nPost Options:", ["Find Post", "Rez Post", "give Post"], [BUTTON_UPMENU], 0, iAuth);
}
} else if (sMessage == "grab" || sMessage == "leash" || (sMessage == "toggleleash" && NULL_KEY == g_kLeashedTo)) {
LeashTo(kMessageID, kMessageID, iAuth, ["handle"], FALSE);
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else if(sComm == "follow" || sComm == "followtarget") {
//Debug("Got a follow command:"+sMessage);
if (!CheckCommandAuth(kMessageID, iAuth)) return TRUE;
if (sVal==llToLower(BUTTON_UPMENU)){
UserCommand(iAuth, "leash", kMessageID ,bFromMenu);
} else if (sVal == ""){
g_kFollowTargetDialogID=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|Who shall be followed?|0|``"+(string)AGENT+"`10`"+(string)PI + "|BACK|" + (string)iAuth, g_kFollowTargetDialogID);
} else if (sVal == "me") {
LeashTo(kMessageID, kMessageID, iAuth, [], TRUE);
} else if (osIsUUID(sVal)) {
LeashTo((key)sVal, kMessageID, iAuth, [], TRUE);
//no remenu to leash menu
//if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else {
g_kFollowTargetDialogID=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|Who shall be followed?|0|``"+(string)AGENT+"`10`"+(string)PI +"`"+sVal+"`1|BACK|" + (string)iAuth, g_kFollowTargetDialogID);
}
} else if (sMessage == "runaway" && iAuth == COMMAND_OWNER) Unleash(kMessageID);
else if (sMessage == "unleash" || sMessage == "unfollow" || (sMessage == "toggleleash" && NULL_KEY != g_kLeashedTo)) {
if (CheckCommandAuth(kMessageID, iAuth)) Unleash(kMessageID);
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else if (sMessage == "giveholder" || sMessage == "give holder") {
llGiveInventory(kMessageID, "Leash Holder");
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else if (sMessage == "givepost" || sMessage == "give post") {
llGiveInventory(kMessageID, "Leash Post");
if (bFromMenu) UserCommand(iAuth, "post", kMessageID ,bFromMenu);
} else if (sMessage == "rezpost" || sMessage == "rez post") {
g_iRezAuth=iAuth;
llRezObject("Leash Post", llGetPos() + (<0.1, 0.0, 0.37> * llGetRot()), ZERO_VECTOR, llEuler2Rot(<0, 90, 270> * DEG_TO_RAD), 0);
if (bFromMenu) UserCommand(iAuth, "post", kMessageID ,bFromMenu);
} else if (sMessage == "yank" && kMessageID == g_kLeashedTo) {
//Person holding the leash can yank.
if(llGetAgentInfo(g_kWearer)&AGENT_SITTING) llMessageLinked(LINK_SET, RLV_CMD, "unsit=force", "realleash");
YankTo(kMessageID);
} else if (sMessage == "beckon" && iAuth == COMMAND_OWNER) {
//Owner can beckon
YankTo(kMessageID);
} else if (sMessage == "stay") {
if (iAuth <= COMMAND_GROUP) {
g_iStayRank = iAuth;
g_iStay = TRUE;
string sCmdGiver = llGetDisplayName(kMessageID);
if (sCmdGiver == "???" | sCmdGiver == "") sCmdGiver = llKey2Name(kMessageID);
llRequestPermissions(g_kWearer, PERMISSION_TAKE_CONTROLS);
llOwnerSay(sCmdGiver + " commanded you to stay in place, you cannot move until the command is revoked again.");
Notify(kMessageID, "You commanded " + WEARERNAME + " to stay in place. Either leash the slave with the grab command or use \"unstay\" to enable movement again.", FALSE);
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
}
} else if ((sMessage == "unstay" || sMessage == "move") && g_iStay) {
if (iAuth <= g_iStayRank) {
g_iStay = FALSE;
llReleaseControls();
llOwnerSay("You are free to move again.");
Notify(kMessageID,"You allowed " + WEARERNAME + " to move freely again.", FALSE);
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
}
} else if (sMessage == "strict on" || sMessage == "strict ☐") {
g_iStrictModeOn=TRUE;
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + "strict=1", "");
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, TOK_DEST, ""); //query current leasher, the response will trigger ApplyRestrictions
Notify(kMessageID,"Strict leashing enabled.",TRUE);
ApplyRestrictions();
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else if (sMessage == "strict off" || sMessage == "strict ☒") {
if (g_kLeashedTo) {
Notify(kMessageID, "You can't disable Strict Mode while leashed.",FALSE);
} else {
g_iStrictModeOn=FALSE;
llMessageLinked(LINK_THIS, LM_SETTING_DELETE, g_sScript + "strict", "");
ApplyRestrictions();
Notify(kMessageID,"Strict leashing disabled.",FALSE);
}
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else if (sComm == "leashto") {
if (!CheckCommandAuth(kMessageID, iAuth)) return TRUE;
if (sVal==llToLower(BUTTON_UPMENU)){
UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
} else if (sVal == "") {
g_kLeashTargetDialogID=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|Who shall we leash to?|0|``"+(string)AGENT+"`10`"+(string)PI + "|BACK|" + (string)iAuth, g_kLeashTargetDialogID);
} else if(osIsUUID(sVal)) {
list lPoints;
if (llGetListLength(lParam) > 2) lPoints = llList2List(lParam, 2, -1);
//debug("leash target is key");//could be a post, or could be we specified an av key
LeashTo((key)sVal, kMessageID, iAuth, lPoints, FALSE);
//remenu to sensor dialog
//if (bFromMenu) UserCommand(iAuth, "leashto", kMessageID ,bFromMenu);
} else {
g_kLeashTargetDialogID=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|Who shall we leash to?|0|``"+(string)AGENT+"`10`"+(string)PI +"`"+sVal+"`1|BACK|" + (string)iAuth, g_kLeashTargetDialogID);
}
} else if (sComm == "length") {
integer iNewLength = (integer)sVal;
if (sVal==llToLower(BUTTON_UPMENU)){
UserCommand(iAuth, "leash", kMessageID ,bFromMenu);
} else if(iNewLength > 0 && iNewLength <= 30){
//Person holding the leash can always set length.
if (kMessageID == g_kLeashedTo || CheckCommandAuth(kMessageID, iAuth))
{
SetLength(iNewLength);
//tell wearer
Notify(kMessageID, "Leash length set to " + (string)g_iLength+"m.", TRUE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + TOK_LENGTH + "=" + sVal, "");
}
if (bFromMenu) UserCommand(iAuth, "leashmenu", kMessageID ,bFromMenu);
}
else { //no value given, or value out of range, must be from chat, give menu
Notify(kMessageID, "The current leash length is " + (string)g_iLength + "m.", TRUE);
//LengthMenu(kMessageID,iAuth);
g_kSetLengthDialogID = Dialog(kMessageID, "\n\nSet a leash length in meter:\nCurrent length is: " + (string)g_iLength + "m", ["1", "2", "3", "4", "5", "8","10" , "15", "20", "25", "30"], [BUTTON_UPMENU], 0, iAuth);
}
} else if (sComm == "findpost" || sMessage == "find post") {
if (!CheckCommandAuth(kMessageID, iAuth)) {
if (bFromMenu) UserCommand(iAuth, "post", kMessageID ,bFromMenu);
return TRUE;
}
if (sVal==llToLower(BUTTON_UPMENU)){
UserCommand(iAuth, "post", kMessageID ,bFromMenu);
} else if (sVal == ""){// no parameters were passed
g_kPostTargetDialogID=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|\n\nWhat's going to serve us as a post? If the desired object isn't on the list, please try moving closer.\n|0|``"+(string)(PASSIVE | ACTIVE)+"`10`"+(string)PI + "|BACK|" + (string)iAuth, g_kPostTargetDialogID);
} else if(osIsUUID(sVal)) {
list lPoints;
if (llGetListLength(lParam) > 2) lPoints = llList2List(lParam, 2, -1);
//debug("leash target is key");//could be a post, or could be we specified an av key
if (bFromMenu) UserCommand(iAuth, "findpost", kMessageID ,bFromMenu);
LeashTo((key)sVal, kMessageID, iAuth, lPoints, FALSE);
} else {
g_kPostTargetDialogID=llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)g_kCmdGiver + "|chatmode|0|``"+(string)(PASSIVE | ACTIVE)+"`10`"+(string)PI +"`"+sVal+"`1|BACK|" + (string)iAuth, g_kPostTargetDialogID);
}
}
} else if (iAuth == COMMAND_EVERYONE) {
if (kMessageID == g_kLeashedTo) {
sMessage = llToLower(sMessage);
if (sMessage == "unleash" || sMessage == "unfollow" || (sMessage == "toggleleash" && NULL_KEY != g_kLeashedTo)) Unleash(kMessageID);
else if (sMessage == "giveholder") llGiveInventory(kMessageID, "Leash Holder");
else if (sMessage == "yank") YankTo(kMessageID);
}
} else return FALSE;
return TRUE;
}
default {
on_rez(integer start_param) {
DoUnleash();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
DoUnleash();
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, RLV_STRING, "");
//Debug("Starting");
}
timer() {
//inlined old isInSimOrJustOutside function
vector vLeashedToPos=llList2Vector(llGetObjectDetails(g_kLeashedTo,[OBJECT_POS]),0);
integer iIsInSimOrJustOutside=TRUE;
if(vLeashedToPos == ZERO_VECTOR || vLeashedToPos.x < -25 || vLeashedToPos.x > 280 || vLeashedToPos.y < -25 || vLeashedToPos.y > 280) iIsInSimOrJustOutside=FALSE;
if (iIsInSimOrJustOutside && llVecDist(llGetPos(),vLeashedToPos)<60) //if the leasher is now in range
{
if(!g_iLeasherInRange) //and the leasher was previously not in range
{
if (g_iAwayCounter)
{
g_iAwayCounter = 0;
llSetTimerEvent(3.0);
}
//Debug("leashing with "+g_sCheck);
llMessageLinked(LINK_THIS, COMMAND_PARTICLE, "leash" + g_sCheck + "|" + (string)g_bLeashedToAvi, g_kLeashedTo);
g_iLeasherInRange = TRUE;
llTargetRemove(g_iTargetHandle);
g_vPos = vLeashedToPos;
g_iTargetHandle = llTarget(g_vPos, (float)g_iLength);
if (g_vPos != ZERO_VECTOR) llMoveToTarget(g_vPos, 0.7);
ApplyRestrictions();
}
}
else //the leasher is not now in range
{
if(g_iLeasherInRange) //but was a short while ago
{
if (g_iAwayCounter > 3)
{
llTargetRemove(g_iTargetHandle);
llStopMoveToTarget();
llMessageLinked(LINK_THIS, COMMAND_PARTICLE, "unleash", g_kLeashedTo);
g_iLeasherInRange=FALSE;
ApplyRestrictions();
}
}
g_iAwayCounter++; //+1 every 3 secs
if (g_iAwayCounter > 200) //3mins 20 secs
{//slow down the sensor:
g_iAwayCounter = 1;
llSetTimerEvent(11.0);
}
}
}
link_message(integer iPrim, integer iNum, string sMessage, key kMessageID){
if (UserCommand(iNum, sMessage, kMessageID, FALSE)) return;
else if (iNum == MENUNAME_REQUEST && sMessage == BUTTON_PARENTMENU) {
//llMessageLinked(LINK_SET, MENUNAME_RESPONSE, BUTTON_PARENTMENU + "|" + BUTTON_SUBMENU, "");
g_lButtons = [] ; // flush submenu buttons
llMessageLinked(LINK_SET, MENUNAME_REQUEST, BUTTON_SUBMENU, "");
} else if (iNum == MENUNAME_RESPONSE) {
list lParts = llParseString2List(sMessage, ["|"], []);
if (llList2String(lParts, 0) == BUTTON_SUBMENU) {//someone wants to stick something in our menu
string button = llList2String(lParts, 1);
if (llListFindList(g_lButtons, [button]) == -1) {
g_lButtons = llListSort(g_lButtons + [button], 1, TRUE);
}
}
} else if (iNum == COMMAND_SAFEWORD) {
g_iStay = FALSE;
llReleaseControls();
DoUnleash();
} else if (iNum == LM_SETTING_RESPONSE) {
integer iInd = llSubStringIndex(sMessage, "=");
string sToken = llGetSubString(sMessage, 0, iInd -1);
string sValue = llGetSubString(sMessage, iInd + 1, -1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript) {
//Debug("got Leash settings:"+sMessage);
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == TOK_DEST) {
//we got the last leasher's id and rank from the local settings
list lParam = llParseString2List(llGetSubString(sMessage, iInd + 1, -1), [","], []);
key kTarget = (key)llList2String(lParam, 0);
g_bLeashedToAvi = (integer)llList2String(lParam, 2);
g_bFollowMode = (integer)llList2String(lParam, 3);
list lPoints;
if (g_bLeashedToAvi) lPoints = ["collar", "handle"];
// if PostedTo object has vanished, clear out the leash settings
if (!llGetObjectPrimCount(kTarget) && !g_bLeashedToAvi) DoUnleash();
else DoLeash(kTarget, (integer)llList2String(lParam, 1), lPoints);
}
else if (sToken == TOK_LENGTH) SetLength((integer)sValue);
if (sToken=="strict"){
g_iStrictModeOn = (integer)sValue;
ApplyRestrictions();
}
} else if (sToken == RLV_STRING) { // something enabled or disabled RLV. Remember which
//Debug("SetRLV:"+sValue);
g_iRLVOn = (integer)sValue;
ApplyRestrictions();
} else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken=="Global_WearerName") WEARERNAME=sValue;
//else //Debug("setting response:"+sToken);
} else if (iNum == DIALOG_RESPONSE) {
list lMenuParams = llParseString2List(sMessage, ["|"], []);
key kAV = (key)llList2String(lMenuParams, 0);
string sButton = llList2String(lMenuParams, 1);
integer iAuth = (integer) llList2String(lMenuParams, 3);
if (kMessageID == g_kMainDialogID){
if (sButton == BUTTON_UPMENU) {
llMessageLinked(LINK_SET, iAuth, "menu "+BUTTON_PARENTMENU, kAV);
} else if (~llListFindList(g_lButtons, [sButton])){ //process buttons other scripts added
llMessageLinked(LINK_SET, iAuth, "menu "+sButton, kAV);
} else { // catch all
UserCommand(iAuth, llToLower(sButton), kAV, TRUE);
}
}
else if (kMessageID == g_kLeashTargetDialogID) UserCommand(iAuth, "leashto " + sButton, kAV, TRUE);
else if (kMessageID == g_kFollowTargetDialogID) UserCommand(iAuth, "follow " + sButton, kAV, TRUE);
else if (kMessageID == g_kPostTargetDialogID) UserCommand(iAuth, "findpost " + sButton, kAV, TRUE);
else if (kMessageID == g_kSetLengthDialogID) UserCommand(iAuth, "length " + sButton, kAV, TRUE);
else if (kMessageID == g_kPostMenuDialogID) UserCommand(iAuth, "post " + sButton, kAV, TRUE);
}
}
at_target(integer iNum, vector vTarget, vector vMe){
if (g_iTargetHandle==0) return;
llStopMoveToTarget();
llTargetRemove(g_iTargetHandle);
g_iTargetHandle = 0;
g_vPos = llList2Vector(llGetObjectDetails(g_kLeashedTo,[OBJECT_POS]),0);
g_iTargetHandle = llTarget(g_vPos, (float)g_iLength);
if(g_iJustMoved) {
vector pointTo = llList2Vector(llGetObjectDetails(g_kLeashedTo,[OBJECT_POS]),0) - llGetPos();
float turnAngle = llAtan2(pointTo.x, pointTo.y);// - myAngle;
llMessageLinked(LINK_SET, RLV_CMD, "setrot:" + (string)(turnAngle) + "=force", NULL_KEY); //transient command, doesn;t need our fakekey
g_iJustMoved = 0;
}
}
not_at_target() {
if (g_iTargetHandle==0) return;
g_iJustMoved = 1;
// i ran into a problem here which seems to be "speed" related, specially when using the menu to unleash this event gets triggered together or just after the CleanUp() function
//to prevent to get stay in the target events i added a check on g_kLeashedTo is NULL_KEY
if(g_kLeashedTo) {
vector vNewPos = llList2Vector(llGetObjectDetails(g_kLeashedTo,[OBJECT_POS]),0);
//llStopMoveToTarget();
if (g_vPos != vNewPos) {
llTargetRemove(g_iTargetHandle);
g_vPos = vNewPos;
g_iTargetHandle = llTarget(g_vPos, (float)g_iLength);
}
if (g_vPos != ZERO_VECTOR) llMoveToTarget(g_vPos,0.7);
else llStopMoveToTarget();
} else {
DoUnleash();
}
}
run_time_permissions(integer iPerm)
{
if (iPerm & PERMISSION_TAKE_CONTROLS) {
//disbale all controls but left mouse button (for stay cmd)
llTakeControls(CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_LBUTTON | CONTROL_ML_LBUTTON, FALSE, FALSE);
}
}
object_rez(key id) {
g_iLength=3;
DoLeash(id, g_iRezAuth, []);
}
changed (integer change){
if (change & CHANGED_OWNER){
g_kWearer = llGetOwner();
}
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,989 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - leashParticle //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//Split from the leash script in April 2010 by Garvin Twine
//Nandana Singh, Lulu Pink, Joy Stipe, Wendy Starfall
//Medea Destiny, Jean Severine, littlemousy, Romka Swallowtail
// - MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_SAFEWORD = 510;
integer POPUP_HELP = 1001;
// -- SETTINGS
// - Setting strings must be in the format: "token=value"
integer LM_SETTING_SAVE = 2000; // to have settings saved to settings store
integer LM_SETTING_REQUEST = 2001; // send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002; // responses received on this channel
integer LM_SETTING_DELETE = 2003; // delete token from store
integer LM_SETTING_EMPTY = 2004; // returned when a token has no value in the store
// -- MENU/DIALOG
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer LOCKMEISTER = -8888;
integer LOCKGUARD = -9119;
integer g_iLMListener;
integer g_iLMListernerDetach;
integer COMMAND_PARTICLE = 20000;
integer COMMAND_LEASH_SENSOR = 20001;
// --- menu tokens ---
string UPMENU = "BACK";
//string MORE = ">";
string PARENTMENU = "Leash";
string SUBMENU = "Particle";
string L_TEXTURE = "Texture";
string L_DENSITY = "Density";
string L_COLOR = "Color";
string L_GRAVITY = "Gravity";
string L_SIZE = "Size";
string L_LIFE = "Life"; // ADDED FOR ST
string L_GLOW = "Glow";
string L_DEFAULTS = "ResetDefaults";
// Defalut leash particle, can read from defaultsettings:
// User_leashDefaults=Texture~chain~Size~<0.07,0.07,1.0>~Color~<1,1,1>~Density~-0.04~Gravity~-1.1~Life~3.0~Glow~1
//list g_lDefaultSettings = [L_TEXTURE,"chain", L_SIZE,"<0.07,0.07,1.0>", L_COLOR,"<1,1,1>", L_DENSITY,"-0.04", L_GRAVITY,"-1.0", L_LIFE, "3.0", L_GLOW, "0"];
list g_lDefaultSettings = ["Texture","chain", "Size","<0.07,0.07,1.0>", "Color","<1,1,1>", "Density","-0.04", "Gravity","-1.0", "Life", "3.0", "Glow", "0"];
list g_lSettings;
string g_sCurrentMenu = "";
key g_kDialogID;
string g_sCurrentCategory = "";
list g_lCategories = ["Shades", "Bright", "Soft"];
list g_lColors;
list g_lAllColors = [
"Light Shade|<0.82745, 0.82745, 0.82745>
Gray Shade|<0.70588, 0.70588, 0.70588>
Dark Shade|<0.20784, 0.20784, 0.20784>
Brown Shade|<0.65490, 0.58431, 0.53333>
Red Shade|<0.66275, 0.52549, 0.52549>
Blue Shade|<0.64706, 0.66275, 0.71765>
Green Shade|<0.62353, 0.69412, 0.61569>
Pink Shade|<0.74510, 0.62745, 0.69020>
Gold Shade|<0.69020, 0.61569, 0.43529>
Black|<0.00000, 0.00000, 0.00000>
White|<1.00000, 1.00000, 1.00000>",
"Magenta|<1.00000, 0.00000, 0.50196>
Pink|<1.00000, 0.14902, 0.50980>
Hot Pink|<1.00000, 0.05490, 0.72157>
Firefighter|<0.88627, 0.08627, 0.00392>
Sun|<1.00000, 1.00000, 0.18039>
Flame|<0.92941, 0.43529, 0.00000>
Matrix|<0.07843, 1.00000, 0.07843>
Electricity|<0.00000, 0.46667, 0.92941>
Violet Wand|<0.63922, 0.00000, 0.78824>
Black|<0.00000, 0.00000, 0.00000>
White|<1.00000, 1.00000, 1.00000>",
"Baby Blue|<0.75686, 0.75686, 1.00000>
Baby Pink|<1.00000, 0.52157, 0.76078>
Rose|<0.93333, 0.64314, 0.72941>
Beige|<0.86667, 0.78039, 0.71765>
Earth|<0.39608, 0.27451, 0.18824>
Ocean|<0.25882, 0.33725, 0.52549>
Yolk|<0.98824, 0.73333, 0.29412>
Wasabi|<0.47059, 1.00000, 0.65098>
Lavender|<0.89020, 0.65882, 0.99608>
Black|<0.00000, 0.00000, 0.00000>
White|<1.00000, 1.00000, 1.00000>"
];
// ----- collar -----
//string g_sWearerName;
string CTYPE = "collar";
key g_kWearer;
key NULLKEY = "";
key g_kLeashedTo = ""; //NULLKEY;
key g_kLeashToPoint = ""; //NULLKEY;
key g_kParticleTarget = ""; //NULLKEY;
integer g_bLeasherInRange;
integer g_bInvisibleLeash = FALSE;
integer g_iAwayCounter;
integer g_bLeashActive;
//List of 4 leash/chain points, lockmeister names used (list has to be all lower case, prims dont matter, converting on compare to lower case)
//strided list... LM name, linkNumber, BOOL_ACVTIVE
list g_lLeashPrims;
//global integer used for loops
integer g_iLoop;
string g_sScript;
//Particle system and variables
string g_sParticleTexture = "chain";
string g_sParticleTextureID; //we need the UUID for llLinkParticleSystem
float g_fLeashLength;
vector g_vLeashColor = <1,1,1>;
//vector g_vLeashSize = <0.22, 0.17, 0.0>; // CHANGED FROM DEFAULT <0.07, 0.07, 1.0>, JEAN SEVERINE 2012-02-22
vector g_vLeashSize = <0.07, 0.07, 1.0>; // CHANGED back
integer g_bParticleGlow = TRUE;
float g_fParticleAge = 1.0;
float g_fParticleAlpha = 1.0;
vector g_vLeashGravity = <0.0,0.0,-1.0>;
integer g_iParticleCount = 1;
float g_fBurstRate = 0.04;
//same g_lSettings but to store locally the default settings recieved from the defaultsettings note card, using direct string here to save some bits
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
FindLinkedPrims()
{
integer linkcount = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (g_iLoop = 2; g_iLoop <= linkcount; g_iLoop++)
{
string sPrimDesc = (string)llGetObjectDetails(llGetLinkKey(g_iLoop), [OBJECT_DESC]);
list lTemp = llParseString2List(sPrimDesc, ["~"], []);
integer iLoop;
for (iLoop = 0; iLoop < llGetListLength(lTemp); iLoop++)
{
string sTest = llList2String(lTemp, iLoop);
//Debug(sTest);
//expected either "leashpoint" or "leashpoint:point"
if (llGetSubString(sTest, 0, 9) == "leashpoint")
{
if (llGetSubString(sTest, 11, -1) == "")
{
g_lLeashPrims += [sTest, (string)g_iLoop, "1"];
}
else
{
g_lLeashPrims += [llGetSubString(sTest, 11, -1), (string)g_iLoop, "1"];
}
}
}
}
//if we did not find any leashpoint... we unset the root as one
if (!llGetListLength(g_lLeashPrims))
{
g_lLeashPrims = ["collar", LINK_THIS, "1"];
}
}
Particles(integer iLink, key kParticleTarget)
{
//when we have no target to send particles to, dont create any
if (kParticleTarget == NULLKEY)
{
return;
}
//taken out as vars to save memory
//float fMaxSpeed = 3.0; // Max speed each particle is spit out at
//float fMinSpeed = 3.0; // Min speed each particle is spit out at
//these values do nothing when particles go to a target, the speed is determined by the particle age then
//integer iFlags = PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_TARGET_POS_MASK;
integer iFlags = PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_TARGET_POS_MASK|PSYS_PART_FOLLOW_SRC_MASK;
if (g_bParticleGlow) iFlags = iFlags | PSYS_PART_EMISSIVE_MASK;
list lTemp = [
PSYS_PART_MAX_AGE,g_fParticleAge,
PSYS_PART_FLAGS,iFlags,
PSYS_PART_START_COLOR, g_vLeashColor,
//PSYS_PART_END_COLOR, g_vLeashColor,
PSYS_PART_START_SCALE,g_vLeashSize,
//PSYS_PART_END_SCALE,g_vLeashSize,
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_DROP,
PSYS_SRC_BURST_RATE,g_fBurstRate,
PSYS_SRC_ACCEL, g_vLeashGravity,
PSYS_SRC_BURST_PART_COUNT,g_iParticleCount,
//PSYS_SRC_BURST_SPEED_MIN,fMinSpeed,
//PSYS_SRC_BURST_SPEED_MAX,fMaxSpeed,
PSYS_SRC_TARGET_KEY,kParticleTarget,
PSYS_SRC_MAX_AGE, 0,
PSYS_SRC_TEXTURE, g_sParticleTextureID
//PSYS_PART_START_ALPHA, g_fParticleAlpha,
//PSYS_PART_END_ALPHA, g_fParticleAlpha
];
llLinkParticleSystem(iLink, lTemp);
}
StartParticles(key kParticleTarget)
{
//Debug(llList2CSV(g_lLeashPrims));
for (g_iLoop = 0; g_iLoop < llGetListLength(g_lLeashPrims); g_iLoop = g_iLoop + 3)
{
if ((integer)llList2String(g_lLeashPrims, g_iLoop + 2))
{
Particles((integer)llList2String(g_lLeashPrims, g_iLoop + 1), kParticleTarget);
}
}
g_bLeashActive = TRUE;
}
StopParticles(integer iEnd)
{
for (g_iLoop = 0; g_iLoop < llGetListLength(g_lLeashPrims); g_iLoop++)
{
llLinkParticleSystem((integer)llList2String(g_lLeashPrims, g_iLoop + 1), []);
}
if (iEnd)
{
g_bLeashActive = FALSE;
g_kLeashedTo = NULLKEY;
g_kLeashToPoint = NULLKEY;
g_kParticleTarget = NULLKEY;
llSensorRemove();
}
}
string Vec2String(vector vVec)
{
list lParts = [vVec.x, vVec.y, vVec.z];
for (g_iLoop = 0; g_iLoop < 3; g_iLoop++)
{
string sStr = llList2String(lParts, g_iLoop);
//remove any trailing 0's or .'s from sStr
//while ((~(integer)llSubStringIndex(sStr, ".")) && (llGetSubString(sStr, -1, -1) == "0" || llGetSubString(sStr, -1, -1) == "."))
while ((~llSubStringIndex(sStr, ".")) && (llGetSubString(sStr, -1, -1) == "0" || llGetSubString(sStr, -1, -1) == "."))
{
sStr = llGetSubString(sStr, 0, -2);
}
lParts = llListReplaceList(lParts, [sStr], g_iLoop, g_iLoop);
}
return "<" + llDumpList2String(lParts, ",") + ">";
}
string Float2String(float in)
{
string out = (string)in;
integer i = llSubStringIndex(out, ".");
while ((~i) && llStringLength(llGetSubString(out, i + 2, -1)) && llGetSubString(out, -1, -1) == "0")
{
out = llGetSubString(out, 0, -2);
}
return out;
}
SaveSettings(string sToken, string sValue, integer bSaveToLocal)
{
integer iIndex = llListFindList(g_lSettings, [sToken]);
if (iIndex>=0)
{
g_lSettings = llListReplaceList(g_lSettings, [sValue], iIndex +1, iIndex +1);
}
else
{
g_lSettings += [sToken, sValue];
}
if (bSaveToLocal)
{
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + sToken + "=" + sValue, "");
}
}
SaveDefaultSettings(string sToken, string sValue)
{
integer index = llListFindList(g_lDefaultSettings, [sToken]);
if (index>=0)
{
g_lDefaultSettings = llListReplaceList(g_lDefaultSettings, [sValue], index+1, index+1);
}
else
{
g_lDefaultSettings += [sToken, sValue];
}
}
string GetDefaultSetting(string sToken)
{
integer index = llListFindList(g_lDefaultSettings, [sToken]);
return llList2String(g_lDefaultSettings, index + 1);
}
string GetSetting(string sToken)
{
integer index = llListFindList(g_lSettings, [sToken]);
if (index != -1) return llList2String(g_lSettings, index + 1);
else return GetDefaultSetting(sToken); // return from defaultsettings if not present
}
// get settings before StartParticles
GetSettings()
{
g_fBurstRate = (float)GetSetting(L_DENSITY);
g_vLeashGravity.z = (float)GetSetting(L_GRAVITY);
g_vLeashSize = (vector)GetSetting(L_SIZE);
g_fParticleAge = (float)GetSetting(L_LIFE); // ADDED FOR ST
g_vLeashColor = (vector)GetSetting(L_COLOR);
//g_bParticleGlow = (integer)GetSetting(L_GLOW);
string glow = llToLower(GetSetting(L_GLOW));
if (glow == "off" || glow == "0") g_bParticleGlow = 0 ;
if (glow == "on" || glow == "1") g_bParticleGlow = 1 ;
SetTexture(GetSetting(L_TEXTURE), NULLKEY);
}
// Added bSave as a boolean, to make this a more versatile wrapper
SetTexture(string sIn, key kIn)
{
g_sParticleTexture = sIn;
if (sIn=="chain"){
g_sParticleTextureID="796ef797-1726-4409-a70f-cd64304ada22";
} else if (sIn=="rope"){
g_sParticleTextureID="36b304cc-6209-4f47-9e4a-a68901e98e6e";
} else if (sIn=="totallytransparent"){
g_sParticleTextureID="8dcd4a48-2d37-4909-9f78-f7a9eb4ef903";
} else {
if (llToLower(g_sParticleTexture) == "noleash")
{
g_bInvisibleLeash = TRUE;
}
else
{
g_bInvisibleLeash = FALSE;
}
//Debug("particleTexture= " + sIn);
g_sParticleTextureID = llGetInventoryKey(sIn);
if(g_sParticleTextureID == NULL_KEY) g_sParticleTextureID=sIn; //for textures without full perm, we send the texture name. For this to work, texture must be in the emitter prim as well as in root, if different.
}
//Debug("particleTextureID= " + (string)g_sParticleTextureID);
if (kIn)
{
Notify(kIn, "Leash texture set to " + g_sParticleTexture, FALSE);
}
//Debug("activeleashpoints= " + (string)g_bLeashActive);
if (g_bLeashActive)
{
if (g_bInvisibleLeash)
{
StopParticles(FALSE);
}
else
{
StartParticles(g_kParticleTarget);
}
}
}
integer KeyIsAv(key id)
{
return llGetAgentSize(id) != ZERO_VECTOR;
}
//Menus
OptionsMenu(key kIn, integer iAuth)
{
g_sCurrentMenu = SUBMENU;
list lButtons = [L_TEXTURE, L_DENSITY, L_GRAVITY, L_COLOR, L_SIZE, L_LIFE];
if (g_bParticleGlow)
{
lButtons += "GlowOff";
}
else
{
lButtons += "GlowOn";
}
lButtons += [L_DEFAULTS];
string sPrompt = "\nCustomize the looks and feel of your leash.";
g_kDialogID = Dialog(kIn, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
DensityMenu(key kIn, integer iAuth)
{
list lButtons = ["+", "", "Default"];
g_sCurrentMenu = L_DENSITY;
string Default = GetDefaultSetting(L_DENSITY);
string sPrompt = "\nChoose + for more and for less particles\n'Default' to revert to the default: "+Default;
sPrompt += "\n\nCurrent Density = "+Float2String(g_fBurstRate) ;// BurstRate is opposite the implied effect of density
g_kDialogID = Dialog(kIn, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
GravityMenu(key kIn, integer iAuth)
{
list lButtons = ["+", "", "Default", "noGravity"];
g_sCurrentMenu = L_GRAVITY;
string Default = GetDefaultSetting(L_GRAVITY);
string sPrompt = "\nChoose + for more and for less leash-gravity\n'Default' to revert to the default: "+Default;
sPrompt += "\n\nCurrent Gravity = "+Float2String(g_vLeashGravity.z) ;
g_kDialogID = Dialog(kIn, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
SizeMenu(key kIn, integer iAuth)
{
list lButtons = ["X+", "Y+", "Default", "X-", "Y-", "MIN"]; // ADDED FOR ST changed "minimum" to "MIN"
g_sCurrentMenu = L_SIZE;
vector defaultsize = (vector)GetDefaultSetting(L_SIZE);
string sPrompt = "\nChoose '+' for bigger and '-' for smaller size of the leash texture";
sPrompt += "\n'Default' to revert to the default size: "+Float2String(defaultsize.x)+" x "+Float2String(defaultsize.y);
sPrompt += "\n'MIN' for the smallest possible: 0.04 x 0.04\n" ;
sPrompt += "\nCurrent Size = "+ Float2String(g_vLeashSize.x)+" x "+Float2String(g_vLeashSize.y) + " (0.03 steps)";
g_kDialogID = Dialog(kIn, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
LifeMenu(key kIn, integer iAuth) // ADDED FOR ST
{
list lButtons = ["+0.1", "+0.5", "Default", "-0.1", "-0.5", "MIN"];
g_sCurrentMenu = L_LIFE;
string sPrompt = "\nChoose '+' for longer or '-' for shorter life,";
sPrompt += "\n'Default' to revert to the default life: "+GetDefaultSetting(L_LIFE);
sPrompt += "\n'MIN' for the shortest life: 0.1\n";
sPrompt += "\nCurrent Life = "+llGetSubString((string)g_fParticleAge,0,2);
g_kDialogID = Dialog(kIn, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
ColorCategoryMenu(key kIn, integer iAuth)
{
//give kAv a dialog with a list of color cards
string sPrompt = "\nChoose a color category.";
g_sCurrentMenu = "L-ColorCat";
g_kDialogID = Dialog(kIn, sPrompt, g_lCategories, [UPMENU], 0, iAuth);
}
ColorMenu(key kIn, integer iAuth)
{
string sPrompt = "\nChoose a color.";
list lButtons = llList2ListStrided(g_lColors,0,-1,2);
g_sCurrentMenu = L_COLOR;
g_kDialogID = Dialog(kIn, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
TextureMenu(key kIn, integer iAuth)
{
list lButtons = ["Default", "chain","rope"];
integer iLoop;
string sName;
integer iCount = llGetInventoryNumber(0);
for (iLoop = 0; iLoop < iCount; iLoop++)
{
sName = llGetInventoryName(0, iLoop);
if (sName == "chain" || sName == "rope")
{
lButtons += [sName];
}
else if (llGetSubString(sName, 0, 5) == "leash_")
{
sName = llDeleteSubString(sName, 0, 5);
if (llStringLength(sName) > 24)
{
Notify(kIn, "Omitting '" + sName + "' from texture menu because it is too long. Please rename it.", TRUE);
}
else
{
lButtons += [sName];
}
}
}
lButtons += ["noTexture", "noLeash"];
g_sCurrentMenu = L_TEXTURE;
string sPrompt = "\nChoose a texture\nnoTexture does default SL particle dots\nnoLeash means no particle leash at all\n\nCurrent Texture = ";
sPrompt += g_sParticleTexture;
g_kDialogID = Dialog(kIn, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
LMSay()
{
llShout(LOCKMEISTER, (string)llGetOwnerKey(g_kLeashedTo) + "collar");
llShout(LOCKMEISTER, (string)llGetOwnerKey(g_kLeashedTo) + "handle");
}
default {
on_rez(integer iRez) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "leashParticle_";
g_kWearer = llGetOwner();
FindLinkedPrims();
StopParticles(TRUE);
llListen(COMMAND_PARTICLE,"","",""); // ADDED FOR BETA 0.1
//Debug("Starting");
}
link_message(integer iSenderPrim, integer iNum, string sMessage, key kMessageID)
{
if (iNum == COMMAND_PARTICLE)
{
g_kLeashedTo = kMessageID;
if (sMessage == "unleash")
{
StopParticles(TRUE);
llListenRemove(g_iLMListener);
llListenRemove(g_iLMListernerDetach);
}
else
{
//Debug("leash active");
if (! g_bInvisibleLeash)
{
integer bLeasherIsAv = (integer)llList2String(llParseString2List(sMessage, ["|"], [""]), 1);
g_kParticleTarget = g_kLeashedTo;
StartParticles(g_kParticleTarget);
if (bLeasherIsAv)
{
llListenRemove(g_iLMListener);
llListenRemove(g_iLMListernerDetach);
if (llGetSubString(sMessage, 0, 10) == "leashhandle")
{
g_iLMListener = llListen(LOCKMEISTER, "", "", (string)g_kLeashedTo + "handle ok");
g_iLMListernerDetach = llListen(LOCKMEISTER, "", "", (string)g_kLeashedTo + "handle detached");
}
else
{
g_iLMListener = llListen(LOCKMEISTER, "", "", "");
}
LMSay();
}
}
}
}
else if (iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)
{
if (llToLower(sMessage) == llToLower(SUBMENU))
{
if(iNum == COMMAND_OWNER) OptionsMenu(kMessageID, iNum);
else Notify(kMessageID, "Leash Options can only be changed by " + CTYPE + " Owners.", FALSE);
}
else if (sMessage == "menu "+SUBMENU)
{
if(iNum == COMMAND_OWNER) OptionsMenu(kMessageID, iNum);
else
{
Notify(kMessageID, "Leash Options can only be changed by " + CTYPE + " Owners.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu "+PARENTMENU, kMessageID);
}
}
}
else if (iNum == MENUNAME_REQUEST && sMessage == PARENTMENU)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, PARENTMENU + "|" + SUBMENU, "");
}
else if (iNum == DIALOG_RESPONSE)
{
if (kMessageID == g_kDialogID)
{
list lMenuParams = llParseString2List(sMessage, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sButton = llList2String(lMenuParams, 1);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sButton == UPMENU)
{
if(g_sCurrentMenu == SUBMENU)
{
llMessageLinked(LINK_SET, iAuth, "menu " + PARENTMENU, kAv);
}
else if (g_sCurrentMenu == L_COLOR)
{
ColorCategoryMenu(kAv, iAuth);
}
else
{
OptionsMenu(kAv, iAuth);
}
}
else if (g_sCurrentMenu == "Particle")
{
if (sButton == L_DEFAULTS)
{
g_lSettings = []; // clear current settings
Notify(kAv, "Leash-settings restored to " + CTYPE + " defaults.", FALSE);
// Cleo: as we use standard, no reason to keep the local settings
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "all", "");
if (!g_bInvisibleLeash && g_bLeashActive)
{
GetSettings(); // get settings before
StartParticles(g_kParticleTarget);
}
OptionsMenu(kAv, iAuth);
}
else if (sButton == L_TEXTURE)
{
TextureMenu(kAv, iAuth);
}
else if (sButton == L_COLOR)
{
ColorCategoryMenu(kAv, iAuth);
}
else if (sButton == L_DENSITY)
{
DensityMenu(kAv, iAuth);
}
else if (sButton == L_GRAVITY)
{
GravityMenu(kAv, iAuth);
}
else if (sButton == L_SIZE)
{
SizeMenu(kAv, iAuth);
}
else if (sButton == L_LIFE) // ADDED FOR ST
{
LifeMenu(kAv, iAuth);
}
else if (llGetSubString(sButton, 0, 3) == L_GLOW)
{
g_bParticleGlow = !g_bParticleGlow;
SaveSettings(L_GLOW, (string)g_bParticleGlow, TRUE);
if (!g_bInvisibleLeash && g_bLeashActive)
{
StartParticles(g_kParticleTarget);
}
OptionsMenu(kAv, iAuth);
}
}
else if (g_sCurrentMenu == "L-ColorCat")
{
g_sCurrentCategory = sButton;
integer iIndex = llListFindList(g_lCategories,[sButton]);
g_lColors = llParseString2List(llList2String(g_lAllColors, iIndex), ["\n", "|"], []);
g_lColors = llListSort(g_lColors, 2, TRUE);
ColorMenu(kAv, iAuth);
}
else if (g_sCurrentMenu == L_COLOR)
{
integer iIndex = llListFindList(g_lColors, [sButton]) +1;
if (iIndex)
{
g_vLeashColor = (vector)llList2String(g_lColors, iIndex);
SaveSettings(L_COLOR, Vec2String(g_vLeashColor), TRUE);
}
if (!g_bInvisibleLeash && g_bLeashActive)
{
StartParticles(g_kParticleTarget);
}
ColorMenu(kAv, iAuth);
}
else if (g_sCurrentMenu == L_TEXTURE)
{
g_bInvisibleLeash = FALSE;
if (sButton == "Default")
{
SetTexture(GetDefaultSetting(L_TEXTURE), kAv);
}
else if (sButton == "chain")
{
SetTexture(sButton, kAv);
}
else if(sButton == "rope")
{
SetTexture(sButton, kAv);
}
else if (sButton == "noTexture")
{
SetTexture(sButton, kAv);
}
else if (sButton == "noLeash")
{
SetTexture(sButton, kAv);
}
else
{
sButton = "leash_" + sButton;
if (llGetInventoryType(sButton)==INVENTORY_TEXTURE) //the texture exists
{
SetTexture(sButton, kAv);
}
}
SaveSettings(L_TEXTURE, g_sParticleTexture, TRUE);
TextureMenu(kAv, iAuth);
}
else if (g_sCurrentMenu == L_DENSITY)
{
if (sButton == "Default")
{
g_fBurstRate = (float)GetDefaultSetting(L_DENSITY);
}
else if (sButton == "+")
{
g_fBurstRate -= 0.01;
}
else if (sButton == "")
{
g_fBurstRate += 0.01;
}
if (!g_bInvisibleLeash && g_bLeashActive)
{
StartParticles(g_kParticleTarget);
}
SaveSettings(L_DENSITY, Float2String(g_fBurstRate), TRUE);
DensityMenu(kAv, iAuth);
}
else if (g_sCurrentMenu == L_GRAVITY)
{
if (sButton == "Default")
{
g_vLeashGravity.z = (float)GetDefaultSetting(L_GRAVITY);
}
else if (sButton == "+")
{
g_vLeashGravity.z -= 0.1;
if (g_vLeashGravity.z < -3.0)
{
g_vLeashGravity.z = -3.0;
Notify(kAv, "You have already reached maximum gravity.", FALSE);
}
}
else if (sButton == "")
{
g_vLeashGravity.z += 0.1;
if (g_vLeashGravity.z > 0.0)
{
g_vLeashGravity.z = 0.0 ;
Notify(kAv, "You have already reached 0 leash-gravity.", FALSE);
}
}
else if (sButton == "noGravity")
{
g_vLeashGravity = <0.0,0.0,0.0>;
}
if (!g_bInvisibleLeash && g_bLeashActive)
{
StartParticles(g_kParticleTarget);
}
SaveSettings(L_GRAVITY, Float2String(g_vLeashGravity.z), TRUE);
GravityMenu(kAv, iAuth);
}
else if (g_sCurrentMenu == L_SIZE)
{
if (sButton == "Default")
{
g_vLeashSize = (vector)GetDefaultSetting(L_SIZE);
}
else if (sButton == "X+")
{
g_vLeashSize.x +=0.03;
}
else if (sButton == "Y+")
{
g_vLeashSize.y +=0.03;
}
else if (sButton == "X-")
{
g_vLeashSize.x -=0.03;
if (g_vLeashSize.x < 0.04)
{
g_vLeashSize.x = 0.04 ;
Notify(kAv, "You have reached the minimum size for particles.", FALSE);
}
}
else if (sButton == "Y-")
{
g_vLeashSize.y -=0.03;
if (g_vLeashSize.y < 0.04)
{
g_vLeashSize.y = 0.04 ;
Notify(kAv, "You have reached the minimum size for particles.", FALSE);
}
}
else if (sButton == "MIN") // ADDED FOR ST changed "minimum" to "MIN"
{
g_vLeashSize = <0.04,0.04,0.0>;
}
if (!g_bInvisibleLeash && g_bLeashActive)
{
StartParticles(g_kParticleTarget);
}
SaveSettings(L_SIZE, Vec2String(g_vLeashSize), TRUE);
SizeMenu(kAv, iAuth);
}
else if (g_sCurrentMenu == L_LIFE) // ADDED FOR ST
{
if (sButton == "Default")
{
g_fParticleAge = (float)GetDefaultSetting(L_LIFE);
}
else if (sButton == "+0.5")
{
g_fParticleAge += 0.5;
}
else if (sButton == "-0.5")
{
//if (g_fParticleAge <= 0.5)
//{
// Notify(kAv, "Use the -0.1 button to reach minimum particle life.", FALSE);
//}
//else
//{
g_fParticleAge -= 0.5;
//}
if (g_fParticleAge < 0.1)
{
g_fParticleAge = 0.1;
Notify(kAv, "You have reached minimum particle life.", FALSE);
}
}
else if (sButton == "+0.1")
{
g_fParticleAge += 0.1;
}
else if (sButton == "-0.1")
{
g_fParticleAge -= 0.1;
if (g_fParticleAge < 0.1)
{
g_fParticleAge = 0.1;
Notify(kAv, "You have reached minimum particle life.", FALSE);
}
}
else if (sButton == "MIN")
{
g_fParticleAge = 0.1;
}
if (!g_bInvisibleLeash && g_bLeashActive)
{
StartParticles(g_kParticleTarget);
}
SaveSettings(L_LIFE, Float2String(g_fParticleAge), TRUE);
LifeMenu(kAv,iAuth);
}
}
}
else if (iNum == LM_SETTING_RESPONSE)
{
//Debug ("LocalSettingsResponse: " + sMessage);
integer i = llSubStringIndex(sMessage, "=");
string sToken = llGetSubString(sMessage, 0, i - 1);
string sValue = llGetSubString(sMessage, i + 1, -1);
i = llSubStringIndex(sToken, "_");
if (sToken == "leash_leashedto")
{
g_kLeashedTo = (key)llList2String(llParseString2List(sValue, [","], []), 0);
}
else if (llGetSubString(sToken, 0, i) == g_sScript)
{
// load current settings
sToken = llGetSubString(sToken, i + 1, -1);
SaveSettings(sToken, sValue, FALSE);
SaveDefaultSettings(sToken, sValue);
}
else if (sToken == "Global_CType") CTYPE = sValue;
// in case wearer is currently leashed
else if (sMessage == "settings=sent")
{
GetSettings(); // get settings before
if (g_kLeashedTo != NULLKEY) StartParticles(g_kParticleTarget);
}
}
else if (iNum == LM_SETTING_DELETE)
{
if (sMessage == "leash_leashedto")
{
StopParticles(TRUE);
}
}
}
listen(integer iChannel, string sName, key kID, string sMessage)
{
if (iChannel == LOCKMEISTER)
{
//leash holder announced it got detached... send particles to avi
if (sMessage == (string)g_kLeashedTo + "handle detached")
{
g_kParticleTarget = g_kLeashedTo;
StartParticles(g_kParticleTarget);
}
// We heard from a leash holder. re-direct particles
if (llGetOwnerKey(kID) == g_kLeashedTo)
{
sMessage = llGetSubString(sMessage, 36, -1);
if (sMessage == "collar ok")
{
g_kParticleTarget = kID;
StartParticles(g_kParticleTarget);
}
if (sMessage == "handle ok")
{
g_kParticleTarget = kID;
StartParticles(g_kParticleTarget);
}
}
}
// ADDED BELOW FOR BETA 0.1 TOGGLES LEASH PARTICLES OFF IF COFFLES BEING USED.
else if(iChannel == COMMAND_PARTICLE)
{
if(llGetOwnerKey(kID) == g_kWearer)
{
integer currentglow;
if(sMessage == "noLeash")
{
currentglow = g_bParticleGlow;
g_bParticleGlow = FALSE;
SetTexture(sMessage, g_kWearer);
StartParticles(g_kParticleTarget);
}
if(sMessage == "chain")
{
g_bParticleGlow = currentglow;
SetTexture(sMessage, g_kWearer);
StartParticles(g_kParticleTarget);
}
}
}
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,664 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - listener //
// version 3.990 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
integer g_iListenChan = 1;
integer g_iListenChan0 = TRUE;
string g_sPrefix = ".";
integer g_iPollForNameChange = 60; //seconds to poll for name change
integer g_iCustomName = FALSE; //this is our bit flag to see if we're using an LM_SETTING custom name
integer g_iLockMeisterChan = -8888;
integer g_iListener1;
integer g_iListener2;
integer g_iLockMeisterListener;
integer g_iHUDListener;
integer g_iHUDChan;
//list g_lHudComms; //2 strided list of uuid and unixtime of something that communicated on the hud channel
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510; // new for safeword
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer NOTIFY=1002;
integer NOTIFY_OWNERS=1003;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the httpdb
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer INTERFACE_REQUEST = -9006;
integer INTERFACE_RESPONSE = -9007;
integer TOUCH_REQUEST = -9500;
integer TOUCH_CANCEL = -9501;
integer TOUCH_RESPONSE = -9502;
integer TOUCH_EXPIRE = -9503;
//5000 block is reserved for IM slaves
//EXTERNAL MESSAGE MAP
integer EXT_COMMAND_COLLAR = 499;
// new g_sSafeWord
string g_sSafeWord = "RED";
//added for attachment auth
integer g_iInterfaceChannel; // AO Backwards Compatibility
integer g_iListenHandleAtt;
integer ATTACHMENT_REQUEST = 600;
integer ATTACHMENT_RESPONSE = 601;
integer ATTACHMENT_FORWARD = 610;
key g_kWearer;
string g_sScript = "listener_";
string CTYPE = "collar";
string WEARERNAME;
list g_lOwners;
//globlals for supporting touch requests
list g_lTouchRequests; // 4-strided list in form of touchid, recipient, flags, auth level
integer g_iStrideLength = 4;
integer FLAG_TOUCHSTART = 0x01;
integer FLAG_TOUCHEND = 0x02;
integer g_iNeedsPose = FALSE; // should the avatar be forced into a still pose for making touching easier
string g_sPOSE_ANIM = "turn_180";
integer g_iTouchNotify = FALSE; // for Touch Notify
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
// integer pos;
// while (~pos=llSubStringIndex(sMsg, "%WEARERNAME%")) {
// if (llStringLength(sMsg) == 12) { sMsg = WEARERNAME; }
// else if (pos == 0) { sMsg = WEARERNAME+llGetSubString(sMsg, pos+12, -1); }
// else if (pos == llStringLength(sMsg)-12) { sMsg = llGetSubString(sMsg, 0, pos-1)+WEARERNAME; }
// else { sMsg = llGetSubString(sMsg, 0, pos-1)+WEARERNAME+llGetSubString(sMsg, pos+12, -1); }
// }
if ((key)kID){
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
// if (~llListFindList(g_lHudComms,[kID])){
// llRegionSayTo(kID,g_iHUDChan,sMsg);
// } else
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
//} else {
//Debug("Bad key, can't notify:"+sMsg);
}
}
NotifyOwners(string sMsg, string comments) {
integer n;
integer iStop = llGetListLength(g_lOwners);
for (n = 0; n < iStop; n += 2) {
key kAv = (key)llList2String(g_lOwners, n);
if (comments=="ignoreNearby"){
//we don't want to bother the owner if he/she is right there, so check distance
vector vOwnerPos = (vector)llList2String(llGetObjectDetails(kAv, [OBJECT_POS]), 0);
if (vOwnerPos == ZERO_VECTOR || llVecDist(vOwnerPos, llGetPos()) > 20.0) {//vOwnerPos will be ZERO_VECTOR if not in sim
//Debug("notifying " + (string)kAv);
//Debug("Sending notify to "+(string)kAv);
Notify(kAv, sMsg,FALSE);
//} else {
//Debug("Not sending notify to "+(string)kAv);
}
} else {
//Debug("Sending notify to "+(string)kAv);
Notify(kAv, sMsg,FALSE);
}
}
}
//functions from touch script
ClearUser(key kRCPT, integer iNotify) {
//find any strides belonging to user and remove them
integer iIndex = llListFindList(g_lTouchRequests, [kRCPT]);
while (~iIndex)
{
if (iNotify)
{
key kID = llList2Key(g_lTouchRequests, iIndex -1);
integer iAuth = llList2Integer(g_lTouchRequests, iIndex + 2);
llMessageLinked(LINK_THIS, TOUCH_EXPIRE, (string) kRCPT + "|" + (string) iAuth,kID);
}
g_lTouchRequests = llDeleteSubList(g_lTouchRequests, iIndex - 1, iIndex - 2 + g_iStrideLength);
iIndex = llListFindList(g_lTouchRequests, [kRCPT]);
}
if (g_iNeedsPose && [] == g_lTouchRequests) llStopAnimation(g_sPOSE_ANIM);
}
sendCommandFromLink(integer iLinkNumber, string sType, key kToucher) {
// check for temporary touch requests
integer iTrig;
integer iNTrigs = llGetListLength(g_lTouchRequests);
for (iTrig = 0; iTrig < iNTrigs; iTrig+=g_iStrideLength)
{
if (llList2Key(g_lTouchRequests, iTrig + 1) == kToucher)
{
integer iTrigFlags = llList2Integer(g_lTouchRequests, iTrig + 2);
if (((iTrigFlags & FLAG_TOUCHSTART) && sType == "touchstart")
||((iTrigFlags & FLAG_TOUCHEND)&& sType == "touchend"))
{
integer iAuth = llList2Integer(g_lTouchRequests, iTrig + 3);
string sReply = (string) kToucher + "|" + (string) iAuth + "|" + sType +"|"+ (string) iLinkNumber;
llMessageLinked(LINK_THIS, TOUCH_RESPONSE, sReply, llList2Key(g_lTouchRequests, iTrig));
}
if (sType =="touchend") ClearUser(kToucher, FALSE);
return;
}
}
// check for permanent triggers (inlined sendPermanentCommandFromLink(iLinkNumber, sType, kToucher);)
//string sDesc = (string)llGetObjectDetails(llGetLinkKey(iLinkNumber), [OBJECT_DESC]);
//sDesc += (string)llGetObjectDetails(llGetLinkKey(LINK_ROOT), [OBJECT_DESC]);
string sDesc = llDumpList2String(llGetLinkPrimitiveParams(iLinkNumber,[PRIM_DESC])+llGetLinkPrimitiveParams(LINK_ROOT,[PRIM_DESC]),"~");
list lDescTokens = llParseStringKeepNulls(sDesc, ["~"], []);
integer iNDescTokens = llGetListLength(lDescTokens);
integer iDescToken;
for (iDescToken = 0; iDescToken < iNDescTokens; iDescToken++) {
string sDescToken = llList2String(lDescTokens, iDescToken);
if (sDescToken == sType || sDescToken == sType+":" || sDescToken == sType+":none") return;
else if (!llSubStringIndex(sDescToken, sType+":")) {
string sCommand = llGetSubString(sDescToken, llStringLength(sType)+1, -1);
if (sCommand != "") llMessageLinked(LINK_SET, COMMAND_NOAUTH, sCommand, kToucher);
return;
}
}
if (sType == "touchstart") {
llMessageLinked(LINK_SET, COMMAND_NOAUTH, "menu", kToucher);
if (g_iTouchNotify && kToucher!=g_kWearer) llOwnerSay("\n\nsecondlife:///app/agent/"+(string)kToucher+"/about touched your "+CTYPE+".\n");
}
}
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
list name = llParseString2List(llKey2Name(g_kWearer), [" "], []);
g_sPrefix = llGetSubString(llList2String(name, 0), 0, 0);
g_sPrefix += llGetSubString(llList2String(name, 1), 0, 0);
g_sPrefix = llToLower(g_sPrefix);
//Debug("Default prefix: " + g_sPrefix);
//inlined single use getOwnerChannel function
g_iHUDChan = -llAbs((integer)("0x"+llGetSubString((string)g_kWearer,2,7)) + 1111);
if (g_iHUDChan > -10000) g_iHUDChan -= 30000;
g_iInterfaceChannel = (integer)("0x" + llGetSubString(g_kWearer,30,-1));
if (g_iInterfaceChannel > 0) g_iInterfaceChannel = -g_iInterfaceChannel;
//set up listeners... inlined existing function
//public listener
llListenRemove(g_iListener1);
if (g_iListenChan0 == TRUE) g_iListener1 = llListen(0, "", NULL_KEY, "");
//private listener
llListenRemove(g_iListener2);
g_iListener2 = llListen(g_iListenChan, "", NULL_KEY, "");
//lockmeister listener
llListenRemove(g_iLockMeisterListener);
g_iLockMeisterListener = llListen(g_iLockMeisterChan, "", NULL_KEY, (string)g_kWearer + "collar");
//garvin attachments listener
llListenRemove(g_iListenHandleAtt);
g_iListenHandleAtt = llListen(g_iInterfaceChannel, "", "", "");
//owner hud listener
llListenRemove(g_iHUDListener);
g_iHUDListener = llListen(g_iHUDChan, "", NULL_KEY ,""); //reinstated
integer iAttachPt = llGetAttached();
if ((iAttachPt > 0 && iAttachPt < 31) || iAttachPt == 39) // if collar is attached to the body (thus excluding HUD and root/avatar center)
llRequestPermissions(g_kWearer, PERMISSION_TRIGGER_ANIMATION);
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "Global_WearerName", "");
//llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "channel", "");
llSetTimerEvent(60.0); //set timer event to catch changes in display name
//Debug("Starting");
}
attach(key kID)
{
//g_kWearer = llGetOwner();
if (kID == NULL_KEY)
{
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "OpenCollar=No");
}
else
{
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "OpenCollar=Yes");
}
integer iAttachPt = llGetAttached();
if ((iAttachPt > 0 && iAttachPt < 31) || iAttachPt == 39) // if collar is attached to the body (thus excluding HUD and root/avatar center)
llRequestPermissions(g_kWearer, PERMISSION_TRIGGER_ANIMATION);
}
listen(integer iChan, string sName, key kID, string sMsg)
{
if (iChan == g_iHUDChan)
{
// //track hud channel users
// integer hudIndex;
// if (~hudIndex=llListFindList(g_lHudComms,[kID])){
// g_lHudComms=llDeleteSubList(g_lHudComms,hudIndex,hudIndex+1);
// }
// g_lHudComms += [kID,llGetUnixTime()];
//check for a ping, if we find one we request auth and answer in LMs with a pong
if (sMsg==(string)g_kWearer + ":ping")
{
llMessageLinked(LINK_SET, COMMAND_NOAUTH, "ping", kID);
//llMessageLinked(LINK_SET, COMMAND_NOAUTH, "ping", llGetOwnerKey(kID));
}
// an object wants to know the version, we check if it is allowed to
else if (sMsg==(string)g_kWearer + ":version")
{
llMessageLinked(LINK_SET, COMMAND_NOAUTH, "objectversion", kID);
//llMessageLinked(LINK_SET, COMMAND_NOAUTH, "objectversion", llGetOwnerKey(kID));
}
// it it is not a ping, it should be a command for use, to make sure it has to have the key in front of it
else if (!llSubStringIndex(sMsg,(string)g_kWearer + ":"))
{
sMsg = llGetSubString(sMsg, 37, -1);
llMessageLinked(LINK_SET, COMMAND_NOAUTH, sMsg, kID);
//llMessageLinked(LINK_SET, COMMAND_NOAUTH, sMsg, llGetOwnerKey(kID));
}
else
{
// //Debug("command: "+sMsg+" from "+(string)kID);
// if (llGetOwnerKey(kID)==llGetOwner()){ //if the wearer's attachment requests it, then the command can be proxied for another user
// key sDestAv = llGetSubString(sMsg, 0, 35);
// if ((key)sDestAv){
// sMsg = llGetSubString(sMsg, 36, -1);
// kID=sDestAv;
// //Debug("command for foreign user");
// }
// }
//Debug("command: "+sMsg+" from "+(string)kID);
llMessageLinked(LINK_SET, COMMAND_NOAUTH, sMsg, kID);
//llMessageLinked(LINK_SET, COMMAND_NOAUTH, sMsg, llGetOwnerKey(kID));
}
return;
}
if (iChan == g_iLockMeisterChan)
{
llWhisper(g_iLockMeisterChan,(string)g_kWearer + "collar ok");
return;
}
if(llGetOwnerKey(kID) == g_kWearer) // also works for attachments
{
string sw = sMsg; // we'll have to shave pieces off as we go to test
// safeword can be the safeword or safeword said in OOC chat "((SAFEWORD))"
// and may include prefix
if (llGetSubString(sw, 0, 3) == "/me ") sw = llGetSubString(sw, 4, -1);
if (llGetSubString(sw, 0, 1) == "((" && llGetSubString(sw, -2, -1) == "))") sw = llGetSubString(sw, 2, -3);
if (llSubStringIndex(sw, g_sPrefix)==0) sw = llGetSubString(sw, llStringLength(g_sPrefix), -1);
if (sw == g_sSafeWord) {
llMessageLinked(LINK_SET, COMMAND_SAFEWORD, "", "");
llOwnerSay("You used your safeword, your owners will be notified you did.");
NotifyOwners("Your sub " + WEARERNAME + " has used the safeword. Please check on their well-being in case further care is required.","");
llMessageLinked(LINK_THIS, INTERFACE_RESPONSE, "safeword", "");
return;
}
}
//added for attachment auth (garvin)
if (iChan == g_iInterfaceChannel)
{
//Debug(sMsg);
//do nothing if wearer isnt owner of the object
if (llGetOwnerKey(kID) != g_kWearer) return;
//if (sMsg == "OpenCollar?") llWhisper(g_iInterfaceChannel, "OpenCollar=Yes");
if (sMsg == "OpenCollar?") llRegionSayTo(g_kWearer, g_iInterfaceChannel, "OpenCollar=Yes");
else if (sMsg == "version") llMessageLinked(LINK_SET, COMMAND_WEARER, "attachmentversion", g_kWearer); //main knows version number, main can respond to this request for us
else {
list lParams = llParseString2List(sMsg, ["|"], []);
integer iAuth = llList2Integer(lParams, 0);
if (iAuth == 0) //auth request
{
string sCmd = llList2String(lParams, 1);
string sUserId= llGetSubString(llList2String(lParams, 2),0,35);
string sObjectId= llGetSubString(llList2String(lParams, 2),36,-1);
//Debug("garvin auth for key"+sUserId);
//just send ATTACHMENT_REQUEST and ID to auth, as no script IN the collar needs the command anyway
llMessageLinked(LINK_SET, ATTACHMENT_REQUEST, sCmd+"|"+sUserId+"|"+sObjectId, (key)sUserId);
}
else if (iAuth == EXT_COMMAND_COLLAR) //command from attachment to AO
{
llRegionSayTo(g_kWearer, g_iInterfaceChannel, sMsg);
}
else
{
// we received a unkown command, so we just forward it via LM into the cuffs
llMessageLinked(LINK_SET, ATTACHMENT_FORWARD, sMsg, kID);
}
}
} else { //check for our prefix, or *
if (!llSubStringIndex(sMsg, g_sPrefix)) sMsg = llGetSubString(sMsg, llStringLength(g_sPrefix), -1); //strip our prefix from command
else if (llGetSubString(sMsg, 0, 0) == "*") sMsg = llGetSubString(sMsg, 1, -1); //strip * (all collars wildcard) from command
else if ((llGetSubString(sMsg, 0, 0) == "#") && (kID != g_kWearer)) sMsg = llGetSubString(sMsg, 1, -1); //strip # (all collars but me) from command
else return;
//Debug("Got comand "+sMsg);
llMessageLinked(LINK_SET, COMMAND_NOAUTH, sMsg, kID);
}
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (iNum==INTERFACE_RESPONSE)
{
if (sStr == "safeword") llRegionSay(g_iHUDChan, "safeword");
}
else if (iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)
{
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
string sValue = llToLower(llList2String(lParams, 1));
if (sStr == "ping") { // ping from an object, we answer to it on the object channel
llRegionSayTo(kID,g_iHUDChan,(string)g_kWearer+":pong"); // sim wide response to owner hud
} else if (iNum == COMMAND_OWNER) { //handle changing prefix and channel from owner
if (sCommand == "prefix")
{
string value = llList2String(lParams, 1);
if (value == "")
{
Notify(kID,"prefix: " + g_sPrefix, FALSE);
return;
}
g_sPrefix=value;
Notify(kID, "\n" + WEARERNAME + "'s prefix is '" + g_sPrefix + "'.\nTouch the " + CTYPE + " or say '" + g_sPrefix + "menu' for the main menu.\nSay '" + g_sPrefix + "help' for a list of chat commands.", FALSE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "Global_prefix=" + g_sPrefix, "");
}
else if (sCommand == "name")
{
if (sValue=="") { //Just let them know their current name
string message= "\n\n"+WEARERNAME+"'s current name is " + WEARERNAME;
message += "\nName command help: <prefix>name [newname|reset]\n";
Notify(kID, message, FALSE);
}
else if(sValue=="reset") { //unset Global_WearerName
string message=WEARERNAME+"'s new name is reset to ";
WEARERNAME = llGetDisplayName(g_kWearer);
if (WEARERNAME == "???" || WEARERNAME == "") WEARERNAME = llKey2Name(g_kWearer);
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "Global_WearerName", "");
llMessageLinked(LINK_SET, LM_SETTING_RESPONSE, "Global_WearerName="+WEARERNAME, "");
message += WEARERNAME;
g_iCustomName = FALSE;
Notify(kID, message, FALSE);
}
else {
string message=WEARERNAME+"'s new name is ";
WEARERNAME = llDumpList2String(llList2List(lParams, 1,-1)," ");
message += WEARERNAME;
g_iCustomName = TRUE;
Notify(kID, message, FALSE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "Global_WearerName=" + WEARERNAME, ""); //store
llMessageLinked(LINK_SET, LM_SETTING_RESPONSE, "Global_WearerName="+WEARERNAME, "");
}
}
else if (sCommand == "channel")
{
integer iNewChan = (integer)sValue;
if (sValue=="") { //they left the param blank, report listener status
string message=CTYPE+" is listening on channel";
if (g_iListenChan0) message += "s 0 and";
message += " "+(string)g_iListenChan+".";
Notify(kID, message, FALSE);
} else if (iNewChan > 0) { //set new channel for private listener
g_iListenChan = iNewChan;
llListenRemove(g_iListener2);
g_iListener2 = llListen(g_iListenChan, "", NULL_KEY, "");
Notify(kID, "Now listening on channel " + (string)g_iListenChan + ".", FALSE);
if (g_iListenChan0) //save setting along with the state of thepublic listener (messy!)
{
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "channel=" + (string)g_iListenChan + ",TRUE", "");
}
else
{
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "channel=" + (string)g_iListenChan + ",FALSE", "");
}
}
else if (iNewChan == 0) //enable public listener
{
g_iListenChan0 = TRUE;
llListenRemove(g_iListener1);
g_iListener1 = llListen(0, "", NULL_KEY, "");
Notify(kID, "You enabled the public channel listener.\nTo disable it use -1 as channel command.", FALSE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "channel=" + (string)g_iListenChan + ",TRUE", "");
}
else if (iNewChan == -1) //disable public listener
{
g_iListenChan0 = FALSE;
llListenRemove(g_iListener1);
Notify(kID, "You disabled the public channel listener.\nTo enable it use 0 as channel command, remember you have to do this on your channel /" +(string)g_iListenChan, FALSE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "channel=" + (string)g_iListenChan + ",FALSE", "");
}
}
}
if (kID == g_kWearer)
{
if (sCommand == "safeword")
{ // new for safeword
if(llStringTrim(sValue, STRING_TRIM) != "")
{
g_sSafeWord = llList2String(lParams, 1);
llOwnerSay("You set a new safeword: " + g_sSafeWord + ".");
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "safeword=" + g_sSafeWord, "");
}
else
{
llOwnerSay("Your safeword is: " + g_sSafeWord + ".");
}
}
else if (sCommand == "busted")
{
if (sValue == "on")
{
llMessageLinked(LINK_THIS,LM_SETTING_SAVE,"Global_touchNotify=1","");
g_iTouchNotify=TRUE;
llOwnerSay("Touch notification is now enabled.");
}
else if (sValue == "off")
{
llMessageLinked(LINK_THIS,LM_SETTING_DELETE,"Global_touchNotify","");
g_iTouchNotify=FALSE;
llOwnerSay("Touch notification is now disabled.");
}
else if (sValue == "")
{
if (g_iTouchNotify) {
llOwnerSay("Touch notification is now disabled.");
llMessageLinked(LINK_THIS,LM_SETTING_DELETE,"Global_touchNotify","");
g_iTouchNotify = FALSE;
}
else {
llOwnerSay("Touch notification is now enabled.");
llMessageLinked(LINK_THIS,LM_SETTING_SAVE,"Global_touchNotify=1","");
g_iTouchNotify = TRUE;
}
}
}
}
} else if (iNum == LM_SETTING_SAVE) {
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == "auth_owner" && llStringLength(sValue) > 0) g_lOwners = llParseString2List(sValue, [","], []);
} else if (iNum == LM_SETTING_EMPTY) {
if (sStr=="Global_WearerName"){
WEARERNAME = llGetDisplayName(g_kWearer);
if (WEARERNAME == "???" || WEARERNAME == "") WEARERNAME = llKey2Name(g_kWearer);
llMessageLinked(LINK_THIS,LM_SETTING_RESPONSE,"Global_WearerName="+WEARERNAME,"");
}
} else if (iNum == LM_SETTING_RESPONSE) {
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == "Global_prefix")
{
if (sValue != "") g_sPrefix=sValue;
}
else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken == "Global_touchNotify") g_iTouchNotify = (integer)sValue; // for Touch Notify
else if (sToken == "Global_WearerName") WEARERNAME = sValue;
else if (sToken == "auth_owner" && llStringLength(sValue) > 0) g_lOwners = llParseString2List(sValue, [","], []);
else if (sToken == "listener_safeword") g_sSafeWord = sValue;
else if (sToken == "listener_channel") {
g_iListenChan = (integer)sValue;
if (llGetSubString(sValue, llStringLength(sValue) - 5 , -1) == "FALSE") g_iListenChan0 = FALSE;
else g_iListenChan0 = TRUE;
llListenRemove(g_iListener1);
if (g_iListenChan0 == TRUE) g_iListener1 = llListen(0, "", NULL_KEY, "");
llListenRemove(g_iListener2);
g_iListener2 = llListen(g_iListenChan, "", NULL_KEY, "");
}
}
else if (iNum == POPUP_HELP)
{
//replace _PREFIX_ with prefix, and _CHANNEL_ with (strin) channel
sStr = osReplaceString(sStr, "_PREFIX_", g_sPrefix, -1, 0);
sStr = osReplaceString(sStr, "_CHANNEL_", (string)g_iListenChan, -1, 0);
Notify(kID, sStr, FALSE);
}
//added for attachment auth (garvin)
else if (iNum == ATTACHMENT_RESPONSE)
{
//Debug(sStr);
//here the response from auth has to be:
// llMessageLinked(LINK_SET, ATTACHMENT_RESPONSE, "auth", UUID);
//where "auth" has to be (string)COMMAND_XY
//reason for this is: i dont want to have all other scripts recieve a COMMAND+xy and check further for the command
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "RequestReply|" + sStr);
}
else if (iNum == TOUCH_REQUEST)
{ //str will be pipe-delimited list with rcpt|flags|auth
list lParams = llParseStringKeepNulls(sStr, ["|"], []);
key kRCPT = (key)llList2String(lParams, 0);
integer iFlags = (integer)llList2String(lParams, 1);
integer iAuth = (integer)llList2String(lParams, 2);
ClearUser(kRCPT, TRUE);
g_lTouchRequests += [kID, kRCPT, iFlags, iAuth];
if (g_iNeedsPose) llStartAnimation(g_sPOSE_ANIM);
}
else if (iNum == TOUCH_CANCEL)
{
integer iIndex = llListFindList(g_lTouchRequests, [kID]);
if (~iIndex)
{
g_lTouchRequests = llDeleteSubList(g_lTouchRequests, iIndex, iIndex - 1 + g_iStrideLength);
if (g_iNeedsPose && [] == g_lTouchRequests) llStopAnimation(g_sPOSE_ANIM);
}
} else if (iNum==NOTIFY){
Notify(kID,llGetSubString(sStr,1,-1),(integer)llGetSubString(sStr,0,0));
} else if (iNum==NOTIFY_OWNERS){
NotifyOwners(sStr,(string)kID);
}
}
touch_start(integer iNum)
{
//Debug("touched");
sendCommandFromLink(llDetectedLinkNumber(0), "touchstart", llDetectedKey(0));
}
touch_end(integer iNum)
{
sendCommandFromLink(llDetectedLinkNumber(0), "touchend", llDetectedKey(0));
}
//no more self resets
timer()
{
if (g_iCustomName == FALSE) { //If we don't have a custom LM_SETTING Global_WearerName
string sLoadDisplayName = llGetDisplayName(g_kWearer); //Load this once
if (((sLoadDisplayName != "") && (sLoadDisplayName != "???")) && (sLoadDisplayName != WEARERNAME)) {
//The displayname loaded correctly, and it's different than our current WEARERNAME
//wearer changed their displayname since last timer event
WEARERNAME = sLoadDisplayName;
llMessageLinked(LINK_SET, LM_SETTING_RESPONSE, "Global_WearerName="+WEARERNAME, ""); //force update other scripts
}
}
}
run_time_permissions(integer iPerm)
{
if (iPerm & PERMISSION_TRIGGER_ANIMATION) g_iNeedsPose = TRUE;
}
changed(integer iChange)
{
if (iChange & CHANGED_OWNER) llResetScript();
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,792 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - main //
// version 3.998.4 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//on start, send request for submenu names
//on getting submenu name, add to list if not already present
//on menu request, give dialog, with alphabetized list of submenus
//on listen, send submenu link message
string g_sCollarVersion="3.998.4";
integer g_iLatestVersion=TRUE;
list g_lOwners;
key g_kWearer;
//string g_sOldRegionName;
//list g_lMenuPrompts;
list g_lMenuIDs;//3-strided list of avatars given menus, their dialog ids, and the name of the menu they were given
integer g_iMenuStride = 3;
integer g_iScriptCount;//when the scriptcount changes, rebuild menus
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the httpdb
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
//5000 block is reserved for IM slaves
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
string UPMENU = "BACK";
string CTYPE="collar";
string WEARERNAME;
string GIVECARD = "Quick Guide";
string HELPCARD = "OpenCollar Guide";
string CONTACT = "Contact";
string LICENSE="License";
key g_kWebLookup;
key g_kCurrentUser;
list g_lAppearanceButtons;
list g_lAppsButtons;
integer g_iLocked = FALSE;
integer g_bDetached = FALSE;
integer g_iHide ; // global hide
integer g_iNews=FALSE;
string g_sLockPrimName="Lock"; // Description for lock elements to recognize them //EB //SA: to be removed eventually (kept for compatibility)
string g_sOpenLockPrimName="OpenLock"; // Prim description of elements that should be shown when unlocked
string g_sClosedLockPrimName="ClosedLock"; // Prim description of elements that should be shown when locked
list g_lClosedLockElements; //to store the locks prim to hide or show //EB
list g_lOpenLockElements; //to store the locks prim to hide or show //EB
string g_sDefaultLockSound="73f3f84b-0447-487d-8246-4ab3e5fdbf40";
string g_sDefaultUnlockSound="d64c3566-cf76-44b5-ae76-9aabf60efab8";
string g_sLockSound="73f3f84b-0447-487d-8246-4ab3e5fdbf40";
string g_sUnlockSound="d64c3566-cf76-44b5-ae76-9aabf60efab8";
integer g_iAppLock = FALSE; //appearance lock flag
integer g_iAnimsMenu=FALSE;
integer g_iRlvMenu=FALSE;
integer g_iAppearanceMenu=FALSE;
integer g_iCustomizeMenu=FALSE;
integer g_iPaintMenu=FALSE;
integer g_iUpdateChan = -7483214;
integer g_iUpdateHandle;
key g_kUpdaterOrb;
integer g_iUpdateFromMenu;
string version_check_url = "https://raw.githubusercontent.com/lickx/opencollar-os/oscollar3/LSL/~version";
key github_version_request;
string news_url = "https://raw.githubusercontent.com/lickx/opencollar-os/oscollar3/LSL/~news";
key news_request;
string g_sLastNewsTime = "0";
integer g_iUpdateAuth;
integer g_iWillingUpdaters = 0;
integer g_iListenChan=1;
string g_sSafeWord="RED";
string g_sPrefix;
integer g_iWaitUpdate = FALSE;
integer g_iWaitRebuild = FALSE;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Dialog(key kID, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth, string sName) {
key kMenuID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kID + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kMenuID);
integer iIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iIndex) g_lMenuIDs = llListReplaceList(g_lMenuIDs, [kID, kMenuID, sName], iIndex, iIndex + g_iMenuStride - 1);
else g_lMenuIDs += [kID, kMenuID, sName];
//Debug("Made "+sName+" menu.");
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
string AutoPrefix()
{
list sName = llParseString2List(llKey2Name(llGetOwner()), [" "], []);
return llToLower(llGetSubString(llList2String(sName, 0), 0, 0)) + llToLower(llGetSubString(llList2String(sName, 1), 0, 0));
}
integer compareVersions(string v1, string v2){ //compares two symantic version strings, true if v1 >= v2
integer v1Index=llSubStringIndex(v1,".");
integer v2Index=llSubStringIndex(v2,".");
integer v1a=(integer)llGetSubString(v1,0,v1Index);
integer v2a=(integer)llGetSubString(v2,0,v2Index);
if (v1a == v2a) {
if ((~v1Index) || (~v2Index)){
string v1b;
if (v1Index == -1 || v1Index==llStringLength(v1)) {
v1b="0";
} else {
v1b=llGetSubString(v1,v1Index+1,-1);
}
string v2b;
if (v2Index == -1 || v2Index==llStringLength(v2)) {
v2b="0";
} else {
v2b=llGetSubString(v2,v2Index+1,-1);
}
return compareVersions(v1b,v2b);
} else {
return FALSE;
}
}
return v1a > v2a;
}
AppsMenu(key kID, integer iAuth) {
string sPrompt="\nBrowse apps, extras and custom features.\n\nwww.opencollar.at/apps";
Dialog(kID, sPrompt, g_lAppsButtons, [UPMENU], 0, iAuth, "Apps");
}
AppearanceMenu(key kID, integer iAuth) {
string sPrompt;
string sLooksLockButton;
if (g_iAppLock){
sPrompt = "\nThe appearance of the "+CTYPE+" has been locked.\n\nAn owner must unlock it to allow modification.";
sLooksLockButton="☒ LooksLock";
} else {
sPrompt="\nMake changes to the "+CTYPE+"'s appearance.";
sLooksLockButton="☐ LooksLock";
}
sPrompt += "\n\nwww.opencollar.at/appearance";
Dialog(kID, sPrompt, [sLooksLockButton]+g_lAppearanceButtons, [UPMENU], 0, iAuth, "Appearance");
}
HelpMenu(key kID, integer iAuth) {
string sPrompt="\nOpenCollar Version "+g_sCollarVersion+"\n";
if(!g_iLatestVersion) sPrompt+="Update available!";
sPrompt+="\n\nPrefix: "+g_sPrefix+"\nChannel: "+(string)g_iListenChan+"\nSafeword: "+g_sSafeWord+"\n\nwww.opencollar.at/helpabout";
string sNewsButton="☐ News";
if (g_iNews){
sNewsButton="☒ News";
}
list lStaticButtons=[GIVECARD,CONTACT,LICENSE,sNewsButton,"Update"];
Dialog(kID, sPrompt, lStaticButtons, [UPMENU], 0, iAuth, "Help/About");
}
MainMenu(key kID, integer iAuth) {
string sPrompt="\nOpenCollar Version "+g_sCollarVersion;
if(!g_iLatestVersion) sPrompt+="\nUpdate available!";
sPrompt += "\n\nwww.opencollar.at/main-menu";
//Debug("max memory used: "+(string)llGetSPMaxMemory());
list lStaticButtons;
if (g_iLocked) lStaticButtons+="UNLOCK";
else lStaticButtons+="LOCK";
lStaticButtons+="Apps";
if (g_iAnimsMenu){
lStaticButtons+="Animations";
} else {
lStaticButtons+=" ";
}
if (llGetListLength(g_lAppearanceButtons)>0) {
lStaticButtons+="Appearance";
} else {
lStaticButtons+=" ";
}
lStaticButtons+="Leash";
if (g_iRlvMenu){
lStaticButtons+="RLV";
} else {
lStaticButtons+=" ";
}
lStaticButtons+=["Access","Options","Help/About"];
Dialog(kID, sPrompt, lStaticButtons, [], 0, iAuth, "Main");
}
NotifyOwners(string sMsg) {
integer n;
integer stop = llGetListLength(g_lOwners);
for (n = 0; n < stop; n += 2) {
Notify((key)llList2String(g_lOwners, n), sMsg, FALSE);
}
}
string GetTimestamp() { // Return a string of the date and time
string out;
string DateUTC = llGetDate();
if (llGetGMTclock() < 28800) { // that's 28800 seconds, a.k.a. 8 hours.
list DateList = llParseString2List(DateUTC, ["-", "-"], []);
integer year = llList2Integer(DateList, 0);
integer month = llList2Integer(DateList, 1);
integer day = llList2Integer(DateList, 2);
// day = day - 1; //Remember, remember, the 0th of November!
if(day==1) {
if(month==1) return (string)(year-1) + "-01-31";
else {
--month;
if(month==2) day = 28+(year%4==FALSE); //To do: fix before 28th feb 2100.
else day = 30+ (!~llListFindList([4,6,9,11],[month])); //31 days hath == TRUE
}
}
else --day;
out=(string)year + "-" + (string)month + "-" + (string)day;
} else out=llGetDate();
integer t = (integer)llGetWallclock(); // seconds since midnight
out += " " + (string)(t / 3600) + ":";
integer mins=(t % 3600) / 60;
if (mins <10){
out += "0";
}
out += (string)mins+":";
integer secs=t % 60;
if (secs < 10){
out += "0";
}
out += (string)secs;
return out;
}
BuildLockElementList()//EB
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
list lParams;
// clear list just in case
g_lOpenLockElements = [];
g_lClosedLockElements = [];
//root prim is 1, so start at 2
for (n = 2; n <= iLinkCount; n++)
{
// read description
lParams=llParseString2List((string)llGetObjectDetails(llGetLinkKey(n), [OBJECT_DESC]), ["~"], []);
// check inf name is lock name
if (llList2String(lParams, 0)==g_sLockPrimName || llList2String(lParams, 0)==g_sClosedLockPrimName)
{
// if so store the number of the prim
g_lClosedLockElements += [n];
}
else if (llList2String(lParams, 0)==g_sOpenLockPrimName)
{
// if so store the number of the prim
g_lOpenLockElements += [n];
}
}
}
SetLockElementAlpha() //EB
{
if (g_iHide) return ; // ***** if collar is hide, don't do anything
//loop through stored links, setting alpha if element type is lock
integer n;
//float fAlpha;
//if (g_iLocked) fAlpha = 1.0; else fAlpha = 0.0; //Let's just use g_iLocked!
integer iLinkElements = llGetListLength(g_lOpenLockElements);
for (n = 0; n < iLinkElements; n++)
{
llSetLinkAlpha(llList2Integer(g_lOpenLockElements,n), !g_iLocked, ALL_SIDES);
}
iLinkElements = llGetListLength(g_lClosedLockElements);
for (n = 0; n < iLinkElements; n++)
{
llSetLinkAlpha(llList2Integer(g_lClosedLockElements,n), g_iLocked, ALL_SIDES);
}
}
RebuildMenu()
{
//Debug("Rebuild Menu");
g_iAnimsMenu=FALSE;
g_iRlvMenu=FALSE;
g_iAppearanceMenu=FALSE;
g_lAppsButtons = [] ;
g_lAppearanceButtons = [];
llMessageLinked(LINK_SET, MENUNAME_REQUEST, "Main", "");
llMessageLinked(LINK_SET, MENUNAME_REQUEST, "AddOns", "");
llMessageLinked(LINK_SET, MENUNAME_REQUEST, "Apps", "");
llMessageLinked(LINK_SET, MENUNAME_REQUEST, "Appearance", "");
}
init (){
github_version_request = llHTTPRequest(version_check_url, [HTTP_METHOD, "GET", HTTP_VERBOSE_THROTTLE, FALSE], "");
g_iWaitRebuild = TRUE;
llSetTimerEvent(1);//delay menu rebuild until other scripts are ready
}
integer UserCommand(integer iNum, string sStr, key kID, integer fromMenu) {
if (iNum == COMMAND_EVERYONE) return TRUE; // No command for people with no privilege in this plugin.
else if (iNum > COMMAND_EVERYONE || iNum < COMMAND_OWNER) return FALSE; // sanity check
//Debug("Got message "+sStr);
list lParams = llParseString2List(sStr, [" "], []);
string sCmd = llToLower(llList2String(lParams, 0));
if (sCmd == "menu") {
string sSubmenu = llToLower(llList2String(lParams, 1));
if (sSubmenu == "main" || sSubmenu == "") MainMenu(kID, iNum);
else if (sSubmenu == "apps" || sSubmenu=="addons") AppsMenu(kID, iNum);
else if (sSubmenu == "help/about") HelpMenu(kID, iNum);
else if (sSubmenu == "appearance") AppearanceMenu(kID, iNum);
} else if (sStr == "license") {
if(llGetInventoryType("OpenCollar License")==INVENTORY_NOTECARD) llGiveInventory(kID,"OpenCollar License");
else Notify(kID,"License notecard missing from collar, sorry.", FALSE);
if (fromMenu) HelpMenu(kID, iNum);
} else if (sStr == "help") {
llGiveInventory(kID, HELPCARD);
if (fromMenu) HelpMenu(kID, iNum);
} else if (sStr =="about" || sStr=="help/about") HelpMenu(kID,iNum);
else if (sStr == "addons" || sStr=="apps") AppsMenu(kID, iNum);
else if (sStr == "appearance") AppearanceMenu(kID, iNum);
else if (sCmd == "menuto") {
key kAv = (key)llList2String(lParams, 1);
if (llGetAgentSize(kAv) != ZERO_VECTOR) //if kAv is an avatar in this region
{
if(llGetOwnerKey(kID)==kAv) MainMenu(kID, iNum); //if the request was sent by something owned by that agent, send a menu
else llMessageLinked(LINK_SET, COMMAND_NOAUTH, "menu", kAv); //else send an auth request for the menu
}
} else if (sCmd == "lock" || (!g_iLocked && sStr == "togglelock")) { //does anything use togglelock? If not, it'd be nice to get rid of it
//Debug("User command:"+sCmd);
if (iNum == COMMAND_OWNER || kID == g_kWearer ) { //primary owners and wearer can lock and unlock. no one else
//inlined old "Lock()" function
g_iLocked = TRUE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "Global_locked=1", "");
llMessageLinked(LINK_SET, RLV_CMD, "detach=n", "main");
llPlaySound(g_sLockSound, 1.0);
SetLockElementAlpha();//EB
Notify(kID,CTYPE + " has been locked.",TRUE);
}
else Notify(kID, "Sorry, only primary owners and wearer can lock the " + CTYPE + ".", FALSE);
if (fromMenu) MainMenu(kID, iNum);
} else if (sStr=="☒ LooksLock" || llToLower(sStr)=="lookslock off") {
if (iNum == COMMAND_OWNER) {
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "Appearance_Lock", "");
llMessageLinked(LINK_SET, iNum, "lockappearance 0", kID);
g_iAppLock=FALSE;
} else Notify(kID,"Only owners can change the looks lock.", FALSE);
if (fromMenu) AppearanceMenu(kID,iNum);
} else if (sStr=="☐ LooksLock" || llToLower(sStr)=="lookslock on") {
if (iNum == COMMAND_OWNER) {
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "Appearance_Lock" + "=1", "");
llMessageLinked(LINK_SET, iNum, "lockappearance 1", kID);
g_iAppLock=TRUE;
} else Notify(kID,"Only owners can change the looks lock.", FALSE);
if (fromMenu) AppearanceMenu(kID,iNum);
} else if (sStr == "runaway" || sCmd == "unlock" || (g_iLocked && sStr == "togglelock")) {
if (iNum == COMMAND_OWNER) { //primary owners can lock and unlock. no one else
//inlined old "Unlock()" function
g_iLocked = FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "Global_locked", "");
llMessageLinked(LINK_SET, RLV_CMD, "detach=y", "main");
llPlaySound(g_sUnlockSound, 1.0);
SetLockElementAlpha(); //EB
Notify(kID,CTYPE + " has been unlocked.",TRUE);
}
else Notify(kID, "Sorry, only primary owners can unlock the " + CTYPE + ".", FALSE);
if (fromMenu) MainMenu(kID, iNum);
} else if (sCmd == "fixmenus") {
if (kID == g_kWearer || iNum==COMMAND_OWNER){
RebuildMenu();
Notify(kID, "Rebuilding menus, this may take several seconds.", FALSE);
} else Notify(kID, "Sorry, only primary owners and wearer can fix menus.", FALSE);
} else if (sCmd == "news"){
if (kID == g_kWearer || iNum==COMMAND_OWNER){
if (sStr=="news off"){
g_iNews=FALSE;
Notify(kID,"News items will no longer be downloaded from the OpenCollar web site.",TRUE); //notify news off
} else if (sStr=="news on"){
g_iNews=TRUE;
Notify(kID,"News items will be downloaded from the OpenCollar web site when they are available.",TRUE); //notify news on
g_sLastNewsTime="0";
news_request = llHTTPRequest(news_url, [HTTP_METHOD, "GET", HTTP_VERBOSE_THROTTLE, FALSE], "");
} else {
g_sLastNewsTime="0";
news_request = llHTTPRequest(news_url, [HTTP_METHOD, "GET", HTTP_VERBOSE_THROTTLE, FALSE], "");
}
} else Notify(kID,"Only primary owners and wearer can change news settings.",FALSE);
if (fromMenu) HelpMenu(kID, iNum);
} else if (sCmd == "update") {
// if (llGetOwnerKey(kID) == g_kWearer) {
if (kID == g_kWearer) {
string sVersion = llList2String(llParseString2List(llGetObjectDesc(), ["~"], []), 1);
g_iWillingUpdaters = 0;
g_kCurrentUser = kID;
g_iUpdateAuth = iNum;
Notify(kID,"Searching for nearby updater",FALSE);
g_iUpdateHandle = llListen(g_iUpdateChan, "", "", "");
g_iUpdateFromMenu=fromMenu;
llWhisper(g_iUpdateChan, "UPDATE|" + sVersion);
g_iWaitUpdate = TRUE;
llSetTimerEvent(5.0); //set a timer to wait for responses from updaters
} else {
Notify(kID,"Only the wearer can update the " + CTYPE + ".",FALSE);
if (fromMenu) HelpMenu(kID, iNum);
}
} else if (sCmd == "version") {
Notify(kID, "I am running OpenCollar version " + g_sCollarVersion, FALSE);
} else if (sCmd == "objectversion") { // ping from an object, we answer to it on the object channel
integer iChan = (integer)("0x"+llGetSubString((string)g_kWearer,2,7)) + 1111;
if (iChan>0) iChan=iChan*(-1);
if (iChan > -10000) iChan -= 30000;
llSay(iChan,(string)g_kWearer+"\\version="+g_sCollarVersion);
} else if (sCmd == "attachmentversion") {
// Reply to version request from "garvin style" attachment
integer iInterfaceChannel = (integer)("0x" + llGetSubString(g_kWearer,30,-1));
if (iInterfaceChannel > 0) iInterfaceChannel = -iInterfaceChannel;
llRegionSayTo(g_kWearer, iInterfaceChannel, "version="+g_sCollarVersion);
}
return TRUE;
}
default {
on_rez(integer iParam) {
init();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner(); //updates in change event prompting script restart
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
BuildLockElementList(); //updates in change event, doesn;t need a reset every time
g_iScriptCount = llGetInventoryNumber(INVENTORY_SCRIPT); //updates on change event;
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "Global_locked", ""); //settings will send these on_rez, so no need to ask every rez
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "auth_owner", ""); //settings will send these on_rez, so no need to ask every rez
init(); //do stuf needed on_rez AND on script start
g_sPrefix=AutoPrefix();
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
// SA: delete this after transition is finished
if (iNum == COMMAND_NOAUTH) return;
// /SA
else if (iNum == MENUNAME_RESPONSE) {
//sStr will be in form of "parent|menuname"
//Debug("got menu button "+sStr);
list lParams = llParseString2List(sStr, ["|"], []);
string sName = llList2String(lParams, 0);
string sSubMenu = llList2String(lParams, 1);
if (sName=="AddOns" || sName=="Apps"){ //we only accept buttons for apps nemu
//Debug("we handle " + sName);
if (llListFindList(g_lAppsButtons, [sSubMenu]) == -1) {
g_lAppsButtons += [sSubMenu];
g_lAppsButtons = llListSort(g_lAppsButtons, 1, TRUE);
}
} else if (sName=="Appearance") { //and appearance
if (llListFindList(g_lAppearanceButtons, [sSubMenu]) == -1) {
g_lAppearanceButtons += [sSubMenu];
g_lAppearanceButtons = llListSort(g_lAppearanceButtons, 1, TRUE);
}
} else if (sStr=="Main|Animations"){
g_iAnimsMenu=TRUE;
} else if (sStr=="Main|RLV"){
g_iRlvMenu=TRUE;
// } else if (sStr=="Main|Appearance"){
// g_iAppearanceMenu=TRUE;
} else if (sStr=="Main|Customize"){
g_iCustomizeMenu=TRUE;
} else if (sStr=="Main|Paint"){
g_iPaintMenu=TRUE;
}
} else if (iNum == MENUNAME_REMOVE) {
//sStr should be in form of parentmenu|childmenu
list lParams = llParseString2List(sStr, ["|"], []);
string parent = llList2String(lParams, 0);
string child = llList2String(lParams, 1);
if (parent=="Apps" || parent=="AddOns") {
integer gutiIndex = llListFindList(g_lAppsButtons, [child]);
if (gutiIndex != -1) g_lAppsButtons = llDeleteSubList(g_lAppsButtons, gutiIndex, gutiIndex);
}
if (parent=="Appearance") {
integer gutiIndex = llListFindList(g_lAppsButtons, [child]);
if (gutiIndex != -1) g_lAppearanceButtons = llDeleteSubList(g_lAppearanceButtons, gutiIndex, gutiIndex);
}
} else if (iNum == DIALOG_RESPONSE) {
//Debug("Menu response");
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1) { //got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
//remove stride from g_lMenuIDs. We have to subtract from the index because the dialog id comes in the middle of the stride
string sMenu=llList2String(g_lMenuIDs, iMenuIndex + 1);
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
//process response
if (sMenu=="Main"){
//Debug("Main menu response: '"+sMessage+"'");
if (sMessage == "LOCK" || sMessage== "UNLOCK"){
//Debug("doing usercommand for lock/unlock");
UserCommand(iAuth, sMessage, kAv, TRUE);
} else if (sMessage == "Help/About"){
HelpMenu(kAv, iAuth);
} else if (sMessage == "Apps"){
AppsMenu(kAv, iAuth);
} else if (sMessage == "Appearance"){
AppearanceMenu(kAv, iAuth);
} else {
llMessageLinked(LINK_SET, iAuth, "menu "+sMessage, kAv);
}
} else if (sMenu=="Apps" || sMenu=="Appearance"){
//Debug("Apps menu response:"+sMessage);
if (sMessage == UPMENU) {
MainMenu(kAv, iAuth);
} else if (llSubStringIndex(sMessage,"LooksLock")==2) {
UserCommand(iAuth, sMessage, kAv, TRUE);
} else {
llMessageLinked(LINK_SET, iAuth, "menu "+sMessage, kAv);
}
} else if (sMenu=="Help/About"){
//Debug("Help menu response");
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else if (sMessage == "Settings") {
llMessageLinked(LINK_SET, iAuth, "menu settings", kAv);
} else if (sMessage == GIVECARD) {
UserCommand(iAuth,"help",kAv, TRUE);
} else if (sMessage == LICENSE) {
UserCommand(iAuth,"license",kAv, TRUE);
} else if (sMessage == CONTACT) {
g_kWebLookup = llHTTPRequest("https://raw.githubusercontent.com/lickx/opencollar-os/oscollar3/LSL/~contact", [HTTP_METHOD, "GET", HTTP_VERBOSE_THROTTLE, FALSE], "");
g_kCurrentUser = kAv;
HelpMenu(kAv, iAuth);
} else if (sMessage=="☐ News") {
//Debug("News on button");
UserCommand(iAuth, "news on", kAv, TRUE);
} else if (sMessage=="☒ News") {
//Debug("News off button");
UserCommand(iAuth, "news off", kAv, TRUE);
} else if (sMessage == "Update") UserCommand(iAuth,"update",kAv,TRUE);
}
}
}
else if (UserCommand(iNum, sStr, kID, FALSE)) return;
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == "Global_locked") {
g_iLocked = (integer)sValue;
SetLockElementAlpha(); //EB
} else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken == "auth_owner")
{
g_lOwners = llParseString2List(sValue, [","], []);
}
else if(sToken =="lock_locksound")
{
if(sValue=="default") g_sLockSound=g_sDefaultLockSound;
else if((key)sValue!=NULL_KEY || llGetInventoryType(sValue)==INVENTORY_SOUND) g_sLockSound=sValue;
}
else if (sToken == "Appearance_Lock") g_iAppLock = (integer)sValue;
else if(sToken =="lock_unlocksound")
{
if(sValue=="default") g_sUnlockSound=g_sDefaultUnlockSound;
else if((key)sValue!=NULL_KEY || llGetInventoryType(sValue)==INVENTORY_SOUND) g_sUnlockSound=sValue;
}
else if (sToken == "listener_channel") g_iListenChan = llList2Integer(llParseString2List(sValue,[","],[]),0);
else if (sToken == "listener_safeword") g_sSafeWord = sValue;
else if (sToken == "Global_prefix") g_sPrefix = sValue;
else if (sToken == "Global_news") g_iNews = (integer)sValue;
else if (sStr == "settings=sent") {
if (g_iNews) news_request = llHTTPRequest(news_url, [HTTP_METHOD, "GET", HTTP_VERBOSE_THROTTLE, FALSE], "");
} else if (sToken=="Global_WearerName") WEARERNAME=sValue;
}
else if (iNum == DIALOG_TIMEOUT)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
//remove stride from g_lMenuIDs
//we have to subtract from the index because the dialog id comes in the middle of the stride
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
}
else if (iNum == LM_SETTING_SAVE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == "auth_owner") g_lOwners = llParseString2List(sValue, [","], []);
else if (sToken == "listener_channel") g_iListenChan = llList2Integer(llParseString2List(sValue,[","],[]),0);
else if (sToken == "listener_safeword") g_sSafeWord = sValue;
else if (sToken == "Global_prefix") g_sPrefix = sValue;
}
else if (iNum == RLV_REFRESH || iNum == RLV_CLEAR)
{
if (g_iLocked) llMessageLinked(LINK_SET, RLV_CMD, "detach=n", "main");
else llMessageLinked(LINK_SET, RLV_CMD, "detach=y", "main");
}
}
attach(key kID)
{
if (g_iLocked)
{
if(kID == NULL_KEY)
{
g_bDetached = TRUE;
NotifyOwners(WEARERNAME + " has detached me while locked at " + GetTimestamp() + "!");
}
else if(g_bDetached)
{
NotifyOwners(WEARERNAME + " has re-atached me at " + GetTimestamp() + "!");
g_bDetached = FALSE;
}
}
}
http_response(key id, integer status, list meta, string body){
if (status == 200) { // be silent on failures.
if (id == g_kWebLookup){
Notify(g_kCurrentUser,body,FALSE);
} else if (id == github_version_request) { // strip the newline off the end of the text
if (compareVersions(llStringTrim(body, STRING_TRIM),g_sCollarVersion)) g_iLatestVersion=FALSE;
else g_iLatestVersion=TRUE;
} else if (id == news_request) { // We got a response back from the news page on Github. See if it's new enough to report to the user.
// The first line of a news item should be space delimited list with timestamp in format yyyymmdd.n as the last field, where n is the number of messages on this day
string firstline = llList2String(llParseString2List(body, ["\n"], []), 0);
list firstline_parts = llParseString2List(firstline, [" "], []);
string this_news_time = llList2String(firstline_parts, -1);
if (compareVersions(this_news_time,g_sLastNewsTime)) {
string news = "Newsflash " + body;
llOwnerSay(news);
g_sLastNewsTime = this_news_time;
}
}
}
}
listen(integer channel, string name, key id, string message) {
if (llGetOwnerKey(id) == g_kWearer) { //collar and updater have to have the same Owner else do nothing!
list lTemp = llParseString2List(message, [","],[]);
string sCommand = llList2String(lTemp, 0);
if( message == "get ready") {
g_iWillingUpdaters++;
g_kUpdaterOrb = id;
}
}
}
timer() {
if (g_iWaitUpdate) {
g_iWaitUpdate = FALSE;
llListenRemove(g_iUpdateHandle);
if (!g_iWillingUpdaters) { //if no updaters responded, get upgrader info from web and remenu
g_kWebLookup = llHTTPRequest("https://raw.githubusercontent.com/OpenCollar/OpenCollarUpdater/main/LSL/~update", [HTTP_METHOD, "GET", HTTP_VERBOSE_THROTTLE, FALSE], "");
if (g_iUpdateFromMenu) HelpMenu(g_kCurrentUser,g_iUpdateAuth);
} else if (g_iWillingUpdaters > 1) { //if too many updaters, PANIC!
Notify(g_kCurrentUser,"Multiple updaters were found within 10m. Please remove all but one and try again",FALSE);
} else { //perform update
integer pin = (integer)llFrand(99999998.0) + 1; //set a random pin
llSetRemoteScriptAccessPin(pin);
llRegionSayTo(g_kUpdaterOrb, g_iUpdateChan, "ready|" + (string)pin );
}
}
if (g_iWaitRebuild) {
g_iWaitRebuild = FALSE;
RebuildMenu();
}
if (!g_iWaitUpdate && !g_iWaitRebuild) llSetTimerEvent(0.0);
}
changed(integer iChange)
{
if (iChange & CHANGED_INVENTORY)
{
if (llGetInventoryNumber(INVENTORY_SCRIPT) != g_iScriptCount) { //a script has been added or removed. Reset to rebuild menu
RebuildMenu(); //llResetScript();
}
g_iScriptCount=llGetInventoryNumber(INVENTORY_SCRIPT);
}
if (iChange & CHANGED_OWNER) llResetScript();
if (iChange & CHANGED_COLOR) // *********************
{
integer iNewHide=!(integer)llGetAlpha(ALL_SIDES) ; //check alpha
if (g_iHide != iNewHide){ //check there's a difference to avoid infinite loop
g_iHide = iNewHide;
SetLockElementAlpha(); // update hide elements
}
}
if (iChange & CHANGED_LINK) BuildLockElementList(); // need rebuils lockelements list
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,507 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - meshlabel //
// version 160727.1 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sParentMenu = "Apps";
string g_sSubMenu = "Label";
key g_kWearer;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
//opencollar MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the httpdb
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer g_iCharLimit = -1;
string UPMENU = "BACK";
string CTYPE = "collar";
string g_sTextMenu = "Set Label";
string g_sFontMenu = "Font";
string g_sColorMenu = "Color";
key g_kDialogID;
key g_kTBoxID;
key g_kFontID;
key g_kColorID;
list g_lColours=[
"Gray Shade",<0.70588, 0.70588, 0.70588>,
"Gold Shade",<0.69020, 0.61569, 0.43529>,
"Baby Pink",<1.00000, 0.52157, 0.76078>,
"Hot Pink",<1.00000, 0.05490, 0.72157>,
"Firefighter",<0.88627, 0.08627, 0.00392>,
"Flame",<0.92941, 0.43529, 0.00000>,
"Matrix",<0.07843, 1.00000, 0.07843>,
"Electricity",<0.00000, 0.46667, 0.92941>,
"Violet Wand",<0.63922, 0.00000, 0.78824>,
"Black",<0.00000, 0.00000, 0.00000>,
"White",<1.00000, 1.00000, 1.00000>
];
string g_sCharmap = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƒƠơƯưǰǺǻǼǽǾǿȘșʼˆˇˉ˘˙˚˛˜˝˳̣̀́̃̉̏΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϑϒϖЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀҁ҂҃҄҅҆҈҉ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӁӂӃӄӅӆӇӈӉӊӋӌӍӎӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓḀḁḾḿẀẁẂẃẄẅẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹὍ–—―‗‘’‚‛“”„†‡•…‰′″‹›‼⁄ⁿ₣₤₧₫€℅ℓ№™Ω℮⅛⅜⅝⅞∂∆∏∑−√∞∫≈≠≤≥◊fiflffiffl ";
list g_lFonts = [
"Solid", "464e8b47-d578-4e24-a671-de7c2f2b7a24",
"Outlined", "efeb123d-a014-4586-8012-62086272ccaf"
];
key g_kFontTexture = "464e8b47-d578-4e24-a671-de7c2f2b7a24";
integer x = 45;
integer y = 19;
integer faces = 6;
float g_fScrollTime = 0.3 ;
integer g_iSctollPos ;
string g_sScrollText;
list g_lLabelLinks ;
integer g_iScroll = FALSE;
integer g_iShow;
vector g_vColor = <1,1,1>;
string g_sLabelText = "";
string g_sSettingToken = "label_";
//string g_sGlobalToken = "global_";
float Ureps;
float Vreps;
string g_sScript = "label_";
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
integer GetIndex(string sChar) {
integer i;
if (sChar == "") return 854;
else i = llSubStringIndex(g_sCharmap, sChar);
if (i>=0) return i;
else return 854;
}
RenderString(integer iPos, string sChar) { // iPos - позиция символа на лейбле
integer frame = GetIndex(sChar); //номер символа в таблице
integer i = iPos/faces;
integer link = llList2Integer(g_lLabelLinks,i);
integer face = iPos - faces * i;
integer frameY = frame / x;
integer frameX = frame - x * frameY;
float Uoffset = -0.5 + (Ureps/2 + Ureps*(frameX)) ;
float Voffset = 0.5 - (Vreps/2 + Vreps*(frameY)) ;
llSetLinkPrimitiveParamsFast(link, [PRIM_TEXTURE, face, g_kFontTexture, <Ureps, Vreps,0>, <Uoffset, Voffset, 0>, 0]);
}
SetColor() {
integer i=0;
do {
integer iLink = llList2Integer(g_lLabelLinks,i);
float fAlpha = llList2Float(llGetLinkPrimitiveParams( iLink,[PRIM_COLOR,ALL_SIDES]),1);
llSetLinkPrimitiveParamsFast(iLink, [PRIM_COLOR, ALL_SIDES, g_vColor, fAlpha]);
} while (++i < llGetListLength(g_lLabelLinks));
}
// find all 'Label' prims, count and store it's link numbers for fast work SetLabel() and timer
integer LabelsCount() {
integer ok = TRUE ;
g_lLabelLinks = [] ;
string sLabel;
list lTmp;
integer iLink;
integer iLinkCount = llGetNumberOfPrims();
//find all 'Label' prims and count it's
for(iLink=2; iLink <= iLinkCount; iLink++) {
lTmp = llParseString2List(llList2String(llGetLinkPrimitiveParams(iLink,[PRIM_NAME]),0), ["~"],[]);
sLabel = llList2String(lTmp,0);
if(sLabel == "MeshLabel") {
g_lLabelLinks += [0]; // fill list witn nulls
//change prim description
llSetLinkPrimitiveParamsFast(iLink,[PRIM_DESC,"Label~notexture~nocolor~nohide~noshiny"]);
}
}
g_iCharLimit = llGetListLength(g_lLabelLinks) * 6;
//find all 'Label' prims and store it's links to list
for(iLink=2; iLink <= iLinkCount; iLink++) {
lTmp = llParseString2List(llList2String(llGetLinkPrimitiveParams(iLink,[PRIM_NAME]),0), ["~"],[]);
sLabel = llList2String(lTmp,0);
if (sLabel == "MeshLabel") {
integer iLabel = (integer)llList2String(lTmp,1);
integer link = llList2Integer(g_lLabelLinks,iLabel);
if (link == 0)
g_lLabelLinks = llListReplaceList(g_lLabelLinks,[iLink],iLabel,iLabel);
else {
ok = FALSE;
llOwnerSay("Warning! Found duplicated label prims: "+sLabel+" with link numbers: "+(string)link+" and "+(string)iLink);
}
}
}
if (!ok) {
if ((~llSubStringIndex(llGetObjectName(),"Installer")) && (~llSubStringIndex(llGetObjectName(),"Updater")))
return 1;
}
return ok;
}
SetLabel() {
string sText ;
if (g_iShow) sText = g_sLabelText;
string sPadding;
if(g_iScroll==TRUE) {
while(llStringLength(sPadding) < g_iCharLimit) sPadding += " ";
g_sScrollText = sPadding + sText;
llSetTimerEvent(g_fScrollTime);
} else {
g_sScrollText = "";
llSetTimerEvent(0);
//inlined single use CenterJustify function
while(llStringLength(sPadding + sText + sPadding) < g_iCharLimit) sPadding += " ";
sText = sPadding + sText;
integer iCharPosition;
for(iCharPosition=0; iCharPosition < g_iCharLimit; iCharPosition++)
RenderString(iCharPosition, llGetSubString(sText, iCharPosition, iCharPosition));
}
//Debug("Label Set");
}
MainMenu(key kID, integer iAuth)
{
list lButtons= [g_sTextMenu, g_sColorMenu, g_sFontMenu];
if (g_iShow) lButtons += ["☒ Show"];
else lButtons += ["☐ Show"];
if (g_iScroll) lButtons += ["☒ Scroll"];
else lButtons += ["☐ Scroll"];
string sPrompt = "\nCustomize the " + CTYPE + "'s label!\n\nwww.opencollar.at/label";
g_kDialogID=Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
TextMenu(key kID, integer iAuth)
{
string sPrompt="\n- Submit the new label in the field below.\n- Submit a few spaces to clear the label.\n- Submit a blank field to go back to " + g_sSubMenu + ".\n\nwww.opencollar.at/label";
g_kTBoxID = Dialog(kID, sPrompt, [], [], 0, iAuth);
}
ColorMenu(key kID, integer iAuth)
{
string sPrompt = "\n\nSelect a colour from the list";
list lColourNames;
integer numColours=llGetListLength(g_lColours)/2;
while (numColours--)
{
lColourNames+=llList2String(g_lColours,numColours*2);
}
g_kColorID=Dialog(kID, sPrompt, lColourNames, [UPMENU], 0, iAuth);
}
FontMenu(key kID, integer iAuth)
{
list lButtons=llList2ListStrided(g_lFonts,0,-1,2);
string sPrompt = "\nSelect the font for the " + CTYPE + "'s label.\n\nNOTE: This feature requires a design with label prims. If the worn design doesn't have any of those, it is recommended to uninstall Label with the updater.\n\nwww.opencollar.at/label";
g_kFontID=Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
integer UserCommand(integer iAuth, string sStr, key kAv)
{
if (iAuth > COMMAND_WEARER || iAuth < COMMAND_OWNER) return FALSE; // sanity check
if (iAuth == COMMAND_OWNER || !g_iAppLock)
{
if (sStr == "menu " + g_sSubMenu || llToLower(sStr)=="label")
{
MainMenu(kAv, iAuth);
return TRUE;
}
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
if (sCommand == "lockappearance" && iAuth == COMMAND_OWNER) {
if (llToLower(llList2String(lParams, 1)) == "0") g_iAppLock = FALSE;
else g_iAppLock = TRUE;
} else if (sCommand == "labeltext") {
g_sLabelText = llStringTrim(llDumpList2String(llDeleteSubList(lParams,0,0)," "),STRING_TRIM);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "text=" + g_sLabelText, "");
if (llStringLength(g_sLabelText) > g_iCharLimit) {
string sDisplayText = llGetSubString(g_sLabelText, 0, g_iCharLimit-1);
Notify(kAv,"Unless you set your label to scroll it will be truncated at "+sDisplayText+".", FALSE);
}
SetLabel();
} else if (sCommand == "labelfont") {
lParams = llDeleteSubList(lParams, 0, 0);
string font = llDumpList2String(lParams, " ");
integer iIndex = llListFindList(g_lFonts, [font]);
if (iIndex != -1)
{
g_kFontTexture = (key)llList2String(g_lFonts, iIndex + 1);
SetLabel();
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "font=" + (string)g_kFontTexture, "");
}
else FontMenu(kAv, iAuth);
} else if (sCommand == "labelcolor") {
string sColour= llDumpList2String(llDeleteSubList(lParams,0,0)," ");
integer colourIndex=llListFindList(g_lColours,[sColour]);
if (~colourIndex)
{
g_vColor=(vector)llList2String(g_lColours,colourIndex+1);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"color="+(string)g_vColor, "");
SetColor();
}
} else if (sCommand == "labelshow") {
g_iShow = llList2Integer(lParams, 1);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"show="+(string)g_iShow, "");
SetLabel();
} else if (sCommand == "labelscroll") {
g_iScroll = llList2Integer(lParams, 1);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"scroll="+(string)g_iScroll, "");
SetLabel();
}
}
else if ((iAuth >= COMMAND_SECOWNER && iAuth <= COMMAND_WEARER) && g_iAppLock)
{
string sCommand = llToLower(llList2String(llParseString2List(sStr, [" "], []), 0));
if (sStr=="menu "+g_sSubMenu)
{
llMessageLinked(LINK_SET, iAuth, "menu "+g_sParentMenu, kAv);
Notify(kAv,"Only owners can change the label!", FALSE);
}
else if (sCommand=="labeltext" || sCommand == "labelfont" || sCommand == "labelcolor" || sCommand == "labelshow")
{
Notify(kAv,"Only owners can change the label!", FALSE);
}
}
return TRUE;
}
default
{
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "meshlabel_";
g_kWearer = llGetOwner();
Ureps = (float)1 / x;
Vreps = (float)1 / y;
LabelsCount();
if (g_iCharLimit <= 0) {
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu + "|" + g_sSubMenu, "");
llRemoveInventory(llGetScriptName());
}
// g_sLabelText = llList2String(llParseString2List(llKey2Name(llGetOwner()), [" "], []), 0);
//SetLabel();
//Debug("Starting");
}
on_rez(integer iNum) {
if (g_kWearer != llGetOwner()) {
g_sLabelText = "";
SetLabel();
}
llResetScript();
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if ( UserCommand(iNum, sStr, kID) ) {}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "text") g_sLabelText = sValue;
else if (sToken == "font") g_kFontTexture = (key)sValue;
else if (sToken == "color") g_vColor = (vector)sValue;
else if (sToken == "show") g_iShow = (integer)sValue;
else if (sToken == "scroll") g_iScroll = (integer)sValue;
}
else if (sToken == g_sAppLockToken) g_iAppLock = (integer)sValue;
else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken == "settings" && sValue == "sent") {
SetColor();
SetLabel();
}
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == DIALOG_RESPONSE)
{
if (kID==g_kDialogID)
{
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU) llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
else if (sMessage == g_sTextMenu) TextMenu(kAv, iAuth);
else if (sMessage == g_sColorMenu) ColorMenu(kAv, iAuth);
else if (sMessage == g_sFontMenu) FontMenu(kAv, iAuth);
else if (sMessage == "☐ Show")
{
UserCommand(iAuth, "labelshow 1", kAv);
MainMenu(kAv, iAuth);
}
else if (sMessage == "☒ Show")
{
UserCommand(iAuth, "labelshow 0", kAv);
MainMenu(kAv, iAuth);
}
else if (sMessage == "☐ Scroll")
{
UserCommand(iAuth, "labelscroll 1", kAv);
MainMenu(kAv, iAuth);
}
else if (sMessage == "☒ Scroll")
{
UserCommand(iAuth, "labelscroll 0", kAv);
MainMenu(kAv, iAuth);
}
}
else if (kID == g_kColorID)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else
{
UserCommand(iAuth, "labelcolor "+sMessage, kAv);
ColorMenu(kAv, iAuth);
}
}
else if (kID == g_kFontID)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else
{
UserCommand(iAuth, "labelfont " + sMessage, kAv);
FontMenu(kAv, iAuth);
}
}
else if (kID == g_kTBoxID) // TextBox response, extract values
{
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage != "") UserCommand(iAuth, "labeltext " + sMessage, kAv);
llMessageLinked(LINK_ROOT, iAuth, "menu " + g_sSubMenu, kAv);
}
}
}
timer()
{
string sText = llGetSubString(g_sScrollText, g_iSctollPos, -1);
integer iCharPosition;
for(iCharPosition=0; iCharPosition < g_iCharLimit; iCharPosition++)
{
RenderString(iCharPosition, llGetSubString(sText, iCharPosition, iCharPosition));
}
g_iSctollPos++;
if(g_iSctollPos > llStringLength(g_sScrollText)) g_iSctollPos = 0 ;
}
changed(integer change) {
if(change & CHANGED_LINK) // if links changed
{
if (LabelsCount()==TRUE) SetLabel();
}
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,420 +0,0 @@
// Template for creating a OpenCollar Plugin
// API Version: 3.9
// Licensed under the GPLv2, with the additional requirement that these scripts
// remain "full perms" in Second Life. See "OpenCollar License" for details.
// Please agressively remove any unneeded code sections to save memory and sim time
string SUBMENU_BUTTON = "Plugin"; // Name of the submenu
string COLLAR_PARENT_MENU = "Apps"; // name of the menu, where want to plug it in
string PLUGIN_CHAT_COMMAND = "plugin"; // every menu should have a chat command, so the user can easily access it by type for instance *plugin
integer IN_DEBUG_MODE = FALSE; // set to TRUE to enable Debug messages
key g_kMenuID; // menu handler
key g_kWearer; // key of the current wearer to reset only on owner changes
string g_sScript; // part of script name used for settings
string CTYPE = "collar"; // designer can set in notecard to appropriate word for their item
// any local, not changing buttons which will be used in this plugin, leave empty or add buttons as you like:
list PLUGIN_BUTTONS = ["Command 1", "Command 2", "AuthCommand"];
list g_lButtons;
// OpenCollar MESSAGE MAP
// messages for authenticating users
// integer COMMAND_NOAUTH = 0; // for reference, but should usually not be in use inside plugins
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510;
integer COMMAND_RELAY_SAFEWORD = 511;
integer COMMAND_BLACKLIST = 520;
// added for timer so when the sub is locked out they can use postions
integer COMMAND_WEARERLOCKEDOUT = 521;
integer ATTACHMENT_REQUEST = 600;
integer ATTACHMENT_RESPONSE = 601;
integer ATTACHMENT_FORWARD = 610;
integer WEARERLOCKOUT = 620; // turns on and off wearer lockout
// integer SEND_IM = 1000; deprecated. each script should send its own IMs now.
// This is to reduce even the tiny bit of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
// messages for storing and retrieving values from settings store
integer LM_SETTING_SAVE = 2000; // scripts send messages on this channel to have settings saved to settings store
// str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001; // when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002; // the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003; // delete token from settings store
integer LM_SETTING_EMPTY = 2004; // sent by settings script when a token has no value in the settings store
integer LM_SETTING_REQUEST_NOCACHE = 2005;
// messages for creating OC menu structure
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
// messages for RLV commands
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001; // RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002; // RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; // RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer RLV_QUERY = 6102; //query from a script asking if RLV is currently functioning
integer RLV_RESPONSE = 6103; //reply to RLV_QUERY, with "ON" or "OFF" as the message
// messages for poses and couple anims
integer ANIM_START = 7000; // send this with the name of an anim in the string part of the message to play the anim
integer ANIM_STOP = 7001; // send this with the name of an anim in the string part of the message to stop the anim
integer CPLANIM_PERMREQUEST = 7002; // id should be av's key, str should be cmd name "hug", "kiss", etc
integer CPLANIM_PERMRESPONSE = 7003; // str should be "1" for got perms or "0" for not. id should be av's key
integer CPLANIM_START = 7004; // str should be valid anim name. id should be av
integer CPLANIM_STOP = 7005; // str should be valid anim name. id should be av
// messages to the dialog helper
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer FIND_AGENT = -9005; // to look for agent(s) in region with a (optional) search string
key REQUEST_KEY;
integer TIMER_EVENT = -10000; // str = "start" or "end". For start, either "online" or "realtime".
integer UPDATE = 10001; // for child prim scripts (currently none in 3.8, thanks to LSL new functions)
// For other things that want to manage showing/hiding keys.
integer KEY_VISIBLE = -10100;
integer KEY_INVISIBLE = -10100;
integer COMMAND_PARTICLE = 20000;
integer COMMAND_LEASH_SENSOR = 20001;
//chain systems
integer LOCKMEISTER = -8888;
integer LOCKGUARD = -9119;
//rlv relay chan
integer RLV_RELAY_CHANNEL = -1812221819;
// menu option to go one step back in menustructure
string UPMENU = "^"; // when your menu hears this, give the parent menu
//===============================================================================
//= parameters : string sMsg message string received
//=
//= return : none
//=
//= description : output debug messages
//=
//===============================================================================
Debug(string sMsg) {
if (!IN_DEBUG_MODE) {
return;
}
llOwnerSay(llGetScriptName() + " [DEBUG]: " + sMsg);
}
//===============================================================================
//= parameters : key kID key of the avatar that receives the message
//= string sMsg message to send
//= integer iAlsoNotifyWearer if TRUE, a copy of the message is sent to the wearer
//=
//= return : none
//=
//= description : notify targeted id and maybe the wearer
//=
//===============================================================================
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
//===============================================================================
//= parameters : key kRCPT recipient of the dialog
//= string sPrompt dialog prompt
//= list lChoices true dialog buttons
//= list lUtilityButtons utility buttons (kept on every iPage)
//= integer iPage Page to be display
//=
//= return : key handler of the dialog
//=
//= description : displays a dialog to the given recipient
//=
//===============================================================================
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
return kID;
}
//===============================================================================
//= parameters : string keyID key of person requesting the menu
//=
//= return : none
//=
//= description : build menu and display to user
//=
//===============================================================================
DoMenu(key keyID, integer iAuth) {
string sPrompt = "Pick an option.\n";
list lMyButtons = PLUGIN_BUTTONS + g_lButtons;
//fill in your button list and additional prompt here
lMyButtons = llListSort(lMyButtons, 1, TRUE); // resort menu buttons alphabetical
// and dispay the menu
g_kMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
}
//===============================================================================
//= parameters : auth: integer (avatar auth level)
//= type: string; user-defined label; what to do with result
//= name: search string (optional) full or partial name to seek
//= user: key; Requesting Agent (menu user / chat commander)
//=
//= return : none
//=
//= description : request agent key, searching in region, with name as criteria
//=
//===============================================================================
FetchAvi(integer auth, string type, string name, key user)
{
if (name == "") name = " "; // getavi requires a value here - blank will search with no string
string out = llDumpList2String(["getavi_", g_sScript, user, auth, type, name], "|");
// sometimes, you want to exclude possible finds, such as if they exist in a list you are adding to
// do not search for these names (can be partial string)
list exclude = ["source list"];
if (llGetListLength(exclude))
out += "|" + llDumpList2String(exclude, ",");
llMessageLinked(LINK_THIS, FIND_AGENT, out, REQUEST_KEY = llGenerateKey());
}
//===============================================================================
//= parameters : iNum: integer parameter of link message (avatar auth level)
//= sStr: string parameter of link message (command name)
//= kID: key parameter of link message (user key, usually)
//=
//= return : TRUE if the command was handled, FALSE otherwise
//=
//= description : handles user chat commands (also used as backend for menus)
//=
//===============================================================================
integer UserCommand(integer iNum, string sStr, key kID) {
if (!(iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)) {
return FALSE;
}
// a validated command from a owner, secowner, groupmember or the wearer has been received
// can also be used to listen to chat commands
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
string sValue = llToLower(llList2String(lParams, 1));
// So commands can accept a value
if (sStr == "reset") {
// it is a request for a reset
if (iNum == COMMAND_WEARER || iNum == COMMAND_OWNER) {
//only owner and wearer may reset
llResetScript();
}
}
else if (sStr == PLUGIN_CHAT_COMMAND || sStr == "menu " + SUBMENU_BUTTON) {
// an authorized user requested the plugin menu by typing the menus chat command
DoMenu(kID, iNum);
}
else if (sStr == "yourcommandhere") {
// example for a command which can be invoked by chat and/or menu, replace yourcommandhere by what you need
Debug("Do some fancy stuff to impress the user");
// maybe save a value to the setting store:
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + "token=value", "");
// or delete a toke from the setting store:
llMessageLinked(LINK_THIS, LM_SETTING_DELETE, g_sScript + "token", "");
}
return TRUE;
}
default {
state_entry()
{
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
// store key of wearer
g_kWearer = llGetOwner();
// sleep a second to allow all scripts to be initialized
llSleep(1);
// send request to main menu and ask other menus if they want to register with us
//llMessageLinked(LINK_THIS, MENUNAME_REQUEST, SUBMENU_BUTTON, "");
//llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, COLLAR_PARENT_MENU + "|" + SUBMENU_BUTTON, "");
}
// Reset the script if wearer changes. By only reseting on owner change we can keep most of our
// configuration in the script itself as global variables, so that we don't loose anything in case
// the settings store isn't available, and also keep settings that were not sent to that store
// in the first place.
// Cleo: As per Nan this should be a reset on every rez, this has to be handled as needed, but be prepared that the user can reset your script anytime using the OC menus
on_rez(integer iParam) {
if (llGetOwner()!=g_kWearer) {
// Reset if wearer changed
llResetScript();
}
}
// listen for linked messages from OC scripts
link_message(integer iSender, integer iNum, string sStr, key kID) {
if (iNum == MENUNAME_REQUEST && sStr == COLLAR_PARENT_MENU) {
// our parent menu requested to receive buttons, so send ours
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, COLLAR_PARENT_MENU + "|" + SUBMENU_BUTTON, "");
g_lButtons = [] ;
llMessageLinked(LINK_THIS, MENUNAME_REQUEST, SUBMENU_BUTTON, "");
}
else if (iNum == MENUNAME_RESPONSE) {
// a button is send to be added to a menu
list lParts = llParseString2List(sStr, ["|"], []);
if (llList2String(lParts, 0) == SUBMENU_BUTTON) {
// someone wants to stick something in our menu
string button = llList2String(lParts, 1);
if (llListFindList(g_lButtons, [button]) == -1) {
// if the button isnt in our menu yet, than we add it
g_lButtons = llListSort(g_lButtons + [button], 1, TRUE);
}
}
}
else if (iNum == LM_SETTING_RESPONSE)
{
// response from setting store have been received
// pares the answer
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
// and check if any values for use are received
// replace "value1" by your own token
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "value1" )
{
// work with the received values
}
// replace "value2" by your own token, but if possible try to store everything in one token
// to reduce the load on the setting store (especially if it is implemented as a webservice... )
else if (sToken == "value2")
{
// work with the received values
}
}
// or check for specific values from the collar like "auth_owner" (for owners) "auth_secowners" (for secondary owners) etc
else if (sToken == "auth_owner")
{
// work with the received values, in this case pare the vlaue into a strided list with the owners
list lOwners = llParseString2List(sValue, [","], []);
}
else if (sToken == "Global_CType") CTYPE = sValue;
}
else if (UserCommand(iNum, sStr, kID)) {
// do nothing more if TRUE
}
else if (iNum == COMMAND_EVERYONE) {
// you might want to react on unauthorized users or such, see message map on the top of the script, please remove if not needed
Debug("Go away and get your own sub, you have no right on this " + CTYPE + "");
}
else if (iNum == COMMAND_SAFEWORD) {
// Safeword has been received, release any restricitions that should be released
Debug("Safeword received, releasing the subs restricions as needed");
}
else if (iNum == DIALOG_RESPONSE) {
// answer from menu system
// careful, don't use the variable kID to identify the user, it is the UUID we generated when calling the dialog
// you have to parse the answer from the dialog system and use the parsed variable kAv
if (kID == g_kMenuID) {
//got a menu response meant for us, extract the values
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0); // avatar using the menu
string sMessage = llList2String(lMenuParams, 1); // button label
integer iPage = (integer)llList2String(lMenuParams, 2); // menu page
integer iAuth = (integer)llList2String(lMenuParams, 3); // auth level of avatar
// request to switch to parent menu
if (sMessage == UPMENU) {
//give av the parent menu
llMessageLinked(LINK_THIS, iAuth, "menu "+COLLAR_PARENT_MENU, kAv);
}
else if (~llListFindList(PLUGIN_BUTTONS, [sMessage])) {
//we got a response for something we handle locally
if (sMessage == "Command 1") {
// do What has to be Done
Debug("Command 1");
// and restart the menu if wanted/needed
DoMenu(kAv, iAuth);
}
else if (sMessage == "Command 2") {
// do What has to be Done
Debug("Command 2");
// and restart the menu if wanted/needed
DoMenu(kAv, iAuth);
}
else if (sMessage == "AuthCommand") {
// we assume the action assoctiated to the button also
// has a chat command trigger, which we call here,
// thus finally handling menu and chat the same way
UserCommand(iAuth, "yourcommandhere", kAv);
// then we show the menu again
DoMenu(kAv, iAuth);
}
}
else if (~llListFindList(g_lButtons, [sMessage])) {
//we got a button which another plugin put into into our menu
llMessageLinked(LINK_THIS, iAuth, "menu "+ sMessage, kAv);
}
}
}
else if (iNum == DIALOG_TIMEOUT) {
// timeout from menu system, you do not have to react on this, but you can
if (kID == g_kMenuID) {
// if you react, make sure the timeout is from your menu by checking the g_kMenuID variable
Debug("The user was to slow or lazy, we got a timeout!");
}
}
else if (iNum == FIND_AGENT)
{
if (kID != REQUEST_KEY) return; // if we didn't request it, we won't know what to do with it
list params = llParseString2List(sStr, ["|"], []);
if (llList2String(params, 0) != g_sScript) return; // not sent to us
key kUser = (key)llList2String(params, 2); // requesting user key, for Notify or more menus
integer iAuth = (integer)llList2String(params, 3); // auth level of user
string sType = llList2String(params, 4); // we sent this string as an identifier for what to do with the result
key kNew = (key)llList2String(params, 5); // this is the key for whatever agent we picked by name
if (sType == "our type identifier")
{ // examples
// g_lMyList += [kNew];
// Notify(kUser, "I think " + llKey2Name(kNew) + " likes you", FALSE);
}
}
}
}

View File

@@ -1,23 +0,0 @@
// OpenCollar - remote template
// Licensed under the GPLv2, with the additional requirement that these scripts remain "full perms" in Second Life. See "OpenCollar License" for details.
key kToucher;
Debug(string in)
{
//llOwnerSay(llGetScriptName() + ": " + in);
}
integer GetOwnerChannel(key kOwner, integer iOffset)
{
integer iChan = (integer)("0x"+llGetSubString((string)kOwner,2,7)) + iOffset;
if (iChan>0)
{
iChan=iChan*(-1);
}
if (iChan > -10000)
{
iChan -= 30000;
}
return iChan;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,924 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - rlvfolders //
// version 3.989.1 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sParentMenu = "Un/Dress";
list g_lChildren = ["Browse #RLV", "#RLV History"];
//MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//sStr must be in form of "token=value"
//integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
//integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; //RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer RLVA_VERSION = 6004; //RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
string PARENT = "⏎";
string ACTIONS_CURRENT = "Actions";
string ROOT_ACTIONS = "Global Actions";
string UPMENU = "BACK";
//string MORE = ">";
// Folder actions
//string ALL = "*All*";
//string SELECT_CURRENT = "*This*";
string REPLACE_ALL = "Replace all";
string ADD_ALL = "Add all";
string DETACH_ALL = "Detach all";
string REPLACE = "Replace this";
string ADD = "Add this";
string DETACH = "Detach this";
string LOCK_ATTACH_ALL = "Lock att. all";
string LOCK_DETACH_ALL = "Lock det. all";
string LOCK_ATTACH = "Lock att. this";
string LOCK_DETACH = "Lock det. this";
integer g_iUnsharedLocks = 0; // 2 bits bitfield: first (strong) one for unsharedwear, second (weak) one for unsharedunwear
list g_lFolderLocks; // strided list: folder path, lock type (4 bits field)
integer g_iTimeOut = 60;
integer g_iFolderRLV = 78467;
integer g_iRLVaOn = FALSE; //Assume we don't have RLVa, until we hear that we do
key g_kBrowseID;
key g_kActionsID;
key g_kRootActionsID;
key g_kHistoryMenuID;
key g_kMultipleFoldersOnSearchMenuID;
integer g_iPage = 0;//Having a global is nice, if you redisplay the menu after an action on a folder.
integer g_iListener;//Nan:do we still need this? -- SA: of course. It's where the viewer talks.
// Asynchronous menu request. Alas still needed since some menus are triggered after an answer from the viewer.
key g_kAsyncMenuUser;
integer g_iAsyncMenuAuth;
integer g_iAsyncMenuRequested = FALSE;
string sPrompt;//Nan: why is this global?
string g_sFolderType; //what to do with those folders
string g_sCurrentFolder;
list g_lOutfit; //saved folder list
list g_lToCheck; //stack of folders to check, used for subfolder tree search
list g_lSearchList; //list of folders to search
integer g_iLastFolderState;
key g_kWearer;
string g_sScript;
list g_lHistory;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
addToHistory(string folder)
{
if (!(~llListFindList(g_lHistory, [folder]))) g_lHistory+=[folder];
g_lHistory = llList2List(g_lHistory, -10, -1);
}
ParentFolder() {
list lFolders = llParseString2List(g_sCurrentFolder,["/"],[]);
g_iPage = 0; // changing the folder also means going back to first page
if (llGetListLength(lFolders)>1) {
g_sCurrentFolder=llList2String(lFolders,0);
integer i;
for (i=1;i<llGetListLength(lFolders)-1;i++) g_sCurrentFolder+="/"+llList2String(lFolders,i);
}
else g_sCurrentFolder="";
}
QueryFolders(string sType)
{
g_sFolderType = sType;
g_iFolderRLV = 9999 + llRound(llFrand(9999999.0));
g_iListener = llListen(g_iFolderRLV, "", llGetOwner(), "");
llSetTimerEvent(g_iTimeOut);
llMessageLinked(LINK_SET, RLV_CMD, "getinvworn:"+g_sCurrentFolder+"=" + (string)g_iFolderRLV, NULL_KEY);
}
string lockFolderButton(integer iLockState, integer iLockNum, integer iAuth)
{
string sOut;
if ((iLockState >> (4 + iLockNum)) & 0x1) sOut = "☔";
else if ((iLockState >> iLockNum) & 0x1) sOut = "✔";
else sOut = "✘";
if (iLockNum == 0) sOut += LOCK_ATTACH;
else if (iLockNum == 1) sOut += LOCK_DETACH;
else if (iLockNum == 2) sOut += LOCK_ATTACH_ALL;
else if (iLockNum == 3) sOut += LOCK_DETACH_ALL;
if (iAuth > COMMAND_GROUP) sOut = "("+sOut+")";
return sOut;
}
string lockUnsharedButton(integer iLockNum, integer iAuth)
{
string sOut;
if ((g_iUnsharedLocks >> iLockNum) & 0x1) sOut = "✔";
else sOut = "✘";
if (iLockNum == 1) sOut += "Lk Unsh Wear";
else if (iLockNum == 0) sOut += "Lk Unsh Remove";
if (iAuth > COMMAND_GROUP) sOut = "("+sOut+")";
return sOut;
}
HistoryMenu(key kAv, integer iAuth)
{
g_kHistoryMenuID = Dialog(kAv, "\nRecently worn #RLV folders:", g_lHistory, [UPMENU], 0, iAuth);
}
RootActionsMenu(key kAv, integer iAuth)
{
list lActions = [lockUnsharedButton(0, iAuth), lockUnsharedButton(1, iAuth), "Save", "Restore"];
string sPrompt = "\nwww.opencollar.at/folders\n\nYou are at the #RLV shared root.\n\nFrom here, you can restrict wearing or removing not shared items, you can also save the list of worn shared folders or make the currently saved list be worn again.\n\nWhat do you want to do?";
g_kRootActionsID = Dialog(kAv, sPrompt, lActions, [UPMENU], 0, iAuth);
}
FolderActionsMenu(integer iState, key kAv, integer iAuth)
{
integer iStateThis = iState / 10;
integer iStateSub = iState % 10;
list lActions;
if (g_sFolderType == "history") lActions += "Browse";
g_sFolderType += "_actions";
if (!iStateSub) g_sFolderType += "_sub";
if (g_sCurrentFolder != "")
{
integer iIndex = llListFindList(g_lFolderLocks, [g_sCurrentFolder]);
integer iLock;
if (~iIndex)
{
iLock = llList2Integer(g_lFolderLocks, iIndex+1);
}
if ( iStateThis == 1 || iStateThis == 2) // there are items that can be added in current folder
lActions += [REPLACE, ADD, lockFolderButton(iLock, 0, iAuth)];
if ( iStateThis == 2 || iStateThis == 3) // there are items that can be removed
lActions += [DETACH, lockFolderButton(iLock, 1, iAuth)];
if ( iStateSub == 1 || iStateSub == 2) // there are items that can be added in descendant folder
lActions += [REPLACE_ALL, ADD_ALL, lockFolderButton(iLock, 2, iAuth)];
if ( iStateSub == 2 || iStateSub == 3) // there are items that can be removed from descendant folders
lActions += [DETACH_ALL, lockFolderButton(iLock, 3, iAuth)];
}
string sPrompt = "\nwww.opencollar.at/folders\n\nCurrent folder is ";
if (g_sCurrentFolder == "") sPrompt += "root";
else sPrompt += g_sCurrentFolder;
sPrompt += ".\n";
sPrompt += "\nWhat do you want to do?";
g_kActionsID = Dialog(kAv, sPrompt, lActions, [UPMENU], 0, iAuth);
}
string folderIcon(integer iState)
{
string sOut = "";
integer iStateThis = iState / 10;
integer iStateSub = iState % 10;
if (iStateThis==0) sOut += "⬚"; //▪";
else if (iStateThis==1) sOut += "◻";
else if (iStateThis==2) sOut += "◩";
else if (iStateThis==3) sOut += "◼";
else sOut += " ";
// sOut += "/";
if (iStateSub==0) sOut += "⬚"; //▪";
else if (iStateSub==1) sOut += "◻";
else if (iStateSub==2) sOut += "◩";
else if (iStateSub==3) sOut += "◼";
else sOut += " ";
return sOut;
}
integer StateFromButton(string sButton)
{
string sIconThis = llGetSubString(sButton, 0, 0);
string sIconSub = llGetSubString(sButton, 1, 1);
integer iState;
if (sIconThis=="◻") iState = 1;
else if (sIconThis=="◩") iState = 2;
else if (sIconThis=="◼") iState = 3;
iState *= 10;
if (sIconSub=="◻") iState +=1;
else if (sIconSub=="◩") iState +=2;
else if (sIconSub=="◼") iState += 3;
return iState;
}
string FolderFromButton(string sButton)
{
return llToLower(llGetSubString(sButton, 2, -1));
}
updateFolderLocks(string sFolder, integer iAdd, integer iRem)
{ // adds and removes locks for sFolder, which implies saving to central settings and triggering a RLV command (dolockFolder)
integer iLock;
integer iIndex = llListFindList(g_lFolderLocks, [sFolder]);
if (~iIndex)
{
iLock = ((llList2Integer(g_lFolderLocks, iIndex+1) | iAdd) & ~iRem);
if (iLock)
{
g_lFolderLocks = llListReplaceList(g_lFolderLocks, [iLock], iIndex+1, iIndex+1);
doLockFolder(iIndex);
}
else
{
g_lFolderLocks = llDeleteSubList(g_lFolderLocks, iIndex, iIndex+1);
llMessageLinked(LINK_SET, RLV_CMD, "attachthis_except:"+sFolder+"=y,detachthis_except:"+sFolder+"=y,attachallthis_except:"+sFolder+"=y,detachallthis_except:"+sFolder+"=y,"+ "attachthis:"+sFolder+"=y,detachthis:"+sFolder+"=y,attachallthis:"+sFolder+"=y,detachallthis:"+sFolder+"=y", NULL_KEY);
}
}
else
{
iLock = iAdd & ~iRem;
g_lFolderLocks += [sFolder, iLock];
iIndex = llGetListLength(g_lFolderLocks)-2;
doLockFolder(iIndex);
}
if ([] != g_lFolderLocks) llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "Locks=" + llDumpList2String(g_lFolderLocks, ","), "");
else llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "Locks", "");
}
doLockFolder(integer iIndex)
{ // sends command to the viewer to update all locks concerning folder #iIndex
string sFolder = llList2String(g_lFolderLocks, iIndex);
integer iLock = llList2Integer(g_lFolderLocks, iIndex + 1);
string sRlvCom = "attachthis:"+sFolder+"=";
if ((iLock >> 0) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",detachthis:"+sFolder+"=";
if ((iLock >> 1) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",attachallthis:"+sFolder+"=";
if ((iLock >> 2) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",detachallthis:"+sFolder+"=";
if ((iLock >> 3) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",attachthis_except:"+sFolder+"=";
if ((iLock >> 4) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",detachthis_except:"+sFolder+"=";
if ((iLock >> 5) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",attachallthis_except:"+sFolder+"=";
if ((iLock >> 6) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",detachallthis_except:"+sFolder+"=";
if ((iLock >> 7) & 1) sRlvCom += "n"; else sRlvCom += "y";
// llOwnerSay(sRlvCom);
llMessageLinked(LINK_SET, RLV_CMD, sRlvCom, NULL_KEY);
}
updateUnsharedLocks(integer iAdd, integer iRem)
{ // adds and removes locks for unshared items, which implies saving to central settings and triggering a RLV command (dolockUnshared)
g_iUnsharedLocks = ((g_iUnsharedLocks | iAdd) & ~iRem);
doLockUnshared();
if (g_iUnsharedLocks) llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "Unshared=" + (string) g_iUnsharedLocks, "");
else llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "Unshared", "");
}
doLockUnshared()
{ // sends command to the viewer to update all locks concerning unshared items
string sRlvCom = "unsharedunwear=";
if ((g_iUnsharedLocks >> 0) & 1) sRlvCom += "n"; else sRlvCom += "y";
sRlvCom += ",unsharedwear=";
if ((g_iUnsharedLocks >> 1) & 1) sRlvCom += "n"; else sRlvCom += "y";
llMessageLinked(LINK_SET, RLV_CMD, sRlvCom, NULL_KEY);
}
// Browsing menu, called asynchronously only (after querying folder state). Queries user and auth from globals.
FolderBrowseMenu(string sStr)
{
g_iAsyncMenuRequested = FALSE;
list lUtilityButtons = [UPMENU];
string sPrompt = "\nwww.opencollar.at/folders\n\nCurrent folder is ";
if (g_sCurrentFolder == "")
{
sPrompt += "root";
}
else sPrompt += g_sCurrentFolder;
sPrompt += ".\n";
list sData = llParseStringKeepNulls(sStr, [","], []);
string sFirst = llList2String(sData, 0);
sData = llListSort(llList2List(sData, 1, -1), 1, 1);
integer i;
list lItem;
integer iWorn;
list lFolders = [];
// now add the button for wearing all recursively when it makes sense
if (g_sCurrentFolder!="") {
lItem=llParseString2List(sFirst,["|"],[]);
iWorn=llList2Integer(lItem,0);
g_iLastFolderState=iWorn;
if (iWorn / 10 == 1 ) sPrompt += "It has wearable items";
else if (iWorn / 10 == 2 ) sPrompt += "It has wearable and removable items";
else if (iWorn / 10 == 3 ) sPrompt += "It has removable items";
else if (iWorn / 10 == 0 ) sPrompt += "It does not directly have any wearable or removable item";
sPrompt += ".\n";
lUtilityButtons += [ACTIONS_CURRENT];
}
else lUtilityButtons += [ROOT_ACTIONS];
for (i=0;i<llGetListLength(sData);i++) {
lItem=llParseString2List(llList2String(sData,i),["|"],[]);
string sFolder = llList2String(lItem,0);
iWorn=llList2Integer(lItem,1);
if (iWorn != 0)
{
lFolders += [llGetSubString(folderIcon(iWorn)+sFolder, 0, 12)];
}
}
sPrompt += "\n- Click "+ACTIONS_CURRENT+" to manage this folder content.\n- Click one of the subfolders to browse it.\n";
if (g_sCurrentFolder!="") {sPrompt += "- Click "+PARENT+" to browse parent folder.\n"; lUtilityButtons += [PARENT];}
sPrompt += "- Click "+UPMENU+" to go back to "+g_sParentMenu+".\n";
g_kBrowseID = Dialog(g_kAsyncMenuUser, sPrompt, lFolders, lUtilityButtons, g_iPage, g_iAsyncMenuAuth);
}
SaveFolder(string sStr)
{
list sData = llParseString2List(sStr, [","], []);
integer i;
list lItem;
integer iWorn;
if (g_sCurrentFolder!="") g_sCurrentFolder+="/";
for (i=1;i<llGetListLength(sData);i++) {
lItem=llParseString2List(llList2String(sData,i),["|"],[]);
iWorn=llList2Integer(lItem,1);
if (iWorn>=30) g_lOutfit+=[g_sCurrentFolder+llList2String(lItem,0)];
else if (iWorn>=20) g_lOutfit=[g_sCurrentFolder+llList2String(lItem,0)]+g_lOutfit;
if (iWorn%10>=2) g_lToCheck+=[g_sCurrentFolder+llList2String(lItem,0)];
}
if (llGetListLength(g_lToCheck)>0)
{
g_sCurrentFolder=llList2String(g_lToCheck,-1);
g_lToCheck=llDeleteSubList(g_lToCheck,-1,-1);
QueryFolders("save");
}
else
{
Notify(g_kAsyncMenuUser,"Current outfit has been saved.", TRUE);
g_sCurrentFolder="";
if (g_iAsyncMenuRequested)
{
g_iAsyncMenuRequested=FALSE;
llMessageLinked(LINK_SET, g_iAsyncMenuAuth, "menu "+g_sParentMenu, g_kAsyncMenuUser);
}
}
}
handleMultiSearch()
{
string sItem=llList2String(g_lSearchList,0);
string pref1 = llGetSubString(sItem, 0, 0);
string pref2 = llGetSubString(sItem, 0, 1);
g_lSearchList=llDeleteSubList(g_lSearchList,0,0);
if (pref1 == "+" || pref1 == "&") g_sFolderType = "searchattach";
else if (pref1 == "-") g_sFolderType = "searchdetach";
else jump next; // operator was omitted, then repeat last action
if (pref2 == "++" || pref2 == "--" || pref2 == "&&")
{
g_sFolderType += "all";
sItem = llToLower(llGetSubString(sItem,2,-1));
}
else sItem = llToLower(llGetSubString(sItem,1,-1));
if (pref1 == "&") g_sFolderType += "over";
@next;
searchSingle(sItem);
}
string g_sFirstsearch;
string g_sNextsearch;
string g_sBuildpath;
searchSingle(string sItem)
{
//open listener
g_iFolderRLV = 9999 + llRound(llFrand(9999999.0));
g_iListener = llListen(g_iFolderRLV, "", llGetOwner(), "");
//start timer
g_sFirstsearch="";
g_sNextsearch="";
g_sBuildpath="";
if(~llSubStringIndex(sItem,"/"))
{
//we're doing a two-level search.
list tlist=llParseString2List(sItem,["/"],[]);
g_sFirstsearch=llList2String(tlist,0);
g_sNextsearch=llList2String(tlist,1);
sItem=g_sFirstsearch;
}
llSetTimerEvent(g_iTimeOut);
//llMessageLinked(LINK_SET, RLV_CMD, "findfolder:"+sItem+"="+(string)g_iFolderRLV, NULL_KEY);
if ((g_iRLVaOn) && (g_sNextsearch == "")) { //use multiple folder matching from RLVa if we have it
llOwnerSay("@findfolders:"+sItem+"="+(string)g_iFolderRLV); //Unstored one-shot commands are better performed locally to save the linked message.
}
else llOwnerSay("@findfolder:"+sItem+"="+(string)g_iFolderRLV); //Unstored one-shot commands are better performed locally to save the linked message.
}
// set a dialog to be requested after the next viewer answer
SetAsyncMenu(key kAv, integer iAuth)
{
g_iAsyncMenuRequested = TRUE;
g_kAsyncMenuUser = kAv;
g_iAsyncMenuAuth = iAuth;
}
integer UserCommand(integer iNum, string sStr, key kID)
{
if (iNum < COMMAND_OWNER || iNum > COMMAND_WEARER) return FALSE;
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
string sValue = llToLower(llList2String(lParams, 1));
if (llToLower(sStr) == "#rlv" || sStr == "menu Browse #RLV")
{
g_sCurrentFolder = "";
QueryFolders("browse");
SetAsyncMenu(kID, iNum);
}
else if (llToLower(sStr) == "history" || sStr == "menu #RLV History")
{
HistoryMenu(kID, iNum);
}
else if (llToLower(llGetSubString(sStr, 0, 4)) == "#rlv ")
{
SetAsyncMenu(kID, iNum);
g_sFolderType = "searchbrowse";
string sPattern = llDeleteSubString(sStr,0, 4);
llOwnerSay("Searching folder containing string \"" + sPattern + "\" for browsing.");
searchSingle(sPattern);
}
else if (sStr=="save")
{
g_sCurrentFolder = "";
g_lOutfit=[];
g_lToCheck=[];
QueryFolders("save");
//if (sCommand == "menu") SetAsyncMenu(kID, iNum);
g_kAsyncMenuUser = kID; // needed for notifying
}
else if (sStr=="restore"/*|| sStr=="menu Restore"*/)
{
integer i = 0; integer n = llGetListLength(g_lOutfit);
for (; i < n; ++i)
llMessageLinked(LINK_SET, RLV_CMD, "attachover:" + llList2String(g_lOutfit,i) + "=force", NULL_KEY);
Notify(kID, "Saved outfit has been restored.", TRUE );
//if (sCommand == "menu") llMessageLinked(LINK_SET, iNum, "menu " + g_sParentMenu, kID);;
}
else if (llGetSubString(sStr,0,0)=="+"||llGetSubString(sStr,0,0)=="-"||llGetSubString(sStr,0,0)=="&")
{
g_kAsyncMenuUser = kID;
g_lSearchList=llParseString2List(sStr,[","],[]);
handleMultiSearch();
}
else if (iNum <= COMMAND_GROUP)
{
list lArgs = llParseStringKeepNulls(sStr, ["="], []);
integer val;
if (llList2String(lArgs,0)=="unsharedwear") val = 0x2;
else if (llList2String(lArgs,0)=="unsharedunwear") val = 0x1;
else return TRUE;
if (llList2String(lArgs,1)=="y") updateUnsharedLocks(0, val);
else if (llList2String(lArgs,1)=="n") updateUnsharedLocks(val, 0);
else return TRUE;
}
return TRUE;
}
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "rlvfolders_";
g_kWearer = llGetOwner();
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
integer i;
for (i=0;i < llGetListLength(g_lChildren);i++)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + llList2String(g_lChildren,i), "");
}
}
else if (iNum == RLV_CLEAR) //this triggers for safeword as well
{
g_lFolderLocks = [];
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "Locks", NULL_KEY);
}
else if (UserCommand(iNum, sStr, kID)) return;
else if (iNum == RLVA_VERSION) g_iRLVaOn = TRUE;
else if (iNum == DIALOG_RESPONSE)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
g_iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (kID == g_kHistoryMenuID)
{
if (sMessage == UPMENU)
{
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
return;
}
else
{
g_sCurrentFolder = sMessage;
g_iPage = 0;
SetAsyncMenu(kAv, iAuth);
QueryFolders("history");
}
}
else if (kID == g_kMultipleFoldersOnSearchMenuID) {
if (sMessage == UPMENU) {
g_sCurrentFolder = "";
QueryFolders("browse");
return;
}
llMessageLinked(LINK_SET, RLV_CMD, llGetSubString(g_sFolderType,6,-1)+":"+sMessage+"=force", NULL_KEY);
addToHistory(sMessage);
Notify(kAv, "Now "+llGetSubString(g_sFolderType,6,11)+"ing "+sMessage, TRUE);
}
else if (kID == g_kRootActionsID)
{
if (sMessage == UPMENU)
{
SetAsyncMenu(kAv, iAuth); QueryFolders("browse");
return;
}
else if (sMessage == "Save") UserCommand(iAuth, "save", kAv);
else if (sMessage == "Restore") UserCommand(iAuth, "restore", kAv);
else if (sMessage == lockUnsharedButton(0, 0))
{
if (g_iUnsharedLocks & 0x1) {
updateUnsharedLocks(0x0, 0x1);
Notify(kAv, "Now removing unshared items is no longer forbidden.", TRUE);
}
else {
updateUnsharedLocks(0x1, 0x0);
Notify(kAv, "Now removing unshared items is forbidden.", TRUE);
}
}
else if (sMessage == lockUnsharedButton(1, 0))
{
if (g_iUnsharedLocks & 0x2) {
updateUnsharedLocks(0x0, 0x2);
Notify(kAv, "Now wearing unshared items is no longer forbidden.", TRUE);
}
else {
updateUnsharedLocks(0x2, 0x0);
Notify(kAv, "Now wearing unshared items is forbidden.", TRUE);
}
}
RootActionsMenu(kAv, iAuth);
}
else if (kID == g_kBrowseID)
{
if (sMessage == UPMENU)
{
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
return;
}
else if (sMessage == ROOT_ACTIONS)
{
RootActionsMenu(kAv, iAuth);
return;
}
else if (sMessage == ACTIONS_CURRENT)
{
FolderActionsMenu(g_iLastFolderState, kAv, iAuth);
return;
}
else if (sMessage == PARENT)
{
ParentFolder();
}
else
{ //we got a folder. send the RLV command to remove/attach it.
integer iState = StateFromButton(sMessage);
string folder = FolderFromButton(sMessage);
if (g_sCurrentFolder == "") g_sCurrentFolder = folder;
else g_sCurrentFolder += "/" + folder;
if ((iState % 10) == 0)
{ // open actions menu if requested folder does not have subfolders
FolderActionsMenu(iState, kAv, iAuth);
return;
}
}
g_iPage = 0;
SetAsyncMenu(kAv, iAuth);
QueryFolders("browse");
}
else if (kID == g_kActionsID)
{
if (sMessage == ADD)
{
llMessageLinked(LINK_SET, RLV_CMD, "attachover:" + g_sCurrentFolder + "=force", NULL_KEY);
Notify(kAv, "Now adding "+g_sCurrentFolder, TRUE);
}
else if (sMessage == REPLACE)
{
llMessageLinked(LINK_SET, RLV_CMD, "attach:" + g_sCurrentFolder + "=force", NULL_KEY);
addToHistory(g_sCurrentFolder);
Notify(kAv, "Now attaching "+g_sCurrentFolder, TRUE);
}
else if (sMessage == DETACH)
{
llMessageLinked(LINK_SET, RLV_CMD, "detach:" + g_sCurrentFolder + "=force", NULL_KEY);
Notify(kAv, "Now detaching "+g_sCurrentFolder, TRUE);
}
else if (sMessage == ADD_ALL)
{
llMessageLinked(LINK_SET, RLV_CMD, "attachallover:" + g_sCurrentFolder + "=force", NULL_KEY);
Notify(kAv, "Now adding everything in "+g_sCurrentFolder, TRUE);
}
else if (sMessage == REPLACE_ALL)
{
llMessageLinked(LINK_SET, RLV_CMD, "attachall:" + g_sCurrentFolder + "=force", NULL_KEY);
Notify(kAv, "Now attaching everything in "+g_sCurrentFolder, TRUE);
}
else if (sMessage == DETACH_ALL)
{
llMessageLinked(LINK_SET, RLV_CMD, "detachall:" + g_sCurrentFolder + "=force", NULL_KEY);
Notify(kAv, "Now detaching everything in "+g_sCurrentFolder, TRUE);
}
else if (sMessage == lockFolderButton(0x00, 0, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x01, 0x10);
Notify(kAv, "Now wearing "+g_sCurrentFolder+ " is forbidden (this overrides parent exceptions).", TRUE);
}
else if (sMessage == lockFolderButton(0x00,1, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x02, 0x20);
Notify(kAv, "Now removing "+g_sCurrentFolder+ " is forbidden (this overrides parent exceptions).", TRUE);
}
else if (sMessage == lockFolderButton(0x00, 2, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x04, 0x40);
Notify(kAv, "Now wearing "+g_sCurrentFolder+ " or its subfolders is forbidden (this overrides parent exceptions).", TRUE);
}
else if (sMessage == lockFolderButton(0x00, 3, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x08, 0x80);
Notify(kAv, "Now removing "+g_sCurrentFolder+ " or its subfolders is forbidden (this overrides parent exceptions).", TRUE);
}
else if (sMessage == lockFolderButton(0x0F, 0, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x10, 0x01);
Notify(kAv, "Now wearing "+g_sCurrentFolder+ " is exceptionally allowed (this overrides parent locks).", TRUE);
}
else if (sMessage == lockFolderButton(0x0F, 1, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x20, 0x02);
Notify(kAv, "Now removing "+g_sCurrentFolder+ " is exceptionally allowed (this overrides parent locks).", TRUE);
}
else if (sMessage == lockFolderButton(0x0F,2, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x40, 0x04);
Notify(kAv, "Now wearing "+g_sCurrentFolder+ " or its subfolders is exceptionally allowed (this overrides parent locks).", TRUE);
}
else if (sMessage == lockFolderButton(0x0F,3, 0))
{
updateFolderLocks(g_sCurrentFolder, 0x80, 0x08);
Notify(kAv, "Now removing "+g_sCurrentFolder+ " or its subfolders is exceptionally allowed (this overrides parent locks).", TRUE);
}
else if (sMessage == lockFolderButton(0xFFFF,0, 0))
{
updateFolderLocks(g_sCurrentFolder, 0, 0x11);
Notify(kAv, "Now there is no restriction or exception on wearing "+g_sCurrentFolder+ ".", TRUE);
}
else if (sMessage == lockFolderButton(0xFFFF,1, 0))
{
updateFolderLocks(g_sCurrentFolder, 0, 0x22);
Notify(kAv, "Now there is no restriction or exception on removing "+g_sCurrentFolder+ ".", TRUE);
}
else if (sMessage == lockFolderButton(0xFFFF,2, 0))
{
updateFolderLocks(g_sCurrentFolder, 0, 0x44);
Notify(kAv, "Now there is no restriction or exception on wearing "+g_sCurrentFolder+ " and its subfolders.", TRUE);
}
else if (sMessage == lockFolderButton(0xFFFF,3, 0))
{
updateFolderLocks(g_sCurrentFolder, 0, 0x88);
Notify(kAv, "Now there is no restriction or exception on removing "+g_sCurrentFolder+ " and its subfolders.", TRUE);
}
else if (llGetSubString(sMessage, 0, 0) == "(") Notify(kAv, "This action is forbidden at your authentification level.", FALSE);
if (sMessage != UPMENU) { addToHistory(g_sCurrentFolder); llSleep(1.0);} //time for command to take effect so that we see the result in menu
//Return to browse menu
if (llGetSubString(g_sFolderType, 0, 14) == "history_actions" && sMessage != "Browse") {HistoryMenu(kAv, iAuth); return;}
if (llGetSubString(g_sFolderType, -4, -1) == "_sub") ParentFolder();
SetAsyncMenu(kAv, iAuth);
QueryFolders("browse");
}
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "Locks")
{
g_lFolderLocks = llParseString2List(sValue, [","], []);
integer iN = llGetListLength(g_lFolderLocks);
for (i = 0; i < iN; i += 2) doLockFolder(i);
}
else if (sToken == "Unshared")
{
g_iUnsharedLocks = (integer) sValue;
doLockUnshared();
}
}
}
}
listen(integer iChan, string sName, key kID, string sMsg)
{
llListenRemove(g_iListener);
llSetTimerEvent(0.0);
if (iChan == g_iFolderRLV)
{ //we got a list of folders
if (g_sFolderType=="browse")
{
if (sMsg == "")
{ // try again if the folder name was wrong (may happen if the inventory changed)
g_sCurrentFolder = "";
g_iPage = 0;
QueryFolders("browse");
}
else FolderBrowseMenu(sMsg);
}
else if (g_sFolderType=="history")
{
list sData = llParseStringKeepNulls(sMsg, [",", "|"], []);
integer iState = llList2Integer(sData, 1);
FolderActionsMenu(iState, g_kAsyncMenuUser, g_iAsyncMenuAuth);
}
else if (g_sFolderType=="save") SaveFolder(sMsg);
else if (llGetSubString(g_sFolderType,0,5)=="search")
{
if (sMsg=="") Notify(g_kAsyncMenuUser,sMsg+"No folder found", FALSE);
else if (llGetSubString(g_sFolderType,6,-1)=="browse")
{
g_sCurrentFolder = sMsg;
QueryFolders("browse");
}
else
{
if(g_sFirstsearch!="")
{
integer idx=llSubStringIndex(llToLower(sMsg),llToLower(g_sFirstsearch));
g_sBuildpath=llGetSubString(sMsg,0,idx);
sMsg=llDeleteSubString(sMsg,0,idx);
idx=llSubStringIndex(sMsg,"/");
g_sBuildpath+=llGetSubString(sMsg,0,idx);
g_sFirstsearch="";
g_iListener = llListen(g_iFolderRLV, "", llGetOwner(), "");
llSetTimerEvent(g_iTimeOut);
llOwnerSay("@getinv:"+g_sBuildpath+"="+(string)g_iFolderRLV);
}
else
{
if(g_sNextsearch!="")
{
list tlist=llParseString2List(sMsg,[","],[]);
integer i=llGetListLength(tlist);
string found;
string test;
while(i)
{
--i;
test=llList2String(tlist,i);
if(~llSubStringIndex(llToLower(test),llToLower(g_sNextsearch)))
{
i=0;
found=test;
}
}
if(found=="")
{
Notify(g_kAsyncMenuUser,g_sNextsearch+" subfolder not found", FALSE);
return;
}
else sMsg=g_sBuildpath+"/"+found;
g_sNextsearch="";
g_sBuildpath="";
}
if ((llSubStringIndex(sMsg,",") >=0) && (g_iRLVaOn)) { //we have multiple results, bring up a menu
list lMultiFolders = llParseString2List(sMsg,[","],[]);
string sPrompt = "Multiple results found. Please select an item\n";
sPrompt += "Current action is "+g_sFolderType+"\n";
g_kMultipleFoldersOnSearchMenuID = Dialog(g_kAsyncMenuUser, sPrompt, lMultiFolders, [UPMENU], 0, iChan);
return;
}
llMessageLinked(LINK_SET, RLV_CMD, llGetSubString(g_sFolderType,6,-1)+":"+sMsg+"=force", NULL_KEY);
addToHistory(sMsg);
Notify(g_kAsyncMenuUser, "Now "+llGetSubString(g_sFolderType,6,11)+"ing "+sMsg, TRUE);
}
}
if (g_lSearchList!=[]) handleMultiSearch();
}
}
}
timer()
{
llListenRemove(g_iListener);
llSetTimerEvent(0.0);
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,742 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - rlvmain //
// version 3.990 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//201410060330
integer g_iRLVOn = TRUE;//set to TRUE if DB says user has turned RLV features on
integer g_iViewerCheck = FALSE;//set to TRUE if viewer is has responded to @versionnum message
integer g_iRlvActive = FALSE;
//integer g_iRLVNotify = FALSE;//if TRUE, ownersay on each RLV restriction
integer g_iListener;
float g_fVersionTimeOut = 30.0; //MD- changed from 60. 2 minute wait before finding RLV is off is too long.
integer g_iRlvVersion;
integer g_iRlvaVersion;
integer g_iCheckCount;//increment this each time we say @versionnum. check it each time timer goes off in default state. give up if it's >= 2
integer g_iMaxViewerChecks=10;
integer g_iCollarLocked=FALSE;
string g_sParentMenu = "Main";
string g_sSubMenu = "RLV";
list g_lMenu;
key kMenuID;
integer RELAY_CHANNEL = -1812221819;
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
//integer COMMAND_SECOWNER = 501;
//integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510;
integer COMMAND_RELAY_SAFEWORD = 511;
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
//integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
//integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; //RLV Plugins can recieve the used RLV viewer version upon receiving this message..
integer RLVA_VERSION = 6004; //RLV Plugins can recieve the used RLVa viewer version upon receiving this message..
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer RLV_QUERY = 6102; //query from a script asking if RLV is currently functioning
integer RLV_RESPONSE = 6103; //reply to RLV_QUERY, with "ON" or "OFF" as the message
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
string UPMENU = "BACK";
string TURNON = " ON";
string TURNOFF = " OFF";
string CLEAR = "CLEAR ALL";
string CTYPE = "collar";
string WEARERNAME;
key g_kWearer;
string g_sScript="rlvmain_";
string g_sRlvVersionString="(unknown)";
string g_sRlvaVersionString="(unknown)";
list g_lOwners;
list g_lRestrictions; //2 strided list of sourceId, § separated list of restrictions strings
list g_lExceptions;
list g_lBaked=[]; //list of restrictions currently in force
key g_kSitter=NULL_KEY;
key g_kSitTarget=NULL_KEY;
integer CMD_ADDSRC = 11;
integer CMD_REMSRC = 12;
integer g_iWaitRelay = FALSE ;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Notify(key kID, string sMsg, integer iAlsoNotifyWearer){
if (kID == g_kWearer) llOwnerSay(sMsg);
else{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
DoMenu(key kID, integer iAuth){
list lButtons;
if (g_iRLVOn)
{
lButtons += [TURNOFF];
if (g_iViewerCheck) lButtons += [CLEAR] + llListSort(g_lMenu, 1, TRUE);
}
else lButtons += [TURNON];
string sPrompt = "\nRestrained Love Viewer Options\n";
if (g_iRlvVersion) sPrompt += "Detected Version of RLV: "+g_sRlvVersionString;
if (g_iRlvaVersion) sPrompt += " (RLVa: "+g_sRlvaVersionString+")";
if (!g_iViewerCheck) sPrompt += "Could not detect Restrained Love Viewer.\nRestrained Love functions disabled.";
sPrompt +="\n\nwww.opencollar.at/rlv";
kMenuID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kID + "|" + sPrompt + "|0|" + llDumpList2String(lButtons, "`") + "|" + UPMENU + "|" + (string)iAuth, kMenuID);
//Debug("Made menu.");
}
rebakeSourceRestrictions(key kSource){
//Debug("rebakeSourceRestrictions "+(string)kSource);
integer iSourceIndex=llListFindList(g_lRestrictions,[kSource]);
if (~iSourceIndex) { // if its a known source, rebake its restrictions
list lRestr=llParseString2List(llList2String(g_lRestrictions,iSourceIndex+1),["§"],[]);
while(llGetListLength(lRestr)){
ApplyAdd(llList2String(lRestr,-1));
lRestr=llDeleteSubList(lRestr,-1,-1);
}
}
}
DoLock(){
//lock the collar if there are still restrictions from active traps. Garbage collection will clear lock if they are stale.
integer numSources=llGetListLength(llList2ListStrided(g_lRestrictions,0,-2,2));
while (numSources--){
if ((key)llList2Key(llList2ListStrided(g_lRestrictions,0,-2,2),numSources)){
//an active source has a valid key, so remain locked... return
ApplyAdd("detach");
return;
}
}
ApplyRem("detach"); //we only get here if none of the active sources is a real source, so remove our lock
}
setRlvState(){
if (g_iRLVOn && g_iViewerCheck){ //everyone says RLV on
if (!g_iRlvActive) { //its newly active
//Debug("RLV went active");
//Debug("Sources:"+llDumpList2String(g_lSources,";"));
g_iRlvActive=TRUE;
llMessageLinked(LINK_SET, RLV_ON, "", NULL_KEY);
g_lMenu = [] ; // flush submenu buttons
llMessageLinked(LINK_SET, MENUNAME_REQUEST, g_sSubMenu, "");
//tell rlv plugins to reinstate restrictions (and wake up the relay listener... so that it can at least hear !pong's!
llMessageLinked(LINK_SET, RLV_REFRESH, "", NULL_KEY);
g_iWaitRelay = TRUE ;
llSetTimerEvent(5); //Make sure the relay is ready before pinging
//move ping to timer
//reinstate exceptions
//Debug("adding exceptions:\n"+llDumpList2String(g_lExceptions,",\n"));
integer i;
for (i=0;i<llGetListLength(g_lExceptions);i+=2) {
key kSource=(key)llList2String(g_lExceptions,i);
list lBehaviours=llParseString2List(llList2String(g_lExceptions,i+1),["§"],[]);
while (llGetListLength(lBehaviours)){
//Debug("re-adding exception "+llList2String(lBehaviours,-1)+" for "+(string)kSource);
ApplyAdd(llList2String(lBehaviours,-1)+":"+(string)kSource);
lBehaviours=llDeleteSubList(lBehaviours,-1,-1);
}
}
llMessageLinked(LINK_SET, RLV_VERSION, (string) g_iRlvVersion, NULL_KEY);
if (g_iRlvaVersion) { //Respond on RLVa as well
llMessageLinked(LINK_SET, RLVA_VERSION, (string) g_iRlvaVersion, NULL_KEY);
}
llOwnerSay("RLV ready! (v" + g_sRlvVersionString + ")");
DoLock();
}
} else if (g_iRlvActive) { //Both were true, but not now. g_iViewerCheck must still be TRUE (as it was once true), so g_iRLVOn must have just been set FALSE
//Debug("RLV went inactive");
g_iRlvActive=FALSE;
//SafeWord(TRUE);
while (llGetListLength(g_lBaked)){
llOwnerSay("@"+llList2String(g_lBaked,-1)+"=y"); //remove restriction
g_lBaked=llDeleteSubList(g_lBaked,-1,-1);
}
llMessageLinked(LINK_SET, RLV_OFF, "", NULL_KEY);
} else if (g_iRLVOn){ //g_iViewerCheck must be FALSE (see above 2 cases), so g_iRLVOn must have just been set to TRUE, so do viewer check
if (g_iListener) llListenRemove(g_iListener);
g_iListener = llListen(293847, "", g_kWearer, "");
llSetTimerEvent(g_fVersionTimeOut);
g_iCheckCount=0;
llOwnerSay("@versionnew=293847");
} else { //else both are FALSE, its the only combination left, No need to do viewercheck if g_iRLVOn is FALSE
llSetTimerEvent(0.0);
}
}
AddRestriction(key kID, string sBehav) {
if (kID=="rlvex"){ //if its an exception, add it to the exceptions list
list lParams = llParseString2List(sBehav, [":"], []);
key kAv = (key)llList2String(lParams, 1);
sBehav = llList2String(lParams, 0);
//Debug("apply exception ("+(string)kAv+")"+sBehav);
if ((key)kAv){
integer iSource=llListFindList(g_lExceptions,[kAv]);
if (! ~iSource ) { //if this is an exception for a new agent
//Debug("Exception for new agent "+(string)kAv);
g_lExceptions+=[kAv,""]; //add UUID and blank list to exceptions list
iSource=-2;
}
//Debug("trying to apply exception ("+(string)kID+")"+sBehav);
string sSrcRestr = llList2String(g_lExceptions,iSource+1);
if (!(sSrcRestr==sBehav || (~llSubStringIndex(sSrcRestr,"§"+sBehav)) || (~llSubStringIndex(sSrcRestr,sBehav+"§"))) ) {
//Debug("AddRestriction 2.2");
sSrcRestr+="§"+sBehav;
if (llSubStringIndex(sSrcRestr,"§")==0) sSrcRestr=llGetSubString(sSrcRestr,1,-1);
g_lExceptions=llListReplaceList(g_lExceptions,[sSrcRestr],iSource+1, iSource+1);
ApplyAdd(sBehav+":"+(string)kAv);
//} else {
//Debug("exception already active ("+(string)kID+")"+sBehav);
//Debug(sSrcRestr);
}
} else {
llOwnerSay("OC doesn't currently support global exceptions");
}
} else { //add this restriction to the list for this source
//add new sources to sources list
integer iSource=llListFindList(g_lRestrictions,[kID]);
if (! ~iSource ) { //if this is a restriction from a new source
g_lRestrictions += [kID,""];
iSource=-2;
if ((key)kID) llMessageLinked(LINK_SET, CMD_ADDSRC,"",kID); //tell relay script we have a new restriction source
}
string sSrcRestr = llList2String(g_lRestrictions,iSource+1);
//Debug("AddRestriction 2.1");
if (!(sSrcRestr==sBehav || (~llSubStringIndex(sSrcRestr,"§"+sBehav)) || (~llSubStringIndex(sSrcRestr,sBehav+"§"))) ) {
//Debug("AddRestriction 2.2");
sSrcRestr+="§"+sBehav;
if (llSubStringIndex(sSrcRestr,"§")==0) sSrcRestr=llGetSubString(sSrcRestr,1,-1);
g_lRestrictions=llListReplaceList(g_lRestrictions,[sSrcRestr],iSource+1, iSource+1);
//Debug("apply restriction ("+(string)kID+")"+sBehav);
ApplyAdd(sBehav);
//Debug("AddRestriction 2.3");
if (sBehav=="unsit") {
g_kSitTarget = llList2Key(llGetObjectDetails(g_kWearer, [OBJECT_ROOT]), 0);
g_kSitter=kID;
}
}
DoLock(); //if there are sources with valid keys, collar should be locked.
}
}
ApplyAdd (string sBehav) {
if (! ~llListFindList(g_lBaked, [sBehav])) { //if this restriction is not already baked
g_lBaked+=[sBehav];
llOwnerSay("@"+sBehav+"=n");
//Debug("'"+sBehav+"' added to the baked list");
//} else {
//Debug(sBehav+" is already baked");
}
}
RemRestriction(key kID, string sBehav) {
if ((string)kID=="rlvex"){
//Debug("RemRestriction [rlvex] "+sBehav);
list lParams = llParseString2List(sBehav, [":"], []);
key kAv = (key)llList2String(lParams, 1);
sBehav = llList2String(lParams, 0);
integer iSource=llGetListLength(g_lExceptions);
while (iSource){
iSource -= 2;
key thisAgent=llList2Key(g_lExceptions,iSource);
if (thisAgent==kAv || kAv==""){ //if we're clearing this one, or all
//Debug("clearing "+(string)sBehav+" for "+(string)thisAgent);
list lSrcRestr = llParseString2List(llList2String(g_lExceptions,iSource+1),["§"],[]); //get a list of this source's restrictions
integer iRestr=llListFindList(lSrcRestr,[sBehav]); //get index of this restriction from that list
if (~iRestr) { //if the restriction is in the list
if (llGetListLength(lSrcRestr)==1) { //if it is the only restriction in the list
//Debug("removing last restriction");
g_lExceptions=llDeleteSubList(g_lExceptions,iSource, iSource+1); //remove the restrictions list
} else { //else, the source has other restrictions
lSrcRestr=llDeleteSubList(lSrcRestr,iRestr,iRestr); //delete the restriction from the list
g_lExceptions=llListReplaceList(g_lExceptions,[llDumpList2String(lSrcRestr,"§")] ,iSource+1,iSource+1);//store the list in the sources restrictions list
//Debug("removed restriction, there are "+(string)llGetListLength(lSrcRestr)+" remaining "+llDumpList2String(lSrcRestr,"|"));
}
lSrcRestr=[];
ApplyRem(sBehav+":"+(string)thisAgent);
//} else {
//Debug("restriction is not in the list");
}
}
}
} else {
//Debug("RemRestriction ("+(string)kID+")"+sBehav);
integer iSource=llListFindList(g_lRestrictions,[kID]); //find index of the source
if (~iSource) { //if this source set any restrictions
list lSrcRestr = llParseString2List(llList2String(g_lRestrictions,iSource+1),["§"],[]); //get a list of this source's restrictions
integer iRestr=llListFindList(lSrcRestr,[sBehav]); //get index of this restriction from that list
if ((~iRestr) || sBehav=="ALL") { //if the restriction is in the list
if (llGetListLength(lSrcRestr)==1) { //if it is the only restriction in the list
g_lRestrictions=llDeleteSubList(g_lRestrictions,iSource, iSource+1); //remove the restrictions list
if ((key)kID) llMessageLinked(LINK_SET, CMD_REMSRC,"",kID); //tell the relay the source has no restrictions
} else { //else, the source has other restrictions
lSrcRestr=llDeleteSubList(lSrcRestr,iRestr,iRestr); //delete the restriction from the list
g_lRestrictions=llListReplaceList(g_lRestrictions,[llDumpList2String(lSrcRestr,"§")] ,iSource+1,iSource+1);//store the list in the sources restrictions list
}
if (sBehav=="unsit"&&g_kSitter==kID) {
g_kSitter=NULL_KEY;
g_kSitTarget=NULL_KEY;
}
lSrcRestr=[];
ApplyRem(sBehav);
}
}
DoLock();
}
}
ApplyRem(string sBehav) {
//Debug("(rem) Baked restrictions:\n"+llDumpList2String(g_lBaked,"\n"));
integer iRestr=llListFindList(g_lBaked, [sBehav]); //look for this restriction in the baked list
if (~iRestr) { //if this restriction has been baked already
integer i;
for (i=0;i<=llGetListLength(g_lRestrictions);i++) { //for each source
list lSrcRestr=llParseString2List(llList2String(g_lRestrictions,i),["§"],[]); //get its restrictions list
if (llListFindList(lSrcRestr, [sBehav])!=-1) return; //check it for this restriction
}
// //also check the exceptions list, in case its an exception
list lParts=llParseString2List(sBehav,[":"],[]);
key exceptee=llList2Key(lParts,1);
if (exceptee) {
integer exceptionIndex=llListFindList(g_lExceptions,[exceptee]);
if (~exceptionIndex){
//Debug("This exceptee has exceptions");
list lExceptions=llParseString2List(llList2String(g_lExceptions,exceptionIndex+1),["§"],[]);
string exception=llList2String(lParts,0);
if (~llListFindList(lExceptions,[exception])){
//Debug("we found this exception for this person set by rlvex, so don't release it");
return;
}
//} else {
//Debug("Exceptions list is "+llDumpList2String(g_lExceptions,",")+"\n checking for "+exception+" from "+(string)exceptee);
}
//} else {
//Debug((string)exceptee+" is not a key, so this is not an exception");
}
g_lBaked=llDeleteSubList(g_lBaked,iRestr,iRestr); //delete it from the baked list
llOwnerSay("@"+sBehav+"=y"); //remove restriction
//} else {
//Debug("Restriction '"+sBehav+"'not in baked list");
}
//Debug("(post rem) Baked restrictions:\n"+llDumpList2String(g_lBaked,"\n"));
}
SafeWord() {
//leave lock and exceptions intact, clear everything else
integer numRestrictions=llGetListLength(g_lRestrictions);
while (numRestrictions){
numRestrictions -= 2;
string kSource=llList2String(g_lRestrictions,numRestrictions);
if (kSource != "main" && kSource != "rlvex" && llSubStringIndex(kSource,"utility_") != 0){
llMessageLinked(LINK_SET,RLV_CMD,"clear",kSource);
}
}
llMessageLinked(LINK_SET,RLV_CLEAR,"","");
}
// End of book keeping functions
UserCommand(integer iNum, string sStr, key kID) {
if (iNum == COMMAND_EVERYONE) return; // No command for people with no privilege in this plugin.
list lParams = llParseString2List(sStr, [" "], []);
string sCmd = llList2String(lParams, 0);
string sValue = llToLower(llList2String(lParams, 1));
lParams=[];
if (sStr=="runaway" && kID==g_kWearer) { // some scripts reset on runaway, we want to resend RLV state.
llSleep(2); //give some time for scripts to get ready.
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "on="+(string)g_iRLVOn, "");
} else if (llToLower(sStr) == "rlv" || llToLower(sStr) == "menu rlv" ){
//someone clicked "RLV" on the main menu. Give them our menu now
DoMenu(kID, iNum);
// } else if (sStr == "rlvnotify on") {
// g_iRLVNotify = TRUE;
// llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "notify=1", "");
// } else if (sStr == "rlvnotify off") {
// g_iRLVNotify = FALSE;
// llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "notify=0", "");
} else if (sStr == "rlvon") {
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "on=1", "");
g_iRLVOn = TRUE;
setRlvState();
} else if (sStr == "rlvoff") {
if (iNum == COMMAND_OWNER) {
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "on=0", "");
g_iRLVOn = FALSE;
setRlvState();
} else Notify(kID, "Sorry, only owner may disable Restrained Love functions", FALSE);
} else if (sStr == "clear") {
if (iNum == COMMAND_WEARER) llOwnerSay("Sorry, but the sub cannot clear RLV settings.");
else SafeWord();
} else if (sStr=="showrestrictions") {
string sOut="You are being restricted by the following objects";
integer numRestrictions=llGetListLength(g_lRestrictions);
while (numRestrictions){
key kSource=(key)llList2String(g_lRestrictions,numRestrictions);
if ((key)kSource)
sOut+="\n"+llKey2Name((key)kSource)+" ("+(string)kSource+"): "+llList2String(g_lRestrictions,numRestrictions+1);
else
sOut+="\nThis " + CTYPE + "("+(string)kSource+"): "+llList2String(g_lRestrictions,numRestrictions+1);
numRestrictions -= 2;
}
Notify(kID,sOut,FALSE);
}
}
default {
on_rez(integer param) {
/*
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
*/
g_iRlvActive=FALSE;
g_iViewerCheck=FALSE;
g_iRLVOn=FALSE;
g_lBaked=[]; //just been rezzed, so should have no baked restrictions
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
setRlvState();
llOwnerSay("@clear");
g_kWearer = llGetOwner();
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
//Debug("Starting");
}
listen(integer iChan, string sName, key kID, string sMsg) {
//RestrainedLove viewer v2.8.0 (RLVa 1.4.10) <-- @versionnew response structure v1.23 (implemented April 2010).
//lines commented out are from @versionnum response string (implemented late 2009)
llListenRemove(g_iListener);
llSetTimerEvent(0.0);
g_iCheckCount = 0;
g_iViewerCheck = TRUE;
//send the version to rlv plugins
list lParam = llParseString2List(sMsg,[" "],[""]); //(0:RestrainedLove)(1:viewer)(2:v2.8.0)(3:(RLVa)(4:1.4.10))
//g_iRlvVersion = (integer) llGetSubString(sMsg, 0, 2); //expects (208)0000 (old versionnum response)
list lVersionSplit = llParseString2List(llGetSubString(llList2String(lParam,2), 1, -1),["."],[]); //expects (208)0000 | derive from:(2:v2.8.0)
g_iRlvVersion = llList2Integer(lVersionSplit,0) * 100 + llList2Integer(lVersionSplit,1); //we should now have (integer)208
//integer i=(integer)sMsg;
//string s3=llGetSubString((string)(i/100),-2,-1);
//string s2=llGetSubString((string)(i/10000),-2,-1);
//string s1=llGetSubString((string)(i/1000000),-2,-1);
//g_sRlvVersionString = s1+"."+s2+"."+s3;
string sRlvResponseString = llList2String(lParam,2); //(2:v2.8.0) RLV segmented response from viewer
g_sRlvVersionString = llGetSubString(sRlvResponseString,llSubStringIndex(sRlvResponseString,"v")+1,llSubStringIndex(sRlvResponseString,")") );
string sRlvaResponseString = llList2String(lParam,4); //(4:1.4.10)) RLVa segmented response from viewer
g_sRlvaVersionString = llGetSubString(sRlvaResponseString,0,llSubStringIndex(sRlvaResponseString,")") -1);
lVersionSplit = llParseString2List(g_sRlvaVersionString,["."],[]); //split up RLVa version string (1.4.10)
g_iRlvaVersion = llList2Integer(lVersionSplit,0) * 100 + llList2Integer(lVersionSplit,1); //we should now have (integer)104
//We should now have: ["2.8.0" in g_sRlvVersionString] and ["1.4.10" in g_sRlvaVersionString]
//Debug("g_iRlvVersion: "+(string)g_iRlvVersion+" g_sRlvVersionString: "+g_sRlvVersionString+ " g_sRlvaVersionString: "+g_sRlvaVersionString+ " g_iRlvaVersion: "+(string)g_iRlvaVersion);
//Debug("|"+sMsg+"|");
setRlvState();
//Debug("Starting");
} //Firestorm - viewer response: RestrainedLove viewer v2.8.0 (RLVa 1.4.10)
//Firestorm - rlvmain parsed result: g_iRlvVersion: 208 (same as before) g_sRlvVersionString: 2.8.0 (same as before) g_sRlvaVersionString: 1.4.10 (new) g_iRlvaVersion: 104 (new)
//
//Marine's RLV Viewer - viewer response: RestrainedLove viewer v2.09.01.0 (3.7.9.32089)
//Marine's RLV Viewer - rlvmain parsed result: g_iRlvVersion: 209 (same as before) g_sRlvVersionString: 2.09.01.0 (same as before) g_sRlvaVersionString: NULL (new) g_iRlvaVersion: 0 (new)
link_message(integer iSender, integer iNum, string sStr, key kID) {
if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu) {
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
g_lMenu = [] ; // flush submenu buttons
llMessageLinked(LINK_SET, MENUNAME_REQUEST, g_sSubMenu, "");
}
else if (iNum == COMMAND_NOAUTH) return; // SA: TODO remove later
else if (iNum <= COMMAND_EVERYONE && iNum >= COMMAND_OWNER) UserCommand(iNum, sStr, kID);
else if (iNum == DIALOG_RESPONSE) {
//Debug(sStr);
if (kID == kMenuID) {
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMsg = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
lMenuParams=[];
//Debug(sMsg);
if (sMsg == TURNON) {
UserCommand(iAuth, "rlvon", kAv);
} else if (sMsg == TURNOFF) {
UserCommand(iAuth, "rlvoff", kAv);
DoMenu(kAv, iAuth);
} else if (sMsg == CLEAR) {
UserCommand(iAuth, "clear", kAv);
DoMenu(kAv, iAuth);
} else if (sMsg == UPMENU) {
llMessageLinked(LINK_SET, iAuth, "menu "+g_sParentMenu, kAv);
} else if (~llListFindList(g_lMenu, [sMsg])) { //if this is a valid request for a foreign menu
llMessageLinked(LINK_SET, iAuth, "menu " + sMsg, kAv);
}
}
} else if (iNum == LM_SETTING_SAVE) {
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
lParams=[];
if(sToken == "auth_owner" && llStringLength(sValue) > 0) g_lOwners = llParseString2List(sValue, [","], []);
else if (sToken=="Global_lock") g_iCollarLocked=(integer)sValue;
else if (sToken=="Global_CType") CTYPE=sValue;
} else if (iNum == LM_SETTING_RESPONSE) {
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
lParams=[];
if (sToken == "auth_owner" && llStringLength(sValue) > 0) g_lOwners = llParseString2List(sValue, [","], []);
else if (sToken=="Global_lock") g_iCollarLocked=(integer)sValue;
else if (sToken=="Global_CType") CTYPE=sValue;
else if (sToken=="Global_WearerName") WEARERNAME=sValue;
// else if (sToken=="rlvmain_notify") g_iRLVNotify = (integer)sValue;
else if (sToken=="rlvmain_on") {
g_iRLVOn=(integer)sValue;
setRlvState();
}
} else if (iNum == COMMAND_SAFEWORD) SafeWord();
else if (iNum==COMMAND_RELAY_SAFEWORD) SafeWord();
else if (iNum==RLV_QUERY){
if (g_iRlvActive) llMessageLinked(LINK_SET, RLV_RESPONSE, "ON", "");
else llMessageLinked(LINK_SET, RLV_RESPONSE, "OFF", "");
} else if (iNum == MENUNAME_RESPONSE) { //sStr will be in form of "parentmenu|menuname"
list lParams = llParseString2List(sStr, ["|"], []);
string sThisParent = llList2String(lParams, 0);
string sChild = llList2String(lParams, 1);
lParams=[];
if (sThisParent == g_sSubMenu) { //add this str to our menu buttons
if (! ~llListFindList(g_lMenu, [sChild])) {
g_lMenu += [sChild];
}
}
} else if (iNum == MENUNAME_REMOVE) { //sStr will be in form of "parentmenu|menuname"
list lParams = llParseString2List(sStr, ["|"], []);
string sThisParent = llList2String(lParams, 0);
string sChild = llList2String(lParams, 1);
lParams=[];
if (sThisParent == g_sSubMenu) {
integer iIndex = llListFindList(g_lMenu, [sChild]);
if (iIndex != -1) {
g_lMenu = llDeleteSubList(g_lMenu, iIndex, iIndex);
}
}
}
//these are things we only do if RLV is ready to go
else if (g_iRlvActive) { //if RLV is off, don't even respond to RLV submenu events
if (iNum == RLV_CMD) {
//Debug("Received RLV_CMD: "+sStr+" from "+(string)kID);
list lCommands=llParseString2List(llToLower(sStr),[","],[]);
while (llGetListLength(lCommands)){
string sCommand=llToLower(llList2String(lCommands,0));
list lArgs = llParseString2List(sCommand,["="],[]); //split the command on "="
string sCom = llList2String(lArgs,0); //store first part of command
if (llGetSubString(sCom,-1,-1)==":") sCom=llGetSubString(sCom,0,-2); //remove trailing :
string sVal = llList2String(lArgs,1); //store value
lArgs=[];
if (sVal=="n"||sVal=="add") AddRestriction(kID,sCom); //add a restriction
else if (sVal=="y"||sVal=="rem") RemRestriction(kID,sCom); //remove a restriction
else if (sCom=="clear") { //release some or all restrictions FOR THIS OBJECT ONLY
//Debug("Got clear command:\nkey: "+(string)kID+"\ncommand: "+sCommand);
integer iSource=llListFindList(g_lRestrictions,[kID]);
if (kID=="rlvex"){
RemRestriction(kID,sVal);
} else if (~iSource) { //if this is a known source
//Debug("Clearing restrictions:\nrestrictions: "+sVal+"\nfor key: "+(string)kID+"\nindex: "+(string)iSource);
list lSrcRestr=llParseString2List(llList2String(g_lRestrictions,iSource+1),["§"],[]); //get a list of this source's restrictions
integer numRestrictions=llGetListLength(lSrcRestr);
list lRestrictionsToRemove;
while (llGetListLength(lSrcRestr)) { //loop through all of this source's restrictions and store them in a new list
string sBehav=llList2String(lSrcRestr,-1); //get the name of the restriction from the list
if (sVal=="" || llSubStringIndex(sBehav,sVal)!=-1) { //if the restriction to remove matches the start of the behaviour in the list, or we need to remove all of them
//Debug("Clearing restriction "+sBehav+" for "+(string)kID);
lRestrictionsToRemove+=sBehav;
//RemRestriction(kID,sBehav); //remove the restriction from the list
}
lSrcRestr=llDeleteSubList(lSrcRestr,-1,-1);
}
lSrcRestr=[]; //delete the list to free memory
//Debug("removing restrictions:"+llDumpList2String(lRestrictionsToRemove,"|")+" for "+(string)kID);
while(llGetListLength(lRestrictionsToRemove)){
RemRestriction(kID,llList2String(lRestrictionsToRemove,-1)); //remove the restriction from the list
lRestrictionsToRemove=llDeleteSubList(lRestrictionsToRemove,-1,-1);
}
}
} else { //perform other command
//Debug("Got other command:\nkey: "+(string)kID+"\ncommand: "+sCommand);
if (llSubStringIndex(sCom,"tpto")==0) { //looks like a tpto command, lets check to see if we should honour it or not, and message back if we can if it fails
if ( (~llListFindList(g_lBaked,["tploc"])) || (~llListFindList(g_lBaked,["unsit"])) ) {
if ((key)kID) Notify(kID,"Can't teleport due to RLV restrictions",TRUE);
return;
}
} else if (sStr=="unsit=force") {
if (~llListFindList(g_lBaked,["unsit"]) ) {
if ((key)kID) Notify(kID,"Can't force stand due to RLV restrictions",TRUE);
return;
}
}
llOwnerSay("@"+sCommand);
if (g_kSitter==NULL_KEY&&llGetSubString(sCommand,0,3)=="sit:") {
g_kSitter=kID;
//Debug("Sitter:"+(string)(g_kSitter));
g_kSitTarget=(key)llGetSubString(sCom,4,-1);
//Debug("Sittarget:"+(string)(g_kSitTarget));
}
}
lCommands=llDeleteSubList(lCommands,0,0);
//Debug("Command list now "+llDumpList2String(lCommands,"|"));
}
} else if (iNum == COMMAND_RLV_RELAY) {
if (llGetSubString(sStr,-43,-1)== ","+(string)g_kWearer+",!pong") { //if it is a pong aimed at wearer
//Debug("Received pong:"+sStr+" from "+(string)kID);
if (kID==g_kSitter) llOwnerSay("@"+"sit:"+(string)g_kSitTarget+"=force"); //if we stored a sitter, sit on it
rebakeSourceRestrictions(kID);
}
}
}
}
timer() {
if (g_iWaitRelay) {
llSetTimerEvent(0.0);
g_iWaitRelay = FALSE;
//ping inworld object so that they reinstate their restrictions
integer i;
for (i=0;i<llGetListLength(g_lRestrictions)/2;i++) {
key kSource=(key)llList2String(llList2ListStrided(g_lRestrictions,0,-1,2),i);
if ((key)kSource) llShout(RELAY_CHANNEL,"ping,"+(string)kSource+",ping,ping");
else rebakeSourceRestrictions(kSource); //reapply collar's restrictions here
}
} else if (g_iCheckCount++ <= g_iMaxViewerChecks) { //no response in timeout period, try again
llOwnerSay("@versionnew=293847");
if (g_iCheckCount>1) llMessageLinked(LINK_SET, POPUP_HELP, "\n\nIf your viewer doesn't support RLV, you can stop the \"@versionnew\" message by switching RLV off in your "+CTYPE+"'s RLV menu or by typing: _PREFIX_rlvoff\n", g_kWearer);
} else { //we've waited long enough, and are out of retries
llSetTimerEvent(0.0);
llListenRemove(g_iListener);
g_iCheckCount=0;
//llSetTimerEvent(0.0);
g_iViewerCheck = FALSE;
g_iRlvVersion = FALSE;
g_iRlvaVersion = FALSE;
setRlvState();
llOwnerSay("Could not detect Restrained Love Viewer. Restrained Love functions disabled.");
if (llGetListLength(g_lRestrictions) > 0 && llGetListLength(g_lOwners) > 0) {
string sMsg = WEARERNAME+" appears to have logged in without using the Restrained Love Viewer. Their Restrained Love functions have been disabled.";
integer i_OwnerCount=llGetListLength(g_lOwners);
integer i;
for(i=0; i < i_OwnerCount; i+=2) {
Notify(llList2Key(g_lOwners,i), sMsg, FALSE);
}
if (i_OwnerCount == 2) llOwnerSay("Your owner has been notified.");
else llOwnerSay("Your owners have been notified.");
}
}
}
changed(integer change) {
if (change & CHANGED_OWNER) {
llResetScript();
}
//re make rlv restrictions after teleport or region change, because SL seems to be losing them
if (change & CHANGED_TELEPORT || change & CHANGED_REGION) { //if we teleported, or changed regions
//re make rlv restrictions after teleport or region change, because SL seems to be losing them
integer numBaked=llGetListLength(g_lBaked);
while (numBaked--){
llOwnerSay("@"+llList2String(g_lBaked,numBaked)+"=n");
//Debug("resending @"+llList2String(g_lBaked,numBaked));
}
}
if (change & CHANGED_INVENTORY) { //A script may have been recompiled or added, lets refresh the RLV state for other scripts
if (g_iRlvActive==TRUE) {
llSleep(2);
llMessageLinked(LINK_SET, RLV_ON, "", NULL_KEY);
if (g_iRlvaVersion) llMessageLinked(LINK_SET, RLVA_VERSION, (string) g_iRlvaVersion, NULL_KEY);
}
}
}
/*
if (change & CHANGED_REGION) {
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,565 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - rlvstuff //
// version 3.995 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sParentMenu = "RLV";
list g_lSettings; //3 strided list of prefix,option,value
list g_lChangedCategories;//list of categories that changed since last saved
integer g_lRLVcmds_stride=4;
list g_lRLVcmds=[ //4 strided list of menuname,command,prettyname,description
"rlvsit_","unsit","Stand","Stand up if seated",
"rlvsit_","sittp","Sit","Sit on objects >1.5m away",
"rlvtp_","tplm","Landmark","Teleport via Landmark",
"rlvtp_","tploc","Slurl","Teleport via Slurl/Map",
"rlvtp_","tplure","Lure","Teleport via offers",
"rlvtp_","showworldmap","Map","View World-map",
"rlvtp_","showminimap","Mini-map","View Mini-map",
"rlvtp_","showloc","Location","See current location",
"rlvtalk_","sendchat","Chat","Ability to Chat",
"rlvtalk_","chatshout","Shout","Ability to Shout",
"rlvtalk_","chatnormal","Whisper","Forced to Whisper",
"rlvtalk_","startim","Start IMs","Initiate IM Sessions",
"rlvtalk_","sendim","Send IMs","Respond to IMs",
"rlvtalk_","recvim","Get IMs","Receive IMs",
"rlvtalk_","recvchat","See Chat","Receive Chat",
"rlvtalk_","recvemote","See Emote","Receive Emotes",
"rlvtalk_","emote","Emote","Short Emotes if Chat blocked",
"rlvtouch_","fartouch","Far","Touch objects >1.5m away",
"rlvtouch_","touchworld","World","Touch in-world objects",
"rlvtouch_","touchattachself","Self","Touch your attachments",
"rlvtouch_","touchattachother","Others","Touch others' attachments",
"rlvmisc_","shownames","Names","See Avatar Names",
"rlvmisc_","fly","Fly","Ability to Fly",
"rlvmisc_","edit","Edit","Edit Objects",
"rlvmisc_","rez","Rez","Rez Objects",
"rlvmisc_","showinv","Inventory","View Inventory",
"rlvmisc_","viewnote","Notecards","View Notecards",
"rlvmisc_","viewscript","Scripts","View Scripts",
"rlvmisc_","viewtexture","Textures","View Textures",
"rlvmisc_","showhovertextworld","Hovertext","See hovertext like titles",
"rlvview_","camdistmax:0","Mouselook","Leave Mouselook",
"rlvview_","camunlock","Alt Zoom","Alt zoom/pan around",
"rlvview_","camdrawalphamax:1","See","See anything at all"
];
//commands take effect immediately and are not stored, like: force sit and force stand
//4 strided list of menuname,cmd,prettyname,desc
integer g_lIdmtCmds_stride=4;
list g_lIdmtCmds = [
"rlvsit_","sit","SitNow","Force Sit",
"rlvsit_","forceunsit","StandNow","Force Stand"
];
list g_lMenuHelpMap = [
"rlvsit_","sit",
"rlvtp_","travel",
"rlvtalk_","talk",
"rlvtouch_","touch",
"rlvmisc_","misc",
"rlvview_","view\n\nNOTE: This will only work on RLV API v2.9 and greater."
];
string TURNON = "✔";
string TURNOFF = "✘";
string CTYPE = "collar";
float g_fScanRange = 20.0;//range we'll scan for scripted objects when doing a force-sit
// Variables used for sit memory function
string g_sSitTarget = "";
integer g_iSitMode;
integer g_iSitListener;
float g_fRestoreDelay = 1.0;
integer g_iRestoreCount = 0;
float g_fPollDelay = 10.0;
//MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer SENSORDIALOG = -9003;
string UPMENU = "BACK";
key g_kWearer;
string g_sScript_sit="rlvsit_";
integer g_iRLVOn=FALSE;
list g_lMenuIDs;//3-strided list of avatars given menus, their dialog ids, and the name of the menu they were given
integer g_iMenuStride = 3;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Dialog(key kID, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth, string sName) {
key kMenuID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kID + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kMenuID);
integer iIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iIndex) g_lMenuIDs = llListReplaceList(g_lMenuIDs, [kID, kMenuID, sName], iIndex, iIndex + g_iMenuStride - 1);
else g_lMenuIDs += [kID, kMenuID, sName];
//Debug("Made "+sName+" menu.");
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID, 0, sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
Menu(key kID, integer iAuth, string sMenuName) {
//Debug("Making menu "+sMenuName);
if (!g_iRLVOn) {
Notify(kID, "RLV features are now disabled in this " + CTYPE + ". You can enable those in RLV submenu. Opening it now.", FALSE);
llMessageLinked(LINK_SET, iAuth, "menu RLV", kID);
return;
}
//build prompt showing current settings
//make enable/disable buttons
integer n;
string sPrompt;
list lButtons;
n=llListFindList(g_lMenuHelpMap,[sMenuName]);
if (~n){
sPrompt="\nwww.opencollar.at/"+llList2String(g_lMenuHelpMap,n+1)+"\n";
}
integer iStop = llGetListLength(g_lRLVcmds);
for (n = 0; n < iStop; n+=g_lRLVcmds_stride) {
if (llList2String(g_lRLVcmds,n)==sMenuName){
//see if there's a setting for this in the settings list
string sCmd = llList2String(g_lRLVcmds, n+1);
string sPretty = llList2String(g_lRLVcmds, n+2);
string desc = llList2String(g_lRLVcmds, n+3);
integer iIndex = llListFindList(g_lSettings, [sCmd]);
if (iIndex == -1) {
//if this cmd not set, then give button to enable
lButtons += [TURNOFF + " " + sPretty];
sPrompt += "\n" + sPretty + " = Enabled (" + desc + ")";
} else {
//else this cmd is set, then show in prompt, and make button do opposite
//get value of setting
string sValue = llList2String(g_lSettings, iIndex + 1);
if (sValue == "y") {
lButtons += [TURNOFF + " " + sPretty];
sPrompt += "\n" + sPretty + " = Enabled (" + desc + ")";
} else if (sValue == "n") {
lButtons += [TURNON + " " + sPretty];
sPrompt += "\n" + sPretty + " = Disabled (" + desc + ")";
}
}
}
}
//add immediate commands
iStop = llGetListLength(g_lIdmtCmds);
for (n = 0; n < iStop; n = n + g_lIdmtCmds_stride) {
if (llList2String(g_lIdmtCmds, n)==sMenuName){
lButtons += [llList2String(g_lIdmtCmds, n + 2)];
sPrompt += "\n" + llList2String(g_lIdmtCmds, n + 2) + " = " + llList2String(g_lIdmtCmds, n + 3);
}
}
//give an Allow All button
lButtons += [TURNON + " All"];
lButtons += [TURNOFF + " All"];
Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth, sMenuName);
}
string GetSetting(string sCategory, string sParam) {
integer iIndex = llListFindList(g_lSettings, [sCategory,sParam]);
return llList2String(g_lSettings, iIndex + 2);
}
SetSetting(string sCategory, string sOption, string sValue){
integer iIndex=llListFindList(g_lSettings,[sCategory,sOption]);
if (~iIndex) g_lSettings=llListReplaceList(g_lSettings, [sCategory, sOption, sValue], iIndex, iIndex+2); //there is already a setting, change it
else g_lSettings+=[sCategory, sOption, sValue]; //no setting exists.. add one
if (! ~llListFindList(g_lChangedCategories,[sCategory])) g_lChangedCategories+=sCategory; //if there are no previous changes for thi category, add the category to the list of changed ones
}
UpdateSettings() { //build one big string from the settings list, and send to to the viewer to reset rlv settings
//llOwnerSay("TP settings: " + llDumpList2String(lSettings, ","));
integer iSettingsLength = llGetListLength(g_lSettings);
//Debug("Applying "+(string)(iSettingsLength/3)+" settings");
if (iSettingsLength > 0) {
list lTempSettings;
string sTempRLVSetting;
string sTempRLVValue;
integer n;
list lNewList;
for (n = 0; n < iSettingsLength; n = n + 3) {
sTempRLVSetting=llList2String(g_lSettings, n+1);
sTempRLVValue=llList2String(g_lSettings, n + 2);
lNewList += [ sTempRLVSetting+ "=" + sTempRLVValue];
if (sTempRLVValue!="y")lTempSettings+=[sTempRLVSetting,sTempRLVValue];
if (sTempRLVSetting=="unsit" && sTempRLVValue=="n") { //permission to unsit revoked
llSetTimerEvent(1.0); //do timer event now to store name of seat, and start monitoring sitting
g_iRestoreCount = 20;
g_iSitMode=TRUE;
//Debug("Got deny unsit command, re-sit if necessary");
}
}
//output that string to viewer
llMessageLinked(LINK_SET, RLV_CMD, llDumpList2String(lNewList, ","), NULL_KEY);
}
}
SaveSettings() { //save to DB
list lCategorySettings;
while (llGetListLength(g_lChangedCategories)){
lCategorySettings=[];
integer numSettings=llGetListLength(g_lSettings);
while (numSettings){ //go through the list of all settings, and pull out any belonging to this category, store in temp list.
numSettings -= 3;
string sCategory=llList2String(g_lSettings,numSettings);
if (sCategory==llList2String(g_lChangedCategories,-1)){
lCategorySettings+=[llList2String(g_lSettings,numSettings+1),llList2String(g_lSettings,numSettings+2)];
}
}
if (llGetListLength(lCategorySettings)>0) llMessageLinked(LINK_SET, LM_SETTING_SAVE, llList2String(g_lChangedCategories,-1) + "List=" + llDumpList2String(lCategorySettings, ","), "");
else llMessageLinked(LINK_SET, LM_SETTING_DELETE, llList2String(g_lChangedCategories,-1) + "List", "");
g_lChangedCategories=llDeleteSubList(g_lChangedCategories,-1,-1);
}
}
ClearSettings(string _category) { //clear local settings list, delte from settings db
integer numSettings=llGetListLength(g_lSettings);
while (numSettings){
numSettings-=3;
string sCategory=llList2String(g_lSettings,numSettings);
if (sCategory==_category || _category==""){
g_lSettings=llDeleteSubList(g_lSettings,numSettings,numSettings+2);
if (! ~llListFindList(g_lChangedCategories,[sCategory])) g_lChangedCategories+=sCategory; //if there are no previous changes for thi category, add the category to the list of changed ones
}
}
SaveSettings();
//main RLV script will take care of sending @clear to viewer
}
UserCommand(integer iNum, string sStr, key kID, string fromMenu) {
if (iNum > COMMAND_WEARER) return; //nothing for lower than wearer here
sStr=llStringTrim(sStr,STRING_TRIM);
string sStrLower=llToLower(sStr);
if (sStrLower == "sitmenu" || sStrLower == "menu sit") Menu(kID, iNum, "rlvsit_");
else if (sStrLower == "rlvtp" || sStrLower == "menu travel") Menu(kID, iNum, "rlvtp_");
else if (sStrLower == "rlvtalk" || sStrLower == "menu talk") Menu(kID, iNum, "rlvtalk_");
else if (sStrLower == "rlvtouch" || sStrLower == "menu touch") Menu(kID, iNum, "rlvtouch_");
else if (sStrLower == "rlvmisc" || sStrLower == "menu misc") Menu(kID, iNum, "rlvmisc_");
else if (sStrLower == "rlvview" || sStrLower == "menu view") Menu(kID, iNum, "rlvview_");
else if (sStrLower == "sitnow") {
if (!g_iRLVOn) {
Notify(kID, "RLV features are now disabled in this " + CTYPE + ". You can enable those in RLV submenu. Opening it now.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu RLV", kID);
} else {
//give menu of nearby objects that have scripts in them
//this assumes that all the objects you may want to force your sub to sit on
//have scripts in them
string sName="FindSeatMenu";
key kMenuID = llGenerateKey();
llMessageLinked(LINK_THIS, SENSORDIALOG, (string)kID + "|Pick the object on which you want the sub to sit. If it's not in the list, have the sub move closer and try again.\n|0|``"+(string)(SCRIPTED|PASSIVE)+"`"+(string)g_fScanRange+"`"+(string)PI + "|BACK|" + (string)iNum, kMenuID);
integer iIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iIndex) g_lMenuIDs = llListReplaceList(g_lMenuIDs, [kID, kMenuID, sName], iIndex, iIndex + g_iMenuStride - 1); //we've alread given a menu to this user. overwrite their entry
else g_lMenuIDs += [kID, kMenuID, sName]; //we've not already given this user a menu. append to list
}
} else {
//do simple pass through for chat commands
//since more than one RLV command can come on the same line, loop through them
list lItems = llParseString2List(sStr, [","], []);
integer n;
integer iStop = llGetListLength(lItems);
list lChange; //list containing the categories with changed settings
for (n = 0; n < iStop; n++) {
//split off the parameters (anything after a : or =)
//and see if the thing being set concerns us
string sThisItem = llList2String(lItems, n);
string sBehavior = llList2String(llParseString2List(sThisItem, ["="], []), 0);
integer iBehaviourIndex=llListFindList(g_lRLVcmds, [sBehavior]);
if (sStr == "standnow") {
if (iNum == COMMAND_WEARER) llOwnerSay("Sorry, but RLV commands may only be given by owner, secowner, or group (if set).");
else {
sStr = "unsit=force";
if (GetSetting("rlvsit_","unsit")=="n") sStr = "unsit=y,unsit=force,unsit=n";
g_sSitTarget="";
//Debug("Removing tracked sit target");
llMessageLinked(LINK_SET, RLV_CMD, sStr, NULL_KEY);
}
}
else if (~iBehaviourIndex) {
string sCategory=llList2String(g_lRLVcmds,iBehaviourIndex-1);
if (llGetSubString(sCategory,-1,-1)=="_"){ //
//Debug(sBehavior+" is a behavior that we handle, from the "+sCategory+" category.");
//filter commands from wearer, if wearer is not owner
if (iNum == COMMAND_WEARER) llOwnerSay("Sorry, but RLV commands may only be given by owner, secowner, or group (if set).");
else {
string sOption = llList2String(llParseString2List(sThisItem, ["="], []), 0);
string sValue = llList2String(llParseString2List(sThisItem, ["="], []), 1);
integer iIndex = llListFindList(g_lSettings, [sCategory,sOption]);
SetSetting(sCategory, sOption, sValue);
}
}
} else if (~llListFindList(g_lIdmtCmds,[llList2String(llParseString2List(sThisItem,[":","="],[]),0)])) {
//Debug(sBehavior+" is an immediate command that we handle");
//filter commands from wearer, if wearer is not owner
if (iNum == COMMAND_WEARER) llOwnerSay("Sorry, but RLV commands may only be given by owner, secowner, or group (if set).");
else llMessageLinked(LINK_SET, RLV_CMD, sStr, NULL_KEY);
}
else if (sBehavior == "clear" && iNum == COMMAND_OWNER) ClearSettings("");
//else Debug("We don't handle "+sBehavior);
}
if (llGetListLength(g_lChangedCategories)) {
UpdateSettings();
SaveSettings();
}
if (fromMenu!="") Menu(kID, iNum, fromMenu);
}
}
default {
on_rez(integer iParam) {
llSetTimerEvent(0.0); //timer will be called by recieved settings as necessary
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
//llSetTimerEvent(1.0); //timer will be called by recieved settings as necessary
//Debug("Starting");
}
timer() {
if (!g_iRLVOn) return; // Nothing to do if RLV isn't enabled
if (GetSetting("rlvsit_","unsit")!="n") { //we are allowed to stand, so switch off timer and return
llSetTimerEvent(0.0);
g_sSitTarget = "";
//Debug("we are allowed to stand, so switch off timer, remove tracked sit target");
} else { //banned from standing up
key kSitKey = llList2Key(llGetObjectDetails(g_kWearer, [OBJECT_ROOT]), 0);
if (g_iSitMode) { // Restore mode. Find the seat and sit in it
llSetTimerEvent(g_fRestoreDelay);
if (g_sSitTarget == "") { //If we have no seat, go back to monitoring
g_iSitMode = 0;
//Debug("You weren't sitting on anything");
} else if ((string)kSitKey == g_sSitTarget) { //sat in the right seat, go back to monitoring
g_iSitMode = 0;
//Debug("You're in the right seat, go back to monitoring");
} else if (g_iRestoreCount > 0) { // Count down retries...
llOwnerSay("You should be sitting on " + llKey2Name((key)g_sSitTarget));
g_iRestoreCount--;
string sSittpValue = GetSetting("rlvsit_","sittp"); // Save the value of sittp as we need to temporarily enable it for forcesit
llMessageLinked(LINK_THIS, RLV_CMD, "sittp=y,sit:" + g_sSitTarget + "=force,sittp=" + sSittpValue, NULL_KEY);
} else {
llOwnerSay("Couldn't re-seat you on " + llKey2Name((key)g_sSitTarget));
//Debug("Removing tracked sit target");
g_iSitMode = 0;
g_sSitTarget = "";
}
} else { //monitoring the sub's sitting activity
llSetTimerEvent(g_fPollDelay);
if (kSitKey == g_kWearer) { //store "not sitting down"
g_sSitTarget = "";
//Debug("Not sitting down");
} else {
g_sSitTarget = (string)kSitKey; //store ID of your seat.
//Debug("Sitting on " + llKey2Name((key)g_sSitTarget));
}
}
}
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu) {
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|Sit", "");
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|Travel", "");
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|Talk", "");
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|Touch", "");
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|Misc", "");
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|View", "");
}
else if (iNum >= COMMAND_OWNER && iNum <= COMMAND_EVERYONE) UserCommand(iNum, sStr, kID, "");
else if (iNum == LM_SETTING_RESPONSE) {
//this is tricky since our db value contains equals signs
//split string on both comma and equals sign
//first see if this is the token we care about
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer iChange = FALSE;
string category=llList2String(llParseString2List(sToken,["_"],[]),0)+"_";
if (~llListFindList(g_lMenuHelpMap,[category])){
//Debug("got settings token: "+category);
sToken=llList2String(llParseString2List(sToken,["_"],[]),1);
if (sToken == "List") {
//throw away first element
//everything else is real settings (should be even number)
ClearSettings(category);
list lNewSettings = llParseString2List(sValue, [","], []);
while (llGetListLength(lNewSettings)){
list lTempSettings=[category,llList2String(lNewSettings,-2),llList2String(lNewSettings,-1)];
//Debug(llDumpList2String(lTempSettings," - "));
g_lSettings+=lTempSettings;
lNewSettings=llDeleteSubList(lNewSettings,-2,-1);
}
UpdateSettings();
}
}
else if (sToken == "Global_CType") CTYPE = sValue;
//else Debug("not my token: "+category);
} else if (iNum == RLV_REFRESH) { //rlvmain just started up. Tell it about our current restrictions
g_iRLVOn = TRUE;
UpdateSettings();
}
else if (iNum == RLV_CLEAR) ClearSettings(""); //clear db and local settings list
else if (iNum == RLV_OFF) g_iRLVOn=FALSE; // rlvoff -> we have to turn the menu off too
else if (iNum == RLV_ON) g_iRLVOn=TRUE; // rlvon -> we have to turn the menu on again
else if (iNum == DIALOG_RESPONSE) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex) { //it's one of our menus
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
//remove stride from g_lMenuIDs
//we have to subtract from the index because the dialog id comes in the middle of the stride
string sMenu=llList2String(g_lMenuIDs, iMenuIndex + 1);
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
if (sMenu == "FindSeatMenu") {
if (sMessage==UPMENU) Menu(kAv, iAuth, "rlvsit_");
else if ((key) sMessage) {
//Debug("Sending \""+"sit:" + sMessage + "=force\" to "+(string)kAv+" with auth "+(string)iAuth);
UserCommand(iAuth, "sit:" + sMessage + "=force", kAv, "rlvsit_");
}
} else {
if (sMessage == UPMENU) llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
else if (sMessage == "SitNow") UserCommand(iAuth, "sitnow", kAv, "rlvsit_");
else if (sMessage == "StandNow") UserCommand(iAuth, "standnow", kAv, "rlvsit_");
else {
//we got a command to enable or disable something, like "Enable LM"
//get the actual command name by looking up the pretty name from the message
list lParams = llParseString2List(sMessage, [" "], []);
string sSwitch = llList2String(lParams, 0);
string sCmd = llDumpList2String(llDeleteSubList(lParams,0,0)," ");
integer iIndex = llListFindList(g_lRLVcmds, [sCmd]);
if (sCmd == "All") {
//handle the "Allow All" and "Forbid All" commands
string ONOFF;
//decide whether we need to switch to "y" or "n"
if (sSwitch == TURNOFF) ONOFF = "n"; //enable all functions (ie, remove all restrictions
else if (sSwitch == TURNON) ONOFF = "y";
//loop through rlvcmds to create list
string sOut;
integer n;
integer iStop = llGetListLength(g_lRLVcmds);
for (n = 0; n < iStop; n+=g_lRLVcmds_stride) {
if (llList2String(g_lRLVcmds,n)==sMenu){
if (sOut != "") sOut += ","; //prefix all but the first value with a comma, so we have a comma-separated list
sOut += llList2String(g_lRLVcmds, n+1) + "=" + ONOFF;
}
}
UserCommand(iAuth, sOut, kAv, sMenu);
} else if ((~iIndex) && llList2String(g_lRLVcmds,iIndex-2)==sMenu) {
string sOut = llList2String(g_lRLVcmds, iIndex-1);
sOut += "=";
if (sSwitch == TURNON) sOut += "y";
else if (sSwitch == TURNOFF) sOut += "n";
//send rlv command out through auth system as though it were a chat command, just to make sure person who said it has proper authority
UserCommand(iAuth, sOut, kAv, sMenu);
}
}
}
}
} else if (iNum == DIALOG_TIMEOUT) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
//remove stride from g_lMenuIDs
//we have to subtract from the index because the dialog id comes in the middle of the stride
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
}
}
/*
changed(integer iChange)
{
if (iChange & CHANGED_REGION) {
if (g_iProfiled){
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,975 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - rlvundress //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//gives menus for clothing and attachment, stripping and locking
//Satomi Ahn, Medea Destiny
string g_sSubMenu = "Un/Dress";
string g_sParentMenu = "RLV";
//list g_lChildren = ["Rem Clothing"]; //,"LockClothing","LockAttachment"];//,"LockClothing","UnlockClothing"];
list g_lSubMenus= [];
string SELECT_CURRENT = "*InFolder";
string SELECT_RECURS= "*Recursively";
list g_lRLVcmds = ["attach","detach","remoutfit", "addoutfit","remattach","addattach"];
integer g_iSmartStrip=FALSE; //use @detachallthis isntead of remove
string SMARTON="☐ SmartStrip";
string SMARTOFF = "☒ SmartStrip";
//string SMARTHELP = "Help";
string g_sSmartHelpCard = "OpenCollar Guide";
string g_sSmartToken="smartstrip";
//key g_kSmartUser; //we store the last person to select if they are not wearer/owner, so that it can be switched on for current user without changing setting.
list g_lSettings;//2-strided list in form of [option, param]
string CTYPE = "collar";
string WEARERNAME;
list LOCK_CLOTH_POINTS = [
"Gloves",
"Jacket",
"Pants",
"Shirt",
"Shoes",
"Skirt",
"Socks",
"Underpants",
"Undershirt",
"Skin",
"Eyes",
"Hair",
"Shape",
"Alpha",
"Tattoo",
"Physics"
];
list DETACH_CLOTH_POINTS = [
"Gloves",
"Jacket",
"Pants",
"Shirt",
"Shoes",
"Skirt",
"Socks",
"Underpants",
"Undershirt",
"xx", //"skin", those are not to be detached, so we ignore them later
"xx", //"eyes", those are not to be detached, so we ignore them later
"xx", //"hair", those are not to be detached, so we ignore them later
"xx", //"shape", those are not to be detached, so we ignore them later
"Alpha",
"Tattoo",
"Physics"
];
list ATTACH_POINTS = [//these are ordered so that their indices in the list correspond to the numbers returned by llGetAttached
"None",
"Chest",
"Skull",
"Left Shoulder",
"Right Shoulder",
"Left Hand",
"Right Hand",
"Left Foot",
"Right Foot",
"Spine",
"Pelvis",
"Mouth",
"Chin",
"Left Ear",
"Right Ear",
"Left Eyeball",
"Right Eyeball",
"Nose",
"R Upper Arm",
"R Forearm",
"L Upper Arm",
"L Forearm",
"Right Hip",
"R Upper Leg",
"R Lower Leg",
"Left Hip",
"L Upper Leg",
"L Lower Leg",
"Stomach",
"Left Pec",
"Right Pec",
"Center 2",
"Top Right",
"Top",
"Top Left",
"Center",
"Bottom Left",
"Bottom",
"Bottom Right",
"Neck",
"Avatar Center"
];
//MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; //RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
string UPMENU = "BACK";
string ALL = " ALL";
string TICKED = "☒ ";
string UNTICKED = "☐ ";
//variables for storing our various dialog ids
key g_kMainID;
key g_kClothID;
key g_kAttachID;
key g_kLockID;
key g_kLockAttachID;
integer g_iRLVTimeOut = 60;
integer g_iClothRLV = 78465;
integer g_iAttachRLV = 78466;
integer g_iListener;
key g_kMenuUser; // id of the avatar who will get the next menu after asynchronous response from RLV
integer g_iMenuAuth; // auth level of that user
integer g_iRLVOn = FALSE;
list g_lLockedItems; // list of locked clothes
list g_lLockedAttach; // list of locked attachmemts
key g_kWearer;
string g_sScript;
integer g_iAllLocked = 0; //1=all clothes are locked on
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
MainMenu(key kID, integer iAuth)
{
//string sPrompt = "\n\nNote: Keep in mind that mesh clothing is worn as attachments and in most cases together with alpha masks which are worn as clothing layers. It is recommended to explore the possibilities of #RLV Folders for a smooth un/dressing experience.\n";
string sPrompt = "\nwww.opencollar.at/undress\n\nNOTE: Many clothes, and almost all mesh, mixes layers and attachments. With a properly set up #RLV folder";
//sPrompt+=" (click "+SMARTHELP+" for info)";
sPrompt+=", the SmartStrip option will allow these to be removed automatically. Otherwise, it is recommended to explore the #RLV Folders menu for a smoother un/dressing experience.";
list lButtons;
if (g_iAllLocked) //are all clothing and attachments locked?
{
sPrompt += "\n all clothes and attachments are currently locked.";
//skip the LockClothing and the LockAttachment buttons
lButtons += ["☒ Lock All"];
}
else
{
lButtons += ["☐ Lock All"];
lButtons += ["Rem Clothing"];
lButtons += ["Lock Clothing"];
}
if(g_iSmartStrip==TRUE)
{
//sPrompt += "\nSmartStrip is on.";
lButtons += SMARTOFF;
}
else
{
lButtons += SMARTON;
//sPrompt += "\nSmartStrip is off.";
}
lButtons += ["Rem Attachment","Lock Attachment"];
//lButtons+=SMARTHELP;
g_kMainID = Dialog(kID, sPrompt, lButtons+g_lSubMenus, [UPMENU], 0, iAuth);
}
QueryClothing(key kAv, integer iAuth)
{ //open listener
g_iListener = llListen(g_iClothRLV, "", g_kWearer, "");
//start timer
llSetTimerEvent(g_iRLVTimeOut);
//send rlvcmd
llMessageLinked(LINK_SET, RLV_CMD, "getoutfit=" + (string)g_iClothRLV, NULL_KEY);
g_kMenuUser = kAv;
g_iMenuAuth = iAuth;
}
ClothingMenu(key kID, string sStr, integer iAuth)
{
//str looks like 0110100001111
//loop through CLOTH_POINTS, look at chaClothingr of str for each
//for each 1, add capitalized button
string sPrompt = "Select an article of clothing to remove.";
list lButtons = [];
integer iStop = llGetListLength(DETACH_CLOTH_POINTS);
integer n;
for (n = 0; n < iStop; n++)
{
integer iWorn = (integer)llGetSubString(sStr, n, n);
list item = [llList2String(DETACH_CLOTH_POINTS, n)];
if (iWorn && llListFindList(g_lLockedItems,item) == -1)
{
if (llList2String(item,0)!="xx")
lButtons += item;
}
}
g_kClothID = Dialog(kID, sPrompt, lButtons, ["Attachments", UPMENU], 0, iAuth);
}
LockMenu(key kID, integer iAuth)
{
string sPrompt = "Select an article of clothing to un/lock.";
list lButtons;
if (llListFindList(g_lLockedItems,[ALL]) == -1)
lButtons += [UNTICKED+ALL];
else lButtons += [TICKED+ALL];
integer iStop = llGetListLength(LOCK_CLOTH_POINTS);
integer n;
for (n = 0; n < iStop; n++)
{
string sCloth = llList2String(LOCK_CLOTH_POINTS, n);
if (llListFindList(g_lLockedItems,[sCloth]) == -1)
lButtons += [UNTICKED+sCloth];
else lButtons += [TICKED+sCloth];
}
g_kLockID = Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
QueryAttachments(key kAv, integer iAuth)
{ //open listener
g_iListener = llListen(g_iAttachRLV, "", g_kWearer, "");
//start timer
llSetTimerEvent(g_iRLVTimeOut);
//send rlvcmd
llMessageLinked(LINK_SET, RLV_CMD, "getattach=" + (string)g_iAttachRLV, NULL_KEY);
g_kMenuUser = kAv;
g_iMenuAuth = iAuth;
}
LockAttachmentMenu(key kID, integer iAuth)
{
string sPrompt = "Select an attachment to un/lock.";
list lButtons;
//put tick marks next to locked things
integer iStop = llGetListLength(ATTACH_POINTS);
integer n;
for (n = 1; n < iStop; n++) //starting at 1 as "None" cannot be locked
{
string sAttach = llList2String(ATTACH_POINTS, n);
if (llListFindList(g_lLockedAttach,[sAttach]) == -1)
lButtons += [UNTICKED+sAttach];
else lButtons += [TICKED+sAttach];
}
g_kLockAttachID = Dialog(kID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
DetachMenu(key kID, string sStr, integer iAuth)
{
//remember not to add button for current object
//str looks like 0110100001111
//loop through CLOTH_POINTS, look at char of str for each
//for each 1, add capitalized button
string sPrompt = "Select an attachment to remove.";
//prevent detaching the collar itself
integer myattachpoint = llGetAttached();
list lButtons;
integer iStop = llGetListLength(ATTACH_POINTS);
integer n;
for (n = 0; n < iStop; n++)
{
if (n != myattachpoint)
{
integer iWorn = (integer)llGetSubString(sStr, n, n);
if (iWorn)
{
lButtons += [llList2String(ATTACH_POINTS, n)];
}
}
}
g_kAttachID = Dialog(kID, sPrompt, lButtons, ["Clothing", UPMENU], 0, iAuth);
}
UpdateSettings()
{ //build one big string from the settings list
//llOwnerSay("TP settings: " + llDumpList2String(g_lSettings, ","));
integer iSettingsLength = llGetListLength(g_lSettings);
if (iSettingsLength > 0)
{
g_lLockedItems=[];
g_lLockedAttach=[];
integer n;
list lNewList;
for (n = 0; n < iSettingsLength; n = n + 2)
{
list sOption=llParseString2List(llList2String(g_lSettings, n),[":"],[]);
string sValue=llList2String(g_lSettings, n + 1);
//Debug(llList2String(g_lSettings, n) + "=" + sValue);
lNewList += [llList2String(g_lSettings, n) + "=" + llList2String(g_lSettings, n + 1)];
if (llGetListLength(sOption)==1 && llList2String(sOption,0)=="remoutfit")
{
if (!~llListFindList(g_lLockedItems, [ALL])) g_lLockedItems += [ALL];
}
else if (llGetListLength(sOption)==2 && ~llSubStringIndex(llList2String(sOption, 0), "outfit"))
{
if (!~llListFindList(g_lLockedItems, [llList2String(sOption, 1)]))
g_lLockedItems += [llList2String(sOption,1)];
}
else if (llGetListLength(sOption)==2 && ~llSubStringIndex(llList2String(sOption, 0), "tach"))
{
if (!~llListFindList(g_lLockedAttach, [llList2String(sOption,1)]))
g_lLockedAttach += [llList2String(sOption,1)];
}
}
//output that string to viewer
llMessageLinked(LINK_SET, RLV_CMD, llDumpList2String(lNewList, ","), NULL_KEY);
//Debug("Loaded locks: Cloth- " + llList2CSV(g_lLockedItems) + ": Attach- " + llList2CSV(g_lLockedAttach));
}
}
ClearSettings()
{ //clear settings list
g_lSettings = [];
//clear the list of locked items
g_lLockedItems = [];
g_lLockedAttach=[];
SaveLockAllFlag(0);
//remove tpsettings from DB
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "List", "");
//main RLV script will take care of sending @clear to viewer
}
SaveLockAllFlag(integer iSetting)
{
if (g_iAllLocked == iSetting)
{
return;
}
g_iAllLocked = iSetting;
if(iSetting > 0)
{
//save the flag to the database
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "LockAll=Y", "");
}
else
{
//delete the flag from the database
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "LockAll", "");
}
}
DoLockAll(key kID)
{
llMessageLinked(LINK_SET, RLV_CMD, "addattach=n,remattach=n,remoutfit=n,addoutfit=n", NULL_KEY);
}
DoUnlockAll(key kID)
{
llMessageLinked(LINK_SET, RLV_CMD, "addattach=y,remattach=y,remoutfit=y,addoutfit=y", NULL_KEY);
}
// returns TRUE if eligible (AUTHED link message number)
integer UserCommand(integer iNum, string sStr, key kID) // here iNum: auth value, sStr: user command, kID: avatar id
{
if (iNum == COMMAND_EVERYONE) return TRUE; // No command for people with no privilege in this plugin.
else if (iNum > COMMAND_EVERYONE || iNum < COMMAND_OWNER) return FALSE; // sanity check
list lParams = llParseString2List(sStr, [":", "=", " "], []);
string sCommand = llList2String(lParams, 0);
//Debug(sStr + " ## " + sCommand);
if (sStr == "menu " + g_sSubMenu)
{//give this plugin's menu to kID
MainMenu(kID, iNum);
}
else if (sCommand == "smartstrip")
{
if(iNum==COMMAND_OWNER || iNum == COMMAND_WEARER)
{
string sOpt=llList2String(lParams,1);
if(sOpt == "on")
{
g_iSmartStrip=TRUE;
llMessageLinked(LINK_SET,LM_SETTING_SAVE, g_sScript + g_sSmartToken +"=1","");
}
else
{
g_iSmartStrip=FALSE;
llMessageLinked(LINK_SET,LM_SETTING_DELETE, g_sScript + g_sSmartToken,"");
}
}
else Notify(kID,"This requires a properly set-up outfit, only wearer or owner can turn it on.", FALSE);
}
else if (sCommand == "strip")
{
string sOpt=llList2String(lParams,1);
if(sOpt=="all")
{
if(g_iSmartStrip==TRUE)
{
integer x=14; //let's not strip tattoos and physics layers;
while(x)
{
if(x==13) x=9; //skip hair,skin,shape,eyes
--x;
string sItem=llToLower(llList2String(DETACH_CLOTH_POINTS,x));
llMessageLinked(LINK_SET, RLV_CMD, "detachallthis:"+ sItem +"=force",NULL_KEY);
}
}
llMessageLinked(LINK_SET, RLV_CMD, "remoutfit=force", NULL_KEY);
return TRUE;
}
sOpt = llToLower(sOpt);
string test=llToUpper(llGetSubString(sOpt,0,0))+llGetSubString(sOpt,1,-1);
if(llListFindList(DETACH_CLOTH_POINTS,[test])==-1) return FALSE;
//send the RLV command to remove it.
if(g_iSmartStrip==TRUE) llMessageLinked(LINK_SET, RLV_CMD , "detachallthis:" + sOpt + "=force", NULL_KEY);
llMessageLinked(LINK_SET, RLV_CMD, "remoutfit:" + sOpt + "=force", NULL_KEY); //yes, this isn't an else. We do it in case the item isn't in #RLV.
}
else if (llListFindList(g_lRLVcmds, [sCommand]) != -1)
{ //we've received an RLV command that we control. only execute if not sub
if (iNum == COMMAND_WEARER)
{
llOwnerSay("Sorry, but RLV commands may only be given by owner, secowner, or group (if set).");
}
else
{
llMessageLinked(LINK_SET, RLV_CMD, sStr, NULL_KEY);
string sOption = llList2String(llParseString2List(sStr, ["="], []), 0);
string sParam = llList2String(llParseString2List(sStr, ["="], []), 1);
integer iIndex = llListFindList(g_lSettings, [sOption]);
string opt1 = llList2String(llParseString2List(sOption, [":"], []), 0);
string opt2 = llList2String(llParseString2List(sOption, [":"], []), 1);
if (sParam == "n")
{
if (iIndex == -1)
{ //we don't alread have this exact setting. add it
g_lSettings += [sOption, sParam];
}
else
{ //we already have a setting for this option. update it.
g_lSettings = llListReplaceList(g_lSettings, [sOption, sParam], iIndex, iIndex + 1);
}
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "List=" + llDumpList2String(g_lSettings, ","), "");
}
else if (sParam == "y")
{
if (iIndex != -1)
{ //we already have a setting for this option. remove it.
g_lSettings = llDeleteSubList(g_lSettings, iIndex, iIndex + 1);
}
if (llGetListLength(g_lSettings)>0)
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + "List=" + llDumpList2String(g_lSettings, ","), "");
else
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript + "List", "");
}
}
}
else if (sStr == "lockclothingmenu")
{
if (!g_iRLVOn)
{
Notify(kID, "RLV features are now disabled in this " + CTYPE + ". You can enable those in RLV submenu. Opening it now.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu RLV", kID);
return TRUE;
}
LockMenu(kID, iNum);
}
else if (sStr == "lockattachmentmenu")
{
if (!g_iRLVOn)
{
Notify(kID, "RLV features are now disabled in this " + CTYPE + ". You can enable those in RLV submenu. Opening it now.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu RLV", kID);
return TRUE;
}
LockAttachmentMenu(kID, iNum);
}
else if (llGetSubString(sStr, 0, 11) == "lockclothing") {
string sMessage = llGetSubString(sStr, 13, -1);
if (iNum == COMMAND_WEARER)
{
Notify(kID, "Sorry you need owner privileges for locking clothes.", FALSE);
}
else if (sMessage==ALL||sStr== "lockclothing")
{
g_lLockedItems += [ALL];
Notify(kID, WEARERNAME+"'s clothing has been locked.", TRUE);
llMessageLinked(LINK_SET, iNum, "remoutfit=n", kID);
llMessageLinked(LINK_SET, iNum, "addoutfit=n", kID);
}
else if (llListFindList(LOCK_CLOTH_POINTS,[sMessage])!=-1)
{
g_lLockedItems += sMessage;
Notify(kID, WEARERNAME+"'s "+sMessage+" has been locked.", TRUE);
llMessageLinked(LINK_SET, iNum, "remoutfit:" + sMessage + "=n", kID);
llMessageLinked(LINK_SET, iNum, "addoutfit:" + sMessage + "=n", kID);
}
else Notify(kID, "Sorry you must either specify a cloth name or not use a parameter (which locks all the clothing layers).", FALSE);
}
else if (llGetSubString(sStr, 0, 13) == "unlockclothing")
{
if (iNum == COMMAND_WEARER)
{
Notify(kID, "Sorry you need owner privileges for unlocking clothes.", FALSE);
}
else
{
string sMessage = llGetSubString(sStr, 15, -1);
if (sMessage==ALL||sStr=="unlockclothing")
{
llMessageLinked(LINK_SET, iNum, "remoutfit=y", kID);
llMessageLinked(LINK_SET, iNum, "addoutfit=y", kID);
Notify(kID, WEARERNAME+"'s clothing has been unlocked.", TRUE);
integer iIndex = llListFindList(g_lLockedItems,[ALL]);
if (iIndex!=-1) g_lLockedItems = llDeleteSubList(g_lLockedItems,iIndex,iIndex);
}
else
{
llMessageLinked(LINK_SET, iNum, "remoutfit:" + sMessage + "=y", kID);
llMessageLinked(LINK_SET, iNum, "addoutfit:" + sMessage + "=y", kID);
Notify(kID, WEARERNAME+"'s "+sMessage+" has been unlocked.", TRUE);
integer iIndex = llListFindList(g_lLockedItems,[sMessage]);
if (iIndex!=-1) g_lLockedItems = llDeleteSubList(g_lLockedItems,iIndex,iIndex);
}
}
}
else if (llGetSubString(sStr, 0, 13) == "lockattachment")
{
string sPoint = llGetSubString(sStr, 15, -1);
if (iNum == COMMAND_WEARER)
{
Notify(kID, "Sorry you need owner privileges for locking attachments.", FALSE);
}
else if (llListFindList(ATTACH_POINTS ,[sPoint])!=-1)
{
if (llListFindList(g_lLockedAttach, [sPoint]) == -1) g_lLockedAttach += [sPoint];
Notify(kID, WEARERNAME+"'s "+sPoint+" attachment point is now locked.", TRUE);
llMessageLinked(LINK_SET, iNum, "detach:" + sPoint + "=n", kID);
}
else
{
Notify(kID, "Sorry you must either specify a attachment name.", FALSE);
}
}
else if (sStr == "lockall")
{
if (iNum == COMMAND_WEARER)
{
Notify(kID, "Sorry you need owner privileges for locking attachments.", FALSE);
}
else
{
DoLockAll(kID); //lock all clothes and attachment points
SaveLockAllFlag(1);
Notify(kID, WEARERNAME+"'s clothing and attachments have been locked.", TRUE);
}
}
else if (sStr == "unlockall")
{
if (iNum == COMMAND_WEARER)
{
Notify(kID, "Sorry you need owner privileges for unlocking attachments.", FALSE);
}
else
{
DoUnlockAll(kID); //unlock all clothes and attachment points
SaveLockAllFlag(0);
Notify(kID, WEARERNAME+"'s clothing and attachments have been unlocked.", TRUE);
}
}
else if (llGetSubString(sStr, 0, 15) == "unlockattachment")
{
if (iNum == COMMAND_WEARER)
{
Notify(kID, "Sorry you need owner privileges for unlocking attachments.", FALSE);
}
else
{
string sMessage = llGetSubString(sStr, 17, -1);
{
llMessageLinked(LINK_SET, iNum, "detach:" + sMessage + "=y", kID);
Notify(kID, WEARERNAME+"'s "+sMessage+" has been unlocked.", TRUE);
integer iIndex = llListFindList(g_lLockedAttach,[sMessage]);
if (iIndex!=-1) g_lLockedAttach = llDeleteSubList(g_lLockedAttach,iIndex,iIndex);
}
}
}
//else if (sStr == "refreshmenu")
//{
// g_lSubMenus = [];
// llMessageLinked(LINK_SET, MENUNAME_REQUEST, g_sSubMenu, "");
//}
else if (sStr == "undress")
{
if (!g_iRLVOn)
{
Notify(kID, "RLV features are now disabled in this " + CTYPE + ". You can enable those in RLV submenu. Opening it now.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu RLV", kID);
return TRUE;
}
MainMenu(kID, iNum);
}
else if (sStr == "clothing")
{
if (!g_iRLVOn)
{
Notify(kID, "RLV features are now disabled in this " + CTYPE + ". You can enable those in RLV submenu. Opening it now.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu RLV", kID);
return TRUE;
}
QueryClothing(kID, iNum);
}
else if (sStr == "attachment")
{
if (!g_iRLVOn)
{
Notify(kID, "RLV features are now disabled in this " + CTYPE + ". You can enable those in RLV submenu. Opening it now.", FALSE);
llMessageLinked(LINK_SET, iNum, "menu RLV", kID);
return TRUE;
}
QueryAttachments(kID, iNum);
}
// rlvoff -> we have to turn the menu off too
else if (iNum>=COMMAND_OWNER && sStr=="rlvoff") g_iRLVOn=FALSE;
return TRUE;
}
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "rlvundress_";
g_kWearer = llGetOwner();
WEARERNAME = llKey2Name(g_kWearer); //quick and dirty default, will get replaced by value from settings
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
//the command was given by either owner, secowner, group member, or wearer
if (UserCommand(iNum, sStr, kID)) return;
// rlvoff -> we have to turn the menu off too
else if (iNum == RLV_OFF) g_iRLVOn=FALSE;
// rlvon -> we have to turn the menu on again
else if (iNum == RLV_ON) g_iRLVOn=TRUE;
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
g_lSubMenus = []; //flush submenu buttons
llMessageLinked(LINK_SET, MENUNAME_REQUEST, g_sSubMenu, "");
}
else if (iNum == LM_SETTING_RESPONSE)
{ //this is tricky since our db value contains equals signs
//split string on both comma and equals sign
//first see if this is the token we care about
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
if (sToken == "LockAll")
{
g_iAllLocked = 1;
DoLockAll(kID);
}
else if (sToken == "List")
{
g_lSettings = llParseString2List(sValue, [","], []);
UpdateSettings();
}
else if (sToken == g_sSmartToken)
{
g_iSmartStrip=TRUE;
}
}
else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken=="Global_WearerName") WEARERNAME=sValue;
}
else if (iNum == RLV_REFRESH)
{//rlvmain just started up. Tell it about our current restrictions
g_iRLVOn = TRUE;
if(g_iAllLocked > 0) //is everything locked?
DoLockAll(kID); //lock everything on a RLV_REFRESH
UpdateSettings();
}
else if (iNum == RLV_CLEAR)
{ //clear db and local settings list
ClearSettings();
}
else if (iNum == MENUNAME_RESPONSE)
{
list lParams = llParseString2List(sStr, ["|"], []);
if (llList2String(lParams, 0)==g_sSubMenu)
{
string child = llList2String(lParams, 1);
//only add submenu if not already present
if (llListFindList(g_lSubMenus, [child]) == -1)
{
g_lSubMenus += [child];
g_lSubMenus = llListSort(g_lSubMenus, 1, TRUE);
}
}
}
else if (iNum == MENUNAME_REMOVE)
{
//sStr should be in form of parentmenu|childmenu
list lParams = llParseString2List(sStr, ["|"], []);
string child = llList2String(lParams, 1);
if (llList2String(lParams, 0)==g_sSubMenu)
{
integer iIndex = llListFindList(g_lSubMenus, [child]);
//only remove if it's there
if (iIndex != -1)
{
g_lSubMenus = llDeleteSubList(g_lSubMenus, iIndex, iIndex);
}
}
}
else if (iNum == DIALOG_RESPONSE)
{
if (llListFindList([g_kMainID, g_kClothID, g_kAttachID, g_kLockID, g_kLockAttachID], [kID]) != -1)
{//it's one of our menus
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (kID == g_kMainID)
{
if (sMessage == UPMENU) llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
else if (sMessage == "Rem Clothing") QueryClothing(kAv, iAuth);
else if (sMessage == "Rem Attachment") QueryAttachments(kAv, iAuth);
else if (sMessage == "Lock Clothing") LockMenu(kAv, iAuth);
else if (sMessage == "Lock Attachment") LockAttachmentMenu(kAv, iAuth);
else if (sMessage == "☐ Lock All") { UserCommand(iAuth, "lockall", kAv); MainMenu(kAv, iAuth); }
else if (sMessage == "☒ Lock All") { UserCommand(iAuth, "unlockall", kAv); MainMenu(kAv, iAuth); }
else if (sMessage == SMARTON) { UserCommand(iAuth, "smartstrip on",kAv); MainMenu(kAv, iAuth);}
else if (sMessage == SMARTOFF) { UserCommand(iAuth, "smartstrip off",kAv); MainMenu(kAv, iAuth);}
else if (sMessage == "Help") { llGiveInventory(kAv,g_sSmartHelpCard); MainMenu(kAv, iAuth);}
else if (llListFindList(g_lSubMenus,[sMessage]) != -1)
{
llMessageLinked(LINK_SET, iAuth, "menu " + sMessage, kAv);
}
else
{
//something went horribly wrong. We got a command that we can't find in the list
}
}
else if (kID == g_kClothID)
{
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else if (sMessage == "Attachments") QueryAttachments(kAv, iAuth);
else if (sMessage == ALL)
// SA:Â we can count ourselves lucky that all people who can see the menu have sufficient privileges for remoutfit commands!
// Note for people looking for the auth check: it would have been here, look no further!
{ //send the RLV command to remove it.
UserCommand(iAuth,"strip all",kAv); //See stuff in UserCommand. If we use smartstrip for all, then we'd jump to that here to save duplication, but otherwise it's a single LM, better to do it here than hit UserCommand.
// llMessageLinked(LINK_SET, RLV_CMD, "remoutfit=force", NULL_KEY);
//Return menu
//sleep fof a sec to let things detach
llSleep(0.5);
QueryClothing(kAv, iAuth);
}
else
{
UserCommand(iAuth,"strip "+sMessage,kAv);
llSleep(0.5);
QueryClothing(kAv, iAuth);
}
/* Moving this to UserCommand to allow "strip" chat command
else
{ //we got a cloth point.
sMessage = llToLower(sMessage);
//send the RLV command to remove it.
if(kAv==g_kSmartUser || g_iSmartStrip==TRUE){
llMessageLinked(LINK_SET, RLV_CMD , "detachallthis:" + sMessage + "=force", NULL_KEY);}
llMessageLinked(LINK_SET, RLV_CMD, "remoutfit:" + sMessage + "=force", NULL_KEY);
//Return menu
//sleep fof a sec to let things detach
llSleep(0.5);
QueryClothing(kAv, iAuth);
}
*/
}
else if (kID == g_kAttachID)
{
if (sMessage == UPMENU) llMessageLinked(LINK_SET, iAuth, "menu " + g_sSubMenu, kAv);
else if (sMessage == "Clothing") QueryClothing(kAv, iAuth);
else //SA: same remark here, people who are able to get the menu happen to be the ones who have the permission to detach
{ //we got an attach point. send a message to detach
sMessage = llToLower(sMessage);
//send the RLV command to remove it.
llMessageLinked(LINK_SET, RLV_CMD, "detach:" + sMessage + "=force", NULL_KEY);
//sleep for a sec to let tihngs detach
llSleep(0.5);
//Return menu
g_kMenuUser = kAv;
QueryAttachments(kAv, iAuth);
}
}
else if (kID == g_kLockID)
{
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else
{ //we got a cloth point.
string cstate = llGetSubString(sMessage,0,llStringLength(TICKED) - 1);
sMessage=llGetSubString(sMessage,llStringLength(TICKED),-1);
if (cstate==UNTICKED)
{
UserCommand(iAuth, "lockclothing "+sMessage, kAv);
}
else if (cstate==TICKED)
{
UserCommand(iAuth, "unlockclothing "+sMessage, kAv);
}
LockMenu(kAv, iAuth);
}
}
else if (kID == g_kLockAttachID)
{
if (sMessage == UPMENU) MainMenu(kAv, iAuth);
else
{ //we got a cloth point.
string cstate = llGetSubString(sMessage,0,llStringLength(TICKED) - 1);
sMessage=llGetSubString(sMessage,llStringLength(TICKED),-1);
if (cstate==UNTICKED)
{
UserCommand(iAuth, "lockattachment "+sMessage, kAv);
}
else if (cstate==TICKED)
{
UserCommand(iAuth, "unlockattachment "+sMessage, kAv);
}
LockAttachmentMenu(kAv, iAuth);
}
}
}
}
}
listen(integer iChan, string sName, key kID, string sMessage)
{
llListenRemove(g_iListener);
llSetTimerEvent(0.0);
if (iChan == g_iClothRLV)
{ // llOwnerSay(sMessage);
ClothingMenu(g_kMenuUser, sMessage, g_iMenuAuth);
}
else if (iChan == g_iAttachRLV)
{
// llOwnerSay(sMessage);
DetachMenu(g_kMenuUser, sMessage, g_iMenuAuth);
}
}
timer()
{//stil needed for rlv listen timeouts, though not dialog timeouts anymore
llListenRemove(g_iListener);
llSetTimerEvent(0.0);
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,722 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - settings //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// This script stores settings for other scripts in the collar. In bygone days
// it was responsible for storing them to an online database too. It doesn't
// do that anymore. But so long as plugin scripts are still using central
// storage like this, it's always possible we could bring back an online DB or
// someone could offer a third party one.
//
// Standardized format for settings - this will facilitate concordant AddOn integrations
// ID_Group=Token~Value~Token~Value (etc) in notecard (hard storage)
// Group_Token=Value (Setting storage & script usage)
// where:
// ID_ = collar description's 3rd entry (after the 2nd tilde)
// or "User_" for user customizations
// Group = what script/AddOn these settings are for
// Token = Setting to affect
// Value = set Token to this value
// EX: oc_texture=Base~steel~Ring~stripes (notecard line)
// texture_Base=steel,texture_Ring=stripes (in the scripts)
string PARENT_MENU = "Main";
string SUBMENU = "Options";
string DUMPCACHE = "Dump Cache";
string PREFUSER = "☐ Personal";
string PREFDESI = "☒ Personal"; // yes, I hate cutoff buttons
string STEALTH_OFF = "☐ Stealth"; // show the whole CTYPE
string STEALTH_ON = "☒ Stealth"; // hide the whole CTYPE
string LOADCARD="Load Defaults";
string REFRESH_MENU = "Fix Menus";
string UPMENU = "BACK";
key g_kMenuID;
key g_kWearer;
string g_sScript;
integer STEALTH;
string defaultscard = "defaultsettings";
string split_line; // to parse lines that were split due to lsl constraints
integer defaultsline = 0;
key defaultslineid;
key card_key;
// Message Map
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to settings store
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from store
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the store
integer LM_SETTING_REQUEST_NOCACHE = 2005;
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer INTERFACE_CHANNEL;
//string WIKI_URL = "http://www.opencollar.at/user-guide.html";
string DESIGN_ID;
list DESIGN_SETTINGS;
list USER_SETTINGS;
integer USER_PREF = FALSE; // user switch
integer SAY_LIMIT = 1024; // lsl "say" string limit
integer CARD_LIMIT = 255; // lsl card-line string limit
string ESCAPE_CHAR = "\\"; // end of card line, more value left for token
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
DoMenu(key keyID, integer iAuth)
{
string sPrompt = "\n" + DUMPCACHE + " prints current settings to chat.";
sPrompt += "\n" +LOADCARD+" restores the default settings.";
list lButtons = [DUMPCACHE,LOADCARD,REFRESH_MENU];
if (USER_PREF)
{
sPrompt += "\n\nUncheck " + PREFDESI + " to give designer settings priority.\n";
lButtons += [PREFDESI];
}
else
{
sPrompt += "\n\nCheck " + PREFUSER + " to give your personal settings priority.\n";
lButtons += [PREFUSER];
}
if (STEALTH) lButtons += [STEALTH_ON];
else lButtons += [STEALTH_OFF];
sPrompt +="\nwww.opencollar.at/options";
g_kMenuID = Dialog(keyID, sPrompt, lButtons, [UPMENU], 0, iAuth);
}
// Get Group or Token, 0=Group, 1=Token
string SplitToken(string in, integer slot)
{
integer i = llSubStringIndex(in, "_");
if (!slot) return llGetSubString(in, 0, i - 1);
return llGetSubString(in, i + 1, -1);
}
// To add new entries at the end of Groupings
integer GroupIndex(list cache, string token)
{
string group = SplitToken(token, 0);
integer i = llGetListLength(cache) - 1;
// start from the end to find last instance, +2 to get behind the value
for (; ~i ; i -= 2)
{
if (SplitToken(llList2String(cache, i - 1), 0) == group) return i + 1;
}
return -1;
}
integer SettingExists(string token)
{
if (~llListFindList(USER_SETTINGS, [token])) return TRUE;
if (~llListFindList(DESIGN_SETTINGS, [token])) return TRUE;
return FALSE;
}
list SetSetting(list cache, string token, string value)
{
integer idx = llListFindList(cache, [token]);
if (~idx) return llListReplaceList(cache, [value], idx + 1, idx + 1);
idx = GroupIndex(cache, token);
if (~idx) return llListInsertList(cache, [token, value], idx);
return cache + [token, value];
}
// like SetSetting, but only sets the value if there's not one already there.
list AddSetting(list cache, string token, string value)
{
integer i = llListFindList(cache, [token]);
if (~i) return cache;
i = GroupIndex(cache, token);
if (~i) return llListInsertList(cache, [token, value], i);
return cache + [token, value];
}
string GetSetting(string token)
{
integer i = llListFindList(USER_SETTINGS, [token]);
if (USER_PREF && ~i) return llList2String(USER_SETTINGS, i + 1);
integer d = llListFindList(DESIGN_SETTINGS, [token]);
if (~d) return llList2String(DESIGN_SETTINGS, d + 1);
return llList2String(USER_SETTINGS, i + 1);
}
// per = number of entries to put in each bracket
list ListCombineEntries(list in, string add, integer per)
{
list out;
while (llGetListLength(in))
{
list item;
integer i;
for (; i < per; i++) item += llList2List(in, i, i);
out += [llDumpList2String(item, add)];
in = llDeleteSubList(in, 0, per - 1);
}
return out;
}
DumpGroupSettings(string group, key id)
{
list sets;
list out;
string tok;
string val;
integer i;
integer x;
if (!USER_PREF) jump user;
@designer;
for (i = 0; i < llGetListLength(DESIGN_SETTINGS); i += 2)
{
tok = llList2String(DESIGN_SETTINGS, i);
if (SplitToken(tok, 0) == group)
{
tok = SplitToken(tok, 1);
val = llList2String(DESIGN_SETTINGS, i + 1);
x=llListFindList(out, [tok]);
if (~x) out = llListReplaceList(out, [val], x + 1, x + 1);
else out += [tok, val];
}
}
if (!USER_PREF) jump done;
@user;
for (i = 0; i < llGetListLength(USER_SETTINGS); i += 2)
{
tok = llList2String(USER_SETTINGS, i);
if (SplitToken(tok, 0) == group)
{
tok = SplitToken(tok, 1);
val = llList2String(USER_SETTINGS, i + 1);
x=llListFindList(out, [tok]);
if (~x) out = llListReplaceList(out, [val], x + 1, x + 1);
else out += [tok, val];
}
}
if (!USER_PREF) jump designer;
@done;
out = ListCombineEntries(out, "=", 2);
tok = (string)id + "\\" + group+ " settings\\";
while (llGetListLength(out))
{
val = llList2String(out, 0);
if (llStringLength(tok + val) + 2 > SAY_LIMIT)
{
llRegionSayTo(id, 0, tok);
tok = (string)id + "\\" + group + " settings\\" + val;
}
else tok += ";" + val;
out = llDeleteSubList(out, 0, 0);
}
llRegionSayTo(id, INTERFACE_CHANNEL, tok);
}
DelSetting(string token) // we'll only ever delete user settings
{
integer i = llGetListLength(USER_SETTINGS) - 1;
if (SplitToken(token, 1) == "all")
{
token = SplitToken(token, 0);
string var;
for (; ~i; i -= 2)
{
if (SplitToken(llList2String(USER_SETTINGS, i - 1), 0) == token)
USER_SETTINGS = llDeleteSubList(USER_SETTINGS, i - 1, i);
}
return;
}
i = llListFindList(USER_SETTINGS, [token]);
if (~i) USER_SETTINGS = llDeleteSubList(USER_SETTINGS, i, i + 1);
}
// run delimiters & add escape-characters for DumpCache
list Add2OutList(list in)
{
if (!llGetListLength(in)) return [];
string set = DESIGN_ID;
list out = ["#---Designer Defaults---#"];
if (in == USER_SETTINGS)
{
set = "User_";
out = ["#---My Settings---#"];
}
string buffer;
string temp;
string sid;
string pre;
string group;
string tok;
string val;
integer i;
for (i=0 ; i < llGetListLength(in); i += 2)
{
tok = llList2String(in, i);
val = llList2String(in, i + 1);
group = SplitToken(tok, 0);
tok = SplitToken(tok, 1);
integer bIsSplit = FALSE ;
integer iAddedLength = llStringLength(buffer) + llStringLength(val)
+ llStringLength(sid) +llStringLength(set) + 2;
if (group != sid || llStringLength(buffer) == 0 || iAddedLength >= CARD_LIMIT ) // new group
{
// Starting a new group.. flush the buffer to the output.
if ( llStringLength(buffer) ) out += [buffer] ;
sid = group;
pre = "\n" + set + sid + "=";
}
else pre = buffer + "~";
temp = pre + tok + "~" + val;
while (llStringLength(temp))
{
buffer = temp;
if (llStringLength(temp) > CARD_LIMIT)
{
bIsSplit = TRUE ;
buffer = llGetSubString(temp, 0, CARD_LIMIT - 2) + ESCAPE_CHAR;
temp = "\n" + llDeleteSubString(temp, 0, CARD_LIMIT - 2);
}
else temp = "";
if ( bIsSplit )
{
// if this is either a split buffer or one of it's continuation
// line outputs,
out += [buffer];
buffer = "" ;
}
}
}
// If there's anything left in the buffer, flush it to output.
if ( llStringLength(buffer) ) out += [buffer] ;
// Possibly this line was supposed to reallocate the list to keep it from taking too
// much space. Logically, this is a 'do nothing' line - replacing the last item in
// the 'out' list with the last item in the out list, with no changes.
////// out = llListReplaceList(out, [llList2String(out, -1)], -1, -1);
return out;
}
DumpCache(key id)
{
// compile everything into one list, so we can tell the user everything seamlessly
list out;
list say = ["Settings (Designer defaults, followed by User Entries)\n"];
say += ["The below can be copied and pasted to \"defaultsettings\" notecard\n"];
say += ["Replacing old entries, but must include Designer defaults (if present):\n"];
say += Add2OutList(DESIGN_SETTINGS) + ["\n"];
say += Add2OutList(USER_SETTINGS);
string old;
string new;
integer c;
while (llGetListLength(say))
{
new = llList2String(say, 0);
c = llStringLength(old + new) + 2;
if (c > SAY_LIMIT)
{
out += [old];
old = "";
}
old += new;
say = llDeleteSubList(say, 0, 0);
}
out += [old];
while (llGetListLength(out))
{
Notify(id, llList2String(out, 0), TRUE);
out = llDeleteSubList(out, 0, 0);
}
}
SendValues()
{
//Debug("Sending all settings");
//loop through and send all the settings
integer n = 0;
string tok;
list out;
if (USER_PREF) jump DesignSet;
@UserSet;
for (; n < llGetListLength(USER_SETTINGS); n += 2)
{
tok = llList2String(USER_SETTINGS, n) + "=";
tok += llList2String(USER_SETTINGS, n + 1);
if (llListFindList(out, [tok]) == -1) out += [tok];
}
n = 0;
if (USER_PREF) jump done;
@DesignSet;
for (; n < llGetListLength(DESIGN_SETTINGS); n += 2)
{
tok = llList2String(DESIGN_SETTINGS, n) + "=";
tok += llList2String(DESIGN_SETTINGS, n + 1);
if (llListFindList(out, [tok]) == -1) out += [tok];
}
n = 0;
if (USER_PREF) jump UserSet;
@done;
for (; n < llGetListLength(out); n++)
{
llMessageLinked(LINK_SET, LM_SETTING_RESPONSE, llList2String(out, n), "");
}
llMessageLinked(LINK_SET, LM_SETTING_RESPONSE, "settings=sent", "");//tells scripts everything has be sentout
}
integer UserCommand(integer iAuth, string sStr, key kID)
{
if (iAuth != COMMAND_OWNER && iAuth != COMMAND_WEARER) return FALSE;
if (sStr == "menu " + SUBMENU || llToLower(sStr) == llToLower(SUBMENU))
{
DoMenu(kID, iAuth);
return TRUE;
}
if (llToLower(llGetSubString(sStr, 0, 4)) == "dump_")
{
sStr = llToLower(llGetSubString(sStr, 5, -1));
if (sStr == "cache") DumpCache(kID);
else DumpGroupSettings(sStr, kID);
return TRUE;
}
integer i = llSubStringIndex(sStr, " ");
string sid = llToLower(llGetSubString(sStr, 0, i - 1)) + "_";
if (sid != llToLower(g_sScript)) return TRUE;
string C = llToLower(llGetSubString(sStr, i + 1, -1));
if (C == llToLower(PREFUSER))
{
USER_SETTINGS = SetSetting(USER_SETTINGS, g_sScript + "Pref", "User");
USER_PREF = TRUE;
}
else if (C == llToLower(PREFDESI))
{
USER_SETTINGS = SetSetting(USER_SETTINGS, g_sScript + "Pref", "Designer");
USER_PREF = FALSE;
}
else if (C == llToLower(DUMPCACHE))
{
DumpCache(kID);
}
else if (C == llToLower(LOADCARD))
{
defaultsline = 0;
if (llGetInventoryKey(defaultscard)!=NULL_KEY) {
defaultslineid = llGetNotecardLine(defaultscard, defaultsline);
}
}
else if (C == llToLower(REFRESH_MENU))
{
llMessageLinked(LINK_THIS, iAuth,"fixmenus",kID);
}
else if (C == llToLower(STEALTH_OFF))
{
STEALTH = TRUE;
llMessageLinked(LINK_THIS, iAuth,"hide",kID);
}
else if (C == llToLower(STEALTH_ON))
{
STEALTH = FALSE;
llMessageLinked(LINK_THIS, iAuth,"show",kID);
}
else return FALSE;
return TRUE;
}
default {
on_rez(integer iParam) {
// reset the whole lot.
if (g_kWearer == llGetOwner()) { //if owner hasn't changed, resend settings to plugins
llSleep(0.5); // brief wait for others to reset
SendValues();
} else llResetScript(); // else reset completely
// check alpha
if (llGetAlpha(ALL_SIDES) > 0) STEALTH = FALSE;
else STEALTH = TRUE;
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_sScript = "settings_";
// Ensure that settings resets AFTER every other script, so that they don't reset after they get settings
llSleep(0.5);
g_kWearer = llGetOwner();
INTERFACE_CHANNEL = (integer)("0x"+llGetSubString((string)g_kWearer,2,7)) + 1111;
if (INTERFACE_CHANNEL > 0) INTERFACE_CHANNEL *= -1;
if (INTERFACE_CHANNEL > -10000) INTERFACE_CHANNEL -= 30000;
defaultsline = 0;
if (llGetInventoryKey(defaultscard)!=NULL_KEY) {
defaultslineid = llGetNotecardLine(defaultscard, defaultsline);
card_key = llGetInventoryKey(defaultscard);
}
DESIGN_ID = llGetObjectDesc();
integer i = llSubStringIndex(DESIGN_ID, "~");
DESIGN_ID = llGetSubString(DESIGN_ID, i + 1, -1);
i = llSubStringIndex(DESIGN_ID, "~");
DESIGN_ID = llGetSubString(DESIGN_ID, i + 1, -1);
//Debug("Starting");
}
dataserver(key id, string data)
{
if (id == defaultslineid)
{
string sid;
string tok;
string val;
integer i;
if (data == EOF && split_line != "" )
{
data = split_line ;
split_line = "" ;
}
if (data != EOF)
{
// first we can filter out & skip blank lines & remarks
data = llStringTrim(data, STRING_TRIM_HEAD);
if (data == "" || llGetSubString(data, 0, 0) == "#") jump nextline;
// check for "continued" line pieces
if ( llStringLength(split_line) )
{
data = split_line + data ;
split_line = "" ;
}
if ( llGetSubString( data, -1, -1) == ESCAPE_CHAR )
{
split_line = llDeleteSubString( data, -1, -1) ;
jump nextline ;
}
// Next we wish to peel the special settings for this collar
// unique collar id is followed by Script (that settings are for) + "=tok~val~tok~val"
i = llSubStringIndex(data, "_");
id = llGetSubString(data, 0, i);
if (id != DESIGN_ID && id != "User_") jump nextline;
data = llGetSubString(data, i + 1, -1); // shave id off
i = llSubStringIndex(data, "=");
sid = (llGetSubString(data, 0, i - 1)) + "_";
data = llGetSubString(data, i + 1, -1);
list lData = llParseString2List(data, ["~"], []);
for (i = 0; i < llGetListLength(lData); i += 2)
{
tok = llList2String(lData, i);
val = llList2String(lData, i + 1);
if (sid == g_sScript) // a setting for this script
{
if (tok == "Pref" && val == "User") USER_PREF = TRUE;
}
if (id == DESIGN_ID) DESIGN_SETTINGS = SetSetting(DESIGN_SETTINGS, sid + tok, val);
else USER_SETTINGS = SetSetting(USER_SETTINGS, sid + tok, val);
}
@nextline;
defaultsline++;
defaultslineid = llGetNotecardLine(defaultscard, defaultsline);
}
else
{
// wait a sec before sending settings, in case other scripts are
// still resetting.
llSleep(2.0);
SendValues();
}
}
}
link_message(integer sender, integer iNum, string sStr, key id)
{
if (UserCommand(iNum, sStr, id)) return;
if (iNum == LM_SETTING_SAVE)
{
//save the token, value
list params = llParseString2List(sStr, ["="], []);
string token = llList2String(params, 0);
string value = llList2String(params, 1);
// if it's a revert to a designer setting, wipe it from user list
// otherwise, set it to user list
if (~llListFindList(DESIGN_SETTINGS, [token, value])) DelSetting(token);
else USER_SETTINGS = SetSetting(USER_SETTINGS, token, value);
}
else if (iNum == LM_SETTING_REQUEST)
{
//check the cache for the token
if (SettingExists(sStr))
{
llMessageLinked(LINK_SET, LM_SETTING_RESPONSE, sStr + "=" + GetSetting(sStr), "");
}
else
{
llMessageLinked(LINK_SET, LM_SETTING_EMPTY, sStr, "");
}
}
else if (iNum == LM_SETTING_DELETE)
{
DelSetting(sStr);
}
else if (iNum == DIALOG_RESPONSE)
{
if (id == g_kMenuID)
{
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0); // avatar using the menu
string sMessage = llList2String(lMenuParams, 1); // button label
integer iPage = (integer)llList2String(lMenuParams, 2); // menu page
integer iAuth = (integer)llList2String(lMenuParams, 3); // auth level of avatar
// request to switch to parent menu
if (sMessage == UPMENU)
{
llMessageLinked(LINK_ROOT, iAuth, "menu "+ PARENT_MENU, kAv);
return;
}
if (iAuth < COMMAND_OWNER || iAuth > COMMAND_WEARER) return;
if(iAuth==COMMAND_OWNER||iAuth==COMMAND_WEARER)
{ //moving everything to UserCommand to save doubling up on code.
UserCommand(iAuth,llGetSubString(g_sScript,0,-2)+" "+sMessage,kAv);
}
else Notify(kAv,"Sorry, only Owners & Wearers may acces this feature.",FALSE);
//if (sMessage == PREFDESI)
//{
// USER_PREF = FALSE;
// USER_SETTINGS = SetSetting(USER_SETTINGS, g_sScript + "Pref", "Designer");
//}
//else if (sMessage == PREFUSER)
//{
// USER_PREF = TRUE;
// USER_SETTINGS = SetSetting(USER_SETTINGS, g_sScript + "Pref", "User");
//}
//else if (sMessage == DUMPCACHE)
//{
// if (iAuth == COMMAND_OWNER || iAuth == COMMAND_WEARER) DumpCache(kAv);
// else Notify(kAv, "Only Owners & Wearer may access this feature.", FALSE);
//}
//else if (sMessage == LOADCARD)
//{
// if(kAv==g_kWearer)
// {
// defaultsline = 0;
// defaultslineid = llGetNotecardLine(defaultscard, defaultsline);
// }
// else Notify(kAv,"Only the collar wearer may reload defaults.",FALSE);
//}
// else if (sMessage == REFRESH_MENU)
//{
// if(iAuth==COMMAND_OWNER||iAuth==COMMAND_WEARER)
// {
// llDialog(kAv, "\n\nRebuilding menu.\n\nThis may take several seconds.", [], -341321);
// llResetOtherScript(g_sMenuScript);
// }
// else Notify(kAv,"Only the collar wearer and owners may refresh menus.",FALSE);
//}
DoMenu(kAv, iAuth);
}
}
//else if (iNum == MENUNAME_REQUEST && sStr == PARENT_MENU)
//{
// llMessageLinked(LINK_SET, MENUNAME_RESPONSE, PARENT_MENU + "|" + SUBMENU, "");
//}
else if (iNum == DIALOG_TIMEOUT)
{
// timeout from menu system, you do not have to react on this, but you can
if (id == g_kMenuID)
{
//Debug("The user was to slow or lazy, we got a timeout!");
}
}
}
changed(integer change)
{
if (change & CHANGED_COLOR)
{
//llSleep(0.1); // not sure for need this sleep...
{
if (llGetAlpha(ALL_SIDES) > 0) STEALTH = FALSE;
else STEALTH = TRUE;
}
}
if (change & CHANGED_OWNER) llResetScript();
if (change & CHANGED_INVENTORY)
{
if (llGetInventoryKey(defaultscard) != card_key)
{
// the defaultsettings card changed. Re-read it.
defaultsline = 0;
if (llGetInventoryKey(defaultscard)!=NULL_KEY) {
defaultslineid = llGetNotecardLine(defaultscard, defaultsline);
card_key = llGetInventoryKey(defaultscard);
}
}
llSleep(1.0); //pause, then send values if inventory changes, in case script was edited and needs its settings again
SendValues();
}
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,429 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - shininess //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//based on OpenCollar - texture
string g_sParentMenu = "Appearance";
string g_sSubMenu = "Shininess";
string g_sIgnoreType = "noshine" ; // or "notexture" if you don't want use alternate prims descriptions;
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;
integer LM_SETTING_REQUEST = 2001;
integer LM_SETTING_RESPONSE = 2002;
integer LM_SETTING_DELETE = 2003;
integer LM_SETTING_EMPTY = 2004;
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer TOUCH_REQUEST = -9500;
integer TOUCH_CANCEL = -9501;
integer TOUCH_RESPONSE = -9502;
integer TOUCH_EXPIRE = -9503;
string CTYPE = "collar";
string UPMENU = "BACK";
list g_lShiny = ["none","low","medium","high"];
string ALL = "All" ;
list g_lElements;
list g_lShinySettings;
list g_lButtons;
list g_lMenuIDs;
key g_kTouchID;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
string g_sCurrentElement = "";
key g_kWearer;
string g_sScript ;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_THIS, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
string GetScriptID()
{
// strip away "OpenCollar - " leaving the script's individual name
list parts = llParseString2List(llGetScriptName(), ["-"], []);
return llStringTrim(llList2String(parts, 1), STRING_TRIM) + "_";
}
key TouchRequest(key kRCPT, integer iTouchStart, integer iTouchEnd, integer iAuth)
{
key kID = llGenerateKey();
integer iFlags = 0;
if (iTouchStart) iFlags = iFlags | 0x01;
if (iTouchEnd) iFlags = iFlags | 0x02;
llMessageLinked(LINK_THIS, TOUCH_REQUEST, (string)kRCPT + "|" + (string)iFlags + "|" + (string)iAuth, kID);
return kID;
}
ShinyMenu(key kAv, integer iAuth)
{
string sPrompt = "Pick a Shiny.";
g_lMenuIDs+=[Dialog(kAv, sPrompt, g_lShiny, [UPMENU],0, iAuth)];
}
ElementMenu(key kAv, integer iAuth)
{
string sPrompt = "Pick which part of the "+CTYPE+" you would like to change shiny.\n\nChoose *Touch* if you want to select the part by directly clicking on the "+CTYPE+".";
g_lButtons = llListSort(g_lElements, 1, TRUE) + [ALL] ;
g_lMenuIDs+=[Dialog(kAv, sPrompt, g_lButtons, ["*Touch*", UPMENU],0, iAuth)];
}
string ElementType(integer iLinkNumber)
{
//string sDesc = (string)llGetObjectDetails(llGetLinkKey(iLinkNumber), [OBJECT_DESC]);
string sDesc = llList2String(llGetLinkPrimitiveParams(iLinkNumber, [PRIM_DESC]), 0);
//each prim should have <elementname> in its description, plus "noshiny, if you want the prim to
//not appear in the shiny menu
list lParams = llParseString2List(sDesc, ["~"], []);
if ((~(integer)llListFindList(lParams, [g_sIgnoreType])) || sDesc == "" || sDesc == " " || sDesc == "(No Description)")
{
return g_sIgnoreType;
}
else
{
return llList2String(lParams, 0);
}
}
BuildElementList()
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (n = 2; n <= iLinkCount; n++)
{
string sElement = ElementType(n);
if (!(~llListFindList(g_lElements, [sElement])) && sElement != g_sIgnoreType)
{
g_lElements += [sElement];
}
}
}
SetAllShiny(integer iShiny)
{
integer elements = llGetListLength(g_lElements) ;
integer index = 0 ;
do
{
string sElement = llList2String(g_lElements, index);
SetElementShiny(sElement, iShiny);
index++ ;
}while (index < elements ) ;
}
SetElementShiny(string sElement, integer iShiny)
{
SetElement(sElement, iShiny);
AddShinySettings(sElement, iShiny);
//save to settings DB
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + sElement + "=" + (string)iShiny, "");
}
SetElement(string sElement, integer iShiny)
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
for (n = 2; n <= iLinkCount; n++)
{
if (ElementType(n) == sElement)
{
llSetLinkPrimitiveParamsFast(n,[PRIM_BUMP_SHINY,ALL_SIDES,iShiny,0]);
}
}
}
AddShinySettings(string sElement, integer iShiny)
{
integer i = llListFindList(g_lShinySettings, [sElement]);
if (i == -1)
{
g_lShinySettings += [sElement, iShiny];
}
else
{
g_lShinySettings = llListReplaceList(g_lShinySettings, [iShiny], i+1, i+1);
}
}
UpdateElements()
{
integer elements = llGetListLength(g_lShinySettings) ;
integer i = 0 ;
do
{
string sElement = llList2String(g_lShinySettings, i);
integer iShiny = llList2Integer(g_lShinySettings, i+1);
SetElement(sElement, iShiny);
i+=2 ;
}while (i < elements ) ;
}
// returns TRUE if eligible (AUTHED link message number)
integer UserCommand(integer iNum, string sStr, key kID) // here iNum: auth value, sStr: user command, kID: avatar id
{
if (iNum > COMMAND_WEARER || iNum < COMMAND_OWNER) return FALSE; // sanity check
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
if (sStr == "menu "+ g_sSubMenu || sStr == "shiny")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the shiny.", FALSE);
llMessageLinked(LINK_THIS, iNum, "menu "+g_sParentMenu, kID);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the "+CTYPE+" is locked. You cannot access this menu now!", FALSE);
llMessageLinked(LINK_THIS, iNum, "menu "+g_sParentMenu, kID);
}
else
{
g_sCurrentElement = "";
ElementMenu(kID, iNum);
}
}
if (sCommand == "setshiny")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the shiny.", FALSE);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the "+CTYPE+" is locked. You cannot access this menu now!", FALSE);
}
else
{
string sElement = llList2String(lParams, 1);
integer iShiny = (integer)(llList2String(lParams, 2));
if (sElement == ALL || sElement == "all") SetAllShiny(iShiny);
else SetElementShiny(sElement, iShiny);
}
}
else if (sCommand == "lockappearance")
{
if (iNum == COMMAND_OWNER) g_iAppLock = llList2Integer(lParams, 1);
}
return TRUE;
}
// Get from Group_Token=Value , 0=Group, 1=Token, 2=Value
string SplitTokenValue(string in, integer slot)
{
string out ;
if (slot==0) out = llGetSubString(in, 0, llSubStringIndex(in, "_") );
else if (slot==1) out = llGetSubString(in, llSubStringIndex(in, "_")+1, llSubStringIndex(in, "=")-1);
else if (slot==2) out = llGetSubString(in, llSubStringIndex(in, "=")+1, -1);
return out ;
}
/*
RequestSettings()
{
// restore settings from DB after reset script
llMessageLinked(LINK_THIS, LM_SETTING_REQUEST, g_sAppLockToken, "");
// request settings for all Elements
integer n;
integer iStop = llGetListLength(g_lElements);
for (n = 0; n < iStop; n++)
{
string sElement = llList2String(g_lElements, n);
llMessageLinked(LINK_THIS, LM_SETTING_REQUEST, g_sScript + sElement, "");
}
}
*/
default {
on_rez(integer iParam) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
g_sScript = GetScriptID();
BuildElementList();
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (UserCommand(iNum, sStr, kID)) {return;}
else if (iNum == LM_SETTING_RESPONSE)
{
string sGroup = SplitTokenValue(sStr, 0);
string sToken = SplitTokenValue(sStr, 1);
string sValue = SplitTokenValue(sStr, 2);
if (sGroup == g_sScript) AddShinySettings(sToken, (integer)sValue);
else if (sGroup+sToken == g_sAppLockToken) g_iAppLock = (integer)sValue;
else if (sGroup+sToken == "Global_CType") CTYPE = sValue;
else if (sStr == "settings=sent") UpdateElements();
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == DIALOG_RESPONSE)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
g_lMenuIDs=llDeleteSubList(g_lMenuIDs,iMenuIndex,iMenuIndex);
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
if (g_sCurrentElement == "")
{
//main menu
llMessageLinked(LINK_THIS, iAuth, "menu "+g_sParentMenu, kAv);
}
else
{
g_sCurrentElement = "" ;
ElementMenu(kAv, iAuth);
}
}
else if (sMessage == "*Touch*")
{
Notify(kAv, "Please touch the part of the collar you want to shiny.", FALSE);
g_kTouchID = TouchRequest(kAv, TRUE, FALSE, iAuth);
}
else if (g_sCurrentElement == "")
{
//we just got the element name
g_sCurrentElement = sMessage;
ShinyMenu(kAv, iAuth);
}
else if (~(integer)llListFindList(g_lShiny, [sMessage]))
{
integer iShiny = llListFindList(g_lShiny, [sMessage]);
if(g_sCurrentElement == ALL) SetAllShiny(iShiny);
else SetElementShiny(g_sCurrentElement, iShiny);
ShinyMenu(kAv, iAuth);
}
}
}
else if (iNum == DIALOG_TIMEOUT)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
g_lMenuIDs=llDeleteSubList(g_lMenuIDs,iMenuIndex,iMenuIndex);
}
}
else if (iNum == TOUCH_RESPONSE)
{
if (kID == g_kTouchID)
{
list lParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lParams, 0);
integer iAuth = (integer)llList2String(lParams, 1);
integer iLinkNumber = (integer)llList2String(lParams, 3);
string sElement = ElementType(iLinkNumber);
if (sElement != g_sIgnoreType)
{
g_sCurrentElement = sElement;
ShinyMenu(kAv, iAuth);
Notify(kAv, "You selected \""+sElement+"\".", FALSE);
}
else
{
Notify(kAv, "You selected a prim which is not shiny. You can try again.", FALSE);
ElementMenu(kAv, iAuth);
}
}
}
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,420 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - styles //
// version 3.995 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sSubMenu = "Styles";
string g_sParentMenu = "Appearance";
string CTYPE = "collar";
key g_kWearer;
string UPMENU = "BACK";
string DUMP = "Dump Style";
integer COMMAND_OWNER = 500;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer LM_SETTING_SAVE = 2000;
//integer LM_SETTING_REQUEST = 2001;
integer LM_SETTING_RESPONSE = 2002;
//integer LM_SETTING_DELETE = 2003;
//integer LM_SETTING_EMPTY = 2004;
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
//script specific variables
list g_lMenuIDs;//3-strided list of avkey, dialogid, menuname
integer g_iMenuStride = 3;
string g_sStyle;
list g_lElementsSettings; // [element_name,"key_texture~vector_color~integer_shine"]
list g_lStyles; // list of style names
list g_lStyleSettings; // list of style settings ["Stylename1", "elementname~keytexture~vectorcolor~integershine", "elementname~keytexture~vectorcolor~integershine", ... "Stylename2",....]
key g_iNotecardId;
key g_kNotecardReadRequest;
string g_sNotecardName=".styles";
integer g_iNotecardLine=0;
string g_sNotecardStyle ;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
integer g_iHasColorScript = FALSE;
integer g_iHasTextureScript = FALSE;
integer g_iHasShineScript = FALSE;
//standard OC functions
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth, string menuType) {
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
integer iMenuIndex = llListFindList(g_lMenuIDs, [kRCPT]);
list lAddMe = [kRCPT, kID, menuType];
if (iMenuIndex == -1) g_lMenuIDs += lAddMe;
else g_lMenuIDs = llListReplaceList(g_lMenuIDs, lAddMe, iMenuIndex, iMenuIndex + g_iMenuStride - 1);
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)!=ZERO_VECTOR) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
//menu generators
StyleMenu(key kAv, integer iAuth)
{
Dialog(kAv, "\nCurrent Style: "+g_sStyle+"\n\nSelect an style from the list", g_lStyles, [DUMP, UPMENU],0, iAuth, "StyleMenu");
}
SetStyle(string sStyle, integer iAuth, key kAv)
{
if (llListFindList(g_lStyles,[sStyle]) == -1) return; // unknown style
g_sStyle = sStyle;
integer index = llListFindList(g_lStyleSettings,[sStyle]) ;
if (index == -1) return; // no style settings
while (index++ >= 0)
{
string setting = llList2String(g_lStyleSettings,index);
if ((~llListFindList(g_lStyles,[setting])) || setting == "") index = -1;
else
{
list lParams = llParseString2List(setting,["~"],[]);
string sElement = llStringTrim(llList2String(lParams,0),STRING_TRIM);
if (sElement != "")
{
string sTexture = llStringTrim(llList2String(lParams,1),STRING_TRIM);
if (sTexture != "")
{
llMessageLinked(LINK_SET, iAuth, "settexture " + sElement+" "+sTexture, kAv);
if (!g_iHasTextureScript) SetTexture(sElement, sTexture);
}
string sColor = llStringTrim(llList2String(lParams,2),STRING_TRIM);
if (sColor != "")
{
llMessageLinked(LINK_SET, iAuth, "setcolor "+sElement+" "+sColor, kAv);
if (!g_iHasColorScript) SetColor(sElement, (vector)sColor);
}
string sShine = llStringTrim(llList2String(lParams,3),STRING_TRIM);
if (sShine != "")
{
llMessageLinked(LINK_SET, iAuth, "setshiny " + sElement+" "+sShine, kAv);
if (!g_iHasShineScript) SetShine(sElement, (integer)sShine);
}
}
}
}
}
SetTexture(string sElement, string sTex)
{
integer i;
integer n = llGetNumberOfPrims();
for (i = 2; i <= n; i++)
{
if (ElementType(i,"notexture") == sElement)
{
// llSetLinkPrimitiveParamsFast(iLink, [PRIM_TEXTURE,ALL_SIDES,sTex,<1.0,1.0,1.0>,<0.0,0.0,0.0>,0.0] );
// update prim texture for each face with save texture repeats, offsets and rotations
integer iSides = llGetLinkNumberOfSides(i);
integer iFace ;
for (iFace = 0; iFace < iSides; iFace++)
{
list lParams = llGetLinkPrimitiveParams(i, [PRIM_TEXTURE, iFace ]);
lParams = llDeleteSubList(lParams,0,0); // get texture params
llSetLinkPrimitiveParamsFast(i, [PRIM_TEXTURE, iFace, sTex]+lParams);
}
}
}
}
SetColor(string sElement, vector vColor)
{
integer i;
integer n = llGetNumberOfPrims();
for (i = 2; i <= n; i++)
{
if (ElementType(i,"nocolor") == sElement) llSetLinkColor(i, vColor, ALL_SIDES);
}
}
SetShine(string sElement, integer iShine)
{
integer i;
integer n = llGetNumberOfPrims();
for (i = 2; i <= n; i++)
{
if (ElementType(i,"notexture") == sElement) llSetLinkPrimitiveParamsFast(i,[PRIM_BUMP_SHINY,ALL_SIDES,iShine,0]);
}
}
string ElementType(integer iLinkNum, string sType)
{
string sDesc = llList2String(llGetLinkPrimitiveParams(iLinkNum, [PRIM_DESC]),0);
list lParams = llParseString2List(llStringTrim(sDesc,STRING_TRIM), ["~"], []);
if ((~llListFindList(lParams,[sType])) || sDesc == "" || sDesc == "(No Description)") return sType;
else return llList2String(lParams, 0);
}
AddElementSetting(string element, string value, integer n )
{
if (element =="") return ;
string params;
integer i = llListFindList(g_lElementsSettings, [element]);
if (i==-1)
{
if(n==0) params = value+"~ ~ ";
if(n==1) params = " ~"+value+"~ ";
if(n==2) params = " ~ ~"+value;
g_lElementsSettings += [element, params];
}
else
{
string sParams = llList2String(g_lElementsSettings,i+1);
list lParams = llParseString2List(sParams,["~"],[]);
lParams = llListReplaceList(lParams, [value], n, n);
sParams = llDumpList2String(lParams,"~");
g_lElementsSettings = llListReplaceList(g_lElementsSettings, [sParams], i+1, i+1);
}
}
integer UserCommand(integer iAuth, string sStr, key kAv, integer remenu)
{
if (iAuth > COMMAND_WEARER || iAuth < COMMAND_OWNER) return FALSE; // sanity check
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
//string sValue = llList2String(lParams, 1);
if (sStr == "menu "+ g_sSubMenu || llToLower(sStr) == "styles")
{
if (kAv!=g_kWearer && iAuth!=COMMAND_OWNER)
{
Notify(kAv,"You are not allowed to change the "+CTYPE+"'s style.", FALSE);
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
}
else if (g_iAppLock)
{
Notify(kAv, "The appearance of the " + CTYPE + " is locked. You cannot access this menu now!", FALSE);
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
}
else StyleMenu(kAv, iAuth);
}
else if (sCommand == "lockappearance" && iAuth == COMMAND_OWNER)
{
string sValue = llStringTrim(llDeleteSubString(sStr,0,llStringLength(sCommand)),STRING_TRIM);
if (sValue == "0") g_iAppLock = FALSE;
if (sValue == "1") g_iAppLock = TRUE;
}
else if (sCommand == "style" && !g_iAppLock)
{
string sValue = llStringTrim(llDeleteSubString(sStr,0,llStringLength(sCommand)),STRING_TRIM);
if (~llListFindList(g_lStyles,[sValue]))
{
SetStyle(sValue, iAuth, kAv);
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, "styles_style=" + sValue, "");
}
else Notify(kAv,"Unrecognised style: "+sValue+" not in '"+llDumpList2String(g_lStyles,",")+"'",FALSE);
if (remenu) StyleMenu(kAv, iAuth);
}
else if (sStr == "dumpstyle")
{
DumpSettings(kAv,"~");
if (remenu) StyleMenu(kAv, iAuth);
}
return TRUE ;
}
DumpSettings(key kAv, string sep)
{
g_lElementsSettings = llListSort(g_lElementsSettings, 2, TRUE);
string out = "\n# Copy all below into '"+g_sNotecardName+"' notecard and change 'New Style' to own style name:\n\n[ New Style ]\n";
integer i;
for (i = 0; i < llGetListLength(g_lElementsSettings); i += 2)
{
out += llList2String(g_lElementsSettings, i)+sep+llList2String(g_lElementsSettings, i+1)+"\n";
}
Notify(kAv,out,FALSE);
}
CheckScripts()
{
g_iHasTextureScript = g_iHasColorScript = g_iHasShineScript = FALSE;
if (llGetInventoryType("OpenCollar - color") == INVENTORY_SCRIPT) g_iHasColorScript = TRUE;
if (llGetInventoryType("OpenCollar - texture") == INVENTORY_SCRIPT) g_iHasTextureScript = TRUE;
if (llGetInventoryType("OpenCollar - shininess") == INVENTORY_SCRIPT) g_iHasShineScript = TRUE;
// this is for my own script:
//if (llGetInventoryType("OpenCollar - customize") == INVENTORY_SCRIPT) g_iHasTextureScript = g_iHasColorScript = g_iHasShineScript = TRUE;
}
default
{
on_rez(integer param)
{
//llResetScript();
g_lElementsSettings = [] ;
CheckScripts();
}
state_entry()
{
CheckScripts();
g_kWearer = llGetOwner();
g_iNotecardId = llGetInventoryKey(g_sNotecardName);
if(g_iNotecardId)
{
g_iNotecardLine=0;
g_kNotecardReadRequest=llGetNotecardLine(g_sNotecardName,0);
}
//else llOwnerSay(g_sNotecardName+" notecard absent!");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (UserCommand(iNum, sStr, kID, FALSE)) return;
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sGroupToken = llList2String(lParams, 0);
string sGroup = llList2String(llParseString2List(sGroupToken,["_"],[]),0);
string sToken = llList2String(llParseString2List(sGroupToken,["_"],[]),1);
string sValue = llList2String(lParams, 1);
if (sToken == "CType") CTYPE = sValue;
else if (sGroup == "texture") AddElementSetting(sToken, sValue, 0);
else if (sGroup == "color") AddElementSetting(sToken, sValue, 1);
else if (sGroup == "shininess") AddElementSetting(sToken, sValue, 2);
else if (sGroupToken == "styles_style") g_sStyle = sValue; // SetStyle(sValue,COMMAND_WEARER,g_kWearer);
else if (sGroupToken == g_sAppLockToken) g_iAppLock = (integer)sValue;
}
else if (iNum == LM_SETTING_SAVE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sGroupToken = llList2String(lParams, 0);
string sGroup = llList2String(llParseString2List(sGroupToken,["_"],[]),0);
string sToken = llList2String(llParseString2List(sGroupToken,["_"],[]),1);
string sValue = llList2String(lParams, 1);
if (sToken == "CType") CTYPE = sValue;
else if (sGroup == "texture") AddElementSetting(sToken, sValue, 0);
else if (sGroup == "color") AddElementSetting(sToken, sValue, 1);
else if (sGroup == "shininess") AddElementSetting(sToken, sValue, 2);
else if (sGroupToken == g_sAppLockToken) g_iAppLock = (integer)sValue;
}
else if (iNum == DIALOG_RESPONSE)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex)
{ //got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
string sMenuType = llList2String(g_lMenuIDs, iMenuIndex + 1);
//remove stride from g_lMenuIDs
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
if (sMenuType == "StyleMenu")
{ //lists all elements in the collar
if (sMessage == UPMENU) llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
else if (sMessage == DUMP) UserCommand(iAuth,"dumpstyle", kAv, TRUE);
else UserCommand(iAuth,"style "+sMessage, kAv, TRUE);
}
}
}
else if (iNum == DIALOG_TIMEOUT)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex) { //remove stride from g_lMenuIDs
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
}
}
}
dataserver(key id, string data){
if (id == g_kNotecardReadRequest){
if (data != EOF){
data = llStringTrim(data,STRING_TRIM);
if (data != "" && llGetSubString(data,0,0) != "#" )
{
if( llGetSubString(data,0,0) == "[" )
{
g_sNotecardStyle = llGetSubString(data,llSubStringIndex(data,"[")+1,llSubStringIndex(data,"]")-1);
g_sNotecardStyle = llStringTrim(g_sNotecardStyle,STRING_TRIM);
g_lStyles += [g_sNotecardStyle];
g_lStyleSettings += [g_sNotecardStyle];
}
else g_lStyleSettings += [data];
}
g_kNotecardReadRequest=llGetNotecardLine(g_sNotecardName,++g_iNotecardLine);
}
}
}
changed (integer change){
if (change & CHANGED_INVENTORY){
if (g_iNotecardId != llGetInventoryKey(g_sNotecardName)){
//Debug("Reading styles card");
g_iNotecardId = llGetInventoryKey(g_sNotecardName);
if(g_iNotecardId){
g_lStyles=[];
g_lStyleSettings=[];
g_iNotecardLine=0;
g_kNotecardReadRequest=llGetNotecardLine(g_sNotecardName,0);
}
//else llOwnerSay(g_sNotecardName+" notecard absent!");
}
CheckScripts();
}
if (change & CHANGED_OWNER) llResetScript();
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,602 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - texture //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//set textures by uuid, and save uuids instead of texture names to DB
//on getting texture command, give menu to choose which element, followed by menu to pick texture
list g_lElements;
string s_CurrentElement = "";
list g_lTextures;
list g_lTextureDefaults;
string g_sParentMenu = "Appearance";
string g_sSubMenu = "Textures";
string CTYPE = "collar";
integer iLength;
list lButtons;
list g_lNewButtons;//is this used? 2010/01/14 Starship
list g_lNotecardTextures;
list g_lNotecardTextureKeys;
integer g_iNotecardLine;
key g_kTextureCardUUID;
string g_sTextureCard="textures";
string g_sDefTextureCard="textures";
key g_kNotecardRead;
//dialog handles
key g_kElementID;
key g_ktextureID;
//touch request handle
key g_kTouchID;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
//MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent when a token has no value in the httpdb
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer TOUCH_REQUEST = -9500;
integer TOUCH_CANCEL = -9501;
integer TOUCH_RESPONSE = -9502;
integer TOUCH_EXPIRE = -9503;
//5000 block is reserved for IM slaves
string UPMENU = "BACK";
key g_kWearer;
string g_sScript;
// texture name element divider, put constant in so can be changed throughout the script with one change.
string SEPARATOR = "~";
// set FALSE to enable basic AND special texture names for all elements, TRUE for ONLY special textures per element.
// TRUE will still use basic textures for a given element WHEN that element has no special textures named in the collar.
integer EXCLUSIVE = TRUE;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
loadNotecardTextures()
{
g_sTextureCard=g_sDefTextureCard+"_custom";
if(llGetInventoryType(g_sTextureCard)!=INVENTORY_NOTECARD) g_sTextureCard=g_sDefTextureCard;
if(llGetInventoryType(g_sTextureCard)!=INVENTORY_NOTECARD)
{
g_kTextureCardUUID=NULL_KEY;
return;
}
g_lNotecardTextures=[];
g_lNotecardTextureKeys=[];
g_iNotecardLine=0;
g_kTextureCardUUID=llGetInventoryKey(g_sTextureCard);
g_kNotecardRead=llGetNotecardLine(g_sTextureCard,g_iNotecardLine);
}
string GetDefaultTexture(string ele)
{
integer i = llListFindList(g_lTextureDefaults, [ele]);
if (~i) return llList2String(g_lTextureDefaults, i + 1);
return NULL_KEY;
}
integer GetIsLeashTex(string sInvName)
{
if (llGetSubString(sInvName, 0, 5) == "leash_") return TRUE;
if (sInvName == "chain" || sInvName == "rope" || sInvName == "!totallytransparent") return TRUE;
return FALSE;
}
string GetShortName(string sTex) // strip all prefixes from a texture name
{
return llList2String(llParseString2List(sTex, [SEPARATOR], []), -1);
}
string GetLongName(string ele, string sTex) // find the full texture name given element + shortname
{
list work = BuildTextureNames(FALSE);
string test;
integer l = 0;
for (; l < llGetListLength(work); l++)
{
test = llList2String(work, l);
if (~llSubStringIndex(test, sTex))
{
//if (!GetElementHasTexs(ele) || ~llSubStringIndex(test, llToLower(ele) + SEPARATOR)) return test;
if (!GetElementHasTexs(ele) || ~llSubStringIndex(test, ele + SEPARATOR)) return test; //KW
}
}
return ""; // this should only happen if chat command is used with invalid texture
}
list BuildTextureNames(integer short) // set short TRUE to lop off all prefixes in return list, FALSE to carry full texture name
{
list out = [];
string name;
integer l = 0;
integer max=llGetInventoryNumber(INVENTORY_TEXTURE);
for (; l < max; l++)
{
name = llGetInventoryName(INVENTORY_TEXTURE, l);
if (!GetIsLeashTex(name)) // we want to ignore particle textures
{
if (short) name = GetShortName(name);
out += [name];
}
}
l=0;
max=llGetListLength(g_lNotecardTextures);
for (; l < max; l++)
{
name=llList2String(g_lNotecardTextures,l);
if (short) name = GetShortName(name);
out += [name];
}
return out;
}
integer GetElementHasTexs(string ele) // check if textures exist with labels for the specified element
{
//ele = llToLower(ele) + SEPARATOR;
ele = ele + SEPARATOR; //KW
integer l = 0;
integer max=llGetInventoryNumber(INVENTORY_TEXTURE);
for (; l < max; l++)
{
if (~llSubStringIndex(llGetInventoryName(INVENTORY_TEXTURE, l), ele)) return TRUE;
}
l=0;
max=llGetListLength(g_lNotecardTextures);
for (; l < max; l++)
{
if (~llSubStringIndex(llList2String(g_lNotecardTextures,l), ele)) return TRUE;
}
return FALSE;
}
list BuildTexButtons()
{
list tex = BuildTextureNames(FALSE);
list out = [];
if (~llListFindList(g_lTextureDefaults, [s_CurrentElement])) out = ["Default"];
//string ele = llToLower(s_CurrentElement) + SEPARATOR;
string ele = s_CurrentElement + SEPARATOR;//KW
string but;
integer l = 0;
for (; l < llGetListLength(tex); l++)
{
but = llList2String(tex, l);
if (EXCLUSIVE && GetElementHasTexs(s_CurrentElement))
{
if (~llSubStringIndex(but, ele)) but = GetShortName(but);
else but = "";
}
else if (~llSubStringIndex(but, SEPARATOR))
{
if (~llSubStringIndex(but, ele)) but = GetShortName(but);
else but = "";
}
if (but != "") out += [but];
}
return out;
}
key TouchRequest(key kRCPT, integer iTouchStart, integer iTouchEnd, integer iAuth)
{
key kID = llGenerateKey();
integer iFlags = 0;
if (iTouchStart) iFlags = iFlags | 0x01;
if (iTouchEnd) iFlags = iFlags | 0x02;
llMessageLinked(LINK_SET, TOUCH_REQUEST, (string)kRCPT + "|" + (string)iFlags + "|" + (string)iAuth, kID);
return kID;
}
TextureMenu(key kID, integer iPage, integer iAuth)
{
string sPrompt = "\nChoose the texture to apply.";
g_ktextureID = Dialog(kID, sPrompt, BuildTexButtons(), [UPMENU], iPage, iAuth);
}
ElementMenu(key kAv, integer iAuth)
{
string sPrompt = "\nChoose the element of the " + CTYPE + " you would like to retexture.\n\nChoose *Touch* if you want to select the part by directly clicking on the " + CTYPE + ".";
lButtons = llListSort(g_lElements, 1, TRUE);
g_kElementID = Dialog(kAv, sPrompt, lButtons, ["*Touch*", UPMENU], 0, iAuth);
}
string ElementType(integer iLinkNum)
{
string sDesc = llList2String(llGetLinkPrimitiveParams(iLinkNum, [PRIM_DESC]),0);
//prim desc will be elementtype~notexture(maybe)
list lParams = llParseString2List(llStringTrim(sDesc,STRING_TRIM), ["~"], []);
if (~llListFindList(lParams,["notexture"]) || sDesc == "" || sDesc == "(No Description)")
{
return "notexture";
}
else
{
return llList2String(lParams, 0);
}
}
SetElementTexture(string sElement, string sTex)
{
integer iLink;
integer iLinkCount = llGetNumberOfPrims();
integer i=llListFindList(g_lNotecardTextures,[sTex]);
if(~i) sTex=llList2String(g_lNotecardTextureKeys,i);
for (iLink = 2; iLink <= iLinkCount; iLink++)
{
if (ElementType(iLink) == sElement)
{
// llSetLinkPrimitiveParamsFast(iLink, [PRIM_TEXTURE,ALL_SIDES,sTex,<1.0,1.0,1.0>,<0.0,0.0,0.0>,0.0] );
// update prim texture for each face with save texture repeats, offsets and rotations
integer iSides = llGetLinkNumberOfSides(iLink);
integer iFace ;
for (iFace = 0; iFace < iSides; iFace++)
{
list lParams = llGetLinkPrimitiveParams(iLink, [PRIM_TEXTURE, iFace ]);
lParams = llDeleteSubList(lParams,0,0); // get texture params
llSetLinkPrimitiveParamsFast(iLink, [PRIM_TEXTURE, iFace, sTex]+lParams);
}
}
}
//change the textures list entry for the current element
integer iIndex = llListFindList(g_lTextures, [sElement]);
if (~iIndex) g_lTextures = llListReplaceList(g_lTextures, [sTex], iIndex + 1, iIndex + 1);
else g_lTextures += [s_CurrentElement, sTex];
//save to settings
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript + sElement + "=" + sTex, "");
}
string DumpSettings(string sep)
{
string out;
integer i = 0;
for (; i < llGetListLength(g_lTextures); i += 2)
{
out += sep + "Texture" + llList2String(g_lTextures, i);
out += "=" + llList2String(g_lTextures, i + 1);
}
return out;
}
integer UserCommand(integer iNum, string sStr, key kID)
{
if (iNum > COMMAND_WEARER || iNum < COMMAND_OWNER) return FALSE; // sanity check
if (sStr == "textures" || sStr == "menu "+g_sSubMenu)
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID, "You are not allowed to change the textures.", FALSE);
if (!llSubStringIndex(sStr, "menu "))
llMessageLinked(LINK_SET, iNum, "menu " + g_sParentMenu, kID);
}
else if (g_iAppLock)
{
Notify(kID, "The appearance of the " + CTYPE + " is locked. You cannot access this menu now!", FALSE);
if (!llSubStringIndex(sStr, "menu "))
llMessageLinked(LINK_SET, iNum, "menu " + g_sParentMenu, kID);
}
else
{
s_CurrentElement = "";
ElementMenu(kID, iNum);
}
}
else if (llGetSubString(sStr,0,13) == "lockappearance")
{
if (iNum == COMMAND_OWNER)
{
if(llGetSubString(sStr, -1, -1) == "0") g_iAppLock = FALSE;
else g_iAppLock = TRUE;
}
}
else if (sStr == "reset" && (iNum == COMMAND_OWNER || kID == g_kWearer))
{
//clear saved settings
//llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sDBToken, "");
llResetScript();
}
else if (kID != g_kWearer && iNum != COMMAND_OWNER) return TRUE;
{
if (sStr == "settings") Notify(kID, "Texture Settings: " + DumpSettings("\n"), FALSE);
else
{
list lParams = llParseString2List(sStr, [" "], []);
if (llToLower(llList2String(lParams,0))=="settexture")
{
if (g_iAppLock)
{
Notify(kID, "The appearance of the " + CTYPE + " is locked. You cannot change textures now!", FALSE);
return TRUE;
}
string sElement = llList2String(lParams, 1);
string sTex = llList2String(lParams, 2);
integer ok;
string test;
integer x=llGetListLength(g_lElements);
while(x)
{
--x;
test=llList2String(g_lElements,x);
if(llToLower(sElement)==llToLower(test))
{
sElement=test;
x=0;
ok=TRUE;
}
}
if(!ok) Notify(kID, "The element " + sElement + " wasn't recognized, please check your command and try again.",FALSE);
else
{
ok=FALSE;
if((key)sTex) ok=TRUE;
else
{
x=llGetInventoryNumber(INVENTORY_TEXTURE);
while(x)
{
--x;
test=llGetInventoryName(INVENTORY_TEXTURE,x);
if(llToLower(sTex)==llToLower(test))
{
ok=TRUE;
sTex=test;
x=0;
}
}
if(!ok)
{
x=llGetListLength(g_lNotecardTextures);
while(x)
{
--x;
test=llList2String(g_lNotecardTextures,x);
if(llToLower(sTex)==llToLower(test) || llToLower(GetShortName(test))==llToLower(sTex))
{
ok=TRUE;
sTex=test;
x=0;
}
}
}
}
if(ok) SetElementTexture(sElement, sTex);
else Notify(kID, "The texture " + sTex + " wasn't found in "+CTYPE+" inventory or the textures notecard, please check your command and try again.",FALSE);
}
}
}
}
return TRUE ;
}
default {
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_kWearer = llGetOwner();
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
loadNotecardTextures();
//loop through non-root prims, build element list
integer n;
integer iLinkCount = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (n = 2; n <= iLinkCount; n++) {
string sElement = ElementType(n);
if (!(~llListFindList(g_lElements, [sElement])) && sElement != "notexture") g_lElements += [sElement];
}
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (UserCommand(iNum, sStr, kID)) return;
//owner, secowner, group, and wearer may currently change colors
if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
integer i = llSubStringIndex(sToken, "_");
if (llGetSubString(sToken, 0, i) == g_sScript)
{
sToken = llGetSubString(sToken, i + 1, -1);
i = llListFindList(g_lTextureDefaults, [sToken]);
if (~i) g_lTextureDefaults = llListReplaceList(g_lTextureDefaults, [sValue], i + 1, i + 1);
else g_lTextureDefaults += [sToken, sValue];
}
else if (sToken == g_sAppLockToken) g_iAppLock = (integer)sValue;
else if (sToken == "Global_CType") CTYPE = sValue;
}
else if (iNum == DIALOG_RESPONSE)
{
if (llListFindList([g_kElementID, g_ktextureID], [kID]) != -1)
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (kID == g_kElementID)
{//they just chose an element, now choose a texture
if (sMessage == UPMENU)
{
//main menu
llMessageLinked(LINK_SET, iAuth, "menu "+g_sParentMenu, kAv);
}
else if (sMessage == "*Touch*")
{
Notify(kAv, "Please touch the part of the " + CTYPE + " you want to retexture. You can press ctr+alt+T to see invisible parts.", FALSE);
g_kTouchID = TouchRequest(kAv, TRUE, FALSE, iAuth);
}
else
{
//we just got the element name
s_CurrentElement = sMessage;
TextureMenu(kAv, iPage, iAuth);
}
}
else if (kID == g_ktextureID)
{
if (sMessage == UPMENU)
{
s_CurrentElement = "";
ElementMenu(kAv, iAuth);
}
else
{
//got a texture name
string sTex = GetLongName(s_CurrentElement, sMessage);
if (sMessage == "Default") sTex = GetDefaultTexture(s_CurrentElement);
SetElementTexture(s_CurrentElement, sTex);
TextureMenu(kAv, iPage, iAuth);
}
}
}
}
else if (iNum == TOUCH_RESPONSE)
{
if (kID == g_kTouchID)
{
list lParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lParams, 0);
integer iAuth = (integer)llList2String(lParams, 1);
integer iLinkNumber = (integer)llList2String(lParams, 3);
string sElement = ElementType(iLinkNumber);
if (sElement != "notexture")
{
TextureMenu(kAv, 0, iAuth);
Notify(kAv, "You selected \""+sElement+"\".", FALSE);
}
else
{
Notify(kAv, "You selected a prim which is not texturable. You can try again.", FALSE);
ElementMenu(kAv, iAuth);
}
}
}
}
dataserver(key kID, string sData)
{
if(kID==g_kNotecardRead)
{
if(sData!=EOF)
{
if(llStringTrim(sData,STRING_TRIM)!="" && llGetSubString(sData,0,1)!="//")
{
list lThisLine=llParseString2List(sData,[","],[]);
key kTextureKey=(key)llStringTrim(llList2String(lThisLine,1),STRING_TRIM);
string sTextureName=llStringTrim(llList2String(lThisLine,0),STRING_TRIM);
if(kTextureKey)
{
if(llStringLength(GetShortName(sTextureName))>23)
{
llOwnerSay("Texture name "+sTextureName+" in textures notecard too long, dropping.");
}
else if(llGetInventoryType(sTextureName)!=INVENTORY_TEXTURE) // let's not add things that are in inventory.
{
g_lNotecardTextures+=sTextureName;
g_lNotecardTextureKeys+=kTextureKey;
}
else llOwnerSay(sTextureName+" in notecard ignored as already found in inventory. If you remove this texture from inventory, edit the textures notecard (add and delete a blank line) then save the card again to re-read it.");
}
else llOwnerSay("Texture key for "+sTextureName+" in textures notecard not recognised, dropping.");
}
++g_iNotecardLine;
g_kNotecardRead=llGetNotecardLine(g_sTextureCard,g_iNotecardLine);
}
}
}
changed(integer change)
{
if(change&CHANGED_LINK) llResetScript();
else if (change & CHANGED_INVENTORY)
{
if(llGetInventoryType(g_sTextureCard)==INVENTORY_NOTECARD && llGetInventoryKey(g_sTextureCard)!=g_kTextureCardUUID) loadNotecardTextures();
}
else if (change&CHANGED_OWNER) llResetScript();
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,847 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - timer //
// version 3.993 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
list g_lTimes;
integer g_iTimesLength;
integer g_iCurrentTime;
integer g_iOnTime;
integer g_iLastTime;
integer g_iFirstOnTime;
integer g_iFirstRealTime;
integer g_iLastRez;
integer n;//for loops
string g_sMessage;
integer MAX_TIME=0x7FFFFFFF;
integer ATTACHMENT_COMMAND = 602;
integer ATTACHMENT_FORWARD = 610;
//these can change
integer REAL_TIME=1;
integer REAL_TIME_EXACT=5;
integer ON_TIME=3;
integer ON_TIME_EXACT=7;
string CTYPE = "collar";
integer g_iInterfaceChannel;
// end time keeper
string g_sSubMenu = "Timer";
string g_sParentMenu = "Apps";
key g_kMenuID;
key g_kOnMenuID;
key g_kRealMenuID;
key g_kWearer;
list g_lLocalButtons = ["RL","Online"];
list g_lTimeButtons = ["RESET","+00:01","+00:05","+00:30","+03:00","+24:00","-00:01","-00:05","-00:30","-03:00","-24:00"];
integer g_iOnRunning;
integer g_iOnSetTime;
integer g_iOnTimeUpAt;
integer g_iRealRunning;
integer g_iRealSetTime;
integer g_iRealTimeUpAt;
integer g_iCollarLocked;
integer g_iUnlockCollar = 0;
integer g_iClearRLVRestions = 0;
integer g_iUnleash = 0;
integer g_iBoth = 0;
integer g_iWhoCanChangeTime = 504;
integer g_iWhoCanChangeLeash = 504;
integer g_iTimeChange;
list lButtons;
integer COMMAND_OWNER = 500;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_WEARERLOCKEDOUT = 521;
integer LM_SETTING_SAVE = 2000;
integer LM_SETTING_RESPONSE = 2002;
integer LM_SETTING_DELETE = 2003;
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
// Added by WhiteFire
integer TIMER_EVENT = -10000; // str = "start" or "end". For start, either "online" or "realtime".
integer WEARERLOCKOUT = 620;
string UPMENU = "BACK";
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
DoMenu(key keyID, integer iAuth)
{
if (keyID)
{
//fnord
}
else
{
return;
}
//Debug("timeremaning:"+(string)(g_iOnTimeUpAt-g_iOnTime));
string sPrompt = "\n A frozen pizza takes ~12 min to bake.\n";
list lMyButtons = g_lLocalButtons + lButtons;
sPrompt += "\n Online Timer: "+Int2Time(g_iOnSetTime);
if (g_iOnRunning==1)
{
sPrompt += "\n Online Timer: "+Int2Time(g_iOnTimeUpAt-g_iOnTime)+" left\n";
}
else
{
sPrompt += "\n Online Timer: not running\n";
}
sPrompt += "\n RL Timer: "+Int2Time(g_iRealSetTime);
if (g_iRealRunning==1)
{
sPrompt += "\n RL Timer: "+Int2Time(g_iRealTimeUpAt-g_iCurrentTime)+" left";
}
else
{
sPrompt += "\n RL Timer: not running";
}
if (g_iBoth)
{
lMyButtons += ["☒ combined"];
}
else
{
lMyButtons += ["☐ combined"];
}
if (g_iUnlockCollar)
{
lMyButtons += ["☒ unlock"];
}
else
{
lMyButtons += ["☐ unlock"];
}
if (g_iUnleash)
{
lMyButtons += ["☒ unleash"];
}
else
{
lMyButtons += ["☐ unleash"];
}
if (g_iClearRLVRestions)
{
lMyButtons += ["☒ clear RLV"];
}
else
{
lMyButtons += ["☐ clear RLV"];
}
if (g_iRealRunning || g_iOnRunning)
{
lMyButtons += ["STOP"];
lMyButtons += ["RESET"];
}
else if (g_iRealSetTime || g_iOnSetTime)
{
lMyButtons += ["START"];
lMyButtons += ["RESET"];
}
sPrompt+="\n\nwww.opencollar.at/timer";
llListSort(g_lLocalButtons, 1, TRUE);
g_kMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
}
DoOnMenu(key keyID, integer iAuth)
{
if (keyID == NULL_KEY) return;
string sPrompt = "\n Online Time Settings\n";
sPrompt += "\n Online Timer: "+Int2Time(g_iOnSetTime);
if (g_iOnRunning)
{
sPrompt += "\n Online Timer: "+Int2Time(g_iOnTimeUpAt-g_iOnTime)+" left";
}
else
{
sPrompt += "\n Online Timer: not running";
}
g_kOnMenuID = Dialog(keyID, sPrompt, g_lTimeButtons, [UPMENU], 0, iAuth);
}
DoRealMenu(key keyID, integer iAuth)
{
if (keyID == NULL_KEY) return;
string sPrompt = "\n RL Time Settings\n";
sPrompt += "\n RL timer: " + Int2Time(g_iRealSetTime);
if (g_iRealRunning)
{
sPrompt += "\n RL Timer: "+Int2Time(g_iRealTimeUpAt-g_iCurrentTime)+" left";
}
else
{
sPrompt += "\n RL Timer: not running";
}
g_kRealMenuID = Dialog(keyID, sPrompt, g_lTimeButtons, [UPMENU], 0, iAuth);
}
string Int2Time(integer sTime)
{
if (sTime<0) sTime=0;
integer iSecs=sTime%60;
sTime = (sTime-iSecs)/60;
integer iMins=sTime%60;
sTime = (sTime-iMins)/60;
integer iHours=sTime%24;
integer iDays = (sTime-iHours)/24;
//this is the onley line that needs changing...
return ( (string)iDays+" days "+
llGetSubString("0"+(string)iHours,-2,-1) + ":"+
llGetSubString("0"+(string)iMins,-2,-1) + ":"+
llGetSubString("0"+(string)iSecs,-2,-1) );
//return (string)iDays+":"+(string)iHours+":"+(string)iMins+":"+(string)iSecs;
}
TimerFinish()
{
if(g_iBoth && (g_iOnRunning == 1 || g_iRealRunning == 1))
{
return;
}
llMessageLinked(LINK_THIS, WEARERLOCKOUT, "off", "");
if(g_iUnlockCollar)
{
llMessageLinked(LINK_THIS, COMMAND_OWNER, "unlock", g_kWearer);
}
if(g_iClearRLVRestions)
{
llMessageLinked(LINK_THIS, COMMAND_OWNER, "clear", g_kWearer);
if(!g_iUnlockCollar && g_iCollarLocked)
{
llSleep(2);
llMessageLinked(LINK_THIS, COMMAND_OWNER, "lock", g_kWearer);
}
}
if(g_iUnleash && g_iWhoCanChangeTime <= g_iWhoCanChangeLeash)
{
llMessageLinked(LINK_THIS, COMMAND_OWNER, "unleash", g_kWearer);
}
g_iUnlockCollar=g_iClearRLVRestions=g_iUnleash=0;
g_iOnSetTime=g_iRealSetTime=0;
g_iOnRunning=g_iRealRunning=0;
g_iOnTimeUpAt=g_iRealTimeUpAt=0;
g_iWhoCanChangeTime=504;
llOwnerSay("Yay! Timer expired!");
llMessageLinked(LINK_THIS, TIMER_EVENT, "end", "");
}
TimerStart(integer perm)
{
// do What has to be Done
g_iWhoCanChangeTime = perm;
if(g_iRealSetTime)
{
g_iRealTimeUpAt=g_iCurrentTime+g_iRealSetTime;
llMessageLinked(LINK_THIS, WEARERLOCKOUT, "on", "");
llMessageLinked(LINK_THIS, TIMER_EVENT, "START", "RL");
g_iRealRunning=1;
}
else
{
g_iRealRunning=3;
}
if(g_iOnSetTime)
{
g_iOnTimeUpAt=g_iOnTime+g_iOnSetTime;
llMessageLinked(LINK_THIS, WEARERLOCKOUT, "on", "");
llMessageLinked(LINK_THIS, TIMER_EVENT, "START", "Online");
g_iOnRunning=1;
}
else
{
g_iOnRunning=3;
}
}
integer UserCommand(integer iNum, string sStr, key kID)
{
if (iNum == COMMAND_EVERYONE) return TRUE;
else if (iNum > COMMAND_EVERYONE || iNum < COMMAND_OWNER) return FALSE;
if (llToLower(sStr) == "timer" || sStr == "menu "+g_sSubMenu) DoMenu(kID, iNum);
else if(llGetSubString(sStr, 0, 5) == "timer ")
{
//Debug(sStr);
string sMsg=llGetSubString(sStr, 6, -1);
//we got a response for something we handle locally
if (sMsg == "RL") DoRealMenu(kID, iNum);
else if (sMsg == "Online") DoOnMenu(kID, iNum);
else if (sMsg == "START")
{
TimerStart(iNum);
if(kID != g_kWearer) DoMenu(kID, iNum);
}
else if (sMsg == "STOP")
{
TimerFinish();
DoMenu(kID, iNum);
}
else if (sMsg == "RESET")
{
g_iRealSetTime=g_iRealTimeUpAt=0;
g_iOnSetTime=g_iOnTimeUpAt=0;
if(g_iRealRunning == 1 || g_iOnRunning == 1){
g_iRealRunning=0;
g_iOnRunning=0;
TimerFinish();
}
DoMenu(kID, iNum);
}
else if (sMsg =="☒ combined")
{
g_iBoth = FALSE;
DoMenu(kID, iNum);
}
else if (sMsg == "☐ combined")
{
g_iBoth = TRUE;
DoMenu(kID, iNum);
}
else if(sMsg=="☒ unlock")
{
if (iNum == COMMAND_OWNER) g_iUnlockCollar=0;
else
{
Notify(kID,"Only the owner can change if the " + CTYPE + " unlocks when the timer runs out.",FALSE);
}
DoMenu(kID, iNum);
}
else if(sMsg=="☐ unlock")
{
if(iNum == COMMAND_OWNER) g_iUnlockCollar=1;
else
{
Notify(kID,"Only the owner can change if the " + CTYPE + " unlocks when the timer runs out.",FALSE);
}
DoMenu(kID, iNum);
}
else if(sMsg=="☒ clear RLV")
{
if(iNum == COMMAND_WEARER)
{
Notify(kID,"You cannot change if the RLV settings are cleared",FALSE);
}
else g_iClearRLVRestions=0;
DoMenu(kID, iNum);
}
else if(sMsg=="☐ clear RLV")
{
if(iNum == COMMAND_WEARER)
{
Notify(kID,"You cannot change if the RLV settings are cleared",FALSE);
}
else g_iClearRLVRestions=1;
DoMenu(kID, iNum);
}
else if(sMsg=="☒ unleash")
{
if(iNum <= g_iWhoCanChangeLeash) g_iUnleash=0;
else
{
Notify(kID,"Only the someone who can leash the sub can change if the " + CTYPE + " unleashes when the timer runs out.",FALSE);
}
DoMenu(kID, iNum);
}
else if(sMsg=="☐ unleash")
{
if(iNum <= g_iWhoCanChangeLeash) g_iUnleash=1;
else
{
Notify(kID,"Only the someone who can leash the sub can change if the " + CTYPE + " unleashes when the timer runs out.",FALSE);
}
DoMenu(kID, iNum);
}
else if(llGetSubString(sMsg, 0, 5) == "Online")
{
sMsg="on" + llStringTrim(llGetSubString(sMsg, 6, -1), STRING_TRIM_HEAD);
}
if(llGetSubString(sMsg, 0, 1) == "on")
{
sMsg=llStringTrim(llGetSubString(sMsg, 2, -1), STRING_TRIM_HEAD);
if (iNum <= g_iWhoCanChangeTime)
{
list lTimes = llParseString2List(llGetSubString(sMsg, 1, -1), [":"], []);
if (sMsg == "RESET")
{
g_iOnSetTime=g_iOnTimeUpAt=0;
if(g_iOnRunning == 1)
{
//unlock
g_iOnRunning=0;
TimerFinish();
}
}
else if (llGetSubString(sMsg, 0, 0) == "+")
{
g_iTimeChange=llList2Integer(lTimes,0)*60*60+llList2Integer(lTimes,1)*60;
g_iOnSetTime += g_iTimeChange;
if (g_iOnRunning==1)
{
g_iOnTimeUpAt += g_iTimeChange;
}
else if(g_iOnRunning==3)
{
g_iOnTimeUpAt=g_iOnTime+g_iOnSetTime;
g_iOnRunning=1;
}
}
else if (llGetSubString(sMsg, 0, 0) == "-")
{
g_iTimeChange=-(llList2Integer(lTimes,0)*60*60+llList2Integer(lTimes,1)*60);
g_iOnSetTime += g_iTimeChange;
if (g_iOnSetTime<0)
{
g_iOnSetTime=0;
}
if (g_iOnRunning==1)
{
g_iOnTimeUpAt += g_iTimeChange;
if (g_iOnTimeUpAt<=g_iOnTime)
{
//unlock
g_iOnRunning=g_iOnSetTime=g_iOnTimeUpAt=0;
TimerFinish();
}
}
}
else if (llGetSubString(sMsg, 0, 0) == "=")
{
g_iTimeChange=llList2Integer(lTimes,0)*60*60+llList2Integer(lTimes,1)*60;
if (g_iTimeChange <= 0) return TRUE; // use clear.
g_iOnSetTime = g_iTimeChange;
if (g_iOnRunning==1)
{
g_iOnTimeUpAt = g_iOnTime + g_iTimeChange;
}
else if(g_iOnRunning==3)
{
g_iOnTimeUpAt=g_iOnTime + g_iTimeChange;
g_iOnRunning=1;
}
}
else
{
return TRUE;
}
}
DoOnMenu(kID, iNum);
}
else if(llGetSubString(sMsg, 0, 7) == "RL")
{
sMsg="real" + llStringTrim(llGetSubString(sMsg, 6, -1), STRING_TRIM_HEAD);
}
if(llGetSubString(sMsg, 0, 3) == "real")
{
sMsg=llStringTrim(llGetSubString(sMsg, 4, -1), STRING_TRIM_HEAD);
list lTimes = llParseString2List(llGetSubString(sMsg, 1, -1), [":"], []);
if (iNum <= g_iWhoCanChangeTime)
{
if (sMsg == "RESET")
{
g_iRealSetTime=g_iRealTimeUpAt=0;
if(g_iRealRunning == 1)
{
//unlock
g_iRealRunning=0;
TimerFinish();
}
}
else if (llGetSubString(sMsg, 0, 0) == "+")
{
g_iTimeChange=llList2Integer(lTimes,0)*60*60+llList2Integer(lTimes,1)*60;
g_iRealSetTime += g_iTimeChange;
if (g_iRealRunning==1) g_iRealTimeUpAt += g_iTimeChange;
else if(g_iRealRunning==3)
{
g_iRealTimeUpAt=g_iCurrentTime+g_iRealSetTime;
g_iRealRunning=1;
}
}
else if (llGetSubString(sMsg, 0, 0) == "-")
{
g_iTimeChange=-(llList2Integer(lTimes,0)*60*60+llList2Integer(lTimes,1)*60);
g_iRealSetTime += g_iTimeChange;
if (g_iRealSetTime<0) g_iRealSetTime=0;
if (g_iRealRunning==1)
{
g_iRealTimeUpAt += g_iTimeChange;
if (g_iRealTimeUpAt<=g_iCurrentTime)
{
//unlock
g_iRealRunning=g_iRealSetTime=g_iRealTimeUpAt=0;
TimerFinish();
}
}
}
else if (llGetSubString(sMsg, 0, 0) == "=")
{
g_iTimeChange=llList2Integer(lTimes,0)*60*60+llList2Integer(lTimes,1)*60;
if (g_iTimeChange <= 0) return TRUE; // Not handled.
g_iRealSetTime = g_iTimeChange;
if (g_iRealRunning==1) g_iRealTimeUpAt = g_iCurrentTime+g_iRealSetTime;
else if(g_iRealRunning==3)
{
g_iRealTimeUpAt=g_iCurrentTime+g_iRealSetTime;
g_iRealRunning=1;
}
}
else return TRUE;
}
DoRealMenu(kID, iNum);
}
}
return TRUE;
}
default {
on_rez(integer iParam) {
g_iLastTime=g_iLastRez=llGetUnixTime();
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "timer|sendtimers");
if (g_iRealRunning == 1 || g_iOnRunning == 1) {
llMessageLinked(LINK_THIS, WEARERLOCKOUT, "on", "");
}
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_iLastTime=llGetUnixTime();
llSetTimerEvent(1);
g_kWearer = llGetOwner();
g_iInterfaceChannel = (integer)("0x" + llGetSubString(g_kWearer,30,-1));
if (g_iInterfaceChannel > 0) g_iInterfaceChannel = -g_iInterfaceChannel;
g_iFirstOnTime=MAX_TIME;
g_iFirstRealTime=MAX_TIME;
llRegionSayTo(g_kWearer, g_iInterfaceChannel, "timer|sendtimers");
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
list info = llParseString2List (sStr, ["|"], []);
if(iNum==ATTACHMENT_FORWARD && llList2String(info, 0)=="timer")//request for us
{
//Debug(sStr);
string sCommand = llList2String(info, 1);
integer type = llList2Integer(info, 2);
if(sCommand=="settimer")
{
//should check values but I am not yet.
if(type==REAL_TIME)
{
integer newtime = llList2Integer(info, 3) +g_iCurrentTime;
g_lTimes=g_lTimes+[REAL_TIME,newtime];
if(g_iFirstRealTime>newtime)
{
g_iFirstRealTime=newtime;
}
g_sMessage="timer|timeis|"+(string)REAL_TIME+"|"+(string)g_iCurrentTime;
}
else if(type==REAL_TIME_EXACT)
{
integer newtime = llList2Integer(info, 3);
g_lTimes=g_lTimes+[REAL_TIME,newtime];
if(g_iFirstRealTime>newtime)
{
g_iFirstRealTime=newtime;
}
}
else if(type==ON_TIME)
{
integer newtime = llList2Integer(info, 3) +g_iOnTime;
g_lTimes=g_lTimes+[ON_TIME,newtime];
if(g_iFirstOnTime>newtime)
{
g_iFirstOnTime=newtime;
}
g_sMessage="timer|timeis|"+(string)ON_TIME+"|"+(string)g_iOnTime;
}
else if(type==ON_TIME_EXACT)
{
integer newtime = llList2Integer(info, 3) +g_iOnTime;
g_lTimes=g_lTimes+[ON_TIME,newtime];
if(g_iFirstOnTime>newtime)
{
g_iFirstOnTime=newtime;
}
}
}
else if(sCommand=="gettime")
{
if(type==REAL_TIME)
{
g_sMessage="timer|timeis|"+(string)REAL_TIME+"|"+(string)g_iCurrentTime;
}
else if(type==ON_TIME)
{
g_sMessage="timer|timeis|"+(string)ON_TIME+"|"+(string)g_iOnTime;
}
}
else
{
return;
//message got sent to us or something went wrong
}
if(iNum==ATTACHMENT_FORWARD)
{
llRegionSayTo(g_kWearer, g_iInterfaceChannel, g_sMessage);
}
}
else if(iNum == COMMAND_WEARERLOCKEDOUT && sStr == "menu")
{
if (g_iOnRunning || g_iRealRunning)
Notify(kID , "You are locked out of the " + CTYPE + " until the timer expires", FALSE);
}
else if (iNum == LM_SETTING_DELETE)
{
if (sStr == "leash_leashedto") g_iWhoCanChangeLeash=504;
else if (sStr == "Global_locked") g_iCollarLocked=0;
}
else if (iNum == LM_SETTING_SAVE)
{
list lParams = llParseString2List(sStr, ["="], []);
string token = llList2String(lParams, 0);
string value = llList2String(lParams, 1);
if (token == "Global_locked" && (integer)value == 1) g_iCollarLocked = 1;
else if (token == "leash_leashedto")
{
integer auth = (integer)llList2String(llParseString2List(value, [","], []), 1);
if (auth < g_iWhoCanChangeLeash)
{
g_iWhoCanChangeLeash = auth;
}
}
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == "Global_locked") g_iCollarLocked=(integer)sValue;
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{ // our parent menu requested to receive buttons, so send ours
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
lButtons = [] ; // flush submenu buttons
llMessageLinked(LINK_THIS, MENUNAME_REQUEST, g_sSubMenu, "");
}
else if (iNum == MENUNAME_RESPONSE) // a button is sned ot be added to a plugin
{
list lParts = llParseString2List(sStr, ["|"], []);
if (llList2String(lParts, 0) == g_sSubMenu)
{//someone wants to stick something in our menu
string sButton = llList2String(lParts, 1);
if (llListFindList(lButtons, [sButton]) == -1)
// if the button isnt in our benu yet, than we add it
{
lButtons = llListSort(lButtons + [sButton], 1, TRUE);
}
}
}
else if (iNum == MENUNAME_REMOVE)
{
integer iIndex;
list lParts = llParseString2List(sStr, ["|"], []);
if (llList2String(lParts, 0) == g_sSubMenu)
{
string sButton = llList2String(lParts, 1);
iIndex = llListFindList(lButtons, [sButton]);
if (iIndex != -1)
{
lButtons = llDeleteSubList(lButtons, iIndex, iIndex);
}
}
}
else if (UserCommand(iNum, sStr, kID)) return;
else if (iNum == DIALOG_RESPONSE)
{
if (llListFindList([g_kMenuID, g_kOnMenuID, g_kRealMenuID], [kID]) != -1)
{//this is one of our menus
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMsg = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (kID == g_kMenuID)
{
if (sMsg == UPMENU)
{
llMessageLinked(LINK_THIS, iAuth, "menu "+g_sParentMenu, kAv);
}
else if (llListFindList(lButtons, [sMsg]))
{
UserCommand(iAuth, "timer " + sMsg, kAv);
}
else if (~llListFindList(lButtons, [sMsg]))
{
llMessageLinked(LINK_THIS, iAuth, "menu "+sMsg, kAv);
}
}
else if (kID == g_kOnMenuID)
{
if (sMsg == UPMENU) DoMenu(kAv, iAuth);
else UserCommand(iAuth, "timer on"+sMsg, kAv);
}
else if (kID == g_kRealMenuID)
{
if (sMsg == UPMENU) DoMenu(kAv, iAuth);
else UserCommand(iAuth, "timer real"+sMsg, kAv);
}
}
}
}
timer()
{
g_iCurrentTime=llGetUnixTime();
if (g_iCurrentTime<(g_iLastRez+60))
{
return;
}
if ((g_iCurrentTime-g_iLastTime)<60)
{
g_iOnTime+=g_iCurrentTime-g_iLastTime;
}
if(g_iOnTime>=g_iFirstOnTime)
{
//could store which is need but if both are trigered it will have to send both anyway I prefer not to check for that.
g_sMessage="timer|timeis|"+(string)ON_TIME+"|"+(string)g_iOnTime;
llRegionSayTo(g_kWearer, g_iInterfaceChannel, g_sMessage);
g_iFirstOnTime=MAX_TIME;
g_iTimesLength=llGetListLength(g_lTimes);
for(n = 0; n < g_iTimesLength; n = n + 2)// send notice and find the next time.
{
if(llList2Integer(g_lTimes, n)==ON_TIME)
{
while(llList2Integer(g_lTimes, n+1)<=g_iOnTime&&llList2Integer(g_lTimes, n)==ON_TIME&&g_lTimes!=[])
{
g_lTimes=llDeleteSubList(g_lTimes, n, n+1);
g_iTimesLength=llGetListLength(g_lTimes);
}
if(llList2Integer(g_lTimes, n)==ON_TIME&&llList2Integer(g_lTimes, n+1)<g_iFirstOnTime)
{
g_iFirstOnTime=llList2Integer(g_lTimes, n+1);
}
}
}
}
if(g_iCurrentTime>=g_iFirstRealTime)
{
//could store which is need but if both are trigered it will have to send both anyway I prefer not to check for that.
g_sMessage="timer|timeis|"+(string)REAL_TIME+"|"+(string)g_iCurrentTime;
llRegionSayTo(g_kWearer, g_iInterfaceChannel, g_sMessage);
g_iFirstRealTime=MAX_TIME;
g_iTimesLength=llGetListLength(g_lTimes);
for(n = 0; n < g_iTimesLength; n = n + 2)// send notice and find the next time.
{
if(llList2Integer(g_lTimes, n)==REAL_TIME)
{
while(llList2Integer(g_lTimes, n+1)<=g_iCurrentTime&&llList2Integer(g_lTimes, n)==REAL_TIME)
{
g_lTimes=llDeleteSubList(g_lTimes, n, n+1);
g_iTimesLength=llGetListLength(g_lTimes);
}
if(llList2Integer(g_lTimes, n)==REAL_TIME&&llList2Integer(g_lTimes, n+1)<g_iFirstRealTime)
{
g_iFirstRealTime=llList2Integer(g_lTimes, n+1);
}
}
}
}
if(g_iOnRunning == 1 && g_iOnTimeUpAt<=g_iOnTime)
{
g_iOnRunning = 0;
TimerFinish();
}
if(g_iRealRunning == 1 && g_iRealTimeUpAt<=g_iCurrentTime)
{
g_iRealRunning = 0;
TimerFinish();
}
g_iLastTime=g_iCurrentTime;
}
/*
changed(integer iChange) {
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
}
*/
}

View File

@@ -1,311 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - titler //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// Nandana Singh, Satomi Ahn, Romka Swallowtail, littlemousy, Wendy Starfall
string g_sParentMenu = "Apps";
string g_sFeatureName = "Titler";
string g_sPrimDesc = "FloatText"; //description text of the hovertext prim. Needs to be separated from the menu name.
//MESSAGE MAP
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
//integer UPDATE = 10001;
integer LM_SETTING_SAVE = 2000;
integer LM_SETTING_REQUEST = 2001;
integer LM_SETTING_RESPONSE = 2002;
integer LM_SETTING_DELETE = 2003;
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
//integer DIALOG_TIMEOUT = -9002;
integer g_iLastRank = 504; //COMMAND_EVERYONE
integer g_iOn = FALSE;
string g_sText;
vector g_vColor = <1.0,1.0,1.0>; // default white
integer g_iTextPrim;
string g_sScript= "titler_";
key g_kWearer;
key g_kDialogID; //menu handle
key g_kColourDialogID; //menu handle
key g_kTBoxId; //text box handle
string SET = "Set Title" ;
string UP = "↑ Up";
string DN = "↓ Down";
string ON = "☒ Show";
string OFF = "☐ Show";
string UPMENU = "BACK";
float min_z = 0.25 ; // min height
float max_z = 1.0 ; // max height
vector g_vPrimScale = <0.02,0.02,0.5>; // prim size, initial value (z - text offset height)
list g_lColours=[
"Magenta",<1.00000, 0.00000, 0.50196>,
"Pink",<1.00000, 0.14902, 0.50980>,
"Hot Pink",<1.00000, 0.05490, 0.72157>,
"Firefighter",<0.88627, 0.08627, 0.00392>,
"Sun",<1.00000, 1.00000, 0.18039>,
"Flame",<0.92941, 0.43529, 0.00000>,
"Matrix",<0.07843, 1.00000, 0.07843>,
"Electricity",<0.00000, 0.46667, 0.92941>,
"Violet Wand",<0.63922, 0.00000, 0.78824>,
"Black",<0.00000, 0.00000, 0.00000>,
"White",<1.00000, 1.00000, 1.00000>
];
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth){
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
//Debug("Made menu.");
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer){
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
ShowHideText(){
//Debug("ShowHideText");
//llSleep(1.0); // not sure that it should be
if (g_iTextPrim >0){
if (g_sText == "") g_iOn = FALSE;
llSetLinkPrimitiveParamsFast(g_iTextPrim, [PRIM_TEXT,g_sText,g_vColor,(float)g_iOn, PRIM_SIZE,g_vPrimScale, PRIM_SLICE,<0.490,0.51,0.0>]);
}
}
integer UserCommand(integer iAuth, string sStr, key kAv){
if (iAuth < COMMAND_OWNER || iAuth > COMMAND_WEARER) return FALSE;
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llToLower(llList2String(lParams, 0));
if (llToLower(sStr) == "menu titler") {
string ON_OFF ;
string sPrompt;
if (g_iTextPrim == -1) {
sPrompt="\nThis design is missing a FloatText box. Titler disabled.";
sPrompt+= "\n\nwww.opencollar.at/titler";
g_kDialogID = Dialog(kAv, sPrompt, [], [UPMENU],0, iAuth);
} else {
sPrompt = "\nCurrent Title: " + g_sText ;
sPrompt+= "\n\nwww.opencollar.at/titler";
if(g_iOn == TRUE) ON_OFF = ON ;
else ON_OFF = OFF ;
g_kDialogID = Dialog(kAv, sPrompt, [SET,UP,DN,ON_OFF,"Color"], [UPMENU],0, iAuth);
}
} else if (sStr=="menu titlercolor" || sStr=="titlercolor") {
list lColourNames;
integer numColours=llGetListLength(g_lColours)/2;
while (numColours--){
lColourNames+=llList2String(g_lColours,numColours*2);
}
g_kColourDialogID = Dialog(kAv, "\n\nSelect a colour from the list", lColourNames, [UPMENU],0, iAuth);
} else if (sCommand=="titlercolor") {
string sColour= llDumpList2String(llDeleteSubList(lParams,0,0)," ");
integer colourIndex=llListFindList(g_lColours,[sColour]);
if (~colourIndex){
g_vColor=(vector)llList2String(g_lColours,colourIndex+1);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"color="+(string)g_vColor, "");
}
ShowHideText();
} else if (sStr == "runaway" && (iAuth == COMMAND_OWNER || iAuth == COMMAND_WEARER)) {
g_sText = "";
g_iOn = FALSE;
ShowHideText();
llResetScript();
} else if (llSubStringIndex(sCommand,"title")==0) {
if (g_iOn && iAuth > g_iLastRank) { //only change text if commander has smae or greater auth
Notify(kAv,"You currently have not the right to change the Titler settings, someone with a higher rank set it!", FALSE);
} else if (sCommand == "title") {
string sNewText= llDumpList2String(llDeleteSubList(lParams, 0, 0), " ");//pop off the "text" command
g_sText = llDumpList2String(llParseStringKeepNulls(sNewText, ["\\n"], []), "\n");// make it possible to insert line breaks in hover text
if (sNewText == "") {
g_iOn = FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript+"title", "");
} else {
g_iOn = TRUE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"title="+g_sText, "");
}
g_iLastRank=iAuth;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"on="+(string)g_iOn, "");
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"auth="+(string)g_iLastRank, ""); // save lastrank to DB
} else if (sCommand == "titleoff") {
g_iLastRank = COMMAND_EVERYONE;
g_iOn = FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript+"on", "");
llMessageLinked(LINK_SET, LM_SETTING_DELETE, g_sScript+"auth", ""); // del lastrank from DB
} else if (sCommand == "titleon") {
g_iLastRank = iAuth;
g_iOn = TRUE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"on="+(string)g_iOn, "");
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"auth="+(string)g_iLastRank, ""); // save lastrank to DB
} else if (sCommand == "titleup") {
g_vPrimScale.z += 0.05 ;
if(g_vPrimScale.z > max_z) g_vPrimScale.z = max_z ;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"height="+(string)g_vPrimScale.z, "");
} else if (sCommand == "titledown") {
g_vPrimScale.z -= 0.05 ;
if(g_vPrimScale.z < min_z) g_vPrimScale.z = min_z ;
llMessageLinked(LINK_SET, LM_SETTING_SAVE, g_sScript+"height="+(string)g_vPrimScale.z, "");
} else if (sCommand == "titlebox") {
g_kTBoxId = Dialog(kAv, "\n- Submit the new title in the field below.\n- Submit a blank field to go back to " + g_sFeatureName + ".", [], [], 0, iAuth);
}
ShowHideText();
}
return TRUE;
}
default {
on_rez(integer param) {
llResetScript();
}
state_entry() {
//llSetMemoryLimit(65536); //this script needs to be profiled, and its memory limited
g_iTextPrim = -1 ;
// find the text prim
integer linkNumber = llGetNumberOfPrims()+1;
while (linkNumber-- >2){
string desc = llList2String(llGetLinkPrimitiveParams(linkNumber, [PRIM_DESC]),0);
if (llSubStringIndex(desc, g_sPrimDesc) == 0) {
if (llList2Integer(llGetLinkPrimitiveParams(linkNumber,[PRIM_TYPE]),0)==PRIM_TYPE_BOX){
g_iTextPrim = linkNumber;
llSetLinkPrimitiveParamsFast(g_iTextPrim,[PRIM_DESC,g_sPrimDesc+"~notexture~nocolor~nohide"]);
linkNumber = 0 ; // break while cycle
} else {
llSetLinkPrimitiveParamsFast(linkNumber,[PRIM_TEXT,"",<0,0,0>,0]);
}
}
}
g_kWearer = llGetOwner();
if (g_iTextPrim < 0) {
llMessageLinked(LINK_SET, MENUNAME_REMOVE, g_sParentMenu + "|" + g_sFeatureName, "");
llRemoveInventory(llGetScriptName());
}
//Debug("Starting");
}
link_message(integer iSender, integer iNum, string sStr, key kID){
//Debug("Link Message Event");
if (UserCommand(iNum, sStr, kID)) return;
if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu) {
llMessageLinked(LINK_ROOT, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sFeatureName, "");
} else if (iNum == LM_SETTING_RESPONSE) {
string sGroup = llGetSubString(sStr, 0, llSubStringIndex(sStr, "_") );
string sToken = llGetSubString(sStr, llSubStringIndex(sStr, "_")+1, llSubStringIndex(sStr, "=")-1);
string sValue = llGetSubString(sStr, llSubStringIndex(sStr, "=")+1, -1);
if (sGroup == g_sScript) {
if(sToken == "title") g_sText = sValue;
if(sToken == "on") g_iOn = (integer)sValue;
if(sToken == "color") g_vColor = (vector)sValue;
if(sToken == "height") g_vPrimScale.z = (float)sValue;
if(sToken == "auth") g_iLastRank = (integer)sValue; // restore lastrank from DB
} else if( sStr == "settings=sent") ShowHideText();
} else if (iNum == DIALOG_RESPONSE) {
if (kID == g_kDialogID) { //response from our main menu
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == SET) {
UserCommand(iAuth, "titlebox", kAv);
} else if (sMessage == "Color") {
UserCommand(iAuth, "menu titlercolor", kAv);
} else if (sMessage == UPMENU) {
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
} else {
if (sMessage == UP) UserCommand(iAuth, "titleup", kAv);
else if (sMessage == DN) UserCommand(iAuth, "titledown", kAv);
else if (sMessage == OFF) UserCommand(iAuth, "titleon", kAv);
else if (sMessage == ON) UserCommand(iAuth, "titleoff", kAv);
UserCommand(iAuth, "menu titler", kAv);
}
} else if (kID == g_kColourDialogID) { //response form the colours menu
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU) {
UserCommand(iAuth, "menu titler", kAv);
} else {
UserCommand(iAuth, "titlercolor "+sMessage, kAv);
UserCommand(iAuth, "menu titlercolor", kAv);
}
} else if (kID == g_kTBoxId) { //response from text box
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if(sMessage != "") UserCommand(iAuth, "title " + sMessage, kAv);
UserCommand(iAuth, "menu " + g_sFeatureName, kAv);
}
}
}
changed(integer iChange){
if (iChange & (CHANGED_OWNER|CHANGED_LINK)) llResetScript();
/*
if (iChange & CHANGED_REGION) {
if (g_iProfiled) {
llScriptProfiler(1);
Debug("profiling restarted");
}
}
*/
}
}

View File

@@ -1,42 +0,0 @@
----------------------
OpenCollar License
----------------------
[In-World Notecard Object of the GPLv2]
The OpenCollar scripts are licensed under the GPLv2 (http://www.gnu.org/licenses/gpl-2.0.txt), with the following addendum:
Throughout this license the term "authors" refers to Nandana Singh, Lulu Pink, Garvin Twine, Cleo Collins, Wendy Starfall, Satomi Ahn, Joy Stipe, Medea Destiny, littlemousy and other contributors to OpenCollar - submission set free.
"Full perms" means maintaining the modify, copy, and transfer permissions in Second Life. If the Second Life platform should allow more fine-grained permissions in the future, then "full perms" will mean the most permissive possible set of permissions allowed by the platform.
The OpenCollar scripts are free to be copied, modified, and redistributed, subject to the following conditions:
- If you distribute the OpenCollar scripts, you must leave them full perms. (This includes using the scripts in collars that you make.)
- If you modify the OpenCollar scripts and distribute the modifications, you must also make your modifications full perms.
Custom plugins that are entirely created by you, and which communicate with the OpenCollar scripts only through link messages, are not subject to the above restrictions.
The OpenCollar hug and kiss scripts were originally created by Francis Chung, with only slight modifications by Ilse Mannonen. To the best of our knowledge, they are in the public domain.
To the best of our knowledge, the animations included in OpenCollar which were not created by the authors (which is most of them), may be used without restriction. Animations created by the authors as well as animations created by Marine Kelley which are named arch, bendover, booty, cutie, display and kneel as of version 3.940 must remain full perms. If you created one of the included animations and would like to have it removed, please notify Wendy Starfall.
Likewise, all textures included in the OpenCollar that were not created by the authors are, to the best of our knowledge, free to use for any purpose. The textures included which were created by the authors must remain full perms. If you created one of the included textures and would like to have it removed, please notify Wendy Starfall.
The base OpenCollar object (in which the OpenCollar scripts are placed) must also remain full perms. (If you want to use the OpenCollar scripts in collars that you have made and wish to sell, you can restrict copy or trans permissions on your prims, but you must leave the OpenCollar scripts full perms).
------------------------------
3rd Party Extension Policy
------------------------------
Part of OpenCollar being "open" means that we aim to provide a platform that people can easily integrate with. We encourage people to create their own products, tools, extensions, or services that integrate with OpenCollar. You're even free to charge money for them. There are a few ground rules though:
1. Any scripts containing OpenCollar code must use the GPL license and remain full perms in SL.
2. You must be very very clear that your product/service/whatever is not affiliated with or supported by the OpenCollar project. Users must not be confused about who they're trusting.
3. You must not advertise in the OpenCollar groups. Our groups prohibit all advertising. There is no exception for products that integrate with OpenCollar in some way.
(We may add to those rules if we missed something important or see people trying to pick loopholes in them, but that's it for now.)
We are eager to welcome creators willing to follow these rules. We want to support your creativity by giving you a solid platform to build on, and we want you as part of our community.
For now, violations of these rules will be dealt with through group ejection and public shunning. We may in the future create a directory of third party products and services that we trust. Violators of these rules will be forbidden from being on that list.

View File

@@ -1,156 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollarUpdater - BundleGiver //
// version 3.928 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// this script receives DO_BUNDLE messages that contain the uuid of the collar being updated,
// the name of a bundle notecard, the talkchannel on which the collar shim script is listening, and
// the script pin set by the shim. This script then loops over the items listed in the notecard
// and chats with the shim about each one. Items that are already present (as determined by uuid)
// are skipped. Items not present are given to the collar. Items that are present but don't have the
// right uuid are deleted and replaced with the version in the updater. Scripts are loaded with
// llRemoteLoadScriptPin, and are set running immediately.
// once the end of the notecard is reached, this script sends a BUNDLE_DONE message that includes all the same
// stuff it got in DO_BUNDLE (talkchannel, recipient, card, pin).
integer DO_BUNDLE = 98749;
integer BUNDLE_DONE = 98750;
integer talkchannel;
key rcpt;
string card;
integer pin;
string mode;
integer line;
key lineid;
integer listener;
SetStatus(string name) {
// use card name, item type, and item name to set a nice
// text status message
list cardparts = llParseString2List(card, ["_"], []);
string bundle = llList2String(cardparts, 2);
string msg = llDumpList2String([
"Doing Bundle: " + bundle,
"Doing Item: " + name
], "\n");
llSetText(msg, <1,1,1>, 1.0);
}
debug(string msg) {
//llOwnerSay(llGetScriptName() + ": " + msg);
}
default
{
link_message(integer sender, integer num, string str, key id)
{
if (num == DO_BUNDLE)
{
debug("doing bundle: " + str);
// str will be in form talkchannel|uuid|bundle_card_name
list parts = llParseString2List(str, ["|"], []);
talkchannel = (integer)llList2String(parts, 0);
rcpt = (key)llList2String(parts, 1);
card = llList2String(parts, 2);
pin = (integer)llList2String(parts, 3);
mode = llList2String(parts, 4); // either INSTALL or REMOVE
line = 0;
llListenRemove(listener);
listener = llListen(talkchannel, "", rcpt, "");
// get the first line of the card
lineid = llGetNotecardLine(card, line);
}
}
dataserver(key id, string data)
{
if (id == lineid)
{
if (data != EOF)
{
// process bundle line
list parts = llParseString2List(data, ["|"], []);
string type = llList2String(parts, 0);
string name = llList2String(parts, 1);
key uuid;
string msg;
SetStatus(name);
uuid = llGetInventoryKey(name);
msg = llDumpList2String([type, name, uuid, mode], "|");
debug("querying: " + msg);
llRegionSayTo(rcpt, talkchannel, msg);
}
else
{
debug("finished bundle: " + card);
// all done reading the card. send link msg to main script saying we're done.
llListenRemove(listener);
llSetText("", <1,1,1>, 1.0);
llMessageLinked(LINK_SET, BUNDLE_DONE, llDumpList2String([talkchannel, rcpt, card, pin, mode], "|"), "");
}
}
}
listen(integer channel, string name, key id, string msg)
{
debug("heard: " + msg);
// let's live on the edge and assume that we only ever listen with a uuid filter so we know it's safe
// look for msgs in the form <type>|<name>|<cmd>
list parts = llParseString2List(msg, ["|"], []);
if (llGetListLength(parts) == 3)
{
string type = llList2String(parts, 0);
string name = llList2String(parts, 1);
string cmd = llList2String(parts, 2);
if (cmd == "SKIP" || cmd == "OK")
{
// move on to the next item by reading the next notecard line
line++;
lineid = llGetNotecardLine(card, line);
}
else if (cmd == "GIVE")
{
// give the item, and then read the next notecard line.
if (type == "ITEM")
{
llGiveInventory(id, name);
}
else if (type == "SCRIPT")
{
// get the full name, and load it via script pin.
llRemoteLoadScriptPin(id, name, pin, TRUE, 0);
}
line++;
lineid = llGetNotecardLine(card, line);
}
}
}
on_rez(integer num)
{
llResetScript();
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
{
llResetScript();
}
}
}

View File

@@ -1,450 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollarUpdater - Dialog //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
//an adaptation of Schmobag Hogfather's SchmoDialog script
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510;
integer COMMAND_RELAY_SAFEWORD = 511;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer SUBMENU = 3002;
integer MENUNAME_REMOVE = 3003;
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001;//RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002;//RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; //RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer ANIM_START = 7000;//send this with the name of an anim in the string part of the message to play the anim
integer ANIM_STOP = 7001;//send this with the name of an anim in the string part of the message to stop the anim
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer iPagesize = 12;
string MORE = "►";
string PREV = "◄";
string UPMENU = "BACK"; // string to identify the UPMENU button in the utility lButtons
//string SWAPBTN = "swap";
//string SYNCBTN = "sync";
string BLANK = " ";
integer g_iTimeOut = 300;
integer g_iReapeat = 5;//how often the timer will go off, in seconds
list g_lMenus;//9-strided list in form listenChan, dialogid, listener, starttime, recipient, prompt, list buttons, utility buttons, currentpage
//where "list buttons" means the big list of choices presented to the user
//and "page buttons" means utility buttons that will appear on every page, such as one saying "go up one level"
//and "currentpage" is an integer meaning which page of the menu the user is currently viewing
list g_lRemoteMenus;
integer g_iStrideLength = 9;
key g_kWearer;
Notify(key keyID, string sMsg, integer nAlsoNotifyWearer)
{
Debug((string)keyID);
if (keyID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(keyID)) llRegionSayTo(keyID,0,sMsg);
else llInstantMessage(keyID,sMsg);
if (nAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
list CharacterCountCheck(list lIn, key ID)
// checks if any of the times is over 24 characters and removes them if needed
{
list lOut;
string s;
integer i;
integer m=llGetListLength(lIn);
for (i=0;i<m;i++)
{
s=llList2String(lIn,i);
if (llStringLength(s)>24)
{
Notify(ID, "The following button is longer than 24 characters and has been removed (can be caused by the name length of the item in the collars inventory): "+s, TRUE);
}
else
{
lOut+=[s];
}
}
return lOut;
}
integer RandomUniqueChannel()
{
integer iOut = llRound(llFrand(10000000)) + 100000;
if (~llListFindList(g_lMenus, [iOut]))
{
iOut = RandomUniqueChannel();
}
return iOut;
}
Dialog(key kRecipient, string sPrompt, list lMenuItems, list lUtilityButtons, integer iPage, key kID)
{
//string sThisPrompt = " (Timeout in "+ (string)g_iTimeOut +" seconds.)";
string sThisPrompt;
list lButtons;
list lCurrentItems;
integer iNumitems = llGetListLength(lMenuItems);
integer iStart;
integer iMyPageSize = iPagesize - llGetListLength(lUtilityButtons);
//slice the menuitems by page
if (iNumitems > iMyPageSize)
{
iMyPageSize=iMyPageSize-2;//we'll use two slots for the MORE and PREV button, so shrink the page accordingly
iStart = iPage * iMyPageSize;
integer iEnd = iStart + iMyPageSize - 1;
//multi page menu
//lCurrentItems = llList2List(lMenuItems, iStart, iEnd);
lButtons = llList2List(lMenuItems, iStart, iEnd);
sThisPrompt = sThisPrompt + " Page "+(string)(iPage+1)+"/"+(string)(((iNumitems-1)/iMyPageSize)+1);
}
else
{
iStart = 0;
lButtons = lMenuItems;
}
// check promt lenghtes
integer iPromptlen=llStringLength(sPrompt);
if (iPromptlen>511)
{
Notify(kRecipient,"The dialog prompt message is longer than 512 characters. It will be truncated to 512 characters.",TRUE);
sPrompt=llGetSubString(sPrompt,0,510);
sThisPrompt = sPrompt;
}
else if (iPromptlen + llStringLength(sThisPrompt)< 512)
{
sThisPrompt= sPrompt + sThisPrompt;
}
else
{
sThisPrompt= sPrompt;
}
//integer stop = llGetListLength(lCurrentItems);
//integer n;
//for (n = 0; n < stop; n++)
//{
// string sName = llList2String(lMenuItems, iStart + n);
// lButtons += [sName];
//}
lButtons = SanitizeButtons(lButtons);
lUtilityButtons = SanitizeButtons(lUtilityButtons);
integer iChan = RandomUniqueChannel();
integer g_iListener = llListen(iChan, "", kRecipient, "");
llSetTimerEvent(g_iReapeat);
if (iNumitems > iMyPageSize)
{
llDialog(kRecipient, sThisPrompt, PrettyButtons(lButtons, lUtilityButtons,[PREV,MORE]), iChan);
}
else
{
llDialog(kRecipient, sThisPrompt, PrettyButtons(lButtons, lUtilityButtons,[]), iChan);
}
integer ts = llGetUnixTime() + g_iTimeOut;
g_lMenus += [iChan, kID, g_iListener, ts, kRecipient, sPrompt, llDumpList2String(lMenuItems, "|"), llDumpList2String(lUtilityButtons, "|"), iPage];
}
list SanitizeButtons(list lIn)
{
integer iLength = llGetListLength(lIn);
integer n;
for (n = iLength - 1; n >= 0; n--)
{
integer type = llGetListEntryType(lIn, n);
if (llList2String(lIn, n) == "") //remove empty sStrings
{
lIn = llDeleteSubList(lIn, n, n);
}
else if (type != TYPE_STRING) //cast anything else to string
{
lIn = llListReplaceList(lIn, [llList2String(lIn, n)], n, n);
}
}
return lIn;
}
list PrettyButtons(list lOptions, list lUtilityButtons, list iPagebuttons)
{//returns a list formatted to that "options" will start in the top left of a dialog, and "utilitybuttons" will start in the bottom right
list lSpacers;
list lCombined = lOptions + lUtilityButtons + iPagebuttons;
while (llGetListLength(lCombined) % 3 != 0 && llGetListLength(lCombined) < 12)
{
lSpacers += [BLANK];
lCombined = lOptions + lSpacers + lUtilityButtons + iPagebuttons;
}
// check if a UPBUTTON is present and remove it for the moment
integer u = llListFindList(lCombined, [UPMENU]);
if (u != -1)
{
lCombined = llDeleteSubList(lCombined, u, u);
}
list lOut = llList2List(lCombined, 9, 11);
lOut += llList2List(lCombined, 6, 8);
lOut += llList2List(lCombined, 3, 5);
lOut += llList2List(lCombined, 0, 2);
//make sure we move UPMENU to the lower right corner
if (u != -1)
{
lOut = llListInsertList(lOut, [UPMENU], 2);
}
return lOut;
}
list RemoveMenuStrkIDe(list lMenu, integer iIndex)
{
//tell this function the menu you wish to remove, identified by list index
//it will close the listener, remove the menu's entry from the list, and return the new list
//should be called in the listen event, and on menu timeout
integer g_iListener = llList2Integer(lMenu, iIndex + 2);
llListenRemove(g_iListener);
return llDeleteSubList(lMenu, iIndex, iIndex + g_iStrideLength - 1);
}
CleanList()
{
//Debug("cleaning list");
//loop through menus and remove any whose timeouts are in the past
//start at end of list and loop down so that indices don't get messed up as we remove items
integer iLength = llGetListLength(g_lMenus);
integer n;
integer iNow = llGetUnixTime();
for (n = iLength - g_iStrideLength; n >= 0; n -= g_iStrideLength)
{
integer iDieTime = llList2Integer(g_lMenus, n + 3);
//Debug("dietime: " + (string)iDieTime);
if (iNow > iDieTime)
{
Debug("menu timeout");
key kID = llList2Key(g_lMenus, n + 1);
llMessageLinked(LINK_SET, DIALOG_TIMEOUT, "", kID);
g_lMenus = RemoveMenuStrkIDe(g_lMenus, n);
}
}
}
ClearUser(key kRCPT)
{
//find any strides belonging to user and remove them
integer iIndex = llListFindList(g_lMenus, [kRCPT]);
while (~iIndex)
{
Debug("removed stride for " + (string)kRCPT);
g_lMenus = llDeleteSubList(g_lMenus, iIndex - 4, iIndex - 5 + g_iStrideLength);
iIndex = llListFindList(g_lMenus, [kRCPT]);
}
Debug(llDumpList2String(g_lMenus, ","));
}
Debug(string sStr)
{
//llOwnerSay(llGetScriptName() + ": " + sStr);
}
integer InSim(key id)
{
return llKey2Name(id) != "";
}
default
{
state_entry()
{
g_kWearer=llGetOwner();
}
on_rez(integer iParam)
{
llResetScript();
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (iNum == DIALOG)
{//give a dialog with the options on the button labels
//str will be pipe-delimited list with rcpt|prompt|page|backtick-delimited-list-buttons|backtick-delimited-utility-buttons
Debug(sStr);
list lParams = llParseStringKeepNulls(sStr, ["|"], []);
key kRCPT = (key)llList2String(lParams, 0);
integer iIndex = llListFindList(g_lRemoteMenus, [kRCPT]);
if (~iIndex)
{
if (!InSim(kRCPT))
{
llHTTPRequest(llList2String(g_lRemoteMenus, iIndex+1), [HTTP_METHOD, "POST"], sStr+"|"+(string)kID);
return;
}
else
{
g_lRemoteMenus = llListReplaceList(g_lRemoteMenus, [], iIndex, iIndex+1);
}
}
string sPrompt = llList2String(lParams, 1);
integer iPage = (integer)llList2String(lParams, 2);
list lbuttons = CharacterCountCheck(llParseStringKeepNulls(llList2String(lParams, 3), ["`"], []), kRCPT);
list ubuttons = llParseString2List(llList2String(lParams, 4), ["`"], []);
//first clean out any strides already in place for that user. prevents having lots of listens open if someone uses the menu several times while sat
ClearUser(kRCPT);
//now give the dialog and save the new stride
Dialog(kRCPT, sPrompt, lbuttons, ubuttons, iPage, kID);
}
else if (llGetSubString(sStr, 0, 10) == "remotemenu:")
{
if (iNum == COMMAND_OWNER || iNum == COMMAND_SECOWNER)
{
string sCmd = llGetSubString(sStr, 11, -1);
Debug("dialog cmd:" + sCmd);
if (llGetSubString(sCmd, 0, 3) == "url:")
{
integer iIndex = llListFindList(g_lRemoteMenus, [kID]);
if (~iIndex)
{
g_lRemoteMenus = llListReplaceList(g_lRemoteMenus, [kID, llGetSubString(sCmd, 4, -1)], iIndex, iIndex+1);
}
else
{
g_lRemoteMenus += [kID, llGetSubString(sCmd, 4, -1)];
}
llMessageLinked(LINK_SET, iNum, "menu", kID);
}
else if (llGetSubString(sCmd, 0, 2) == "off")
{
integer iIndex = llListFindList(g_lRemoteMenus, [kID]);
if (~iIndex)
{
g_lRemoteMenus = llListReplaceList((g_lRemoteMenus = []) + g_lRemoteMenus, [], iIndex, iIndex+1);
}
}
else if (llGetSubString(sCmd, 0, 8) == "response:")
{
list lParams = llParseString2List(llGetSubString(sCmd, 9, -1), ["|"], []);
//llMessageLinked(LINK_SET, DIALOG_RESPONSE, (string)kAv + "|" + sMessage + "|" + (string)iPage, kMenuID);
llMessageLinked(LINK_SET, DIALOG_RESPONSE, llList2String(lParams, 0) + "|" + llList2String(lParams, 1) + "|" + llList2String(lParams, 2), llList2String(lParams, 3));
}
else if (llGetSubString(sCmd, 0, 7) == "timeout:")
{
llMessageLinked(LINK_SET, DIALOG_TIMEOUT, "", llGetSubString(sCmd, 8, -1));
}
}
}
}
listen(integer iChan, string sName, key kID, string sMessage)
{
integer iMenuIndex = llListFindList(g_lMenus, [iChan]);
if (~iMenuIndex)
{
key kMenuID = llList2Key(g_lMenus, iMenuIndex + 1);
key kAv = llList2Key(g_lMenus, iMenuIndex + 4);
string sPrompt = llList2String(g_lMenus, iMenuIndex + 5);
list items = llParseStringKeepNulls(llList2String(g_lMenus, iMenuIndex + 6), ["|"], []);
list ubuttons = llParseStringKeepNulls(llList2String(g_lMenus, iMenuIndex + 7), ["|"], []);
integer iPage = llList2Integer(g_lMenus, iMenuIndex + 8);
g_lMenus = RemoveMenuStrkIDe(g_lMenus, iMenuIndex);
if (sMessage == MORE)
{
Debug((string)iPage);
//increase the page num and give new menu
iPage++;
integer thisiPagesize = iPagesize - llGetListLength(ubuttons) - 2;
if (iPage * thisiPagesize >= llGetListLength(items))
{
iPage = 0;
}
Dialog(kID, sPrompt, items, ubuttons, iPage, kMenuID);
}
else if (sMessage == PREV)
{
Debug((string)iPage);
//increase the page num and give new menu
iPage--;
if (iPage < 0)
{
integer thisiPagesize = iPagesize - llGetListLength(ubuttons) - 2;
iPage = (llGetListLength(items)-1)/thisiPagesize;
}
Dialog(kID, sPrompt, items, ubuttons, iPage, kMenuID);
}
else if (sMessage == BLANK)
{
//give the same menu back
Dialog(kID, sPrompt, items, ubuttons, iPage, kMenuID);
}
else
{
llMessageLinked(LINK_SET, DIALOG_RESPONSE, (string)kAv + "|" + sMessage + "|" + (string)iPage, kMenuID);
}
}
}
timer()
{
CleanList();
//if list is empty after that, then stop timer
if (!llGetListLength(g_lMenus))
{
Debug("no active dialogs, stopping timer");
llSetTimerEvent(0.0);
}
}
}

View File

@@ -1,373 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollarUpdater - Master //
// version 3.988 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// https://github.com/lickx/opencollar-os/tree/oscollar3 //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// This is the master updater script. It complies with the update handshake
// protocol that OC has been using for quite some time, and should therefore be
// compatible with current OC collars. the internals of this script, and the
// the other parts of the new updater, have been completely re-written. Don't
// expect this to work like the old updater. Because we load an update shim
// script right after handshaking, we're free to rewrite everything that comes
// after the handshake.
// In addition to the handshake and shim installation, this script decides
// which bundles should be installed into (or removed from) the collar. It
// loops over each bundle in inventory, telling the BundleGiver script to
// install or remove each.
// This script also does a little bit of magic to ensure that the updater's
// version number always matches the contents of the ".version" card.
key version_line_id;
integer initChannel = -7483214;
integer iSecureChannel;
// store the script pin here when we get it from the collar.
integer iPin;
// the collar's key
key kCollarKey;
// strided list of bundles in the prim and whether they are supposed to be
// installed.
list lBundles;
// here we remember the index of the bundle that's currently being installed/removed
// by the bundlegiver.
integer iBundleIdx;
// handle for our dialogs
key kDialogID;
integer DO_BUNDLE = 98749;
integer BUNDLE_DONE = 98750;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
string BTN_REQUIRED = " ★ ";
string BTN_INSTALL = " ☒ ";
string BTN_UNINSTALL = " ☐ ";
string BTN_DEPRECATED = " ♻ ";
string INSTALL_METHOD = "Standard";
string g_sVersion;
// A wrapper around llSetScriptState to avoid the problem where it says it can't
// find scripts that are already not running.
DisableScript(string name) {
if (llGetInventoryType(name) == INVENTORY_SCRIPT) {
if (llGetScriptState(name) != FALSE) {
llSetScriptState(name, FALSE);
}
}
}
DoBundle() {
// tell bundle slave to load the bundle.
string card = llList2String(lBundles, iBundleIdx);
string mode = llList2String(lBundles, iBundleIdx + 1);
string bundlemsg = llDumpList2String([iSecureChannel, kCollarKey, card, iPin, mode], "|");
llMessageLinked(LINK_SET, DO_BUNDLE, bundlemsg, "");
}
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage) {
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|" + llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`"), kID);
return kID;
}
SetBundleStatus(string bundlename, string status) {
// find the bundle in the list
integer n;
integer stop = llGetListLength(lBundles);
for (n = 0; n < stop; n += 2) {
string card = llList2String(lBundles, n);
list parts = llParseString2List(card, ["_"], []);
string name = llList2String(parts, 2);
if (name == bundlename) {
lBundles = llListReplaceList(lBundles, [status], n + 1, n + 1);
return;
}
}
}
SetInstallmode(string type) {
//user clicked default.. restore Bundle Status
if(type == "Standard") {
lBundles = [];
integer n;
integer stop = llGetInventoryNumber(INVENTORY_NOTECARD);
for (n = 0; n < stop; n++) {
string name = llGetInventoryName(INVENTORY_NOTECARD, n);
if (llSubStringIndex(name, "BUNDLE_") == 0) {
list parts = llParseString2List(name, ["_"], []);
lBundles += [name, llList2String(parts, -1)];
}
}
return;
}
string newstatus;
integer n;
integer stop = llGetListLength(lBundles);
//user clicked Basic.. set Bundle Status
if(type == "Basic")
{
newstatus = "REMOVE";
}
else if (type == "Developer")
{
newstatus = "INSTALL";
}
for (n = 0; n < stop; n += 2)
{
string card = llList2String(lBundles, n);
string status = llList2String(lBundles, n + 1);
if (status != "REQUIRED" && status != "DEPRECATED")
{
lBundles = llListReplaceList(lBundles, [newstatus], n + 1, n + 1);
}
}
}
BundleMenu(integer page) {
// Give the plugin selection/start menu.
string prompt = "\n\nAdd/remove plugins by checking the boxes below.";
prompt += "\n\nClick START when you're ready to update.\n";
// build list of buttons from list of bundles
integer n;
integer stop = llGetListLength(lBundles);
list choices;
for (n = 0; n < stop; n += 2) {
string card = llList2String(lBundles, n);
string status = llList2String(lBundles, n + 1);
list parts = llParseString2List(card, ["_"], []);
string name = llList2String(parts, 2);
if (status == "INSTALL") {
choices += [BTN_INSTALL + " " + name];
} else if (status == "REQUIRED") {
choices += [BTN_REQUIRED + " " + name];
} else if (status == "REMOVE") {
choices += [BTN_UNINSTALL + " " + name];
} else if (status == "DEPRECATED") {
choices += [BTN_DEPRECATED + " " + name];
}
}
kDialogID = Dialog(llGetOwner(), prompt + "\n", choices, ["START"], page);
}
GiveMethodMenu() {
//string prompt = "\n\nStandard: \"The most popular features, RLV and Relay.\"\n";
//prompt += "\nBasic: \"Just the modular core and essential basics.\"\n";
//prompt += "\nCustom: \"Make your own selection of features here.\"\n";
string prompt = "\n\nPlease select Standard or Custom installation.\n\nCustom is recommended if you want to add apps such as Timer and Camera, add extra height scalars or remove standard modules such as RLV or Animations.";
prompt += "\n\nwww.opencollar.at/updates\n";
prompt += "\n\nThe currently selected method is ["+INSTALL_METHOD+"]";
list choices = ["Standard","Custom"];
kDialogID = Dialog(llGetOwner(), prompt, choices, ["START"],0);
}
Debug(string str) {
//llOwnerSay(llGetScriptName() + ": " + str);
}
ReadVersionLine() {
// try to keep object's version in sync with ".version" notecard.
if (llGetInventoryType(".version") == INVENTORY_NOTECARD) {
version_line_id = llGetNotecardLine(".version", 0);
}
}
SetFloatText() {
llSetText("Version "+g_sVersion, <1,1,1>, 1.0);
}
Particles(key target) {
llParticleSystem([
PSYS_PART_FLAGS,
PSYS_PART_INTERP_COLOR_MASK |
PSYS_PART_INTERP_SCALE_MASK |
PSYS_PART_TARGET_POS_MASK |
PSYS_PART_EMISSIVE_MASK,
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE,
PSYS_SRC_TEXTURE, "aa383f73-8be2-c693-acf0-9b8be8b4a155",
PSYS_SRC_TARGET_KEY, target,
PSYS_PART_START_SCALE, <0.68, 0.64, 0>,
PSYS_PART_END_SCALE, <0.04, 0.04, 0>,
PSYS_PART_START_ALPHA, 0.1,
PSYS_PART_END_ALPHA, 1,
PSYS_SRC_BURST_PART_COUNT, 4,
PSYS_PART_MAX_AGE, 2,
PSYS_SRC_BURST_SPEED_MIN, 0.2,
PSYS_SRC_BURST_SPEED_MAX, 1
]);
}
default {
state_entry() {
ReadVersionLine();
llListen(initChannel, "", "", "");
// set all scripts except self to not running
// also build list of all bundles
integer n;
integer stop = llGetInventoryNumber(INVENTORY_ALL);
for (n = 0; n < stop; n++) {
string name = llGetInventoryName(INVENTORY_ALL, n);
integer type = llGetInventoryType(name);
if (type == INVENTORY_SCRIPT) {
// ignore updater scripts. set others to not running.
if (llSubStringIndex(name, "OpenCollarUpdater") != 0) {
DisableScript(name);
}
} else if (type == INVENTORY_NOTECARD) {
// add card to bundle list if it's a bundle
if (llSubStringIndex(name, "BUNDLE_") == 0) {
list parts = llParseString2List(name, ["_"], []);
lBundles += [name, llList2String(parts, -1)];
}
}
}
SetFloatText();
llParticleSystem([]);
}
listen(integer channel, string name, key id, string msg) {
if (llGetOwnerKey(id) == llGetOwner()) {
Debug(llDumpList2String([name, msg], ", "));
if (channel == initChannel) {
// everything heard on the init channel is stuff that has to
// comply with the existing update kickoff protocol. New stuff
// will be heard on the random secure channel instead.
list parts = llParseString2List(msg, ["|"], []);
string cmd = llList2String(parts, 0);
string param = llList2String(parts, 1);
if (cmd == "UPDATE") {
// someone just clicked the upgrade button on their collar.
llWhisper(initChannel, "get ready");
} else if (cmd == "ready") {
// person clicked "Yes I want to update" on the collar menu.
// the script pin will be in the param
iPin = (integer)param;
kCollarKey = id;
//BundleMenu(0);
GiveMethodMenu();
}
} else if (channel == iSecureChannel) {
if (msg == "reallyready") {
Particles(id);
iBundleIdx = 0;
DoBundle();
}
}
}
}
// when we get a BUNDLE_DONE message, move to the next bundle
link_message(integer sender, integer num, string str, key id) {
if (num == DIALOG_RESPONSE) {
if (id == kDialogID) {
list parts = llParseString2List(str, ["|"], []);
key av = (key)llList2String(parts, 0);
string button = llList2String(parts, 1);
integer page = (integer)llList2String(parts, 2);
if (button == "START") {
// so let's load the shim.
string shim = "OpenCollar - UpdateShim";
iSecureChannel = (integer)llFrand(-2000000000 + 1);
llListen(iSecureChannel, "", kCollarKey, "");
llRemoteLoadScriptPin(kCollarKey, shim, iPin, TRUE, iSecureChannel);
}
//else if (button == "Basic" || button == "Standard" || button == "Developer")
else if (button == "Standard")
{
INSTALL_METHOD = button;
SetInstallmode(button);
GiveMethodMenu();
} else if (button == "Custom") {
BundleMenu(0);
}
/*else if (button == "Help") {
llLoadURL(av, "Confused with the many choices? Find help on our website!","http://www.opencollar.at/updates.html");
}*/
else {
// switch the bundle if appropriate
string status = llGetSubString(button, 0, 2);
string bundlename = llGetSubString(button, 4, -1);
if (status == BTN_REQUIRED) {
llOwnerSay("The " + bundlename + " bundle is required and cannot be removed.");
} else if (status == BTN_DEPRECATED) {
llOwnerSay("The " + bundlename + " bundle is deprecated and must be removed.");
} else if (status == BTN_INSTALL) {
// if the button said +, that means we need to switch it to -
// find the bundle in the list, and set to REMOVE
SetBundleStatus(bundlename, "REMOVE");
llOwnerSay(bundlename + " will be removed if present.");
} else if (status == BTN_UNINSTALL) {
SetBundleStatus(bundlename, "INSTALL");
llOwnerSay(bundlename + " will be updated/installed.");
}
BundleMenu(page);
}
}
} else if (num == BUNDLE_DONE) {
// see if there's another bundle
integer count = llGetListLength(lBundles);
iBundleIdx += 2;
if (iBundleIdx < count) {
DoBundle();
} else {
// tell the shim to restore settings, set version,
// remove the script pin, and delete himself.
string myversion = llList2String(llParseString2List(llGetObjectName(), [" - "], []), 1);
llRegionSayTo(kCollarKey, iSecureChannel, "CLEANUP|" + myversion);
SetFloatText();
llParticleSystem([]);
}
}
}
on_rez(integer param) {
llResetScript();
}
changed(integer change) {
if (change & CHANGED_INVENTORY) {
// Resetting on inventory change ensures that the bundle list is
// kept current, and that the .version card is re-read if it
// changes.
llResetScript();
}
}
dataserver(key id, string data) {
if (id == version_line_id) {
// make sure that object version matches this card.
g_sVersion=data;
SetFloatText();
list nameparts = llParseString2List(llGetObjectName(), [" - "], []);
integer length = llGetListLength(nameparts);
if (length == 2) {
nameparts = llListReplaceList(nameparts, [data], 1, 1);
} else if (length == 1) {
nameparts += [data];
}
llSetObjectName(llDumpList2String(nameparts, " - "));
}
}
}

View File

@@ -1,7 +0,0 @@
hug|~hug|~hug|0.4|_SELF_ hugs _PARTNER_.
kiss|~kiss|~kiss|0.4|_SELF_ kisses _PARTNER_.
pet|~bottom|~top|0.55|_PARTNER_ pets _SELF_'s head.
subhug|~leg-bottom|~leg-top|0.55|_SELF_ hugs _PARTNER_'s legs.
footkiss|~foot-bottom|~foot-top|1.1|_SELF_ kisses _PARTNER_'s foot.
bootlick|~boot-bottom|~boot-top|1.0|_SELF_ licks _PARTNER_'s boot.
jumphug|~jump-bottom|~jump-top|0.6|_SELF_ jumps into _PARTNER_'s arms.

View File

View File

@@ -1,15 +0,0 @@
Blank,5ab1c02f-22e7-5238-3aec-5cc9c9a83cdd
Brass,403f16e4-85c4-8100-2694-87a9d8bf8e39
Chrome,50aa32a9-3ecc-ff6b-5051-5eb82b29b725
Fur Dark,05678cb0-dd01-5db5-6aae-b6cb14d82a66
Fur Light,7d6f388e-59ea-bbda-6a6c-91ec1b4e881c
Gem,f6e9107a-2e8c-6a82-c71d-037bb115aca8
Gold,7edfa787-ab5f-ca96-0aee-74b452d64654
Grunge,52c97672-709a-2397-9c04-f7f70b7e6b52
Lace,97b6b927-79b0-8821-7e2d-6431e3d05a0d
Leather Dark,49a0e1da-d41c-c96a-3475-06091fb44312
Leather Light,cbef7240-1b40-a457-80e3-7957914b6cb0
Rust,26ece618-e491-d845-e8b6-fb6f4bf2ad42
Silver,6af1a29a-85c0-a6ee-bba0-9de1eec29da0
Snake,f09a761d-0901-294f-3ac4-18bd8fa036fd
Steel,11cf252d-ab74-cbf4-c8a4-a5b0f54a0fe1

View File

@@ -1 +0,0 @@
IXstatic~Oaks Woods(8,134,28)

View File

@@ -1,16 +0,0 @@
OsCollar is an unofficial port of OpenCollar to OpenSim.
As such, please do not contact the OpenCollar project
with (OpenSim) issues with this port.
Talk to us on OpenCollar friends (Osgrid group):
secondlife:///app/group/1fe0f858-5055-46ea-b016-8bf7c7f6f3a9/about
Report bugs at our issue tracker at:
https://github.com/lickx/opencollar-os/issues
The Adult Metaverse - OpenSim adult community at Google+:
https://plus.google.com/u/0/communities/112812844000583620045

View File

@@ -1,5 +0,0 @@
Click one of the links below to join a group!
Support: secondlife:///app/group/1fe0f858-5055-46ea-b016-8bf7c7f6f3a9/about

View File

@@ -1,13 +0,0 @@
OpenCollar-OS 3.998.3 - Built Jan 21st 2017
* Backported a critical fix for the leash vs couple hug code
* Disable by default this news bulletin you are now seeing
It is strongly recommended to update if you haven't already.
Please be aware this is a legacy collar, active development
is focused on the newer Six collars.
OsGrid local teleport:
secondlife://Oaks Woods/8/134/28
Hypergrid (World Map):
hg.osgrid.org:80:Oaks Woods

View File

@@ -1,5 +0,0 @@
To visit us click a link down below!
TBD

View File

@@ -1,108 +0,0 @@
[ Classic ]
Base~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~0
Bell~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
Hinges~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
Slide~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
Ring~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
[ Rough ]
Base~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~0
Bell~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Hinges~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Slide~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Ring~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
[ Iron ]
Base~1b7fe355-a9b3-4873-a4e5-c351fdc5b033~<1,1,1>~0
Bell~1b7fe355-a9b3-4873-a4e5-c351fdc5b033~<1,1,1>~1
Hinges~1b7fe355-a9b3-4873-a4e5-c351fdc5b033~<1,1,1>~1
Slide~1b7fe355-a9b3-4873-a4e5-c351fdc5b033~<1,1,1>~1
Ring~1b7fe355-a9b3-4873-a4e5-c351fdc5b033~<1,1,1>~1
[ Black ]
Base~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~0
Bell~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~1
Hinges~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~1
Slide~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~1
Ring~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~1
[ White ]
Base~6f8b160f-5c49-4af7-8f4f-d46c707935a9~<1,1,1>~0
Bell~6f8b160f-5c49-4af7-8f4f-d46c707935a9~<1,1,1>~1
Hinges~6f8b160f-5c49-4af7-8f4f-d46c707935a9~<1,1,1>~1
Slide~6f8b160f-5c49-4af7-8f4f-d46c707935a9~<1,1,1>~1
Ring~6f8b160f-5c49-4af7-8f4f-d46c707935a9~<1,1,1>~1
[ Red ]
Base~8eec6e8f-e553-41f6-bfaa-addaddbd47a2~<1,1,1>~0
Bell~8eec6e8f-e553-41f6-bfaa-addaddbd47a2~<1,1,1>~1
Hinges~8eec6e8f-e553-41f6-bfaa-addaddbd47a2~<1,1,1>~1
Slide~8eec6e8f-e553-41f6-bfaa-addaddbd47a2~<1,1,1>~1
Ring~8eec6e8f-e553-41f6-bfaa-addaddbd47a2~<1,1,1>~1
[ Blue ]
Base~708ca932-586a-4a3a-be02-a09442a31247~<1,1,1>~0
Bell~708ca932-586a-4a3a-be02-a09442a31247~<1,1,1>~1
Hinges~708ca932-586a-4a3a-be02-a09442a31247~<1,1,1>~1
Slide~708ca932-586a-4a3a-be02-a09442a31247~<1,1,1>~1
Ring~708ca932-586a-4a3a-be02-a09442a31247~<1,1,1>~1
[ Green ]
Base~c35d4b47-6524-4ece-950c-83dee8d9f1c4~<1,1,1>~0
Bell~c35d4b47-6524-4ece-950c-83dee8d9f1c4~<1,1,1>~1
Hinges~c35d4b47-6524-4ece-950c-83dee8d9f1c4~<1,1,1>~1
Slide~c35d4b47-6524-4ece-950c-83dee8d9f1c4~<1,1,1>~1
Ring~c35d4b47-6524-4ece-950c-83dee8d9f1c4~<1,1,1>~1
[ Yellow ]
Base~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~0
Bell~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~1
Hinges~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~1
Slide~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~1
Ring~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~1
[ Barbie ]
Base~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~0
Bell~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~1
Hinges~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~1
Slide~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~1
Ring~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~1
[ Babygirl ]
Base~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~0
Bell~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
Hinges~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
Slide~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
Ring~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
[ B/W ]
Base~6f8b160f-5c49-4af7-8f4f-d46c707935a9~<1,1,1>~0
Bell~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~1
Hinges~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~1
Slide~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~1
Ring~6f8b160f-5c49-4af7-8f4f-d46c707935a9~<1,1,1>~1
[ BlackMix ]
Base~f3375447-79c0-4b10-b903-2a3763f47f8f~<1,1,1>~0
Bell~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
Hinges~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Slide~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Ring~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
[ RedMix ]
Base~8eec6e8f-e553-41f6-bfaa-addaddbd47a2~<1,1,1>~0
Bell~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
Hinges~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Slide~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Ring~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
[ BlueMix ]
Base~708ca932-586a-4a3a-be02-a09442a31247~<1,1,1>~0
Bell~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
Hinges~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Slide~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
Ring~4a14bf47-ea51-45b4-bbfb-84cf147d5c6f~<1,1,1>~1
[ Fluttershy ]
Base~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~0
Bell~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
Hinges~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
Slide~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
Ring~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~1
[ PinkyPie ]
Base~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~0
Bell~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~1
Hinges~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~1
Slide~049a0e94-f8bc-44bd-ae7b-10542e559b56~<1,1,1>~1
Ring~5ea6eaff-106e-488e-a091-84396d4a0423~<1,1,1>~1
[ Toy ]
Base~8eec6e8f-e553-41f6-bfaa-addaddbd47a2~<1,1,1>~0
Bell~f5c0dd85-f4e9-4018-bbfa-0e9085fb8a45~<1,1,1>~1
Hinges~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~1
Slide~708ca932-586a-4a3a-be02-a09442a31247~<1,1,1>~1
Ring~09588851-428b-4992-811a-fe226bf96a82~<1,1,1>~1

View File

@@ -1,3 +0,0 @@
No Updater found. Please rez an Updater within 10m and try again. If you need a current Updater, get one free at [http://maps.secondlife.com/secondlife/Boulevard/50/211/23 The Temple of the Collar™] or at our [http://maps.secondlife.com/secondlife/Bondage/208/126/23 Sidekick Temple] or an alternative Updater on the [https://marketplace.secondlife.com/p/Wendys-OpenCollar-Updater/6620453 Marketplace].

View File

@@ -1 +0,0 @@
3.998.2

View File

@@ -1,32 +1,40 @@
### Welcome to OpenCollar!
### Welcome to OsCollar
OpenCollar is a set of LSL scripts and all sort of creative content, such as motions, sounds, graphics and 3D models, which can be used to create role play devices for the metaverse. Traditionally such devices would take form as graphical interface worn on the "HUD" or as fashion accessory worn on the avatar herself.
Punk, goth and fetish collars would be the most popular of those and OpenCollar eventually became the basic standard device for this kind of creative role play amongst adults on Second Life®. OpenCollar is [free software](http://www.gnu.org/philosophy/free-sw.html "What is free software?").
OsCollar is a set of gadgets for submission roleplay for use in OpenSim grids
#### License Terms and Addendum
#### Finding your way around this repo
```
./oscollar/
OpenCollar source code and creative resource are covered and protected by strong [copyleft](https://en.wikipedia.org/wiki/Copyleft "What does "copyleft" mean?") licenses.
> doc: Useful information and documentation
* LSL scripts are licensed as and must remain under the [GNU General Public License, version 2](http://www.gnu.org/licenses/gpl-2.0).
> res: Resource of creative content.
* Creative content is licensed as and must remain under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://creativecommons.org/licenses/by-sa/4.0/).
> anims: Motions and Animations as .bvh and .avm binaries.
> creatorkit: Sample collar for creators to use as a base
> models: 3D Models as .dae and .blend binaries.
> sounds: Sounds as .wav and .aup binaries.
> textures: Images as .png and .xcf binaries.
* Everything else that is shared within the metaverse and where no explicit license was applied is covered by the [License Terms for the OpenCollar Role Play Device](https://raw.githubusercontent.com/OpenCollar/opencollar/master/LICENSE).
> src: Source code of the OsCollar role play device.
**NOTE:** Please make sure that you have read and understood the full legal text of each license if your interest in OpenCollar goes beyond personal use (i.e. commercial redistribution). For human-readable summaries of various licenses, check out [tl;drLegal](https://tldrlegal.com/)
> ao: The source code for the animation overrider HUD.
> apps: Fun features you can add to your device
> device: Everything you need for a full featured device
> extensions: Enhanced features that can be added to a device
> installer: The source code for the updater aka patch
> remote: The source code for the Remote HUD.
> spares: Spares and snippets for research and development.
> web: Files for the updater check within the Help/About menu
```
#### OpenSim Porting Information
#### Requirements
We target and test for OpenSim 0.8 (stable) and OpenSim 0.9 (unstable, master)
Simulator 0.9.3.1 or newer
This is the oscollar3 branch, which is a port of OpenCollar 3.99x and considered legacy
Check out the oscollar6 branch for a port based on the modern OpenCollar [six]
- Teleporting to a sim running older versions of OpenSim may result in loss of settings (linkset data) and loss of functionality (non-running scripts)
- Teleporting to a hypergrid sim may result in scripts to stop running and/or reset, unless the destination sim is patched
There are some differences between v3 and v6 collars, for instance v6 is much more optimized thanks to certain scripts being in seperate links (which can be optionally invisible, but you do need them seperate).
If you are looking to directly convert or upgrade existing v3 collars for OpenSim, you can use this oscollar3 branch which should be 100% compatible with the last v3 version in Second Life. We haven't made a transmuter tool yet to convert a v3 collar to v6.
A ready made standard OpenCollar for both branches can be be aquired at the OsGrid Sim ['Kinky Hub'](http://opensimworld.com/hop/77066-Kinky-Hub). Creators can use this standard collar as a technical reference for making new products.
To avoid problems, only use this on your home grid meeting the minimal requirements or better.

View File

@@ -1,328 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - AO Link (lite) //
// version 3.987 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// github.com/OpenCollar/OpenCollarUpdater //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// Based on Medea Destiny's AO interface script for OpenCollar.
// HOW TO: This script is intended to be dropped into ZHAO-2, Vista and Oracul
// AOs that are not already compatible with OpenCollar's AO interface. Just rez
// your existing AO Hud, right-click to open it and drop this script inside!
// This is not a complete replacement of the Sub AO as it cannot allow as complete
// access to the AO as that does, but it should provide most of the functionality
// while being very easy to add to your pre-existing AOs.
// The lite variation of this script is complementary to AntiSlide technology.
integer type;
//If left like this, script will try to determine AO type automatically.
//To force compatibility for a particular type of AO, change to:
// integer type=1; //for Oracul type AOs
// integer type=2; // for ZHAO-II type AOs
// integer type=3; // for Vista type AOs
// integer type=4; // for AKEYO type AOs
// integer type=5; // for Gaeline type AOs
//----------------------------------------------------------------------
//Integer map for above
integer ORACUL=1;
integer ZHAO=2;
integer VISTA=3;
integer AKEYO=4;
integer GAELINE=5;
// OC channel listener for comms from collar
integer g_iAOChannel = -782690;
integer g_iAOListenHandle;
//Menu handler for script's own ZHAO menu
integer g_iMenuHandle;
integer g_iMenuChannel=-23423456; //dummy channel, changed to unique on attach
list g_lMenuUsers; //list of menu users to allow for multiple users of menu
integer g_iMenuTimeout=60;
string g_sOraculstring; //configuration string for Oracul power on/off, 0 prepended for off, 1 prepended for on
//We use these two so that we can return the AO to its previous state. If the AO was already off when the OC tries to switch it off, we shouldn't switch it back on again.
integer g_iAOSwitch=TRUE; //monitor on/off from the AO's own state.
integer g_iOCSwitch=TRUE; //monitor on/off due to collar pauses (FALSE=paused, TRUE=unpaused)
integer g_iSitOverride=TRUE; //monitor AO sit override
determineType() //function to determine AO type.
{
llListenRemove(g_iAOListenHandle);
type=0;
integer x=llGetInventoryNumber(INVENTORY_SCRIPT);
while(x)
{
--x;
string t=llToLower(llGetInventoryName(INVENTORY_SCRIPT,x));
if(~llSubStringIndex(t,"zhao")) //if we find a script with "zhao" in the name.
{
type=ZHAO;
x=0;
llOwnerSay("OC compatibility script configured for Zhao AO. Depending on your AO model, you may sometimes see your AO buttons get out of sync when the AO is accessed via the collar, just toggle a setting to restore it. NOTE! Toggling sit override now is highly recommended, but if you don't know what that means or don't have one, don't worry.");
llMessageLinked(LINK_SET, 0, "ZHAO_AOON", "");
}
else if(~llSubStringIndex(t,"vista")) //if we find a script with "zhao" in the name.
{
type=VISTA;
x=0;
llOwnerSay("OC compatibility script configured for VISTA AO. Support is very experimental since it is unknown how much was changed from ZHAO.");
llMessageLinked(LINK_SET, 0, "ZHAO_AOON", "");
}
else if(~llSubStringIndex(t,"z_ao")) //if we find a script with "z_ao" in the name.
{
type=GAELINE;
x=0;
llOwnerSay("OC compatibility script configured for Gaeline AO. Support is very experimental since it is unknown how much was changed from ZHAO.");
llMessageLinked(LINK_SET, 103, "", "");
}
else if(~llSubStringIndex(t,"oracul")) //if we find a script with "oracul" in the name.
{
type=ORACUL;
x=0;
llOwnerSay("OC compatibility script configured for Oracul AO. IMPORTANT: for proper functioning, you must now switch your AO on (switching it off first if necessary!)");
}
}
if (llSubStringIndex(llGetObjectName(),"AKEYO") >=0) { //AKEYO is not a string in their script name, it is in animations but think the object name is a better test for this AO - Sumi Perl
type = AKEYO;
llOwnerSay("OC compatibility script configured for AKEYO AO. This support is experimental. Please let us know if you notice any problems.");
}
if(type==0) llOwnerSay("Cannot identify AO type. The script:"+llGetScriptName()+" is intended to be dropped into a Zhao2 or Oracul AO hud.");
else
{
g_iAOListenHandle=llListen(g_iAOChannel,"","",""); //We identified type, start script listening!
}
}
AOPause()
{
if(g_iAOSwitch)
{
if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_SET,0,"0"+g_sOraculstring,"ocpause");
else if (type==AKEYO) llMessageLinked(LINK_ROOT, 0, "PAO_AOOFF", "ocpause");
else if(type==GAELINE) llMessageLinked(LINK_THIS, 102, "", "ocpause");
//Note: for ZHAO use LINK_THIS in pause functions, LINK_SET elsewhere. This is because ZHAOs which switch power on buttons by a script in the button reading the link messages are quite common. This avoids toggling the power switch when AO is only paused in those cases.
else if(type>1) llMessageLinked(LINK_THIS, 0, "ZHAO_AOOFF", "ocpause");//we use "ocpause" as a dummy key to identify our own linked messages so we can tell when an on or off comes from the AO rather than from the collar standoff, to sync usage.
}
g_iOCSwitch=FALSE;
}
AOUnPause()
{
if(g_iAOSwitch)
{
if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_SET,0,"1"+g_sOraculstring,"ocpause");
else if(type==AKEYO ) llMessageLinked(LINK_ROOT, 0, "PAO_AOON", "ocpause");
else if(type==GAELINE) llMessageLinked(LINK_THIS, 103, "", "ocpause");
else if(type>1 ) llMessageLinked(LINK_THIS, 0, "ZHAO_AOON", "ocpause");
}
g_iOCSwitch=TRUE;
}
zhaoMenu(key kMenuTo)
{
//script's own menu for some ZHAO features.
//Open listener if no menu users are registered in g_lMenuUsers already, and add
//menu user to list if not already present.
if(!llGetListLength(g_lMenuUsers)) g_iMenuHandle=llListen(g_iMenuChannel,"","","");
if(llListFindList(g_lMenuUsers,[kMenuTo])==-1) g_lMenuUsers+=kMenuTo;
string sSit="AO Sits ON";
if(g_iSitOverride) sSit="AO Sits OFF";
list lButtons=[sSit,"Load Notecard","Done","AO on","AO off","Next Stand"];
llSetTimerEvent(g_iMenuTimeout);
llDialog(kMenuTo,"AO options. Depending on model of AO, some may not work. Use OC Sub AO for more comprehensive control!",lButtons,g_iMenuChannel);
}
default
{
state_entry()
{
if(type==0) determineType();
g_iMenuChannel=-(integer)llFrand(999999)-10000; //randomise menu channel
}
attach(key avatar)
{
if(avatar) //on attach
{
if(type==0) determineType();
g_iMenuChannel=-(integer)llFrand(999999)-10000; //randomise menu channel
}
}
listen(integer iChannel, string sName, key kID, string sMsg)
{
if(iChannel==g_iMenuChannel) // this is for our own limited ZHAO menu.
{
if(sMsg=="Done"||sMsg=="Cancel")
{
integer i=llListFindList(g_lMenuUsers,[kID]);
if(i>-1) g_lMenuUsers=llDeleteSubList(g_lMenuUsers,i,i); //remove user from menu users list.
if(!llGetListLength(g_lMenuUsers)) //remove listener if no menu users left
{
llListenRemove(g_iMenuHandle);
llSetTimerEvent(0);
}
return; // we're done here!
}
else if(sMsg=="Load Notecard") //scan for notecards and provide a dialog to user
{
list lButtons;
integer x=llGetInventoryNumber(INVENTORY_NOTECARD);
while(x)
{
x--;
string t=llGetInventoryName(INVENTORY_NOTECARD,x);
if(llSubStringIndex(llToLower(t),"read me")==-1 && llSubStringIndex(llToLower(t),"help")==-1 && llStringLength(t)<23) lButtons+=t; //we only take notecards without "help" or "read me" in the title and with short enough names to fit on a button.
}
if(llGetListLength(lButtons)>11)
{
llRegionSayTo(kID,0,"Too many notecards found, displaying the first 11"); //ZHAO doesn't bother multi pages, so we won't.
lButtons=llDeleteSubList(lButtons,11,-1);
}
llSetTimerEvent(g_iMenuTimeout);
llDialog(kID,"Pick an AO settings notecard to load, or click Cancel",lButtons+["Cancel"],g_iMenuChannel);
}
else if(sMsg=="AO Sits ON")
{
g_iSitOverride=TRUE; //this will get set by the link message anyway, but set here just in case remenu happens before link message is read.
llMessageLinked(LINK_SET,0,"ZHAO_SITON","");
}
else if(sMsg=="AO Sits OFF")
{
g_iSitOverride=FALSE;
llMessageLinked(LINK_SET,0,"ZHAO_SITOFF","");
}
else if(sMsg=="AO on")
{
if(g_iOCSwitch) llMessageLinked(LINK_SET,0,"ZHAO_AOON",""); // don't switch on AO if we are paused
g_iAOSwitch=TRUE;
}
else if(sMsg=="AO off")
{
llMessageLinked(LINK_SET,0,"ZHAO_AOOFF","");
}
else if(sMsg=="Next Stand")
{
if(type == 2) // ZHAO-II
llMessageLinked(LINK_SET,0,"ZHAO_NEXTSTAND","");
else // VISTA
llMessageLinked(LINK_SET,0,"ZHAO_NEXTPOSE","");
}
//check if sMsg is a notecard picked from Load Notecard menu, and send load command if so.
else if(llGetInventoryType(sMsg)==INVENTORY_NOTECARD) llMessageLinked(LINK_THIS,0,"ZHAO_LOAD|"+sMsg,"");
//resend the menu where it makes sense.
if(sMsg!="Done" && sMsg!="Cancel" && sMsg!="Load Notecard") zhaoMenu(kID);
return;
}
else if(llGetOwnerKey(kID)!=llGetOwner()) return; //reject commands from other sources.
else if (iChannel==g_iAOChannel)
{
if(sMsg=="ZHAO_STANDON") AOUnPause();
else if (sMsg=="ZHAO_STANDOFF") AOPause();
else if (sMsg=="ZHAO_AOOFF")
{
if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_SET,0,"0"+g_sOraculstring,"ocpause");
else if(type==AKEYO ) llMessageLinked(LINK_ROOT, 0, "PAO_AOOFF", "ocpause");
else if(type==GAELINE) llMessageLinked(LINK_THIS, 102, "", "ocpause");
else if(type>1 ) llMessageLinked(LINK_THIS, 0, "ZHAO_AOOFF", "ocpause");
}
else if (sMsg=="ZHAO_AOON")
{
if(g_iOCSwitch)// don't switch on AO if we are paused
{
if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_SET,0,"1"+g_sOraculstring,"ocpause");
else if(type==AKEYO ) llMessageLinked(LINK_ROOT, 0, "PAO_AOON", "ocpause");
else if(type==GAELINE) llMessageLinked(LINK_THIS, 103, "", "ocpause");
else if(type>1 ) llMessageLinked(LINK_SET, 0, "ZHAO_AOON", "ocpause");
}
g_iAOSwitch=TRUE;
}
else if (llGetSubString(sMsg,0,8)=="ZHAO_MENU")
{
key kMenuTo=(key)llGetSubString(sMsg,10,-1);
if(type==ORACUL) llMessageLinked(LINK_SET,4,"",kMenuTo);
else if (type>1) zhaoMenu(kMenuTo);
}
}
}
link_message(integer iPrim, integer iNum, string sMsg, key kID)
{
if (type==ORACUL && iNum==0 && kID!="ocpause") //oracul power command
{
g_sOraculstring=llGetSubString(sMsg,1,-1); //store the config string for Oracul AO.
g_iAOSwitch=(integer)llGetSubString(sMsg,0,1); //store the AO power state.
}
else if(type>1)
{
if (sMsg=="ZHAO_SITON") g_iSitOverride=TRUE;
else if (sMsg=="ZHAO_SITOFF") g_iSitOverride=FALSE;
else if(kID!="ocpause") //ignore pause commands sent by this script, we want to know what the "correct" state is.
{
if(sMsg=="ZHAO_AOON") g_iAOSwitch=TRUE;
else if(sMsg=="ZHAO_AOOFF")
{
g_iAOSwitch=FALSE;
}
}
}
}
timer()
{
llSetTimerEvent(0);
llListenRemove(g_iMenuHandle);
//inform current menu users of listener timeout.
integer x=llGetListLength(g_lMenuUsers);
while(x)
{
x--;
key tKey=llList2Key(g_lMenuUsers,x);
if(llGetAgentSize(tKey)) llRegionSayTo(tKey,0,"AO Menu timed out, try again."); //avoid IM spam by only notifying those in sim.
}
g_lMenuUsers=[]; //clear list
}
changed(integer change)
{
if(change & CHANGED_OWNER) llResetScript();
}
}

View File

@@ -1,336 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - AO Link //
// version 0.103 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// github.com/OpenCollar/OpenCollarUpdater //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
// BETA VERSION NOTES ---------------------------------------------------
// Medea Destiny's AO interface script for OpenCollar
// This script is intended to be dropped into ZHAO-2, Vista and Oracul
// AOs that are not already compatible with OpenCollar's AO interface.
// Scope: The script tries to identify the AO type by checking script naming. It receives
// the ZHAO ON, ZHAO OFF and ZHAO Menu commands from the collar, and uses link messages to
// send appropriate commands to the AO, depending on the detected collar type. It is not a
// complete replacement of the Sub AO as it cannot allow as complete access to the AO as
// that does, but it should provide most of the functionality while being very easy to add to
// user's pre-existing AOs.
// When the AO is switched on, but the collar sends a command to switch it off, the script
// will take controls and detect for movement. While the avatar is trying to move, the AO will
// told to switch the AO back on again until movement ceases.
// An alternative to this method would be to capture the AO's walk animation and play the animation
// itself as a walk overrider. The disadvantage of that is trying to capture the walk animation
// isn't straightforward, particular when there is more than one walk configured. The disadvantage
// of this method is that it does a lot more AO triggering.
// Comments and bug reports to Medea Destiny, please!
//---------------------------------------------------------------------
integer type;
//If left like this, script will try to determine AO type automatically.
//To force compatibility for a particular type of AO, change to:
// integer type=1; //for Oracul type AOs
// integer type=2; // for ZHAO-II type AOs
// integer type=3; // for Vista type AOs
//----------------------------------------------------------------------
//Integer map for above
integer ORACUL=1;
integer ZHAO=2;
integer VISTA=3;
// OC channel listener for comms from collar
integer g_iAOChannel = -782690;
integer g_iAOListenHandle;
//Menu handler for script's own ZHAO menu
integer g_iMenuHandle;
integer g_iMenuChannel=-23423456; //dummy channel, changed to unique on attach
list g_lMenuUsers; //list of menu users to allow for multiple users of menu
integer g_iMenuTimeout=60;
string g_sOraculstring; //configuration string for Oracul power on/off, 0 prepended for off, 1 prepended for on
//We use these two so that we can return the AO to its previous state. If the AO was already off when the OC tries to switch it off, we shouldn't switch it back on again.
integer g_iAOSwitch=TRUE; //monitor on/off from the AO's own state.
integer g_iOCSwitch=TRUE; //monitor on/off due to collar pauses (FALSE=paused, TRUE=unpaused)
integer g_iSitOverride=TRUE; //monitor AO sit override
integer g_iHasPerm; //Sanity check for permissions. If we have permissions, then script takes controls and restores AO while moving.
determineType() //function to determine AO type.
{
llListenRemove(g_iAOListenHandle);
type=0;
integer x=llGetInventoryNumber(INVENTORY_SCRIPT);
while(x)
{
--x;
string t=llToLower(llGetInventoryName(INVENTORY_SCRIPT,x));
if(~llSubStringIndex(t,"zhao")) //if we find a script with "zhao" in the name.
{
type=ZHAO;
x=0;
llOwnerSay("OC compatibility script configured for Zhao AO. Depending on your AO model, you may sometimes see your AO buttons get out of sync when the AO is accessed via the collar, just toggle a setting to restore it. NOTE! Toggling sit override now is highly recommended, but if you don't know what that means or don't have one, don't worry.");
llMessageLinked(LINK_SET, 0, "ZHAO_AOON", "");
}
else if(~llSubStringIndex(t,"vista")) //if we find a script with "zhao" in the name.
{
type=VISTA;
x=0;
llOwnerSay("OC compatibility script configured for VISTA AO. Support is very experimental since it is unknown how much was changed from ZHAO");
llMessageLinked(LINK_SET, 0, "ZHAO_AOON", "");
}
else if(~llSubStringIndex(t,"oracul")) //if we find a script with "oracul" in the name.
{
type=ORACUL;
x=0;
llOwnerSay("OC compatibility script configured for Oracul AO. IMPORTANT: for proper functioning, you must now switch your AO on (switching it off first if necessary!)");
}
}
if(type==0) llOwnerSay("Cannot identify AO type. The script:"+llGetScriptName()+" is intended to be dropped into a Zhao2 or Oracul AO hud.");
else
{
g_iAOListenHandle=llListen(g_iAOChannel,"","",""); //We identified type, start script listening!
}
}
AOPause()
{
if(g_iAOSwitch)
{
//Note: for ZHAO use LINK_THIS in pause functions, LINK_SET elsewhere. This is because ZHAOs which switch power on buttons by a script in the button reading the link messages are quite common. This avoids toggling the power switch when AO is only paused in those cases.
if(type>1) llMessageLinked(LINK_THIS, 0, "ZHAO_AOOFF", "ocpause");//we use "ocpause" as a dummy key to identify our own linked messages so we can tell when an on or off comes from the AO rather than from the collar standoff, to sync usage.
else if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_SET,0,"0"+g_sOraculstring,"ocpause");
}
g_iOCSwitch=FALSE;
if(g_iAOSwitch==TRUE) llRequestPermissions(llGetOwner(),PERMISSION_TAKE_CONTROLS);//AO is supposed to be on, so we take controls here to allow it to be switched back on temporarily whilst moving.
}
AOUnPause()
{
if(g_iAOSwitch)
{
if(type>1 ) llMessageLinked(LINK_THIS, 0, "ZHAO_AOON", "ocpause");
else if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_SET,0,"1"+g_sOraculstring,"ocpause");
}
g_iOCSwitch=TRUE;
if(llGetPermissionsKey()) llReleaseControls(); //if we took permissions, release them so the AO can do its own thing now.
}
zhaoMenu(key kMenuTo)
{
//script's own menu for some ZHAO features.
//Open listener if no menu users are registered in g_lMenuUsers already, and add
//menu user to list if not already present.
if(!llGetListLength(g_lMenuUsers)) g_iMenuHandle=llListen(g_iMenuChannel,"","","");
if(llListFindList(g_lMenuUsers,[kMenuTo])==-1) g_lMenuUsers+=kMenuTo;
string sSit="AO Sits ON";
if(g_iSitOverride) sSit="AO Sits OFF";
list lButtons=[sSit,"Load Notecard","Done","AO on","AO off","Next Stand"];
llSetTimerEvent(g_iMenuTimeout);
llDialog(kMenuTo,"AO options. Depending on model of AO, some may not work. Use OC Sub AO for more comprehensive control!",lButtons,g_iMenuChannel);
}
default
{
state_entry()
{
if(type==0) determineType();
g_iMenuChannel=-(integer)llFrand(999999)-10000; //randomise menu channel
}
attach(key avatar)
{
if(avatar) //on attach
{
if(type==0) determineType();
g_iMenuChannel=-(integer)llFrand(999999)-10000; //randomise menu channel
}
}
listen(integer iChannel, string sName, key kID, string sMsg)
{
if(iChannel==g_iMenuChannel) // this is for our own limited ZHAO menu.
{
if(sMsg=="Done"||sMsg=="Cancel")
{
integer i=llListFindList(g_lMenuUsers,[kID]);
if(i>-1) g_lMenuUsers=llDeleteSubList(g_lMenuUsers,i,i); //remove user from menu users list.
if(!llGetListLength(g_lMenuUsers)) //remove listener if no menu users left
{
llListenRemove(g_iMenuHandle);
llSetTimerEvent(0);
}
return; // we're done here!
}
else if(sMsg=="Load Notecard") //scan for notecards and provide a dialog to user
{
list lButtons;
integer x=llGetInventoryNumber(INVENTORY_NOTECARD);
while(x)
{
x--;
string t=llGetInventoryName(INVENTORY_NOTECARD,x);
if(llSubStringIndex(llToLower(t),"read me")==-1 && llSubStringIndex(llToLower(t),"help")==-1 && llStringLength(t)<23) lButtons+=t; //we only take notecards without "help" or "read me" in the title and with short enough names to fit on a button.
}
if(llGetListLength(lButtons)>11)
{
llRegionSayTo(kID,0,"Too many notecards found, displaying the first 11"); //ZHAO doesn't bother multi pages, so we won't.
lButtons=llDeleteSubList(lButtons,11,-1);
}
llSetTimerEvent(g_iMenuTimeout);
llDialog(kID,"Pick an AO settings notecard to load, or click Cancel",lButtons+["Cancel"],g_iMenuChannel);
}
else if(sMsg=="AO Sits ON")
{
g_iSitOverride=TRUE; //this will get set by the link message anyway, but set here just in case remenu happens before link message is read.
llMessageLinked(LINK_SET,0,"ZHAO_SITON","");
}
else if(sMsg=="AO Sits OFF")
{
g_iSitOverride=FALSE;
llMessageLinked(LINK_SET,0,"ZHAO_SITOFF","");
}
else if(sMsg=="AO on")
{
if(g_iOCSwitch) llMessageLinked(LINK_SET,0,"ZHAO_AOON",""); // don't switch on AO if we are paused
else llRequestPermissions(llGetOwner(),PERMISSION_TAKE_CONTROLS); //AO was switched on while we are paused, so we take permissions to allow unpausing whilst movement
g_iAOSwitch=TRUE;
}
else if(sMsg=="AO off")
{
llMessageLinked(LINK_SET,0,"ZHAO_AOOFF","");
if(llGetPermissions()) llReleaseControls(); //if AO is off, we don't want to be checking controls.
}
else if(sMsg=="Next Stand")
{
if(type == 2) // ZHAO-II
llMessageLinked(LINK_SET,0,"ZHAO_NEXTSTAND","");
else // VISTA
llMessageLinked(LINK_SET,0,"ZHAO_NEXTPOSE","");
}
//check if sMsg is a notecard picked from Load Notecard menu, and send load command if so.
else if(llGetInventoryType(sMsg)==INVENTORY_NOTECARD) llMessageLinked(LINK_THIS,0,"ZHAO_LOAD|"+sMsg,"");
//resend the menu where it makes sense.
if(sMsg!="Done" && sMsg!="Cancel" && sMsg!="Load Notecard") zhaoMenu(kID);
return;
}
else if(llGetOwnerKey(kID)!=llGetOwner()) return; //reject commands from other sources.
else if (iChannel==g_iAOChannel)
{
if(sMsg=="ZHAO_STANDON") AOUnPause();
else if (sMsg=="ZHAO_STANDOFF") AOPause();
else if (sMsg=="ZHAO_AOOFF")
{
if(type>1) llMessageLinked(LINK_SET,0,"ZHAO_AOOFF","");
else llMessageLinked(LINK_SET,0,"0"+g_sOraculstring,"ocpause");
if(llGetPermissions()) llReleaseControls();
}
else if (sMsg=="ZHAO_AOON")
{
if(g_iOCSwitch)// don't switch on AO if we are paused
{
if(type>1) llMessageLinked(LINK_SET,0,"ZHAO_AOON","");
else llMessageLinked(LINK_SET,0,"1"+g_sOraculstring,"");
}
else llRequestPermissions(llGetOwner(),PERMISSION_TAKE_CONTROLS); //AO was switched on while we are paused, so we take permissions to allow unpausing whilst moving.
g_iAOSwitch=TRUE;
}
else if (llGetSubString(sMsg,0,8)=="ZHAO_MENU")
{
key kMenuTo=(key)llGetSubString(sMsg,10,-1);
if(type==ORACUL) llMessageLinked(LINK_SET,4,"",kMenuTo);
else if (type>1) zhaoMenu(kMenuTo);
}
}
}
link_message(integer iPrim, integer iNum, string sMsg, key kID)
{
if (type==ORACUL && iNum==0 && kID!="ocpause") //oracul power command
{
g_sOraculstring=llGetSubString(sMsg,1,-1); //store the config string for Oracul AO.
g_iAOSwitch=(integer)llGetSubString(sMsg,0,1); //store the AO power state.
if(!g_iAOSwitch && llGetPermissions()) llReleaseControls(); //stop checking controls if taken.
}
else if(type>1)
{
if (sMsg=="ZHAO_SITON") g_iSitOverride=TRUE;
else if (sMsg=="ZHAO_SITOFF") g_iSitOverride=FALSE;
else if(kID!="ocpause") //ignore pause commands sent by this script, we want to know what the "correct" state is.
{
if(sMsg=="ZHAO_AOON") g_iAOSwitch=TRUE;
else if(sMsg=="ZHAO_AOOFF")
{
g_iAOSwitch=FALSE;
if(llGetPermissions()) llReleaseControls(); //stop checking controls if taken.
}
}
}
}
run_time_permissions(integer perms)
{
//we want to monitor for movement while the AO is temporarily off, so we can temporarily switch it back on again while a movement button is held.
if(perms&PERMISSION_TAKE_CONTROLS) llTakeControls(CONTROL_FWD|CONTROL_BACK|CONTROL_LEFT|CONTROL_RIGHT,TRUE,TRUE);
}
control(key id, integer level, integer edge)
{
if(!g_iAOSwitch||g_iOCSwitch) //if AO is turned off or OC hasn't requested a pause, we're not meant to be here.
{
llReleaseControls();
return;
}
if(level&edge) //movement button pressed
{
if(type>1) llMessageLinked(LINK_THIS, 0, "ZHAO_AOON", "ocpause");
else if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_THIS,0,"1"+g_sOraculstring,"ocpause");
}
else if((!level)&edge) //movement button released
{
if(type>1) llMessageLinked(LINK_THIS, 0, "ZHAO_AOOFF", "ocpause");
else if (type==ORACUL && g_sOraculstring!="") llMessageLinked(LINK_THIS,0,"0"+g_sOraculstring,"ocpause");
}
}
timer()
{
llSetTimerEvent(0);
llListenRemove(g_iMenuHandle);
//inform current menu users of listener timeout.
integer x=llGetListLength(g_lMenuUsers);
while(x)
{
x--;
key tKey=llList2Key(g_lMenuUsers,x);
if(llGetAgentSize(tKey)) llRegionSayTo(tKey,0,"AO Menu timed out, try again."); //avoid IM spam by only notifying those in sim.
}
g_lMenuUsers=[]; //clear list
}
changed(integer change)
{
if(change & CHANGED_OWNER) llResetScript();
}
}

View File

@@ -1,162 +0,0 @@
//////////////////////////////////////////////////////////////////////////////////////
// Original development by Joy Stipe for OpenCollar Project //
//////////////////////////////////////////////////////////////////////////////////////
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
//////////////////////////////////////////////////////////////////////////////////////
// Drop this script into an attachment to have that attachment make leash(es) //
// See the first code line for the entry to use in the DESCRIPTION field of //
// links/prims where leash should come from; setting no link descriptsions to //
// that will result in only the prim that contains this script being the //
// emitter. //
//////////////////////////////////////////////////////////////////////////////////////
// the description of a prim that identifies it as where to leash
string sEMITTER = "leashpoint";
integer HUD_CHANNEL;
key kWEARER;
key kTARGET;
list lPARTICLES;
list lLINKS;
debug(string sText)
{
//llOwnerSay(llGetScriptName() + " DEBUG: " + sText);
}
integer GetIsInteger(string in)
{
integer i;
if (llGetSubString(in, 0, 0) == "-")
{
if (llStringLength(in) < 2) return FALSE;
i = 1;
}
list n = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
for (; i < llStringLength(in); i++)
{
if (!~llListFindList(n, [llGetSubString(in, i, i)])) return FALSE;
}
return TRUE;
}
integer GetIsFloat(string in)
{
list check = llParseString2List(in, ["."], []);
if (llGetListLength(check) != 2) return FALSE;
integer i;
for (; i < 2; i++)
{
if (!GetIsInteger(llList2String(check, i))) return FALSE;
}
return TRUE;
}
integer GetIsVec(string in)
{
if (llGetSubString(in, 0, 0) != "<") return FALSE;
if (llGetSubString(in, -1, -1) != ">") return FALSE;
in = llGetSubString(in, 1, -2);
list check = llParseString2List(in, [","], []);
if (llGetListLength(check) != 3) return FALSE;
integer i;
for (; i < 3; i ++)
{
string d = llStringTrim(llList2String(check, i), STRING_TRIM);
if (!GetIsInteger(d) && !GetIsFloat(d)) return FALSE;
}
return TRUE;
}
integer GetIsKey(string in)
{
if ((key)in) return TRUE;
if ((key)in == NULL_KEY) return TRUE;
return FALSE;
}
StartParticles()
{
integer i;
for (; i < llGetListLength(lLINKS); i++)
{
llLinkParticleSystem(llList2Integer(lLINKS, i), []);
llLinkParticleSystem(llList2Integer(lLINKS, i), lPARTICLES);
}
}
StopParticles()
{
integer i;
for (; i < llGetListLength(lLINKS); i++)
{
llLinkParticleSystem(llList2Integer(lLINKS, i), []);
}
kTARGET = NULL_KEY;
lPARTICLES = [];
}
default
{
state_entry()
{
lLINKS = [];
integer i;
for (; i <= llGetNumberOfPrims(); i++)
{
list d = llParseString2List(llList2String(llGetLinkPrimitiveParams(i, [28]), 0), ["~"], []);
if (llList2String(d, 0) == sEMITTER) lLINKS += [i];
}
if (!llGetListLength(lLINKS)) lLINKS = [llGetLinkNumber()];
StopParticles();
llSleep(0.001);
kWEARER = llGetOwner();
HUD_CHANNEL = (integer)("0x" + llGetSubString((string)kWEARER, 2, 7)) + 1111;
if (HUD_CHANNEL > 0) HUD_CHANNEL *= -1;
if (HUD_CHANNEL > -10000) HUD_CHANNEL -= 30000;
llListen(HUD_CHANNEL, "", "", "");
if (kTARGET != NULL_KEY)
{
debug ("entry leash targeted");
StartParticles();
}
}
on_rez(integer iRez)
{
llResetScript();
}
listen(integer c, string n, key k, string s)
{
if (c == HUD_CHANNEL)
{
list parts = llParseString2List(s, ["\\"], []);
key tar = (key)llList2String(parts, 0);
string com = llList2String(parts, 1);
string val = llList2String(parts, 2);
if (com == "LeashUp")
{
kTARGET = tar;
integer i;
parts = llCSV2List(val);
lPARTICLES = [];
for (; i < llGetListLength(parts); i++)
{
string bit = llList2String(parts, i);
if (GetIsInteger(bit)) lPARTICLES += [(integer)bit];
else if (GetIsFloat(bit)) lPARTICLES += [(float)bit];
else if (GetIsVec(bit)) lPARTICLES += [(vector)bit];
else if (GetIsKey(bit)) lPARTICLES += [(key)bit];
else lPARTICLES += [bit];
}
StartParticles();
}
else if (com == "Unleash")
{
StopParticles();
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,231 +0,0 @@
//tempowner demo app
string SUBMENU_BUTTON = "Capture"; // Name of the submenu
string COLLAR_PARENT_MENU = "Apps"; // name of the menu, where the menu plugs in, should be usually Addons. Please do not use the mainmenu anymore
key g_kMenuID; // menu handler
key g_kWearer; // key of the current wearer to reset only on owner changes
string g_sScript="capture_"; // part of script name used for settings
string CTYPE = "collar"; // designer can set in notecard to appropriate word for their item
list g_lTempOwners;
integer g_iCaptureOn=FALSE;
// OpenCollar MESSAGE MAP
// messages for authenticating users
// integer COMMAND_NOAUTH = 0; // for reference, but should usually not be in use inside plugins
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510;
integer COMMAND_RELAY_SAFEWORD = 511;
integer COMMAND_BLACKLIST = 520;
// added for timer so when the sub is locked out they can use postions
integer COMMAND_WEARERLOCKEDOUT = 521;
integer ATTACHMENT_REQUEST = 600;
integer ATTACHMENT_RESPONSE = 601;
integer ATTACHMENT_FORWARD = 610;
integer WEARERLOCKOUT = 620; // turns on and off wearer lockout
// integer SEND_IM = 1000; deprecated. each script should send its own IMs now.
// This is to reduce even the tiny bit of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
// messages for storing and retrieving values from settings store
integer LM_SETTING_SAVE = 2000; // scripts send messages on this channel to have settings saved to settings store
// str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001; // when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002; // the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003; // delete token from settings store
integer LM_SETTING_EMPTY = 2004; // sent by settings script when a token has no value in the settings store
integer LM_SETTING_REQUEST_NOCACHE = 2005;
// messages for creating OC menu structure
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
// messages for RLV commands
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001; // RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002; // RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; // RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer RLV_QUERY = 6102; //query from a script asking if RLV is currently functioning
integer RLV_RESPONSE = 6103; //reply to RLV_QUERY, with "ON" or "OFF" as the message
// messages for poses and couple anims
integer ANIM_START = 7000; // send this with the name of an anim in the string part of the message to play the anim
integer ANIM_STOP = 7001; // send this with the name of an anim in the string part of the message to stop the anim
integer CPLANIM_PERMREQUEST = 7002; // id should be av's key, str should be cmd name "hug", "kiss", etc
integer CPLANIM_PERMRESPONSE = 7003; // str should be "1" for got perms or "0" for not. id should be av's key
integer CPLANIM_START = 7004; // str should be valid anim name. id should be av
integer CPLANIM_STOP = 7005; // str should be valid anim name. id should be av
// messages to the dialog helper
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer FIND_AGENT = -9005; // to look for agent(s) in region with a (optional) search string
key REQUEST_KEY;
integer TIMER_EVENT = -10000; // str = "start" or "end". For start, either "online" or "realtime".
integer UPDATE = 10001; // for child prim scripts (currently none in 3.8, thanks to LSL new functions)
// For other things that want to manage showing/hiding keys.
integer KEY_VISIBLE = -10100;
integer KEY_INVISIBLE = -10100;
integer COMMAND_PARTICLE = 20000;
integer COMMAND_LEASH_SENSOR = 20001;
//chain systems
integer LOCKMEISTER = -8888;
integer LOCKGUARD = -9119;
//rlv relay chan
integer RLV_RELAY_CHANNEL = -1812221819;
// menu option to go one step back in menustructure
string UPMENU = "BACK"; // when your menu hears this, give the parent menu
//Debug(string sMsg) { llOwnerSay(llGetScriptName() + " [DEBUG]: " + sMsg);}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer){
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
return kID;
}
DoMenu(key keyID, integer iAuth) {
string sPrompt = "\nCapture";
list lMyButtons = ["Reset"];
//fill in your button list and additional prompt here
if (g_iCaptureOn){
lMyButtons += "OFF";
} else {
lMyButtons += "ON";
}
// and dispay the menu
g_kMenuID = Dialog(keyID, "\n\nCapture\n", lMyButtons, [UPMENU], 0, iAuth);
}
integer UserCommand(integer iNum, string sStr, key kID, integer remenu) {
sStr=llToLower(sStr);
//Debug("Got user command "+sStr);
if (!(iNum >= COMMAND_OWNER && iNum <= COMMAND_EVERYONE)) {
return FALSE;
} else if (sStr == "capture" || sStr == "menu capture") {
// an authorized user requested the plugin menu by typing the menus chat command
DoMenu(kID, iNum);
} else if (sStr == "capture you" && g_iCaptureOn) {
//add kID to the temp owner list, if they're not already there
if (g_kWearer != llGetOwnerKey(kID) && iNum != COMMAND_OWNER ) { //owners, tempowners and wearer can't be tempowner
Notify(kID,llKey2Name(g_kWearer)+" has been captured by "+llKey2Name(kID),TRUE);
g_lTempOwners+=[kID,llKey2Name(kID)];
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "auth_tempowner="+llDumpList2String(g_lTempOwners,","), "");
llMessageLinked(LINK_SET, LM_SETTING_RESPONSE, "auth_tempowner="+llDumpList2String(g_lTempOwners,","), "");
} else {
Notify(kID,llKey2Name(g_kWearer)+" cannot be captured by "+llKey2Name(kID),TRUE);
}
} else if (sStr == "capture reset" && iNum==COMMAND_OWNER ) {
Notify(kID,"Temp owners list has been purged.",TRUE);
g_lTempOwners=[];
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "auth_tempowner", "");
llMessageLinked(LINK_SET, LM_SETTING_EMPTY, "auth_tempowner", "");
} else if (sStr == "capture on" && iNum==COMMAND_OWNER && ! g_iCaptureOn) {
Notify(kID,"Capture game is ON!",TRUE);
g_iCaptureOn=TRUE;
llWhisper(0,"You can own "+llKey2Name(g_kWearer)+" for a while by sending the command 'capture you' to their collar, if you know their prefix");
} else if (sStr == "capture off" && iNum==COMMAND_OWNER && g_iCaptureOn) {
Notify(kID,"Capture game is OFF!",TRUE);
g_iCaptureOn=FALSE;
}
if (remenu) {
DoMenu(kID, iNum);
}
return TRUE;
}
default {
state_entry()
{
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
g_kWearer = llGetOwner();
}
on_rez(integer iParam) {
if (llGetOwner()!=g_kWearer) llResetScript();
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
if (iNum == MENUNAME_REQUEST && sStr == COLLAR_PARENT_MENU) {
// our parent menu requested to receive buttons, so send ours
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, COLLAR_PARENT_MENU + "|" + SUBMENU_BUTTON, "");
} else if (iNum == LM_SETTING_RESPONSE) {
// response from setting store have been received, parse the answer
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
// and check if any values for use are received
if (sToken == "auth_tempowner") {
list lTempOwners = llParseString2List(sValue, [","], []); //store tempowners list
}
else if (sToken == "Global_CType") CTYPE = sValue;
}
else if (UserCommand(iNum, sStr, kID, FALSE)) {
// do nothing more if TRUE
}
else if (iNum == COMMAND_SAFEWORD) {
// Safeword has been received, release any restricitions that should be released
Notify(g_kWearer,"Capture game is OFF!",TRUE);
g_iCaptureOn=FALSE;
Notify(g_kWearer,"Temp owners list has been purged.",TRUE);
g_lTempOwners=[];
llMessageLinked(LINK_SET, LM_SETTING_EMPTY, "auth_tempowner", "");
}
else if (iNum == DIALOG_RESPONSE) {
if (kID == g_kMenuID) {
//got a menu response meant for us, extract the values
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0); // avatar using the menu
string sMessage = llList2String(lMenuParams, 1); // button label
integer iPage = (integer)llList2String(lMenuParams, 2); // menu page
integer iAuth = (integer)llList2String(lMenuParams, 3); // auth level of avatar
// request to switch to parent menu
if (sMessage == UPMENU) {
//give av the parent menu
llMessageLinked(LINK_THIS, iAuth, "menu "+COLLAR_PARENT_MENU, kAv);
} else {
UserCommand(iAuth, "capture "+sMessage, kAv, TRUE);
}
}
}
}
}

View File

@@ -1,374 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - glow //
// version 3.995 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// github.com/OpenCollar/OpenCollarUpdater //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sParentMenu = "Appearance";
string g_sSubMenu = "Glow";
string g_sIgnoreType = "noglow" ; // or "nocolor" or "noglow" if you want use alternate prims descriptions;
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
//integer SEND_IM = 1000; deprecated. each script should send its own IMs now. This is to reduce even the tiny bt of lag caused by having IM slave scripts
//integer POPUP_HELP = 1001;
//integer LM_SETTING_SAVE = 2000;
//integer LM_SETTING_REQUEST = 2001;
integer LM_SETTING_RESPONSE = 2002;
//integer LM_SETTING_DELETE = 2003;
//integer LM_SETTING_EMPTY = 2004;
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer TOUCH_REQUEST = -9500;
integer TOUCH_CANCEL = -9501;
integer TOUCH_RESPONSE = -9502;
integer TOUCH_EXPIRE = -9503;
string CTYPE = "collar";
string UPMENU = "BACK";
list g_lGlowButtons = ["0.00","+0.01","-0.01","0.05","+0.05","-0.05","0.10","+0.10","-0.10","0.20","0.50"];
string ALL = "All" ;
list g_lElements;
list g_lButtons;
list g_lMenuIDs;
key g_kTouchID;
integer g_iAppLock = FALSE;
string g_sAppLockToken = "Appearance_Lock";
string g_sCurrentElement = "";
float g_fCurrentGlow ;
key g_kWearer;
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_THIS, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
return kID;
}
key TouchRequest(key kRCPT, integer iTouchStart, integer iTouchEnd, integer iAuth)
{
key kID = llGenerateKey();
integer iFlags = 0;
if (iTouchStart) iFlags = iFlags | 0x01;
if (iTouchEnd) iFlags = iFlags | 0x02;
llMessageLinked(LINK_THIS, TOUCH_REQUEST, (string)kRCPT + "|" + (string)iFlags + "|" + (string)iAuth, kID);
return kID;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
GlowMenu(key kAv, integer iAuth)
{
g_fCurrentGlow = GetElementGlow(g_sCurrentElement);
string sPrompt = "Change Glow for visible element only.\n";
sPrompt += "\nElement: " + g_sCurrentElement;
sPrompt += "\nGlow: " + llGetSubString((string)g_fCurrentGlow,0,3);
g_lMenuIDs+=[Dialog(kAv, sPrompt, g_lGlowButtons, [UPMENU],0, iAuth)];
}
ElementMenu(key kAv, integer iAuth)
{
string sPrompt = "Pick which part of the "+CTYPE+" you would like to change glow.\n\nChoose *Touch* if you want to select the part by directly clicking on the "+CTYPE+".";
sPrompt += "\n\nOnly visible elements!";
g_lButtons = [ALL] + llListSort(g_lElements, 1, TRUE) ;
g_lMenuIDs+=[Dialog(kAv, sPrompt, g_lButtons, ["*Touch*", UPMENU],0, iAuth)];
}
string ElementType(integer iLinkNumber)
{
// check for invisible prim
list params = llGetLinkPrimitiveParams(iLinkNumber, [PRIM_COLOR, ALL_SIDES]);
if (llList2Float(params,1) == 0 ) return g_sIgnoreType; // prim is invisible
//string sDesc = (string)llGetObjectDetails(llGetLinkKey(iLinkNumber), [OBJECT_DESC]);
string sDesc = llList2String(llGetLinkPrimitiveParams(iLinkNumber, [PRIM_DESC]), 0);
//each prim should have <elementname> in its description, plus "noshiny, if you want the prim to
//not appear in the shiny menu
list lParams = llParseString2List(sDesc, ["~"], []);
if ((~(integer)llListFindList(lParams, [g_sIgnoreType])) || sDesc == "" || sDesc == " " || sDesc == "(No Description)")
return g_sIgnoreType;
else return llList2String(lParams, 0);
}
BuildElementList()
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
//root prim is 1, so start at 2
for (n = 2; n <= iLinkCount; n++)
{
string sElement = ElementType(n);
if (!(~llListFindList(g_lElements, [sElement])) && sElement != g_sIgnoreType)
{
g_lElements += [sElement];
}
}
}
SetAllGlow(float fGlow)
{
integer elements = llGetListLength(g_lElements) ;
integer index = 0 ;
do
{
string sElement = llList2String(g_lElements, index);
SetElementGlow(sElement, fGlow);
index++ ;
}while (index < elements ) ;
}
SetElementGlow(string sElement, float fGlow)
{
integer n;
integer iLinkCount = llGetNumberOfPrims();
for (n = 2; n <= iLinkCount; n++)
{
if (ElementType(n) == sElement) llSetLinkPrimitiveParamsFast(n, [PRIM_GLOW, ALL_SIDES, fGlow]);
}
}
float GetElementGlow(string sElement)
{
integer n = 1;
integer iLinkCount = llGetNumberOfPrims();
//root prim is 1, so start at 2
do
{
n++;
} while (ElementType(n) != sElement && n < iLinkCount);
list params = llGetLinkPrimitiveParams(n, [PRIM_GLOW, ALL_SIDES]);
return llList2Float(params, 0) ;
}
// returns TRUE if eligible (AUTHED link message number)
integer UserCommand(integer iNum, string sStr, key kID) // here iNum: auth value, sStr: user command, kID: avatar id
{
if (iNum > COMMAND_WEARER || iNum < COMMAND_OWNER) return FALSE; // sanity check
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
if (sStr == "menu "+ g_sSubMenu || sStr == "glow")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the glow.", FALSE);
llMessageLinked(LINK_THIS, iNum, "menu "+g_sParentMenu, kID);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the "+CTYPE+" is locked. You cannot access this menu now!", FALSE);
llMessageLinked(LINK_THIS, iNum, "menu "+g_sParentMenu, kID);
}
else
{
g_sCurrentElement = "";
ElementMenu(kID, iNum);
}
}
else if (sCommand == "setglow")
{
if (kID!=g_kWearer && iNum!=COMMAND_OWNER)
{
Notify(kID,"You are not allowed to change the glow.", FALSE);
}
else if (g_iAppLock)
{
Notify(kID,"The appearance of the "+CTYPE+" is locked. You cannot access this menu now!", FALSE);
}
else
{
string sElement = llList2String(lParams, 1);
float fGlow = (float)llList2String(lParams, 2);
if (sElement == ALL || sElement == "all") SetAllGlow(fGlow);
else SetElementGlow(sElement, fGlow);
}
}
else if (sCommand == "lockappearance")
{
if (iNum == COMMAND_OWNER) g_iAppLock = llList2Integer(lParams, 1);
}
return TRUE;
}
// Get from Group_Token=Value , 0=Group, 1=Token, 2=Value
string SplitTokenValue(string in, integer slot)
{
string out ;
if (slot==0) out = llGetSubString(in, 0, llSubStringIndex(in, "_") );
else if (slot==1) out = llGetSubString(in, llSubStringIndex(in, "_")+1, llSubStringIndex(in, "=")-1);
else if (slot==2) out = llGetSubString(in, llSubStringIndex(in, "=")+1, -1);
return out ;
}
default
{
on_rez(integer iParam)
{
llResetScript();
}
state_entry()
{
g_kWearer = llGetOwner();
BuildElementList();
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (UserCommand(iNum, sStr, kID)) return;
else if (iNum == LM_SETTING_RESPONSE)
{
list params = llParseString2List(sStr,["="],[]);
string sToken = llList2String(params, 0);
string sValue = llList2String(params, 1);
if (sToken == g_sAppLockToken) g_iAppLock = (integer)sValue;
else if (sToken == "Global_CType") CTYPE = sValue;
}
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == DIALOG_RESPONSE)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
g_lMenuIDs=llDeleteSubList(g_lMenuIDs,iMenuIndex,iMenuIndex);
//got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (sMessage == UPMENU)
{
if (g_sCurrentElement == "")
{
//main menu
llMessageLinked(LINK_THIS, iAuth, "menu "+g_sParentMenu, kAv);
}
else
{
g_sCurrentElement = "" ;
ElementMenu(kAv, iAuth);
}
}
else if (sMessage == "*Touch*")
{
Notify(kAv, "Please touch the part of the collar you want to shiny.", FALSE);
g_kTouchID = TouchRequest(kAv, TRUE, FALSE, iAuth);
}
else if (g_sCurrentElement == "")
{
//we just got the element name
g_sCurrentElement = sMessage;
GlowMenu(kAv, iAuth);
}
else if (~(integer)llListFindList(g_lGlowButtons, [sMessage]))
{
if (sMessage == "0.00") g_fCurrentGlow = 0.0 ;
else if (sMessage == "0.05") g_fCurrentGlow = 0.05 ;
else if (sMessage == "0.10") g_fCurrentGlow = 0.10 ;
else if (sMessage == "0.20") g_fCurrentGlow = 0.20 ;
else if (sMessage == "0.50") g_fCurrentGlow = 0.50 ;
else if (sMessage == "+0.01") g_fCurrentGlow += 0.01 ;
else if (sMessage == "+0.05") g_fCurrentGlow += 0.05 ;
else if (sMessage == "+0.10") g_fCurrentGlow += 0.10 ;
else if (sMessage == "-0.01") g_fCurrentGlow -= 0.01 ;
else if (sMessage == "-0.05") g_fCurrentGlow -= 0.05 ;
else if (sMessage == "-0.10") g_fCurrentGlow -= 0.10 ;
if (g_fCurrentGlow < 0.0) g_fCurrentGlow = 0.0 ;
if (g_fCurrentGlow > 1.0) g_fCurrentGlow = 1.0 ;
if(g_sCurrentElement == ALL) SetAllGlow(g_fCurrentGlow);
else SetElementGlow(g_sCurrentElement, g_fCurrentGlow);
GlowMenu(kAv, iAuth);
}
}
}
else if (iNum == DIALOG_TIMEOUT)
{
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (iMenuIndex != -1)
{
g_lMenuIDs=llDeleteSubList(g_lMenuIDs,iMenuIndex,iMenuIndex);
}
}
else if (iNum == TOUCH_RESPONSE)
{
if (kID == g_kTouchID)
{
list lParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lParams, 0);
integer iAuth = (integer)llList2String(lParams, 1);
integer iLinkNumber = (integer)llList2String(lParams, 3);
string sElement = ElementType(iLinkNumber);
if (sElement != g_sIgnoreType)
{
g_sCurrentElement = sElement;
GlowMenu(kAv, iAuth);
Notify(kAv, "You selected \""+sElement+"\".", FALSE);
}
else
{
Notify(kAv, "You selected a prim which is not shiny. You can try again.", FALSE);
ElementMenu(kAv, iAuth);
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,337 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - outfits //
// version 3.980 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// github.com/OpenCollar/OpenCollarUpdater //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string SUBMENU_BUTTON = "Outfits"; // Name of the submenu
string COLLAR_PARENT_MENU = "Apps"; // name of the menu, where the menu plugs in, should be usually Addons. Please do not use the mainmenu anymore
key g_kMenuID; // menu handler
key g_kFolderMenuID; // folder menu
key g_kRemAttachedMenuID; // attachment remove menu
key g_kMultipleMatchMenuID;
key g_kWearer;
key g_kMenuClicker;
integer g_iListener; // key of the current wearer to reset only on owner changes
string g_sScript="Outfits_"; // part of script name used for settings
string CTYPE = "collar"; // designer can set in notecard to appropriate word for their item
integer g_iFolderRLV = 98745923;
integer g_iFolderRLVSearch = 98745925;
integer g_iTimeOut = 30; //timeout on viewer response commands
integer g_iRlvOn = FALSE;
integer g_iRlvaOn = FALSE;
string g_sCurrentPath;
string g_sPathPrefix = ".outfits"; //we look for outfits in here
// OpenCollar MESSAGE MAP
// messages for authenticating users
// integer COMMAND_NOAUTH = 0; // for reference, but should usually not be in use inside plugins
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510;
integer COMMAND_RELAY_SAFEWORD = 511;
integer COMMAND_BLACKLIST = 520;
integer WEARERLOCKOUT = 620; // turns on and off wearer lockout
// messages for storing and retrieving values from settings store
integer LM_SETTING_SAVE = 2000; // scripts send messages on this channel to have settings saved to settings store
// str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001; // when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002; // the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003; // delete token from settings store
integer LM_SETTING_EMPTY = 2004; // sent by settings script when a token has no value in the settings store
integer LM_SETTING_REQUEST_NOCACHE = 2005;
// messages for creating OC menu structure
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
// messages for RLV commands
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001; // RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002; // RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; // RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer RLV_QUERY = 6102; //query from a script asking if RLV is currently functioning
integer RLV_RESPONSE = 6103; //reply to RLV_QUERY, with "ON" or "OFF" as the message
integer RLVA_VERSION = 6004;
// messages to the dialog helper
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer FIND_AGENT = -9005; // to look for agent(s) in region with a (optional) search string
key REQUEST_KEY;
integer TIMER_EVENT = -10000; // str = "start" or "end". For start, either "online" or "realtime".
integer UPDATE = 10001; // for child prim scripts (currently none in 3.8, thanks to LSL new functions)
// For other things that want to manage showing/hiding keys.
integer KEY_VISIBLE = -10100;
integer KEY_INVISIBLE = -10100;
integer COMMAND_PARTICLE = 20000;
integer COMMAND_LEASH_SENSOR = 20001;
//chain systems
integer LOCKMEISTER = -8888;
integer LOCKGUARD = -9119;
//rlv relay chan
integer RLV_RELAY_CHANNEL = -1812221819;
// menu option to go one step back in menustructure
string UPMENU = "BACK"; // when your menu hears this, give the parent menu
string BACKMENU = "⏎";
//Debug(string sMsg) { llOwnerSay(llGetScriptName() + " [DEBUG]: " + sMsg);}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer){
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
return kID;
}
DoMenu(key keyID, integer iAuth) {
list lMyButtons;
string sPrompt = "\nOutfits ";
if (!g_iRlvOn) {
sPrompt += "\nYou need to enable RLV to use this plugin";
}
else {
lMyButtons += ["Browse"];
}
g_kMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
}
FolderMenu(key keyID, integer iAuth,string sFolders) {
string sPrompt = "\nOutfits ";
sPrompt = "\n\nCurrent Path = "+g_sCurrentPath;
list lMyButtons;
lMyButtons += llParseString2List(sFolders,[","],[""]);
// and dispay the menu
if (g_sCurrentPath == g_sPathPrefix+"/") { //If we're at root, don't bother with BACKMENU
g_kFolderMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
} else {
if (sFolders == "") {
g_kFolderMenuID = Dialog(keyID, sPrompt, lMyButtons, ["WEAR",UPMENU,BACKMENU], 0, iAuth);
} else {
g_kFolderMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU,BACKMENU], 0, iAuth);
}
}
}
RemAttached(key keyID, integer iAuth,string sFolders) {
string sPrompt = "\nOutfits ";
sPrompt = "\n\nRemove Attachment by Name";
list lMyButtons;
lMyButtons += llParseString2List(sFolders,[","],[""]);
// and dispay the menu
g_kRemAttachedMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
}
integer UserCommand(integer iNum, string sStr, key kID, integer remenu) {
sStr=llToLower(sStr);
if (!(iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)) {
return FALSE;
} else if (sStr == "outfits" || sStr == "menu outfits") {
// an authorized user requested the plugin menu by typing the menus chat command
DoMenu(kID, iNum);
} else if (llSubStringIndex(sStr,"outfits ") == 0) {
sStr = llDeleteSubString(sStr,0,llStringLength("outfits ")-1);
if (sStr) { //we have a folder to try find...
llSetTimerEvent(g_iTimeOut);
g_iListener = llListen(g_iFolderRLVSearch, "", llGetOwner(), "");
g_kMenuClicker = kID;
if (g_iRlvaOn) {
llOwnerSay("@findfolders:"+sStr+"="+(string)g_iFolderRLVSearch);
}
else {
llOwnerSay("@findfolder:"+sStr+"="+(string)g_iFolderRLVSearch);
}
}
}
if (remenu) {
DoMenu(kID, iNum);
}
return TRUE;
}
string WearFolder (string sStr) { //function grabs g_sCurrentPath, and splits out the final directory path, attaching .alwaysadd directories and passes RLV commands
string sOutput;
string sPrePath;
list lTempSplit = llParseString2List(sStr,["/"],[]);
lTempSplit = llList2List(lTempSplit,0,llGetListLength(lTempSplit) -2);
sPrePath = llDumpList2String(lTempSplit,"/");
if (g_sPathPrefix + "/" == sPrePath) { //
sOutput = "@remoutfit=force,detach=force,attachallover:"+sStr+"=force,attachallover:"+g_sPathPrefix+"/.alwaysadd/=force";
}
else {
sOutput = "@remoutfit=force,detach=force,attachallover:"+sStr+"=force,attachallover:"+g_sPathPrefix+"/.alwaysadd/=force,attachallover:"+sPrePath+"/.alwaysadd/=force";
}
// llOwnerSay("rlv:"+sOutput);
return sOutput;
}
default {
state_entry()
{
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
g_kWearer = llGetOwner();
}
timer()
{
llListenRemove(g_iListener);
llSetTimerEvent(0.0);
}
on_rez(integer iParam) {
if (llGetOwner()!=g_kWearer) llResetScript();
}
listen(integer iChan, string sName, key kID, string sMsg) {
//llListenRemove(g_iListener);
llSetTimerEvent(0.0);
//llOwnerSay((string)iChan+"|"+sName+"|"+(string)kID+"|"+sMsg);
if (iChan == g_iFolderRLV) { //We got some folders to process
FolderMenu(g_kMenuClicker,COMMAND_OWNER,sMsg); //we use g_kMenuClicker to respond to the person who asked for the menu
}
else if (iChan == g_iFolderRLVSearch) {
if (sMsg == "") {
Notify(kID,"That outfit cannot be found in #RLV/"+g_sPathPrefix,FALSE);
} else { // we got a match
if (llSubStringIndex(sMsg,",") < 0) {
llOwnerSay(WearFolder(sMsg));
g_sCurrentPath = sMsg;
//llOwnerSay("@attachallover:"+g_sPathPrefix+"/.alwaysadd/=force");
Notify(kID,"Loading outfit #RLV/"+sMsg,FALSE);
} else {
string sPrompt = "Multiple folders found. Please select from the following list...";
list lFolderMatches = llParseString2List(sMsg,[","],[]);
g_kMultipleMatchMenuID = Dialog(g_kMenuClicker, sPrompt, lFolderMatches, [UPMENU], 0, COMMAND_OWNER);
}
}
}
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
// llOwnerSay(sStr+" | "+(string)iNum);
if (iNum == MENUNAME_REQUEST && sStr == COLLAR_PARENT_MENU) {
// our parent menu requested to receive buttons, so send ours
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, COLLAR_PARENT_MENU + "|" + SUBMENU_BUTTON, "");
}
/* else if (iNum == LM_SETTING_RESPONSE) {
// response from setting store have been received, parse the answer
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
// and check if any values for use are received
// if (sToken == "test") {
// if (sValue == (string)1) { g_iCaptureOn = TRUE; }
// }
if (sToken == "Global_CType") CTYPE = sValue;
}
*/
else if (iNum == RLV_ON) {
g_iRlvOn = TRUE;
}
else if (iNum == RLVA_VERSION) {
g_iRlvaOn = TRUE;
}
else if (iNum == COMMAND_SAFEWORD) {
// Safeword has been received, release any restricitions that should be released
}
else if (UserCommand(iNum, sStr, kID, FALSE)) {
// do nothing more if TRUE
}
else if (iNum == DIALOG_RESPONSE) {
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0); // avatar using the menu
string sMessage = llList2String(lMenuParams, 1); // button label
integer iPage = (integer)llList2String(lMenuParams, 2); // menu page
integer iAuth = (integer)llList2String(lMenuParams, 3); // auth level of avatar
if (kID == g_kMenuID) {
//got a menu response meant for us, extract the values
// request to switch to parent menu
if (sMessage == UPMENU) {
//give av the parent menu
llMessageLinked(LINK_THIS, iAuth, "menu "+COLLAR_PARENT_MENU, kAv);
}
else if (sMessage == "Browse") {
g_kMenuClicker = kAv; //on our listen response, we need to know who to pop a dialog for
g_sCurrentPath = g_sPathPrefix + "/";
llSetTimerEvent(g_iTimeOut);
g_iListener = llListen(g_iFolderRLV, "", llGetOwner(), "");
llOwnerSay("@getinv:"+g_sCurrentPath+"="+(string)g_iFolderRLV);
}
}
if (kID == g_kFolderMenuID || kID == g_kMultipleMatchMenuID) {
g_kMenuClicker = kAv;
if (sMessage == UPMENU) {
//give av the parent menu
llMessageLinked(LINK_THIS, iAuth, "menu "+SUBMENU_BUTTON, kAv);
}
else if (sMessage == BACKMENU) {
list lTempSplit = llParseString2List(g_sCurrentPath,["/"],[]);
lTempSplit = llList2List(lTempSplit,0,llGetListLength(lTempSplit) -2);
g_sCurrentPath = llDumpList2String(lTempSplit,"/") + "/";
llSetTimerEvent(g_iTimeOut);
g_iListener = llListen(g_iFolderRLV, "", llGetOwner(), "");
llOwnerSay("@getinv:"+g_sCurrentPath+"="+(string)g_iFolderRLV);
}
else if (sMessage == "WEAR") {
llOwnerSay(WearFolder(g_sCurrentPath));
//llOwnerSay("@attachallover:"+g_sPathPrefix+"/.alwaysadd/=force");
}
else if (sMessage != "") {
g_sCurrentPath += sMessage + "/";
if (kID == g_kMultipleMatchMenuID) g_sCurrentPath = sMessage;
llSetTimerEvent(g_iTimeOut);
g_iListener = llListen(g_iFolderRLV, "", llGetOwner(), "");
llOwnerSay("@getinv:"+g_sCurrentPath+"="+(string)g_iFolderRLV);
}
}
}
}
}

View File

@@ -1,398 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - paint //
// version 3.980 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// github.com/OpenCollar/OpenCollarUpdater //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string g_sSubMenu = "Paint";
string g_sParentMenu = "Main";
string CTYPE = "collar";
key g_kWearer;
string UPMENU = "BACK";
integer COMMAND_OWNER = 500;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
//script specific variables
list g_lMenuIDs;//3-strided list of avkey, dialogid, menuname
integer g_iMenuStride = 3;
integer g_iAllAlpha = 1 ; //whole collar hide state
list g_lElementTypes; //list of element types
list g_lElementTypesUnHideable; //llist of hideable state for g_lElementTypes
list g_lAlphaSettings; //list of currently hidden state of g_lElementTypes
list g_lElementTypesLower; //lower case names, for chat command access
list g_lTexturesCard;
key g_iTexturesCardId;
key g_kNotecardReadRequest;
string g_sTexturesNotecardName="~paint";
integer g_iTexturesNotecardLine=0;
//standard OC functions
Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth, string menuType) {
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
integer iMenuIndex = llListFindList(g_lMenuIDs, [kRCPT]);
list lAddMe = [kRCPT, kID, menuType];
if (iMenuIndex == -1) g_lMenuIDs += lAddMe;
else g_lMenuIDs = llListReplaceList(g_lMenuIDs, lAddMe, iMenuIndex, iMenuIndex + g_iMenuStride - 1);
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer) {
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
Debug(string sStr){llOwnerSay(llGetScriptName() + ": " + sStr);}
//menu generators
ElementsMenu(key kAv, integer iAuth) {
list lButtons;
if (g_iAllAlpha) lButtons=["Invisible"];
else lButtons=["Visible"];
integer numElementTypes=llGetListLength(g_lElementTypes);
while (numElementTypes--) lButtons += llList2String(g_lElementTypes,numElementTypes);
Dialog(kAv, "\nSelect an element from the list", lButtons, [UPMENU],0, iAuth, "ElementsMenu");
}
ElementMenu(key kAv, integer iAuth, string sMessage){
list lButtons;
integer elementIndex=llListFindList(g_lElementTypesLower,[sMessage]);
if (! llList2Integer(g_lElementTypesUnHideable,elementIndex)){
if (llList2Integer(g_lAlphaSettings,elementIndex)) lButtons=["Invisible"];
else lButtons=["Visible"];
}
integer numFields=llGetListLength(g_lTexturesCard);
while(numFields){
numFields -= 4;
string elementType=llToLower(llList2String(g_lTexturesCard,(numFields)+0));
if (elementType==llToLower(sMessage)) {
lButtons += llList2String(g_lTexturesCard,(numFields)+1);
}
}
Dialog(kAv, "\nSelect a style for the '"+llList2String(g_lElementTypes,elementIndex)+"' elements", lButtons, [UPMENU], 0, iAuth, "element "+sMessage);
}
//script specific functions
buildElementTypes(){ //builds three lists, one of element names, matching one of nohide status for the element group, and a matching currentlyHidden list
g_lElementTypes=[];
g_lElementTypesLower=[];
g_lElementTypesUnHideable=[];
g_lAlphaSettings=[];
integer iLinkCount = llGetNumberOfPrims();
while (iLinkCount-- > 2) {
string description=llStringTrim(llList2String(llGetLinkPrimitiveParams(iLinkCount,[PRIM_DESC]),0),STRING_TRIM);
list descriptionParts=llParseStringKeepNulls(description,["~"],[]);
string type=llList2String(descriptionParts,0);
if ( (llListFindList(descriptionParts,["nocolor"])==-1 || llListFindList(descriptionParts,["notexture"])==-1 || llListFindList(descriptionParts,["nohide"])==-1 ) && ( type != "" || type != "(No Description)") ) {
integer elementIndex=llListFindList(g_lElementTypes,[type]);
if (! ~elementIndex ){ //new element type, make list entries and set element index
elementIndex=llGetListLength(g_lElementTypes);
g_lElementTypes+=type;
g_lElementTypesLower+=llToLower(type);
g_lElementTypesUnHideable+=TRUE;
g_lAlphaSettings+=TRUE;
}
if (llList2Integer(g_lElementTypesUnHideable,elementIndex)){ //all of this element type so far have been unhideable. If this one is too, the element stays unhideable
if (! ~llListFindList(descriptionParts, ["nohide"])){ //this element is hideable, therefore the element type as a whole is not unhideable
g_lElementTypesUnHideable=llListReplaceList(g_lElementTypesUnHideable,[FALSE],elementIndex,elementIndex);
}
}
}
}
}
setElementStyle(string elementType,string sMessage){
//Debug("Setting style of "+elementType+" to "+sMessage);
integer styleIndex=llListFindList(g_lTexturesCard,[elementType,sMessage]);
//Debug("styleIndex "+(string)styleIndex);
if (~styleIndex){
key textureKey=llList2Key(g_lTexturesCard,styleIndex+2);
vector color=(vector)llList2String(g_lTexturesCard,styleIndex+3);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "texture_"+elementType + "=" + (string)sMessage, "");
integer numElements = llGetNumberOfPrims();
while (numElements-- > 2) {
string sDesc = llList2String(llGetLinkPrimitiveParams(numElements, [PRIM_DESC]),0);
list descriptionParts = llParseString2List(sDesc, ["~"], []);
string thisElementType=llList2String(descriptionParts, 0);
if (elementType==llToLower(thisElementType)) { //if this element is the type we're looking for
//calculate and set new texture key
list params ;
if ((key)textureKey){
if (! ~llListFindList(descriptionParts,["notexture"])){
//Debug("Setting texture to "+(string)textureKey);
params += [PRIM_TEXTURE,ALL_SIDES,textureKey, <1.0,1.0,1.0>, <0.0,0.0,0.0>, 0.0] ;
}
}
if (! ~llListFindList(descriptionParts, ["nocolor"]) ){
list oldColourParams=llGetLinkPrimitiveParams(numElements,[PRIM_COLOR,ALL_SIDES]); //get current prim params
float alpha=llList2Float(oldColourParams,1); //calculate the old alpha to re-apply
params += [PRIM_COLOR, ALL_SIDES, color, alpha];
}
if (llGetListLength(params) > 3) llSetLinkPrimitiveParamsFast(numElements, params);
}
}
} else {
//Debug("Can't do "+elementType+" to "+sMessage);
}
}
ApplyElementAlpha(string element_to_set, integer iAlpha) {
integer iLinkCount = llGetNumberOfPrims();
//Debug(element_to_set+" "+ (string)iAlpha);
while (iLinkCount-- > 2) {
string sDesc = llList2String(llGetLinkPrimitiveParams(iLinkCount, [PRIM_DESC]),0);
list descriptionParts = llParseString2List(sDesc, ["~"], []);
string elementType=llToLower(llList2String(descriptionParts, 0));
if (elementType==llToLower(element_to_set) || element_to_set=="all"){ //if this element is the type we want to set, or we're hiding everything
//Debug("Changing "+element_to_set);
if (! ~llListFindList(descriptionParts, ["nohide"]) || element_to_set=="all"){ //unless the element is set to nohide, or we're hiding everything
integer elementTypeIndex=llListFindList(g_lElementTypesLower, [elementType]);
integer elementTypeVisible; //flag to say if this element type is currently visible
if (~ elementTypeIndex){
elementTypeVisible=llList2Integer(g_lAlphaSettings,elementTypeIndex);
}
if (iAlpha && g_iAllAlpha && (elementTypeVisible || ~llListFindList(descriptionParts, ["nohide"]))){ //its a show, and collar is globally visible, and this element type is set visible
//Debug("Global visible, so set this element to visible");
llSetLinkAlpha(iLinkCount, (float)iAlpha, ALL_SIDES); //set element visibility
} else { //its a hide, or collar is globally hidden, or this item is set to be hidden
//Debug("Hide this element");
llSetLinkAlpha(iLinkCount, 0.0, ALL_SIDES); //set element visibility
}
} else {
//Debug("Element set to nohide, and we're not setting global visible");
}
} else {
//Debug (elementType + "!="+llToLower(element_to_set));
}
}
}
SetElementAlpha(string element_to_set, integer iAlpha) {
element_to_set=llToLower(element_to_set);
//Debug("Setting alpha for elements of type "+element_to_set+" to "+(string)iAlpha);
//update element in list of settings
if (element_to_set == "all"){ //mark entire collar's visibility
g_iAllAlpha=iAlpha;
} else { //mark element type's visibility
integer elementTypeIndex=llListFindList(g_lElementTypesLower, [element_to_set]);
g_lAlphaSettings = llListReplaceList(g_lAlphaSettings, [iAlpha], elementTypeIndex, elementTypeIndex);
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "hide_"+element_to_set + "=" + (string)iAlpha, "");
}
ApplyElementAlpha(element_to_set,iAlpha);
}
integer UserCommand(integer iAuth, string sStr, key kAv, integer remenu) {
if (iAuth > COMMAND_WEARER || iAuth < COMMAND_OWNER) return FALSE; // sanity check
//Debug(sStr);
sStr=llToLower(sStr);
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (iAuth == COMMAND_WEARER && sStr == "runaway") {
SetElementAlpha("all",1);
} else if (sStr == "menu paint" || sStr == "menu appearance" || sStr == "paint" || sStr == "appearance") {
if (kAv!=g_kWearer && iAuth!=COMMAND_OWNER) {
Notify(kAv,"You are not allowed to change the "+CTYPE+"'s appearance.", FALSE);
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
}
else ElementsMenu(kAv, iAuth);
} else if (sCommand == "paint"){
if (sValue=="invisible") {
SetElementAlpha("all",0);
if (remenu) ElementsMenu(kAv,iAuth);
} else if (sValue == "visible") {
SetElementAlpha("all",1);
if (remenu) ElementsMenu(kAv,iAuth);
} else if (~llListFindList(g_lElementTypesLower+"all",[sValue])){ //sValue is name of an element or "all"
string sValue2=llToLower(llDumpList2String(llDeleteSubList(lParams, 0, 1)," "));
if (sValue2==""){ //if they just name an element with no texture, then give them the menu
ElementMenu(kAv,iAuth, sValue);
} else { //sValue2 == styleName, "show", "hide" sValue == elementType
if (sValue2 == "visible"){
SetElementAlpha(sValue,1);
if (remenu) ElementMenu(kAv,iAuth, sValue);
} else if (sValue2 == "invisible"){
SetElementAlpha(sValue,0);
if (remenu) ElementMenu(kAv,iAuth, sValue);
} else { //sValue2 == styleName
//Debug("Got texture "+sValue2);
setElementStyle(sValue,sValue2);
if (remenu) ElementMenu(kAv,iAuth, sValue);
}
}
} else { //not the name of an element, or show, or hide, or all
Notify(kAv,"Unrecognised command: "+sValue+" not in '"+llDumpList2String(g_lElementTypesLower,",")+"'",FALSE);
}
}
return TRUE ;
}
default {
state_entry() {
g_kWearer = llGetOwner();
g_iAllAlpha=0;
if (llGetAlpha(ALL_SIDES)>0) g_iAllAlpha=1;
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, "Appearance", "");
buildElementTypes();
if (llGetInventoryKey(g_sTexturesNotecardName)) {
g_iTexturesCardId = llGetInventoryKey(g_sTexturesNotecardName);
g_iTexturesNotecardLine=0;
g_kNotecardReadRequest=llGetNotecardLine(g_sTexturesNotecardName,0);
}
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
if (UserCommand(iNum, sStr, kID, FALSE)) return;
if (iNum == LM_SETTING_RESPONSE) {
list lParams = llParseString2List(sStr, ["="], []);
string sGroupToken = llList2String(lParams, 0);
string sGroup = llList2String(llParseString2List(sGroupToken,["_"],[]),0);
string sToken = llList2String(llParseString2List(sGroupToken,["_"],[]),1);
string sValue = llList2String(lParams, 1);
if (sToken == "CType") {
CTYPE = sValue;
} else if (sGroup == "invisible") {
SetElementAlpha(sToken, (integer)sValue);
} else if (sGroup == "colour") {
setElementStyle(sToken, sValue);
} else if (sGroup == "texture") {
setElementStyle(sToken, sValue);
}
} else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu) {
llMessageLinked(LINK_SET, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
} else if (iNum == LM_SETTING_SAVE) {
//if we see a hide for something saved that we think is not currently hidden, then hide it, and store the new setting locally
if (llSubStringIndex(sStr,"hide_")==0){
list lSettingParts=llParseString2List(llGetSubString(sStr,5,-1),["="],[]);
string element_to_set=llToLower(llList2String(lSettingParts,0));
integer iAlpha=llList2Integer(lSettingParts,1);
integer elementTypeIndex=llListFindList(g_lElementTypesLower,[element_to_set]);
if (~elementTypeIndex){ //if its an element we recognise
if (llList2Integer(g_lAlphaSettings,elementTypeIndex)!=iAlpha){ //if the setting is not what we already know
//Debug("setting "+element_to_set+" to "+(string)iAlpha);
g_lAlphaSettings = llListReplaceList(g_lAlphaSettings, [iAlpha], elementTypeIndex, elementTypeIndex);
ApplyElementAlpha(element_to_set,iAlpha); //apply new setting to collar prims
//Debug(element_to_set+" now set to "+(string)llList2Integer(g_lAlphaSettings,elementTypeIndex));
} else {
//Debug(element_to_set+" already set to "+(string)iAlpha);
}
} else {
//Debug("unknown element"+element_to_set);
}
} else {
//Debug("something saved setting "+sStr);
}
} else if (iNum == DIALOG_RESPONSE) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex) { //got a menu response meant for us. pull out values
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
string sMenuType = llList2String(g_lMenuIDs, iMenuIndex + 1);
//remove stride from g_lMenuIDs
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
if (sMenuType == "ElementsMenu") { //lists all elements in the collar
if (sMessage == UPMENU) { //give kID the parent menu
llMessageLinked(LINK_SET, iAuth, "menu " + g_sParentMenu, kAv);
} else UserCommand(iAuth,"paint "+sMessage, kAv, TRUE);
} else if (llSubStringIndex(sMenuType,"element ")==0){ //lists show/hide/themes for this element
string elementType=llGetSubString(sMenuType,8,-1);
if (sMessage == UPMENU){
ElementsMenu(kAv,iAuth);
} else UserCommand(iAuth,"paint "+elementType+" "+sMessage, kAv, TRUE);
}
}
} else if (iNum == DIALOG_TIMEOUT) {
integer iMenuIndex = llListFindList(g_lMenuIDs, [kID]);
if (~iMenuIndex) { //remove stride from g_lMenuIDs
g_lMenuIDs = llDeleteSubList(g_lMenuIDs, iMenuIndex - 1, iMenuIndex - 2 + g_iMenuStride);
}
}
}
dataserver(key id, string data){
if (id == g_kNotecardReadRequest){
if (data != EOF){
data = llStringTrim(data,STRING_TRIM);
if (data != ""){
list parts=llParseStringKeepNulls(data,["~",",","<",">"],[]);
string element=llList2String(parts,0);
string name=llList2String(parts,1);
key texKey=llList2Key(parts,2);
vector colour;
if (llGetListLength(parts) < 6){
colour=<1.0,1.0,1.0>;
} else {
colour=(vector)("<"+llList2String(parts,4)+","+llList2String(parts,5)+","+llList2String(parts,6)+">");
}
g_lTexturesCard+=[llToLower(element),llToLower(name),texKey,colour];
}
g_kNotecardReadRequest=llGetNotecardLine(g_sTexturesNotecardName,++g_iTexturesNotecardLine);
}
}
}
changed (integer change){
if (change & CHANGED_INVENTORY){
if (g_iTexturesCardId != llGetInventoryKey(g_sTexturesNotecardName)){
//Debug("Reading textures card");
g_iTexturesCardId = llGetInventoryKey(g_sTexturesNotecardName);
g_lTexturesCard=[];
g_iTexturesNotecardLine=0;
g_kNotecardReadRequest=llGetNotecardLine(g_sTexturesNotecardName,0);
}
}
}
}

View File

@@ -1,342 +0,0 @@
//OpenCollar - shocker
//Licensed under the GPLv2, with the additional requirement that these scripts remain "full perms" in Second Life. See "OpenCollar License" for details.
string g_sSubMenu = "Shocker";
string g_sParentMenu = "Apps";
//MESSAGE MAP
integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_SAFEWORD = 510; // new for safeword
//integer POPUP_HELP = 1001;
integer LM_SETTING_SAVE = 2000;//scripts send messages on this channel to have settings saved to httpdb
//str must be in form of "token=value"
//integer LM_SETTING_REQUEST = 2001;//when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002;//the httpdb script will send responses on this channel
integer LM_SETTING_DELETE = 2003;//delete token from DB
//integer LM_SETTING_EMPTY = 2004;//sent by httpdb script when a token has no value in the db
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
//integer RLV_CMD = 6000;
integer ANIM_START = 7000;
integer ANIM_STOP = 7001;
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
// menu buttons
string UPMENU = "BACK";
string HELP = "Quick Help";
string DEFAULT = "Default" ;
list g_lButtons = ["1 sec.","3 sec.","5 sec.","10 sec.","15 sec.","30 sec.","1 min.","Stop"];
list g_lTime = [1,3,5,10,15,30,60,0];
string g_sSetAnim = "Set Anim";
string g_sSetSound = "Set Sound";
string g_sDefaultAnim = "~shock";
//string g_sDefaultSound = "011ef7f4-40e8-28fe-4ea5-f2fda0883707";
string g_sDefaultSound = "4546cdc8-8682-6763-7d52-2c1e67e8257d";
string g_sNoSound = "silent" ;
string g_sShockAnim ;
string g_sShockSound;
string CTYPE = "collar";
string WEARERNAME;
string g_sScript = "shocker_";
key g_kWearer;
key g_kDialog;
key g_kAnimDialog;
key g_kSoundDialog;
integer g_iShock = FALSE ;
/*
integer g_iProfiled;
Debug(string sStr) {
//if you delete the first // from the preceeding and following lines,
// profiling is off, debug is off, and the compiler will remind you to
// remove the debug calls from the code, we're back to production mode
if (!g_iProfiled){
g_iProfiled=1;
llScriptProfiler(1);
}
llOwnerSay(llGetScriptName() + "(min free:"+(string)(llGetMemoryLimit()-llGetSPMaxMemory())+")["+(string)llGetFreeMemory()+"] :\n" + sStr);
}
*/
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_THIS, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
return kID;
}
DialogShocker(key kID, integer iAuth)
{
string sText = "Shocker!\n Your pet is naughty? Just punish him/her.\n";
sText += "- Chose time to start punishment.\n" ;
sText += "- 'Quick Help' will give you a brief help how to use shocker.\n";
g_kDialog = Dialog(kID, sText, g_lButtons, [HELP,g_sSetAnim, g_sSetSound,UPMENU],0,iAuth);
}
DialogSelectAnim(key kID, integer iAuth)
{
list lAnimList = [DEFAULT];
integer iMax = llGetInventoryNumber(INVENTORY_ANIMATION);
integer i;
string sName;
for (i=0;i<iMax;i++)
{
sName=llGetInventoryName(INVENTORY_ANIMATION, i);
//check here if the anim start with ~ or for some reason does not get a name returned (spares to check that all again in the menu ;)
if (sName != "" && llGetSubString(sName, 0, 0) != "~") lAnimList += [sName];
}
string sText = "Current punishment animation is: "+g_sShockAnim+"\n\n";
sText += "Select a new animation to use as a punishment.\n\n";
g_kAnimDialog = Dialog(kID, sText, lAnimList, [UPMENU],0, iAuth);
}
DialogSelectSound(key kID, integer iAuth)
{
list lSoundList = [DEFAULT];
integer iMax = llGetInventoryNumber(INVENTORY_SOUND);
integer i;
string sName;
for (i=0;i<iMax;i++)
{
sName=llGetInventoryName(INVENTORY_SOUND, i);
//check here if the anim start with ~ or for some reason does not get a name returned (spares to check that all again in the menu ;)
if (sName != "" && llGetSubString(sName, 0, 0) != "~") lSoundList += [sName];
}
lSoundList+=[g_sNoSound];
string sText = "Current sound is: "+g_sShockSound+"\n\n";
sText += "Select a new sound to use.\n\n";
g_kSoundDialog = Dialog(kID, sText, lSoundList, [UPMENU],0, iAuth);
}
DialogHelp(key kID, integer iAuth)
{
string sMessage = "Usage of Shocker.\n";
sMessage += "Put in front of each command your subs prefix then use them as followed:\n";
sMessage += "shock <seconds> where <seconds> is time in seconds to punish you pet.\n";
sMessage += "shock 0/stop/off , is stop to punish you pet immediately.\n";
sMessage += "shockanim <anim name> , make sure the animation is inside the collar.\n";
sMessage += "shocksound <sound name> , make sure the sound is inside the collar.";
g_kDialog = Dialog(kID, sMessage, ["Ok"], [], 0, iAuth);
Notify(kID, sMessage, FALSE) ;
}
string right(string sSrc, string sDivider)
{
integer iIndex = llSubStringIndex( sSrc, sDivider );
if(~iIndex) return llDeleteSubString( sSrc, 0, iIndex + llStringLength(sDivider) - 1);
return sSrc;
}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer)
{
if (kID == g_kWearer) llOwnerSay(sMsg);
else
{
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
Shock(integer time, key kID)
{
if (time > 0)
{
Notify(kID, WEARERNAME+" now shocked for "+(string)time+" seconds.", TRUE);
if (g_sShockSound != g_sNoSound)
{
if (g_sShockSound == DEFAULT) llLoopSound( g_sDefaultSound, 1.0 );
else llLoopSound( g_sShockSound, 1.0 );
}
g_iShock = TRUE ;
llMessageLinked(LINK_THIS, ANIM_START, g_sShockAnim, "");
llResetTime();
llSetTimerEvent(time);
}
else if (g_iShock == TRUE)
{
Notify(kID, "shocker off.", TRUE);
llSetTimerEvent(0);
Stop();
}
}
Stop()
{
if (g_iShock)
{
if (g_sShockSound != g_sNoSound) llStopSound( );
llMessageLinked(LINK_THIS, ANIM_STOP, g_sShockAnim, "");
g_iShock = FALSE ;
}
}
integer UserCommand(integer iAuth, string sStr, key kID) // here iNum: auth value, sStr: user command, kID: avatar id
{
if (iAuth > COMMAND_WEARER || iAuth < COMMAND_OWNER) return FALSE; // sanity check
if (sStr == "menu "+g_sSubMenu || sStr == "shocker")
{
if (iAuth == COMMAND_OWNER) DialogShocker(kID, iAuth);
else Notify(kID, "Sorry, only the Owner can punish pet.",FALSE);
return TRUE;
}
else if (iAuth == COMMAND_OWNER)
{
list lParams = llParseString2List(sStr, [" "], []);
string sCommand = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sStr == "shocker help") DialogHelp(kID, iAuth);
else if (sCommand == "shock")
{
if (sValue == "off" || sValue == "stop") Shock(0,kID);
else Shock((integer)sValue,kID);
}
else if (sCommand == "shockanim")
{
//Get all text after the command, strip spaces from start and end
string sAnim = right(sStr, sCommand);
sAnim = llStringTrim(sAnim, STRING_TRIM);
if (sAnim == DEFAULT) sAnim = g_sDefaultAnim;
if (llGetInventoryType(sAnim) == INVENTORY_ANIMATION)
{
Stop();
g_sShockAnim = sAnim;
llMessageLinked(LINK_THIS, LM_SETTING_SAVE, g_sScript + "anim=" + g_sShockAnim, "");
Notify(kID, "Punishment anim for shocker is now '" + g_sShockAnim + "'.",FALSE);
}
else Notify(kID, sAnim + " is not a valid animation name.",FALSE);
}
else if (sCommand == "shocksound")
{
//Get all text after the command, strip spaces from start and end
string sSound = right(sStr, sCommand);
sSound = llStringTrim(sSound, STRING_TRIM);
if (sSound == g_sNoSound) Notify(kID, "Punishment will be silently.",FALSE);
else if (llGetInventoryType(sSound) != INVENTORY_SOUND)
{
Notify(kID, sSound + " is not a valid sound name.",FALSE);
sSound = DEFAULT ;
}
g_sShockSound = sSound;
llMessageLinked(LINK_THIS,LM_SETTING_SAVE,g_sScript+"sound="+g_sShockSound, "");
Notify(kID, "Punishment sound for shocker is now '"+g_sShockSound+"'.",FALSE);
}
}
return TRUE;
}
string GetName(key uuid)
{
string name = llGetDisplayName(uuid);
if (name == "???" || name == "") name = llKey2Name(uuid);
return name;
}
default
{
on_rez(integer iParam)
{
llResetScript();
}
state_entry()
{
g_kWearer = llGetOwner();
WEARERNAME = GetName(g_kWearer);
g_sScript = "shocker_";
g_sShockAnim = g_sDefaultAnim;
g_sShockSound = DEFAULT ;
}
link_message(integer iSender, integer iNum, string sStr, key kID)
{
if (UserCommand(iNum, sStr, kID)) return;
else if (iNum == LM_SETTING_DELETE && sStr == "Global_WearerName")
{
WEARERNAME = GetName(g_kWearer);
}
else if (iNum == LM_SETTING_RESPONSE)
{
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
if (sToken == g_sScript+"anim") g_sShockAnim = sValue;
else if (sToken == g_sScript+"sound") g_sShockSound = sValue;
else if (sToken == "Global_CType") CTYPE = sValue;
else if (sToken == "Global_WearerName") WEARERNAME = sValue;
}
else if (iNum == COMMAND_SAFEWORD) Shock(0,kID);
else if (iNum == MENUNAME_REQUEST && sStr == g_sParentMenu)
{
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, "");
}
else if (iNum == DIALOG_RESPONSE && (kID==g_kDialog || kID==g_kAnimDialog || kID==g_kSoundDialog))
{
list lMenuParams = llParseString2List(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0);
string sMessage = llList2String(lMenuParams, 1);
integer iPage = (integer)llList2String(lMenuParams, 2);
integer iAuth = (integer)llList2String(lMenuParams, 3);
if (kID == g_kDialog)
{
if (sMessage == "Ok") DialogShocker(kAv,iAuth);
else if (sMessage == g_sSetAnim) DialogSelectAnim(kAv,iAuth);
else if (sMessage == g_sSetSound) DialogSelectSound(kAv,iAuth);
else if (sMessage == UPMENU) llMessageLinked(LINK_THIS, iAuth, "menu "+g_sParentMenu, kAv);
else if (sMessage == HELP) DialogHelp(kAv,iAuth);
else
{
integer index = llListFindList(g_lButtons, [sMessage]);
if (index != -1)
{
integer shocktime = llList2Integer(g_lTime,index);
Shock(shocktime,kAv);
DialogShocker(kAv,iAuth);
}
}
}
else if (kID == g_kAnimDialog)
{
if (sMessage != "") UserCommand(iAuth,"shockanim " + sMessage,kAv);
DialogShocker(kAv,iAuth);
}
else if (kID == g_kSoundDialog)
{
if (sMessage != "") UserCommand(iAuth,"shocksound " + sMessage,kAv);
DialogShocker(kAv,iAuth);
}
}
}
timer()
{
llSetTimerEvent(0);
Stop();
}
}

View File

@@ -1,423 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------------ //
// OpenCollar - takeme //
// version 3.980 //
// ------------------------------------------------------------------------------ //
// Licensed under the GPLv2 with additional requirements specific to Second Life® //
// and other virtual metaverse environments. -> www.opencollar.at/license.html //
// ------------------------------------------------------------------------------ //
// © 2008 - 2014 Individual Contributors and OpenCollar - submission set free™ //
// ------------------------------------------------------------------------------ //
// github.com/OpenCollar/OpenCollarUpdater //
// ------------------------------------------------------------------------------ //
////////////////////////////////////////////////////////////////////////////////////
string SUBMENU_BUTTON = "TakeMe"; // Name of the submenu
string COLLAR_PARENT_MENU = "Apps"; // name of the menu, where the menu plugs in, should be usually Addons. Please do not use the mainmenu anymore
key g_kMenuID; // menu handler
key g_kWearer; // key of the current wearer to reset only on owner changes
key g_kClicker; //capture clicker IDs
string g_sScript ="TakeMe_"; // part of script name used for settings
string CTYPE = "collar"; // designer can set in notecard to appropriate word for their item
list g_lTempOwners;
integer g_iLimitDistance = 3; //meters away from the wearer before they can be captured
integer g_iTakeMeForce = FALSE;
integer g_iCaptureOn=FALSE;
list g_lRequests; //list of requests coming in
list g_lRequests_Names; //And their names
string WEARERNAME;
string TICKED = "☒ ";
string UNTICKED = "☐ ";
// OpenCollar MESSAGE MAP
// messages for authenticating users
// integer COMMAND_NOAUTH = 0; // for reference, but should usually not be in use inside plugins
//integer COMMAND_NOAUTH = 0;
integer COMMAND_OWNER = 500;
integer COMMAND_SECOWNER = 501;
integer COMMAND_GROUP = 502;
integer COMMAND_WEARER = 503;
integer COMMAND_EVERYONE = 504;
integer COMMAND_RLV_RELAY = 507;
integer COMMAND_SAFEWORD = 510;
integer COMMAND_RELAY_SAFEWORD = 511;
integer COMMAND_BLACKLIST = 520;
// added for timer so when the sub is locked out they can use postions
integer COMMAND_WEARERLOCKEDOUT = 521;
integer ATTACHMENT_REQUEST = 600;
integer ATTACHMENT_RESPONSE = 601;
integer ATTACHMENT_FORWARD = 610;
integer WEARERLOCKOUT = 620; // turns on and off wearer lockout
// integer SEND_IM = 1000; deprecated. each script should send its own IMs now.
// This is to reduce even the tiny bit of lag caused by having IM slave scripts
integer POPUP_HELP = 1001;
// messages for storing and retrieving values from settings store
integer LM_SETTING_SAVE = 2000; // scripts send messages on this channel to have settings saved to settings store
// str must be in form of "token=value"
integer LM_SETTING_REQUEST = 2001; // when startup, scripts send requests for settings on this channel
integer LM_SETTING_RESPONSE = 2002; // the settings script will send responses on this channel
integer LM_SETTING_DELETE = 2003; // delete token from settings store
integer LM_SETTING_EMPTY = 2004; // sent by settings script when a token has no value in the settings store
integer LM_SETTING_REQUEST_NOCACHE = 2005;
// messages for creating OC menu structure
integer MENUNAME_REQUEST = 3000;
integer MENUNAME_RESPONSE = 3001;
integer MENUNAME_REMOVE = 3003;
// messages for RLV commands
integer RLV_CMD = 6000;
integer RLV_REFRESH = 6001; // RLV plugins should reinstate their restrictions upon receiving this message.
integer RLV_CLEAR = 6002; // RLV plugins should clear their restriction lists upon receiving this message.
integer RLV_VERSION = 6003; // RLV Plugins can recieve the used rl viewer version upon receiving this message..
integer RLV_OFF = 6100; // send to inform plugins that RLV is disabled now, no message or key needed
integer RLV_ON = 6101; // send to inform plugins that RLV is enabled now, no message or key needed
integer RLV_QUERY = 6102; //query from a script asking if RLV is currently functioning
integer RLV_RESPONSE = 6103; //reply to RLV_QUERY, with "ON" or "OFF" as the message
// messages for poses and couple anims
integer ANIM_START = 7000; // send this with the name of an anim in the string part of the message to play the anim
integer ANIM_STOP = 7001; // send this with the name of an anim in the string part of the message to stop the anim
integer CPLANIM_PERMREQUEST = 7002; // id should be av's key, str should be cmd name "hug", "kiss", etc
integer CPLANIM_PERMRESPONSE = 7003; // str should be "1" for got perms or "0" for not. id should be av's key
integer CPLANIM_START = 7004; // str should be valid anim name. id should be av
integer CPLANIM_STOP = 7005; // str should be valid anim name. id should be av
// messages to the dialog helper
integer DIALOG = -9000;
integer DIALOG_RESPONSE = -9001;
integer DIALOG_TIMEOUT = -9002;
integer FIND_AGENT = -9005; // to look for agent(s) in region with a (optional) search string
key REQUEST_KEY;
integer TIMER_EVENT = -10000; // str = "start" or "end". For start, either "online" or "realtime".
integer UPDATE = 10001; // for child prim scripts (currently none in 3.8, thanks to LSL new functions)
// For other things that want to manage showing/hiding keys.
integer KEY_VISIBLE = -10100;
integer KEY_INVISIBLE = -10100;
integer COMMAND_PARTICLE = 20000;
integer COMMAND_LEASH_SENSOR = 20001;
//chain systems
integer LOCKMEISTER = -8888;
integer LOCKGUARD = -9119;
//rlv relay chan
integer RLV_RELAY_CHANNEL = -1812221819;
// menu option to go one step back in menustructure
string UPMENU = "BACK"; // when your menu hears this, give the parent menu
//Debug(string sMsg) { llOwnerSay(llGetScriptName() + " [DEBUG]: " + sMsg);}
Notify(key kID, string sMsg, integer iAlsoNotifyWearer){
if (kID == g_kWearer) llOwnerSay(sMsg);
else {
if (llGetAgentSize(kID)) llRegionSayTo(kID,0,sMsg);
else llInstantMessage(kID, sMsg);
if (iAlsoNotifyWearer) llOwnerSay(sMsg);
}
}
key Dialog(key kRCPT, string sPrompt, list lChoices, list lUtilityButtons, integer iPage, integer iAuth)
{
key kID = llGenerateKey();
llMessageLinked(LINK_SET, DIALOG, (string)kRCPT + "|" + sPrompt + "|" + (string)iPage + "|"
+ llDumpList2String(lChoices, "`") + "|" + llDumpList2String(lUtilityButtons, "`") + "|" + (string)iAuth, kID);
return kID;
}
DoMenu(key keyID, integer iAuth) {
string sPrompt = "\n"+SUBMENU_BUTTON;
list lMyButtons;
if (g_iCaptureOn){
sPrompt += "ON";
lMyButtons += "OFF";
} else {
lMyButtons += "ON";
sPrompt += "OFF";
}
if (g_iLimitDistance) {
lMyButtons += TICKED+"LimitDistance";
} else {
lMyButtons += UNTICKED+"LimitDistance";
}
if (g_iTakeMeForce) {
lMyButtons += TICKED+"ForceTake";
} else {
lMyButtons += UNTICKED+"ForceTake";
}
if (llGetListLength(g_lRequests) > 0) {
sPrompt += "\nThere are "+ (string)llGetListLength(g_lRequests) +" requests for capture...\n\n";
}
if (llGetListLength(g_lTempOwners) > 0) {
sPrompt += "\nCurrent Temp Owners: ";
integer i;
integer x = llGetListLength(g_lTempOwners);
for (i=1;i<=x;++i){
sPrompt+=llList2String(g_lTempOwners,i) + ", ";
++i;
}
lMyButtons += ["Reset"];
}
//fill in your button list and additional prompt here
if (llGetListLength(g_lRequests) > 0) {
sPrompt += "\n"+llList2String(g_lRequests_Names,0) +" wants to capture you...";
lMyButtons += ["Allow","Reject"];
}
// and dispay the menu
g_kMenuID = Dialog(keyID, sPrompt, lMyButtons, [UPMENU], 0, iAuth);
}
DoMenuAlt(key keyID, integer iAuth) { //This is for force (outsider) capture dialogs
string sPrompt = "\n"+SUBMENU_BUTTON;
sPrompt += "\nDo you want to capture "+WEARERNAME+"?";
list lMyButtons;
lMyButtons += ["Yes","No"];
// and dispay the menu
g_kMenuID = Dialog(keyID, sPrompt, lMyButtons, [], 0, iAuth);
}
integer UserCommand(integer iNum, string sStr, key kID, integer remenu) {
sStr=llToLower(sStr);
if (!(iNum >= COMMAND_OWNER && iNum <= COMMAND_WEARER)) {
return FALSE;
} else if (sStr == "takeme" || sStr == "menu takeme") {
// an authorized user requested the plugin menu by typing the menus chat command
DoMenu(kID, iNum);
} else if (sStr == "takeme reset" ) {
Notify(kID,"Temp owners list has been purged.",TRUE);
g_lTempOwners=[];
llMessageLinked(LINK_SET, LM_SETTING_DELETE, "auth_tempowner", "");
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "auth_tempowner", "");
} else if (sStr == "takeme on") {
Notify(kID,"takeme game is ON!",TRUE);
g_iCaptureOn=TRUE;
llMessageLinked(LINK_SET, LM_SETTING_SAVE,g_sScript+ "takeme=1", "");
} else if (sStr == "takeme off") {
Notify(kID,"takeme game is OFF!",TRUE);
g_iCaptureOn=FALSE;
llMessageLinked(LINK_SET, LM_SETTING_DELETE,g_sScript+ "takeme", "");
} else if (sStr == "takeme limitdistance off") {
llMessageLinked(LINK_SET, LM_SETTING_DELETE,g_sScript+ "limitdistance", "");
g_iLimitDistance = FALSE;
Notify(kID,"TakeMe limit distance disabled!",TRUE);
} else if (sStr == "takeme limitdistance on") {
llMessageLinked(LINK_SET, LM_SETTING_SAVE,g_sScript+ "limitdistance=3", "");
g_iLimitDistance = 3;
Notify(kID,"TakeMe limit distance now set to 3 meters!",TRUE);
} else if (llSubStringIndex(sStr,"takeme limitdistance ") >= 0) {
integer iTest = llList2Integer(llParseString2List(sStr,[" "],[]),2);
if (iTest > 0) { //lets make sure we have a real number here (zero is not valid)
Notify(kID,"TakeMe limit distance now set to "+(string)iTest+" meters!",TRUE);
llMessageLinked(LINK_SET, LM_SETTING_SAVE,g_sScript+ "limitdistance="+(string)iTest, "");
g_iLimitDistance = iTest;
}
else {
Notify(kID,"<prefix>takeme limitdistance <distance in meters>",TRUE);
}
} else if (sStr == "takeme force on") {
llMessageLinked(LINK_SET, LM_SETTING_SAVE,g_sScript+ "force=1", "");
g_iTakeMeForce = TRUE;
Notify(kID,"TakeMe will allow you to be forcefully captured!",TRUE);
} else if (sStr == "takeme force off") {
llMessageLinked(LINK_SET, LM_SETTING_DELETE,g_sScript+ "force", "");
g_iTakeMeForce = FALSE;
Notify(kID,"TakeMe will prompt you for all capture requests!",TRUE);
}
if (remenu) {
DoMenu(kID, iNum);
}
return TRUE;
}
default {
state_entry()
{
g_sScript = llStringTrim(llList2String(llParseString2List(llGetScriptName(), ["-"], []), 1), STRING_TRIM) + "_";
g_kWearer = llGetOwner();
WEARERNAME = llGetDisplayName(g_kWearer);
if (WEARERNAME == "???" || WEARERNAME == "") WEARERNAME = llKey2Name(g_kWearer); //sanity check, fallback if necessary
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "auth", "tempowner");
}
on_rez(integer iParam) {
if (llGetOwner()!=g_kWearer) llResetScript();
}
touch_start(integer num_detected)
{
key kToucher = llDetectedKey(0);
if (kToucher == llGetOwner()) {return;}
if (g_iLimitDistance) {
float fDistance=llVecDist(llDetectedPos(0),llGetPos());
if (fDistance > (float)g_iLimitDistance) {
Notify(kToucher,"You are not close enough to "+WEARERNAME+" to take control of their "+CTYPE,FALSE);
return;
}
}
llMessageLinked(LINK_SET,0,"TempOwner~"+llDetectedName(0)+"~"+(string)kToucher,kToucher);
}
link_message(integer iSender, integer iNum, string sStr, key kID) {
// llOwnerSay(sStr+" | "+(string)iNum+ "|"+(string)kID);
if (iNum == MENUNAME_REQUEST && sStr == COLLAR_PARENT_MENU) {
// our parent menu requested to receive buttons, so send ours
llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, COLLAR_PARENT_MENU + "|" + SUBMENU_BUTTON, "");
}
else if ((iNum == LM_SETTING_RESPONSE || iNum == LM_SETTING_DELETE)
&& llSubStringIndex(sStr, "Global_WearerName") == 0 ) {
integer iInd = llSubStringIndex(sStr, "=");
string sValue = llGetSubString(sStr, iInd + 1, -1);
//We have a broadcasted change to WEARERNAME to work with
if (iNum == LM_SETTING_RESPONSE) WEARERNAME = sValue;
else {
g_kWearer = llGetOwner();
WEARERNAME = llGetDisplayName(g_kWearer);
if (WEARERNAME == "???" || WEARERNAME == "") WEARERNAME == llKey2Name(g_kWearer);
}
}
else if (iNum == LM_SETTING_RESPONSE) {
// response from setting store have been received, parse the answer
list lParams = llParseString2List(sStr, ["="], []);
string sToken = llList2String(lParams, 0);
string sValue = llList2String(lParams, 1);
// and check if any values for use are received
if (sToken == g_sScript+"takeme") {
if (sValue == (string)1) { g_iCaptureOn = TRUE; }
}
else if (sToken == g_sScript+"limitdistance") {
g_iLimitDistance = (integer)sValue;
}
else if (sToken == g_sScript+"force") {
g_iTakeMeForce = (integer)sValue;
}
else if (sToken == "auth_tempowner") {
g_lTempOwners = llParseString2List(sValue, [","], []); //store tempowners list
}
else if (sToken == "Global_CType") CTYPE = sValue;
}
else if (iNum == COMMAND_SAFEWORD) {
// Safeword has been received, release any restricitions that should be released
UserCommand(COMMAND_OWNER,"takeme reset",g_kWearer,FALSE);
UserCommand(COMMAND_OWNER,"takeme off",g_kWearer,FALSE);
}
else if (UserCommand(iNum, sStr, kID, FALSE)) {
// do nothing more if TRUE
}
else if (iNum == COMMAND_EVERYONE && g_iCaptureOn) {
if (llSubStringIndex(sStr,"TempOwner") == 0) {
list lSplit = llParseString2List(sStr, ["~"], []);
string sName = llList2String(lSplit,1);
key kKey = llList2Key(lSplit,2);
// llOwnerSay(sName + " " +(string)kKey);
if (llListFindList(g_lRequests,llList2List(lSplit,2,2)) >=0) {
//do nothing
} else {
g_lRequests += llList2List(lSplit,2,2);
g_lRequests_Names += llList2List(lSplit,1,1);
if (g_iTakeMeForce) {
DoMenuAlt(kID,COMMAND_EVERYONE);
}
else {
DoMenu(g_kWearer,COMMAND_WEARER);
}
}
}
}
else if (iNum == DIALOG_RESPONSE) {
if (kID == g_kMenuID) {
//got a menu response meant for us, extract the values
list lMenuParams = llParseStringKeepNulls(sStr, ["|"], []);
key kAv = (key)llList2String(lMenuParams, 0); // avatar using the menu
string sMessage = llList2String(lMenuParams, 1); // button label
integer iPage = (integer)llList2String(lMenuParams, 2); // menu page
integer iAuth = (integer)llList2String(lMenuParams, 3); // auth level of avatar
// request to switch to parent menu
if (sMessage == UPMENU) {
//give av the parent menu
llMessageLinked(LINK_THIS, iAuth, "menu "+COLLAR_PARENT_MENU, kAv);
}
else if (sMessage == "Allow" || sMessage == "Yes") {
if (g_iCaptureOn) {
if (g_iTakeMeForce) { //this is coming from a captor, so lets find them in our queue
integer iRequestIndex = llListFindList(g_lRequests,[(string)kAv]);
if (iRequestIndex < 0) return; //we failed somehow...
Notify(llList2Key(g_lRequests,iRequestIndex),llList2String(g_lRequests_Names,iRequestIndex)+" has captured "+WEARERNAME,TRUE);
g_lTempOwners+=[llList2Key(g_lRequests,iRequestIndex),llList2String(g_lRequests_Names,iRequestIndex)];
g_lRequests = llDeleteSubList(g_lRequests,iRequestIndex,iRequestIndex); //remove this from queue
g_lRequests_Names = llDeleteSubList(g_lRequests_Names,iRequestIndex,iRequestIndex); //remove from queue
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "auth_tempowner="+llDumpList2String(g_lTempOwners,","), "");
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "auth_tempowner", "");
} else {
Notify(llList2Key(g_lRequests,0),llList2String(g_lRequests_Names,0)+" has captured "+WEARERNAME,TRUE);
g_lTempOwners+=[llList2Key(g_lRequests,0),llList2String(g_lRequests_Names,0)];
g_lRequests = llDeleteSubList(g_lRequests,0,0); //remove this from queue
g_lRequests_Names = llDeleteSubList(g_lRequests_Names,0,0); //remove from queue
llMessageLinked(LINK_SET, LM_SETTING_SAVE, "auth_tempowner="+llDumpList2String(g_lTempOwners,","), "");
llMessageLinked(LINK_SET, LM_SETTING_REQUEST, "auth_tempowner", "");
DoMenu(g_kWearer,iAuth);
}
}
}
else if (sMessage == "Reject" || sMessage == "No") {
if (g_iCaptureOn) {
if (g_iTakeMeForce) {
Notify(kAv,"You have decided to neglect the poor soul of "+WEARERNAME+". Shame on you...",FALSE);
integer iRequestIndex = llListFindList(g_lRequests,[(string)kAv]);
g_lRequests = llDeleteSubList(g_lRequests,iRequestIndex,iRequestIndex); //remove this from queue
g_lRequests_Names = llDeleteSubList(g_lRequests_Names,iRequestIndex,iRequestIndex); //remove from queue
return;
}
Notify(kAv,"You have rejected temporary ownership by "+llList2String(g_lRequests_Names,0),FALSE);
g_lRequests = llDeleteSubList(g_lRequests,0,0); //remove this from queue
g_lRequests_Names = llDeleteSubList(g_lRequests_Names,0,0); //remove from queue
DoMenu(g_kWearer,iAuth);
}
}
else if (sMessage == "OFF") {
UserCommand(iAuth,"takeme reset",kAv,FALSE);
UserCommand(iAuth,"takeme off",kAv,TRUE);
}
else if (sMessage == "ON") {
UserCommand(iAuth,"takeme on",kAv,TRUE);
}
else if (sMessage == "Reset") {
UserCommand(iAuth,"takeme reset",kAv,TRUE);
}
else if (sMessage == TICKED+"LimitDistance") {
UserCommand(iAuth,"takeme limitdistance off",kAv,TRUE);
}
else if (sMessage == UNTICKED+"LimitDistance") {
UserCommand(iAuth,"takeme limitdistance on",kAv,TRUE);
}
else if (sMessage == TICKED+"ForceTake") {
UserCommand(iAuth,"takeme force off",kAv,TRUE);
}
else if (sMessage == UNTICKED+"ForceTake") {
UserCommand(iAuth,"takeme force on",kAv,TRUE);
}
}
}
}
}

BIN
doc/AO_comparison.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

88
doc/First Steps.txt Normal file
View File

@@ -0,0 +1,88 @@
Collar first steps:
------------------
To tke advantage of all the functions of your new collar, make sure your RLV is turned on on your viewer.
For example in Firestorm go to the menu Advanced and select the option RestrainedLove API, then restart the viewer.
(If you don't see the menu Advanced, go to preferences (Ctrl P) tab Advanced and check "Show Advanced Menu").
The Beginning:
1. Adjusting the collar to your avatar:
---------------------------------------
Wear the collar, right click on it and adjust the position and size to match your avatar, when you're satisfied, take it off and put it on again.
2. Adding an owner/trusted/blocked people:
------------------------------------------
Now you can add an owner, trusted person or even block people from using your collar, to do so you need to invoke the menu.
To do so type the first two letters of your name followed by "menu", for example if your name is Jane Doe type "jamenu" or "ja menu", alternatively simply click on the collar.
Click on the option Access and to add an owner just click on the button "+ Owner". Make sure the person you select as owner is near you in the same sim.
The name of the owner candidate will appear listed on the menu, just click on the name to register him/her as owner and allow access and control of your collar.
Same procedure with trusted people and to manage the block list.
If you wish to own your own collar instead just pick your name from the list.
3. Setting up the poses:
------------------------
The collar comes with a series of poses, you may need to adjust them for the height of your avatar.
Call the menu and select Animations, then Pose, for the following steps remove your shoes and layer shoes, and turn off your AO.
Press on BeautyStand, your avatar will assume the position, check your feet, if you're sunk in the ground or floating above it you will need to adjust it, to do so simply press the up or down arrow untiliN your feet are just on the ground.
Click on the next animation and repeat the process, at the end of the list you will also find animations that start with a curly symbol "~" those are for different plugins and functions of your collar, you can adjust the height of those animations in the same way.
Once you cycled on the whole list you're done! Now it's time to save the settings.
Call the menu again go to Settings and Save.
(to save your settings make sure you're in a sim that allows to use such ossl function, if you get an error just press Settings and Print t get your settings list ready to be copied to a notecard.
4. Setting up the Label:
------------------------
If you're already owned this must be performed by your owner, if you're not owned then you can do it yourself.
The label is a text that will appear on the side of the collar, depending on the model it can be bigger text or smaller and it's appearance may change.
Invoke the menu, press Apps and then Label, then press Set Label and input the text you want, depending on the collar model you have a limit of 8 to ~16 characters available. After you're done press Submit.
To make the new text visible press on "Show", you can also change the font, colours and set the text to scroll from this menu.
5. Setting up the Titler:
-------------------------
The titler is another app, this one can be setup by the collar wearer. The titler is an hovertext that will appear on top of the head of the collar wearer.
Invoke the menu and press Apps and then Titler.
Press Set Title to input your text, then press Submit. To make it appear press "Show", you may need to adjust the height of the text, you can do so by pressing the arrows up and down on the menu, by default the title may be too close inside the head of the collar wearer and so you need to move it up by pressing the up button several times.
You can also change the colour of the text from this menu.
6. Setting up the leash:
------------------------
The leash by default is the rope (ribbon type of particles), by invoking the menu and then option Leash -> Configure you can switch the particle type by select "Chain" instead, you can also change the colour and characteristics of the leash from this menu.
Your owner or trustees can click on the Leash menu too and press on the Give Holder button to get a leash holder they can wear. The chain/rope then will attach to the holder for a pleasing visuals.
_________________________________________________________________________________________
That's it! If you read so far congratulations you will have a highly personalized collar that will cover your needs
For more information about all the available commands, invoke your menu and then select Help/About and press the button Help. You'll receive a notecard with all the commands the collar has and the descriptions for all the functions.

502
doc/OsCollar Help.txt Normal file
View File

@@ -0,0 +1,502 @@
=========================
OsCollar Help Card
=========================
This is only a short version of the manual, explaining the basic usage and lists all chat commands.
==============================
A word about OpenSim and script state loss
==============================
Due to OpenSim bug #8366 (http://opensimulator.org/mantis/view.php?id=8366)
scripts (so also this collar) can lose state in two ways:
1 Teleport from a YEngine region to a XEngine region
2 Teleport to a hypergrid region
** BE SURE TO SAVE YOUR SETTINGS CARD AFTER ANY CHANGE OF SETTINGS!!! **
That way the collar can recover after a script reset.
To save settings (easy):
-> Open the collar menu, Click Settings, Click Save.
If saving is not supported in this region (advanced):
-> Open the collar menu, click Unlock (if locked), click Settings, click Print
-> Select and copy the settings below the cutline from local chat
-> Edit the collar, and select the Settings link/prim
(cycle between links with with Ctrl-. and Ctrl-, )
-> Open the ".settings" notecard within and replace what's on the notecard
(Ctrl-A followed by Ctrl-V)
-> Save the notecard
==========
The Very Basics
==========
Making use of the many, many features in your collar can be done by touching your neck, by touching your collar directly, by using a remote or with individual chat commands.
-------------
The Prefix:
-------------
Your [prefix] are the first two letters of your username, not of your displayname
John Doe's prefix is: jo
Loki (silvia.blep)'s prefix is: si
Your prefix is used to issue commands in the Nearby Chat.
[prefix] menu
[prefix] kneel
[prefix] stop
If you dont like your prefix, you can change it. Only the owner can change the prefix, and the wearer if there is no owner set.
ws prefix wen
wr prefix we
js prefix sex
There are two special prefixes. * issues commands to everyone nearby and # issues commands to everyone except yourself.
*trauma
#grab
------------
Channels:
------------
You can also issue commands on channel 1.
/1 [prefix] menu
Or if you dont like channel 1 set a different channel.
[prefix] channel 2
[prefix] channel 3
[prefix] channel 69
[prefix] channel 9001
If you are considerate about lag, you can also turn off the Nearby Chat listener.
[prefix] channel -1
Too much hassle to always type a slash after all?
/1 [prefix] channel 0
------------
Safeword:
------------
Your collar also has a safeword which you simply type in the nearby chat. This will lift all RLV restrictions, unpose and unleash you. It will also send your Owner a message to check for your well being. RED in capital letters is the default safeword.
RED
/1RED
((RED))
If thats too hard to remember you can easily change it.
[prefix] safeword Mayday!
[prefix] safeword taxi
[prefix] safeword BANANA
This works only if your RLV relay is NOT in helpless mode. (Main Menu -> RLV -> Relay -> Helpless) if Helpless mode is on the safeword option will be disabled.
===============
List of Chat Commands
===============
Alright, many asked for this and here it is, the ultimate list of nerdy chat commands for those of you who prefer them over menus, touch or HUDs! Assumed here is that you know what a prefix is. We will indicate each prefix with a hash key. Why hash key? Cause waffles!
NOTE: Wearers have to use the first two letters of their username instead of the hash key.
-----------------------
General Commands:
-----------------------
# menu
# lock
# unlock
# apps
# channel [positive number]
# channel -1
# channel 0
# prefix [custom prefix]
RED
/1RED
((RED))
# safeword [custom safeword]
CustomSafeword
/1CustomSafeword
((CustomSafeword))
--------------
Bookmarks:
--------------
# bookmarks
# tp
# tp [name of bookmark]
# tp save
# tp print
# tp remove
-------
Titler:
-------
# menu titler
# title [a fancy title]
# title on
# title off
# title color <x, y, z>
------
Bell:
------
# menu bell
# bell on
# bell off
# bell show
# bell hide
----------------------------------
Label (selected models only):
----------------------------------
# menu label
# label box
# label [a fancy label]
# label on
# label off
# label scroll on
# label scroll off
# label font
--------------
Animations:
--------------
# animations
# posture on
# posture off
# ao menu
# ao on
# ao off
# antislide
# antislide on
# antislide off
# mv anims
# rm pose [name of pose]
----------------------------
Poses (stock selection):
----------------------------
# pose
# BeautyStand
# Bendover
# Bracelets
# Cutie
# Display
# Doggie
# Nadu
# NaduWide
# Plead
# Shy
# Sleep
# Squirm
# Submit
# Table
# Tower
(The following animations prefixed with a curly symbol ~ are animations used by the couples or plugins,
they're listed here to allow you to adjust the height for your avatar, so when the couple pose is called
it will display properly for you)
# ~crawl (used when the collar wearer is on a kneel pose and starts to walk or is dragged by the leash)
# ~good (submissive part of the "Pet" couple animation)
# ~jump-botto (submissive part of the "Jump" couple animation)
# ~jump-top (dominant part of the "Jump" couple animation)
# ~pet (dominant part of the "Pet" couple animation)
# ~run (used when the collar wearer is on a pose and start running)
# ~shock (used by the shocker plugin)
# ~stiff (used to freeze the neck for posture collars)
-------------------------------------------
Couple Animations (stock selection):
-------------------------------------------
# couples
# Pet
# Jump
# stop couples
----------
Capture:
----------
# capture
# capture on
# capture off
# capture risky on
# capture risky off
# capture info on
# capture info off
# capture release
-------
Leash:
-------
# menu leash
# leash
# grab
# yank
# unleash
# Give Holder Will give a leash holder to owners and trusted or everyone if the "Public" option is enabled.
# follow
# beckon Chat option only, it doesn't have a menu button.
# unfollow Chat option only, it doesn't have a menu button.
# stay Chat option only, it doesn't have a menu button.
# move Chat option only, it doesn't have a menu button.
# anchor
# park This will rez a balloon and leash the collar wearer to it, it's a command line option only.
# pass
# length
# leash configure
-----
RLV:
-----
# rlv
# rlv on
# rlv off
# rlv handshakes
# terminal
# clear
-----------
Force Sit:
-----------
# sit
# stand
# forbid stand
# allow stand
---------
Outfits:
---------
# outfits
# wear [name of the outfit]
---------------
Restrictions:
---------------
# restrictions
# allow sendim
# forbid sendim
# allow readim
# forbid readim
# allow hear
# forbid hear
# allow touch
# forbid touch
# allow stray
# forbid stray
# allow talk
# forbid talk
# allow rummage
# forbid rummage
# allow dress
# forbid dress
# dazzle
# undazzle
# daze
# undaze
--------------
RLV Folders:
--------------
# folders
#+ foldername (wears it)
#++ foldername (wears it and its subfolders)
#& foldername (adds it)
#&& foldername (adds it and its subfolders)
#- foldername (removes it)
#-- foldername (removes it and its subfolders)
# history
--------
Relay:
--------
# relay trusted
# relay ask
# relay auto
# relay off
# relay lite on
# relay lite off
# relay smart on
# relay smart off
# relay land on
# relay land off
# relay pending
# relay access
# relay helpless on
# relay helpless off
# relay safeword
---------
Access:
---------
# access
# add owner [UUID or name]
# rm owner [name]
# add trust [UUID or name]
# rm trust [name]
# add block [UUID or name]
# rm block [name]
# public on
# public off
# flavor
# vanilla on
# vanilla off
# runaway
----------
Settings:
----------
# settings
# print settings
# load url [url]
# fix
# verify
# stealth
# themes
# looks
--------------
Help/About:
--------------
# about
# help
# license
# news
# news on
# news off
# version
# info
# update
# reboot
--------------
Commands without menu buttons:
--------------
# heeloffset [number] This will change the shoe height compensator for the poses and couple anims.
Example: aaheeloffset -0.2
# heeloffset reset Will reset to the default offset of -0.1
# park It'll rez a baloon and automatically leash the collar owner to it.
# rm [Name of Plugin] Removes the plugin script from the collar.

18
doc/opensim-patches.md Normal file
View File

@@ -0,0 +1,18 @@
Recommended patches for OpenSim
Often we get a "bug report" for what is actually a known bug in OpenSim itself. Unfortunately the core devs don't see the urgency to address these problems, so you'll have to patch the OpenSim sourcecode yourself!
Alternatively, run my own [OpenSim fork](https://github.com/lickx/opensim-lickx) in which this all is fixed
[Mantis 8366](http://opensimulator.org/mantis/view.php?id=8366)
This fixes state being lost or even non-working scripts for any hypergrid visitors you receive at your sim. If you have been wondering why your collar (and other scripted attachments) lost any and all settings when hypergridding, this is it. The destination sim will have to apply these patches.
[Mantis 8366](http://opensimulator.org/mantis/view.php?id=8366) and [Mantis 9052](http://opensimulator.org/mantis/view.php?id=9052)
After a TP to the hypergrid, your attachments won't be set to the active group tag for that grid, which is needed if you allow access from that group on the collar. The destination sim will have to apply these patches.
[Mantis 6311](http://opensimulator.org/mantis/view.php?id=6311)
This affects RLVa, when declining a folder given to your shared #RLV folder by a scripted object/trap. Accepting works since OpenSim 0.9.2, decline will only work correctly after a patch is applied. Basically the object url in a inventory offer message HAS to start with http://slurl because RLVa is hardcoded like that. http://slurl.yourgrid.com is fine for example.
[Mantis 8250](http://opensimulator.org/mantis/view.php?id=8250)
If your leashed sub has been bunny hopping or is stuck when walking up or down a hill, stairs, or other kind of slope, this patch fixes that leash weirdness.

18
news.md
View File

@@ -1,18 +0,0 @@
Final Release 3.998 - Built 160730.1
Hello, a release is finally ready!
OsGrid local teleport:
secondlife://Oaks Woods/8/134/28
Hop teleport:
hop://hg.osgrid.org:80/Oaks%20Woods/8/134/28
Hypergrid teleport:
secondlife://hg.osgrid.org:80/Oaks Woods/8/134/28
V3 Hypergrid teleport:
secondlife://http|!!hg.osgrid.org|80+Oaks+Woods
Manual (World Map):
hg.osgrid.org:80:Oaks Woods

21
res/anims/README.md Normal file
View File

@@ -0,0 +1,21 @@
## Animations
###### In this place we are going to collaborate on animations.
For collaboration native QAvimator files (AVM) are preferred.
The final format for animations will be Biovision Hierarchy (BVH).
Free software to create animations:
* [Blender](http://www.blender.org/)
* [QAvimator](http://qavimator.org/)
Free software for in-depth BVH Editing:
* [bvhacker](http://www.bvhacker.com/)
Tutorials:
* Qavimator for Beginners
* [Part 1](http://www.youtube.com/watch?v=pOulVwCePxw)
* [Part 2](http://www.youtube.com/watch?v=GQZDG0Wmcwc)
License:
* All animations and binaries contributed to this repository are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://creativecommons.org/licenses/by-sa/4.0/)

View File

@@ -0,0 +1,482 @@
HIERARCHY
ROOT mPelvis
{
OFFSET 0.000000 1.067000 -0.000000
CHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation
JOINT mTorso
{
OFFSET 0.000000 0.084000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mChest
{
OFFSET 0.000000 0.205000 -0.015000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mNeck
{
OFFSET 0.000000 0.251000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mHead
{
OFFSET 0.000000 0.076000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mSkull
{
OFFSET 0.000000 0.079000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeRight
{
OFFSET -0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeLeft
{
OFFSET 0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT HEAD
{
OFFSET 0.000000 0.070000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT NECK
{
OFFSET 0.000000 0.020000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarLeft
{
OFFSET 0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderLeft
{
OFFSET 0.079000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowLeft
{
OFFSET 0.248000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristLeft
{
OFFSET 0.205000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT L_HAND
{
OFFSET 0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_ARM
{
OFFSET 0.100000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_ARM
{
OFFSET 0.120000 0.010000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarRight
{
OFFSET -0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderRight
{
OFFSET -0.079000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowRight
{
OFFSET -0.248000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristRight
{
OFFSET -0.205000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT R_HAND
{
OFFSET -0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_ARM
{
OFFSET -0.100000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_ARM
{
OFFSET -0.120000 0.010000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT CHEST
{
OFFSET 0.000000 0.070000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LEFT_PEC
{
OFFSET 0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT RIGHT_PEC
{
OFFSET -0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT UPPER_BACK
{
OFFSET 0.000000 0.017253 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT BELLY
{
OFFSET 0.000000 0.040000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LOWER_BACK
{
OFFSET 0.000000 0.022848 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipRight
{
OFFSET -0.129000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeRight
{
OFFSET 0.049000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleRight
{
OFFSET -0.000000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootRight
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeRight
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_LEG
{
OFFSET 0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipLeft
{
OFFSET 0.127000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeLeft
{
OFFSET -0.046000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleLeft
{
OFFSET 0.001000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootLeft
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeLeft
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_LEG
{
OFFSET -0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT PELVIS
{
OFFSET -0.000000 -0.020000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT BUTT
{
OFFSET -0.000000 -0.100000 -0.060000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
MOTION
Frames: 112
Frame Time: 0.022222
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.555755 -0.057458 -84.096424 -0.000000 0.000000 0.000001 0.879869 -0.033829 -4.403510 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.541243 15.193717 82.081778 0.000002 0.000000 0.000001 1.046036 0.047842 5.237183 -0.000001 -0.000001 -0.000000 0.000001 0.000000 0.000001 -0.000001 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.145395 -0.000000 -0.000000 0.100395 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.157401 0.000000 -0.555755 -0.057458 -84.096424 -0.000000 0.000000 0.000000 0.879869 -0.033829 -4.403510 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.178437 -0.000000 -1.541243 15.193717 82.081778 0.000002 -0.000000 0.000001 1.210449 0.064107 6.063092 0.000002 0.000000 -0.000000 0.000002 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.559283 -0.000000 -0.000000 0.386135 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.605468 0.000000 -0.555755 -0.057458 -84.096417 -0.000000 0.000000 0.000000 0.879869 -0.033829 -4.403510 0.000000 0.000001 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.686428 -0.000000 -1.541243 15.193715 82.081778 0.000001 -0.000000 -0.000001 1.356350 0.080549 6.797052 0.000004 -0.000001 0.000000 -0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 1.208283 -0.000000 -0.000000 0.834054 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 1.308064 0.000000 -0.555755 -0.057458 -84.096424 0.000000 -0.000000 0.000000 0.879869 -0.033829 -4.403511 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -1.483108 -0.000000 -1.541243 15.193718 82.081778 -0.000001 0.000000 -0.000000 1.484851 0.096603 7.444351 0.000001 0.000001 -0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 2.059028 -0.000000 -0.000000 1.420976 -0.000000 -0.000000 0.000003 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 2.229064 0.000000 -0.555755 -0.057458 -84.096424 0.000000 -0.000000 0.000000 0.879869 -0.033830 -4.403510 -0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -2.527640 -0.000000 -1.541244 15.193718 82.081778 -0.000001 -0.000000 -0.000000 1.597061 0.111829 8.010352 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 3.078094 -0.000000 -0.000001 2.123713 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 3.332272 0.000000 -0.555755 -0.057458 -84.096424 0.000000 -0.000000 0.000000 0.879869 -0.033829 -4.403510 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -3.779076 -0.000000 -1.541243 15.193713 82.081778 -0.000000 -0.000000 -0.000001 1.694116 0.125909 8.500500 -0.000002 -0.000002 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 4.231947 -0.000001 -0.000001 2.919066 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 4.581364 0.000001 -0.555755 -0.057459 -84.096424 -0.000001 -0.000000 0.000000 0.879869 -0.033829 -4.403510 -0.000000 -0.000003 -0.000000 -0.000000 -0.000000 0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -5.196270 -0.000000 -1.541243 15.193715 82.081778 -0.000000 0.000000 0.000001 1.777143 0.138631 8.920283 0.000001 0.000003 -0.000000 0.000001 -0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 5.486930 -0.000001 -0.000001 3.783815 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 5.939883 0.000001 -0.555755 -0.057459 -84.096424 -0.000000 -0.000000 0.000000 0.879869 -0.033829 -4.403510 0.000001 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000001 -6.737860 -0.000000 -1.541243 15.193715 82.081778 0.000001 0.000000 -0.000000 1.847269 0.149859 9.275211 -0.000001 -0.000000 -0.000000 0.000001 0.000000 -0.000001 0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 6.809296 -0.000001 -0.000001 4.694758 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 7.371267 0.000001 -0.555755 -0.057459 -84.096424 0.000001 -0.000000 0.000000 0.879869 -0.033829 -4.403510 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000001 -8.362298 -0.000000 -1.541244 15.193717 82.081778 -0.000000 0.000000 0.000001 1.905624 0.159544 9.570815 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 8.165248 -0.000001 -0.000002 5.628710 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 8.838926 0.000001 -0.555755 -0.057458 -84.096424 0.000002 -0.000000 -0.000000 0.879869 -0.033830 -4.403510 0.000000 -0.000001 0.000000 0.000002 -0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000001 -10.027969 -0.000000 -1.541244 15.193715 82.081778 0.000000 -0.000000 0.000000 1.953325 0.167691 9.812632 -0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.521022 -0.000001 -0.000002 6.562546 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 10.306330 0.000002 -0.555755 -0.057458 -84.096424 -0.000000 -0.000000 0.000000 0.879869 -0.033831 -4.403510 -0.000001 -0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000001 -11.693313 -0.000000 -1.541244 15.193718 82.081778 0.000000 -0.000000 0.000002 1.991484 0.174357 10.006199 0.000000 0.000002 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000002 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 10.842970 -0.000002 -0.000002 7.473206 -0.000001 -0.000001 0.000000 0.000022 -179.999991 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 11.737109 0.000002 -0.555755 -0.057459 -84.096424 -0.000001 -0.000000 0.000001 0.879869 -0.033829 -4.403510 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000001 -13.316980 -0.000000 -1.541244 15.193717 82.081778 0.000000 0.000000 0.000001 2.021206 0.179641 10.157052 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 12.097618 -0.000002 -0.000002 8.337726 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 13.095140 0.000002 -0.555755 -0.057459 -84.096424 -0.000000 -0.000000 0.000000 0.879869 -0.033829 -4.403510 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000001 -14.857951 -0.000000 -1.541244 15.193715 82.081778 0.000000 -0.000000 -0.000000 2.043589 0.183674 10.270695 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 13.251708 -0.000002 -0.000002 9.133227 -0.000001 -0.000002 0.000000 0.000022 -179.999991 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 14.344587 0.000002 -0.555755 -0.057459 -84.096424 -0.000000 0.000000 -0.000000 0.879867 -0.033829 -4.403510 0.000001 -0.000001 -0.000001 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000001 -16.275624 -0.000000 -1.541243 15.193713 82.081778 -0.000000 -0.000000 -0.000001 2.059728 0.186612 10.352665 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 14.272214 -0.000002 -0.000003 9.836911 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 15.449905 0.000002 -0.555755 -0.057459 -84.096424 -0.000001 0.000000 0.000000 0.879868 -0.033830 -4.403509 -0.000000 -0.000001 -0.000001 0.000002 -0.000000 0.000001 -0.000001 0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000001 -17.529797 -0.000000 -1.541243 15.193715 82.081778 -0.000000 -0.000000 -0.000001 2.070710 0.188623 10.408452 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 -0.000002 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 15.126282 -0.000002 -0.000003 10.426032 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000002 16.375761 0.000003 -0.555755 -0.057459 -84.096424 -0.000001 0.000000 -0.000000 0.879871 -0.033830 -4.403511 -0.000002 -0.000001 -0.000000 0.000002 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000001 -18.580602 -0.000000 -1.541243 15.193715 82.081778 0.000000 0.000000 -0.000001 2.077619 0.189892 10.443552 0.000000 0.000004 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000004 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 15.781130 -0.000002 -0.000003 10.877821 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 17.086878 0.000003 -0.555755 -0.057459 -84.096424 -0.000003 0.000000 0.000000 0.879868 -0.033829 -4.403510 0.000001 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000001 -19.388286 -0.000000 -1.541244 15.193711 82.081778 -0.000001 -0.000000 -0.000001 2.081535 0.190617 10.463454 0.000000 0.000002 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 -0.000002 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 16.203878 -0.000002 -0.000003 11.169445 -0.000002 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 17.547866 0.000003 -0.555755 -0.057459 -84.096424 -0.000001 -0.000000 0.000000 0.879870 -0.033831 -4.403510 -0.000002 -0.000004 -0.000000 0.000002 0.000000 0.000001 -0.000001 -0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000001 -19.912952 -0.000000 -1.541243 15.193711 82.081778 -0.000001 -0.000000 -0.000001 2.083540 0.190988 10.473643 0.000000 0.000003 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -0.000002 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 16.361360 -0.000002 -0.000003 11.277867 -0.000001 -0.000002 0.000000 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000002 17.722907 0.000003 -0.555755 -0.057461 -84.096424 0.000001 -0.000000 -0.000000 0.879870 -0.033831 -4.403510 -0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000001 -20.114142 -0.000000 -1.541244 15.193713 82.081778 -0.000001 -0.000000 0.000000 2.084716 0.191203 10.479613 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 0.999411 0.025898 0.020936 -0.000000 -0.000000 0.049707 -0.000268 -0.003627 -0.049322 0.000077 0.001964 16.264545 0.060169 -0.016577 11.243543 0.122438 -0.034831 -0.000000 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.077782 17.654506 0.088358 -0.694010 -0.159613 -83.860598 -0.000001 -0.235233 0.000000 0.612298 -0.046123 -4.473096 -0.000001 -0.000002 0.000000 0.000002 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.003820 -19.985420 -0.058732 -1.595238 15.300204 81.855009 0.000000 0.260436 0.000000 1.831409 0.169994 10.533784 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.045435 -0.004534 0.000082 0.276731 0.001023 -0.016981 0.191858 -0.001432 -0.020876 -0.000011 0.000015 -0.000034 -0.000000 0.000000 0.000000 -0.000011 0.000015 -0.000032 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000136 -0.044687 0.004186 0.000101 0.276321 0.001608 -0.017157 0.194092 0.016564 -0.004384 0.000013 -0.000014 0.000023 0.000000 0.000000 0.000000 0.000012 -0.000014 0.000021 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 0.802788 0.101237 0.081843 -0.000000 -0.000000 0.194771 -0.001064 -0.014212 -0.192821 0.000293 0.007677 15.956365 0.235660 -0.064334 11.126557 0.479377 -0.135836 0.000003 0.000022 -179.999991 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.303555 17.416241 0.345022 -1.095706 -0.461453 -83.172682 0.000001 -0.921478 0.000000 -0.169404 -0.080175 -4.676689 -0.000003 -0.000001 -0.000000 0.000001 -0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.013609 -19.560613 -0.229875 -1.750568 15.612370 81.192706 -0.000001 1.020779 -0.000000 1.089470 0.106786 10.680561 0.000000 0.000001 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000002 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.177621 -0.017727 0.000300 1.085128 0.003528 -0.067010 0.751531 -0.005317 -0.081327 -0.000009 0.000016 -0.000030 -0.000000 -0.000000 0.000000 -0.000011 0.000015 -0.000030 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -0.174696 0.016365 0.000415 1.083510 0.005828 -0.067028 0.760186 0.064764 -0.017853 0.000007 -0.000013 0.000027 0.000000 0.000000 -0.000000 0.000009 -0.000013 0.000025 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 0.486347 0.222487 0.179865 -0.000000 -0.000000 0.429131 -0.002409 -0.031307 -0.423813 0.000610 0.016874 15.451163 0.519243 -0.139520 10.933550 1.055652 -0.297212 0.000001 0.000022 -179.999991 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.664790 17.017478 0.756310 -1.740355 -0.961868 -82.059894 0.000001 -2.031872 -0.000001 -1.437733 -0.129499 -5.007892 0.000000 -0.000002 -0.000001 0.000002 -0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.025644 -18.858554 -0.505580 -1.994904 16.122091 80.118638 0.000000 2.252860 -0.000001 -0.113530 0.001050 10.913204 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.390387 -0.038962 0.000588 2.396570 0.006089 -0.148231 1.656465 -0.011521 -0.178204 -0.000009 0.000014 -0.000031 0.000001 0.000000 0.000000 -0.000011 0.000014 -0.000031 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000135 -0.383966 0.035967 0.000979 2.392956 0.011176 -0.148040 1.675327 0.142349 -0.041332 0.000006 -0.000010 0.000022 -0.000001 0.000000 -0.000000 0.000007 -0.000010 0.000020 0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 0.059306 0.386114 0.312150 -0.000000 -0.000000 0.746736 -0.004342 -0.054466 -0.735632 0.000979 0.029291 14.763252 0.903966 -0.237506 10.671604 1.836469 -0.512544 0.000001 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -1.147683 16.466674 1.307378 -2.605896 -1.665984 -80.547492 -0.000000 -3.541816 0.000001 -3.169161 -0.184959 -5.461512 -0.000000 -0.000001 -0.000000 -0.000001 -0.000001 0.000001 -0.000001 -0.000000 0.000002 -0.000000 -0.000001 0.000000 -0.034932 -17.897732 -0.877803 -2.312978 16.824115 78.653030 0.000000 3.931758 0.000000 -1.752703 -0.149685 11.224572 0.000000 -0.000003 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000001 0.000000 -0.000002 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.677577 -0.067627 0.000850 4.186522 0.006584 -0.259138 2.885427 -0.020439 -0.308461 -0.000006 0.000011 -0.000023 0.000000 -0.000000 0.000000 -0.000004 0.000011 -0.000024 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000136 -0.666448 0.062424 0.001852 4.180115 0.015486 -0.258762 2.917927 0.246998 -0.076221 0.000005 -0.000010 0.000024 0.000000 -0.000000 -0.000000 0.000006 -0.000010 0.000023 0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 -0.469118 0.588589 0.475846 -0.000000 -0.000000 1.141547 -0.006925 -0.083239 -1.121620 0.001342 0.044665 13.906955 1.382986 -0.353013 10.348064 2.807178 -0.775004 0.000004 0.000022 -179.999991 0.000003 -0.000000 0.000000 0.000003 -0.000000 0.000000 0.000003 -0.000000 0.000000 0.000000 0.000000 -0.000000 -1.737536 15.771837 1.982568 -3.668028 -2.583324 -78.659962 0.000001 -5.427957 -0.000000 -5.342414 -0.235117 -6.032780 -0.000001 -0.000001 0.000000 -0.000002 0.000000 0.000001 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.035625 -16.696626 -1.338511 -2.686637 17.714808 76.813591 0.000000 6.034404 -0.000001 -3.804570 -0.349298 11.606886 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -1.033037 -0.103107 0.000977 6.432838 0.002304 -0.398255 4.417858 -0.032817 -0.469091 -0.000010 0.000014 -0.000027 0.000000 -0.000000 -0.000000 -0.000011 0.000013 -0.000025 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 -1.016101 0.095165 0.003115 6.422817 0.016006 -0.397807 4.467106 0.376241 -0.124265 0.000008 -0.000009 0.000023 0.000001 -0.000000 0.000000 0.000010 -0.000010 0.000021 0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -1.089710 0.826379 0.668098 -0.000000 -0.000000 1.607526 -0.010228 -0.117175 -1.575120 0.001636 0.062730 12.896617 1.949414 -0.480336 9.970401 3.953065 -1.077546 0.000001 0.000022 -179.999991 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -2.419109 14.940858 2.765736 -4.899507 -3.725922 -76.422112 -0.000001 -7.667173 -0.000002 -7.936749 -0.266569 -6.716485 -0.000002 -0.000001 0.000000 -0.000001 0.000001 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000001 0.000000 -0.021397 -15.273963 -1.879885 -3.094876 18.790911 74.616408 -0.000000 8.538199 -0.000002 -6.245806 -0.602501 12.051452 0.000000 0.000000 -0.000000 0.000000 0.000001 0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -1.450615 -0.144788 0.000845 9.114081 -0.009938 -0.563932 6.233357 -0.049620 -0.657057 -0.000002 0.000009 -0.000020 0.000000 0.000000 0.000000 -0.000002 0.000010 -0.000020 -0.000001 0.000001 -0.000000 -0.000000 0.000003 0.000135 -1.426881 0.133619 0.004853 9.099590 0.009504 -0.563635 6.302150 0.527390 -0.187431 0.000010 -0.000006 0.000017 0.000000 0.000000 -0.000000 0.000010 -0.000007 0.000017 0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
0.000000 -1.793252 1.095952 0.886053 -0.000000 -0.000000 2.138630 -0.014330 -0.155820 -2.089463 0.001797 0.083221 11.746667 2.596163 -0.613547 9.546057 5.259170 -1.413063 0.000002 0.000023 -179.999991 -0.000001 0.000001 0.000000 -0.000001 0.000001 0.000000 -0.000001 0.000001 0.000000 -0.000001 -0.000000 0.000000 -3.176959 13.981889 3.640569 -6.269573 -5.106282 -73.859999 -0.000001 -10.235633 -0.000001 -10.930245 -0.264363 -7.506136 -0.000000 -0.000003 0.000003 -0.000001 0.000000 0.000002 -0.000001 -0.000001 -0.000001 -0.000000 -0.000001 -0.000000 0.014232 -13.649021 -2.494485 -3.513798 20.048227 72.076609 -0.000001 11.419680 0.000000 -9.052016 -0.914304 12.548424 -0.000000 -0.000001 0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.924151 -0.192051 0.000326 12.207874 -0.033676 -0.754142 8.311125 -0.071896 -0.869206 -0.000002 0.000007 -0.000016 0.000004 0.000000 0.000000 -0.000004 0.000007 -0.000016 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -1.892740 0.177212 0.007158 12.188035 -0.007611 -0.754343 8.401947 0.697477 -0.267766 0.000007 -0.000004 0.000014 -0.000002 0.000000 0.000000 0.000003 -0.000004 0.000014 0.000001 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -2.570529 1.393778 1.126858 -0.000000 -0.000000 2.728806 -0.019308 -0.198717 -2.657970 0.001761 0.105871 10.471607 3.315834 -0.746688 9.082324 6.710120 -1.774543 -0.000000 0.000021 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -3.995757 12.903634 4.590875 -7.743584 -6.735202 -71.001490 -0.000000 -13.107913 0.000000 -14.298175 -0.212590 -8.393135 -0.000002 0.000002 0.000001 0.000001 0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000002 -0.000000 0.077614 -11.841830 -3.175368 -3.916768 21.480340 69.209105 0.000001 14.653264 -0.000004 -12.196671 -1.289359 13.086663 0.000000 0.000002 -0.000001 -0.000000 -0.000001 0.000002 0.000002 -0.000000 -0.000002 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -2.447474 -0.244276 -0.000700 15.689298 -0.072618 -0.966300 10.629488 -0.100621 -1.102264 0.000003 0.000006 -0.000014 -0.000001 -0.000000 0.000000 0.000001 0.000006 -0.000015 -0.000002 -0.000000 0.000000 -0.000000 0.000003 0.000137 -2.407619 0.225369 0.010118 15.663207 -0.039121 -0.967475 10.744508 0.883214 -0.367293 0.000008 -0.000005 0.000012 -0.000003 0.000000 -0.000000 0.000007 -0.000004 0.000010 0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -3.412322 1.716325 1.387655 -0.000000 -0.000000 3.371981 -0.025235 -0.245405 -3.273937 0.001467 0.130409 9.086061 4.100623 -0.873967 8.586254 8.290011 -2.155185 -0.000002 0.000022 -179.999991 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 0.000001 -0.000000 0.000000 -4.860565 11.715602 5.600841 -9.283065 -8.619437 -67.876508 0.000001 -16.256275 -0.000000 -18.011479 -0.095181 -9.366042 -0.000001 -0.000001 0.000001 0.000001 0.000001 -0.000003 -0.000000 -0.000001 0.000000 -0.000000 -0.000002 -0.000000 0.174751 -9.873368 -3.916150 -4.274705 23.077345 66.029105 -0.000000 18.210112 -0.000002 -15.650142 -1.731298 13.653703 -0.000000 0.000003 -0.000001 0.000003 -0.000001 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000002 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -3.014406 -0.300840 -0.002351 19.529427 -0.130428 -1.197102 13.165471 -0.136585 -1.352771 0.000002 0.000002 -0.000007 0.000005 0.000000 -0.000000 0.000000 0.000002 -0.000007 -0.000002 0.000000 -0.000000 -0.000000 0.000003 0.000138 -2.965444 0.277509 0.013813 19.496194 -0.088788 -1.199861 13.306588 1.080961 -0.487814 0.000001 -0.000003 0.000003 -0.000003 0.000000 -0.000000 0.000008 -0.000003 0.000003 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -4.309415 2.060061 1.665591 -0.000000 -0.000000 4.062069 -0.032177 -0.295421 -3.930644 0.000865 0.156566 7.604764 4.942260 -0.989937 8.064584 9.982360 -2.548509 0.000001 0.000021 -179.999991 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 -5.757102 10.428251 6.655262 -10.846188 -10.759406 -64.516847 -0.000004 -19.650085 -0.000001 -22.035623 0.103044 -10.410117 -0.000000 -0.000005 -0.000001 0.000000 0.000002 -0.000002 -0.000000 0.000001 0.000002 -0.000000 -0.000001 -0.000000 0.311116 -7.765630 -4.711030 -4.556674 24.824753 62.552655 0.000001 22.057290 0.000001 -19.379026 -2.242071 14.235918 -0.000001 0.000006 -0.000001 0.000001 -0.000002 0.000000 -0.000001 0.000001 0.000003 0.000000 0.000001 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 -3.618750 -0.361115 -0.004727 23.694135 -0.210447 -1.442438 15.894602 -0.180248 -1.617101 0.000017 0.000001 0.000000 0.000003 0.000000 0.000000 0.000010 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000137 -3.560126 0.333052 0.018310 23.652875 -0.160077 -1.447514 16.063311 1.286753 -0.630834 0.000007 -0.000003 0.000005 -0.000005 -0.000000 0.000000 0.000005 -0.000003 0.000003 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -5.252592 2.421454 1.957808 -0.000000 -0.000000 4.792961 -0.040185 -0.348300 -4.621344 -0.000093 0.184067 6.042577 5.831996 -1.089671 7.523669 11.770013 -2.948423 0.000001 0.000020 -179.999991 -0.000001 -0.000002 0.000000 -0.000001 -0.000002 0.000000 -0.000001 -0.000002 0.000000 0.000000 0.000000 -0.000000 -6.671925 9.053103 7.739742 -12.388734 -13.147106 -60.955607 0.000001 -23.255471 -0.000001 -26.329806 0.395143 -11.507152 0.000001 0.000000 -0.000003 0.000001 0.000003 -0.000001 0.000001 -0.000001 -0.000001 -0.000000 0.000000 0.000000 0.491508 -5.541652 -5.554741 -4.730778 26.702645 58.797110 -0.000001 26.157044 -0.000004 -23.345759 -2.821321 14.818896 -0.000001 -0.000000 -0.000000 -0.000002 0.000002 -0.000005 -0.000002 -0.000002 -0.000002 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -4.254297 -0.424470 -0.007911 28.143180 -0.315375 -1.697378 18.790591 -0.231620 -1.891494 0.000008 -0.000000 0.000003 0.000006 0.000000 0.000000 0.000010 -0.000000 0.000002 0.000002 0.000000 0.000000 -0.000000 0.000002 0.000136 -4.185560 0.391412 0.023661 28.093077 -0.255847 -1.705622 18.988049 1.496335 -0.797353 0.000002 0.000000 0.000002 -0.000005 -0.000000 0.000000 0.000002 -0.000000 0.000001 -0.000002 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -6.232636 2.796974 2.261449 -0.000000 -0.000000 5.558533 -0.049298 -0.403575 -5.339270 -0.001440 0.212638 4.414510 6.760621 -1.168920 6.969483 13.635240 -3.349301 0.000002 0.000024 -179.999991 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -7.592625 7.602790 8.840813 -13.865484 -15.764584 -57.226289 -0.000001 -27.035190 -0.000005 -30.846852 0.790696 -12.635773 -0.000001 -0.000003 0.000001 0.000002 0.000005 0.000001 -0.000001 0.000001 -0.000002 -0.000000 0.000001 0.000000 0.719941 -3.225466 -6.442466 -4.765475 28.685306 54.781723 -0.000004 30.466684 0.000001 -27.508597 -3.465875 15.387982 -0.000000 0.000005 -0.000001 -0.000001 -0.000001 0.000000 -0.000002 -0.000002 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -4.914822 -0.490272 -0.011964 32.829871 -0.446955 -1.956304 21.825402 -0.290166 -2.172119 0.000007 -0.000005 0.000008 -0.000003 -0.000000 0.000000 0.000007 -0.000006 0.000009 -0.000004 0.000001 0.000000 0.000000 0.000002 0.000135 -4.835622 0.452004 0.029899 32.770199 -0.378025 -1.968646 22.052299 1.705265 -0.987820 0.000004 0.000003 -0.000001 -0.000002 -0.000000 -0.000000 0.000006 0.000003 -0.000003 0.000001 0.000001 0.000000 0.000001 0.000002 -0.000099 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
-0.000000 -7.240330 3.183088 2.573655 -0.000000 -0.000000 6.352636 -0.059528 -0.460776 -6.077633 -0.003198 0.242002 2.735712 7.718507 -1.224257 6.407574 15.559716 -3.746010 0.000002 0.000021 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 -8.507932 6.090996 9.946055 -15.231885 -18.583155 -53.361836 0.000000 -30.948916 0.000001 -35.533595 1.294643 -13.772275 0.000001 0.000000 -0.000001 0.000000 -0.000001 0.000000 -0.000001 0.000000 0.000003 -0.000001 0.000000 -0.000000 0.999546 -0.841945 -7.369706 -4.631200 30.741254 50.528264 -0.000001 34.938740 -0.000006 -31.821944 -4.169460 15.929055 -0.000001 0.000000 -0.000000 -0.000000 -0.000002 -0.000001 -0.000000 -0.000001 -0.000004 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -5.594094 -0.557888 -0.016924 37.701241 -0.605679 -2.213129 24.969331 -0.354708 -2.455144 0.000019 -0.000009 0.000015 -0.000003 -0.000000 0.000000 0.000016 -0.000009 0.000015 -0.000001 0.000000 0.000000 -0.000001 0.000003 0.000136 -5.504174 0.514239 0.037030 37.631412 -0.527315 -2.230545 25.225801 1.909031 -1.201983 0.000002 0.000007 -0.000010 0.000001 0.000000 0.000000 0.000000 0.000006 -0.000010 -0.000006 0.000001 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -8.266456 3.576265 2.891570 -0.000000 -0.000001 7.169109 -0.070873 -0.519435 -6.829630 -0.005378 0.271883 1.021477 8.695714 -1.253197 5.843105 17.524662 -4.133937 0.000003 0.000024 -179.999991 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000001 0.000000 0.000000 -9.407760 4.532388 11.044117 -16.445958 -21.563715 -49.393681 0.000003 -34.953602 -0.000007 -40.332182 1.906323 -14.891810 0.000001 0.000002 -0.000000 -0.000003 0.000003 -0.000001 0.000002 0.000001 -0.000002 0.000000 0.000000 0.000000 1.332477 1.583407 -8.332133 -4.302399 32.834143 46.061932 0.000001 39.521612 -0.000002 -36.237080 -4.922672 16.429342 0.000001 0.000005 0.000002 0.000002 -0.000001 0.000000 0.000001 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000000 -6.285864 -0.626680 -0.022798 42.698928 -0.790599 -2.461665 28.191097 -0.423391 -2.736873 0.000015 -0.000011 0.000019 -0.000002 0.000000 -0.000000 0.000015 -0.000011 0.000019 -0.000000 0.000001 -0.000000 -0.000000 0.000003 0.000137 -6.185067 0.577533 0.045039 42.618485 -0.702987 -2.485121 28.476724 2.103204 -1.438861 -0.000004 0.000009 -0.000014 0.000000 0.000000 -0.000000 -0.000003 0.000008 -0.000016 0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -9.301800 3.972974 3.212338 -0.000000 -0.000001 8.001787 -0.083303 -0.579086 -7.588450 -0.007975 0.302002 -0.712749 9.682090 -1.254295 5.280864 19.510949 -4.509021 0.000001 0.000024 -179.999991 -0.000001 0.000004 -0.000000 -0.000001 0.000004 -0.000000 -0.000001 0.000004 -0.000000 -0.000000 -0.000001 0.000000 -10.283280 2.942473 12.124762 -17.470155 -24.658095 -45.351230 -0.000002 -39.004284 -0.000006 -45.181708 2.619002 -15.970043 0.000001 -0.000001 0.000000 0.000000 -0.000001 0.000001 -0.000000 0.000001 -0.000001 0.000001 -0.000000 -0.000001 1.719829 4.024713 -9.325379 -3.759782 34.924137 41.412332 0.000002 44.160691 -0.000005 -40.703187 -5.713312 16.878306 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000001 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -6.983886 -0.696016 -0.029567 47.760538 -0.999254 -2.696026 31.458383 -0.493659 -3.013857 0.000016 -0.000013 0.000028 -0.000001 -0.000000 0.000001 0.000015 -0.000013 0.000028 0.000000 0.000001 -0.000000 0.000000 0.000003 0.000136 -6.872143 0.641298 0.053883 47.669260 -0.902797 -2.726431 31.772025 2.283584 -1.696752 -0.000002 0.000012 -0.000021 -0.000000 -0.000000 -0.000000 -0.000000 0.000011 -0.000019 0.000002 0.000001 -0.000000 0.000001 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -10.337144 4.369683 3.533099 -0.000000 -0.000001 8.844494 -0.096764 -0.639268 -8.347271 -0.010970 0.332085 -2.451367 10.667397 -1.227207 4.725317 21.499264 -4.867738 0.000003 0.000020 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 -11.126868 1.337423 13.178788 -18.273114 -27.811456 -41.261661 -0.000001 -43.054965 -0.000001 -50.020361 3.420123 -16.984814 0.000002 0.000001 0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000005 0.000001 -0.000000 -0.000000 -0.000001 2.161540 6.456028 -10.344848 -2.992623 36.969956 36.614855 0.000003 48.799789 -0.000006 -45.168461 -6.526909 17.268282 -0.000000 0.000004 -0.000001 0.000000 -0.000000 -0.000001 0.000003 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -7.681911 -0.765263 -0.037180 52.821623 -1.227767 -2.911078 34.738124 -0.562298 -3.283006 0.000014 -0.000016 0.000027 -0.000000 -0.000001 0.000000 0.000012 -0.000017 0.000031 0.000002 0.000001 0.000000 -0.000000 0.000003 0.000137 -7.559239 0.704954 0.063490 52.719467 -1.123073 -2.949225 35.077857 2.446411 -1.973253 -0.000001 0.000013 -0.000019 -0.000000 -0.000000 -0.000000 -0.000001 0.000013 -0.000018 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -11.363271 4.762860 3.851000 -0.000000 -0.000001 9.691054 -0.111177 -0.699519 -9.099262 -0.014331 0.361856 -4.178629 11.641466 -1.172729 4.180660 23.470198 -5.207103 0.000002 0.000020 -179.999991 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000001 -0.000000 -11.932060 -0.266093 14.197978 -18.831305 -30.965387 -37.150693 0.000000 -47.059652 -0.000006 -54.787481 4.292048 -17.917675 -0.000000 -0.000002 0.000001 0.000001 0.000000 0.000000 0.000000 0.000004 -0.000000 0.000001 0.000000 -0.000002 2.656292 8.851669 -11.385460 -2.000939 38.931324 31.711783 0.000001 53.382655 -0.000014 -49.581538 -7.347586 17.595049 0.000002 0.000002 -0.000000 -0.000001 0.000000 -0.000002 0.000003 0.000005 -0.000004 0.000000 0.000001 -0.000002 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -8.373690 -0.833791 -0.045556 57.817811 -1.471106 -3.102812 37.997022 -0.625480 -3.541677 0.000020 -0.000019 0.000032 -0.000000 -0.000000 0.000001 0.000018 -0.000019 0.000033 0.000001 0.000001 0.000000 -0.000001 0.000003 0.000137 -8.240183 0.767919 0.073764 57.704956 -1.358948 -3.149334 38.360105 2.588467 -2.265372 -0.000005 0.000015 -0.000024 -0.000000 -0.000000 -0.000000 -0.000004 0.000014 -0.000024 0.000002 0.000001 -0.000000 0.000001 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -12.370965 5.148974 4.163186 -0.000001 -0.000001 10.535289 -0.126435 -0.759387 -9.837620 -0.018013 0.391042 -5.878637 12.594323 -1.092792 3.650869 25.404458 -5.524673 0.000002 0.000020 -179.999991 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000001 -0.000000 -12.693479 -1.851135 15.175014 -19.130417 -34.061272 -33.043461 -0.000003 -50.973388 -0.000008 -59.425535 5.213397 -18.754998 -0.000000 -0.000002 0.000003 -0.000002 0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000001 0.000000 -0.000001 3.201407 11.186541 -12.441445 -0.797040 40.771585 26.753322 0.000006 57.854708 -0.000012 -53.892535 -8.158962 17.858016 -0.000003 -0.000002 -0.000000 -0.000000 -0.000002 0.000001 0.000002 0.000001 -0.000002 -0.000001 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -9.052988 -0.900978 -0.054586 62.686930 -1.723459 -3.268609 41.202160 -0.678878 -3.787768 0.000018 -0.000022 0.000036 0.000000 0.000000 0.000000 0.000017 -0.000021 0.000037 0.000003 0.000002 -0.000000 0.000001 0.000002 0.000136 -8.908828 0.829621 0.084579 62.563713 -1.604728 -3.323938 41.584910 2.707215 -2.569663 -0.000008 0.000016 -0.000026 0.000001 0.000000 -0.000000 -0.000006 0.000016 -0.000027 0.000001 0.000001 0.000000 0.000001 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -13.351008 5.524494 4.466805 -0.000001 -0.000001 11.371060 -0.142407 -0.818429 -10.555533 -0.021951 0.419372 -7.535352 13.516301 -0.990428 3.139793 27.283016 -5.818518 0.000002 0.000021 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -13.406729 -3.400658 16.103358 -19.166646 -37.043674 -28.966474 -0.000004 -54.753102 -0.000008 -63.881530 6.160630 -19.488582 0.000001 -0.000003 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 3.792744 13.436435 -13.506106 0.593713 42.460090 21.798036 0.000002 62.164345 -0.000015 -58.054217 -8.945067 18.060108 -0.000000 0.000003 0.000000 0.000001 -0.000001 -0.000001 0.000000 0.000003 -0.000001 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -9.713570 -0.966204 -0.064131 67.370889 -1.978652 -3.407346 44.321323 -0.717785 -4.019729 0.000018 -0.000024 0.000043 -0.000002 0.000000 0.000001 0.000017 -0.000025 0.000043 0.000000 0.000001 -0.000000 -0.000000 0.000003 0.000137 -9.559009 0.889493 0.095786 67.237844 -1.854317 -3.471700 44.719209 2.800869 -2.882395 -0.000008 0.000021 -0.000034 0.000000 -0.000000 -0.000000 -0.000004 0.000021 -0.000036 0.000001 -0.000000 -0.000000 -0.000001 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -14.294186 5.885888 4.759009 -0.000001 -0.000001 12.192217 -0.158939 -0.876206 -11.246227 -0.026074 0.446579 -9.132625 14.398172 -0.869700 2.651197 29.087170 -6.087205 0.000003 0.000024 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 -14.068291 -4.897686 16.977108 -18.947682 -39.863030 -24.949455 -0.000005 -58.358489 -0.000007 -68.108051 7.109719 -20.115710 0.000001 -0.000002 0.000002 -0.000000 -0.000000 -0.000001 -0.000000 0.000003 -0.000000 0.000000 0.000000 0.000002 4.424607 15.578263 -14.571590 2.133464 43.974124 16.912310 0.000005 66.264105 -0.000019 -62.022762 -9.691110 18.207353 -0.000002 0.000002 -0.000001 -0.000001 -0.000004 -0.000001 0.000002 0.000003 -0.000003 0.000000 -0.000000 0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000002 -0.000001 0.000000 -0.000001 -0.000000 -0.000000 -10.349223 -1.028859 -0.074024 71.816973 -2.230596 -3.519350 47.323580 -0.737188 -4.236566 0.000019 -0.000025 0.000044 -0.000001 0.000000 0.000000 0.000021 -0.000025 0.000042 0.000000 0.000001 -0.000000 0.000000 0.000003 0.000136 -10.184596 0.946975 0.107209 71.674796 -2.101630 -3.592712 47.731097 2.868409 -3.199733 -0.000007 0.000019 -0.000030 -0.000001 0.000000 0.000000 -0.000008 0.000018 -0.000032 0.000000 0.000001 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -15.191278 6.229623 5.036946 -0.000001 -0.000001 12.992646 -0.175848 -0.932292 -11.902918 -0.030298 0.472399 -10.654174 15.231184 -0.735606 2.188864 30.798658 -6.329773 0.000003 0.000021 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000001 0.000001 -0.000000 -14.675353 -6.325439 17.790889 -18.493516 -42.477701 -21.027588 -0.000008 -61.752287 -0.000008 -72.063345 8.037509 -20.638521 -0.000002 -0.000001 0.000005 -0.000000 -0.000001 -0.000000 0.000001 0.000005 0.000001 0.000001 0.000000 -0.000002 5.089664 17.590259 -15.628735 3.773736 45.299942 12.168782 0.000006 70.111263 -0.000014 -65.758124 -10.384030 18.308363 0.000001 -0.000000 0.000002 -0.000001 -0.000003 0.000000 -0.000000 0.000002 0.000000 0.000000 -0.000003 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000001 -0.000000 -10.953746 -1.088337 -0.084078 75.978847 -2.473622 -3.606197 50.179419 -0.731933 -4.437760 0.000013 -0.000025 0.000047 0.000000 -0.000001 -0.000000 0.000011 -0.000025 0.000046 -0.000000 0.000001 0.000001 0.000000 0.000003 0.000135 -10.779448 1.001512 0.118653 75.828303 -2.340968 -3.688338 50.590193 2.909570 -3.517887 -0.000007 0.000019 -0.000035 -0.000004 -0.000000 0.000001 -0.000005 0.000018 -0.000036 -0.000003 0.000001 -0.000000 -0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -16.033073 6.552170 5.297772 -0.000001 -0.000001 13.766258 -0.192934 -0.986271 -12.518869 -0.034530 0.496572 -12.083681 16.007151 -0.593935 1.756624 32.399737 -6.545716 0.000002 0.000021 -179.999991 0.000000 -0.000003 -0.000001 0.000000 -0.000003 -0.000001 0.000000 -0.000003 -0.000001 0.000000 -0.000000 -0.000000 -15.225731 -7.667484 18.539734 -17.836650 -44.855119 -17.243253 -0.000010 -64.900649 -0.000012 -75.711383 8.922844 -21.063293 -0.000003 0.000000 0.000003 -0.000001 -0.000002 0.000001 -0.000000 0.000001 0.000000 0.000002 0.000001 -0.000003 5.778956 19.452128 -16.666915 5.458481 46.433108 7.643803 0.000004 73.668139 -0.000023 -69.224322 -11.012771 18.373535 -0.000002 0.000003 -0.000001 -0.000000 0.000000 0.000000 0.000001 -0.000001 -0.000000 0.000002 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000002 0.000000 0.000000 -11.520960 -1.144044 -0.094080 79.816484 -2.702733 -3.670446 52.861122 -0.696785 -4.623189 0.000020 -0.000028 0.000048 -0.000005 -0.000000 0.000000 0.000016 -0.000028 0.000049 0.000003 0.000002 -0.000000 -0.000001 0.000003 0.000136 -11.337457 1.052558 0.129901 79.658434 -2.567261 -3.760940 53.267969 2.924755 -3.833326 -0.000011 0.000020 -0.000033 0.000001 -0.000000 -0.000000 -0.000010 0.000020 -0.000033 0.000001 0.000001 0.000000 -0.000001 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -16.810349 6.849995 5.538640 -0.000001 -0.000001 14.506992 -0.209976 -1.037736 -13.087358 -0.038666 0.518840 -13.404719 16.718370 -0.451127 1.358449 33.873155 -6.734907 0.000002 0.000021 -179.999991 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000001 -0.000000 0.000000 -15.717659 -8.907746 19.218901 -17.021784 -46.972092 -13.647260 -0.000013 -67.772928 -0.000015 -79.021129 9.747187 -21.399242 0.000003 -0.000001 -0.000001 -0.000000 0.000005 -0.000002 -0.000000 0.000002 -0.000000 0.000003 0.000000 0.000003 6.481869 21.144980 -17.673970 7.127920 47.377665 3.414274 0.000009 76.901708 -0.000025 -72.389207 -11.568302 18.414397 -0.000000 -0.000004 -0.000001 0.000001 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000003 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -12.044693 -1.195388 -0.103805 83.295899 -2.913730 -3.715315 55.342701 -0.626488 -4.792982 0.000019 -0.000025 0.000045 0.000002 -0.000001 -0.000001 0.000016 -0.000024 0.000044 0.000001 0.000002 -0.000000 -0.000001 0.000002 0.000136 -11.852528 1.099577 0.140725 83.131243 -2.776200 -3.813559 55.737615 2.914945 -4.142829 -0.000011 0.000020 -0.000032 -0.000002 -0.000000 0.000001 -0.000008 0.000020 -0.000034 0.000003 0.000002 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -17.513891 7.119570 5.756707 -0.000001 -0.000001 15.208806 -0.226735 -1.086291 -13.601698 -0.042598 0.538952 -14.600909 17.357666 -0.314079 0.998456 35.202173 -6.897551 0.000002 0.000023 -179.999991 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -16.149697 -10.030578 19.823808 -16.104488 -48.814146 -10.299004 -0.000017 -70.341407 -0.000021 -81.965603 10.494797 -21.657485 -0.000003 -0.000003 -0.000002 0.000000 -0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000001 -0.000001 0.000000 7.186308 22.651368 -18.636246 8.722409 48.144614 -0.445362 0.000012 79.783207 -0.000030 -75.224002 -12.043372 18.442861 0.000001 -0.000004 -0.000001 -0.000000 -0.000000 -0.000002 -0.000001 -0.000001 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000004 -0.000001 0.000000 -0.000005 -0.000001 -0.000000 -12.518801 -1.241787 -0.113013 86.388253 -3.103208 -3.744367 57.599860 -0.515817 -4.947379 0.000008 -0.000024 0.000047 -0.000003 0.000000 0.000000 0.000006 -0.000024 0.000047 -0.000001 0.000001 0.000000 -0.000001 0.000003 0.000136 -12.318583 1.142034 0.150882 86.217895 -2.964258 -3.849618 57.974099 2.881576 -4.443644 -0.000007 0.000018 -0.000030 -0.000004 -0.000001 -0.000000 -0.000008 0.000018 -0.000032 0.000000 0.000001 0.000000 0.000001 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -18.134481 7.357359 5.949129 -0.000001 -0.000001 15.865703 -0.242960 -1.131550 -14.055183 -0.046215 0.556654 -15.655825 17.918236 -0.189966 0.680972 36.370443 -7.034115 0.000002 0.000023 -179.999991 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000001 0.000001 0.000000 -0.000000 -16.520503 -11.020730 20.349843 -15.148876 -50.374219 -7.265631 -0.000025 -72.580623 -0.000021 -84.520797 11.152602 -21.849907 -0.000002 -0.000003 0.000002 0.000003 -0.000001 0.000000 0.000001 -0.000001 -0.000001 0.000000 0.000001 -0.000003 7.878873 23.955068 -19.538702 10.185709 48.749806 -3.865522 0.000027 82.286998 -0.000038 -77.702650 -12.432117 18.470694 0.000000 -0.000002 -0.000000 -0.000000 -0.000002 0.000000 0.000003 -0.000002 0.000000 -0.000000 -0.000001 0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -12.937133 -1.282662 -0.121457 89.068583 -3.268480 -3.761236 59.609786 -0.359578 -5.086504 0.000011 -0.000027 0.000050 0.000002 0.000000 -0.000000 0.000015 -0.000027 0.000050 0.000001 0.000002 -0.000000 -0.000001 0.000002 0.000137 -12.729546 1.179401 0.160125 88.893416 -3.128614 -3.872632 59.953946 2.826413 -4.733490 -0.000015 0.000021 -0.000035 -0.000004 -0.000001 0.000000 -0.000011 0.000021 -0.000035 -0.000001 0.000001 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -18.662907 7.559834 6.113064 -0.000001 -0.000001 16.471694 -0.258387 -1.173135 -14.441149 -0.049404 0.571697 -16.553095 18.393556 -0.086019 0.410496 37.361975 -7.145203 0.000003 0.000024 -179.999991 0.000001 0.000001 -0.000001 0.000001 0.000001 -0.000001 0.000001 0.000001 -0.000001 -0.000000 0.000002 -0.000000 -16.828739 -11.863304 20.792332 -14.224361 -51.650867 -4.620067 -0.000008 -74.466759 -0.000019 -86.664521 11.709786 -21.988283 -0.000000 -0.000000 0.000002 0.000000 -0.000001 0.000001 0.000001 0.000002 0.000002 0.000001 -0.000000 -0.000000 8.545181 25.040824 -20.365123 11.467158 49.211704 -6.782747 0.000033 84.389644 -0.000066 -79.801021 -12.729521 18.508974 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000000 0.000000 -0.000002 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000002 0.000000 0.000001 -0.000001 0.000000 -13.293560 -1.317438 -0.128886 91.314411 -3.407424 -3.769398 61.350917 -0.152567 -5.210202 0.000016 -0.000027 0.000048 0.000001 0.000000 0.000000 0.000011 -0.000026 0.000049 0.000002 0.000002 -0.000000 -0.000000 0.000003 0.000137 -13.079362 1.211155 0.168204 91.135323 -3.267018 -3.885983 61.654854 2.751401 -5.010621 -0.000008 0.000020 -0.000033 -0.000003 -0.000000 0.000001 -0.000006 0.000019 -0.000035 0.000001 0.000001 -0.000001 0.000001 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -19.089951 7.723461 6.245668 -0.000001 -0.000001 17.020826 -0.272746 -1.210676 -14.752958 -0.052053 0.583834 -17.276468 18.777242 -0.009300 0.191712 38.160923 -7.231421 0.000003 0.000024 -179.999991 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000001 -0.000001 0.000000 -17.072843 -12.543700 21.146361 -13.401547 -52.645681 -2.438088 -0.000020 -75.976716 -0.000028 -88.375039 12.157203 -22.083436 -0.000001 0.000002 0.000000 0.000003 -0.000000 -0.000001 -0.000000 -0.000002 -0.000000 0.000001 0.000000 0.000000 9.170324 25.894068 -21.098470 12.522637 49.548897 -9.139731 0.000066 86.068539 -0.000101 -81.495761 -12.930830 18.567757 -0.000000 0.000004 -0.000000 -0.000002 -0.000001 0.000000 0.000003 0.000001 -0.000000 -0.000000 0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000002 0.000000 0.000000 -13.581959 -1.345542 -0.135055 93.104180 -3.518303 -3.771992 62.802380 0.110448 -5.317809 0.000016 -0.000028 0.000047 0.000000 -0.000001 -0.000000 0.000015 -0.000027 0.000049 0.000001 0.000002 0.000000 0.000001 0.000003 0.000136 -13.361990 1.236773 0.174872 92.922053 -3.377619 -3.892734 63.055350 2.658584 -5.273803 -0.000006 0.000021 -0.000035 -0.000006 -0.000000 0.000000 -0.000008 0.000020 -0.000034 0.000001 0.000001 -0.000000 0.000001 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -19.406389 7.844710 6.344093 -0.000001 -0.000001 17.507129 -0.285762 -1.243806 -14.983946 -0.054059 0.592816 -17.809729 19.062812 0.033525 0.029418 38.751553 -7.293232 0.000001 0.000026 -179.999991 -0.000001 0.000002 0.000000 -0.000001 0.000002 0.000000 -0.000001 0.000002 0.000000 0.000000 0.000001 -0.000000 -17.250867 -13.047484 21.406655 -12.747808 -53.360631 -0.795168 -0.000025 -77.087093 -0.000026 -89.629704 12.486692 -22.144554 -0.000003 0.000000 -0.000002 -0.000001 -0.000005 0.000001 0.000000 -0.000001 -0.000001 0.000000 0.000002 -0.000002 9.739395 26.500424 -21.721349 13.314299 49.777968 -10.884059 0.000096 87.300596 -0.000140 -82.763444 -13.030871 18.655760 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 0.000001 -0.000000 -0.000001 -0.000000 0.000000 -0.000002 -0.000001 0.000002 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000002 -0.000000 -0.000000 -13.796179 -1.366396 -0.139729 94.415631 -3.599562 -3.771690 63.943671 0.434808 -5.407905 0.000010 -0.000026 0.000043 -0.000001 -0.000000 -0.000000 0.000009 -0.000025 0.000045 0.000001 0.000003 0.000000 -0.000000 0.000002 0.000136 -13.571366 1.255730 0.179894 94.231325 -3.458762 -3.895486 64.134172 2.549980 -5.522285 -0.000009 0.000020 -0.000033 -0.000001 -0.000000 0.000000 -0.000010 0.000019 -0.000032 0.000000 0.000001 0.000000 0.000001 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.603014 7.920051 6.405492 -0.000001 -0.000001 17.924670 -0.297162 -1.272163 -15.127438 -0.055323 0.598391 -18.136838 19.243522 0.036449 -0.071517 39.117897 -7.330731 0.000002 0.000023 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000002 -0.000002 0.000000 -17.360251 -13.360312 21.567530 -12.322636 -53.795082 0.237035 -0.000015 -77.773329 -0.000030 -90.403776 12.690425 -22.178575 -0.000002 -0.000003 0.000000 0.000001 0.000001 0.000001 -0.000001 -0.000002 -0.000001 0.000001 0.000001 -0.000001 10.238136 26.845309 -22.216502 13.809692 49.911420 -11.966378 0.000141 88.060960 -0.000189 -83.579188 -13.023441 18.780051 0.000001 0.000004 -0.000000 0.000001 0.000001 0.000001 -0.000001 -0.000000 0.000000 -0.000002 0.000002 0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000002 -0.000001 -0.000000 -13.930080 -1.379422 -0.142691 95.224107 -3.649641 -3.770576 64.754032 0.825954 -5.478057 0.000009 -0.000026 0.000047 -0.000000 -0.000000 -0.000000 0.000009 -0.000028 0.000048 0.000001 0.000001 -0.000000 0.000000 0.000003 0.000136 -13.701451 1.267497 0.183048 95.038483 -3.508806 -3.896257 64.869851 2.427511 -5.755743 -0.000016 0.000019 -0.000032 -0.000002 0.000000 0.000000 -0.000017 0.000017 -0.000031 0.000000 0.000001 0.000001 -0.000001 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 6.427008 -0.000001 -0.000001 18.267472 -0.306676 -1.295383 -15.176755 -0.055761 0.600307 -18.241900 19.312145 -0.005607 -0.106232 39.243702 -7.343457 0.000003 0.000018 -179.999991 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 0.000000 0.000000 -0.000000 -17.397641 -13.467812 21.622673 -12.173119 -53.942652 0.593892 -0.000023 -78.008567 -0.000012 -90.668876 12.760272 -22.189580 -0.000001 -0.000003 -0.000002 0.000003 0.000002 -0.000000 -0.000001 -0.000001 0.000002 -0.000001 0.000000 0.000001 10.653656 26.913309 -22.567375 13.980522 49.955737 -12.338072 0.000039 88.321395 -0.000124 -83.915636 -12.900645 18.945729 -0.000000 -0.000000 -0.000001 -0.000000 -0.000001 -0.000000 0.000002 0.000000 0.000000 -0.000000 -0.000001 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000000 0.000000 -13.977470 -1.384030 -0.143751 95.500873 -3.666780 -3.770031 65.211859 1.289493 -5.524522 0.000014 -0.000027 0.000050 -0.000001 -0.000000 0.000000 0.000013 -0.000028 0.000051 0.000001 0.000001 0.000000 0.000001 0.000003 0.000136 -13.746159 1.271528 0.184142 95.314791 -3.525937 -3.896358 65.240041 2.292975 -5.974295 -0.000010 0.000019 -0.000032 0.000001 0.000000 -0.000000 -0.000009 0.000018 -0.000031 0.000001 0.000001 0.000000 0.000002 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -19.670601 7.945948 6.339260 0.006938 0.311401 18.344976 -0.325047 -1.648091 -15.176757 -0.055761 0.600307 -18.218037 19.321468 -0.071658 -0.106232 39.243702 -7.343460 0.000004 0.000018 -179.999991 0.000001 -0.000002 0.000001 0.000001 -0.000002 0.000001 0.000001 -0.000002 0.000001 0.000001 -0.000001 -0.000000 -17.397643 -13.467815 21.622673 -12.173115 -53.942642 0.593891 -0.000031 -78.008567 -0.000016 -90.668876 12.760268 -22.189577 -0.000002 0.000005 0.000001 0.000001 -0.000002 0.000002 -0.000001 0.000000 0.000001 -0.000001 0.000002 -0.000002 11.024400 26.832326 -22.834033 13.980521 49.955734 -12.338068 0.000081 88.302325 -0.000123 -83.989948 -12.726649 19.159487 -0.000001 0.000003 0.000002 -0.000002 -0.000001 0.000002 0.000002 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -13.888155 -1.366537 -0.489479 95.500873 -3.666779 -3.770031 65.469160 1.780270 -5.545077 0.000007 -0.000024 0.000045 0.000002 0.000000 0.000000 0.000006 -0.000024 0.000044 0.000001 0.000001 0.000000 -0.000001 0.000003 0.000136 -13.655079 1.268625 -0.028850 95.314791 -3.525937 -3.896359 65.406602 2.144349 -6.180046 -0.000009 0.000019 -0.000032 -0.000001 -0.000000 -0.000001 -0.000009 0.000019 -0.000034 0.000001 0.000001 -0.000000 0.000001 0.000002 -0.000099 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 6.251457 0.013400 0.622884 18.422385 -0.343901 -2.000874 -15.176757 -0.055760 0.600307 -18.170055 19.329471 -0.137808 -0.106233 39.243706 -7.343459 0.000003 0.000020 -179.999991 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 0.000001 -0.000003 -0.000000 -17.397639 -13.467817 21.622676 -12.173117 -53.942642 0.593889 -0.000031 -78.008574 -0.000018 -90.668876 12.760270 -22.189577 0.000001 0.000003 0.000000 0.000003 0.000001 0.000001 -0.000002 -0.000001 0.000001 -0.000000 -0.000001 0.000001 11.395702 26.741639 -23.087008 13.980519 49.955734 -12.338079 0.000093 88.246823 -0.000133 -84.040410 -12.571417 19.423038 -0.000000 -0.000001 0.000001 -0.000001 0.000000 -0.000002 0.000002 -0.000000 0.000000 -0.000001 0.000002 -0.000002 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000000 -0.000000 -13.798713 -1.349578 -0.835326 95.500873 -3.666777 -3.770031 65.693989 2.249817 -5.541668 0.000010 -0.000020 0.000036 -0.000003 -0.000000 -0.000000 0.000013 -0.000021 0.000038 0.000000 0.000001 0.000000 0.000001 0.000002 0.000138 -13.563997 1.265384 -0.241860 95.314791 -3.525938 -3.896358 65.547898 1.979626 -6.375102 -0.000010 0.000023 -0.000043 0.000001 -0.000000 0.000000 -0.000006 0.000023 -0.000043 0.000000 0.000000 0.000000 0.000001 0.000002 -0.000102 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 6.163602 0.019387 0.934440 18.499694 -0.363235 -2.353724 -15.176759 -0.055760 0.600307 -18.099711 19.336184 -0.203895 -0.106233 39.243712 -7.343459 0.000004 0.000020 -179.999991 0.000000 -0.000001 0.000002 0.000000 -0.000001 0.000002 0.000000 -0.000001 0.000002 0.000000 -0.000001 0.000000 -17.397639 -13.467818 21.622676 -12.173119 -53.942645 0.593892 -0.000027 -78.008574 -0.000018 -90.668876 12.760272 -22.189580 -0.000001 0.000003 -0.000001 0.000003 -0.000000 -0.000000 -0.000000 -0.000002 0.000001 -0.000001 0.000000 -0.000002 11.766521 26.642118 -23.326462 13.980520 49.955737 -12.338071 0.000055 88.157532 -0.000086 -84.068618 -12.434021 19.732300 -0.000000 0.000004 -0.000000 -0.000001 0.000000 -0.000003 -0.000001 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -13.709146 -1.333155 -1.181287 95.500873 -3.666779 -3.770031 65.887918 2.698801 -5.515615 0.000009 -0.000018 0.000033 -0.000002 0.000000 0.000000 0.000008 -0.000019 0.000033 0.000001 0.000001 -0.000000 0.000001 0.000003 0.000137 -13.472924 1.261804 -0.454887 95.314791 -3.525937 -3.896359 65.665357 1.800403 -6.559807 -0.000015 0.000025 -0.000043 0.000002 -0.000000 0.000000 -0.000013 0.000025 -0.000046 0.000001 0.000001 -0.000000 0.000001 0.000002 -0.000100 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 6.075700 0.024897 1.246066 18.576906 -0.383049 -2.706633 -15.176757 -0.055760 0.600307 -18.008745 19.341636 -0.269758 -0.106233 39.243712 -7.343458 0.000003 0.000020 -179.999991 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000001 -0.000001 -0.000000 -17.397641 -13.467812 21.622673 -12.173118 -53.942648 0.593889 -0.000019 -78.008567 -0.000012 -90.668876 12.760272 -22.189577 0.000003 0.000003 0.000000 0.000001 0.000001 0.000001 -0.000001 0.000002 0.000002 0.000000 0.000002 -0.000003 12.135832 26.534660 -23.552574 13.980519 49.955734 -12.338072 0.000027 88.036992 -0.000131 -84.076111 -12.313472 20.083224 -0.000000 -0.000001 -0.000001 -0.000000 -0.000000 -0.000003 -0.000002 0.000000 -0.000001 -0.000000 0.000002 -0.000001 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 -0.000000 -13.619460 -1.317269 -1.527352 95.500873 -3.666777 -3.770032 66.052492 3.127804 -5.468284 0.000009 -0.000013 0.000023 0.000002 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000001 0.000001 -0.000000 0.000001 0.000003 0.000138 -13.381855 1.257886 -0.667929 95.314784 -3.525937 -3.896360 65.760324 1.608255 -6.734529 -0.000011 0.000021 -0.000037 0.000002 -0.000000 -0.000000 -0.000010 0.000021 -0.000039 0.000001 0.000001 0.000001 -0.000000 0.000002 -0.000100 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000
-0.000000 -19.670601 7.945948 5.987752 0.029929 1.557754 18.654012 -0.403344 -3.059594 -15.176759 -0.055760 0.600307 -17.898914 19.345877 -0.335235 -0.106233 39.243709 -7.343458 0.000003 0.000020 -179.999991 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000001 -0.000001 -0.000000 -17.397641 -13.467816 21.622675 -12.173116 -53.942652 0.593889 -0.000039 -78.008567 -0.000018 -90.668883 12.760270 -22.189577 -0.000001 0.000001 0.000001 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 -0.000001 -0.000002 12.502642 26.420155 -23.765551 13.980526 49.955741 -12.338072 0.000042 87.887855 -0.000098 -84.064377 -12.208739 20.471750 0.000000 -0.000000 -0.000002 0.000001 0.000001 0.000001 0.000003 -0.000001 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000001 0.000000 -13.529662 -1.301922 -1.873514 95.500873 -3.666779 -3.770031 66.189266 3.537328 -5.401063 0.000008 -0.000010 0.000016 0.000001 0.000000 -0.000000 0.000007 -0.000010 0.000016 0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -13.290793 1.253628 -0.880982 95.314791 -3.525938 -3.896360 65.834213 1.404714 -6.899618 -0.000019 0.000025 -0.000048 0.000004 0.000001 0.000000 -0.000017 0.000027 -0.000048 0.000000 0.000002 0.000000 0.000001 0.000002 -0.000100 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000
-0.000000 -19.670601 7.945948 5.899764 0.034484 1.869499 18.730998 -0.424118 -3.412597 -15.176754 -0.055760 0.600307 -17.771966 19.348944 -0.400158 -0.106233 39.243712 -7.343457 0.000003 0.000020 -179.999991 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 -0.000000 -0.000000 -17.397643 -13.467816 21.622675 -12.173120 -53.942648 0.593892 -0.000019 -78.008574 -0.000014 -90.668876 12.760274 -22.189577 0.000002 -0.000000 -0.000002 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000001 -0.000000 0.000000 -0.000001 12.865972 26.299512 -23.965623 13.980526 49.955737 -12.338071 0.000039 87.712681 -0.000123 -84.034898 -12.118765 20.893854 -0.000000 -0.000003 0.000001 -0.000000 0.000001 -0.000003 0.000007 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -13.439759 -1.287115 -2.219768 95.500873 -3.666779 -3.770031 66.299813 3.927821 -5.315383 -0.000003 -0.000010 0.000017 -0.000000 -0.000000 0.000000 -0.000002 -0.000010 0.000019 0.000000 0.000000 -0.000000 0.000000 0.000002 0.000137 -13.199741 1.249031 -1.094046 95.314784 -3.525937 -3.896358 65.888369 1.191292 -7.055424 -0.000010 0.000028 -0.000048 0.000004 0.000001 0.000000 -0.000010 0.000027 -0.000051 0.000001 0.000001 -0.000001 0.000002 0.000002 -0.000100 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000
-0.000000 -19.670601 7.945948 5.811742 0.038560 2.181296 18.807875 -0.445369 -3.765638 -15.176757 -0.055760 0.600307 -17.629652 19.350891 -0.464363 -0.106233 39.243716 -7.343459 0.000003 0.000022 -179.999991 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000001 -0.000002 -0.000000 -17.397643 -13.467815 21.622678 -12.173114 -53.942648 0.593893 -0.000023 -78.008567 -0.000018 -90.668876 12.760270 -22.189580 0.000001 -0.000002 -0.000003 0.000003 -0.000000 0.000001 -0.000001 0.000002 0.000001 0.000003 0.000001 -0.000001 13.224844 26.173599 -24.153038 13.980521 49.955737 -12.338071 0.000006 87.514080 -0.000073 -83.989136 -12.042500 21.345516 -0.000000 0.000002 -0.000000 -0.000001 0.000000 -0.000001 0.000004 -0.000001 0.000000 -0.000000 0.000004 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000004 0.000000 0.000000 -0.000004 0.000000 -0.000000 -13.349748 -1.272849 -2.566101 95.500873 -3.666778 -3.770031 66.385682 4.299668 -5.212712 0.000001 -0.000005 0.000008 -0.000001 -0.000000 -0.000000 -0.000001 -0.000005 0.000010 0.000001 -0.000001 -0.000000 -0.000000 0.000002 0.000137 -13.108696 1.244096 -1.307117 95.314791 -3.525938 -3.896359 65.924207 0.969499 -7.202291 -0.000020 0.000029 -0.000055 0.000005 0.000000 -0.000000 -0.000018 0.000030 -0.000055 0.000001 0.000001 0.000000 0.000001 0.000002 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.723687 0.042158 2.493139 18.884631 -0.467096 -4.118708 -15.176755 -0.055760 0.600307 -17.473724 19.351765 -0.527681 -0.106233 39.243712 -7.343460 0.000002 0.000020 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 -17.397643 -13.467812 21.622673 -12.173117 -53.942645 0.593891 -0.000027 -78.008567 -0.000020 -90.668876 12.760271 -22.189577 0.000000 0.000001 0.000001 -0.000001 -0.000002 0.000002 -0.000001 -0.000002 0.000001 0.000002 0.000001 -0.000002 13.578330 26.043342 -24.328077 13.980520 49.955737 -12.338072 0.000069 87.294660 -0.000103 -83.928524 -11.978862 21.822721 -0.000001 0.000000 -0.000000 -0.000000 0.000001 -0.000002 0.000002 -0.000001 -0.000001 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -13.259642 -1.259124 -2.912512 95.500873 -3.666778 -3.770031 66.448479 4.653206 -5.094551 0.000006 -0.000002 0.000003 0.000000 0.000000 0.000000 0.000006 -0.000001 0.000002 -0.000000 -0.000000 -0.000000 0.000001 0.000002 0.000138 -13.017666 1.238821 -1.520192 95.314791 -3.525938 -3.896360 65.943038 0.740785 -7.340562 -0.000015 0.000031 -0.000057 0.000003 0.000001 0.000000 -0.000014 0.000032 -0.000057 0.000001 0.000002 -0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.635603 0.045276 2.805022 18.961261 -0.489300 -4.471798 -15.176755 -0.055761 0.600307 -17.305918 19.351630 -0.589946 -0.106233 39.243709 -7.343459 0.000003 0.000020 -179.999991 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000000 0.000002 -0.000000 -17.397641 -13.467813 21.622678 -12.173123 -53.942652 0.593896 -0.000027 -78.008567 -0.000010 -90.668876 12.760274 -22.189577 -0.000001 -0.000001 -0.000001 0.000002 0.000000 0.000000 -0.000001 0.000001 0.000003 0.000000 0.000000 0.000000 13.925478 25.909621 -24.491025 13.980520 49.955734 -12.338072 0.000022 87.057011 -0.000070 -83.854478 -11.926789 22.321441 -0.000000 0.000003 0.000001 -0.000000 -0.000000 -0.000001 0.000003 -0.000000 -0.000000 -0.000003 -0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 -13.169439 -1.245943 -3.258987 95.500873 -3.666779 -3.770032 66.489815 4.988744 -4.962437 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000001 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000003 0.000137 -12.926656 1.233208 -1.733271 95.314791 -3.525938 -3.896358 65.946296 0.506640 -7.470559 -0.000016 0.000032 -0.000055 0.000004 -0.000001 0.000000 -0.000015 0.000031 -0.000058 0.000001 0.000002 -0.000001 -0.000001 0.000002 -0.000098 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.547493 0.047916 3.116939 19.037773 -0.511979 -4.824902 -15.176754 -0.055761 0.600307 -17.127990 19.350536 -0.650989 -0.106233 39.243712 -7.343459 0.000002 0.000023 -179.999991 -0.000000 0.000003 0.000002 -0.000000 0.000003 0.000002 -0.000000 0.000003 0.000002 0.000000 0.000000 -0.000000 -17.397638 -13.467813 21.622678 -12.173118 -53.942645 0.593891 -0.000015 -78.008567 -0.000012 -90.668876 12.760271 -22.189574 -0.000000 0.000000 0.000001 0.000002 0.000002 -0.000000 -0.000002 0.000001 0.000002 0.000000 0.000001 -0.000002 14.265385 25.773338 -24.642206 13.980524 49.955737 -12.338072 0.000013 86.803734 -0.000056 -83.768432 -11.885234 22.837685 0.000001 0.000005 -0.000000 0.000001 0.000001 -0.000003 0.000002 -0.000000 0.000000 0.000001 -0.000000 -0.000002 -0.000003 0.000000 0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000004 -0.000000 0.000000 0.000004 -0.000000 -0.000000 -13.079153 -1.233306 -3.605525 95.500873 -3.666779 -3.770031 66.511317 5.306528 -4.817950 -0.000004 0.000005 -0.000011 0.000001 0.000000 0.000000 -0.000008 0.000005 -0.000009 0.000000 -0.000001 -0.000000 0.000001 0.000003 0.000137 -12.835659 1.227256 -1.946351 95.314791 -3.525937 -3.896360 65.935299 0.268509 -7.592591 -0.000016 0.000036 -0.000062 0.000002 0.000000 0.000001 -0.000015 0.000035 -0.000063 0.000000 0.000002 -0.000000 0.000001 0.000002 -0.000098 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 5.459367 0.050076 3.428885 19.114138 -0.535130 -5.178011 -15.176755 -0.055760 0.600307 -16.941711 19.348572 -0.710642 -0.106233 39.243712 -7.343457 0.000002 0.000023 -179.999991 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 0.000000 -0.000002 0.000001 -17.397636 -13.467811 21.622673 -12.173118 -53.942648 0.593891 -0.000027 -78.008567 -0.000006 -90.668876 12.760270 -22.189580 -0.000000 -0.000001 0.000001 0.000002 -0.000001 0.000001 -0.000001 0.000001 0.000003 0.000000 0.000001 -0.000002 14.597149 25.635389 -24.781960 13.980520 49.955734 -12.338071 0.000033 86.537418 -0.000059 -83.671819 -11.853163 23.367431 0.000001 0.000004 -0.000000 -0.000000 0.000001 -0.000002 0.000000 0.000000 0.000000 -0.000003 0.000001 -0.000001 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000000 0.000000 -12.988781 -1.221214 -3.952114 95.500873 -3.666779 -3.770031 66.514602 5.606807 -4.662689 -0.000004 0.000006 -0.000011 0.000000 -0.000000 0.000000 -0.000007 0.000006 -0.000011 -0.000000 -0.000001 -0.000000 -0.000001 0.000002 0.000137 -12.744682 1.220966 -2.159429 95.314791 -3.525938 -3.896359 65.911421 0.027846 -7.706964 -0.000014 0.000035 -0.000057 0.000005 0.000001 0.000001 -0.000013 0.000034 -0.000063 0.000001 0.000001 -0.000000 0.000001 0.000002 -0.000100 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.371222 0.051756 3.740854 19.190364 -0.558753 -5.531121 -15.176759 -0.055761 0.600307 -16.748816 19.345799 -0.768736 -0.106233 39.243706 -7.343459 0.000002 0.000023 -179.999991 -0.000001 0.000002 0.000001 -0.000001 0.000002 0.000001 -0.000001 0.000002 0.000001 -0.000000 -0.000001 0.000000 -17.397641 -13.467814 21.622675 -12.173113 -53.942645 0.593895 -0.000031 -78.008567 -0.000022 -90.668876 12.760272 -22.189574 0.000001 0.000001 0.000001 0.000003 -0.000001 0.000001 -0.000001 -0.000002 0.000000 0.000001 -0.000000 0.000001 14.919870 25.496657 -24.910615 13.980519 49.955737 -12.338074 0.000043 86.260692 -0.000054 -83.566080 -11.829591 23.906683 0.000000 0.000001 0.000001 -0.000000 0.000001 -0.000001 0.000004 0.000000 0.000000 -0.000000 0.000002 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000004 -0.000001 -0.000000 -0.000003 -0.000001 -0.000000 -12.898327 -1.209668 -4.298747 95.500873 -3.666779 -3.770031 66.501345 5.889790 -4.498317 -0.000010 0.000013 -0.000024 -0.000001 -0.000000 0.000000 -0.000012 0.000013 -0.000024 -0.000000 -0.000002 -0.000000 0.000001 0.000002 0.000137 -12.653725 1.214338 -2.372502 95.314791 -3.525938 -3.896359 65.876041 -0.213912 -7.813943 -0.000021 0.000035 -0.000062 0.000006 -0.000000 0.000000 -0.000020 0.000035 -0.000064 0.000002 0.000002 -0.000001 0.000002 0.000002 -0.000099 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 5.283066 0.052956 4.052840 19.266458 -0.582849 -5.884219 -15.176754 -0.055760 0.600307 -16.551051 19.342298 -0.825103 -0.106233 39.243712 -7.343459 0.000002 0.000023 -179.999991 0.000000 -0.000001 0.000001 0.000000 -0.000001 0.000001 0.000000 -0.000001 0.000001 -0.000001 0.000003 0.000001 -17.397641 -13.467815 21.622676 -12.173113 -53.942648 0.593891 -0.000035 -78.008567 -0.000020 -90.668876 12.760269 -22.189577 0.000002 0.000003 0.000003 0.000002 -0.000001 0.000002 -0.000001 0.000000 0.000000 0.000002 0.000002 -0.000002 15.232667 25.358040 -25.028571 13.980515 49.955737 -12.338074 0.000040 85.976140 -0.000057 -83.452665 -11.813533 24.451444 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000004 0.000002 -0.000000 -0.000000 -0.000002 -0.000001 -0.000001 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000002 -0.000000 0.000000 -0.000003 -0.000001 0.000000 -12.807805 -1.198669 -4.645414 95.500873 -3.666781 -3.770032 66.473211 6.155673 -4.326507 -0.000008 0.000015 -0.000026 -0.000001 -0.000000 0.000000 -0.000008 0.000015 -0.000026 -0.000000 -0.000002 -0.000000 0.000001 0.000003 0.000136 -12.562798 1.207371 -2.585569 95.314791 -3.525938 -3.896359 65.830504 -0.455328 -7.913799 -0.000020 0.000036 -0.000066 0.000004 0.000000 -0.000001 -0.000019 0.000036 -0.000066 0.000001 0.000002 -0.000000 -0.000000 0.000002 -0.000099 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 5.194902 0.053676 4.364837 19.342402 -0.607412 -6.237306 -15.176759 -0.055760 0.600307 -16.350175 19.338154 -0.879578 -0.106233 39.243716 -7.343458 0.000002 0.000021 -179.999991 -0.000000 -0.000002 0.000001 -0.000000 -0.000002 0.000001 -0.000000 -0.000002 0.000001 -0.000000 0.000002 0.000000 -17.397641 -13.467814 21.622678 -12.173116 -53.942648 0.593894 -0.000023 -78.008567 -0.000030 -90.668876 12.760276 -22.189579 0.000002 -0.000003 0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000001 -0.000002 0.000000 0.000001 -0.000002 15.534664 25.220409 -25.136199 13.980520 49.955737 -12.338075 0.000009 85.686369 -0.000058 -83.333007 -11.804077 24.997695 0.000002 0.000010 0.000001 -0.000000 -0.000000 -0.000002 0.000002 -0.000000 -0.000001 -0.000000 0.000002 -0.000001 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000002 -0.000001 0.000000 -0.000001 -0.000001 0.000000 -12.717212 -1.188217 -4.992116 95.500873 -3.666779 -3.770032 66.431950 6.404648 -4.148994 -0.000013 0.000015 -0.000030 -0.000000 0.000000 -0.000000 -0.000015 0.000016 -0.000029 -0.000001 -0.000001 -0.000000 -0.000001 0.000003 0.000136 -12.471888 1.200066 -2.798630 95.314791 -3.525937 -3.896359 65.776190 -0.694951 -8.006776 -0.000021 0.000041 -0.000067 0.000005 0.000000 -0.000000 -0.000020 0.000039 -0.000069 0.000001 0.000002 0.000000 0.000002 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.106734 0.053916 4.676840 19.418195 -0.632445 -6.590366 -15.176759 -0.055761 0.600307 -16.147935 19.333462 -0.931995 -0.106233 39.243712 -7.343457 0.000002 0.000021 -179.999991 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000001 0.000001 0.000003 0.000000 -17.397641 -13.467816 21.622678 -12.173120 -53.942645 0.593888 -0.000027 -78.008567 -0.000014 -90.668876 12.760272 -22.189574 0.000000 -0.000003 0.000000 0.000003 0.000002 -0.000001 0.000000 0.000000 0.000001 0.000001 0.000000 -0.000002 15.825002 25.084640 -25.233908 13.980517 49.955727 -12.338071 0.000019 85.394003 -0.000038 -83.208622 -11.800323 25.541458 0.000001 0.000009 0.000003 -0.000000 -0.000001 -0.000002 0.000001 0.000000 0.000000 -0.000000 -0.000001 -0.000001 0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000000 0.000000 -12.626556 -1.178313 -5.338837 95.500873 -3.666779 -3.770032 66.379207 6.636882 -3.967522 -0.000009 0.000018 -0.000033 -0.000002 0.000000 -0.000000 -0.000010 0.000018 -0.000032 -0.000001 -0.000002 -0.000000 0.000001 0.000003 0.000137 -12.381007 1.192423 -3.011678 95.314791 -3.525937 -3.896361 65.714445 -0.931352 -8.093101 -0.000025 0.000038 -0.000068 0.000002 0.000000 0.000001 -0.000023 0.000040 -0.000071 0.000001 0.000002 0.000001 -0.000001 0.000002 -0.000098 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.018565 0.053676 4.988843 19.493835 -0.657942 -6.943392 -15.176757 -0.055760 0.600307 -15.946082 19.328298 -0.982185 -0.106232 39.243712 -7.343459 0.000002 0.000022 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 -17.397638 -13.467817 21.622676 -12.173117 -53.942642 0.593887 -0.000027 -78.008567 -0.000014 -90.668876 12.760273 -22.189572 -0.000001 0.000001 0.000000 0.000002 0.000002 -0.000000 -0.000001 -0.000000 0.000002 0.000001 0.000000 -0.000002 16.102811 24.951612 -25.322108 13.980520 49.955734 -12.338071 0.000028 85.101637 -0.000031 -83.080973 -11.801441 26.078743 0.000000 0.000002 0.000001 0.000001 0.000000 -0.000000 0.000003 0.000000 0.000001 -0.000002 0.000002 -0.000001 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -12.535847 -1.168958 -5.685572 95.500873 -3.666779 -3.770032 66.316786 6.852557 -3.783884 -0.000010 0.000019 -0.000037 -0.000004 -0.000000 -0.000000 -0.000012 0.000020 -0.000036 -0.000001 -0.000002 -0.000000 -0.000002 0.000003 0.000136 -12.290159 1.184442 -3.224714 95.314791 -3.525937 -3.896360 65.646676 -1.163087 -8.172972 -0.000019 0.000037 -0.000067 0.000003 0.000000 0.000000 -0.000020 0.000038 -0.000067 0.000002 0.000003 0.000000 -0.000000 0.000002 -0.000098 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.930401 0.052956 5.300842 19.569308 -0.683905 -7.296379 -15.176757 -0.055761 0.600307 -15.746366 19.322766 -1.029986 -0.106233 39.243709 -7.343458 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000002 -0.000000 0.000000 0.000000 -17.397638 -13.467814 21.622673 -12.173119 -53.942645 0.593892 -0.000031 -78.008574 -0.000026 -90.668876 12.760276 -22.189580 0.000000 -0.000004 -0.000002 0.000002 0.000002 -0.000002 -0.000001 0.000000 -0.000001 -0.000001 0.000001 -0.000002 16.367249 24.822174 -25.401231 13.980521 49.955737 -12.338068 0.000027 84.811880 -0.000043 -82.951589 -11.806608 26.605562 0.000001 0.000006 -0.000003 -0.000000 0.000001 -0.000002 0.000004 0.000001 -0.000000 -0.000000 0.000005 -0.000002 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 0.000000 -0.000004 -0.000001 0.000000 -0.000004 -0.000001 0.000000 -12.445079 -1.160152 -6.032312 95.500873 -3.666780 -3.770031 66.246415 7.051860 -3.599902 -0.000010 0.000024 -0.000044 -0.000002 -0.000000 0.000000 -0.000013 0.000024 -0.000043 -0.000001 -0.000002 -0.000000 0.000001 0.000002 0.000137 -12.199340 1.176124 -3.437733 95.314791 -3.525937 -3.896360 65.574228 -1.388714 -8.246575 -0.000020 0.000042 -0.000069 0.000003 -0.000000 -0.000001 -0.000021 0.000040 -0.000070 0.000001 0.000002 0.000000 -0.000000 0.000002 -0.000098 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.842246 0.051756 5.612828 19.644623 -0.710332 -7.649320 -15.176755 -0.055760 0.600307 -15.550541 19.316969 -1.075235 -0.106234 39.243712 -7.343458 0.000002 0.000022 -179.999991 -0.000001 -0.000001 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000000 0.000000 -17.397639 -13.467812 21.622671 -12.173115 -53.942652 0.593891 -0.000035 -78.008567 -0.000022 -90.668876 12.760273 -22.189577 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000000 -0.000001 0.000000 -0.000000 0.000002 0.000001 -0.000002 16.617435 24.697179 -25.471698 13.980521 49.955737 -12.338073 0.000003 84.527334 -0.000041 -82.821938 -11.815093 27.117946 0.000002 0.000003 0.000000 -0.000001 0.000000 -0.000003 0.000002 0.000001 -0.000001 -0.000002 0.000002 -0.000001 -0.000001 0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000000 -0.000000 -12.354266 -1.151895 -6.379053 95.500873 -3.666778 -3.770031 66.169896 7.234963 -3.417433 -0.000018 0.000027 -0.000049 0.000001 -0.000000 0.000000 -0.000019 0.000028 -0.000049 -0.000001 -0.000004 -0.000000 0.000000 0.000002 0.000137 -12.108553 1.167468 -3.650738 95.314791 -3.525937 -3.896360 65.498482 -1.606784 -8.314086 -0.000025 0.000047 -0.000083 0.000003 0.000000 0.000001 -0.000022 0.000046 -0.000085 0.000001 0.000002 0.000000 0.000002 0.000002 -0.000098 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670599 7.945948 4.754100 0.050076 5.924795 19.719769 -0.737222 -8.002210 -15.176752 -0.055759 0.600307 -15.360348 19.311016 -1.117771 -0.106233 39.243712 -7.343458 0.000002 0.000024 -179.999991 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000001 0.000001 0.000000 -17.397641 -13.467816 21.622675 -12.173113 -53.942645 0.593889 -0.000035 -78.008567 -0.000024 -90.668883 12.760271 -22.189580 0.000001 -0.000000 0.000001 0.000003 0.000003 0.000001 -0.000002 -0.000001 -0.000000 0.000001 -0.000000 -0.000004 16.852559 24.577509 -25.533981 13.980524 49.955737 -12.338079 0.000007 84.250602 -0.000035 -82.693599 -11.826200 27.611924 0.000001 0.000004 -0.000000 -0.000000 0.000000 -0.000001 0.000003 -0.000000 0.000000 -0.000002 0.000002 -0.000001 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 -12.263411 -1.144189 -6.725784 95.500873 -3.666780 -3.770031 66.088986 7.402073 -3.238351 -0.000017 0.000028 -0.000053 -0.000002 0.000000 0.000000 -0.000020 0.000029 -0.000051 -0.000001 -0.000002 -0.000000 -0.000000 0.000003 0.000136 -12.017804 1.158475 -3.863720 95.314791 -3.525937 -3.896360 65.420809 -1.815844 -8.375643 -0.000019 0.000043 -0.000078 0.000003 -0.000001 -0.000001 -0.000020 0.000044 -0.000080 0.000002 0.000002 0.000001 -0.000001 0.000002 -0.000097 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.665972 0.047916 6.236742 19.794737 -0.764569 -8.355031 -15.176755 -0.055760 0.600307 -15.177531 19.305000 -1.157433 -0.106234 39.243712 -7.343459 0.000002 0.000024 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000001 0.000000 -17.397638 -13.467811 21.622676 -12.173121 -53.942648 0.593894 -0.000015 -78.008567 -0.000026 -90.668876 12.760276 -22.189577 -0.000001 -0.000000 0.000003 0.000001 0.000001 -0.000001 -0.000000 -0.000002 -0.000001 0.000002 0.000001 -0.000001 17.071749 24.463969 -25.588506 13.980519 49.955737 -12.338071 0.000023 83.984300 -0.000037 -82.568128 -11.839248 28.083550 0.000003 0.000000 -0.000002 0.000000 0.000001 -0.000004 0.000003 0.000000 -0.000000 -0.000003 0.000001 -0.000001 -0.000001 0.000001 -0.000000 -0.000002 0.000001 -0.000000 -0.000002 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000001 0.000000 -12.172516 -1.137034 -7.072497 95.500873 -3.666781 -3.770032 66.005521 7.553375 -3.064559 -0.000019 0.000033 -0.000060 0.000001 0.000000 0.000000 -0.000020 0.000033 -0.000060 -0.000001 -0.000002 -0.000000 0.000000 0.000002 0.000136 -11.927089 1.149145 -4.076681 95.314791 -3.525937 -3.896360 65.342623 -2.014446 -8.431373 -0.000023 0.000046 -0.000082 0.000004 0.000000 -0.000000 -0.000023 0.000044 -0.000085 0.000001 0.000002 0.000000 0.000000 0.000002 -0.000098 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 4.577865 0.045277 6.548659 19.869536 -0.792377 -8.707791 -15.176757 -0.055759 0.600307 -15.003848 19.299032 -1.194060 -0.106234 39.243712 -7.343457 0.000002 0.000026 -179.999991 0.000000 0.000002 0.000001 0.000000 0.000002 0.000001 0.000000 0.000002 0.000002 -0.000000 0.000002 0.000000 -17.397639 -13.467812 21.622673 -12.173117 -53.942645 0.593894 -0.000027 -78.008567 -0.000018 -90.668883 12.760271 -22.189574 0.000000 -0.000002 -0.000001 0.000004 0.000002 -0.000000 0.000000 -0.000001 0.000001 0.000001 -0.000000 -0.000002 17.274156 24.357404 -25.635725 13.980522 49.955737 -12.338072 0.000006 83.731016 -0.000031 -82.447063 -11.853626 28.528875 0.000001 0.000006 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000002 0.000004 -0.000002 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000001 -0.000002 0.000001 -0.000001 -12.081590 -1.130428 -7.419187 95.500873 -3.666780 -3.770031 65.921325 7.689087 -2.897982 -0.000024 0.000036 -0.000066 0.000000 -0.000001 -0.000000 -0.000025 0.000035 -0.000067 -0.000002 -0.000004 -0.000000 -0.000000 0.000003 0.000136 -11.836421 1.139479 -4.289617 95.314791 -3.525936 -3.896361 65.265306 -2.201125 -8.481406 -0.000023 0.000046 -0.000083 0.000004 -0.000001 0.000000 -0.000023 0.000045 -0.000085 0.000001 0.000002 -0.000000 0.000000 0.000002 -0.000096 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.489782 0.042158 6.860541 19.944151 -0.820639 -9.060470 -15.176757 -0.055760 0.600307 -14.841040 19.293232 -1.227496 -0.106233 39.243709 -7.343457 0.000002 0.000024 -179.999991 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000001 -0.000001 -0.000002 0.000000 -17.397639 -13.467814 21.622676 -12.173120 -53.942645 0.593889 -0.000035 -78.008574 -0.000022 -90.668876 12.760270 -22.189580 -0.000001 -0.000001 -0.000001 0.000000 0.000001 0.000001 -0.000001 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 17.458945 24.258650 -25.676121 13.980515 49.955734 -12.338069 0.000017 83.493359 -0.000034 -82.331988 -11.868739 28.943961 -0.000000 -0.000001 0.000000 -0.000000 0.000001 -0.000006 0.000003 0.000000 -0.000000 -0.000000 0.000002 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -11.990631 -1.124373 -7.765846 95.500873 -3.666782 -3.770031 65.838208 7.809441 -2.740580 -0.000025 0.000038 -0.000073 -0.000000 -0.000001 -0.000000 -0.000027 0.000039 -0.000073 -0.000001 -0.000003 -0.000000 0.000000 0.000002 0.000135 -11.745787 1.129476 -4.502529 95.314791 -3.525937 -3.896360 65.190194 -2.374417 -8.525831 -0.000020 0.000051 -0.000089 0.000001 0.000001 0.000001 -0.000019 0.000050 -0.000093 0.000002 0.000002 -0.000001 0.000002 0.000002 -0.000098 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.401725 0.038560 7.172383 20.018578 -0.849358 -9.413067 -15.176755 -0.055759 0.600307 -14.690856 19.287703 -1.257582 -0.106233 39.243712 -7.343459 0.000002 0.000023 -179.999991 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000000 0.000003 -0.000000 -17.397639 -13.467816 21.622678 -12.173117 -53.942645 0.593891 -0.000023 -78.008567 -0.000016 -90.668876 12.760273 -22.189577 -0.000001 0.000001 0.000003 0.000003 0.000003 -0.000001 -0.000000 -0.000004 0.000001 0.000001 0.000001 -0.000002 17.625247 24.168522 -25.710116 13.980526 49.955730 -12.338063 0.000017 83.273940 -0.000036 -82.224454 -11.884039 29.324871 -0.000000 -0.000004 -0.000002 -0.000000 0.000000 -0.000003 0.000002 0.000001 -0.000001 -0.000001 -0.000001 0.000001 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000003 0.000000 0.000000 -0.000002 0.000000 0.000000 -11.899659 -1.118870 -8.112468 95.500873 -3.666782 -3.770031 65.758008 7.914656 -2.594298 -0.000026 0.000043 -0.000081 0.000002 -0.000001 -0.000000 -0.000024 0.000042 -0.000079 -0.000002 -0.000003 -0.000000 -0.000000 0.000003 0.000136 -11.655194 1.119137 -4.715407 95.314791 -3.525937 -3.896359 65.118764 -2.532854 -8.564745 -0.000027 0.000052 -0.000095 0.000003 -0.000001 0.000000 -0.000023 0.000053 -0.000093 0.000001 0.000003 -0.000000 0.000002 0.000002 -0.000098 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.313703 0.034484 7.484181 20.092815 -0.878528 -9.765570 -15.176757 -0.055760 0.600307 -14.555031 19.282563 -1.284162 -0.106233 39.243709 -7.343456 0.000002 0.000023 -179.999991 0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000001 0.000000 -0.000001 0.000000 0.000000 0.000001 0.000001 -17.397636 -13.467817 21.622680 -12.173124 -53.942645 0.593889 -0.000031 -78.008574 -0.000014 -90.668883 12.760271 -22.189575 0.000002 -0.000001 0.000000 0.000001 0.000002 0.000001 0.000001 0.000001 0.000002 0.000000 0.000001 -0.000003 17.772212 24.087832 -25.738186 13.980522 49.955730 -12.338075 0.000020 83.075345 -0.000035 -82.126099 -11.898990 29.667705 0.000000 0.000003 -0.000001 -0.000000 0.000000 -0.000002 0.000000 0.000001 -0.000001 0.000001 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000004 -0.000000 -0.000000 -11.808665 -1.113918 -8.459035 95.500873 -3.666782 -3.770031 65.682596 8.004991 -2.461112 -0.000028 0.000044 -0.000082 0.000002 0.000000 0.000000 -0.000028 0.000043 -0.000080 -0.000002 -0.000003 -0.000000 -0.000000 0.000002 0.000135 -11.564651 1.108463 -4.928259 95.314791 -3.525937 -3.896361 65.052354 -2.674962 -8.598223 -0.000020 0.000053 -0.000094 0.000001 0.000000 0.000001 -0.000022 0.000052 -0.000096 0.000002 0.000004 0.000001 0.000000 0.000002 -0.000097 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 4.225715 0.029929 7.795926 20.166864 -0.908149 -10.117978 -15.176757 -0.055760 0.600307 -14.435326 19.277915 -1.307080 -0.106233 39.243716 -7.343458 0.000003 0.000022 -179.999991 0.000001 -0.000003 -0.000001 0.000001 -0.000003 -0.000001 0.000001 -0.000003 -0.000001 0.000000 0.000001 0.000000 -17.397643 -13.467813 21.622673 -12.173117 -53.942648 0.593894 -0.000003 -78.008567 -0.000014 -90.668883 12.760275 -22.189577 0.000001 0.000002 0.000003 0.000002 0.000001 0.000001 -0.000001 0.000000 0.000001 0.000001 0.000001 -0.000001 17.898982 24.017375 -25.760772 13.980528 49.955737 -12.338071 0.000019 82.900171 -0.000031 -82.038440 -11.913090 29.968534 0.000002 0.000003 -0.000003 -0.000001 -0.000001 0.000001 0.000003 -0.000000 0.000000 -0.000000 0.000004 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -11.717661 -1.109518 -8.805552 95.500873 -3.666783 -3.770032 65.613782 8.080693 -2.343008 -0.000032 0.000048 -0.000089 0.000001 -0.000000 -0.000000 -0.000035 0.000047 -0.000089 -0.000002 -0.000004 -0.000000 -0.000001 0.000003 0.000134 -11.474155 1.097453 -5.141076 95.314791 -3.525937 -3.896360 64.992358 -2.799268 -8.626350 -0.000029 0.000055 -0.000099 0.000002 -0.000000 0.000001 -0.000026 0.000053 -0.000102 0.000002 0.000003 0.000000 0.000001 0.000002 -0.000096 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001
-0.000000 -19.670601 7.945948 4.137767 0.024897 8.107614 20.240714 -0.938219 -10.470275 -15.176757 -0.055760 0.600307 -14.333466 19.273872 -1.326180 -0.106233 39.243712 -7.343457 0.000001 0.000022 -179.999991 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000000 0.000001 -17.397636 -13.467813 21.622678 -12.173126 -53.942652 0.593884 -0.000035 -78.008567 -0.000018 -90.668876 12.760274 -22.189574 0.000002 -0.000002 0.000001 0.000003 0.000002 -0.000000 -0.000001 0.000001 0.000001 0.000000 0.000000 -0.000004 18.004679 23.957971 -25.778314 13.980521 49.955730 -12.338071 0.000006 82.751034 -0.000017 -81.963151 -11.925816 30.223454 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000004 0.000002 -0.000000 0.000001 0.000001 0.000001 -0.000002 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000005 0.000000 0.000000 0.000005 0.000001 0.000000 -11.626647 -1.105667 -9.152004 95.500873 -3.666784 -3.770032 65.553396 8.142036 -2.241961 -0.000026 0.000047 -0.000088 0.000001 0.000000 0.000000 -0.000027 0.000047 -0.000089 -0.000002 -0.000004 -0.000000 -0.000001 0.000002 0.000134 -11.383706 1.086108 -5.353855 95.314791 -3.525937 -3.896360 64.940182 -2.904294 -8.649186 -0.000027 0.000054 -0.000094 0.000002 0.000000 -0.000000 -0.000027 0.000053 -0.000093 0.000001 0.000003 0.000001 0.000001 0.000002 -0.000096 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001
-0.000000 -19.670601 7.945948 4.049863 0.019387 8.419239 20.314362 -0.968737 -10.822462 -15.176757 -0.055761 0.600307 -14.251208 19.270545 -1.341307 -0.106234 39.243712 -7.343458 0.000002 0.000023 -179.999991 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000001 -0.000001 0.000000 -17.397641 -13.467813 21.622675 -12.173121 -53.942652 0.593890 -0.000023 -78.008567 -0.000018 -90.668883 12.760274 -22.189580 0.000002 0.000001 0.000003 -0.000001 -0.000000 0.000001 -0.000001 -0.000001 0.000001 -0.000001 -0.000000 -0.000002 18.088450 23.910399 -25.791254 13.980521 49.955737 -12.338072 0.000022 82.630508 -0.000033 -81.901796 -11.936671 30.428547 -0.000000 -0.000003 0.000001 0.000000 -0.000001 0.000001 0.000004 0.000000 -0.000000 -0.000001 0.000001 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000001 0.000000 0.000000 -0.000001 0.000000 -11.535638 -1.102368 -9.498390 95.500873 -3.666786 -3.770033 65.503297 8.189282 -2.159952 -0.000027 0.000051 -0.000094 -0.000002 -0.000000 -0.000000 -0.000027 0.000050 -0.000090 -0.000002 -0.000004 -0.000000 0.000000 0.000003 0.000133 -11.293312 1.074428 -5.566598 95.314791 -3.525936 -3.896360 64.897186 -2.988553 -8.666801 -0.000029 0.000056 -0.000102 0.000004 0.000001 -0.000000 -0.000031 0.000058 -0.000101 0.000002 0.000003 0.000000 -0.000000 0.000002 -0.000096 -0.000001 0.000000 0.000001 -0.000001 0.000000 0.000001
-0.000000 -19.670601 7.945948 3.962010 0.013401 8.730798 20.387802 -0.999698 -11.174523 -15.176757 -0.055761 0.600307 -14.190291 19.268051 -1.352307 -0.106233 39.243709 -7.343457 0.000002 0.000023 -179.999991 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000002 0.000000 -17.397638 -13.467811 21.622673 -12.173117 -53.942652 0.593889 -0.000023 -78.008567 -0.000022 -90.668883 12.760268 -22.189574 0.000001 0.000000 0.000001 0.000001 -0.000002 0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 18.149389 23.875452 -25.800000 13.980521 49.955730 -12.338069 0.000009 82.541211 -0.000023 -81.855992 -11.945124 30.579898 -0.000000 0.000000 -0.000003 -0.000001 -0.000001 -0.000002 -0.000000 -0.000000 0.000000 0.000001 -0.000001 -0.000002 0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000002 -0.000001 -0.000000 -11.444627 -1.099620 -9.844693 95.500873 -3.666784 -3.770032 65.465294 8.222701 -2.098957 -0.000033 0.000052 -0.000097 0.000002 -0.000000 -0.000000 -0.000032 0.000053 -0.000098 -0.000002 -0.000003 -0.000000 0.000001 0.000002 0.000135 -11.202970 1.062414 -5.779301 95.314791 -3.525936 -3.896361 64.864797 -3.050570 -8.679275 -0.000025 0.000058 -0.000102 0.000001 -0.000001 0.000001 -0.000025 0.000058 -0.000103 0.000002 0.000004 0.000000 0.000001 0.000002 -0.000096 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 3.874207 0.006938 9.042280 20.461032 -1.031101 -11.526464 -15.176757 -0.055761 0.600307 -14.152463 19.266478 -1.359022 -0.106233 39.243716 -7.343457 0.000001 0.000026 -179.999991 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000001 0.000000 -17.397641 -13.467814 21.622678 -12.173119 -53.942648 0.593890 -0.000023 -78.008567 -0.000026 -90.668883 12.760270 -22.189579 -0.000002 0.000000 0.000003 0.000000 -0.000003 0.000002 -0.000001 0.000002 -0.000001 0.000001 0.000001 -0.000002 18.186613 23.853910 -25.804960 13.980526 49.955737 -12.338072 0.000012 82.485702 -0.000026 -81.827326 -11.950635 30.673594 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000005 -0.000002 -0.000000 0.000000 0.000001 -0.000000 -0.000002 0.000001 0.000001 0.000000 -0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000001 0.000000 0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000000 -11.353625 -1.097423 -10.190915 95.500873 -3.666785 -3.770032 65.441197 8.242557 -2.060935 -0.000036 0.000058 -0.000105 0.000001 0.000000 0.000000 -0.000037 0.000057 -0.000104 -0.000003 -0.000005 -0.000000 0.000000 0.000003 0.000133 -11.112678 1.050066 -5.991963 95.314791 -3.525936 -3.896361 64.844368 -3.088864 -8.686687 -0.000028 0.000061 -0.000106 0.000003 -0.000001 -0.000000 -0.000031 0.000060 -0.000109 0.000001 0.000003 0.000000 0.000000 0.000002 -0.000095 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 3.786460 -0.000000 9.353680 20.534050 -1.062945 -11.878268 -15.176755 -0.055761 0.600307 -14.139467 19.265935 -1.361296 -0.106233 39.243709 -7.343458 0.000002 0.000024 -179.999991 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000003 0.000001 -17.397641 -13.467816 21.622678 -12.173115 -53.942648 0.593889 -0.000027 -78.008567 -0.000012 -90.668876 12.760273 -22.189575 0.000002 0.000002 0.000001 0.000001 0.000002 -0.000000 -0.000001 -0.000001 0.000002 0.000001 -0.000000 -0.000001 18.199222 23.846557 -25.806533 13.980526 49.955734 -12.338068 0.000002 82.466625 -0.000036 -81.817429 -11.952617 30.705710 0.000000 0.000001 -0.000000 0.000000 -0.000001 -0.000001 -0.000001 0.000000 -0.000001 -0.000000 -0.000003 0.000001 -0.000001 -0.000000 -0.000000 -0.000001 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000001 -0.000000 0.000000 -0.000003 -0.000001 0.000000 -0.000005 -0.000001 0.000001 -11.262637 -1.095775 -10.537043 95.500873 -3.666787 -3.770032 65.432755 8.249123 -2.047835 -0.000036 0.000060 -0.000112 -0.000001 -0.000000 -0.000000 -0.000040 0.000061 -0.000112 -0.000002 -0.000005 -0.000000 -0.000001 0.000003 0.000132 -11.022449 1.037385 -6.204579 95.314791 -3.525936 -3.896361 64.837251 -3.101958 -8.689132 -0.000024 0.000062 -0.000109 0.000004 -0.000000 0.000000 -0.000026 0.000062 -0.000108 0.000001 0.000003 -0.000000 0.000001 0.000002 -0.000095 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001
-0.000000 -19.670601 7.945948 3.874207 0.006938 9.042280 20.461032 -1.031101 -11.526464 -15.176755 -0.055760 0.600307 -14.152827 19.266230 -1.356886 -0.106233 39.243712 -7.343459 0.000002 0.000024 -179.999991 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 -17.397641 -13.467815 21.622678 -12.173118 -53.942648 0.593890 -0.000039 -78.008567 -0.000034 -90.668883 12.760272 -22.189579 -0.000001 0.000002 0.000003 -0.000001 0.000001 0.000001 0.000001 0.000000 -0.000002 0.000001 0.000001 -0.000002 18.175265 23.857151 -25.796841 13.980524 49.955734 -12.338074 0.000012 82.485702 -0.000023 -81.823890 -11.956362 30.667584 -0.000000 -0.000001 -0.000000 -0.000000 0.000002 -0.000004 0.000003 -0.000000 0.000000 -0.000000 0.000001 -0.000003 0.000001 0.000001 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000001 0.000001 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -11.353625 -1.097422 -10.190915 95.500873 -3.666785 -3.770032 65.432727 8.226439 -2.059197 -0.000033 0.000056 -0.000104 0.000001 -0.000000 -0.000000 -0.000036 0.000056 -0.000104 -0.000003 -0.000005 -0.000000 -0.000000 0.000003 0.000133 -11.112678 1.050066 -5.991963 95.314791 -3.525936 -3.896361 64.838965 -3.084413 -8.680210 -0.000024 0.000060 -0.000102 0.000000 -0.000000 -0.000000 -0.000025 0.000058 -0.000105 0.000001 0.000004 0.000000 0.000000 0.000002 -0.000095 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 3.962010 0.013401 8.730798 20.387802 -0.999698 -11.174523 -15.176757 -0.055761 0.600307 -14.191704 19.267096 -1.344059 -0.106233 39.243709 -7.343457 0.000002 0.000027 -179.999991 -0.000001 0.000003 0.000001 -0.000001 0.000003 0.000001 -0.000001 0.000003 0.000001 -0.000000 0.000000 0.000000 -17.397638 -13.467811 21.622673 -12.173117 -53.942652 0.593889 -0.000023 -78.008567 -0.000022 -90.668883 12.760268 -22.189574 0.000001 0.000000 0.000001 0.000001 -0.000002 0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 18.105534 23.887950 -25.768629 13.980529 49.955737 -12.338072 0.000002 82.541211 -0.000026 -81.842721 -11.967267 30.556641 0.000000 0.000004 0.000000 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000002 -0.000001 -0.000000 -11.444627 -1.099621 -9.844693 95.500873 -3.666784 -3.770032 65.432604 8.160459 -2.092253 -0.000031 0.000054 -0.000101 -0.000002 -0.000000 0.000000 -0.000035 0.000054 -0.000100 -0.000002 -0.000003 -0.000000 0.000001 0.000002 0.000135 -11.202970 1.062414 -5.779301 95.314791 -3.525936 -3.896361 64.843985 -3.033382 -8.654265 -0.000024 0.000057 -0.000101 -0.000000 -0.000001 -0.000000 -0.000023 0.000057 -0.000102 0.000002 0.000004 0.000000 0.000001 0.000002 -0.000096 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.049863 0.019387 8.419238 20.314362 -0.968736 -10.822462 -15.176757 -0.055761 0.600307 -14.254273 19.268471 -1.323412 -0.106232 39.243706 -7.343457 0.000002 0.000024 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -17.397641 -13.467813 21.622675 -12.173121 -53.942652 0.593890 -0.000027 -78.008567 -0.000018 -90.668883 12.760270 -22.189579 -0.000000 0.000005 0.000002 0.000001 0.000000 0.000003 -0.000002 -0.000001 0.000001 -0.000001 -0.000000 -0.000002 17.993252 23.937455 -25.723111 13.980520 49.955734 -12.338078 -0.000008 82.630502 -0.000036 -81.873075 -11.984740 30.378065 0.000003 0.000001 -0.000000 -0.000000 0.000000 -0.000001 -0.000001 0.000001 -0.000001 -0.000001 0.000002 -0.000004 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000001 0.000000 0.000000 -0.000001 0.000000 -11.535638 -1.102368 -9.498390 95.500873 -3.666786 -3.770033 65.432338 8.054262 -2.145446 -0.000027 0.000050 -0.000095 0.000001 -0.000000 -0.000000 -0.000029 0.000050 -0.000094 -0.000002 -0.000004 -0.000000 0.000000 0.000003 0.000132 -11.293312 1.074428 -5.566598 95.314791 -3.525936 -3.896360 64.852004 -2.951250 -8.612507 -0.000025 0.000055 -0.000098 0.000005 -0.000001 -0.000000 -0.000022 0.000054 -0.000098 0.000002 0.000003 0.000001 -0.000000 0.000002 -0.000096 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 0.000001
-0.000000 -19.670601 7.945948 4.137767 0.024897 8.107614 20.240714 -0.938219 -10.470275 -15.176757 -0.055760 0.600307 -14.338710 19.270294 -1.295547 -0.106233 39.243712 -7.343457 0.000002 0.000024 -179.999991 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 -0.000002 0.000000 -17.397636 -13.467813 21.622678 -12.173126 -53.942652 0.593884 -0.000035 -78.008567 -0.000018 -90.668876 12.760274 -22.189574 0.000002 -0.000002 0.000001 0.000003 0.000002 -0.000000 -0.000001 0.000001 0.000001 0.000000 0.000000 -0.000004 17.841557 24.004135 -25.661478 13.980524 49.955737 -12.338072 -0.000001 82.751034 -0.000040 -81.914145 -12.008168 30.136997 -0.000000 0.000001 -0.000006 0.000000 0.000000 -0.000004 -0.000001 -0.000000 -0.000001 -0.000001 0.000002 -0.000002 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000005 0.000000 0.000000 0.000005 0.000001 0.000000 -11.626647 -1.105667 -9.152004 95.500873 -3.666784 -3.770032 65.431805 7.910942 -2.217217 -0.000028 0.000048 -0.000089 -0.000000 -0.000000 -0.000000 -0.000029 0.000048 -0.000089 -0.000002 -0.000004 -0.000000 -0.000001 0.000002 0.000134 -11.383706 1.086108 -5.353855 95.314791 -3.525937 -3.896360 64.862741 -2.840391 -8.556181 -0.000027 0.000057 -0.000103 0.000003 -0.000001 -0.000000 -0.000026 0.000055 -0.000102 0.000001 0.000003 0.000001 0.000001 0.000002 -0.000096 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001
-0.000000 -19.670601 7.945948 4.225715 0.029929 7.795927 20.166864 -0.908149 -10.117978 -15.176757 -0.055761 0.600307 -14.443203 19.272495 -1.261060 -0.106233 39.243712 -7.343457 0.000002 0.000024 -179.999991 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 0.000002 0.000000 -17.397643 -13.467812 21.622671 -12.173116 -53.942648 0.593894 -0.000027 -78.008567 -0.000022 -90.668876 12.760274 -22.189579 0.000001 -0.000001 -0.000001 -0.000001 0.000000 0.000000 -0.000001 -0.000001 -0.000000 0.000001 0.000001 -0.000001 17.653628 24.086447 -25.584902 13.980515 49.955737 -12.338077 0.000002 82.900164 -0.000038 -81.965125 -12.036944 29.838576 -0.000002 -0.000000 0.000003 0.000001 -0.000001 -0.000003 -0.000001 0.000001 -0.000002 -0.000002 0.000004 -0.000002 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000001 -0.000000 -0.000000 -11.717661 -1.109518 -8.805550 95.500873 -3.666783 -3.770032 65.430904 7.733570 -2.305998 -0.000032 0.000048 -0.000089 -0.000000 -0.000000 -0.000000 -0.000034 0.000049 -0.000087 -0.000002 -0.000004 -0.000000 -0.000001 0.000003 0.000134 -11.474155 1.097453 -5.141075 95.314791 -3.525937 -3.896359 64.875869 -2.703193 -8.486511 -0.000026 0.000055 -0.000096 0.000003 -0.000001 -0.000000 -0.000023 0.000054 -0.000098 0.000002 0.000003 0.000000 0.000002 0.000002 -0.000097 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001
-0.000000 -19.670601 7.945948 4.313703 0.034484 7.484181 20.092815 -0.878528 -9.765570 -15.176757 -0.055760 0.600307 -14.565923 19.275002 -1.220553 -0.106234 39.243709 -7.343457 0.000002 0.000022 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000001 -0.000000 0.000001 0.000000 -17.397636 -13.467817 21.622680 -12.173124 -53.942645 0.593889 -0.000031 -78.008574 -0.000014 -90.668883 12.760271 -22.189575 0.000002 -0.000001 0.000000 0.000001 0.000002 0.000001 0.000001 0.000001 0.000002 0.000000 0.000001 -0.000003 17.432586 24.182838 -25.494528 13.980519 49.955734 -12.338072 0.000013 83.075352 -0.000028 -82.025197 -12.070403 29.487955 0.000002 0.000007 -0.000001 0.000000 0.000001 -0.000006 0.000002 -0.000000 0.000000 -0.000002 0.000002 -0.000002 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000004 -0.000000 -0.000000 -11.808665 -1.113918 -8.459035 95.500873 -3.666782 -3.770031 65.429490 7.525251 -2.410237 -0.000025 0.000043 -0.000079 -0.000001 -0.000000 0.000000 -0.000025 0.000044 -0.000080 -0.000002 -0.000003 -0.000000 -0.000000 0.000002 0.000135 -11.564651 1.108463 -4.928259 95.314791 -3.525937 -3.896361 64.891073 -2.542032 -8.404732 -0.000022 0.000052 -0.000093 0.000004 0.000001 0.000001 -0.000023 0.000050 -0.000093 0.000002 0.000004 0.000001 0.000000 0.000002 -0.000097 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 4.401725 0.038560 7.172383 20.018578 -0.849358 -9.413067 -15.176755 -0.055759 0.600307 -14.705059 19.277751 -1.174620 -0.106233 39.243716 -7.343457 0.000002 0.000022 -179.999991 0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000001 0.000000 -0.000001 0.000000 0.000000 0.000002 0.000000 -17.397639 -13.467816 21.622678 -12.173117 -53.942645 0.593891 -0.000023 -78.008567 -0.000016 -90.668876 12.760273 -22.189577 -0.000001 0.000001 0.000003 0.000003 0.000003 -0.000001 -0.000000 -0.000004 0.000001 0.000001 0.000001 -0.000002 17.181580 24.291735 -25.391489 13.980513 49.955734 -12.338072 0.000021 83.273933 -0.000029 -82.093594 -12.107920 29.090271 -0.000001 0.000002 0.000001 -0.000000 -0.000001 -0.000002 0.000003 -0.000000 0.000000 -0.000002 0.000002 -0.000003 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000003 0.000000 0.000000 -0.000002 0.000000 0.000000 -11.899659 -1.118870 -8.112468 95.500873 -3.666782 -3.770031 65.427434 7.289064 -2.528365 -0.000026 0.000042 -0.000078 0.000001 0.000000 0.000000 -0.000026 0.000042 -0.000076 -0.000002 -0.000003 -0.000000 -0.000000 0.000003 0.000136 -11.655194 1.119137 -4.715407 95.314791 -3.525937 -3.896359 64.908053 -2.359296 -8.312085 -0.000032 0.000053 -0.000094 0.000003 -0.000000 -0.000000 -0.000033 0.000053 -0.000093 0.000001 0.000003 -0.000000 0.000002 0.000002 -0.000098 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.489782 0.042158 6.860543 19.944151 -0.820639 -9.060470 -15.176757 -0.055760 0.600307 -14.858783 19.280659 -1.123863 -0.106234 39.243712 -7.343458 0.000002 0.000020 -179.999991 -0.000000 -0.000004 -0.000001 -0.000000 -0.000004 -0.000001 -0.000000 -0.000004 0.000000 -0.000000 0.000000 0.000000 -17.397639 -13.467814 21.622676 -12.173120 -53.942645 0.593889 -0.000035 -78.008574 -0.000022 -90.668876 12.760270 -22.189580 -0.000001 -0.000001 -0.000001 0.000000 0.000001 0.000001 -0.000001 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 16.903723 24.411574 -25.276918 13.980520 49.955734 -12.338071 0.000006 83.493359 -0.000034 -82.169464 -12.148825 28.650666 0.000002 0.000004 -0.000002 0.000001 0.000001 -0.000003 0.000001 0.000000 0.000001 -0.000002 0.000001 -0.000002 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -11.990631 -1.124373 -7.765845 95.500873 -3.666782 -3.770031 65.424586 7.028093 -2.658830 -0.000025 0.000041 -0.000074 0.000000 -0.000000 0.000000 -0.000025 0.000042 -0.000074 -0.000001 -0.000003 -0.000000 0.000000 0.000002 0.000135 -11.745787 1.129476 -4.502528 95.314791 -3.525936 -3.896360 64.926440 -2.157358 -8.209800 -0.000025 0.000049 -0.000088 0.000001 0.000000 0.000001 -0.000023 0.000051 -0.000089 0.000002 0.000002 -0.000000 0.000002 0.000002 -0.000098 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.577865 0.045277 6.548659 19.869536 -0.792376 -8.707791 -15.176757 -0.055759 0.600307 -15.025281 19.283668 -1.068883 -0.106234 39.243706 -7.343458 0.000002 0.000023 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000001 -0.000000 0.000003 0.000000 -17.397639 -13.467812 21.622673 -12.173117 -53.942645 0.593894 -0.000027 -78.008567 -0.000018 -90.668883 12.760271 -22.189574 0.000000 -0.000002 -0.000001 0.000004 0.000002 -0.000000 0.000000 -0.000001 0.000001 0.000001 0.000000 -0.000002 16.602180 24.540798 -25.151979 13.980521 49.955737 -12.338072 0.000003 83.731002 -0.000035 -82.252075 -12.192502 28.174327 0.000001 0.000000 0.000003 0.000000 -0.000000 0.000001 -0.000001 -0.000000 -0.000000 -0.000002 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000002 0.000000 -0.000000 -12.081590 -1.130428 -7.419187 95.500873 -3.666780 -3.770031 65.420829 6.745431 -2.800069 -0.000021 0.000036 -0.000067 0.000000 -0.000000 0.000000 -0.000024 0.000037 -0.000068 -0.000002 -0.000004 -0.000000 -0.000000 0.000003 0.000136 -11.836421 1.139479 -4.289617 95.314791 -3.525936 -3.896361 64.945947 -1.938606 -8.099097 -0.000025 0.000048 -0.000085 0.000002 -0.000000 0.000001 -0.000023 0.000046 -0.000084 0.000001 0.000002 -0.000000 0.000000 0.000002 -0.000096 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.665972 0.047916 6.236741 19.794737 -0.764569 -8.355032 -15.176755 -0.055761 0.600307 -15.202727 19.286707 -1.010278 -0.106234 39.243712 -7.343458 0.000002 0.000023 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000001 -0.000001 0.000002 0.000001 -17.397638 -13.467811 21.622678 -12.173121 -53.942648 0.593894 -0.000011 -78.008567 -0.000026 -90.668876 12.760276 -22.189577 -0.000001 -0.000000 0.000003 0.000002 0.000001 -0.000001 0.000000 -0.000001 -0.000001 0.000001 0.000001 -0.000001 16.280108 24.677868 -25.017856 13.980517 49.955734 -12.338075 -0.000001 83.984300 -0.000033 -82.340512 -12.238307 27.666412 0.000001 0.000005 0.000001 0.000001 0.000001 -0.000001 0.000001 -0.000000 0.000000 -0.000000 0.000003 -0.000002 -0.000001 0.000001 -0.000000 -0.000002 0.000001 -0.000000 -0.000002 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000001 0.000000 -12.172516 -1.137033 -7.072497 95.500873 -3.666781 -3.770032 65.416055 6.444185 -2.950548 -0.000019 0.000032 -0.000061 0.000000 0.000000 0.000000 -0.000019 0.000032 -0.000060 -0.000001 -0.000002 -0.000000 0.000000 0.000002 0.000136 -11.927089 1.149145 -4.076681 95.314791 -3.525937 -3.896360 64.966287 -1.705431 -7.981220 -0.000022 0.000046 -0.000079 0.000004 0.000000 0.000000 -0.000020 0.000045 -0.000080 0.000001 0.000002 0.000000 0.000000 0.000002 -0.000098 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
-0.000000 -19.670599 7.945948 4.754100 0.050076 5.924795 19.719769 -0.737222 -8.002210 -15.176752 -0.055759 0.600307 -15.389302 19.289716 -0.948649 -0.106233 39.243709 -7.343457 0.000002 0.000021 -179.999991 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000001 0.000002 0.000001 -17.397641 -13.467816 21.622675 -12.173113 -53.942645 0.593889 -0.000035 -78.008567 -0.000024 -90.668883 12.760271 -22.189580 0.000001 -0.000000 0.000001 0.000003 0.000003 0.000001 -0.000002 -0.000001 -0.000000 0.000001 -0.000000 -0.000004 15.940707 24.821256 -24.875768 13.980520 49.955737 -12.338071 0.000016 84.250602 -0.000035 -82.433990 -12.285656 27.132121 0.000001 0.000005 0.000003 0.000000 0.000001 -0.000003 0.000002 0.000001 0.000000 0.000001 0.000001 -0.000001 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 -12.263411 -1.144189 -6.725784 95.500873 -3.666780 -3.770031 65.410188 6.127445 -3.108696 -0.000020 0.000029 -0.000054 -0.000000 0.000000 -0.000000 -0.000020 0.000029 -0.000054 -0.000001 -0.000002 -0.000000 -0.000000 0.000003 0.000136 -12.017804 1.158475 -3.863719 95.314791 -3.525937 -3.896360 64.987133 -1.460215 -7.857377 -0.000015 0.000044 -0.000079 0.000001 -0.000000 0.000000 -0.000015 0.000042 -0.000080 0.000002 0.000002 0.000001 -0.000001 0.000002 -0.000097 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.842246 0.051756 5.612828 19.644623 -0.710332 -7.649320 -15.176755 -0.055760 0.600307 -15.583181 19.292645 -0.884598 -0.106233 39.243712 -7.343457 0.000002 0.000022 -179.999991 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -17.397639 -13.467812 21.622671 -12.173115 -53.942652 0.593891 -0.000035 -78.008567 -0.000022 -90.668876 12.760273 -22.189577 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000000 -0.000001 0.000000 -0.000000 0.000002 0.000001 -0.000002 15.587170 24.969425 -24.726936 13.980521 49.955744 -12.338074 0.000007 84.527334 -0.000041 -82.531641 -12.333958 26.576650 0.000001 -0.000000 0.000002 -0.000000 0.000001 -0.000003 -0.000000 0.000000 0.000000 -0.000001 0.000002 -0.000000 -0.000001 0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000000 -0.000000 -12.354266 -1.151895 -6.379054 95.500873 -3.666778 -3.770031 65.403146 5.798314 -3.272976 -0.000018 0.000026 -0.000048 -0.000001 0.000000 0.000000 -0.000020 0.000025 -0.000049 -0.000001 -0.000003 -0.000000 0.000000 0.000002 0.000137 -12.108553 1.167468 -3.650737 95.314791 -3.525937 -3.896360 65.008245 -1.205357 -7.728794 -0.000021 0.000045 -0.000077 0.000003 0.000000 -0.000000 -0.000020 0.000046 -0.000078 0.000001 0.000002 0.000000 0.000002 0.000002 -0.000098 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 4.930401 0.052956 5.300842 19.569308 -0.683905 -7.296379 -15.176757 -0.055761 0.600307 -15.782535 19.295443 -0.818727 -0.106233 39.243716 -7.343457 0.000002 0.000022 -179.999991 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000002 -0.000001 0.000002 0.000001 -17.397638 -13.467814 21.622675 -12.173119 -53.942645 0.593892 -0.000031 -78.008574 -0.000026 -90.668876 12.760276 -22.189580 0.000000 -0.000004 -0.000002 0.000002 0.000002 -0.000002 -0.000001 0.000000 -0.000001 -0.000001 0.000001 -0.000002 15.222764 25.120937 -24.572668 13.980526 49.955737 -12.338072 0.000012 84.811880 -0.000048 -82.632564 -12.382666 26.005237 -0.000000 -0.000003 0.000001 -0.000001 -0.000000 -0.000004 0.000000 -0.000000 -0.000001 -0.000001 0.000001 -0.000003 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 0.000000 -0.000004 -0.000001 0.000000 -0.000004 -0.000001 0.000000 -12.445079 -1.160152 -6.032313 95.500873 -3.666780 -3.770031 65.394936 5.459902 -3.441856 -0.000016 0.000022 -0.000042 -0.000002 0.000000 0.000000 -0.000016 0.000022 -0.000042 -0.000001 -0.000002 -0.000000 0.000001 0.000002 0.000137 -12.199340 1.176124 -3.437733 95.314791 -3.525937 -3.896360 65.029330 -0.943247 -7.596684 -0.000022 0.000045 -0.000079 0.000002 -0.000000 0.000000 -0.000021 0.000045 -0.000081 0.000001 0.000002 0.000000 -0.000000 0.000002 -0.000098 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.018565 0.053676 4.988843 19.493835 -0.657942 -6.943392 -15.176757 -0.055760 0.600307 -15.985547 19.298069 -0.751639 -0.106233 39.243712 -7.343457 0.000002 0.000024 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000002 0.000000 -17.397638 -13.467817 21.622676 -12.173117 -53.942642 0.593887 -0.000027 -78.008567 -0.000014 -90.668876 12.760273 -22.189572 -0.000001 0.000001 0.000000 0.000002 0.000002 -0.000000 -0.000001 -0.000000 0.000002 0.000001 0.000000 -0.000002 14.850740 25.274304 -24.414289 13.980520 49.955737 -12.338072 0.000008 85.101644 -0.000046 -82.735885 -12.431258 25.423117 0.000001 0.000002 0.000003 0.000001 0.000001 -0.000003 0.000004 -0.000000 -0.000000 -0.000000 0.000002 -0.000001 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -12.535847 -1.168958 -5.685572 95.500873 -3.666779 -3.770032 65.385538 5.115305 -3.613779 -0.000017 0.000022 -0.000040 0.000002 0.000000 0.000000 -0.000016 0.000023 -0.000043 -0.000001 -0.000002 -0.000000 -0.000002 0.000003 0.000136 -12.290159 1.184442 -3.224714 95.314791 -3.525937 -3.896360 65.050203 -0.676287 -7.462266 -0.000021 0.000044 -0.000077 0.000001 0.000001 0.000000 -0.000021 0.000043 -0.000077 0.000002 0.000003 0.000000 -0.000000 0.000002 -0.000098 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.106734 0.053916 4.676840 19.418195 -0.632445 -6.590365 -15.176759 -0.055761 0.600306 -16.190393 19.300492 -0.683938 -0.106232 39.243712 -7.343458 0.000003 0.000025 -179.999991 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000003 0.000000 -17.397641 -13.467816 21.622678 -12.173120 -53.942645 0.593888 -0.000027 -78.008567 -0.000020 -90.668876 12.760273 -22.189577 0.000002 0.000000 0.000001 0.000000 0.000002 0.000000 -0.000001 -0.000000 0.000000 0.000001 0.000000 -0.000002 14.474417 25.428091 -24.253153 13.980521 49.955737 -12.338072 0.000027 85.394017 -0.000044 -82.840639 -12.479235 24.835541 0.000002 0.000005 0.000001 0.000000 0.000000 -0.000006 0.000000 0.000001 -0.000000 0.000001 0.000003 -0.000001 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 -12.626556 -1.178313 -5.338837 95.500873 -3.666779 -3.770032 65.375026 4.767642 -3.787222 -0.000011 0.000016 -0.000030 0.000001 -0.000000 0.000000 -0.000010 0.000017 -0.000030 -0.000001 -0.000002 -0.000000 0.000001 0.000003 0.000137 -12.381007 1.192423 -3.011678 95.314791 -3.525937 -3.896361 65.070632 -0.406877 -7.326750 -0.000021 0.000038 -0.000069 0.000003 0.000000 0.000001 -0.000021 0.000038 -0.000070 0.000001 0.000002 0.000001 -0.000001 0.000002 -0.000098 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.194902 0.053676 4.364837 19.342402 -0.607412 -6.237306 -15.176759 -0.055760 0.600307 -16.395239 19.302683 -0.616226 -0.106233 39.243709 -7.343457 0.000001 0.000024 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -17.397641 -13.467814 21.622678 -12.173116 -53.942648 0.593894 -0.000023 -78.008567 -0.000030 -90.668876 12.760276 -22.189579 0.000002 -0.000003 0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000001 -0.000002 0.000000 0.000001 -0.000002 14.097136 25.580926 -24.090702 13.980521 49.955734 -12.338071 0.000041 85.686376 -0.000053 -82.945927 -12.526172 24.247762 -0.000001 -0.000003 -0.000000 0.000000 0.000000 -0.000002 -0.000000 -0.000000 -0.000000 -0.000002 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000002 -0.000001 0.000000 -0.000001 -0.000001 0.000000 -12.717212 -1.188217 -4.992116 95.500873 -3.666779 -3.770032 65.363449 4.420002 -3.960637 -0.000009 0.000017 -0.000031 0.000001 0.000000 0.000000 -0.000011 0.000016 -0.000030 -0.000001 -0.000001 -0.000000 -0.000001 0.000003 0.000136 -12.471888 1.200066 -2.798630 95.314791 -3.525938 -3.896359 65.090405 -0.137415 -7.191323 -0.000022 0.000038 -0.000066 0.000000 0.000000 0.000000 -0.000021 0.000037 -0.000067 0.000001 0.000002 0.000001 0.000002 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.283066 0.052956 4.052840 19.266458 -0.582848 -5.884219 -15.176754 -0.055761 0.600307 -16.598273 19.304637 -0.549110 -0.106233 39.243709 -7.343460 0.000003 0.000020 -179.999991 0.000001 -0.000002 -0.000000 0.000001 -0.000002 -0.000000 0.000001 -0.000002 -0.000001 -0.000001 -0.000000 0.000000 -17.397641 -13.467815 21.622676 -12.173111 -53.942645 0.593891 -0.000027 -78.008567 -0.000020 -90.668876 12.760271 -22.189582 0.000003 0.000005 0.000003 0.000002 -0.000005 0.000003 -0.000000 0.000003 0.000000 0.000002 0.000002 -0.000002 13.722278 25.731445 -23.928405 13.980522 49.955737 -12.338067 0.000028 85.976133 -0.000050 -83.050756 -12.571644 23.665060 0.000000 -0.000000 0.000001 0.000000 -0.000001 0.000004 -0.000000 -0.000000 0.000000 0.000001 0.000002 -0.000001 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000002 -0.000000 0.000000 -0.000003 -0.000000 0.000000 -12.807805 -1.198669 -4.645415 95.500873 -3.666781 -3.770032 65.350943 4.075506 -4.132503 -0.000005 0.000013 -0.000026 0.000003 0.000000 -0.000000 -0.000009 0.000012 -0.000024 -0.000000 -0.000002 -0.000000 0.000001 0.000003 0.000136 -12.562798 1.207371 -2.585570 95.314791 -3.525937 -3.896359 65.109386 0.129683 -7.057196 -0.000017 0.000039 -0.000066 0.000002 0.000000 0.000001 -0.000018 0.000039 -0.000067 0.000001 0.000002 -0.000000 -0.000000 0.000002 -0.000099 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 5.371222 0.051756 3.740854 19.190364 -0.558753 -5.531121 -15.176759 -0.055761 0.600307 -16.797655 19.306325 -0.483193 -0.106233 39.243702 -7.343458 0.000003 0.000022 -179.999991 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 -0.000000 0.000000 0.000000 0.000000 -17.397641 -13.467814 21.622675 -12.173113 -53.942645 0.593895 -0.000031 -78.008567 -0.000022 -90.668876 12.760272 -22.189574 0.000001 0.000001 0.000001 0.000003 -0.000001 0.000001 -0.000001 -0.000002 0.000000 0.000001 -0.000000 0.000001 13.353238 25.878306 -23.767754 13.980519 49.955734 -12.338077 0.000030 86.260686 -0.000048 -83.154193 -12.615277 23.092699 -0.000000 0.000000 -0.000002 0.000000 -0.000001 -0.000001 -0.000001 -0.000001 0.000000 0.000001 0.000005 -0.000003 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000004 -0.000001 -0.000000 -0.000003 -0.000001 -0.000000 -12.898327 -1.209668 -4.298747 95.500873 -3.666779 -3.770031 65.337665 3.737255 -4.301282 -0.000006 0.000010 -0.000020 0.000001 0.000000 -0.000000 -0.000007 0.000010 -0.000020 -0.000000 -0.000002 -0.000000 0.000001 0.000002 0.000137 -12.653725 1.214338 -2.372502 95.314791 -3.525938 -3.896359 65.127404 0.392026 -6.925568 -0.000018 0.000032 -0.000060 0.000002 0.000001 -0.000000 -0.000015 0.000033 -0.000059 0.000002 0.000002 -0.000001 0.000002 0.000002 -0.000099 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 5.459367 0.050076 3.428885 19.114138 -0.535130 -5.178011 -15.176755 -0.055760 0.600307 -16.991567 19.307772 -0.419078 -0.106233 39.243712 -7.343459 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000002 0.000000 -17.397636 -13.467810 21.622675 -12.173117 -53.942648 0.593894 -0.000023 -78.008567 -0.000006 -90.668876 12.760267 -22.189580 -0.000001 0.000001 0.000001 0.000004 -0.000001 0.000001 0.000002 0.000002 0.000003 0.000000 0.000002 -0.000001 12.993473 26.020243 -23.610332 13.980519 49.955737 -12.338072 0.000022 86.537411 -0.000052 -83.255184 -12.656734 22.535956 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 -0.000002 0.000003 0.000000 0.000000 -0.000002 0.000002 -0.000002 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -12.988781 -1.221214 -3.952113 95.500873 -3.666779 -3.770031 65.323793 3.408338 -4.465429 -0.000005 0.000006 -0.000011 0.000001 -0.000000 -0.000000 -0.000006 0.000005 -0.000011 -0.000000 -0.000001 -0.000000 -0.000001 0.000002 0.000137 -12.744682 1.220966 -2.159429 95.314791 -3.525938 -3.896359 65.144384 0.647189 -6.797630 -0.000018 0.000033 -0.000060 -0.000001 0.000001 -0.000000 -0.000016 0.000033 -0.000062 0.000001 0.000001 -0.000001 0.000001 0.000002 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.547493 0.047916 3.116938 19.037771 -0.511979 -4.824902 -15.176754 -0.055761 0.600307 -17.178187 19.308965 -0.357373 -0.106232 39.243712 -7.343457 0.000002 0.000018 -179.999991 -0.000001 -0.000002 0.000000 -0.000001 -0.000002 0.000000 -0.000001 -0.000002 -0.000000 0.000000 -0.000001 0.000000 -17.397638 -13.467813 21.622678 -12.173118 -53.942645 0.593890 -0.000015 -78.008567 -0.000012 -90.668876 12.760271 -22.189574 -0.000000 0.000000 0.000001 0.000002 0.000002 -0.000000 -0.000002 0.000001 0.000002 0.000000 0.000001 -0.000002 12.646439 26.155977 -23.457725 13.980517 49.955734 -12.338074 0.000013 86.803727 -0.000064 -83.352780 -12.695724 22.000099 0.000000 0.000001 -0.000002 -0.000002 -0.000001 -0.000002 0.000005 -0.000000 -0.000000 -0.000002 0.000002 -0.000001 -0.000003 0.000000 0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000004 -0.000000 0.000000 0.000004 -0.000000 0.000000 -13.079153 -1.233306 -3.605525 95.500873 -3.666779 -3.770031 65.309559 3.091864 -4.623415 -0.000002 0.000003 -0.000007 0.000002 0.000000 -0.000000 -0.000001 0.000003 -0.000006 0.000000 -0.000001 -0.000000 0.000001 0.000003 0.000137 -12.835659 1.227256 -1.946351 95.314791 -3.525937 -3.896360 65.160169 0.892786 -6.674583 -0.000018 0.000032 -0.000057 0.000003 -0.000000 -0.000000 -0.000016 0.000033 -0.000058 0.000000 0.000002 -0.000000 0.000001 0.000002 -0.000098 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
-0.000000 -19.670601 7.945948 5.635603 0.045276 2.805022 18.961261 -0.489300 -4.471798 -15.176755 -0.055761 0.600307 -17.355688 19.309923 -0.298679 -0.106233 39.243709 -7.343458 0.000002 0.000019 -179.999991 -0.000001 -0.000001 0.000001 -0.000001 -0.000001 0.000001 -0.000001 -0.000001 0.000001 -0.000000 -0.000001 -0.000000 -17.397641 -13.467813 21.622676 -12.173123 -53.942652 0.593896 -0.000027 -78.008567 -0.000010 -90.668876 12.760274 -22.189577 -0.000001 -0.000001 -0.000001 0.000002 0.000000 0.000000 -0.000001 0.000001 0.000003 0.000000 0.000000 0.000000 12.315660 26.284308 -23.311584 13.980521 49.955730 -12.338069 0.000022 87.056997 -0.000078 -83.445937 -12.731973 21.490395 0.000000 0.000008 -0.000000 -0.000001 -0.000001 0.000000 0.000004 -0.000001 -0.000000 -0.000002 0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 -13.169438 -1.245943 -3.258988 95.500873 -3.666779 -3.770032 65.295208 2.790923 -4.773696 -0.000007 0.000001 -0.000005 0.000001 0.000000 0.000000 -0.000005 0.000002 -0.000004 -0.000000 0.000000 0.000000 -0.000000 0.000003 0.000137 -12.926656 1.233208 -1.733271 95.314791 -3.525938 -3.896358 65.174669 1.126394 -6.557600 -0.000020 0.000033 -0.000054 0.000001 0.000001 0.000000 -0.000018 0.000033 -0.000057 0.000001 0.000002 -0.000001 -0.000001 0.000002 -0.000098 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.723687 0.042158 2.493139 18.884631 -0.467097 -4.118708 -15.176755 -0.055760 0.600307 -17.522244 19.310666 -0.243602 -0.106232 39.243709 -7.343459 0.000002 0.000021 -179.999991 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000001 0.000000 -0.000000 -17.397643 -13.467812 21.622673 -12.173117 -53.942645 0.593891 -0.000027 -78.008567 -0.000020 -90.668876 12.760271 -22.189577 0.000000 0.000001 0.000001 -0.000001 -0.000002 0.000002 -0.000001 -0.000002 0.000001 0.000002 0.000001 -0.000002 12.004629 26.404017 -23.173551 13.980520 49.955730 -12.338075 0.000033 87.294660 -0.000067 -83.533658 -12.765250 21.012111 0.000001 0.000005 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000002 0.000000 -0.000004 -0.000000 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -13.259642 -1.259124 -2.912512 95.500873 -3.666778 -3.770031 65.281036 2.508592 -4.914734 0.000001 -0.000002 0.000001 0.000002 -0.000000 0.000000 0.000002 -0.000002 0.000001 -0.000000 -0.000000 -0.000000 0.000001 0.000002 0.000138 -13.017666 1.238821 -1.520192 95.314791 -3.525938 -3.896360 65.187865 1.345616 -6.447876 -0.000018 0.000028 -0.000051 -0.000001 -0.000001 -0.000000 -0.000019 0.000028 -0.000053 0.000001 0.000002 -0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.811742 0.038560 2.181296 18.807875 -0.445369 -3.765638 -15.176757 -0.055761 0.600307 -17.676026 19.311218 -0.192746 -0.106233 39.243712 -7.343457 0.000002 0.000019 -179.999991 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 0.000000 -0.000000 -17.397643 -13.467815 21.622678 -12.173114 -53.942648 0.593893 -0.000023 -78.008567 -0.000018 -90.668876 12.760270 -22.189580 0.000001 -0.000002 -0.000003 0.000003 -0.000000 0.000001 -0.000001 0.000002 0.000001 0.000003 0.000001 -0.000001 11.716894 26.513934 -23.045350 13.980520 49.955737 -12.338068 0.000026 87.514094 -0.000083 -83.614875 -12.795316 20.570488 -0.000000 0.000000 0.000001 -0.000001 -0.000001 -0.000002 0.000002 0.000001 0.000000 -0.000002 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000004 0.000000 0.000000 -0.000004 0.000000 0.000000 -13.349748 -1.272849 -2.566101 95.500873 -3.666778 -3.770031 65.267348 2.247967 -5.044981 -0.000000 -0.000006 0.000010 0.000003 -0.000000 0.000000 0.000001 -0.000007 0.000011 0.000001 -0.000001 -0.000000 -0.000000 0.000002 0.000137 -13.108696 1.244096 -1.307117 95.314791 -3.525938 -3.896359 65.199681 1.548043 -6.346611 -0.000013 0.000028 -0.000048 0.000001 0.000000 0.000001 -0.000011 0.000027 -0.000050 0.000001 0.000001 0.000000 0.000001 0.000002 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 5.899764 0.034484 1.869499 18.730998 -0.424118 -3.412596 -15.176754 -0.055760 0.600307 -17.815222 19.311609 -0.146714 -0.106233 39.243712 -7.343459 0.000003 0.000021 -179.999991 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 0.000000 0.000001 -0.000000 -17.397641 -13.467817 21.622675 -12.173125 -53.942648 0.593890 -0.000027 -78.008574 -0.000012 -90.668876 12.760272 -22.189574 0.000002 -0.000001 0.000001 0.000004 -0.000000 0.000001 0.000001 -0.000001 0.000002 -0.000000 0.000001 -0.000003 11.456009 26.612924 -22.928691 13.980515 49.955734 -12.338067 0.000039 87.712681 -0.000080 -83.688580 -12.822006 20.170787 0.000000 0.000006 -0.000000 -0.000002 -0.000000 -0.000002 0.000002 0.000001 0.000000 -0.000001 0.000001 -0.000002 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -13.439759 -1.287115 -2.219768 95.500873 -3.666779 -3.770031 65.254439 2.012114 -5.162896 -0.000001 -0.000006 0.000011 0.000001 0.000000 0.000000 -0.000003 -0.000007 0.000011 0.000000 0.000000 -0.000000 0.000000 0.000002 0.000137 -13.199741 1.249031 -1.094047 95.314784 -3.525937 -3.896358 65.210049 1.731275 -6.254992 -0.000014 0.000028 -0.000046 0.000001 0.000000 -0.000000 -0.000015 0.000026 -0.000048 0.000001 0.000001 -0.000001 0.000002 0.000002 -0.000100 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000
-0.000000 -19.670601 7.945948 5.987752 0.029929 1.557754 18.654013 -0.403345 -3.059593 -15.176759 -0.055760 0.600307 -17.938001 19.311863 -0.106110 -0.106232 39.243712 -7.343458 0.000003 0.000022 -179.999991 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000001 -0.000000 -0.000000 -17.397641 -13.467817 21.622673 -12.173115 -53.942652 0.593890 -0.000031 -78.008567 -0.000020 -90.668883 12.760270 -22.189580 -0.000001 0.000001 0.000001 0.000000 -0.000001 0.000001 -0.000001 0.000001 0.000000 0.000001 -0.000000 -0.000002 11.225536 26.699838 -22.825290 13.980520 49.955737 -12.338071 0.000060 87.887869 -0.000110 -83.753760 -12.845128 19.818234 -0.000000 0.000004 -0.000000 -0.000001 0.000000 -0.000003 0.000003 0.000000 0.000000 -0.000002 0.000003 -0.000001 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000000 -13.529662 -1.301922 -1.873514 95.500873 -3.666779 -3.770031 65.242643 1.804129 -5.266930 0.000007 -0.000013 0.000024 0.000000 0.000000 0.000000 0.000008 -0.000014 0.000024 0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -13.290793 1.253628 -0.880983 95.314791 -3.525938 -3.896360 65.218956 1.892899 -6.174187 -0.000018 0.000027 -0.000050 0.000001 0.000000 -0.000000 -0.000016 0.000027 -0.000050 0.000000 0.000002 -0.000000 0.000001 0.000002 -0.000100 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000
-0.000000 -19.670601 7.945948 6.075700 0.024897 1.246066 18.576906 -0.383049 -2.706633 -15.176757 -0.055760 0.600307 -18.042546 19.312015 -0.071536 -0.106233 39.243712 -7.343458 0.000003 0.000022 -179.999991 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000001 -0.000001 -0.000000 -17.397641 -13.467812 21.622673 -12.173118 -53.942648 0.593889 -0.000019 -78.008567 -0.000012 -90.668876 12.760272 -22.189577 0.000003 0.000003 0.000000 0.000001 0.000001 0.000001 -0.000001 0.000002 0.000002 0.000000 0.000002 -0.000003 11.029031 26.773534 -22.736885 13.980519 49.955737 -12.338068 0.000058 88.036992 -0.000106 -83.809351 -12.864504 19.518066 0.000001 0.000006 0.000001 -0.000000 -0.000001 -0.000001 0.000006 -0.000001 0.000000 0.000001 0.000002 -0.000001 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 -0.000000 -13.619460 -1.317269 -1.527353 95.500873 -3.666777 -3.770032 65.232323 1.627057 -5.355527 0.000004 -0.000016 0.000028 0.000002 -0.000000 0.000000 0.000007 -0.000016 0.000028 0.000001 0.000001 -0.000000 0.000001 0.000003 0.000138 -13.381855 1.257886 -0.667929 95.314784 -3.525938 -3.896360 65.226374 2.030526 -6.105413 -0.000009 0.000025 -0.000040 -0.000003 0.000001 -0.000000 -0.000008 0.000023 -0.000040 0.000001 0.000001 0.000001 -0.000000 0.000002 -0.000100 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000
-0.000000 -19.670601 7.945948 6.163602 0.019387 0.934440 18.499694 -0.363235 -2.353723 -15.176759 -0.055760 0.600307 -18.127030 19.312104 -0.043596 -0.106234 39.243702 -7.343458 0.000004 0.000021 -179.999991 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000001 0.000000 -17.397639 -13.467818 21.622676 -12.173117 -53.942645 0.593893 -0.000019 -78.008574 -0.000020 -90.668876 12.760272 -22.189580 -0.000001 0.000003 -0.000001 0.000003 -0.000000 -0.000000 0.000000 -0.000001 0.000001 -0.000000 0.000001 -0.000002 10.870063 26.832904 -22.665196 13.980520 49.955737 -12.338072 0.000075 88.157532 -0.000113 -83.854362 -12.879948 19.275506 -0.000000 -0.000002 -0.000000 -0.000001 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000001 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -13.709146 -1.333155 -1.181287 95.500873 -3.666779 -3.770031 65.223764 1.483990 -5.427136 0.000006 -0.000018 0.000032 0.000000 0.000000 0.000001 0.000006 -0.000019 0.000034 0.000001 0.000001 0.000000 0.000001 0.000003 0.000137 -13.472924 1.261804 -0.454887 95.314791 -3.525937 -3.896359 65.232241 2.141746 -6.049839 -0.000015 0.000021 -0.000039 -0.000000 0.000000 0.000001 -0.000013 0.000023 -0.000039 0.000001 0.000001 -0.000000 0.000001 0.000002 -0.000099 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 6.251457 0.013400 0.622884 18.422385 -0.343901 -2.000873 -15.176759 -0.055760 0.600307 -18.189630 19.312129 -0.022894 -0.106233 39.243712 -7.343457 0.000003 0.000021 -179.999991 0.000000 0.000002 0.000003 0.000000 0.000002 0.000003 0.000000 0.000002 0.000002 0.000001 0.000000 0.000000 -17.397641 -13.467817 21.622675 -12.173116 -53.942642 0.593889 -0.000039 -78.008567 -0.000022 -90.668876 12.760270 -22.189577 0.000002 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000001 10.752161 26.876772 -22.611941 13.980522 49.955737 -12.338072 0.000051 88.246830 -0.000119 -83.887741 -12.891267 19.095783 -0.000000 -0.000007 -0.000000 -0.000001 -0.000001 -0.000003 -0.000002 0.000001 0.000000 0.000001 0.000003 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -13.798713 -1.349578 -0.835326 95.500873 -3.666777 -3.770031 65.217330 1.377985 -5.480207 0.000007 -0.000022 0.000038 0.000000 0.000000 -0.000000 0.000011 -0.000022 0.000039 -0.000000 0.000001 -0.000000 0.000001 0.000002 0.000138 -13.563997 1.265384 -0.241859 95.314791 -3.525938 -3.896358 65.236523 2.224162 -6.008670 -0.000010 0.000020 -0.000033 -0.000003 -0.000000 -0.000000 -0.000009 0.000019 -0.000034 0.000000 0.000000 0.000000 0.000001 0.000002 -0.000102 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
-0.000000 -19.670601 7.945948 6.339260 0.006938 0.311401 18.344976 -0.325047 -1.648091 -15.176757 -0.055761 0.600307 -18.228528 19.312145 -0.010029 -0.106232 39.243712 -7.343457 0.000004 0.000021 -179.999991 0.000001 0.000001 -0.000001 0.000001 0.000001 -0.000001 0.000001 0.000001 -0.000002 0.000001 -0.000001 -0.000000 -17.397643 -13.467815 21.622673 -12.173115 -53.942642 0.593891 -0.000031 -78.008567 -0.000016 -90.668876 12.760268 -22.189577 -0.000002 0.000005 0.000001 0.000001 -0.000002 0.000002 -0.000001 0.000000 0.000001 -0.000001 0.000002 -0.000002 10.678862 26.903975 -22.578789 13.980526 49.955737 -12.338074 0.000053 88.302318 -0.000123 -83.908505 -12.898252 18.984116 -0.000001 0.000000 0.000001 -0.000001 -0.000000 -0.000001 -0.000001 0.000000 0.000000 -0.000001 0.000002 -0.000002 -0.000000 0.000001 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -13.888154 -1.366537 -0.489479 95.500873 -3.666779 -3.770031 65.213273 1.312131 -5.513185 0.000011 -0.000024 0.000044 -0.000001 0.000000 0.000000 0.000011 -0.000024 0.000043 0.000001 0.000001 0.000000 -0.000001 0.000003 0.000136 -13.655079 1.268625 -0.028851 95.314791 -3.525937 -3.896359 65.239153 2.275369 -5.983086 -0.000013 0.000019 -0.000030 -0.000002 0.000000 -0.000000 -0.000013 0.000018 -0.000030 0.000001 0.000001 -0.000000 0.000001 0.000002 -0.000099 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
-0.000000 -19.670601 7.945948 6.427008 -0.000001 -0.000001 18.267472 -0.306676 -1.295383 -15.176755 -0.055761 0.600307 -18.241900 19.312145 -0.005607 -0.106232 39.243702 -7.343457 0.000003 0.000018 -179.999991 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 0.000000 0.000000 -0.000000 -17.397641 -13.467812 21.622673 -12.173119 -53.942652 0.593892 -0.000023 -78.008567 -0.000012 -90.668876 12.760272 -22.189580 -0.000001 -0.000003 -0.000002 0.000003 0.000002 -0.000000 -0.000001 -0.000001 0.000002 -0.000001 0.000000 0.000001 10.653656 26.913309 -22.567375 13.980522 49.955737 -12.338072 0.000039 88.321395 -0.000124 -83.915636 -12.900645 18.945729 -0.000000 -0.000000 -0.000001 -0.000000 -0.000001 -0.000000 0.000002 0.000000 0.000000 -0.000000 -0.000001 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000000 0.000000 -13.977470 -1.384030 -0.143751 95.500873 -3.666780 -3.770031 65.211859 1.289493 -5.524522 0.000014 -0.000027 0.000050 -0.000001 -0.000000 0.000000 0.000013 -0.000028 0.000051 0.000001 0.000001 0.000000 0.000001 0.000003 0.000136 -13.746159 1.271528 0.184142 95.314791 -3.525937 -3.896358 65.240041 2.292975 -5.974295 -0.000010 0.000019 -0.000032 0.000001 0.000000 -0.000000 -0.000009 0.000018 -0.000031 0.000001 0.000001 0.000000 0.000002 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
-0.000000 -19.670601 7.945948 116.950460 -0.000022 -0.000000 18.267476 -0.306676 -1.295382 -15.176754 -0.055762 0.600307 -18.241900 19.312143 -0.005607 -0.106233 39.243712 -7.343459 0.000002 0.000022 -179.999991 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000001 -0.000001 -0.000000 -17.397638 -13.467812 21.622678 -12.173119 -53.942645 0.593893 -0.000015 -78.008567 -0.000012 -90.668883 12.760272 -22.189577 -0.000000 0.000002 -0.000001 -0.000001 -0.000000 -0.000000 0.000002 -0.000001 -0.000000 -0.000000 0.000002 -0.000001 10.653656 26.913309 -22.567384 13.980526 49.955730 -12.338071 0.000111 88.321395 -0.000066 -83.915636 -12.900644 18.945727 -0.000000 0.000003 -0.000000 0.000002 -0.000000 -0.000002 0.000001 -0.000000 0.000002 0.000002 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000003 -0.000001 0.000000 -92.820365 -5.802719 -5.873975 95.500873 -3.666784 -3.770033 65.211873 1.289492 -5.524520 0.000008 -0.000013 0.000023 0.000000 0.000000 0.000000 0.000007 -0.000013 0.000024 -0.000001 0.000001 0.000000 -0.000003 0.000002 0.000135 -92.575742 5.213340 5.719398 95.314784 -3.525937 -3.896360 65.240041 2.292974 -5.974298 -0.000007 0.000012 -0.000019 -0.000000 -0.000000 -0.000000 -0.000005 0.000010 -0.000022 0.000002 -0.000001 0.000000 -0.000001 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000

View File

@@ -0,0 +1,482 @@
HIERARCHY
ROOT mPelvis
{
OFFSET 0.000000 1.067000 -0.000000
CHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation
JOINT mTorso
{
OFFSET 0.000000 0.084000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mChest
{
OFFSET 0.000000 0.205000 -0.015000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mNeck
{
OFFSET 0.000000 0.251000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mHead
{
OFFSET 0.000000 0.076000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mSkull
{
OFFSET 0.000000 0.079000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeRight
{
OFFSET -0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeLeft
{
OFFSET 0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT HEAD
{
OFFSET 0.000000 0.060000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT NECK
{
OFFSET 0.000000 0.015000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarLeft
{
OFFSET 0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderLeft
{
OFFSET 0.079000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowLeft
{
OFFSET 0.248000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristLeft
{
OFFSET 0.205000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT L_HAND
{
OFFSET 0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_ARM
{
OFFSET 0.100000 -0.005000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_ARM
{
OFFSET 0.120000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_CLAVICLE
{
OFFSET 0.000000 0.020000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarRight
{
OFFSET -0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderRight
{
OFFSET -0.079000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowRight
{
OFFSET -0.248000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristRight
{
OFFSET -0.205000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT R_HAND
{
OFFSET -0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_ARM
{
OFFSET -0.100000 -0.005000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_ARM
{
OFFSET -0.120000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_CLAVICLE
{
OFFSET 0.000000 0.020000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT CHEST
{
OFFSET 0.000000 0.060000 -0.002000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LEFT_PEC
{
OFFSET 0.052000 0.052000 0.127000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT RIGHT_PEC
{
OFFSET -0.052000 0.052000 0.127000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT UPPER_BACK
{
OFFSET 0.000000 0.017253 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT BELLY
{
OFFSET 0.000000 0.060000 -0.002000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LOWER_BACK
{
OFFSET 0.000000 0.022848 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipRight
{
OFFSET -0.129000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeRight
{
OFFSET 0.049000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleRight
{
OFFSET -0.000000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootRight
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeRight
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_LEG
{
OFFSET 0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipLeft
{
OFFSET 0.127000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeLeft
{
OFFSET -0.046000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleLeft
{
OFFSET 0.001000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootLeft
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeLeft
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_LEG
{
OFFSET -0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT PELVIS
{
OFFSET -0.000000 -0.020000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT BUTT
{
OFFSET -0.000000 -0.100000 -0.060000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
MOTION
Frames: 112
Frame Time: 0.022222
0.000000 1.067000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000137 -0.000000 -0.000001 0.000000 -0.000002 0.000017 -0.000034 0.000000 -0.000000 -0.000000 -0.000003 0.000017 -0.000032 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 0.000000 0.000000 0.000002 -0.000102 -0.000000 0.000002 -0.000000 0.000012 -0.000012 0.000028 -0.000000 0.000000 0.000000 0.000010 -0.000012 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000102 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000137 -0.000000 -0.000001 0.000000 -0.000002 0.000017 -0.000034 0.000000 -0.000000 -0.000000 -0.000003 0.000017 -0.000032 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 0.000000 0.000000 0.000002 -0.000102 -0.000000 0.000002 -0.000000 0.000012 -0.000012 0.000028 -0.000000 0.000000 0.000000 0.000010 -0.000012 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000102 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.000080 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000003 0.000004 -78.829932 -0.000000 -5.381533 0.000000 2.084715 -0.191204 -10.479614 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 0.000006 78.829932 -0.000000 5.381532 -0.000000 2.084716 0.191204 10.479615 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000137 -0.000000 -0.000001 0.000000 -0.000002 0.000017 -0.000034 0.000000 -0.000000 -0.000000 -0.000003 0.000017 -0.000032 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 0.000000 0.000000 0.000002 -0.000102 -0.000000 0.000002 -0.000000 0.000012 -0.000012 0.000028 -0.000000 0.000000 0.000000 0.000010 -0.000012 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000102 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.000316 -0.000718 0.000000 0.000000 0.005924 -0.000032 -0.000432 -0.013010 0.000021 0.000518 -0.008624 0.000000 -0.000000 0.000244 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.052602 0.283906 -0.608567 -80.324964 -0.000000 -10.113599 -0.000000 1.478424 -0.242106 -10.449810 0.000000 -0.000002 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.035349 0.017752 0.004584 -0.004154 0.052280 78.780986 0.000000 9.739604 0.000000 2.527328 0.296271 12.974199 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000008 0.000007 -0.004059 -0.001538 -0.000004 0.000231 0.000002 0.000001 -0.000003 -0.000009 0.000016 -0.000029 0.000000 -0.000000 -0.000000 -0.000008 0.000016 -0.000029 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.007394 0.078920 0.000156 -0.002946 -0.000015 0.000081 0.032866 -0.000052 0.005120 0.000007 -0.000014 0.000024 0.000000 0.000000 -0.000000 0.000007 -0.000014 0.000024 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.000702 -0.002833 0.000000 0.000000 0.022784 -0.000123 -0.001663 -0.050036 0.000079 0.001992 -0.033169 0.000000 -0.000000 0.001950 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.202568 1.091277 -2.395169 -81.359936 -0.000000 -14.309028 -0.000001 -0.298112 -0.388571 -10.227155 0.000001 0.000002 -0.000000 0.000000 0.000001 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.139432 0.070017 0.018145 -0.016131 0.206272 78.636842 0.000000 13.914490 -0.000001 2.861470 0.422135 15.401942 -0.000000 -0.000004 -0.000000 0.000000 -0.000002 0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000032 0.000029 -0.016007 -0.006063 -0.000021 0.000511 0.000003 -0.000000 0.000000 -0.000007 0.000017 -0.000029 -0.000000 -0.000000 0.000000 -0.000007 0.000017 -0.000029 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000136 0.028437 0.303559 0.000543 -0.011574 -0.000066 0.000613 0.126411 -0.000192 0.019692 0.000010 -0.000012 0.000026 -0.000000 -0.000000 -0.000000 0.000010 -0.000013 0.000024 -0.000001 -0.000000 0.000000 0.000000 0.000002 -0.000102 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.001229 -0.006284 0.000000 0.000000 0.049212 -0.000265 -0.003591 -0.108079 0.000168 0.004303 -0.071644 -0.000000 -0.000000 0.006580 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.438137 2.377584 -5.283631 -81.914220 0.000000 -17.999218 -0.000001 -3.141461 -0.636896 -9.835040 -0.000000 0.000001 -0.000000 0.000001 0.000001 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.309343 0.155301 0.040484 -0.034864 0.457898 78.401447 0.000000 17.907293 -0.000001 3.089319 0.561206 17.761345 0.000001 0.000003 0.000000 -0.000001 0.000003 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000072 0.000065 -0.035502 -0.013448 -0.000049 0.000968 -0.000001 -0.000002 0.000002 -0.000000 0.000016 -0.000029 -0.000000 -0.000000 0.000000 -0.000001 0.000016 -0.000028 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000136 0.061429 0.655752 0.000984 -0.025571 -0.000150 0.001476 0.273059 -0.000363 0.042539 0.000009 -0.000016 0.000028 -0.000000 -0.000000 -0.000000 0.000010 -0.000016 0.000027 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000102 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.001893 -0.011009 0.000000 0.000000 0.083844 -0.000453 -0.006118 -0.184133 0.000280 0.007331 -0.122059 0.000000 0.000000 0.015596 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.747549 4.127859 -9.169473 -81.945598 -0.000002 -21.219151 -0.000000 -6.945349 -0.999926 -9.301992 -0.000000 0.000001 0.000000 0.000001 -0.000002 0.000001 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.542216 0.272099 0.071503 -0.058883 0.803247 78.078597 0.000001 21.720681 -0.000001 3.213759 0.706481 20.051373 -0.000001 -0.000004 0.000001 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000126 0.000114 -0.062200 -0.023562 -0.000088 0.001594 -0.000000 -0.000001 0.000002 -0.000000 0.000014 -0.000023 0.000000 -0.000000 0.000000 -0.000003 0.000014 -0.000023 -0.000002 -0.000000 0.000000 -0.000000 0.000003 0.000136 0.104669 1.117339 0.001255 -0.044620 -0.000264 0.002652 0.465216 -0.000503 0.072488 0.000011 -0.000015 0.000032 0.000000 0.000000 0.000000 0.000009 -0.000014 0.000030 -0.000001 0.000000 0.000000 0.000000 0.000003 -0.000102 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.002687 -0.016948 0.000000 0.000000 0.125308 -0.000679 -0.009144 -0.275199 0.000411 0.010956 -0.182427 0.000000 0.000000 0.030461 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -1.119040 6.357499 -13.911636 -81.393479 -0.000001 -24.005335 0.000000 -11.591583 -1.491953 -8.662840 0.000000 -0.000006 0.000000 0.000001 0.000001 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.835226 0.418891 0.111195 -0.086376 1.238532 77.672003 0.000000 25.358549 -0.000001 3.238284 0.851602 22.271398 -0.000001 -0.000001 0.000001 -0.000000 0.000001 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000194 0.000176 -0.095758 -0.036275 -0.000137 0.002380 0.000000 0.000001 -0.000001 -0.000007 0.000016 -0.000029 -0.000000 -0.000000 0.000000 -0.000009 0.000016 -0.000027 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.156462 1.670151 0.001121 -0.068407 -0.000408 0.004120 0.695320 -0.000531 0.108334 0.000013 -0.000017 0.000034 0.000000 0.000000 -0.000000 0.000013 -0.000017 0.000033 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.003603 -0.024041 0.000000 0.000000 0.172244 -0.000939 -0.012568 -0.378273 0.000550 0.015061 -0.250753 0.000001 0.000000 0.052637 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 -1.540845 9.112635 -19.324934 -80.180158 -0.000001 -26.394366 -0.000000 -16.942767 -2.123422 -7.958770 0.000001 0.000002 0.000001 0.000001 -0.000002 -0.000001 -0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 -1.185572 0.594143 0.159621 -0.115240 1.760046 77.185249 0.000000 28.825755 -0.000001 3.166882 0.990874 24.421078 0.000002 0.000000 0.000000 -0.000001 0.000002 -0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.000275 0.000250 -0.135834 -0.051456 -0.000196 0.003319 0.000003 -0.000001 0.000002 -0.000002 0.000014 -0.000025 -0.000000 0.000000 -0.000000 -0.000004 0.000013 -0.000023 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 0.215120 2.295991 0.000366 -0.096616 -0.000579 0.005861 0.955776 -0.000391 0.148914 0.000013 -0.000020 0.000036 -0.000000 0.000000 -0.000000 0.000013 -0.000020 0.000035 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000102 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.004635 -0.032227 0.000000 0.000000 0.223278 -0.001224 -0.016292 -0.490353 0.000694 0.019524 -0.325050 -0.000000 0.000000 0.083586 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -2.001197 12.468550 -25.177194 -78.211731 0.000000 -28.422091 0.000001 -22.838621 -2.895662 -7.235482 0.000000 -0.000003 0.000001 0.000003 -0.000001 -0.000001 0.000001 0.000001 0.000001 0.000000 -0.000000 -0.000000 -1.590479 0.796304 0.216897 -0.143131 2.364114 76.621834 0.000002 32.127875 -0.000002 3.003950 1.119276 26.500292 -0.000001 -0.000004 -0.000000 -0.000000 0.000002 -0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000368 0.000335 -0.182085 -0.068976 -0.000264 0.004402 0.000001 0.000000 0.000001 -0.000004 0.000014 -0.000026 0.000000 0.000000 -0.000000 -0.000006 0.000014 -0.000026 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.278958 2.976635 -0.001184 -0.128934 -0.000775 0.007855 1.238997 -0.000033 0.193043 0.000015 -0.000022 0.000043 0.000000 0.000000 -0.000000 0.000015 -0.000023 0.000042 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.005776 -0.041445 0.000000 0.000000 0.277047 -0.001528 -0.020214 -0.608438 0.000836 0.024226 -0.403328 0.000000 0.000000 0.124769 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 -2.488331 16.523221 -31.194444 -75.382681 0.000002 -30.123170 0.000000 -29.097224 -3.797041 -6.538988 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 0.000001 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -2.047184 1.023809 0.283180 -0.167503 3.047044 75.985144 0.000001 35.270889 -0.000005 2.754200 1.232424 28.509099 -0.000000 -0.000005 -0.000000 0.000000 -0.000004 0.000001 -0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000473 0.000431 -0.234168 -0.088705 -0.000342 0.005624 -0.000001 0.000000 -0.000001 -0.000003 0.000014 -0.000028 -0.000000 -0.000000 0.000000 -0.000004 0.000014 -0.000026 -0.000002 -0.000000 0.000000 -0.000000 0.000003 0.000138 0.346292 3.693828 -0.003640 -0.165044 -0.000996 0.010084 1.537404 0.000581 0.239533 0.000013 -0.000020 0.000039 -0.000000 -0.000000 -0.000000 0.000011 -0.000021 0.000040 -0.000001 -0.000000 -0.000000 0.000000 0.000003 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.007021 -0.051634 0.000000 0.000000 0.332184 -0.001844 -0.024236 -0.729525 0.000973 0.029048 -0.483595 -0.000000 0.000000 0.177650 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -2.990485 21.380736 -37.076261 -71.589822 -0.000008 -31.530892 -0.000001 -35.521454 -4.801722 -5.909852 0.000000 -0.000001 0.000000 0.000001 -0.000001 -0.000000 -0.000002 -0.000000 -0.000001 0.000000 0.000000 0.000000 -2.552933 1.275072 0.358649 -0.185665 3.805084 75.278486 -0.000001 38.261152 -0.000002 2.422585 1.326652 30.447665 -0.000001 -0.000003 0.000001 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000590 0.000537 -0.291740 -0.110512 -0.000428 0.006971 0.000001 -0.000001 0.000002 -0.000002 0.000015 -0.000024 -0.000000 -0.000000 0.000000 -0.000003 0.000015 -0.000024 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.415437 4.429293 -0.007039 -0.204634 -0.001241 0.012525 1.843398 0.001463 0.287202 0.000020 -0.000024 0.000042 -0.000000 -0.000000 -0.000000 0.000020 -0.000024 0.000045 -0.000002 -0.000002 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.008361 -0.062734 0.000000 0.000000 0.387320 -0.002164 -0.028258 -0.850611 0.001098 0.033871 -0.563863 0.000000 0.000000 0.243691 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -3.495903 27.116416 -42.521110 -66.764457 -0.000006 -32.677271 0.000001 -41.909207 -5.871762 -5.377324 0.000001 -0.000001 0.000001 0.000001 0.000000 -0.000000 -0.000002 -0.000001 0.000001 0.000000 0.000000 -0.000000 -3.104975 1.548489 0.443501 -0.194808 4.634384 74.505049 0.000002 41.105141 -0.000003 2.014227 1.398858 32.316231 -0.000001 -0.000002 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000716 0.000652 -0.354459 -0.134270 -0.000522 0.008440 -0.000001 -0.000001 0.000002 -0.000006 0.000014 -0.000026 0.000000 0.000000 0.000000 -0.000007 0.000015 -0.000024 -0.000002 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.484698 5.164745 -0.011334 -0.247387 -0.001505 0.015163 2.149390 0.002600 0.334867 0.000022 -0.000028 0.000049 -0.000000 0.000000 -0.000000 0.000021 -0.000027 0.000048 -0.000001 -0.000000 -0.000000 0.000000 0.000003 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.009791 -0.074684 0.000000 0.000000 0.441088 -0.002480 -0.032179 -0.968694 0.001210 0.038574 -0.642140 0.000000 0.000000 0.324354 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -3.992840 33.717359 -47.260428 -60.929754 0.000002 -33.593135 0.000000 -48.064946 -6.962088 -4.955319 -0.000000 0.000001 0.000002 -0.000001 0.000000 -0.000000 0.000002 0.000001 0.000001 0.000000 0.000000 0.000000 -3.700555 1.842434 0.537927 -0.192053 5.530946 73.667955 0.000002 43.809311 -0.000001 1.534362 1.446581 34.115084 -0.000003 -0.000003 0.000000 0.000001 -0.000002 0.000000 0.000001 0.000000 0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000852 0.000777 -0.421980 -0.159846 -0.000625 0.010022 0.000001 0.000001 -0.000001 0.000000 0.000013 -0.000022 0.000000 0.000000 -0.000000 -0.000002 0.000014 -0.000022 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000137 0.552374 5.881906 -0.016387 -0.292988 -0.001790 0.017976 2.447790 0.003953 0.381343 0.000023 -0.000028 0.000054 -0.000000 -0.000000 -0.000000 0.000026 -0.000029 0.000052 -0.000001 -0.000001 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.011304 -0.087423 0.000000 0.000000 0.492124 -0.002782 -0.035901 -1.080774 0.001308 0.043038 -0.716437 0.000000 0.000000 0.421101 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -4.469562 41.006618 -51.098527 -54.274517 -0.000003 -34.308382 0.000001 -53.809576 -8.026709 -4.641385 -0.000001 -0.000001 0.000001 0.000001 0.000001 0.000000 0.000001 -0.000001 0.000001 -0.000000 -0.000000 -0.000000 -4.336911 2.155264 0.642107 -0.174490 6.490612 72.770222 0.000002 46.380092 -0.000004 0.988288 1.467925 35.844570 0.000002 0.000001 -0.000000 0.000002 -0.000001 0.000000 0.000001 0.000000 0.000001 -0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000997 0.000911 -0.493962 -0.187112 -0.000734 0.011707 0.000002 0.000000 0.000003 -0.000005 0.000011 -0.000023 0.000000 -0.000000 0.000000 -0.000008 0.000013 -0.000023 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 0.616745 6.562511 -0.021977 -0.341123 -0.002092 0.020947 2.731014 0.005463 0.425444 0.000023 -0.000029 0.000058 0.000000 -0.000000 0.000000 0.000024 -0.000029 0.000057 -0.000001 0.000001 0.000000 0.000000 0.000003 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.012894 -0.100891 0.000000 0.000000 0.539059 -0.003064 -0.039324 -1.183849 0.001391 0.047144 -0.784764 0.000001 0.000000 0.535395 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000001 -4.914358 48.592059 -53.950824 -47.203140 0.000001 -34.852246 0.000001 -58.986340 -9.024194 -4.418788 0.000001 0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000003 0.000001 0.000001 0.000000 0.000000 0.000000 -5.011262 2.485317 0.756197 -0.139209 7.509018 71.814781 0.000004 48.823749 -0.000004 0.381319 1.461540 37.505033 -0.000000 -0.000001 0.000004 -0.000002 0.000000 -0.000001 0.000002 0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.001150 0.001052 -0.570061 -0.215937 -0.000851 0.013490 0.000003 -0.000000 0.000002 -0.000003 0.000012 -0.000019 0.000000 -0.000000 0.000000 -0.000002 0.000011 -0.000017 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000137 0.676076 7.188336 -0.027805 -0.391477 -0.002414 0.024052 2.991465 0.007044 0.465991 0.000023 -0.000032 0.000064 0.000000 -0.000001 -0.000000 0.000024 -0.000033 0.000063 -0.000001 -0.000001 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.014553 -0.115026 0.000000 0.000000 0.580524 -0.003315 -0.042348 -1.274917 0.001457 0.050772 -0.845131 0.000000 0.000000 0.668697 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -5.315515 55.900631 -55.863895 -40.300292 0.000001 -35.253461 0.000000 -63.462061 -9.920800 -4.260615 -0.000001 -0.000000 0.000001 0.000002 -0.000001 -0.000000 0.000003 0.000001 0.000001 -0.000000 0.000000 0.000000 -5.720816 2.830914 0.880316 -0.083349 8.581574 70.804514 0.000002 51.146294 -0.000002 -0.281255 1.426583 39.096846 0.000000 0.000003 0.000002 -0.000000 0.000000 -0.000000 0.000001 -0.000001 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.001310 0.001200 -0.649935 -0.246192 -0.000974 0.015362 0.000000 -0.000000 -0.000001 -0.000002 0.000010 -0.000019 -0.000000 0.000000 -0.000000 -0.000004 0.000010 -0.000019 -0.000002 -0.000000 -0.000000 -0.000000 0.000003 0.000138 0.728612 7.741180 -0.033505 -0.443735 -0.002749 0.027276 3.221558 0.008594 0.501812 0.000029 -0.000033 0.000063 0.000000 -0.000001 0.000000 0.000026 -0.000034 0.000063 -0.000002 -0.000001 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.016275 -0.129769 0.000000 0.000000 0.615154 -0.003526 -0.044873 -1.350978 0.001509 0.053801 -0.895549 -0.000000 0.000000 0.822470 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -5.661339 62.310641 -56.999240 -34.198163 -0.000002 -35.540579 0.000001 -67.123691 -10.690951 -4.134499 -0.000000 -0.000001 0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000001 0.000001 -0.000000 0.000000 -0.000000 -6.462753 3.190360 1.014538 -0.004121 9.703464 69.742201 0.000001 53.353531 -0.000001 -0.994191 1.362679 40.620416 0.000001 -0.000002 -0.000001 0.000000 0.000003 -0.000000 -0.000000 -0.000001 0.000004 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.001477 0.001355 -0.733241 -0.277745 -0.001104 0.017312 0.000003 0.000000 0.000001 0.000001 0.000010 -0.000019 0.000000 0.000000 0.000000 -0.000000 0.000010 -0.000017 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000137 0.772585 8.202880 -0.038662 -0.497582 -0.003094 0.030595 3.413719 0.009999 0.531720 0.000032 -0.000035 0.000065 -0.000000 -0.000000 -0.000000 0.000031 -0.000036 0.000063 -0.000002 -0.000001 -0.000000 0.000000 0.000003 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.018053 -0.145058 0.000000 0.000000 0.641583 -0.003688 -0.046800 -1.409028 0.001545 0.056114 -0.934027 0.000000 0.000000 0.998176 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 -5.940133 67.297335 -57.580646 -29.430414 -0.000001 -35.742073 -0.000001 -69.871326 -11.315307 -4.006797 -0.000000 -0.000000 -0.000003 0.000002 -0.000001 -0.000001 0.000001 -0.000003 -0.000001 0.000000 -0.000000 0.000000 -7.234231 3.561950 1.158881 0.101145 10.869630 68.630588 0.000003 55.450983 -0.000010 -1.752325 1.269873 42.076158 -0.000001 0.000005 0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000001 -0.000001 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.001650 0.001516 -0.819634 -0.310469 -0.001240 0.019336 -0.000000 -0.000000 0.000000 -0.000004 0.000011 -0.000019 0.000000 0.000000 0.000000 -0.000004 0.000011 -0.000017 -0.000002 -0.000000 -0.000000 -0.000000 0.000003 0.000138 0.806213 8.555298 -0.042845 -0.552703 -0.003455 0.033995 3.560360 0.011134 0.554540 0.000030 -0.000035 0.000069 0.000000 -0.000001 -0.000000 0.000030 -0.000035 0.000068 -0.000002 -0.000004 -0.000000 0.000000 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.019881 -0.160833 0.000000 0.000000 0.658443 -0.003792 -0.048029 -1.446067 0.001567 0.057589 -0.958575 0.000001 0.000000 1.197274 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000001 -6.140197 70.490073 -57.828548 -26.374673 -0.000002 -35.886514 0.000001 -71.609076 -11.777328 -3.845803 -0.000001 0.000003 0.000002 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -8.032366 3.943972 1.313301 0.234956 12.074767 67.472454 -0.000001 57.443851 -0.000008 -2.550582 1.148632 43.464534 0.000002 -0.000000 -0.000000 0.000004 0.000002 -0.000001 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.001828 0.001682 -0.908773 -0.344232 -0.001381 0.021423 0.000003 -0.000001 0.000000 -0.000001 0.000009 -0.000018 0.000000 0.000000 0.000000 -0.000002 0.000008 -0.000018 -0.000001 0.000000 -0.000000 -0.000000 0.000002 0.000137 0.827712 8.780294 -0.045627 -0.608784 -0.003826 0.037452 3.653901 0.011893 0.569097 0.000027 -0.000038 0.000068 0.000000 0.000000 -0.000000 0.000026 -0.000037 0.000067 -0.000002 -0.000002 -0.000000 -0.000000 0.000000 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.021753 -0.177032 0.000000 0.000000 0.664366 -0.003829 -0.048461 -1.459094 0.001575 0.058108 -0.967204 -0.000000 0.000000 1.421226 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000000 -6.249805 71.627169 -57.904404 -25.297574 -0.000003 -36.002665 0.000000 -72.234318 -12.058886 -3.624198 -0.000000 -0.000002 0.000001 -0.000000 -0.000001 0.000000 -0.000002 -0.000004 0.000001 0.000000 -0.000000 -0.000000 -8.854259 4.334715 1.477682 0.399628 13.313357 66.270470 0.000004 59.337016 -0.000007 -3.384018 0.999762 44.786100 -0.000002 0.000001 0.000002 0.000001 0.000002 0.000000 0.000001 -0.000002 0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.002010 0.001853 -1.000315 -0.378905 -0.001528 0.023567 0.000003 -0.000000 0.000002 -0.000003 0.000010 -0.000018 0.000000 -0.000000 -0.000000 -0.000005 0.000009 -0.000017 -0.000000 0.000001 0.000000 -0.000000 0.000003 0.000138 0.835300 8.859727 -0.046629 -0.665509 -0.004202 0.040948 3.686765 0.012163 0.574209 0.000028 -0.000038 0.000068 -0.000000 0.000000 -0.000000 0.000028 -0.000037 0.000067 -0.000002 -0.000001 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.023660 -0.193596 0.000000 0.000000 0.664366 -0.003829 -0.048461 -1.413824 0.001548 0.056305 -0.911376 0.000000 0.000000 1.720455 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.142217 0.014926 -6.307872 71.613304 -57.924273 -25.362944 -0.000001 -36.115964 -0.000002 -72.027698 -12.245589 -3.286686 -0.000001 0.000000 0.000002 -0.000001 -0.000001 0.000000 -0.000001 0.000000 -0.000001 0.000000 0.000000 -0.000000 -9.696970 4.732464 1.651827 0.597250 14.579640 65.027376 0.000011 61.135131 -0.000011 -4.247792 0.824398 46.041383 -0.000001 0.000002 -0.000002 0.000000 -0.000001 0.000000 0.000003 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 -0.002197 0.002028 -1.093914 -0.414357 -0.001679 0.025757 0.000000 -0.000001 0.000002 -0.000002 0.000006 -0.000013 -0.000000 0.000000 0.000000 -0.000003 0.000006 -0.000012 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.835380 8.860240 -0.033083 -0.722592 -0.004585 0.044467 3.686762 0.012164 0.574209 0.000031 -0.000037 0.000068 0.000000 -0.000000 -0.000000 0.000032 -0.000036 0.000066 -0.000002 -0.000002 -0.000000 0.000000 0.000003 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.025598 -0.210464 0.000000 0.000000 0.664366 -0.003829 -0.048461 -1.282081 0.001463 0.051057 -0.748931 0.000000 0.000000 2.138493 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.556406 0.058657 -6.361210 71.511971 -57.942851 -25.571552 0.000000 -36.232914 -0.000001 -71.363346 -12.434078 -2.796823 -0.000000 0.000001 -0.000001 -0.000001 0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -10.557510 5.135518 1.835459 0.829625 15.867687 63.745964 0.000002 62.842440 -0.000013 -5.137192 0.623962 47.231062 -0.000000 -0.000003 0.000002 0.000003 0.000000 -0.000001 0.000002 0.000004 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.002386 0.002207 -1.189232 -0.450458 -0.001834 0.027989 -0.000003 -0.000002 0.000002 0.000002 0.000007 -0.000011 0.000000 -0.000000 0.000000 0.000001 0.000007 -0.000011 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.835505 8.860619 0.006341 -0.779856 -0.004973 0.047995 3.686766 0.012163 0.574213 0.000025 -0.000034 0.000068 0.000000 -0.000001 0.000000 0.000025 -0.000036 0.000067 -0.000002 -0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.027559 -0.227574 0.000000 0.000000 0.664366 -0.003829 -0.048461 -1.070003 0.001299 0.042609 -0.487420 0.000000 0.000000 2.666502 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -1.224309 0.129593 -6.409615 71.328888 -57.959073 -25.914122 -0.000001 -36.353894 -0.000001 -70.264751 -12.616533 -2.159601 -0.000000 0.000002 0.000000 -0.000001 -0.000000 -0.000000 0.000001 -0.000002 0.000000 -0.000000 -0.000000 0.000001 -11.432874 5.542191 2.028210 1.098248 17.171440 62.429124 -0.000002 64.462957 -0.000009 -6.047659 0.400125 48.355888 0.000000 0.000003 0.000000 0.000003 0.000000 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.002578 0.002388 -1.285921 -0.487081 -0.001993 0.030252 0.000004 -0.000001 0.000002 0.000001 0.000007 -0.000011 -0.000000 -0.000000 0.000000 -0.000000 0.000006 -0.000012 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000137 0.835673 8.860880 0.069799 -0.837154 -0.005365 0.051527 3.686766 0.012167 0.574209 0.000032 -0.000036 0.000069 0.000000 0.000000 0.000000 0.000030 -0.000037 0.000068 -0.000002 -0.000001 -0.000000 0.000000 0.000003 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.029536 -0.244867 0.000000 0.000000 0.664366 -0.003829 -0.048461 -0.783720 0.001029 0.031207 -0.134369 -0.000000 -0.000000 3.295680 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -2.128070 0.226079 -6.452567 71.069921 -57.971599 -26.381264 -0.000003 -36.479303 -0.000001 -68.752834 -12.782418 -1.379662 -0.000001 0.000000 0.000003 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000001 -12.320002 5.950818 2.229622 1.404252 18.484683 61.079827 0.000011 66.000364 -0.000014 -6.974749 0.154779 49.416685 0.000001 0.000003 -0.000002 -0.000000 0.000000 -0.000000 0.000002 0.000002 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.002772 0.002572 -1.383640 -0.524093 -0.002155 0.032541 -0.000001 -0.000001 0.000000 0.000001 0.000006 -0.000010 -0.000000 0.000000 0.000000 -0.000000 0.000006 -0.000008 -0.000002 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.835879 8.861023 0.155445 -0.894334 -0.005759 0.055050 3.686769 0.012165 0.574212 0.000031 -0.000036 0.000064 0.000000 -0.000002 0.000000 0.000032 -0.000036 0.000065 -0.000001 -0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.031524 -0.262280 0.000000 0.000000 0.664366 -0.003829 -0.048461 -0.429354 0.000617 0.017095 0.302705 -0.000000 -0.000000 4.017224 -0.000000 -0.000000 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -3.250022 0.346376 -6.489320 70.741062 -57.978935 -26.963425 -0.000001 -36.609500 -0.000002 -66.847246 -12.918826 -0.462049 0.000000 -0.000004 0.000001 -0.000000 -0.000001 -0.000000 0.000000 -0.000004 -0.000001 -0.000000 0.000000 -0.000001 -13.215790 6.359761 2.439138 1.748368 19.801166 59.701222 0.000001 67.458056 -0.000017 -7.914134 -0.110004 50.414384 0.000001 0.000002 -0.000003 0.000006 -0.000001 -0.000000 -0.000002 -0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.002967 0.002757 -1.482045 -0.561364 -0.002320 0.034845 0.000002 -0.000001 0.000002 -0.000003 0.000005 -0.000009 -0.000000 0.000000 -0.000000 -0.000004 0.000005 -0.000009 -0.000000 0.000000 0.000000 -0.000000 0.000003 0.000137 0.836121 8.861060 0.261433 -0.951252 -0.006154 0.058556 3.686765 0.012168 0.574206 0.000028 -0.000036 0.000069 0.000000 0.000000 -0.000000 0.000027 -0.000035 0.000068 -0.000002 -0.000001 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.033514 -0.279755 0.000000 0.000000 0.664365 -0.003829 -0.048461 -0.013029 0.000020 0.000519 0.816287 -0.000000 -0.000000 4.822313 -0.000001 -0.000000 -179.999991 -0.000044 0.000003 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -4.572483 0.488640 -6.518979 70.348490 -57.979495 -27.650947 -0.000002 -36.744881 -0.000001 -64.567513 -13.010894 0.587063 -0.000001 0.000000 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 -0.000003 0.000000 -0.000000 0.000000 -0.000000 -14.117122 6.767424 2.656112 2.130891 21.114611 58.296675 0.000020 68.839182 -0.000016 -8.861654 -0.391994 51.350011 -0.000000 0.000001 0.000003 0.000004 -0.000002 -0.000004 0.000001 -0.000002 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.003162 0.002944 -1.580794 -0.598766 -0.002487 0.037156 -0.000000 0.000000 0.000001 0.000003 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000002 0.000001 0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000003 0.000136 0.836395 8.861000 0.385915 -1.007755 -0.006550 0.062038 3.686763 0.012162 0.574212 0.000024 -0.000031 0.000064 0.000000 0.000000 -0.000000 0.000026 -0.000033 0.000061 -0.000002 -0.000003 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.035502 -0.297230 0.000000 0.000000 0.664366 -0.003829 -0.048461 0.459122 -0.000801 -0.018274 1.398848 -0.000000 -0.000000 5.702079 -0.000001 -0.000000 -179.999991 -0.000044 0.000003 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -6.077570 0.650899 -6.540558 69.898544 -57.971586 -28.433949 0.000001 -36.885839 -0.000001 -61.934441 -13.042296 1.759552 -0.000000 -0.000003 -0.000001 -0.000000 0.000000 -0.000000 0.000001 0.000001 -0.000000 -0.000000 0.000000 -0.000001 -15.020824 7.172246 2.879794 2.551628 22.418805 56.869825 0.000017 70.146630 -0.000009 -9.813235 -0.688845 52.224736 0.000001 0.000004 -0.000000 -0.000000 0.000000 0.000000 0.000002 -0.000003 0.000003 0.000001 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.003357 0.003131 -1.679541 -0.636167 -0.002655 0.039467 0.000000 -0.000002 0.000002 0.000005 0.000003 -0.000004 0.000000 0.000000 -0.000000 0.000005 0.000004 -0.000004 -0.000002 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.836699 8.860846 0.527044 -1.063698 -0.006947 0.065484 3.686768 0.012164 0.574207 0.000027 -0.000034 0.000062 0.000001 0.000001 0.000000 0.000029 -0.000034 0.000061 -0.000002 -0.000003 -0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 0.037479 -0.314644 0.000000 0.000000 0.664366 -0.003829 -0.048461 0.980960 -0.001890 -0.039036 2.042838 0.000000 -0.000000 6.647603 -0.000001 -0.000000 -179.999991 -0.000044 0.000003 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -7.747052 0.831032 -6.553089 69.397755 -57.953561 -29.302318 -0.000000 -37.032760 -0.000001 -58.971170 -12.995909 3.044659 -0.000000 0.000001 0.000003 0.000001 0.000001 -0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000000 0.000000 -15.923684 7.572720 3.109344 3.009859 23.707634 55.424554 0.000009 71.383024 -0.000010 -10.764923 -0.998107 53.039854 0.000001 -0.000002 -0.000002 -0.000004 -0.000000 -0.000002 0.000005 0.000002 0.000003 0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.003550 0.003317 -1.777948 -0.673438 -0.002824 0.041771 0.000005 -0.000002 0.000004 -0.000000 0.000004 -0.000007 0.000000 -0.000000 0.000000 -0.000003 0.000003 -0.000006 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.837029 8.860615 0.682970 -1.118932 -0.007339 0.068886 3.686763 0.012165 0.574210 0.000027 -0.000033 0.000062 -0.000000 0.000001 0.000000 0.000027 -0.000033 0.000061 -0.000001 -0.000000 -0.000000 0.000000 0.000004 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.039440 -0.331936 0.000000 0.000000 0.664366 -0.003829 -0.048461 1.546321 -0.003284 -0.061517 2.740680 -0.000000 -0.000000 7.649884 -0.000001 -0.000001 -179.999991 -0.000044 0.000003 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -9.562214 1.026768 -6.555662 68.852938 -57.923843 -30.245816 0.000004 -37.186022 -0.000001 -55.704195 -12.854653 4.428378 -0.000002 -0.000006 0.000001 0.000002 0.000000 -0.000000 0.000003 -0.000002 0.000000 0.000001 -0.000000 0.000000 -16.822479 7.967396 3.343829 3.504308 24.975113 53.965130 0.000028 72.550761 -0.000028 -11.712852 -1.317287 53.796745 0.000000 -0.000002 0.000000 -0.000003 -0.000002 0.000000 0.000003 0.000003 -0.000003 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.003743 0.003503 -1.875667 -0.710450 -0.002994 0.044058 -0.000000 -0.000001 0.000002 -0.000001 0.000002 -0.000001 0.000000 -0.000000 0.000000 -0.000001 0.000002 0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000002 0.000137 0.837382 8.860303 0.851843 -1.173306 -0.007732 0.072235 3.686770 0.012164 0.574211 0.000028 -0.000032 0.000060 0.000001 0.000002 -0.000000 0.000026 -0.000032 0.000060 -0.000002 -0.000002 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.041378 -0.349046 0.000000 0.000000 0.664366 -0.003829 -0.048461 2.149037 -0.005013 -0.085467 3.484763 0.000000 -0.000000 8.699859 -0.000001 -0.000001 -179.999991 -0.000044 0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -11.503818 1.235688 -6.547515 68.270992 -57.880949 -31.253928 -0.000003 -37.346054 -0.000001 -52.164139 -12.602466 5.893106 -0.000001 -0.000001 0.000000 0.000002 0.000000 0.000000 0.000001 -0.000001 0.000000 -0.000001 0.000000 0.000000 -17.713932 8.354871 3.582219 4.033112 26.215530 52.496192 0.000009 73.652020 -0.000014 -12.653268 -1.643821 54.496925 0.000001 -0.000001 -0.000000 -0.000002 0.000001 0.000000 0.000003 -0.000000 0.000001 0.000001 -0.000001 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.003932 0.003686 -1.972356 -0.747072 -0.003163 0.046320 -0.000002 -0.000000 0.000000 0.000004 0.000002 0.000002 -0.000000 -0.000000 0.000000 0.000001 0.000001 0.000001 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.837755 8.859929 1.031813 -1.226674 -0.008119 0.075521 3.686767 0.012164 0.574211 0.000020 -0.000029 0.000052 0.000000 0.000002 -0.000000 0.000020 -0.000028 0.000052 -0.000001 -0.000002 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.043285 -0.365914 0.000000 0.000000 0.664367 -0.003829 -0.048461 2.782909 -0.007103 -0.110635 4.267443 -0.000000 -0.000000 9.788394 -0.000001 -0.000001 -179.999991 -0.000044 0.000003 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -13.552004 1.455236 -6.528098 67.659089 -57.823548 -32.316033 0.000001 -37.513209 -0.000002 -48.386126 -12.225502 7.417673 -0.000001 0.000002 -0.000001 0.000002 -0.000001 -0.000000 0.000002 -0.000002 -0.000000 0.000001 0.000000 -0.000000 -18.594753 8.733818 3.823408 4.593791 27.423425 51.022842 0.000011 74.688788 -0.000009 -13.582483 -1.975154 55.142071 0.000002 -0.000001 -0.000000 -0.000002 0.000000 0.000001 0.000001 0.000002 0.000002 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.004119 0.003868 -2.067673 -0.783174 -0.003331 0.048552 0.000002 -0.000002 0.000004 -0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000002 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.838146 8.859497 1.221029 -1.278887 -0.008499 0.078735 3.686766 0.012166 0.574210 0.000029 -0.000028 0.000051 -0.000000 0.000000 0.000000 0.000024 -0.000027 0.000049 -0.000002 -0.000003 -0.000000 0.000000 0.000004 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.045157 -0.382478 0.000000 0.000000 0.664366 -0.003829 -0.048461 3.441733 -0.009570 -0.136766 5.081046 -0.000001 -0.000000 10.906268 -0.000001 -0.000001 -179.999991 -0.000044 0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -15.686371 1.682758 -6.497118 67.024489 -57.750527 -33.421345 0.000002 -37.687901 -0.000001 -44.409603 -11.713331 8.977676 0.000002 -0.000006 0.000003 0.000003 -0.000001 -0.000000 0.000002 -0.000000 0.000000 0.000000 0.000000 -0.000000 -19.461608 9.102976 4.066199 5.183232 28.593665 49.550560 0.000003 75.662841 -0.000017 -14.496865 -2.308712 55.733893 -0.000002 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.004302 0.004047 -2.161273 -0.818626 -0.003498 0.050743 0.000001 -0.000001 0.000002 0.000005 0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000004 0.000002 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000138 0.838551 8.859017 1.417639 -1.329795 -0.008873 0.081870 3.686765 0.012162 0.574213 0.000023 -0.000028 0.000049 0.000000 0.000001 -0.000000 0.000024 -0.000028 0.000048 -0.000002 -0.000002 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.046985 -0.398678 0.000000 0.000000 0.664366 -0.003829 -0.048461 4.119276 -0.012420 -0.163609 5.917872 -0.000001 -0.000000 12.044226 -0.000002 -0.000001 -179.999991 -0.000044 0.000003 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -17.885969 1.915535 -6.454604 66.374508 -57.660962 -34.559029 0.000001 -37.870541 -0.000001 -40.277919 -11.060029 10.546387 -0.000000 0.000003 -0.000001 0.000001 0.000001 -0.000001 0.000003 -0.000003 0.000001 0.000000 -0.000000 -0.000000 -20.311178 9.461142 4.309330 5.797669 29.721500 48.085389 0.000002 76.575805 -0.000026 -15.392856 -2.641978 56.274263 -0.000001 0.000002 0.000000 -0.000000 -0.000002 -0.000003 0.000003 -0.000002 -0.000002 0.000000 0.000001 0.000001 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 -0.004481 0.004222 -2.252814 -0.853298 -0.003662 0.052884 -0.000001 -0.000002 0.000002 0.000006 0.000001 0.000001 -0.000000 -0.000000 0.000000 0.000004 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.838966 8.858492 1.619792 -1.379253 -0.009241 0.084913 3.686767 0.012163 0.574214 0.000021 -0.000028 0.000051 0.000000 -0.000000 -0.000000 0.000020 -0.000027 0.000050 -0.000001 -0.000002 -0.000000 0.000000 0.000001 -0.000102 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.048763 -0.414452 0.000000 0.000000 0.664366 -0.003829 -0.048461 4.809308 -0.015650 -0.190910 6.770185 -0.000001 -0.000001 13.192956 -0.000002 -0.000001 -179.999991 -0.000044 0.000003 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000001 0.000000 0.000000 -20.129430 2.150832 -6.400933 65.716604 -57.554200 -35.718215 0.000004 -38.061502 -0.000002 -36.037086 -10.265110 12.095984 0.000002 0.000002 -0.000000 0.000002 -0.000002 -0.000001 0.000002 0.000000 -0.000000 0.000000 -0.000000 0.000000 -21.140093 9.807206 4.551465 6.432706 30.802569 46.633793 0.000014 77.429101 -0.000016 -16.266930 -2.972452 56.765139 0.000001 -0.000000 -0.000000 -0.000001 -0.000001 -0.000003 0.000002 0.000000 0.000001 -0.000001 0.000001 0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.004655 0.004392 -2.341954 -0.887062 -0.003823 0.054970 -0.000000 -0.000003 0.000005 0.000003 0.000001 -0.000002 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000001 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000137 0.839389 8.857937 1.825637 -1.427108 -0.009597 0.087859 3.686765 0.012162 0.574212 0.000021 -0.000027 0.000046 0.000000 0.000001 -0.000000 0.000022 -0.000028 0.000046 -0.000002 -0.000003 -0.000000 0.000000 0.000004 -0.000102 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.050485 -0.429741 0.000000 0.000000 0.664366 -0.003829 -0.048461 5.505581 -0.019242 -0.218417 7.630247 -0.000001 -0.000001 14.343112 -0.000002 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -22.395089 2.385960 -6.336851 65.058071 -57.429822 -36.888059 0.000001 -38.261183 -0.000002 -31.734633 -9.333963 13.599042 0.000000 -0.000003 0.000000 0.000002 0.000003 -0.000001 0.000003 -0.000001 -0.000000 0.000001 -0.000000 0.000000 -21.944988 10.140102 4.791206 7.083322 31.832985 45.202807 0.000015 78.224080 -0.000013 -17.115593 -3.297702 57.208589 -0.000001 0.000000 -0.000001 -0.000002 -0.000002 -0.000002 -0.000000 0.000002 0.000002 -0.000003 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.004823 0.004558 -2.428348 -0.919784 -0.003981 0.056991 0.000003 0.000001 -0.000001 0.000003 -0.000001 0.000004 0.000000 0.000000 -0.000000 0.000002 -0.000001 0.000004 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 0.839815 8.857353 2.033320 -1.473212 -0.009946 0.090697 3.686764 0.012162 0.574211 0.000018 -0.000027 0.000046 0.000000 -0.000001 -0.000000 0.000019 -0.000026 0.000045 -0.000002 -0.000003 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.052144 -0.444484 0.000000 0.000000 0.664366 -0.003829 -0.048461 6.201847 -0.023168 -0.245878 8.490306 -0.000000 -0.000001 15.485350 -0.000002 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -24.661081 2.618325 -6.263476 64.406116 -57.287713 -38.057879 -0.000000 -38.470026 -0.000002 -27.417867 -8.277919 15.030130 0.000000 0.000002 0.000003 0.000002 0.000001 -0.000000 0.000003 -0.000002 -0.000000 0.000001 0.000000 -0.000000 -22.722479 10.458850 5.027103 7.743895 32.809285 43.799882 -0.000002 78.961877 -0.000014 -17.935370 -3.615363 57.606744 -0.000001 0.000003 -0.000001 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000002 -0.000002 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.004985 0.004718 -2.511652 -0.951338 -0.004134 0.058941 0.000001 -0.000000 0.000000 0.000006 -0.000001 0.000003 -0.000000 0.000000 0.000000 0.000006 -0.000002 0.000002 -0.000001 -0.000000 -0.000000 -0.000000 0.000002 0.000137 0.840243 8.856748 2.240992 -1.517422 -0.010280 0.093417 3.686767 0.012163 0.574211 0.000020 -0.000024 0.000046 -0.000000 0.000000 -0.000000 0.000021 -0.000024 0.000048 -0.000001 -0.000002 -0.000001 0.000000 0.000003 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.053734 -0.458619 0.000000 0.000000 0.664366 -0.003829 -0.048461 6.891850 -0.027386 -0.273043 9.342605 -0.000001 -0.000001 16.610325 -0.000002 -0.000001 -179.999991 -0.000044 0.000003 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 0.000000 -26.905582 2.845490 -6.182301 63.767889 -57.127982 -39.217133 -0.000001 -38.688404 -0.000002 -23.132519 -7.113712 16.367276 -0.000001 0.000002 0.000001 0.000002 0.000002 0.000000 -0.000001 -0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -23.469191 10.762533 5.257664 8.408249 33.728475 42.432977 0.000017 79.643564 -0.000010 -18.722788 -3.923162 57.961812 -0.000001 0.000003 0.000001 -0.000003 0.000000 -0.000005 -0.000000 -0.000002 0.000003 -0.000001 -0.000002 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.005140 0.004871 -2.591526 -0.981593 -0.004281 0.060810 0.000001 -0.000000 0.000000 0.000003 -0.000003 0.000005 -0.000000 -0.000000 0.000000 0.000003 -0.000002 0.000006 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000137 0.840668 8.856139 2.446801 -1.559582 -0.010602 0.096012 3.686770 0.012160 0.574212 0.000017 -0.000022 0.000042 0.000000 0.000001 -0.000000 0.000017 -0.000022 0.000042 -0.000001 -0.000002 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.055247 -0.472087 0.000000 0.000000 0.664366 -0.003829 -0.048461 7.569352 -0.031848 -0.299664 10.179413 -0.000001 -0.000001 17.708703 -0.000002 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -29.106909 3.065219 -6.095133 63.150167 -56.951019 -40.355524 0.000001 -38.916727 -0.000003 -18.921460 -5.862560 17.593118 -0.000007 -0.000001 0.000000 0.000002 -0.000001 -0.000002 0.000002 -0.000001 -0.000001 0.000002 -0.000000 0.000000 -24.181735 11.050284 5.481356 9.069714 34.587996 41.110410 0.000038 80.270091 -0.000041 -19.474389 -4.218897 58.276076 0.000001 0.000000 -0.000000 -0.000001 0.000003 0.000001 0.000000 -0.000002 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.005288 0.005018 -2.667626 -1.010418 -0.004423 0.062591 0.000001 -0.000000 -0.000002 0.000008 -0.000003 0.000007 -0.000000 -0.000000 0.000000 0.000007 -0.000002 0.000007 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000137 0.841085 8.855525 2.648900 -1.599548 -0.010907 0.098471 3.686765 0.012162 0.574213 0.000021 -0.000021 0.000041 -0.000000 0.000001 -0.000000 0.000019 -0.000021 0.000040 -0.000002 -0.000003 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.056677 -0.484826 0.000000 0.000000 0.664367 -0.003829 -0.048461 8.228116 -0.036486 -0.325497 10.992985 -0.000001 -0.000001 18.771195 -0.000002 -0.000001 -179.999991 -0.000044 0.000002 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -31.243635 3.275511 -6.004089 62.559560 -56.757438 -41.463077 0.000001 -39.155432 -0.000001 -14.823761 -4.548837 18.695572 -0.000001 -0.000003 0.000002 0.000002 -0.000002 -0.000002 0.000001 0.000001 0.000001 -0.000002 -0.000000 0.000000 -24.856723 11.321311 5.696622 9.721196 35.385728 39.840958 0.000013 80.842310 -0.000033 -20.186709 -4.500487 58.551865 0.000001 -0.000002 0.000001 -0.000000 -0.000002 0.000001 0.000001 -0.000002 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.005427 0.005157 -2.739606 -1.037683 -0.004557 0.064274 0.000003 -0.000001 0.000002 0.000009 -0.000004 0.000008 -0.000000 -0.000000 0.000000 0.000005 -0.000004 0.000009 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 0.841493 8.854918 2.845437 -1.637170 -0.011197 0.100787 3.686768 0.012163 0.574213 0.000018 -0.000020 0.000034 0.000000 -0.000001 0.000000 0.000018 -0.000019 0.000033 -0.000001 -0.000002 -0.000000 0.000000 0.000002 -0.000099 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.058017 -0.496776 0.000000 0.000000 0.664366 -0.003829 -0.048461 8.861920 -0.041230 -0.350299 11.775638 -0.000001 -0.000001 19.788588 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -33.294826 3.474629 -5.911533 62.002265 -56.548103 -42.530133 0.000002 -39.404936 -0.000002 -10.874247 -3.198651 19.668086 -0.000001 0.000003 -0.000002 0.000002 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -25.490788 11.574860 5.901881 10.355257 36.119949 38.633623 0.000031 81.361043 -0.000036 -20.856269 -4.765931 58.791529 -0.000001 0.000000 -0.000001 -0.000003 -0.000002 -0.000000 0.000002 -0.000002 0.000001 -0.000002 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.005558 0.005287 -2.807129 -1.063260 -0.004684 0.065853 -0.000000 -0.000001 0.000002 0.000007 -0.000005 0.000014 -0.000000 -0.000000 -0.000000 0.000006 -0.000005 0.000015 -0.000001 -0.000000 -0.000000 -0.000000 0.000002 0.000136 0.841887 8.854324 3.034564 -1.672301 -0.011469 0.102948 3.686770 0.012164 0.574212 0.000015 -0.000017 0.000031 0.000000 -0.000000 0.000000 0.000014 -0.000018 0.000032 -0.000001 -0.000001 0.000000 0.000000 0.000001 -0.000099 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.059262 -0.507876 0.000000 0.000000 0.664366 -0.003829 -0.048461 9.464554 -0.045994 -0.373832 12.519685 -0.000001 -0.000001 20.751691 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 -0.000000 -0.000002 0.000000 -0.000000 -35.240020 3.661103 -5.820023 61.484086 -56.324001 -43.547428 0.000002 -39.665661 -0.000002 -7.103435 -1.838469 20.509424 0.000001 -0.000003 0.000000 0.000001 -0.000001 -0.000001 0.000002 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -26.080539 11.810205 6.095543 10.964170 36.789229 37.497687 0.000039 81.826978 -0.000032 -21.479509 -5.013352 58.997460 0.000000 0.000003 -0.000000 -0.000002 -0.000000 0.000002 -0.000001 0.000001 0.000002 -0.000002 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.005679 0.005408 -2.869847 -1.087017 -0.004803 0.067323 0.000001 -0.000002 0.000002 0.000009 -0.000005 0.000010 -0.000000 -0.000000 0.000000 0.000007 -0.000006 0.000011 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.842262 8.853750 3.214433 -1.704790 -0.011721 0.104947 3.686765 0.012164 0.574209 0.000015 -0.000020 0.000033 0.000000 -0.000001 0.000000 0.000016 -0.000018 0.000031 -0.000001 -0.000002 -0.000001 0.000000 0.000003 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.060403 -0.518065 0.000000 0.000000 0.664366 -0.003829 -0.048461 10.029835 -0.050687 -0.395859 13.217491 -0.000002 -0.000001 21.651396 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000003 -0.000000 0.000000 0.000003 -0.000000 0.000000 0.000003 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -37.059374 3.833724 -5.732257 61.010603 -56.086331 -44.506083 -0.000002 -39.938035 -0.000001 -3.537689 -0.493779 21.223061 0.000001 0.000001 -0.000000 0.000001 -0.000002 0.000000 -0.000001 0.000001 0.000001 -0.000000 0.000000 -0.000001 -26.622628 12.026676 6.276019 11.540097 37.392478 36.442625 0.000041 82.240839 -0.000040 -22.052924 -5.240963 59.172053 0.000003 -0.000003 -0.000000 -0.000002 -0.000004 -0.000001 0.000000 -0.000002 -0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.005790 0.005520 -2.927419 -1.108825 -0.004913 0.068670 -0.000001 -0.000001 -0.000000 0.000013 -0.000007 0.000011 0.000000 -0.000000 0.000000 0.000011 -0.000007 0.000010 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000138 0.842616 8.853208 3.383201 -1.734490 -0.011952 0.106773 3.686766 0.012163 0.574209 0.000011 -0.000017 0.000029 0.000000 -0.000001 -0.000001 0.000014 -0.000018 0.000030 -0.000001 -0.000003 -0.000000 0.000000 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.061435 -0.527283 0.000000 0.000000 0.664366 -0.003829 -0.048461 10.551590 -0.055213 -0.416148 13.861442 -0.000002 -0.000001 22.478663 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -38.733552 3.991505 -5.651013 60.586783 -55.836370 -45.397628 -0.000003 -40.222509 -0.000003 -0.199746 0.811758 21.816423 -0.000001 -0.000001 -0.000001 0.000002 0.000002 0.000001 -0.000000 -0.000002 -0.000001 0.000001 -0.000000 0.000000 -27.113674 12.223586 6.441722 12.075121 37.928751 35.477895 0.000050 82.603317 -0.000062 -22.572908 -5.447069 59.317679 0.000001 -0.000001 0.000000 -0.000003 -0.000003 -0.000000 -0.000003 -0.000001 -0.000002 0.000001 -0.000002 0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.005891 0.005621 -2.979501 -1.128553 -0.005012 0.069886 0.000000 -0.000003 0.000003 0.000004 -0.000005 0.000007 0.000000 0.000000 0.000000 0.000004 -0.000006 0.000009 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000137 0.842943 8.852695 3.539017 -1.761253 -0.012163 0.108419 3.686763 0.012164 0.574210 0.000012 -0.000017 0.000033 0.000000 -0.000001 -0.000000 0.000012 -0.000017 0.000033 -0.000001 -0.000001 0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.062351 -0.535469 0.000000 0.000000 0.664367 -0.003829 -0.048461 11.023660 -0.059466 -0.434470 14.443974 -0.000002 -0.000001 23.224501 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -40.243864 4.133658 -5.579118 60.217372 -55.575467 -46.213921 0.000001 -40.519530 -0.000000 2.890671 2.056975 22.299968 -0.000001 0.000002 0.000002 0.000001 -0.000001 0.000001 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -27.550374 12.400305 6.591089 12.561383 38.397268 34.613001 0.000010 82.915006 -0.000065 -23.035831 -5.630100 59.436750 0.000003 -0.000002 -0.000003 0.000001 -0.000001 0.000001 0.000000 -0.000001 -0.000002 -0.000001 -0.000001 0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.005980 0.005710 -3.025752 -1.146073 -0.005100 0.070969 0.000001 -0.000002 0.000002 0.000007 -0.000007 0.000010 0.000000 -0.000000 0.000000 0.000004 -0.000007 0.000011 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000138 0.843240 8.852230 3.680040 -1.784928 -0.012349 0.109876 3.686764 0.012164 0.574211 0.000012 -0.000019 0.000030 0.000000 -0.000001 -0.000000 0.000012 -0.000018 0.000029 -0.000001 -0.000001 -0.000001 0.000000 0.000002 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.063145 -0.542562 0.000000 0.000000 0.664367 -0.003829 -0.048461 11.439914 -0.063341 -0.450595 14.957522 -0.000002 -0.000001 23.880008 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000004 -0.000000 0.000000 -0.000004 -0.000000 0.000000 -0.000004 -0.000000 0.000000 -0.000000 0.000000 0.000000 -41.571998 4.259525 -5.519398 59.906688 -55.305032 -46.947302 0.000002 -40.829590 -0.000000 5.716148 3.223467 22.686224 0.000000 0.000001 0.000000 0.000003 0.000000 0.000000 0.000001 0.000001 0.000001 0.000000 -0.000000 -0.000000 -27.929333 12.556145 6.722568 12.991196 38.797223 33.857350 0.000004 83.176637 -0.000067 -23.438043 -5.788556 59.531539 -0.000001 0.000005 -0.000001 0.000001 -0.000005 -0.000001 -0.000002 -0.000001 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.006057 0.005788 -3.065829 -1.161255 -0.005178 0.071907 0.000001 -0.000000 0.000000 0.000008 -0.000006 0.000010 0.000000 -0.000000 0.000000 0.000007 -0.000006 0.000010 -0.000000 0.000000 0.000000 -0.000000 0.000003 0.000137 0.843503 8.851813 3.804426 -1.805370 -0.012509 0.111132 3.686767 0.012164 0.574213 0.000014 -0.000015 0.000027 -0.000000 -0.000001 -0.000001 0.000013 -0.000015 0.000024 -0.000001 -0.000002 -0.000001 0.000000 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.063809 -0.548501 0.000000 0.000000 0.664366 -0.003829 -0.048461 11.794224 -0.066732 -0.464298 15.394568 -0.000002 -0.000001 24.436267 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -42.700055 4.368509 -5.474624 59.658642 -55.026418 -47.590340 -0.000002 -41.153116 -0.000002 8.260910 4.295556 22.988982 0.000003 -0.000004 0.000003 0.000002 0.000001 -0.000002 -0.000002 0.000000 -0.000000 -0.000002 -0.000000 0.000000 -28.247258 12.690427 6.834650 13.357143 39.127777 33.220152 0.000048 83.388864 -0.000077 -23.775772 -5.921027 59.604390 -0.000000 0.000002 -0.000002 -0.000000 -0.000003 -0.000002 0.000001 -0.000002 -0.000003 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.006122 0.005853 -3.099387 -1.173967 -0.005243 0.072692 0.000004 -0.000002 0.000002 0.000007 -0.000007 0.000014 0.000000 -0.000000 0.000000 0.000005 -0.000007 0.000014 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.843727 8.851460 3.910330 -1.822427 -0.012645 0.112182 3.686763 0.012163 0.574211 0.000012 -0.000017 0.000028 0.000000 -0.000001 -0.000000 0.000012 -0.000015 0.000027 -0.000001 -0.000002 -0.000001 0.000000 0.000001 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.064337 -0.553227 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.080454 -0.069533 -0.475353 15.747597 -0.000002 -0.000001 24.884391 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000000 -0.000000 0.000000 -43.610314 4.460009 -5.447526 59.476987 -54.740947 -48.135946 0.000004 -41.490606 -0.000002 10.510121 5.260077 23.222479 -0.000002 -0.000000 0.000006 0.000004 0.000002 -0.000001 0.000001 0.000002 -0.000000 -0.000001 0.000000 0.000000 -28.500851 12.802441 6.925865 13.652193 39.387864 32.710319 0.000042 83.552454 -0.000071 -24.045269 -6.026181 59.657461 0.000002 -0.000002 0.000001 0.000001 -0.000001 0.000002 -0.000001 0.000000 -0.000003 -0.000001 0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.006173 0.005905 -3.126085 -1.184080 -0.005294 0.073317 0.000003 -0.000001 0.000002 0.000010 -0.000006 0.000011 -0.000000 0.000000 -0.000000 0.000008 -0.000006 0.000011 -0.000000 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.843909 8.851170 3.995910 -1.835953 -0.012752 0.113013 3.686768 0.012162 0.574211 0.000011 -0.000012 0.000026 -0.000000 0.000000 0.000000 0.000012 -0.000012 0.000028 -0.000001 -0.000002 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.064722 -0.556677 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.292503 -0.071643 -0.483534 16.009084 -0.000002 -0.000001 25.215542 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -44.284983 4.533317 -5.440725 59.364999 -54.449817 -48.577347 -0.000004 -41.842572 -0.000003 12.449154 6.105877 23.400728 0.000004 -0.000000 -0.000002 0.000002 0.000000 0.000000 -0.000002 0.000001 -0.000001 0.000001 -0.000001 0.000001 -28.686788 12.891407 6.994794 13.869835 39.576141 32.336414 0.000043 83.668144 -0.000065 -24.242638 -6.102757 59.692937 0.000001 0.000001 -0.000002 0.000001 0.000001 -0.000000 -0.000002 0.000001 -0.000003 -0.000002 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.006211 0.005943 -3.145579 -1.191465 -0.005332 0.073773 0.000005 -0.000001 0.000000 0.000007 -0.000006 0.000010 -0.000000 -0.000000 0.000000 0.000004 -0.000007 0.000010 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.844043 8.850952 4.059321 -1.845797 -0.012830 0.113619 3.686763 0.012160 0.574214 0.000009 -0.000013 0.000023 0.000000 -0.000001 0.000000 0.000009 -0.000015 0.000023 -0.000001 -0.000004 -0.000000 0.000000 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.064958 -0.558792 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.424240 -0.072971 -0.488612 16.171535 -0.000002 -0.000001 25.420810 -0.000003 -0.000001 -180.000005 -0.000043 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000003 -0.000000 0.000000 -44.706156 4.587533 -5.456738 59.325889 -54.154060 -48.907863 0.000002 -42.209527 -0.000002 14.062881 6.823296 23.536986 -0.000001 0.000001 0.000003 0.000002 0.000000 0.000002 0.000006 0.000000 -0.000000 0.000001 -0.000000 0.000000 -28.801798 12.956502 7.040082 14.004149 39.690858 32.106599 0.000027 83.736862 -0.000058 -24.364004 -6.149548 59.712820 0.000004 0.000003 -0.000001 -0.000001 -0.000002 -0.000001 -0.000000 -0.000001 0.000000 -0.000003 0.000002 0.000000 0.000002 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.006233 0.005966 -3.157526 -1.195991 -0.005355 0.074052 0.000003 -0.000001 0.000002 0.000007 -0.000007 0.000012 0.000000 -0.000000 0.000000 0.000006 -0.000007 0.000012 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.844127 8.850819 4.098721 -1.851813 -0.012879 0.113988 3.686765 0.012164 0.574214 0.000011 -0.000010 0.000022 -0.000000 0.000001 -0.000001 0.000010 -0.000011 0.000020 -0.000001 -0.000002 -0.000001 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.065038 -0.559510 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491236 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000003 0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000004 0.000000 0.000000 -44.855389 4.621465 -5.497951 59.362608 -53.854498 -49.121033 0.000003 -42.591977 0.000001 15.335021 7.403495 23.643279 -0.000001 0.000003 0.000002 0.000004 0.000000 -0.000001 -0.000000 -0.000001 -0.000001 -0.000001 -0.000000 0.000000 -28.842577 12.996797 7.060441 14.049924 39.729701 32.028403 0.000114 83.759559 -0.000121 -24.405366 -6.165400 59.719035 0.000001 -0.000000 0.000001 -0.000000 -0.000006 -0.000004 -0.000001 0.000001 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -1.197529 -0.005363 0.074147 0.000002 -0.000001 0.000000 0.000008 -0.000009 0.000014 0.000000 -0.000000 0.000000 0.000007 -0.000009 0.000015 -0.000000 -0.000001 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -1.853852 -0.012895 0.114110 3.686764 0.012164 0.574211 0.000009 -0.000011 0.000022 -0.000000 -0.000002 -0.000000 0.000009 -0.000012 0.000020 -0.000000 -0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.064986 -0.559064 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469514 -0.073430 -0.490356 16.227362 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 -0.000000 -0.000004 -0.000000 0.000000 -44.861874 4.643234 -5.557225 59.465341 -53.556172 -49.233195 0.000001 -42.990075 0.000001 16.397846 7.894723 23.716929 0.000001 0.000001 0.000002 -0.000001 -0.000002 0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000000 -28.806490 13.027199 7.058772 13.969171 39.663404 32.172261 0.000105 83.673294 -0.000119 -24.405364 -6.165400 59.719035 0.000001 -0.000001 0.000001 0.000002 -0.000003 -0.000003 0.000000 0.000000 -0.000002 -0.000000 0.000001 0.000001 -0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.006240 0.005974 -3.161587 -1.196542 -0.005358 0.074085 0.000002 -0.000002 0.000004 0.000005 -0.000008 0.000012 -0.000000 -0.000000 0.000000 0.000005 -0.000007 0.000014 -0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850768 4.112264 -1.852324 -0.012881 0.114017 3.686766 0.012163 0.574211 0.000009 -0.000015 0.000026 0.000000 0.000001 -0.000001 0.000009 -0.000014 0.000024 -0.000001 -0.000002 0.000000 0.000000 0.000001 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.064833 -0.557745 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227363 -0.000002 -0.000001 25.491238 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000004 -0.000000 -0.000000 -44.867468 4.662063 -5.625427 59.618939 -53.263892 -49.269272 0.000003 -43.402307 0.000001 17.397513 8.351381 23.750711 0.000002 0.000000 -0.000003 -0.000001 0.000001 0.000000 0.000000 -0.000002 -0.000001 0.000002 -0.000001 0.000000 -28.696569 13.062960 7.039558 13.735732 39.469512 32.589623 0.000086 83.422216 -0.000115 -24.405357 -6.165396 59.719028 0.000001 -0.000000 0.000001 -0.000002 -0.000001 -0.000001 -0.000001 -0.000002 -0.000002 -0.000001 0.000001 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 -0.006240 0.005974 -3.161587 -1.193626 -0.005343 0.073906 0.000000 -0.000002 0.000004 0.000005 -0.000006 0.000013 0.000000 0.000000 0.000000 0.000006 -0.000007 0.000013 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112265 -1.847811 -0.012848 0.113739 3.686766 0.012162 0.574213 0.000010 -0.000013 0.000023 -0.000000 -0.000001 0.000000 0.000009 -0.000012 0.000023 -0.000000 -0.000003 -0.000001 0.000000 0.000001 -0.000102 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.064582 -0.555583 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469516 -0.073430 -0.490356 16.227363 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000002 -0.000000 0.000000 -44.872198 4.678104 -5.701786 59.818168 -52.977812 -49.235620 -0.000001 -43.826841 0.000000 18.336997 8.774185 23.748392 0.000002 0.000001 -0.000001 -0.000003 0.000003 -0.000002 -0.000001 0.000001 -0.000001 0.000000 -0.000000 0.000001 -28.518007 13.103538 7.003936 13.364682 39.154264 33.257687 0.000102 83.017944 -0.000108 -24.405362 -6.165400 59.719035 0.000004 0.000002 -0.000000 0.000002 -0.000001 0.000001 0.000001 -0.000003 -0.000002 -0.000001 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161586 -1.188846 -0.005319 0.073609 -0.000000 -0.000000 -0.000001 0.000006 -0.000007 0.000010 0.000000 0.000000 0.000000 0.000003 -0.000007 0.000010 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000136 0.844156 8.850769 4.112264 -1.840412 -0.012788 0.113284 3.686766 0.012162 0.574213 0.000010 -0.000012 0.000022 -0.000000 0.000000 -0.000000 0.000010 -0.000012 0.000023 -0.000001 -0.000004 -0.000001 0.000000 0.000003 -0.000101 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.064236 -0.552608 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469514 -0.073429 -0.490356 16.227360 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 0.000000 -44.876122 4.691512 -5.785536 60.058120 -52.698068 -49.138338 0.000001 -44.261695 -0.000001 19.219092 9.164042 23.713510 0.000002 -0.000002 0.000000 0.000005 0.000001 -0.000002 -0.000001 -0.000000 -0.000002 -0.000002 0.000000 0.000000 -28.276027 13.148381 6.953051 12.873080 38.722682 34.152237 0.000075 82.471816 -0.000113 -24.405359 -6.165399 59.719028 -0.000000 -0.000001 -0.000000 -0.000000 -0.000002 -0.000002 -0.000001 -0.000001 -0.000002 -0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -1.182272 -0.005285 0.073204 -0.000000 0.000000 -0.000002 0.000011 -0.000006 0.000013 0.000000 0.000000 -0.000000 0.000012 -0.000006 0.000016 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.830234 -0.012706 0.112659 3.686767 0.012160 0.574212 0.000009 -0.000012 0.000019 -0.000000 0.000000 -0.000000 0.000009 -0.000012 0.000020 -0.000000 -0.000004 -0.000001 0.000000 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.063799 -0.548849 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469517 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 0.000000 0.000000 -44.879284 4.702443 -5.875914 60.333998 -52.424697 -48.983364 -0.000004 -44.705043 0.000002 20.046358 9.521950 23.649421 0.000003 -0.000006 0.000001 0.000001 -0.000001 0.000000 -0.000003 0.000001 0.000000 0.000001 0.000000 -0.000000 -27.975801 13.196873 6.888021 12.279294 38.179084 35.247963 0.000099 81.795313 -0.000091 -24.405359 -6.165397 59.719035 0.000002 -0.000003 -0.000000 0.000001 -0.000000 0.000001 -0.000003 -0.000003 -0.000001 -0.000000 -0.000000 0.000000 0.000002 0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161586 -1.173966 -0.005243 0.072691 -0.000000 -0.000000 -0.000001 0.000010 -0.000007 0.000015 -0.000000 -0.000000 0.000000 0.000009 -0.000007 0.000018 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000136 0.844156 8.850769 4.112264 -1.817377 -0.012605 0.111868 3.686762 0.012163 0.574209 0.000007 -0.000014 0.000026 -0.000000 0.000000 0.000000 0.000006 -0.000015 0.000025 -0.000001 -0.000004 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.063274 -0.544336 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227356 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -44.881733 4.711044 -5.972144 60.641281 -52.157705 -48.776512 0.000004 -45.154930 0.000002 20.821169 9.849011 23.559254 0.000004 0.000000 0.000002 0.000003 0.000001 -0.000001 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -27.622555 13.248389 6.809980 11.602500 37.527634 36.519010 0.000068 80.999787 -0.000089 -24.405359 -6.165398 59.719028 0.000001 0.000001 0.000000 -0.000002 -0.000003 -0.000001 -0.000002 0.000001 -0.000002 0.000000 -0.000000 0.000000 -0.000001 0.000001 -0.000000 -0.000002 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000002 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -1.163999 -0.005192 0.072076 0.000004 -0.000000 -0.000001 0.000008 -0.000007 0.000016 -0.000000 0.000000 -0.000000 0.000007 -0.000007 0.000014 0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -1.801947 -0.012483 0.110918 3.686766 0.012160 0.574212 0.000009 -0.000011 0.000019 -0.000000 0.000001 -0.000000 0.000009 -0.000012 0.000020 -0.000001 -0.000004 -0.000001 0.000000 0.000001 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.062665 -0.539098 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073430 -0.490356 16.227356 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -44.883543 4.717475 -6.073463 60.975510 -51.897092 -48.523371 0.000002 -45.609456 0.000002 21.545743 10.146401 23.445990 0.000000 -0.000003 0.000000 0.000003 -0.000002 -0.000001 -0.000001 -0.000000 -0.000001 -0.000002 -0.000000 0.000000 -27.221449 13.302287 6.720061 10.862073 36.772707 37.939338 0.000052 80.096693 -0.000070 -24.405359 -6.165400 59.719028 -0.000001 -0.000000 -0.000000 -0.000000 -0.000002 -0.000001 -0.000001 -0.000002 0.000000 0.000000 -0.000001 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000001 0.000000 -0.000002 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -1.152434 -0.005133 0.071361 0.000002 -0.000001 0.000000 0.000008 -0.000007 0.000013 -0.000000 0.000000 0.000000 0.000007 -0.000007 0.000016 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850768 4.112264 -1.784044 -0.012341 0.109818 3.686765 0.012164 0.574211 0.000017 -0.000014 0.000020 -0.000000 0.000000 -0.000001 0.000017 -0.000013 0.000021 -0.000001 -0.000004 -0.000000 -0.000000 0.000001 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.061976 -0.533164 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -44.884745 4.721887 -6.179101 61.332558 -51.642872 -48.229417 0.000001 -46.066720 0.000002 22.222131 10.415384 23.312448 0.000003 -0.000000 -0.000002 -0.000002 0.000002 -0.000002 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -26.777734 13.357948 6.619417 10.077078 35.919302 39.483251 0.000034 79.097552 -0.000055 -24.405360 -6.165400 59.719035 0.000001 -0.000002 -0.000001 -0.000001 -0.000002 -0.000001 -0.000002 -0.000002 0.000002 0.000001 0.000000 0.000001 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -1.139339 -0.005066 0.070553 0.000003 -0.000001 0.000002 0.000007 -0.000007 0.000013 0.000000 -0.000000 0.000000 0.000006 -0.000008 0.000016 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -1.763773 -0.012183 0.108571 3.686767 0.012163 0.574209 0.000011 -0.000013 0.000021 0.000000 -0.000000 -0.000000 0.000011 -0.000014 0.000022 -0.000002 -0.000003 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.061208 -0.526565 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073430 -0.490356 16.227356 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000002 -0.000000 0.000000 -44.885374 4.724432 -6.288288 61.708266 -51.395060 -47.899990 0.000006 -46.524773 0.000002 22.852300 10.657236 23.161334 -0.000002 0.000001 0.000001 0.000002 0.000002 0.000000 -0.000000 0.000001 0.000000 -0.000001 -0.000001 0.000000 -26.296590 13.414728 6.509217 9.265823 34.973362 41.125672 0.000043 78.013977 -0.000041 -24.405359 -6.165397 59.719028 -0.000001 0.000001 0.000001 -0.000001 -0.000001 -0.000002 -0.000001 0.000002 0.000003 0.000000 -0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.006240 0.005974 -3.161587 -1.124780 -0.004993 0.069653 0.000003 -0.000001 0.000000 0.000009 -0.000008 0.000015 0.000000 0.000000 0.000000 0.000006 -0.000009 0.000016 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.741235 -0.012005 0.107185 3.686768 0.012161 0.574210 0.000006 -0.000011 0.000021 0.000000 -0.000000 -0.000000 0.000008 -0.000011 0.000022 -0.000001 -0.000003 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.060367 -0.519331 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469515 -0.073430 -0.490356 16.227358 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.885503 4.725267 -6.400251 62.098769 -51.153722 -47.540203 -0.000001 -46.981716 0.000001 23.438054 10.873308 22.995225 -0.000000 -0.000001 -0.000001 0.000001 -0.000002 0.000000 -0.000002 -0.000001 -0.000000 -0.000002 -0.000000 0.000000 -25.783293 13.472024 6.390638 8.445382 33.941983 42.842601 0.000036 76.857742 -0.000045 -24.405364 -6.165399 59.719035 0.000000 0.000002 0.000001 -0.000001 -0.000000 -0.000001 0.000001 0.000000 0.000002 0.000001 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.006240 0.005974 -3.161587 -1.108824 -0.004913 0.068668 0.000001 -0.000002 0.000002 0.000012 -0.000008 0.000017 -0.000000 0.000000 -0.000000 0.000009 -0.000007 0.000016 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -1.716535 -0.011813 0.105664 3.686769 0.012163 0.574211 0.000006 -0.000012 0.000026 -0.000000 0.000001 -0.000000 0.000006 -0.000012 0.000026 -0.000001 -0.000004 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.059456 -0.511489 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469514 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491238 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -44.885186 4.724541 -6.514228 62.500288 -50.918968 -47.155162 0.000008 -47.435606 0.000003 23.981113 11.064958 22.816554 -0.000001 0.000001 0.000002 -0.000002 0.000001 0.000001 0.000002 0.000000 0.000001 0.000003 -0.000000 0.000001 -25.243095 13.529257 6.264898 7.631256 32.833498 44.611251 0.000022 75.640677 -0.000034 -24.405359 -6.165397 59.719028 -0.000000 0.000003 -0.000001 -0.000000 0.000001 -0.000002 -0.000001 0.000002 0.000002 -0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161586 -1.091538 -0.004826 0.067600 0.000001 0.000001 -0.000001 0.000005 -0.000007 0.000014 -0.000000 -0.000000 0.000000 0.000004 -0.000007 0.000017 -0.000000 0.000000 -0.000000 -0.000000 0.000003 0.000136 0.844156 8.850769 4.112264 -1.689776 -0.011603 0.104020 3.686766 0.012163 0.574211 0.000007 -0.000012 0.000020 -0.000000 0.000000 0.000000 0.000004 -0.000012 0.000022 -0.000001 -0.000002 -0.000000 0.000000 0.000002 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.058478 -0.503072 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -44.884445 4.722416 -6.629447 62.909191 -50.690966 -46.749745 0.000001 -47.884489 0.000003 24.483117 11.233563 22.627729 -0.000003 -0.000001 0.000001 -0.000001 0.000001 -0.000001 -0.000001 0.000000 0.000001 0.000001 -0.000000 0.000001 -24.681249 13.585879 6.133226 6.837085 31.657548 46.410394 0.000027 74.374804 -0.000034 -24.405366 -6.165396 59.719035 0.000000 0.000003 -0.000000 0.000001 -0.000002 -0.000002 -0.000001 0.000003 0.000001 0.000001 -0.000002 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161586 -1.072988 -0.004733 0.066454 0.000002 -0.000000 0.000000 0.000009 -0.000009 0.000014 0.000000 0.000000 0.000000 0.000007 -0.000008 0.000015 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000136 0.844156 8.850769 4.112264 -1.661058 -0.011381 0.102254 3.686765 0.012161 0.574210 0.000009 -0.000013 0.000023 -0.000000 0.000001 -0.000000 0.000009 -0.000013 0.000023 -0.000001 -0.000003 0.000000 0.000000 0.000002 -0.000099 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.057435 -0.494106 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227356 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000001 -0.000000 0.000000 -44.883369 4.719041 -6.745137 63.321926 -50.469958 -46.328797 -0.000002 -48.326416 0.000001 24.945630 11.380556 22.431048 0.000001 -0.000002 0.000001 -0.000001 0.000000 -0.000001 -0.000002 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -24.103089 13.641379 5.996875 6.074487 30.425061 48.220425 0.000037 73.072205 -0.000028 -24.405364 -6.165397 59.719028 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000002 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -1.053240 -0.004635 0.065235 0.000001 -0.000001 0.000000 0.000004 -0.000008 0.000011 -0.000000 0.000000 0.000000 0.000004 -0.000008 0.000013 -0.000000 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -1.630487 -0.011145 0.100372 3.686766 0.012164 0.574211 0.000007 -0.000014 0.000028 -0.000000 0.000000 -0.000001 0.000007 -0.000014 0.000028 -0.000000 -0.000002 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.056333 -0.484623 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000001 -0.000000 0.000000 -44.882006 4.714576 -6.860531 63.735111 -50.256231 -45.896986 0.000002 -48.759440 0.000001 25.370179 11.507360 22.228728 0.000000 -0.000002 -0.000001 -0.000001 0.000003 -0.000002 -0.000000 -0.000001 -0.000000 -0.000004 0.000000 -0.000000 -23.513913 13.695295 5.857123 5.352931 29.148088 50.023363 0.000030 71.745072 -0.000040 -24.405366 -6.165397 59.719035 -0.000000 0.000001 -0.000000 0.000000 -0.000003 -0.000001 0.000001 0.000001 -0.000003 0.000001 -0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.006240 0.005974 -3.161587 -1.032360 -0.004531 0.063945 0.000000 0.000000 -0.000002 0.000011 -0.000007 0.000013 -0.000000 0.000000 -0.000000 0.000008 -0.000006 0.000014 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850771 4.112264 -1.598166 -0.010896 0.098384 3.686770 0.012163 0.574213 0.000010 -0.000011 0.000026 -0.000000 0.000001 0.000000 0.000008 -0.000011 0.000023 -0.000002 -0.000002 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.055174 -0.474653 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -44.880357 4.709169 -6.974865 64.145489 -50.050158 -45.458922 -0.000001 -49.181586 0.000001 25.758199 11.615387 22.022944 -0.000000 0.000002 0.000003 -0.000002 0.000001 0.000001 -0.000001 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 -22.919055 13.747215 5.715279 4.679743 27.839703 51.802904 0.000022 70.405651 -0.000029 -24.405362 -6.165396 59.719035 -0.000000 -0.000003 0.000000 -0.000001 0.000000 0.000000 0.000002 -0.000000 -0.000002 0.000001 -0.000001 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.006240 0.005974 -3.161586 -1.010417 -0.004423 0.062589 -0.000000 -0.000000 0.000000 0.000010 -0.000007 0.000012 0.000000 0.000000 -0.000000 0.000007 -0.000008 0.000013 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000136 0.844156 8.850769 4.112264 -1.564196 -0.010637 0.096295 3.686765 0.012162 0.574208 0.000009 -0.000014 0.000022 -0.000000 0.000001 -0.000000 0.000009 -0.000013 0.000022 -0.000001 -0.000004 -0.000001 0.000000 0.000002 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 0.053962 -0.464223 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469519 -0.073430 -0.490356 16.227358 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -44.878502 4.702978 -7.087362 64.549884 -49.852147 -45.019047 0.000001 -49.590913 0.000002 26.111154 11.706112 21.815850 0.000000 -0.000001 -0.000001 0.000001 0.000001 -0.000002 -0.000001 0.000001 0.000000 0.000000 -0.000000 -0.000000 -22.323859 13.796764 5.572657 4.060172 26.513761 53.544278 0.000018 69.066210 -0.000034 -24.405360 -6.165397 59.719035 0.000000 0.000000 -0.000000 -0.000002 0.000000 0.000001 -0.000001 0.000000 -0.000002 0.000001 -0.000002 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.006240 0.005974 -3.161586 -0.987476 -0.004310 0.061172 0.000002 -0.000000 0.000000 0.000010 -0.000007 0.000012 0.000000 0.000000 0.000000 0.000007 -0.000006 0.000012 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 0.844156 8.850768 4.112264 -1.528682 -0.010366 0.094109 3.686766 0.012162 0.574211 0.000008 -0.000014 0.000024 0.000000 0.000001 -0.000000 0.000007 -0.000014 0.000023 -0.000000 -0.000003 0.000000 0.000000 0.000000 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.052700 -0.453365 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227360 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 -0.000000 0.000000 -44.876488 4.696159 -7.197261 64.945175 -49.662743 -44.581761 0.000007 -49.985428 0.000002 26.430402 11.780963 21.609515 0.000002 -0.000002 0.000002 0.000000 0.000001 0.000000 0.000003 -0.000002 0.000000 -0.000001 -0.000000 -0.000000 -21.733676 13.843638 5.430597 3.497519 25.184707 55.234083 0.000006 67.739098 -0.000035 -24.405359 -6.165394 59.719028 -0.000001 -0.000004 -0.000000 -0.000003 0.000002 -0.000000 0.000001 0.000001 -0.000003 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.963603 -0.004194 0.059698 -0.000000 -0.000001 0.000000 0.000007 -0.000007 0.000014 -0.000000 0.000000 0.000000 0.000008 -0.000007 0.000015 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -1.491725 -0.010086 0.091833 3.686767 0.012164 0.574211 0.000012 -0.000012 0.000024 -0.000000 0.000002 -0.000000 0.000012 -0.000013 0.000025 -0.000001 -0.000002 -0.000001 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.051391 -0.442107 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469516 -0.073430 -0.490356 16.227362 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000004 0.000000 0.000000 -44.874367 4.688869 -7.303794 65.328437 -49.482508 -44.151384 0.000001 -50.363158 0.000003 26.717347 11.841397 21.406004 -0.000001 -0.000003 0.000000 0.000002 0.000001 0.000001 0.000001 0.000000 0.000000 0.000002 0.000000 0.000000 -21.153859 13.887568 5.290457 2.993304 23.867321 56.860164 0.000021 66.436485 -0.000037 -24.405362 -6.165397 59.719028 0.000001 -0.000000 0.000001 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 -0.000003 0.000001 -0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.938865 -0.004073 0.058171 0.000001 -0.000000 0.000000 0.000008 -0.000008 0.000016 -0.000000 0.000000 -0.000000 0.000007 -0.000009 0.000015 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -1.453430 -0.009794 0.089477 3.686765 0.012162 0.574213 0.000008 -0.000012 0.000024 -0.000000 0.000000 0.000000 0.000007 -0.000013 0.000020 -0.000001 -0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.050039 -0.430480 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073429 -0.490356 16.227356 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000004 0.000000 0.000000 -44.872164 4.681264 -7.406203 65.696741 -49.312074 -43.732144 0.000005 -50.722132 0.000003 26.973339 11.888855 21.207350 -0.000001 -0.000000 0.000002 0.000003 0.000003 0.000001 -0.000000 -0.000000 0.000001 -0.000004 0.000000 -0.000001 -20.589774 13.928359 5.153606 2.547479 22.576538 58.411347 0.000029 65.170598 -0.000019 -24.405355 -6.165399 59.719028 -0.000001 0.000002 -0.000000 -0.000005 0.000000 0.000000 0.000004 0.000001 0.000003 0.000002 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -0.913329 -0.003950 0.056592 -0.000000 -0.000001 0.000000 0.000006 -0.000009 0.000014 0.000000 -0.000000 -0.000000 0.000002 -0.000009 0.000015 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.413899 -0.009499 0.087043 3.686762 0.012163 0.574211 0.000010 -0.000014 0.000025 -0.000000 0.000001 -0.000000 0.000010 -0.000015 0.000023 -0.000000 -0.000001 -0.000001 0.000000 0.000003 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.048648 -0.418512 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000002 0.000000 0.000000 -44.869944 4.673496 -7.503710 66.047219 -49.152138 -43.328138 0.000003 -51.060346 0.000003 27.199751 11.924790 21.015580 -0.000001 -0.000000 0.000003 0.000000 -0.000004 -0.000001 0.000000 0.000001 0.000001 0.000001 -0.000000 -0.000000 -20.046779 13.965834 5.021415 2.158664 21.327233 59.877318 0.000013 63.953554 -0.000029 -24.405355 -6.165400 59.719028 -0.000001 -0.000003 -0.000000 0.000002 -0.000001 -0.000003 0.000004 0.000003 -0.000003 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.887061 -0.003823 0.054970 0.000003 -0.000001 -0.000002 0.000006 -0.000005 0.000016 0.000000 0.000000 0.000000 0.000005 -0.000005 0.000015 -0.000001 -0.000001 0.000001 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.373234 -0.009194 0.084541 3.686765 0.012162 0.574212 0.000012 -0.000013 0.000023 0.000000 0.000000 -0.000000 0.000011 -0.000013 0.000024 -0.000002 -0.000004 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.047221 -0.406234 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469519 -0.073430 -0.490356 16.227358 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000001 0.000000 0.000000 -44.867714 4.665724 -7.595552 66.377185 -49.003452 -42.943503 0.000001 -51.375839 0.000001 27.397926 11.950651 20.832688 -0.000002 -0.000002 0.000000 0.000002 0.000002 -0.000002 -0.000001 0.000001 -0.000000 0.000001 -0.000000 -0.000000 -19.530221 13.999883 4.895269 1.824383 20.134074 61.248335 0.000016 62.797312 -0.000020 -24.405364 -6.165396 59.719028 0.000002 -0.000000 -0.000000 -0.000001 0.000000 -0.000001 0.000004 0.000000 0.000001 0.000000 -0.000001 -0.000000 -0.000001 0.000001 0.000000 -0.000002 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.860128 -0.003695 0.053306 -0.000001 -0.000001 0.000000 0.000009 -0.000007 0.000013 0.000000 0.000000 0.000000 0.000007 -0.000007 0.000014 -0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.331539 -0.008888 0.081974 3.686765 0.012163 0.574211 0.000006 -0.000011 0.000020 -0.000000 -0.000000 0.000000 0.000008 -0.000012 0.000021 -0.000001 -0.000004 -0.000001 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.045761 -0.393674 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469514 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -44.865566 4.658106 -7.680971 66.683854 -48.866817 -42.582251 0.000006 -51.666570 0.000001 27.569246 11.967869 20.660682 -0.000002 0.000000 0.000001 0.000000 0.000000 0.000000 0.000003 0.000000 -0.000000 0.000001 -0.000000 -0.000001 -19.045457 14.030441 4.776558 1.541308 19.011401 62.515116 0.000023 61.713730 -0.000020 -24.405364 -6.165397 59.719028 0.000003 0.000001 0.000001 0.000001 0.000000 -0.000001 0.000002 -0.000001 0.000002 -0.000001 -0.000001 0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.832596 -0.003564 0.051604 0.000001 -0.000001 0.000002 0.000010 -0.000009 0.000015 0.000000 0.000000 0.000000 0.000010 -0.000008 0.000016 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000136 0.844156 8.850769 4.112264 -1.288916 -0.008573 0.079350 3.686767 0.012161 0.574210 0.000011 -0.000014 0.000025 0.000000 0.000000 -0.000000 0.000012 -0.000014 0.000023 -0.000001 -0.000004 -0.000001 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.044272 -0.380864 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469514 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000001 -0.000000 0.000000 -44.863524 4.650799 -7.759202 66.964602 -48.743051 -42.248405 0.000002 -51.930615 0.000002 27.715087 11.977870 20.501520 0.000000 0.000001 0.000001 0.000001 0.000001 -0.000001 0.000001 -0.000001 0.000000 -0.000002 0.000001 -0.000000 -18.597811 14.057452 4.666667 1.305520 17.973112 63.668551 0.000018 60.714590 -0.000014 -24.405360 -6.165399 59.719035 -0.000001 0.000001 -0.000000 0.000004 -0.000000 -0.000003 -0.000000 0.000000 0.000003 -0.000000 0.000001 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000000 -0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.804531 -0.003432 0.049871 0.000001 -0.000002 0.000002 0.000009 -0.000007 0.000014 -0.000000 0.000000 0.000000 0.000006 -0.000007 0.000015 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.245471 -0.008255 0.076675 3.686765 0.012162 0.574212 0.000011 -0.000016 0.000028 0.000001 -0.000001 -0.000000 0.000011 -0.000015 0.000026 -0.000001 -0.000003 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.042757 -0.367831 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073430 -0.490356 16.227360 -0.000002 -0.000001 25.491248 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 -44.861605 4.643955 -7.829473 67.216752 -48.633034 -41.945940 0.000005 -52.165911 0.000002 27.836837 11.982069 20.357217 0.000001 0.000003 -0.000004 0.000003 0.000000 -0.000002 0.000002 0.000001 0.000000 -0.000003 0.000000 -0.000001 -18.192624 14.080905 4.566984 1.112739 17.032668 64.699691 0.000024 59.811488 -0.000021 -24.405359 -6.165397 59.719035 -0.000003 0.000001 -0.000000 0.000001 0.000001 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.006240 0.005974 -3.161587 -0.776001 -0.003298 0.048108 0.000003 -0.000001 0.000002 0.000009 -0.000007 0.000013 0.000000 0.000000 -0.000000 0.000006 -0.000007 0.000013 -0.000000 -0.000000 0.000001 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.201305 -0.007932 0.073956 3.686765 0.012163 0.574209 0.000013 -0.000014 0.000023 -0.000000 0.000000 -0.000001 0.000012 -0.000013 0.000024 -0.000001 -0.000003 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.041220 -0.354607 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073430 -0.490356 16.227355 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -44.859866 4.637736 -7.891035 67.437641 -48.537595 -41.678822 0.000004 -52.370503 0.000003 27.935878 11.981879 20.229724 -0.000001 -0.000000 -0.000002 0.000002 0.000001 -0.000002 -0.000001 -0.000000 0.000001 -0.000003 -0.000000 -0.000000 -17.835217 14.100805 4.478891 0.958591 16.203135 65.599500 0.000020 59.015956 -0.000015 -24.405359 -6.165393 59.719035 -0.000001 -0.000003 -0.000002 0.000001 0.000001 -0.000003 -0.000003 -0.000002 0.000001 -0.000000 -0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 -0.000000 -0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.747072 -0.003163 0.046321 0.000001 -0.000002 0.000002 0.000008 -0.000007 0.000012 0.000000 0.000000 -0.000000 0.000006 -0.000007 0.000013 -0.000000 -0.000001 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -1.156520 -0.007610 0.071198 3.686762 0.012165 0.574206 0.000012 -0.000016 0.000027 -0.000000 -0.000000 -0.000001 0.000012 -0.000015 0.000028 -0.000001 -0.000003 -0.000001 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.039664 -0.341219 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073430 -0.490356 16.227362 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000001 -0.000000 -0.000000 -44.858374 4.632297 -7.943110 67.624610 -48.457665 -41.451069 0.000008 -52.542371 0.000001 28.013650 11.978679 20.121022 -0.000001 -0.000001 -0.000001 -0.000001 0.000000 -0.000001 0.000001 -0.000001 -0.000000 -0.000004 -0.000000 -0.000000 -17.530905 14.117149 4.403763 0.838845 15.497127 66.358689 0.000014 58.339453 -0.000015 -24.405357 -6.165398 59.719035 -0.000002 -0.000001 -0.000000 0.000003 0.000001 0.000000 -0.000002 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.717809 -0.003028 0.044513 0.000004 -0.000001 0.000000 0.000013 -0.000007 0.000012 0.000000 0.000000 -0.000000 0.000011 -0.000008 0.000011 0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850769 4.112264 -1.111219 -0.007286 0.068408 3.686769 0.012164 0.574209 0.000007 -0.000015 0.000024 -0.000000 -0.000001 -0.000000 0.000006 -0.000015 0.000022 -0.000001 -0.000003 0.000001 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.038092 -0.327698 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469516 -0.073430 -0.490356 16.227356 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 -0.000000 0.000000 -44.857121 4.627793 -7.984944 67.774956 -48.394083 -41.266695 -0.000001 -52.679531 0.000002 28.071593 11.973865 20.033073 -0.000001 0.000000 -0.000002 0.000000 0.000001 0.000002 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -17.284980 14.129947 4.342974 0.749667 14.926979 66.967669 0.000014 57.793352 -0.000014 -24.405359 -6.165397 59.719035 0.000004 0.000001 0.000000 0.000000 0.000002 -0.000001 -0.000001 -0.000000 0.000003 -0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.688282 -0.002892 0.042688 0.000002 0.000000 -0.000001 0.000009 -0.000008 0.000016 0.000000 0.000000 0.000000 0.000006 -0.000008 0.000018 -0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -1.065508 -0.006957 0.065592 3.686769 0.012163 0.574207 0.000011 -0.000013 0.000025 -0.000000 0.000000 -0.000001 0.000011 -0.000014 0.000023 -0.000002 -0.000004 -0.000001 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.036508 -0.314074 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227358 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000001 0.000000 0.000000 -44.856178 4.624381 -8.015772 67.885940 -48.347702 -41.129777 0.000002 -52.779976 0.000005 28.111144 11.968774 19.967848 -0.000001 0.000000 -0.000001 0.000003 0.000001 -0.000001 -0.000002 0.000000 0.000001 -0.000000 0.000000 -0.000000 -17.102760 14.139179 4.297883 0.687903 14.504810 67.416371 0.000022 57.389053 -0.000018 -24.405359 -6.165397 59.719035 0.000003 0.000000 -0.000001 0.000001 0.000002 0.000001 0.000002 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000001 0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 -0.006240 0.005974 -3.161587 -0.658553 -0.002757 0.040851 0.000004 -0.000001 0.000002 0.000006 -0.000007 0.000011 -0.000000 0.000000 0.000000 0.000005 -0.000006 0.000012 -0.000000 -0.000000 0.000001 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -1.019486 -0.006632 0.062758 3.686767 0.012163 0.574209 0.000010 -0.000016 0.000025 -0.000000 0.000001 -0.000000 0.000012 -0.000016 0.000027 -0.000001 -0.000002 -0.000001 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.034916 -0.300376 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073430 -0.490356 16.227363 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.855591 4.622221 -8.034829 67.954713 -48.319333 -41.044485 0.000001 -52.841700 0.000004 28.133802 11.964757 19.927294 -0.000000 0.000001 -0.000002 0.000000 0.000002 -0.000002 -0.000002 0.000001 0.000001 0.000001 0.000000 -0.000001 -16.989539 14.144795 4.269844 0.651355 14.242648 67.694100 0.000013 57.138009 -0.000016 -24.405359 -6.165399 59.719035 0.000004 -0.000001 0.000002 0.000002 0.000001 0.000002 -0.000000 -0.000001 0.000003 -0.000000 -0.000001 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.006240 0.005974 -3.161587 -0.628693 -0.002621 0.039006 0.000006 -0.000000 0.000000 0.000005 -0.000006 0.000011 -0.000000 0.000000 -0.000000 0.000006 -0.000005 0.000013 -0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850769 4.112264 -0.973260 -0.006307 0.059909 3.686766 0.012162 0.574211 0.000008 -0.000013 0.000024 -0.000000 -0.000000 -0.000000 0.000008 -0.000013 0.000026 -0.000001 -0.000003 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.033319 -0.286634 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227363 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 -44.855372 4.621464 -8.041348 67.978311 -48.309720 -41.015088 -0.000002 -52.862714 0.000003 28.141013 11.963127 19.913352 0.000000 -0.000002 0.000002 0.000004 0.000001 -0.000001 -0.000001 0.000001 0.000001 -0.000001 -0.000000 -0.000001 -16.950617 14.146691 4.260199 0.639118 14.152564 67.789382 0.000007 57.051730 -0.000016 -24.405359 -6.165396 59.719028 0.000003 -0.000000 -0.000001 0.000002 0.000003 0.000001 -0.000001 -0.000000 0.000002 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.598765 -0.002487 0.037156 0.000004 0.000000 0.000000 0.000006 -0.000006 0.000011 0.000000 0.000000 0.000000 0.000007 -0.000006 0.000011 -0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.926929 -0.005983 0.057055 3.686768 0.012160 0.574210 0.000008 -0.000013 0.000025 -0.000000 0.000001 -0.000001 0.000006 -0.000013 0.000024 -0.000001 -0.000004 -0.000001 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.031719 -0.272877 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073429 -0.490356 16.227362 -0.000003 -0.000001 25.491246 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -44.855382 4.621465 -8.033061 67.953771 -48.328930 -41.037931 0.000006 -52.829283 0.000001 28.098572 11.949704 19.927219 -0.000001 -0.000002 0.000000 0.000002 0.000001 0.000002 0.000004 -0.000001 -0.000001 -0.000002 -0.000001 -0.000000 -16.989486 14.143883 4.269699 0.653451 14.246123 67.693431 0.000011 57.138016 -0.000008 -24.452057 -6.244162 59.256850 0.000001 0.000000 -0.000000 0.000002 0.000002 -0.000001 0.000001 -0.000000 0.000004 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.568838 -0.002353 0.035306 0.000004 -0.000001 0.000002 0.000009 -0.000007 0.000013 -0.000000 -0.000000 -0.000000 0.000007 -0.000006 0.000014 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -0.880599 -0.005662 0.054200 3.686764 0.012163 0.574207 0.000012 -0.000015 0.000028 0.000000 -0.000000 0.000000 0.000012 -0.000014 0.000027 -0.000002 -0.000002 -0.000000 0.000000 0.000003 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.030122 -0.259134 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -44.855372 4.621464 -8.008944 67.882300 -48.384777 -41.104488 -0.000001 -52.732028 0.000003 27.975147 11.910584 19.967466 -0.000000 -0.000000 0.000001 0.000002 0.000001 0.000000 -0.000002 0.000000 0.000001 0.000003 -0.000000 0.000001 -17.102560 14.135670 4.297321 0.695948 14.518073 67.413817 0.000011 57.389053 -0.000014 -24.587882 -6.465326 57.946259 0.000003 -0.000003 0.000001 -0.000001 0.000001 -0.000001 -0.000001 -0.000001 0.000003 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -0.538977 -0.002221 0.033461 0.000005 0.000001 -0.000001 0.000005 -0.000005 0.000010 0.000000 -0.000000 0.000000 0.000004 -0.000005 0.000012 0.000000 -0.000001 0.000001 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -0.834372 -0.005346 0.051352 3.686767 0.012162 0.574213 0.000011 -0.000013 0.000026 -0.000001 -0.000001 -0.000000 0.000008 -0.000013 0.000022 -0.000001 -0.000003 -0.000000 0.000000 0.000002 -0.000099 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
0.000000 1.067000 0.028530 -0.245436 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073430 -0.490356 16.227358 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 -44.855382 4.621464 -7.970139 67.766897 -48.474563 -41.211982 0.000001 -52.575490 0.000002 27.776556 11.847440 20.032069 0.000001 -0.000000 0.000000 0.000002 0.000000 -0.000003 0.000001 0.000001 0.000001 -0.000004 0.000000 0.000000 -17.284533 14.122337 4.341743 0.767089 14.955394 66.962095 0.000016 57.793359 -0.000016 -24.810201 -6.804362 55.897390 0.000002 -0.000000 0.000001 0.000005 0.000002 0.000003 -0.000000 0.000000 0.000002 -0.000001 -0.000001 -0.000000 0.000001 0.000000 0.000000 0.000002 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.509249 -0.002090 0.031624 0.000003 -0.000000 -0.000001 0.000006 -0.000008 0.000011 0.000000 -0.000000 0.000000 0.000004 -0.000008 0.000012 0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.788351 -0.005031 0.048516 3.686767 0.012162 0.574211 0.000007 -0.000013 0.000026 -0.000000 0.000002 -0.000000 0.000005 -0.000015 0.000026 -0.000001 -0.000005 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.026946 -0.231812 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469519 -0.073429 -0.490356 16.227355 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000001 0.000000 0.000000 -44.855369 4.621464 -7.917768 67.610403 -48.595485 -41.357796 -0.000003 -52.364216 0.000001 27.508679 11.761866 20.118903 -0.000001 0.000005 -0.000001 0.000004 0.000004 -0.000001 -0.000004 0.000001 0.000001 -0.000004 0.000000 -0.000001 -17.530121 14.104125 4.401628 0.868696 15.545079 66.348929 0.000013 58.339460 -0.000018 -25.118726 -7.234591 53.219065 0.000002 0.000001 -0.000001 0.000005 -0.000000 -0.000002 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -0.479721 -0.001961 0.029798 0.000005 -0.000001 0.000002 0.000009 -0.000007 0.000013 0.000000 -0.000000 0.000000 0.000007 -0.000008 0.000014 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -0.742639 -0.004721 0.045698 3.686765 0.012162 0.574213 0.000009 -0.000014 0.000025 0.000000 0.000000 -0.000001 0.000009 -0.000013 0.000025 -0.000001 -0.000003 -0.000001 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.025374 -0.218291 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073428 -0.490356 16.227356 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -44.855375 4.621464 -7.852962 67.415593 -48.744786 -41.539438 0.000006 -52.102729 0.000001 27.177430 11.655390 20.225773 0.000001 -0.000000 0.000000 -0.000001 0.000001 0.000001 0.000002 -0.000001 0.000001 0.000000 0.000000 -0.000000 -17.834035 14.081249 4.475629 1.003568 16.274029 65.584433 0.000011 59.015963 -0.000017 -25.512534 -7.727597 50.022827 -0.000001 0.000000 0.000001 0.000003 0.000000 0.000000 0.000001 -0.000002 0.000002 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.450460 -0.001834 0.027990 0.000000 0.000001 -0.000001 0.000011 -0.000008 0.000013 -0.000000 0.000000 -0.000000 0.000009 -0.000009 0.000014 0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.697339 -0.004415 0.042905 3.686766 0.012164 0.574210 0.000016 -0.000012 0.000026 -0.000000 -0.000001 -0.000000 0.000015 -0.000013 0.000027 -0.000001 -0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.023818 -0.204904 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469514 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000001 -0.000000 0.000000 -44.855379 4.621464 -7.776851 67.185101 -48.919608 -41.754446 0.000004 -51.795568 -0.000001 26.788697 11.529535 20.350473 -0.000001 -0.000001 0.000002 0.000002 0.000004 -0.000002 0.000001 -0.000002 -0.000001 -0.000000 -0.000000 0.000000 -18.190966 14.053887 4.562385 1.175196 17.128905 64.678148 0.000005 59.811488 -0.000018 -25.987541 -8.254167 46.425848 -0.000001 0.000002 0.000003 0.000004 0.000001 0.000001 -0.000001 -0.000002 0.000002 -0.000000 -0.000001 -0.000001 0.000002 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.421529 -0.001710 0.026201 -0.000001 -0.000002 0.000002 0.000010 -0.000008 0.000012 -0.000000 0.000000 -0.000000 0.000008 -0.000007 0.000012 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -0.652553 -0.004115 0.040146 3.686768 0.012164 0.574211 0.000016 -0.000014 0.000027 -0.000000 0.000000 0.000000 0.000014 -0.000015 0.000026 -0.000001 -0.000003 -0.000000 0.000000 0.000003 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.022281 -0.191679 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073429 -0.490356 16.227358 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.855382 4.621465 -7.690567 66.921592 -49.117137 -42.000435 0.000002 -51.447297 0.000001 26.348394 11.385807 20.490766 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.000000 0.000001 0.000000 0.000000 -0.000001 -18.595593 14.022222 4.660535 1.387449 18.096062 63.639379 0.000010 60.714590 -0.000021 -26.534595 -8.785620 42.552143 -0.000000 0.000000 -0.000001 0.000004 0.000002 -0.000003 0.000002 0.000000 -0.000002 -0.000000 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.392999 -0.001588 0.024438 0.000002 -0.000000 0.000000 0.000005 -0.000008 0.000013 0.000000 0.000000 0.000000 0.000005 -0.000008 0.000013 0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -0.608386 -0.003823 0.037422 3.686769 0.012162 0.574211 0.000010 -0.000012 0.000022 0.000001 0.000001 -0.000000 0.000010 -0.000012 0.000025 -0.000001 -0.000003 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.020766 -0.178646 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073430 -0.490356 16.227362 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -180.000005 -0.000044 0.000003 -0.000003 0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -44.855379 4.621464 -7.595237 66.627689 -49.334521 -42.274991 0.000005 -51.062446 0.000003 25.862446 11.225739 20.644411 0.000001 0.000000 -0.000000 0.000002 0.000003 0.000000 0.000003 0.000001 0.000001 0.000002 -0.000000 -0.000001 -19.042629 13.986452 4.768716 1.644309 19.161447 62.477175 0.000017 61.713723 -0.000023 -27.138508 -9.295770 38.532263 -0.000002 -0.000003 0.000001 -0.000000 0.000002 -0.000003 0.000002 0.000000 -0.000002 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.006240 0.005974 -3.161587 -0.364934 -0.001469 0.022702 0.000003 0.000001 -0.000001 0.000005 -0.000006 0.000013 0.000000 -0.000000 -0.000000 0.000003 -0.000006 0.000013 0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000136 0.844156 8.850770 4.112264 -0.564941 -0.003536 0.034745 3.686769 0.012163 0.574211 0.000014 -0.000015 0.000027 0.000000 0.000001 0.000000 0.000014 -0.000015 0.000029 -0.000002 -0.000002 0.000001 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.019277 -0.165836 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227356 -0.000002 -0.000001 25.491248 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -44.855375 4.621465 -7.491996 66.306083 -49.568933 -42.575708 0.000002 -50.645556 0.000001 25.336766 11.050884 20.809208 0.000000 -0.000000 0.000003 0.000000 0.000001 0.000000 0.000001 0.000001 0.000000 -0.000000 -0.000000 -0.000001 -19.526722 13.946776 4.885556 1.949592 20.310573 61.200578 0.000027 62.797299 -0.000028 -27.778092 -9.762797 34.501403 -0.000000 0.000003 0.000003 -0.000002 0.000000 0.000001 0.000005 0.000001 -0.000002 -0.000000 -0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.337403 -0.001353 0.021000 0.000002 -0.000001 0.000000 0.000007 -0.000005 0.000012 -0.000000 -0.000000 -0.000000 0.000005 -0.000006 0.000013 -0.000000 -0.000001 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850771 4.112264 -0.522319 -0.003257 0.032116 3.686770 0.012161 0.574212 0.000011 -0.000013 0.000024 -0.000000 -0.000002 -0.000000 0.000011 -0.000013 0.000022 -0.000002 -0.000004 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.017817 -0.153277 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073428 -0.490356 16.227360 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -44.855382 4.621464 -7.381968 65.959519 -49.817549 -42.900029 0.000001 -50.201197 0.000003 24.777283 10.862857 20.982975 -0.000000 -0.000001 0.000002 0.000002 0.000000 -0.000001 -0.000003 -0.000000 0.000001 -0.000003 -0.000000 0.000001 -20.042572 13.903433 5.009695 2.306691 21.528497 59.818742 0.000008 63.953541 -0.000027 -28.427148 -10.170822 30.596396 0.000002 0.000000 0.000006 0.000003 0.000000 -0.000003 0.000000 0.000002 -0.000003 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 -0.006240 0.005974 -3.161587 -0.310469 -0.001240 0.019336 -0.000000 -0.000000 0.000000 0.000007 -0.000008 0.000011 -0.000000 -0.000000 -0.000000 0.000007 -0.000009 0.000013 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850771 4.112264 -0.480622 -0.002987 0.029545 3.686765 0.012163 0.574211 0.000013 -0.000014 0.000028 0.000000 -0.000000 0.000000 0.000010 -0.000015 0.000026 -0.000001 -0.000002 0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.016390 -0.140998 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469519 -0.073430 -0.490356 16.227356 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 -44.855372 4.621464 -7.266289 65.590805 -50.077584 -43.245377 0.000002 -49.733944 -0.000001 24.189892 10.663326 21.163570 0.000001 0.000006 -0.000000 0.000005 0.000000 -0.000002 -0.000003 -0.000001 -0.000001 -0.000002 -0.000000 -0.000001 -20.584819 13.856688 5.139779 2.718307 22.799906 58.341188 0.000012 65.170598 -0.000023 -29.056243 -10.510706 26.952519 -0.000000 0.000003 -0.000000 -0.000000 -0.000002 0.000000 0.000003 0.000003 -0.000002 0.000001 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.006240 0.005974 -3.161587 -0.284200 -0.001131 0.017712 0.000000 -0.000002 0.000002 0.000002 -0.000005 0.000014 -0.000000 0.000000 -0.000001 0.000002 -0.000006 0.000012 -0.000000 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850771 4.112264 -0.439958 -0.002722 0.027038 3.686767 0.012163 0.574209 0.000009 -0.000014 0.000028 -0.000000 0.000000 0.000000 0.000008 -0.000014 0.000029 -0.000001 -0.000003 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.014999 -0.129031 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -44.855375 4.621465 -7.146089 65.202912 -50.346274 -43.609026 0.000003 -49.248345 0.000001 23.580492 10.454039 21.348958 -0.000001 0.000001 0.000002 -0.000001 -0.000002 0.000000 0.000003 -0.000001 0.000000 0.000001 -0.000000 -0.000001 -21.148137 13.806842 5.274453 3.186153 24.109176 56.777983 0.000017 66.436492 -0.000018 -29.634671 -10.779737 23.700714 -0.000002 0.000003 -0.000002 -0.000002 -0.000001 0.000000 0.000003 0.000001 0.000000 0.000001 -0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.258665 -0.001026 0.016131 -0.000000 0.000000 0.000001 0.000003 -0.000007 0.000012 -0.000000 -0.000000 -0.000000 0.000003 -0.000008 0.000015 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000136 0.844156 8.850769 4.112264 -0.400426 -0.002470 0.024600 3.686768 0.012161 0.574212 0.000008 -0.000011 0.000022 0.000000 0.000000 -0.000000 0.000008 -0.000012 0.000023 -0.000001 -0.000003 -0.000001 0.000000 0.000003 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.013647 -0.117403 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073429 -0.490356 16.227358 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -44.855375 4.621465 -7.022495 64.798988 -50.620905 -43.988095 0.000003 -48.748990 0.000001 22.954895 10.236789 21.537087 0.000001 0.000001 -0.000000 0.000003 0.000002 -0.000002 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 -21.727170 13.754242 5.412382 3.710738 25.440532 55.139861 0.000012 67.739098 -0.000023 -30.132069 -10.980404 20.966207 -0.000001 -0.000001 0.000002 0.000001 0.000000 0.000003 -0.000001 0.000001 -0.000003 0.000000 -0.000001 -0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.233926 -0.000924 0.014603 -0.000000 -0.000001 -0.000000 0.000005 -0.000006 0.000011 0.000000 -0.000000 0.000000 0.000003 -0.000006 0.000012 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -0.362130 -0.002228 0.022238 3.686769 0.012163 0.574210 0.000009 -0.000015 0.000024 0.000000 0.000001 -0.000000 0.000009 -0.000016 0.000025 -0.000001 -0.000003 0.000001 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.012338 -0.106146 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073430 -0.490356 16.227360 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 -0.000000 -0.000002 0.000000 0.000000 -44.855375 4.621464 -6.896638 64.382265 -50.898809 -44.379537 0.000005 -48.240451 0.000000 22.318963 10.013474 21.726075 -0.000001 0.000001 0.000000 0.000003 0.000002 -0.000002 0.000001 -0.000003 -0.000001 0.000001 0.000000 -0.000000 -22.316590 13.699285 5.552247 4.291062 26.778211 53.438594 0.000005 69.066217 -0.000032 -30.519666 -11.118243 18.868749 0.000001 -0.000002 -0.000001 -0.000002 -0.000002 -0.000001 -0.000000 0.000005 -0.000001 0.000001 -0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.210054 -0.000827 0.013127 0.000003 -0.000002 0.000002 0.000004 -0.000005 0.000009 0.000000 -0.000000 -0.000000 0.000004 -0.000006 0.000010 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850772 4.112264 -0.325174 -0.001991 0.019958 3.686767 0.012162 0.574209 0.000015 -0.000014 0.000028 0.000001 0.000000 -0.000000 0.000014 -0.000014 0.000026 -0.000001 -0.000004 -0.000001 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.011076 -0.095287 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469514 -0.073429 -0.490356 16.227360 -0.000002 -0.000001 25.491238 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -44.855372 4.621464 -6.769649 63.956184 -51.177361 -44.780144 0.000004 -47.727340 0.000001 21.678483 9.786064 21.914081 -0.000000 0.000000 -0.000001 0.000003 0.000001 -0.000001 0.000001 0.000001 0.000000 -0.000001 0.000000 0.000000 -22.911047 13.642415 5.692744 4.924403 28.106691 51.687050 0.000023 70.405638 -0.000040 -30.770552 -11.199154 17.524626 -0.000001 -0.000001 -0.000001 -0.000003 0.000000 -0.000002 0.000003 0.000001 -0.000004 0.000001 0.000001 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -0.187113 -0.000734 0.011708 0.000002 -0.000002 0.000002 0.000009 -0.000008 0.000013 0.000000 0.000000 -0.000000 0.000008 -0.000008 0.000014 -0.000000 -0.000001 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850771 4.112264 -0.289659 -0.001769 0.017768 3.686769 0.012162 0.574213 0.000012 -0.000015 0.000026 0.000000 0.000002 -0.000000 0.000011 -0.000016 0.000025 -0.000001 -0.000004 0.000000 0.000000 0.000001 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.009864 -0.084858 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227360 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000002 -0.000000 0.000000 -44.855372 4.621464 -6.642664 63.524407 -51.454018 -45.186479 0.000006 -47.214232 0.000001 21.039189 9.556601 22.099379 -0.000002 -0.000003 0.000000 0.000002 0.000000 0.000000 0.000002 -0.000001 -0.000001 0.000002 0.000000 -0.000000 -23.505220 13.584142 5.832594 5.606081 29.410873 49.899538 0.000030 71.745072 -0.000029 -30.859553 -11.226326 17.050184 0.000002 0.000002 0.000008 0.000001 -0.000000 -0.000001 -0.000001 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.165169 -0.000646 0.010351 0.000003 0.000000 -0.000001 0.000007 -0.000008 0.000010 0.000000 0.000000 -0.000000 0.000005 -0.000008 0.000012 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850771 4.112264 -0.255689 -0.001555 0.015672 3.686767 0.012164 0.574211 0.000012 -0.000013 0.000027 0.000000 0.000001 -0.000001 0.000011 -0.000013 0.000027 -0.000001 -0.000002 0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.008705 -0.074887 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227362 -0.000002 -0.000001 25.491238 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000003 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000001 -0.000000 -0.000000 -44.855382 4.621464 -6.516806 63.090765 -51.726317 -45.594979 0.000001 -46.705680 0.000000 20.406807 9.327200 22.280311 0.000001 -0.000001 -0.000000 0.000001 0.000000 0.000000 0.000001 -0.000002 -0.000001 -0.000001 0.000001 -0.000000 -24.093777 13.524993 5.970535 6.329620 30.676729 48.091765 0.000019 73.072198 -0.000037 -30.744054 -11.190907 17.666141 0.000001 0.000001 -0.000001 -0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000001 0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000002 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.144290 -0.000562 0.009061 -0.000000 -0.000000 0.000000 0.000007 -0.000006 0.000013 -0.000000 -0.000000 -0.000000 0.000008 -0.000006 0.000014 0.000000 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.223367 -0.001356 0.013678 3.686768 0.012164 0.574211 0.000008 -0.000014 0.000024 0.000000 -0.000000 -0.000000 0.000008 -0.000014 0.000024 -0.000001 -0.000004 -0.000000 0.000000 0.000001 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.007603 -0.065404 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073428 -0.490357 16.227356 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000003 0.000000 -0.000000 -44.855379 4.621465 -6.393213 62.659315 -51.991800 -46.001730 0.000007 -46.206346 0.000002 19.786981 9.100046 22.455350 0.000000 0.000000 -0.000001 -0.000001 0.000001 -0.000001 0.000003 -0.000000 0.000000 0.000001 0.000000 0.000001 -24.671413 13.465581 6.105338 7.087656 31.892284 46.280392 0.000027 74.374804 -0.000041 -30.421731 -11.084905 19.396206 0.000001 0.000002 0.000003 -0.000001 -0.000001 -0.000001 -0.000002 0.000002 -0.000001 0.000002 -0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.124541 -0.000483 0.007840 0.000002 -0.000000 0.000000 0.000009 -0.000007 0.000014 0.000000 0.000000 -0.000000 0.000007 -0.000007 0.000015 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.192796 -0.001167 0.011792 3.686765 0.012162 0.574213 0.000012 -0.000013 0.000028 0.000000 0.000001 -0.000000 0.000013 -0.000013 0.000028 -0.000001 -0.000002 -0.000001 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.006561 -0.056439 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073428 -0.490357 16.227358 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000001 0.000000 0.000000 -44.855375 4.621465 -6.273011 62.234368 -52.248167 -46.402758 0.000001 -45.720747 0.000001 19.185337 8.877395 22.623046 0.000002 -0.000000 0.000004 0.000000 0.000001 -0.000002 -0.000003 0.000001 0.000001 -0.000003 0.000000 -0.000000 -25.232841 13.406543 6.235792 7.871102 33.046842 44.483516 0.000019 75.640677 -0.000037 -29.930695 -10.902462 22.067011 0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000004 -0.000003 -0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.105991 -0.000410 0.006692 0.000003 -0.000001 0.000000 0.000005 -0.000007 0.000011 0.000000 -0.000000 0.000000 0.000004 -0.000008 0.000013 0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -0.164079 -0.000989 0.010020 3.686765 0.012160 0.574211 0.000013 -0.000012 0.000028 0.000000 0.000001 -0.000001 0.000013 -0.000014 0.000027 -0.000001 -0.000004 -0.000000 -0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.005582 -0.048021 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469518 -0.073428 -0.490356 16.227356 -0.000002 -0.000001 25.491248 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 0.000003 -0.000000 -0.000000 0.000003 -0.000000 -0.000000 0.000003 -0.000000 -0.000000 0.000001 0.000000 0.000000 -44.855372 4.621466 -6.157332 61.820315 -52.493115 -46.793804 0.000001 -45.253487 0.000000 18.607425 8.661536 22.782062 0.000004 0.000001 0.000001 0.000004 0.000002 -0.000001 0.000001 -0.000000 -0.000000 -0.000003 0.000000 -0.000000 -25.772790 13.348567 6.360721 8.668906 34.130879 42.720672 0.000054 76.857742 -0.000030 -29.312146 -10.634634 25.503445 0.000001 -0.000000 0.000001 -0.000003 -0.000001 -0.000001 0.000001 -0.000001 0.000003 0.000001 -0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.088705 -0.000342 0.005623 0.000000 -0.000000 0.000000 0.000010 -0.000007 0.000013 0.000000 -0.000000 -0.000000 0.000008 -0.000008 0.000013 -0.000000 -0.000001 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.137319 -0.000827 0.008370 3.686765 0.012162 0.574212 0.000014 -0.000015 0.000027 0.000000 0.000002 -0.000000 0.000013 -0.000014 0.000027 -0.000001 -0.000003 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.004671 -0.040180 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469519 -0.073430 -0.490356 16.227363 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.855382 4.621465 -6.047306 61.421828 -52.724453 -47.170424 0.000004 -44.809125 0.000000 18.058793 8.454832 22.931138 0.000001 -0.000002 0.000001 0.000002 -0.000003 0.000001 0.000002 -0.000002 -0.000000 0.000000 -0.000000 -0.000000 -26.286009 13.292376 6.478963 9.468131 35.135982 41.012916 0.000027 78.013963 -0.000037 -28.610269 -10.275119 29.522827 0.000001 0.000000 0.000002 0.000002 0.000000 0.000000 -0.000000 -0.000001 0.000002 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.006240 0.005974 -3.161587 -0.072748 -0.000279 0.004636 0.000000 -0.000001 -0.000002 0.000009 -0.000009 0.000012 0.000000 0.000000 -0.000000 0.000009 -0.000009 0.000015 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 -0.112619 -0.000677 0.006845 3.686765 0.012162 0.574210 0.000012 -0.000016 0.000024 -0.000000 0.000001 -0.000000 0.000009 -0.000017 0.000024 -0.000001 -0.000002 0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.003830 -0.032945 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469515 -0.073429 -0.490356 16.227363 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 0.000001 0.000000 0.000000 -44.855382 4.621466 -5.944064 61.043737 -52.940048 -47.528039 0.000004 -44.392248 0.000002 17.544898 8.259656 23.069066 0.000001 0.000000 0.000003 0.000002 0.000000 -0.000001 0.000003 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -26.767247 13.238725 6.589392 10.254224 36.054991 39.382587 0.000034 79.097538 -0.000064 -27.870891 -9.824980 33.932660 -0.000001 -0.000002 0.000001 -0.000002 -0.000001 0.000001 -0.000000 -0.000004 -0.000002 0.000000 -0.000001 -0.000000 0.000002 0.000001 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000001 -0.000000 0.000002 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -0.058190 -0.000222 0.003737 0.000002 -0.000001 0.000000 0.000008 -0.000006 0.000012 0.000000 0.000000 -0.000000 0.000007 -0.000007 0.000012 -0.000000 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850771 4.112264 -0.090081 -0.000539 0.005454 3.686765 0.012162 0.574213 0.000010 -0.000015 0.000026 -0.000001 0.000001 -0.000000 0.000011 -0.000014 0.000026 -0.000002 -0.000004 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.003062 -0.026346 0.000000 0.000000 0.664365 -0.003829 -0.048461 12.469521 -0.073429 -0.490356 16.227355 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -44.855375 4.621466 -5.848735 60.691005 -53.137827 -47.861885 0.000003 -44.007401 0.000001 17.071216 8.078429 23.194759 -0.000001 -0.000003 -0.000002 -0.000001 -0.000001 0.000001 0.000001 -0.000000 -0.000000 0.000003 -0.000000 0.000000 -27.211294 13.188398 6.690895 11.011213 36.881854 37.853124 0.000052 80.096693 -0.000065 -27.138517 -9.295774 38.532256 0.000001 0.000000 0.000000 -0.000001 -0.000002 0.000000 -0.000001 -0.000002 -0.000002 0.000001 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.045096 -0.000171 0.002926 0.000002 -0.000001 0.000002 0.000004 -0.000005 0.000012 0.000000 0.000000 -0.000000 0.000000 -0.000006 0.000013 0.000000 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850771 4.112264 -0.069809 -0.000417 0.004203 3.686770 0.012164 0.574209 0.000014 -0.000014 0.000028 -0.000000 -0.000000 -0.000000 0.000013 -0.000016 0.000027 -0.000001 -0.000001 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.002373 -0.020413 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469521 -0.073430 -0.490356 16.227355 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.855375 4.621464 -5.762447 60.368695 -53.315743 -48.167105 -0.000001 -43.659109 0.000001 16.643151 7.913573 23.307139 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 -0.000001 0.000002 0.000000 0.000001 -0.000003 0.000000 -0.000000 -27.612959 13.142198 6.782376 11.722125 37.611557 36.448830 0.000063 80.999794 -0.000078 -26.452541 -8.710431 43.117581 0.000000 0.000000 -0.000000 -0.000002 -0.000005 -0.000003 0.000001 0.000000 -0.000001 0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.033530 -0.000127 0.002211 0.000004 -0.000001 0.000000 0.000009 -0.000007 0.000013 0.000000 0.000000 -0.000000 0.000009 -0.000007 0.000013 -0.000000 -0.000001 -0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.051906 -0.000308 0.003099 3.686769 0.012163 0.574211 0.000010 -0.000015 0.000025 0.000000 -0.000000 0.000000 0.000007 -0.000014 0.000022 -0.000000 -0.000003 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.001764 -0.015174 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469517 -0.073430 -0.490356 16.227358 -0.000002 -0.000001 25.491241 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.855375 4.621465 -5.686339 60.081998 -53.471816 -48.438773 -0.000002 -43.351969 0.000001 16.266094 7.767516 23.405146 0.000000 -0.000003 0.000003 -0.000001 0.000003 0.000000 -0.000001 0.000000 0.000000 -0.000004 0.000000 0.000001 -27.967043 13.100941 6.862761 12.369369 38.239927 35.194472 0.000045 81.795299 -0.000091 -25.843967 -8.101989 47.487351 -0.000001 -0.000002 0.000001 -0.000003 0.000001 0.000002 -0.000000 0.000000 -0.000002 0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.023562 -0.000088 0.001594 0.000003 -0.000000 0.000000 0.000004 -0.000007 0.000013 0.000000 -0.000000 0.000000 0.000002 -0.000007 0.000011 -0.000000 -0.000001 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850769 4.112264 -0.036475 -0.000216 0.002147 3.686766 0.012163 0.574209 0.000011 -0.000011 0.000025 -0.000000 -0.000000 -0.000000 0.000010 -0.000011 0.000023 -0.000001 -0.000002 -0.000001 0.000000 0.000001 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 0.001239 -0.010661 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469519 -0.073429 -0.490356 16.227358 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000002 -0.000000 0.000000 -44.855375 4.621465 -5.621532 59.836098 -53.604045 -48.671870 -0.000001 -43.090475 0.000001 15.945437 7.642685 23.487786 -0.000001 -0.000004 0.000000 0.000001 0.000001 -0.000001 -0.000000 0.000000 0.000001 0.000001 -0.000000 0.000000 -28.268374 13.065438 6.930973 12.935170 38.763260 34.114985 0.000075 82.471816 -0.000113 -25.333481 -7.510489 51.448694 0.000001 -0.000000 0.000000 -0.000001 -0.000002 -0.000002 -0.000000 0.000000 -0.000004 -0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.006240 0.005974 -3.161587 -0.015258 -0.000056 0.001081 0.000005 -0.000002 0.000004 0.000006 -0.000006 0.000013 -0.000000 -0.000000 -0.000000 0.000002 -0.000005 0.000011 0.000000 0.000000 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850769 4.112264 -0.023619 -0.000140 0.001353 3.686768 0.012161 0.574212 0.000009 -0.000016 0.000027 -0.000000 0.000001 -0.000000 0.000010 -0.000016 0.000026 -0.000001 -0.000003 0.000000 -0.000000 0.000001 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.000802 -0.006902 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227360 -0.000002 -0.000001 25.491239 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 0.000000 -0.000000 -44.855382 4.621464 -5.569160 59.636192 -53.710453 -48.861476 0.000001 -42.879193 0.000001 15.686590 7.541500 23.554008 0.000000 -0.000000 -0.000002 0.000002 -0.000002 0.000000 -0.000000 -0.000001 0.000000 -0.000001 0.000000 -0.000000 -28.511783 13.036501 6.985937 13.402059 39.178037 33.235089 0.000060 83.017944 -0.000108 -24.931878 -6.979204 54.820208 -0.000000 -0.000003 0.000000 0.000003 -0.000002 0.000000 -0.000001 -0.000000 -0.000003 0.000001 0.000001 -0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.006240 0.005974 -3.161587 -0.008682 -0.000030 0.000674 -0.000000 -0.000002 0.000002 0.000004 -0.000008 0.000010 -0.000000 -0.000000 -0.000000 0.000002 -0.000006 0.000009 -0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850769 4.112264 -0.013440 -0.000076 0.000725 3.686767 0.012166 0.574209 0.000011 -0.000011 0.000025 -0.000000 0.000000 -0.000000 0.000013 -0.000013 0.000027 -0.000001 -0.000003 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 0.000456 -0.003927 0.000000 0.000000 0.664367 -0.003829 -0.048461 12.469516 -0.073428 -0.490356 16.227360 -0.000002 -0.000001 25.491243 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.855382 4.621466 -5.530355 59.487335 -53.789055 -49.002670 0.000002 -42.722669 0.000001 15.494933 7.466356 23.602782 0.000002 -0.000002 0.000000 0.000001 0.000000 -0.000001 0.000001 -0.000000 0.000000 0.000001 0.000001 -0.000000 -28.692078 13.014914 7.026574 13.753393 39.480519 32.578858 0.000048 83.422223 -0.000122 -24.642605 -6.551296 57.431441 0.000002 0.000003 0.000000 0.000001 -0.000004 -0.000000 0.000001 0.000002 -0.000005 0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.003903 -0.000012 0.000379 -0.000000 -0.000002 0.000002 0.000007 -0.000005 0.000011 0.000000 0.000000 -0.000000 0.000006 -0.000005 0.000012 -0.000000 -0.000001 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850770 4.112264 -0.006042 -0.000034 0.000268 3.686766 0.012162 0.574211 0.000013 -0.000015 0.000027 0.000000 -0.000001 0.000000 0.000010 -0.000014 0.000026 -0.000000 -0.000005 -0.000001 0.000000 0.000001 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.000205 -0.001765 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227358 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -44.855382 4.621465 -5.506240 59.394546 -53.837778 -49.090718 0.000002 -42.625401 0.000000 15.375920 7.419583 23.632939 -0.000000 0.000001 -0.000000 0.000003 -0.000002 0.000000 -0.000000 0.000001 -0.000000 -0.000003 0.000001 -0.000000 -28.804079 13.001436 7.051784 13.973835 39.666286 32.169412 0.000035 83.673294 -0.000104 -24.466108 -6.267585 59.118948 0.000001 0.000002 0.000002 -0.000001 -0.000001 -0.000002 -0.000000 0.000001 -0.000002 0.000001 -0.000000 -0.000000 0.000001 0.000001 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000001 -0.000000 0.000002 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.006240 0.005974 -3.161587 -0.000987 -0.000001 0.000199 0.000003 -0.000001 0.000000 0.000006 -0.000004 0.000011 0.000000 0.000000 -0.000000 0.000003 -0.000005 0.000013 -0.000001 -0.000001 0.000000 -0.000000 0.000003 0.000138 0.844156 8.850771 4.112264 -0.001528 -0.000005 -0.000010 3.686769 0.012163 0.574209 0.000011 -0.000011 0.000025 0.000000 0.000000 -0.000000 0.000009 -0.000012 0.000025 -0.000001 -0.000004 -0.000000 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 0.000052 -0.000446 0.000000 0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073429 -0.490356 16.227360 -0.000002 -0.000001 25.491244 -0.000003 -0.000001 -179.999991 -0.000044 0.000003 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000002 -0.000000 0.000000 -44.855379 4.621466 -5.497951 59.362602 -53.854501 -49.121027 0.000008 -42.591980 0.000002 15.335021 7.403497 23.643282 -0.000001 -0.000001 0.000003 0.000003 0.000002 0.000002 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -28.842571 12.996796 7.060443 14.049927 39.729704 32.028410 0.000090 83.759559 -0.000129 -24.405364 -6.165397 59.719042 0.000001 -0.000003 0.000003 -0.000000 -0.000002 0.000000 -0.000001 0.000001 -0.000003 0.000001 0.000001 0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 0.000000 0.000003 0.000138 0.000002 0.000000 0.000001 0.000008 -0.000007 0.000013 -0.000000 -0.000000 -0.000000 0.000006 -0.000007 0.000012 0.000000 0.000000 0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 0.000000 0.000001 -0.000100 3.686767 0.012163 0.574211 0.000010 -0.000014 0.000027 -0.000000 0.000000 -0.000001 0.000010 -0.000016 0.000028 -0.000001 -0.000003 -0.000001 0.000000 0.000001 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 -0.000000 0.664366 -0.003829 -0.048461 12.469516 -0.073428 -0.490356 16.227360 -0.000002 -0.000001 25.491246 -0.000003 -0.000001 -179.999991 -0.000044 0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -44.855375 4.621465 -5.497951 59.362608 -53.854501 -49.121033 0.000002 -42.591974 0.000002 15.335025 7.403498 23.643277 0.000001 -0.000000 -0.000002 0.000002 0.000000 -0.000001 -0.000002 -0.000000 0.000000 -0.000003 0.000000 0.000000 -28.842567 12.996796 7.060444 14.049929 39.729704 32.028410 0.000122 83.759552 -0.000145 -24.405357 -6.165397 59.719035 0.000004 -0.000003 0.000000 0.000001 -0.000002 -0.000001 -0.000000 -0.000001 -0.000004 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.006240 0.005974 -3.161587 -0.000000 0.000003 0.000138 0.000002 0.000000 -0.000002 0.000007 -0.000007 0.000014 -0.000000 -0.000000 -0.000000 0.000005 -0.000007 0.000014 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000137 0.844156 8.850770 4.112264 0.000000 0.000003 -0.000101 3.686766 0.012163 0.574209 0.000011 -0.000012 0.000024 -0.000001 -0.000001 -0.000000 0.000012 -0.000012 0.000025 -0.000000 -0.000004 -0.000001 0.000000 0.000003 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000

View File

@@ -0,0 +1,9 @@
## Couples
###### This space is for couple animations.
To prevent the collar from listing an animation in the pose menu, we can add a tilde in front of the pose name.
* i.e. ~hug.bvh
We will add further description in the readme here.

View File

@@ -0,0 +1,121 @@
HIERARCHY
ROOT hip
{
OFFSET 0.000000 0.000000 0.000000
CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
JOINT abdomen
{
OFFSET 0.000000 3.422050 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT chest
{
OFFSET 0.000000 8.486693 -0.684411
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT neck
{
OFFSET 0.000000 10.266162 -0.273764
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT head
{
OFFSET 0.000000 3.148285 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
End Site
{
OFFSET 0.000000 3.148289 0.000000
}
}
}
JOINT lCollar
{
OFFSET 3.422053 6.707223 -0.821293
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT lShldr
{
OFFSET 3.285171 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
JOINT lForeArm
{
OFFSET 10.129278 0.000000 0.000000
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT lHand
{
OFFSET 8.486692 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
End Site
{
OFFSET 4.106464 0.000000 0.000000
}
}
}
}
}
JOINT rCollar
{
OFFSET -3.558935 6.707223 -0.821293
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT rShldr
{
OFFSET -3.148289 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
JOINT rForeArm
{
OFFSET -10.266159 0.000000 0.000000
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT rHand
{
OFFSET -8.349810 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
End Site
{
OFFSET -4.106464 0.000000 0.000000
}
}
}
}
}
}
}
JOINT lThigh
{
OFFSET 5.338403 -1.642589 1.368821
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT lShin
{
OFFSET -2.053232 -20.121670 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT lFoot
{
OFFSET 0.000000 -19.300380 -1.231939
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -2.463878 4.653993
}
}
}
}
JOINT rThigh
{
OFFSET -5.338403 -1.642589 1.368821
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT rShin
{
OFFSET 2.053232 -20.121670 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT rFoot
{
OFFSET 0.000000 -19.300380 -1.231939
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -2.463878 4.653993
}
}
}
}
}
MOTION
Frames: 2
Frame Time: 0.033333
0.000000 43.528519 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 46.000000 9.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 20.000000 0.000000 0.000000 23.000000 -24.000000 0.000000 19.000000 -3.000000 0.000000 0.000000 0.000000 -55.000000 27.000000 -89.000000 -105.000000 -22.000000 -18.000000 0.000000 -19.000000 0.000000 0.000000 0.000000 0.000000 -58.000000 4.000000 83.000000 -51.000000 26.000000 5.000000 -1.000000 33.000000 0.000000 0.000000 -109.000000 29.000000 24.000000 102.000000 -13.000000 0.000000 39.000000 0.000000 -3.000000 -109.000000 -29.000000 -24.000000 112.000000 13.000000 0.000000 37.000000 0.000000 0.000000

View File

@@ -0,0 +1,121 @@
HIERARCHY
ROOT hip
{
OFFSET 0.000000 0.000000 0.000000
CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
JOINT abdomen
{
OFFSET 0.000000 3.422050 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT chest
{
OFFSET 0.000000 8.486693 -0.684411
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT neck
{
OFFSET 0.000000 10.266162 -0.273764
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT head
{
OFFSET 0.000000 3.148285 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
End Site
{
OFFSET 0.000000 3.148289 0.000000
}
}
}
JOINT lCollar
{
OFFSET 3.422053 6.707223 -0.821293
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT lShldr
{
OFFSET 3.285171 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
JOINT lForeArm
{
OFFSET 10.129278 0.000000 0.000000
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT lHand
{
OFFSET 8.486692 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
End Site
{
OFFSET 4.106464 0.000000 0.000000
}
}
}
}
}
JOINT rCollar
{
OFFSET -3.558935 6.707223 -0.821293
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT rShldr
{
OFFSET -3.148289 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
JOINT rForeArm
{
OFFSET -10.266159 0.000000 0.000000
CHANNELS 3 Yrotation Zrotation Xrotation
JOINT rHand
{
OFFSET -8.349810 0.000000 0.000000
CHANNELS 3 Zrotation Yrotation Xrotation
End Site
{
OFFSET -4.106464 0.000000 0.000000
}
}
}
}
}
}
}
JOINT lThigh
{
OFFSET 5.338403 -1.642589 1.368821
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT lShin
{
OFFSET -2.053232 -20.121670 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT lFoot
{
OFFSET 0.000000 -19.300380 -1.231939
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -2.463878 4.653993
}
}
}
}
JOINT rThigh
{
OFFSET -5.338403 -1.642589 1.368821
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT rShin
{
OFFSET 2.053232 -20.121670 0.000000
CHANNELS 3 Xrotation Zrotation Yrotation
JOINT rFoot
{
OFFSET 0.000000 -19.300380 -1.231939
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -2.463878 4.653993
}
}
}
}
}
MOTION
Frames: 2
Frame Time: 0.033333
0.000000 43.528519 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 43.528500 4.000000 0.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 5.000000 0.000000 0.000000 16.000000 -18.000000 -4.000000 10.000000 -9.000000 0.000000 -8.000000 0.000000 -4.000000 -55.000000 -22.000000 0.000000 -35.000000 -32.000000 5.000000 -12.000000 0.000000 0.000000 16.000000 0.000000 0.000000 56.000000 30.000000 -6.000000 33.000000 34.000000 0.000000 18.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 2.000000 0.000000 0.000000 -2.000000 0.000000 0.000000 -2.000000 0.000000 0.000000 3.000000 0.000000 0.000000 -2.000000 0.000000 0.000000

View File

@@ -0,0 +1,418 @@
HIERARCHY
ROOT mPelvis
{
OFFSET 0.000000 1.067000 -0.000000
CHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation
JOINT mTorso
{
OFFSET 0.000000 0.084000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mChest
{
OFFSET 0.000000 0.205000 -0.015000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mNeck
{
OFFSET 0.000000 0.251000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mHead
{
OFFSET 0.000000 0.076000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mSkull
{
OFFSET 0.000000 0.079000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeRight
{
OFFSET -0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeLeft
{
OFFSET 0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT HEAD
{
OFFSET 0.000000 0.070000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT NECK
{
OFFSET 0.000000 0.020000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarLeft
{
OFFSET 0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderLeft
{
OFFSET 0.079000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowLeft
{
OFFSET 0.248000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristLeft
{
OFFSET 0.205000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT L_HAND
{
OFFSET 0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_ARM
{
OFFSET 0.100000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_ARM
{
OFFSET 0.120000 0.010000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarRight
{
OFFSET -0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderRight
{
OFFSET -0.079000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowRight
{
OFFSET -0.248000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristRight
{
OFFSET -0.205000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT R_HAND
{
OFFSET -0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_ARM
{
OFFSET -0.100000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_ARM
{
OFFSET -0.120000 0.010000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT CHEST
{
OFFSET 0.000000 0.070000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LEFT_PEC
{
OFFSET 0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT RIGHT_PEC
{
OFFSET -0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT UPPER_BACK
{
OFFSET 0.000000 0.017253 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT BELLY
{
OFFSET 0.000000 0.040000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LOWER_BACK
{
OFFSET 0.000000 0.022848 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipRight
{
OFFSET -0.129000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeRight
{
OFFSET 0.049000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleRight
{
OFFSET -0.000000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootRight
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeRight
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_LEG
{
OFFSET 0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipLeft
{
OFFSET 0.127000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeLeft
{
OFFSET -0.046000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleLeft
{
OFFSET 0.001000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootLeft
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeLeft
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_LEG
{
OFFSET -0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT PELVIS
{
OFFSET -0.000000 -0.020000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT BUTT
{
OFFSET -0.000000 -0.100000 -0.060000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
MOTION
Frames: 48
Frame Time: 0.022222
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.555755 -0.057458 -84.096424 -0.000000 0.000000 0.000001 0.879869 -0.033829 -4.403510 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.541243 15.193717 82.081778 0.000002 0.000000 0.000001 1.046036 0.047842 5.237183 -0.000001 -0.000001 -0.000000 0.000001 0.000000 0.000001 -0.000001 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 0.008427 -0.000000 -0.000000 -0.005678 0.000030 0.000414 -0.007393 0.000012 0.000294 0.021107 0.000000 -0.000000 0.021748 -0.000000 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.089838 -0.026597 0.047130 -1.422731 -0.095361 -84.009469 -0.000000 -0.151013 0.000000 0.955644 -0.027660 -4.847438 0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.089838 0.026597 -0.047130 -2.077281 15.697655 82.069811 0.000002 0.144000 0.000000 1.345152 0.085586 6.841711 -0.000002 0.000000 0.000000 -0.000001 -0.000000 -0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.007207 -0.000719 0.000013 -0.002374 -0.000006 0.000283 -0.000003 0.010042 -0.000147 -0.000009 0.000018 -0.000031 0.000000 -0.000000 -0.000000 -0.000011 0.000018 -0.000031 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 -0.007186 0.000673 0.000016 -0.003317 0.000004 -0.000126 -0.000015 -0.011362 0.000169 0.000012 -0.000013 0.000022 -0.000000 0.000000 0.000000 0.000014 -0.000013 0.000021 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 0.033200 -0.000000 -0.000000 -0.022372 0.000119 0.001633 -0.029127 0.000047 0.001159 0.083159 0.000000 -0.000000 0.085685 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.354155 -0.105315 0.185619 -2.333501 -0.074524 -83.751124 -0.000000 -0.596417 -0.000000 1.004038 0.004144 -5.277350 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.354155 0.105316 -0.185619 -2.675920 16.102808 81.888880 -0.000000 0.568530 0.000000 1.591914 0.137118 8.384901 -0.000001 0.000002 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.028396 -0.002834 0.000051 -0.009353 -0.000033 0.000715 -0.000012 0.039570 -0.000580 -0.000015 0.000014 -0.000032 0.000000 -0.000000 -0.000000 -0.000015 0.000015 -0.000032 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 -0.028313 0.002652 0.000063 -0.013072 0.000009 -0.000205 -0.000032 -0.044766 0.000664 0.000005 -0.000014 0.000031 0.000000 0.000000 0.000000 0.000007 -0.000014 0.000029 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 0.073561 -0.000000 -0.000000 -0.049571 0.000263 0.003618 -0.064534 0.000100 0.002569 0.184262 0.000000 -0.000000 0.189859 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.785422 -0.235247 0.411013 -3.287497 -0.001804 -83.327037 0.000000 -1.326694 -0.000000 1.026472 0.060728 -5.693403 0.000000 -0.000002 -0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.785422 0.235248 -0.411013 -3.333698 16.416826 81.544980 -0.000000 1.263966 0.000000 1.787871 0.199658 9.867412 0.000001 0.000000 0.000001 0.000000 -0.000001 -0.000001 -0.000000 -0.000001 0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000002 0.000000 0.000001 -0.000002 0.000000 -0.062916 -0.006279 0.000112 -0.020722 -0.000077 0.001418 -0.000033 0.087671 -0.001276 -0.000008 0.000015 -0.000032 -0.000000 -0.000000 -0.000000 -0.000008 0.000015 -0.000032 -0.000002 0.000001 0.000000 -0.000000 0.000003 0.000136 -0.062731 0.005877 0.000143 -0.028962 0.000018 -0.000332 -0.000067 -0.099191 0.001473 0.000009 -0.000014 0.000029 0.000000 0.000000 0.000000 0.000010 -0.000014 0.000025 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 0.128749 -0.000000 -0.000000 -0.086759 0.000458 0.006332 -0.112950 0.000175 0.004497 0.322523 -0.000000 -0.000000 0.332321 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -1.376399 -0.416298 0.718708 -4.284526 0.115953 -82.742442 -0.000000 -2.334564 0.000001 1.024340 0.141185 -6.095727 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 -1.376399 0.416298 -0.718708 -4.048058 16.647222 81.043548 -0.000000 2.222504 0.000001 1.934752 0.270691 11.290067 -0.000002 -0.000002 0.000000 -0.000002 -0.000001 0.000000 0.000001 -0.000001 0.000001 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.110118 -0.010990 0.000192 -0.036269 -0.000137 0.002379 -0.000055 0.153447 -0.002239 -0.000010 0.000016 -0.000034 -0.000000 0.000000 -0.000000 -0.000008 0.000017 -0.000032 -0.000001 0.000001 -0.000000 -0.000000 0.000003 0.000136 -0.109794 0.010285 0.000255 -0.050690 0.000030 -0.000507 -0.000112 -0.173609 0.002575 0.000011 -0.000013 0.000027 -0.000000 0.000000 0.000000 0.000012 -0.000013 0.000025 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 0.198005 -0.000000 -0.000000 -0.133427 0.000700 0.009738 -0.173707 0.000266 0.006915 0.496052 0.000000 -0.000000 0.511125 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -2.120039 -0.649042 1.103929 -5.324623 0.271882 -82.002240 -0.000000 -3.614586 -0.000001 0.999011 0.244585 -6.484423 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -2.120040 0.649041 -1.103929 -4.817177 16.801364 80.389441 0.000000 3.437821 0.000000 2.034428 0.347941 12.653804 -0.000000 0.000001 0.000001 -0.000001 0.000001 0.000001 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.169352 -0.016902 0.000287 -0.055777 -0.000213 0.003586 -0.000070 0.235993 -0.003447 -0.000015 0.000019 -0.000032 -0.000000 -0.000000 -0.000000 -0.000017 0.000019 -0.000032 -0.000000 0.000001 0.000000 -0.000000 0.000003 0.000136 -0.168854 0.015818 0.000400 -0.077956 0.000045 -0.000725 -0.000171 -0.267002 0.003964 0.000006 -0.000011 0.000026 0.000000 -0.000000 0.000000 0.000008 -0.000012 0.000026 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 0.280570 -0.000000 -0.000000 -0.189062 0.000986 0.013799 -0.246140 0.000369 0.009799 0.702961 0.000000 -0.000000 0.724327 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -3.009401 -0.934578 1.561688 -6.407927 0.459068 -81.111099 -0.000000 -5.162768 -0.000001 0.951832 0.369934 -6.859585 0.000000 -0.000003 0.000000 -0.000000 -0.000002 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -3.009401 0.934579 -1.561688 -5.639788 16.886564 79.587222 -0.000003 4.904717 0.000001 2.088871 0.429389 13.959673 0.000001 0.000002 -0.000001 -0.000002 0.000000 0.000001 -0.000001 -0.000000 0.000002 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.239967 -0.023950 0.000393 -0.079034 -0.000304 0.005023 -0.000101 0.334396 -0.004880 -0.000010 0.000018 -0.000030 0.000000 0.000000 -0.000000 -0.000010 0.000017 -0.000030 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000136 -0.239262 0.022413 0.000582 -0.110462 0.000062 -0.000988 -0.000233 -0.378344 0.005618 0.000011 -0.000012 0.000025 0.000000 -0.000000 0.000000 0.000014 -0.000013 0.000024 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 0.375685 -0.000000 -0.000000 -0.253153 0.001311 0.018477 -0.329581 0.000485 0.013122 0.941365 -0.000000 -0.000000 0.969984 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -4.037551 -1.274402 2.086749 -7.534544 0.670527 -80.073750 0.000000 -6.976168 -0.000000 0.884119 0.516210 -7.221285 -0.000001 -0.000003 -0.000000 -0.000000 -0.000001 0.000001 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 -4.037552 1.274401 -2.086749 -6.515016 16.910094 78.641268 0.000001 6.618782 0.000001 2.100152 0.513241 15.208804 0.000001 -0.000004 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000002 0.000003 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.321316 -0.032069 0.000503 -0.105825 -0.000409 0.006680 -0.000128 0.447764 -0.006534 -0.000009 0.000017 -0.000029 0.000000 0.000000 -0.000000 -0.000011 0.000017 -0.000028 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000136 -0.320372 0.030011 0.000800 -0.147906 0.000083 -0.001288 -0.000304 -0.506613 0.007522 0.000011 -0.000012 0.000029 0.000000 0.000000 0.000000 0.000011 -0.000013 0.000027 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
0.000000 1.067000 -0.000000 0.482591 -0.000000 -0.000000 -0.325186 0.001668 0.023735 -0.423364 0.000609 0.016856 1.209377 -0.000000 -0.000000 1.246153 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -5.197485 -1.670252 2.673589 -8.704433 0.899195 -78.894907 -0.000000 -9.052487 -0.000001 0.797169 0.682357 -7.569586 0.000000 -0.000004 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -5.197487 1.670251 -2.673590 -7.442248 16.879255 77.555910 -0.000002 8.576032 -0.000001 2.070415 0.597935 16.402390 0.000002 0.000005 0.000000 0.000002 -0.000003 -0.000000 0.000002 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.412748 -0.041195 0.000613 -0.135936 -0.000529 0.008542 -0.000155 0.575184 -0.008396 -0.000007 0.000017 -0.000028 0.000000 -0.000000 -0.000000 -0.000007 0.000016 -0.000027 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000135 -0.411535 0.038550 0.001058 -0.189991 0.000107 -0.001626 -0.000372 -0.650785 0.009661 0.000006 -0.000013 0.000024 0.000000 -0.000000 -0.000000 0.000007 -0.000013 0.000024 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 0.600527 -0.000000 -0.000000 -0.404651 0.002056 0.029537 -0.526823 0.000737 0.020976 1.505108 -0.000000 -0.000000 1.550892 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -6.482052 -2.123981 3.316372 -9.917283 1.137934 -77.579590 -0.000001 -11.389651 -0.000003 0.692257 0.867292 -7.904545 0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000001 -0.000001 0.000001 -0.000001 -0.000000 -0.000000 0.000000 -6.482054 2.123980 -3.316372 -8.420958 16.801405 76.335506 0.000002 10.772556 -0.000003 2.001836 0.682122 17.541650 -0.000003 0.000006 -0.000001 0.000003 -0.000001 0.000002 0.000002 -0.000000 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000002 -0.000002 0.000000 0.000002 -0.000002 -0.000000 -0.513613 -0.051262 0.000718 -0.169152 -0.000662 0.010597 -0.000179 0.715756 -0.010450 -0.000007 0.000017 -0.000031 0.000000 0.000000 -0.000000 -0.000007 0.000016 -0.000029 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000137 -0.512103 0.047969 0.001358 -0.236416 0.000134 -0.001998 -0.000453 -0.809841 0.012020 0.000010 -0.000012 0.000024 -0.000000 0.000000 0.000000 0.000012 -0.000012 0.000022 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 0.728735 -0.000000 -0.000000 -0.491035 0.002468 0.035844 -0.639294 0.000872 0.025455 1.826671 -0.000000 -0.000000 1.882251 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -7.883876 -2.637414 4.008919 -11.172386 1.379562 -76.133093 -0.000001 -13.985348 -0.000002 0.570626 1.069890 -8.226213 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000000 -0.000000 -7.883879 2.637413 -4.008919 -9.450590 16.683987 74.984713 -0.000001 13.204133 -0.000001 1.896638 0.764643 18.627854 -0.000000 -0.000002 -0.000000 0.000001 0.000002 -0.000002 -0.000000 0.000002 -0.000002 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.623262 -0.062207 0.000812 -0.205261 -0.000807 0.012829 -0.000199 0.868572 -0.012676 -0.000009 0.000016 -0.000032 -0.000000 -0.000000 -0.000000 -0.000009 0.000016 -0.000032 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 -0.621430 0.058208 0.001704 -0.286884 0.000163 -0.002404 -0.000525 -0.982757 0.014588 0.000011 -0.000013 0.000026 0.000000 0.000000 -0.000000 0.000014 -0.000014 0.000024 -0.000001 -0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 0.866456 -0.000000 -0.000000 -0.583826 0.002900 0.042620 -0.760108 0.001005 0.030266 2.172170 -0.000000 -0.000000 2.238285 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -9.395320 -3.212200 4.744713 -12.468548 1.616886 -74.561248 0.000000 -16.836544 -0.000001 0.433510 1.289004 -8.534641 -0.000001 -0.000007 0.000001 -0.000001 0.000000 0.000001 0.000001 -0.000003 -0.000001 0.000000 0.000000 -0.000001 -9.395323 3.212201 -4.744713 -10.530413 16.534527 73.508449 -0.000002 15.865845 0.000001 1.757072 0.844508 19.662277 -0.000002 0.000003 0.000000 0.000003 -0.000003 0.000001 -0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.741044 -0.073963 0.000889 -0.244047 -0.000965 0.015228 -0.000213 1.032732 -0.015074 -0.000012 0.000014 -0.000027 0.000000 0.000000 -0.000000 -0.000012 0.000015 -0.000028 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000137 -0.738867 0.069206 0.002098 -0.341095 0.000194 -0.002839 -0.000596 -1.168507 0.017348 0.000010 -0.000015 0.000027 -0.000000 -0.000000 0.000000 0.000010 -0.000015 0.000027 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 1.012929 -0.000000 -0.000000 -0.682512 0.003347 0.049827 -0.888598 0.001135 0.035384 2.539713 -0.000001 -0.000000 2.617042 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -11.008448 -3.849682 5.516903 -13.803992 1.842781 -72.870469 -0.000001 -19.938973 -0.000004 0.282111 1.523457 -8.829893 -0.000001 -0.000003 0.000000 0.000001 0.000003 0.000001 0.000001 -0.000001 -0.000003 0.000001 0.000000 -0.000000 -11.008452 3.849681 -5.516904 -11.659388 16.360637 71.912166 -0.000003 18.751690 -0.000004 1.585391 0.920934 20.646222 -0.000001 -0.000001 -0.000000 0.000001 0.000002 -0.000001 -0.000000 0.000004 -0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.866311 -0.086467 0.000945 -0.285295 -0.001135 0.017777 -0.000224 1.207328 -0.017624 -0.000009 0.000016 -0.000027 0.000000 -0.000000 -0.000000 -0.000011 0.000016 -0.000027 -0.000002 0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.863766 0.080901 0.002540 -0.398747 0.000228 -0.003302 -0.000661 -1.366071 0.020281 0.000009 -0.000012 0.000026 0.000000 0.000000 -0.000000 0.000011 -0.000013 0.000024 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000099 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 1.167395 -0.000000 -0.000000 -0.786581 0.003805 0.057428 -1.024098 0.001260 0.040781 2.927399 -0.000001 -0.000001 3.016562 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -12.714996 -4.550743 6.318331 -15.176247 2.050260 -71.067831 0.000000 -23.286615 -0.000005 0.117613 1.772051 -9.112035 -0.000002 -0.000005 0.000000 -0.000001 0.000001 0.000001 0.000000 0.000000 -0.000002 -0.000001 -0.000000 0.000000 -12.715001 4.550741 -6.318331 -12.836052 16.169981 70.201818 -0.000002 21.854179 0.000000 1.383854 0.993257 21.580971 0.000002 0.000004 0.000000 -0.000001 0.000001 -0.000002 -0.000002 -0.000002 -0.000002 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.998412 -0.099653 0.000974 -0.328794 -0.001316 0.020468 -0.000227 1.391449 -0.020307 -0.000010 0.000017 -0.000033 0.000000 0.000000 -0.000000 -0.000010 0.000016 -0.000031 -0.000002 0.000000 -0.000000 -0.000000 0.000003 0.000137 -0.995479 0.093234 0.003035 -0.459544 0.000265 -0.003791 -0.000720 -1.574420 0.023371 0.000008 -0.000013 0.000025 -0.000000 0.000000 -0.000000 0.000009 -0.000013 0.000023 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 1.329093 -0.000000 -0.000000 -0.895519 0.004271 0.065386 -1.165941 0.001376 0.046431 3.333325 -0.000000 -0.000001 3.434888 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -14.506395 -5.315690 7.141578 -16.582104 2.232591 -69.161157 -0.000002 -26.871218 -0.000005 -0.058810 2.033562 -9.381133 0.000000 -0.000001 -0.000000 -0.000000 0.000001 0.000002 0.000000 0.000005 -0.000002 0.000001 -0.000001 -0.000000 -14.506401 5.315690 -7.141579 -14.058394 15.970208 68.384086 -0.000004 25.163971 -0.000002 1.154736 1.060970 22.467815 0.000004 0.000002 -0.000001 -0.000002 -0.000002 0.000000 -0.000003 -0.000003 -0.000001 -0.000001 -0.000001 0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -1.136696 -0.113456 0.000972 -0.374327 -0.001508 0.023282 -0.000218 1.584201 -0.023122 -0.000009 0.000016 -0.000031 -0.000000 0.000000 0.000000 -0.000011 0.000016 -0.000030 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000136 -1.133358 0.106143 0.003583 -0.523186 0.000304 -0.004302 -0.000763 -1.792534 0.026610 0.000008 -0.000012 0.000026 -0.000000 -0.000000 -0.000000 0.000009 -0.000012 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 1.497264 -0.000000 -0.000000 -1.008815 0.004738 0.073662 -1.313460 0.001484 0.052307 3.755589 -0.000000 -0.000001 3.870054 -0.000000 -0.000001 0.000003 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -16.373784 -6.144136 7.979042 -18.017587 2.383416 -67.159146 -0.000002 -30.681736 -0.000005 -0.246021 2.306751 -9.637280 -0.000002 -0.000003 -0.000000 -0.000003 -0.000001 -0.000001 0.000002 0.000006 -0.000002 -0.000000 0.000000 -0.000000 -16.373787 6.144136 -7.979045 -15.323791 15.768894 66.466381 0.000002 28.669538 -0.000001 0.900276 1.123704 23.308055 0.000001 0.000002 0.000000 0.000003 -0.000002 0.000000 0.000001 0.000001 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -1.280515 -0.127811 0.000935 -0.421682 -0.001710 0.026210 -0.000202 1.784667 -0.026048 -0.000009 0.000016 -0.000031 -0.000000 0.000000 -0.000000 -0.000009 0.000016 -0.000030 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 -1.276754 0.119567 0.004186 -0.589372 0.000344 -0.004833 -0.000804 -2.019384 0.029974 0.000004 -0.000012 0.000024 0.000000 -0.000000 -0.000000 0.000007 -0.000012 0.000023 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 1.671146 -0.000000 -0.000000 -1.125958 0.005204 0.082221 -1.465988 0.001578 0.058383 4.192276 -0.000001 -0.000001 4.320093 -0.000001 -0.000001 0.000001 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 -18.308027 -7.034893 8.823028 -19.477929 2.496885 -65.071281 -0.000001 -34.703928 -0.000009 -0.442879 2.590354 -9.880568 -0.000002 0.000000 -0.000000 -0.000001 -0.000001 -0.000001 0.000001 0.000006 -0.000005 0.000002 0.000000 -0.000002 -18.308030 7.034889 -8.823026 -16.628881 15.573405 64.456946 -0.000005 32.356874 -0.000001 0.622724 1.181192 24.102961 -0.000003 0.000005 0.000002 -0.000001 -0.000000 -0.000000 -0.000004 -0.000000 0.000001 -0.000002 -0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.429216 -0.142654 0.000859 -0.470642 -0.001921 0.029237 -0.000169 1.991947 -0.029075 -0.000014 0.000017 -0.000033 -0.000000 0.000000 -0.000000 -0.000013 0.000017 -0.000034 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000137 -1.425019 0.133445 0.004844 -0.657804 0.000386 -0.005384 -0.000829 -2.253945 0.033455 0.000009 -0.000012 0.000027 -0.000000 0.000000 0.000000 0.000008 -0.000012 0.000026 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 1.849977 -0.000000 -0.000000 -1.246433 0.005665 0.091024 -1.622857 0.001658 0.064632 4.641473 -0.000000 -0.000001 4.783028 -0.000001 -0.000001 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -20.299809 -7.985884 9.665810 -20.957599 2.567798 -62.907907 -0.000002 -38.920078 -0.000006 -0.648268 2.883091 -10.111111 -0.000000 -0.000001 -0.000001 -0.000002 -0.000001 -0.000001 0.000001 0.000001 -0.000001 -0.000000 -0.000001 0.000000 -20.299814 7.985884 -9.665810 -17.969557 15.390788 62.364880 -0.000001 36.209329 -0.000001 0.324313 1.233280 24.853790 -0.000002 0.000003 -0.000001 0.000000 -0.000000 -0.000001 -0.000003 0.000003 -0.000002 -0.000002 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -1.582149 -0.157919 0.000739 -0.520994 -0.002141 0.032349 -0.000129 2.205129 -0.032187 -0.000012 0.000016 -0.000030 0.000000 0.000000 -0.000000 -0.000012 0.000016 -0.000029 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000137 -1.577504 0.147716 0.005559 -0.728182 0.000432 -0.005948 -0.000842 -2.495192 0.037040 0.000004 -0.000013 0.000025 0.000000 0.000000 0.000000 0.000004 -0.000013 0.000024 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 2.032999 -0.000000 -0.000000 -1.369729 0.006118 0.100034 -1.783399 0.001724 0.071028 5.101262 -0.000000 -0.000001 5.256889 -0.000001 -0.000001 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -22.339647 -8.994127 10.499809 -22.450347 2.591753 -60.680145 -0.000001 -43.308741 -0.000004 -0.861093 3.183681 -10.329047 -0.000003 -0.000002 -0.000001 0.000004 -0.000001 -0.000000 0.000001 0.000001 0.000003 0.000003 -0.000001 -0.000001 -22.339653 8.994125 -10.499806 -19.340960 15.227652 60.200154 -0.000006 40.207534 -0.000004 0.007247 1.279902 25.561809 0.000000 0.000002 -0.000003 0.000001 0.000000 -0.000001 -0.000002 0.000001 -0.000001 -0.000001 -0.000001 0.000001 0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -1.738664 -0.173541 0.000576 -0.572525 -0.002370 0.035534 -0.000073 2.423308 -0.035373 -0.000016 0.000014 -0.000030 0.000000 0.000000 0.000000 -0.000016 0.000015 -0.000029 -0.000000 0.000000 0.000000 -0.000000 0.000003 0.000137 -1.733560 0.162319 0.006330 -0.800208 0.000478 -0.006526 -0.000833 -2.742095 0.040705 0.000009 -0.000012 0.000029 0.000000 -0.000000 -0.000000 0.000009 -0.000013 0.000030 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 2.219447 -0.000000 -0.000000 -1.495332 0.006560 0.109214 -1.946948 0.001770 0.077544 5.569724 -0.000000 -0.000001 5.739686 -0.000001 -0.000001 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -24.417991 -10.055667 11.317651 -23.949307 2.565259 -58.399804 -0.000002 -47.844765 -0.000006 -1.080263 3.490802 -10.534529 -0.000001 0.000001 -0.000001 0.000002 0.000000 0.000001 0.000000 -0.000002 0.000001 -0.000002 -0.000000 -0.000000 -24.418003 10.055666 -11.317651 -20.737409 15.089963 57.973532 -0.000006 44.329417 -0.000004 -0.326268 1.321081 26.228268 0.000002 0.000001 -0.000001 -0.000001 -0.000000 -0.000000 -0.000003 -0.000002 -0.000000 -0.000002 -0.000001 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -1.898109 -0.189454 0.000365 -0.625020 -0.002604 0.038778 -0.000005 2.645577 -0.038621 -0.000012 0.000016 -0.000033 0.000000 -0.000000 -0.000000 -0.000011 0.000016 -0.000033 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -1.892537 0.177193 0.007157 -0.873580 0.000526 -0.007115 -0.000812 -2.993626 0.044440 0.000011 -0.000014 0.000026 0.000000 -0.000000 -0.000000 0.000011 -0.000014 0.000025 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 2.408562 -0.000000 -0.000000 -1.622729 0.006987 0.118526 -2.112836 0.001800 0.084153 6.044930 -0.000001 -0.000001 6.229440 -0.000001 -0.000001 0.000001 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 -26.525294 -11.165635 12.112356 -25.447137 2.485872 -56.079268 -0.000010 -52.499645 -0.000012 -1.304689 3.803149 -10.727721 -0.000002 -0.000003 0.000001 0.000000 -0.000001 -0.000000 -0.000001 -0.000001 -0.000002 -0.000000 0.000001 -0.000002 -26.525306 11.165631 -12.112355 -22.152566 14.982978 55.696607 0.000001 48.550429 -0.000006 -0.674034 1.356911 26.854396 -0.000001 -0.000001 -0.000001 0.000001 -0.000001 0.000001 -0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -2.059834 -0.205595 0.000106 -0.678265 -0.002846 0.042068 0.000075 2.871023 -0.041913 -0.000013 0.000017 -0.000033 -0.000000 0.000000 0.000000 -0.000014 0.000017 -0.000033 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 -2.053788 0.192278 0.008037 -0.948001 0.000575 -0.007712 -0.000774 -3.248761 0.048232 0.000006 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000006 -0.000014 0.000022 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 2.599582 -0.000000 -0.000000 -1.751409 0.007397 0.127933 -2.280391 0.001809 0.090828 6.524960 -0.000001 -0.000001 6.724171 -0.000001 -0.000001 0.000003 0.000022 -179.999991 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 -28.652063 -12.318247 12.877398 -26.936157 2.352263 -53.731336 0.000007 -57.241773 -0.000010 -1.533317 4.119395 -10.908826 -0.000002 -0.000006 0.000003 0.000000 -0.000001 -0.000000 0.000003 0.000001 -0.000002 0.000001 0.000001 -0.000002 -28.652070 12.318244 -12.877400 -23.579468 14.911010 53.381603 0.000000 52.843917 -0.000006 -1.033910 1.387551 27.441421 -0.000001 0.000001 -0.000002 0.000000 0.000000 -0.000000 -0.000004 0.000003 0.000002 -0.000002 -0.000001 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -2.223187 -0.221898 -0.000202 -0.732044 -0.003094 0.045392 0.000174 3.098744 -0.045243 -0.000017 0.000016 -0.000030 0.000000 -0.000000 -0.000000 -0.000019 0.000016 -0.000029 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000136 -2.216663 0.207512 0.008969 -1.023170 0.000627 -0.008316 -0.000721 -3.506468 0.052063 0.000008 -0.000012 0.000025 0.000000 0.000000 -0.000000 0.000010 -0.000012 0.000023 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 2.791745 -0.000000 -0.000001 -1.880858 0.007789 0.137397 -2.448951 0.001800 0.097544 7.007887 -0.000001 -0.000001 7.221879 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 0.000000 0.000000 -30.788925 -13.506918 13.606866 -28.408517 2.164276 -51.369060 -0.000007 -62.037222 -0.000013 -1.765077 4.438200 -11.078055 -0.000002 0.000002 0.000001 -0.000001 0.000001 -0.000003 0.000002 -0.000001 -0.000001 0.000000 0.000002 -0.000000 -30.788925 13.506912 -13.606862 -25.010618 14.877410 51.041242 -0.000000 57.181582 -0.000009 -1.403709 1.413195 27.990551 0.000002 0.000001 0.000001 -0.000000 -0.000001 -0.000001 -0.000001 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -2.387517 -0.238297 -0.000559 -0.786146 -0.003345 0.048736 0.000286 3.327830 -0.048596 -0.000018 0.000016 -0.000032 -0.000000 0.000000 -0.000000 -0.000018 0.000017 -0.000030 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000138 -2.380512 0.222834 0.009951 -1.098789 0.000679 -0.008922 -0.000642 -3.765715 0.055915 0.000011 -0.000012 0.000028 0.000000 0.000000 -0.000000 0.000011 -0.000013 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 2.984289 -0.000000 -0.000001 -2.010566 0.008160 0.146880 -2.617844 0.001770 0.104272 7.491773 -0.000001 -0.000002 7.720591 -0.000001 -0.000001 0.000001 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -32.926645 -14.724346 14.295537 -29.856423 1.922946 -49.005538 -0.000014 -66.850634 -0.000019 -1.998916 4.758239 -11.235642 -0.000001 -0.000002 0.000001 0.000003 0.000001 -0.000001 0.000004 0.000000 -0.000001 0.000001 0.000000 0.000002 -32.926648 14.724349 -14.295543 -26.438213 14.884396 48.688659 -0.000002 61.534076 -0.000014 -1.781313 1.434118 28.502994 0.000002 0.000003 -0.000000 0.000003 0.000002 -0.000001 0.000003 0.000001 -0.000002 0.000001 -0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -2.552174 -0.254727 -0.000963 -0.840355 -0.003601 0.052083 0.000406 3.557363 -0.051949 -0.000009 0.000016 -0.000034 -0.000000 -0.000000 0.000000 -0.000010 0.000016 -0.000034 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000135 -2.544687 0.238184 0.010978 -1.174557 0.000731 -0.009530 -0.000550 -4.025481 0.059781 0.000008 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000009 -0.000013 0.000023 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 3.176451 -0.000000 -0.000001 -2.140015 0.008508 0.156345 -2.786403 0.001721 0.110987 7.974696 -0.000001 -0.000001 8.218300 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -35.056246 -15.962669 14.939005 -31.272284 1.630493 -46.653774 -0.000021 -71.646089 -0.000023 -2.233793 5.078168 -11.381867 0.000002 -0.000004 0.000001 -0.000002 0.000003 -0.000004 0.000000 -0.000000 -0.000003 -0.000003 0.000000 0.000001 -35.056246 15.962666 -14.939002 -27.854200 14.933013 46.337127 0.000008 65.871717 -0.000012 -2.164586 1.450600 28.979956 -0.000002 -0.000000 -0.000001 0.000003 -0.000003 -0.000001 -0.000002 0.000001 -0.000001 -0.000000 -0.000002 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -2.716505 -0.271124 -0.001415 -0.894457 -0.003859 0.055427 0.000544 3.786449 -0.055305 -0.000016 0.000018 -0.000035 -0.000000 -0.000000 0.000000 -0.000016 0.000017 -0.000034 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000137 -2.708537 0.253501 0.012047 -1.250175 0.000785 -0.010137 -0.000446 -4.284732 0.063637 0.000013 -0.000014 0.000028 -0.000000 0.000000 -0.000000 0.000013 -0.000014 0.000026 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 3.367471 -0.000000 -0.000001 -2.268696 0.008833 0.165755 -2.953959 0.001652 0.117663 8.454726 -0.000001 -0.000002 8.713026 -0.000001 -0.000002 0.000001 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 -37.168926 -17.213567 15.533665 -32.648881 1.290201 -44.326411 -0.000031 -76.388194 -0.000020 -2.468644 5.396645 -11.516992 0.000000 -0.000001 -0.000003 0.000003 -0.000001 0.000001 0.000000 -0.000000 0.000001 -0.000002 0.000001 0.000000 -37.168920 17.213559 -15.533667 -29.250582 15.023206 43.999935 0.000003 70.165208 -0.000014 -2.551407 1.462972 29.422631 0.000000 0.000000 0.000003 -0.000001 -0.000001 -0.000001 0.000004 0.000001 -0.000000 0.000001 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -2.879859 -0.287421 -0.001908 -0.948236 -0.004118 0.058750 0.000697 4.014167 -0.058636 -0.000016 0.000019 -0.000033 0.000000 -0.000000 -0.000000 -0.000016 0.000018 -0.000032 -0.000000 0.000001 0.000000 -0.000000 0.000003 0.000137 -2.871413 0.268723 0.013154 -1.325345 0.000839 -0.010740 -0.000318 -4.542435 0.067475 0.000006 -0.000015 0.000026 -0.000000 0.000000 -0.000000 0.000005 -0.000014 0.000025 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 3.556586 -0.000000 -0.000001 -2.396094 0.009135 0.175072 -3.119846 0.001566 0.124271 8.929932 -0.000001 -0.000002 9.202783 -0.000001 -0.000002 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -39.256123 -18.468461 16.076886 -33.979559 0.906384 -42.035689 -0.000016 -81.043056 -0.000038 -2.702455 5.712322 -11.641351 -0.000000 0.000003 0.000000 -0.000001 0.000001 -0.000002 0.000002 0.000000 -0.000003 0.000001 0.000000 -0.000000 -39.256126 18.468461 -16.076889 -30.619519 15.153716 41.690153 -0.000007 74.386224 -0.000016 -2.939670 1.471578 29.832187 0.000000 0.000002 0.000002 0.000000 0.000000 0.000001 -0.000001 0.000001 0.000000 0.000002 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -3.041587 -0.303555 -0.002444 -1.001481 -0.004379 0.062038 0.000857 4.239619 -0.061946 -0.000014 0.000017 -0.000032 0.000000 -0.000000 0.000000 -0.000015 0.000017 -0.000031 -0.000002 0.000000 -0.000000 -0.000000 0.000003 0.000136 -3.032666 0.283790 0.014292 -1.399765 0.000893 -0.011337 -0.000181 -4.797571 0.071275 0.000007 -0.000012 0.000028 0.000000 0.000001 0.000000 0.000008 -0.000013 0.000025 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000099 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 3.743034 -0.000000 -0.000001 -2.521697 0.009412 0.184258 -3.283394 0.001461 0.130786 9.398392 -0.000001 -0.000002 9.685585 -0.000001 -0.000002 0.000003 0.000022 -179.999991 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -41.309513 -19.718664 16.566914 -35.258324 0.484220 -39.793160 -0.000062 -85.579115 -0.000077 -2.934160 6.023864 -11.755264 -0.000004 -0.000003 0.000000 -0.000001 -0.000001 -0.000002 -0.000001 0.000002 -0.000000 -0.000003 0.000001 0.000002 -41.309510 19.718657 -16.566912 -31.953500 15.322244 39.420427 0.000023 78.508079 -0.000022 -3.327285 1.476788 30.209828 0.000000 0.000008 -0.000000 0.000004 0.000001 0.000001 0.000001 0.000000 0.000001 0.000002 0.000001 -0.000002 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 -3.201034 -0.319460 -0.003017 -1.053976 -0.004638 0.065282 0.001026 4.461883 -0.065197 -0.000017 0.000018 -0.000033 -0.000000 -0.000000 -0.000000 -0.000016 0.000017 -0.000032 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 -3.191648 0.298642 0.015455 -1.473138 0.000948 -0.011924 -0.000020 -5.049101 0.075024 0.000005 -0.000012 0.000025 -0.000000 0.000000 -0.000000 0.000006 -0.000014 0.000025 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 3.926056 -0.000000 -0.000001 -2.644994 0.009664 0.193276 -3.443937 0.001340 0.137181 9.858180 -0.000002 -0.000002 10.159444 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -43.320939 -20.955502 17.002943 -36.479941 0.029610 -37.609760 -0.006237 -89.967771 -0.009818 -3.162717 6.329934 -11.859076 -0.000001 0.000003 0.000003 0.000003 -0.000001 -0.000002 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -43.320946 20.955495 -17.002943 -33.245471 15.525537 37.202920 0.000018 82.506288 -0.000042 -3.712149 1.478973 30.556736 0.000002 -0.000002 -0.000001 0.000002 0.000002 0.000001 0.000001 0.000001 -0.000000 0.000002 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -3.357553 -0.335071 -0.003622 -1.105505 -0.004895 0.068464 0.001210 4.680066 -0.068403 -0.000013 0.000015 -0.000029 0.000000 -0.000001 -0.000000 -0.000013 0.000014 -0.000029 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 -3.347709 0.313218 0.016637 -1.545163 0.001002 -0.012502 0.000149 -5.296007 0.078706 0.000003 -0.000014 0.000026 0.000000 0.000000 -0.000000 0.000006 -0.000014 0.000026 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 4.104888 -0.000001 -0.000001 -2.765469 0.009891 0.202089 -3.600806 0.001204 0.143430 10.307383 -0.000001 -0.000002 10.622378 -0.000001 -0.000002 0.000003 0.000022 -179.999991 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 -45.282412 -22.170490 17.385111 -37.639994 -0.450967 -35.495598 0.000077 -94.183917 0.000075 -3.387098 6.629196 -11.953188 -0.000001 -0.000002 0.000002 0.000002 -0.000001 -0.000001 0.000001 -0.000001 -0.000001 0.000001 -0.000000 0.000002 -45.282416 22.170485 -17.385108 -34.489006 15.759519 35.049116 0.000065 86.358754 -0.000103 -4.092181 1.478506 30.874087 0.000000 0.000003 0.000003 -0.000001 0.000002 0.000000 0.000002 0.000001 -0.000000 0.000003 0.000000 -0.000002 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -3.510489 -0.350323 -0.004254 -1.155860 -0.005150 0.071573 0.001398 4.893250 -0.071529 -0.000012 0.000015 -0.000029 -0.000000 0.000000 0.000000 -0.000013 0.000015 -0.000029 -0.000002 -0.000000 -0.000000 -0.000000 0.000002 0.000135 -3.500199 0.327457 0.017830 -1.615542 0.001055 -0.013066 0.000330 -5.537251 0.082304 0.000005 -0.000011 0.000028 -0.000000 0.000000 -0.000000 0.000008 -0.000013 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
0.000000 1.067000 -0.000000 4.278768 -0.000001 -0.000001 -2.882611 0.010095 0.210658 -3.753333 0.001055 0.149504 10.744069 -0.000001 -0.000002 11.072415 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 -47.186102 -23.355454 17.714406 -38.734874 -0.950663 -33.460038 0.000081 -98.206113 0.000038 -3.606249 6.920319 -12.037975 0.000000 -0.000003 -0.000002 0.000000 0.000002 0.000001 -0.000003 0.000005 -0.000001 -0.000000 0.000001 0.000001 -47.186109 23.355453 -17.714412 -35.678309 16.019418 32.969733 -0.002995 90.046099 0.009379 -4.465302 1.475787 31.163052 0.000003 -0.000002 -0.000001 -0.000003 -0.000000 -0.000001 0.000003 0.000002 -0.000001 0.000004 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000001 -0.000002 0.000000 0.000001 -0.000002 0.000000 -3.659195 -0.365152 -0.004909 -1.204819 -0.005401 0.074597 0.001591 5.100525 -0.074566 -0.000012 0.000018 -0.000031 -0.000000 0.000000 0.000000 -0.000013 0.000019 -0.000034 -0.000001 0.000000 -0.000000 -0.000000 0.000002 0.000136 -3.648468 0.341299 0.019027 -1.683974 0.001108 -0.013615 0.000523 -5.771812 0.085805 0.000004 -0.000014 0.000028 -0.000000 -0.000000 -0.000000 0.000002 -0.000014 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 4.446939 -0.000001 -0.000001 -2.995910 0.010275 0.218946 -3.900852 0.000897 0.155380 11.166329 -0.000001 -0.000002 11.507580 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 -49.024212 -24.502619 17.992701 -39.761810 -1.462357 -31.511597 0.000048 -102.016614 0.000019 -3.819108 7.201978 -12.113868 0.000002 0.000000 0.000001 -0.000001 0.000001 -0.000000 -0.000000 0.000000 0.000001 -0.000002 -0.000000 -0.000000 -49.024226 24.502616 -17.992694 -36.808371 16.299975 30.974696 -0.000053 93.551653 0.000165 -4.829427 1.471179 31.424819 -0.000001 0.000001 0.000001 -0.000002 0.000002 -0.000000 0.000001 0.000000 -0.000004 -0.000001 0.000002 -0.000002 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000000 -3.803016 -0.379492 -0.005577 -1.252174 -0.005645 0.077521 0.001792 5.300995 -0.077513 -0.000016 0.000018 -0.000030 -0.000000 -0.000000 -0.000000 -0.000017 0.000017 -0.000030 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -3.791871 0.354683 0.020219 -1.750160 0.001159 -0.014146 0.000716 -5.998663 0.089193 0.000001 -0.000012 0.000024 -0.000000 0.000000 -0.000000 0.000003 -0.000013 0.000023 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 4.608638 -0.000001 -0.000001 -3.104850 0.010433 0.226915 -4.042695 0.000732 0.161028 11.572254 -0.000002 -0.000002 11.925908 -0.000002 -0.000002 0.000001 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -50.789065 -25.604661 18.222574 -40.718787 -1.978852 -29.658099 0.000031 -105.601220 0.000024 -4.024627 7.472859 -12.181298 -0.000006 -0.000001 -0.000001 0.000000 -0.000001 0.000001 -0.000004 0.000002 -0.000000 0.000002 0.000001 0.000001 -50.789075 25.604660 -18.222578 -37.874813 16.595557 29.073124 -0.000034 96.861447 0.000065 -5.182488 1.465061 31.660560 -0.000002 0.000003 0.000000 -0.000003 -0.000001 0.000000 0.000001 0.000005 -0.000000 -0.000000 0.000002 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -3.941306 -0.393278 -0.006255 -1.297706 -0.005882 0.080333 0.001993 5.493741 -0.080343 -0.000020 0.000019 -0.000034 0.000000 -0.000000 0.000000 -0.000021 0.000019 -0.000034 -0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 -3.929757 0.367550 0.021396 -1.813802 0.001209 -0.014656 0.000925 -6.216775 0.092456 0.000002 -0.000014 0.000029 -0.000000 -0.000000 0.000000 0.000005 -0.000013 0.000029 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 4.763104 -0.000001 -0.000001 -3.208918 0.010570 0.234529 -4.178195 0.000559 0.166424 11.959940 -0.000001 -0.000002 12.325433 -0.000002 -0.000002 0.000000 0.000022 -179.999991 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 0.000001 -0.000000 0.000000 -52.472935 -26.654798 18.407343 -41.604485 -2.492998 -27.906637 0.000036 -108.948860 0.000012 -4.221751 7.731660 -12.240719 -0.000001 0.000001 0.000000 -0.000001 -0.000001 0.000002 -0.000001 0.000000 0.000001 -0.000001 0.000002 0.000001 -52.472935 26.654794 -18.407341 -38.874042 16.900338 27.273318 -0.000034 99.963951 0.000026 -5.522399 1.457790 31.871466 -0.000002 0.000001 0.000000 0.000002 0.000001 -0.000000 0.000000 -0.000000 0.000002 -0.000002 -0.000001 -0.000001 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -4.073410 -0.406447 -0.006933 -1.341204 -0.006111 0.083018 0.002195 5.677868 -0.083053 -0.000019 0.000019 -0.000030 0.000000 -0.000000 0.000000 -0.000019 0.000019 -0.000029 -0.000002 0.000000 -0.000000 -0.000000 0.000003 0.000135 -4.061476 0.379838 0.022549 -1.874598 0.001258 -0.015142 0.001124 -6.425124 0.095571 0.000006 -0.000013 0.000030 -0.000000 0.000000 -0.000000 0.000006 -0.000013 0.000029 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 4.909576 -0.000001 -0.000001 -3.307606 0.010687 0.241749 -4.306686 0.000383 0.171540 12.327487 -0.000002 -0.000002 12.704183 -0.000002 -0.000002 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -54.068112 -27.646804 18.550896 -42.418217 -2.997785 -26.263723 0.000025 -112.051296 0.000012 -4.409403 7.977070 -12.292594 -0.000001 0.000001 0.000001 0.000003 0.000001 0.000001 -0.000001 0.000002 0.000002 -0.000000 -0.000001 -0.000000 -54.068126 27.646796 -18.550889 -39.803040 17.208433 25.582878 -0.000022 102.849781 0.000020 -5.847092 1.449703 32.058702 0.000002 0.000002 -0.000002 0.000001 -0.000002 -0.000001 -0.000000 0.000002 0.000003 -0.000001 0.000004 -0.000002 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 -0.000000 -4.198683 -0.418933 -0.007604 -1.382453 -0.006330 0.085565 0.002392 5.852463 -0.085620 -0.000016 0.000018 -0.000031 0.000000 -0.000000 0.000000 -0.000016 0.000018 -0.000030 -0.000002 -0.000000 -0.000000 -0.000000 0.000002 0.000137 -4.186382 0.391489 0.023669 -1.932251 0.001304 -0.015605 0.001334 -6.622689 0.098525 0.000002 -0.000013 0.000028 -0.000000 0.000001 -0.000000 0.000002 -0.000013 0.000026 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 5.047297 -0.000001 -0.000001 -3.400397 0.010785 0.248537 -4.427499 0.000209 0.176350 12.672983 -0.000002 -0.000002 13.060218 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -55.566820 -28.574974 18.657596 -43.159754 -3.486435 -24.735330 0.000019 -114.902483 0.000004 -4.586521 8.207791 -12.337399 0.000002 -0.000002 0.000002 0.000000 -0.000001 0.000001 -0.000001 0.000001 0.000003 -0.000004 0.000001 -0.000001 -55.566826 28.574971 -18.657601 -40.659423 17.514017 24.008692 -0.000017 105.511485 0.000030 -6.154488 1.441131 32.223463 0.000000 0.000001 0.000000 -0.000000 -0.000005 0.000001 0.000002 0.000003 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -4.316472 -0.430671 -0.008260 -1.421238 -0.006537 0.087959 0.002586 6.016621 -0.088035 -0.000018 0.000016 -0.000032 0.000000 -0.000000 0.000000 -0.000018 0.000017 -0.000033 -0.000001 0.000001 -0.000000 -0.000000 0.000003 0.000136 -4.303826 0.402441 0.024745 -1.986461 0.001349 -0.016040 0.001534 -6.808440 0.101307 0.000001 -0.000014 0.000029 0.000000 0.000001 -0.000000 0.000002 -0.000015 0.000027 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 5.175506 -0.000001 -0.000001 -3.486781 0.010867 0.254858 -4.539970 0.000037 0.180828 12.994546 -0.000002 -0.000002 13.391581 -0.000002 -0.000002 0.000004 0.000022 -179.999991 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -56.961251 -29.434140 18.732216 -43.829314 -3.952473 -23.327017 0.000017 -117.498187 0.000012 -4.752013 8.422544 -12.375628 0.000002 -0.000002 0.000002 -0.000000 -0.000001 -0.000000 -0.000000 0.000002 -0.000001 -0.000000 0.000003 -0.000001 -56.961257 29.434130 -18.732221 -41.441254 17.811436 22.557157 -0.000018 107.943073 0.000018 -6.442514 1.432380 32.366918 0.000000 0.000004 -0.000001 0.000001 -0.000001 0.000000 0.000002 0.000006 0.000002 0.000001 0.000004 -0.000002 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -4.426125 -0.441598 -0.008892 -1.457347 -0.006731 0.090189 0.002770 6.169438 -0.090288 -0.000015 0.000018 -0.000032 0.000000 0.000000 0.000000 -0.000016 0.000017 -0.000030 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 -4.413160 0.412635 0.025767 -2.036929 0.001390 -0.016444 0.001737 -6.981353 0.103901 0.000004 -0.000015 0.000029 0.000000 0.000000 -0.000000 0.000005 -0.000015 0.000029 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 5.293443 -0.000001 -0.000001 -3.566249 0.010934 0.260672 -4.643429 -0.000129 0.184946 13.290278 -0.000002 -0.000002 13.696321 -0.000002 -0.000002 -0.000000 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -58.243441 -30.219561 18.779745 -44.427331 -4.389799 -22.044080 0.000021 -119.835368 0.000009 -4.904799 8.620041 -12.407769 0.000001 -0.000000 0.000001 -0.000001 -0.000001 0.000001 0.000000 0.000004 0.000001 0.000001 -0.000001 -0.000000 -58.243448 30.219544 -18.779742 -42.146963 18.095247 21.234194 -0.000015 110.139594 0.000018 -6.709084 1.423729 32.490267 -0.000001 0.000001 0.000000 -0.000001 -0.000001 0.000002 0.000002 0.000003 0.000001 0.000001 -0.000001 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -4.526994 -0.451648 -0.009492 -1.490563 -0.006912 0.092239 0.002948 6.310008 -0.092358 -0.000019 0.000019 -0.000041 -0.000000 -0.000000 0.000000 -0.000020 0.000019 -0.000041 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000137 -4.513736 0.422010 0.026724 -2.083354 0.001428 -0.016815 0.001923 -7.140411 0.106287 0.000001 -0.000014 0.000027 -0.000000 -0.000000 0.000000 0.000003 -0.000014 0.000027 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 5.400347 -0.000001 -0.000001 -3.638283 0.010987 0.265942 -4.737211 -0.000287 0.188679 13.558290 -0.000002 -0.000002 13.972483 -0.000002 -0.000003 0.000004 0.000022 -179.999991 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -59.405434 -30.926922 18.805326 -44.954444 -4.792649 -20.891605 0.000021 -121.911650 0.000006 -5.043775 8.799019 -12.434330 -0.000001 -0.000001 0.000001 -0.000001 -0.000000 0.000002 0.000001 0.000002 0.000000 -0.000000 0.000001 0.000000 -59.405447 30.926909 -18.805326 -42.775265 18.360336 20.045386 -0.000015 112.096832 0.000017 -6.952119 1.415435 32.594670 0.000000 -0.000000 0.000001 0.000000 -0.000001 0.000001 0.000003 0.000004 0.000001 -0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -4.618430 -0.460757 -0.010052 -1.520672 -0.007076 0.094098 0.003116 6.437428 -0.094236 -0.000015 0.000018 -0.000031 0.000000 0.000000 -0.000000 -0.000018 0.000018 -0.000030 -0.000002 0.000000 -0.000000 -0.000000 0.000003 0.000136 -4.604904 0.430507 0.027606 -2.125440 0.001463 -0.017153 0.002102 -7.284584 0.108450 0.000002 -0.000013 0.000027 0.000000 -0.000000 -0.000000 0.000000 -0.000012 0.000026 -0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 5.495463 -0.000001 -0.000001 -3.702374 0.011029 0.270632 -4.820653 -0.000432 0.192000 13.796692 -0.000001 -0.000003 14.218144 -0.000002 -0.000003 0.000000 0.000022 -179.999991 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 -0.000000 0.000001 -0.000000 -0.000000 -60.439162 -31.552226 18.814067 -45.411274 -5.155682 -19.874626 0.000019 -123.725052 0.000007 -5.167854 8.958201 -12.455800 -0.000000 -0.000002 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 0.000004 -0.000001 -0.000000 0.000000 0.000000 -60.439169 31.552216 -18.814075 -43.324976 18.601906 18.996175 -0.000016 113.810896 0.000015 -7.169536 1.407732 32.681332 -0.000000 0.000002 -0.000001 -0.000000 -0.000001 -0.000002 0.000003 0.000001 0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000001 0.000000 -4.699783 -0.468861 -0.010561 -1.547464 -0.007223 0.095751 0.003267 6.550797 -0.095909 -0.000017 0.000019 -0.000037 0.000000 0.000000 -0.000000 -0.000017 0.000019 -0.000037 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000136 -4.686020 0.438066 0.028403 -2.162884 0.001495 -0.017452 0.002261 -7.412852 0.110377 0.000002 -0.000015 0.000028 0.000000 -0.000000 -0.000000 0.000003 -0.000014 0.000027 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 5.578029 -0.000001 -0.000001 -3.758010 0.011062 0.274702 -4.893086 -0.000560 0.194883 14.003606 -0.000002 -0.000002 14.431341 -0.000002 -0.000003 0.000001 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -61.336506 -32.091698 18.810971 -45.798433 -5.473921 -18.998195 0.000020 -125.273237 0.000006 -5.275918 9.096340 -12.472686 0.000000 -0.000003 -0.000001 0.000001 -0.000001 0.000001 -0.000000 0.000005 -0.000001 -0.000001 -0.000001 -0.000000 -61.336513 32.091678 -18.810968 -43.794968 18.815551 18.091921 -0.000017 115.277788 0.000017 -7.359249 1.400826 32.751420 -0.000001 0.000002 0.000001 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -4.770403 -0.475895 -0.011013 -1.570722 -0.007351 0.097188 0.003400 6.649203 -0.097363 -0.000013 0.000016 -0.000031 0.000000 -0.000000 0.000000 -0.000012 0.000016 -0.000031 -0.000001 -0.000001 -0.000000 -0.000000 0.000003 0.000137 -4.756434 0.444626 0.029103 -2.195390 0.001522 -0.017713 0.002406 -7.524191 0.112046 0.000004 -0.000013 0.000028 -0.000000 0.000000 0.000000 0.000004 -0.000014 0.000026 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 5.647284 -0.000001 -0.000001 -3.804679 0.011086 0.278117 -4.953844 -0.000673 0.197301 14.177132 -0.000002 -0.000002 14.610149 -0.000002 -0.000003 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -62.089206 -32.541675 18.800697 -46.116307 -5.742791 -18.267544 0.000019 -126.553242 0.000005 -5.366858 9.212166 -12.485472 -0.000000 -0.000001 0.000000 0.000002 0.000000 0.000001 -0.000001 0.000004 -0.000000 0.000000 0.000003 -0.000000 -62.089206 32.541661 -18.800695 -44.183934 18.997253 17.338078 -0.000017 116.493138 0.000014 -7.519162 1.394900 32.806123 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 0.000000 0.000002 0.000001 0.000000 -0.000000 0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -4.829640 -0.481795 -0.011399 -1.590230 -0.007460 0.098390 0.003514 6.731745 -0.098579 -0.000014 0.000017 -0.000034 0.000000 -0.000000 -0.000000 -0.000015 0.000017 -0.000032 -0.000002 0.000000 -0.000000 -0.000000 0.000003 0.000136 -4.815499 0.450129 0.029696 -2.222655 0.001545 -0.017931 0.002526 -7.617587 0.113453 0.000002 -0.000013 0.000030 -0.000000 -0.000001 0.000000 0.000003 -0.000015 0.000029 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 5.702471 -0.000001 -0.000001 -3.841867 0.011103 0.280838 -5.002257 -0.000763 0.199228 14.315391 -0.000002 -0.000003 14.752613 -0.000002 -0.000003 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -62.689068 -32.898501 18.787497 -46.364916 -5.958071 -17.688225 0.000017 -127.561132 0.000006 -5.439554 9.304434 -12.494631 -0.000000 -0.000002 -0.000001 -0.000001 0.000000 0.000003 0.000000 0.000005 -0.000001 -0.000002 0.000005 -0.000001 -62.689068 32.898494 -18.787508 -44.490401 19.143427 16.740375 -0.000018 117.451646 0.000014 -7.647188 1.390103 32.846615 -0.000000 0.000002 -0.000001 -0.000000 0.000000 -0.000000 -0.000002 -0.000001 -0.000000 -0.000000 0.000003 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -4.876844 -0.486496 -0.011711 -1.605776 -0.007546 0.099350 0.003608 6.797519 -0.099549 -0.000016 0.000020 -0.000034 0.000000 0.000000 0.000000 -0.000019 0.000019 -0.000033 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000136 -4.862565 0.454513 0.030173 -2.244384 0.001563 -0.018105 0.002628 -7.692002 0.114568 0.000003 -0.000014 0.000031 0.000000 -0.000000 0.000000 0.000003 -0.000015 0.000031 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 5.742833 -0.000001 -0.000001 -3.869065 0.011114 0.282828 -5.037667 -0.000831 0.200637 14.416494 -0.000002 -0.000003 14.856790 -0.000002 -0.000003 0.000000 0.000022 -179.999991 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 0.000000 0.000000 -0.000000 -63.127812 -33.158451 18.775044 -46.543983 -6.115939 -17.266090 0.000016 -128.291416 0.000008 -5.492875 9.371881 -12.500641 -0.000000 -0.000003 0.000001 0.000000 -0.000000 0.000000 -0.000001 0.000002 -0.000002 0.000000 0.000005 -0.000002 -63.127812 33.158444 -18.775041 -44.712549 19.250875 16.304870 -0.000016 118.147082 0.000016 -7.741231 1.386564 32.874073 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000002 -0.000003 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -4.911366 -0.489934 -0.011941 -1.617145 -0.007609 0.100053 0.003677 6.845621 -0.100259 -0.000018 0.000016 -0.000032 -0.000000 -0.000000 -0.000000 -0.000019 0.000016 -0.000031 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 -4.896987 0.457720 0.030523 -2.260273 0.001577 -0.018232 0.002703 -7.746430 0.115385 0.000004 -0.000014 0.000031 -0.000000 0.000001 -0.000000 0.000006 -0.000014 0.000029 -0.000001 -0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 5.767605 -0.000001 -0.000001 -3.885760 0.011121 0.284050 -5.059402 -0.000873 0.201502 14.478546 -0.000002 -0.000003 14.920724 -0.000002 -0.000003 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -63.397112 -33.317581 18.766223 -46.652600 -6.212894 -17.007603 0.000018 -128.736812 0.000004 -5.525706 9.413272 -12.503933 0.000000 -0.000004 -0.000001 0.000000 0.000001 0.000001 -0.000002 0.000007 0.000000 -0.000001 0.000004 -0.000000 -63.397099 33.317571 -18.766225 -44.848009 19.316917 16.038170 -0.000017 118.571592 0.000014 -7.799201 1.384386 32.889690 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -0.000003 -0.000000 0.000002 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -4.932555 -0.492044 -0.012084 -1.624124 -0.007648 0.100483 0.003717 6.875149 -0.100698 -0.000018 0.000018 -0.000030 -0.000000 -0.000000 -0.000000 -0.000019 0.000017 -0.000029 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -4.918115 0.459687 0.030740 -2.270028 0.001585 -0.018310 0.002751 -7.779832 0.115893 -0.000000 -0.000012 0.000028 -0.000000 0.000001 0.000000 0.000002 -0.000013 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 5.776034 -0.000001 -0.000001 -3.891438 0.011123 0.284465 -5.066793 -0.000887 0.201796 14.499655 -0.000002 -0.000003 14.942470 -0.000002 -0.000003 0.000003 0.000022 -179.999991 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000000 -63.488726 -33.371635 18.763018 -46.689268 -6.245853 -16.919741 0.000021 -128.887828 0.000009 -5.536896 9.427346 -12.504949 -0.000001 -0.000003 0.000001 0.000001 0.000000 0.000001 -0.000001 0.000004 0.000001 -0.000000 0.000001 -0.000000 -63.488726 33.371628 -18.763025 -44.893949 19.339327 15.947537 -0.000013 118.715614 0.000007 -7.818989 1.383647 32.894642 0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 -0.000000 0.000001 0.000001 -0.000002 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -4.939764 -0.492756 -0.012134 -1.626497 -0.007659 0.100629 0.003731 6.885190 -0.100845 -0.000017 0.000020 -0.000033 -0.000000 -0.000000 -0.000000 -0.000018 0.000020 -0.000032 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000137 -4.925301 0.460352 0.030815 -2.273347 0.001588 -0.018337 0.002767 -7.791196 0.116060 0.000003 -0.000014 0.000024 0.000000 0.000001 -0.000000 0.000005 -0.000014 0.000023 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000

View File

@@ -0,0 +1,461 @@
HIERARCHY
ROOT mPelvis
{
OFFSET 0.000000 1.067000 -0.000000
CHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation
JOINT mTorso
{
OFFSET 0.000000 0.084000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mChest
{
OFFSET 0.000000 0.205000 -0.015000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mNeck
{
OFFSET 0.000000 0.251000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mHead
{
OFFSET 0.000000 0.076000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mSkull
{
OFFSET 0.000000 0.079000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeRight
{
OFFSET -0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeLeft
{
OFFSET 0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT HEAD
{
OFFSET 0.000000 0.070000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT NECK
{
OFFSET 0.000000 0.020000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarLeft
{
OFFSET 0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderLeft
{
OFFSET 0.079000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowLeft
{
OFFSET 0.248000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristLeft
{
OFFSET 0.205000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT L_HAND
{
OFFSET 0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_ARM
{
OFFSET 0.100000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_ARM
{
OFFSET 0.120000 0.010000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarRight
{
OFFSET -0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderRight
{
OFFSET -0.079000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowRight
{
OFFSET -0.248000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristRight
{
OFFSET -0.205000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT R_HAND
{
OFFSET -0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_ARM
{
OFFSET -0.100000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_ARM
{
OFFSET -0.120000 0.010000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT CHEST
{
OFFSET 0.000000 0.070000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LEFT_PEC
{
OFFSET 0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT RIGHT_PEC
{
OFFSET -0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT UPPER_BACK
{
OFFSET 0.000000 0.017253 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT BELLY
{
OFFSET 0.000000 0.040000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LOWER_BACK
{
OFFSET 0.000000 0.022848 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipRight
{
OFFSET -0.129000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeRight
{
OFFSET 0.049000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleRight
{
OFFSET -0.000000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootRight
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeRight
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_LEG
{
OFFSET 0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipLeft
{
OFFSET 0.127000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeLeft
{
OFFSET -0.046000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleLeft
{
OFFSET 0.001000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootLeft
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeLeft
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_LEG
{
OFFSET -0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT PELVIS
{
OFFSET -0.000000 -0.020000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT BUTT
{
OFFSET -0.000000 -0.100000 -0.060000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
MOTION
Frames: 91
Frame Time: 0.022222
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.555755 -0.057458 -84.096424 -0.000000 0.000000 0.000001 0.879869 -0.033829 -4.403510 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.541243 15.193717 82.081778 0.000002 0.000000 0.000001 1.046036 0.047842 5.237183 -0.000001 -0.000001 -0.000000 0.000001 0.000000 0.000001 -0.000001 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.034920 0.002555 0.000000 -0.013071 0.000521 -0.000000 -0.033131 0.000000 -0.000000 -0.027811 -0.000000 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.557100 -0.056208 -84.091397 -0.000000 -0.001001 0.000000 0.879869 -0.033830 -4.403511 -0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.040452 0.000000 -1.628938 15.288697 82.094803 0.000002 0.000000 0.000002 1.046038 0.047840 5.237181 0.000004 -0.000001 -0.000000 0.000002 -0.000000 -0.000000 0.000001 0.000000 0.000002 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000013 -0.137541 0.010064 0.000001 -0.051478 0.002051 -0.000000 -0.130490 -0.000000 -0.000000 -0.109882 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.558317 -0.055002 -84.076412 0.000000 -0.004142 -0.000000 0.879869 -0.033830 -4.403510 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.159338 -0.000000 -1.713589 15.376706 82.107275 0.000001 0.000000 0.000001 1.046034 0.047841 5.237181 0.000001 -0.000001 0.000000 -0.000001 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000060 -0.304676 0.022294 0.000006 -0.114016 0.004542 -0.000000 -0.289023 0.000000 -0.000000 -0.244179 0.000000 0.000002 0.000022 -179.999991 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.559409 -0.053843 -84.051577 -0.000000 -0.009627 -0.000000 0.879869 -0.033830 -4.403510 -0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.352979 0.000000 -1.795231 15.458000 82.118927 0.000002 0.000000 -0.000000 1.046035 0.047841 5.237180 0.000001 -0.000002 0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000182 -0.533153 0.039012 0.000015 -0.199480 0.007947 -0.000000 -0.505684 0.000000 -0.000000 -0.428675 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.560383 -0.052732 -84.017057 -0.000000 -0.017662 -0.000000 0.879869 -0.033830 -4.403510 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.617721 0.000000 -1.873904 15.532839 82.129555 0.000001 0.000000 -0.000001 1.046036 0.047840 5.237182 0.000001 0.000001 -0.000000 0.000000 0.000000 0.000001 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000430 -0.819815 0.059991 0.000033 -0.306662 0.012218 -0.000000 -0.777427 -0.000000 -0.000000 -0.661348 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.561244 -0.051670 -83.972968 0.000000 -0.028450 -0.000001 0.879869 -0.033829 -4.403510 -0.000000 -0.000003 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.949931 -0.000000 -1.949645 15.601492 82.138947 0.000000 -0.000000 -0.000000 1.046035 0.047840 5.237182 -0.000001 0.000001 -0.000000 0.000001 0.000000 0.000001 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000862 -1.161510 0.085000 0.000065 -0.434359 0.017305 -0.000000 -1.101207 -0.000000 -0.000000 -0.940182 0.000000 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.561996 -0.050657 -83.919440 -0.000000 -0.042197 -0.000000 0.879869 -0.033829 -4.403510 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -1.345989 -0.000000 -2.022489 15.664216 82.146876 -0.000001 -0.000001 0.000000 1.046037 0.047841 5.237181 -0.000001 0.000002 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.001545 -1.555094 0.113815 0.000118 -0.581365 0.023163 -0.000001 -1.473980 0.000000 -0.000000 -1.263167 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000001 0.000000 -0.562643 -0.049696 -83.856589 0.000000 -0.059107 -0.000000 0.879869 -0.033830 -4.403510 0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -1.802282 -0.000000 -2.092477 15.721270 82.153140 0.000000 -0.000000 0.000000 1.046036 0.047840 5.237182 -0.000001 0.000001 -0.000000 0.000000 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.002549 -1.997415 0.146212 0.000194 -0.746474 0.029742 -0.000001 -1.892698 -0.000000 -0.000000 -1.628290 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.563192 -0.048785 -83.784571 0.000000 -0.079386 0.000000 0.879870 -0.033829 -4.403510 0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -2.315190 -0.000000 -2.159644 15.772925 82.157511 0.000001 -0.000000 -0.000000 1.046036 0.047840 5.237180 -0.000000 0.000001 0.000000 0.000002 -0.000000 0.000000 0.000002 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.003948 -2.485325 0.181967 0.000300 -0.928481 0.036994 -0.000001 -2.354311 -0.000000 -0.000000 -2.033539 0.000000 0.000002 0.000023 -179.999991 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.563647 -0.047928 -83.703511 0.000000 -0.103238 -0.000000 0.879869 -0.033830 -4.403511 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -2.881090 -0.000000 -2.224031 15.819434 82.159779 0.000000 -0.000000 -0.000001 1.046037 0.047839 5.237181 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000001 0.000001 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.005813 -3.015657 0.220862 0.000441 -1.126177 0.044873 -0.000000 -2.855767 -0.000000 -0.000000 -2.476903 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.564012 -0.047125 -83.613537 -0.000000 -0.130868 0.000000 0.879869 -0.033829 -4.403510 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -3.496348 -0.000000 -2.285674 15.861057 82.159724 0.000001 -0.000001 0.000001 1.046036 0.047841 5.237181 0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.008221 -3.585240 0.262679 0.000623 -1.338360 0.053331 -0.000001 -3.394005 -0.000000 -0.000000 -2.956369 -0.000000 0.000002 0.000022 -179.999991 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.564293 -0.046375 -83.514772 0.000000 -0.162481 -0.000000 0.879869 -0.033830 -4.403510 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -4.157303 -0.000000 -2.344615 15.898056 82.157142 0.000000 0.000000 0.000000 1.046037 0.047840 5.237181 -0.000000 0.000003 -0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.011240 -4.190886 0.307200 0.000850 -1.563818 0.062319 -0.000001 -3.965963 -0.000000 -0.000000 -3.469913 -0.000000 0.000002 0.000021 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.564494 -0.045681 -83.407360 -0.000000 -0.198282 0.000001 0.879869 -0.033831 -4.403510 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -4.860283 -0.000000 -2.400895 15.930699 82.151842 -0.000000 -0.000000 0.000000 1.046036 0.047840 5.237181 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.014936 -4.829390 0.354212 0.001129 -1.801349 0.071790 -0.000001 -4.568566 -0.000000 -0.000000 -4.015516 -0.000000 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.564621 -0.045043 -83.291432 0.000000 -0.238475 0.000000 0.879869 -0.033830 -4.403509 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -5.601579 -0.000000 -2.454551 15.959241 82.143591 0.000000 -0.000000 0.000001 1.046037 0.047840 5.237182 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.019372 -5.497536 0.403501 0.001461 -2.049743 0.081698 -0.000001 -5.198746 -0.000000 -0.000001 -4.591143 0.000000 0.000002 0.000021 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.564676 -0.044460 -83.167088 -0.000000 -0.283267 -0.000001 0.879869 -0.033829 -4.403509 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -6.377469 -0.000000 -2.505628 15.983946 82.132198 -0.000000 -0.000000 0.000002 1.046036 0.047842 5.237180 0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000002 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.024602 -6.192078 0.454856 0.001852 -2.307793 0.091994 -0.000001 -5.853420 -0.000000 -0.000001 -5.194758 -0.000000 0.000002 0.000019 -179.999991 0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000003 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.564667 -0.043935 -83.034521 -0.000000 -0.332862 -0.000001 0.879870 -0.033829 -4.403511 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000000 -0.000001 -0.000000 0.000000 -7.184194 -0.000000 -2.554166 16.005064 82.117466 0.000000 0.000000 -0.000000 1.046036 0.047839 5.237182 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.030673 -6.909765 0.508065 0.002306 -2.574291 0.102630 -0.000001 -6.529506 -0.000000 -0.000001 -5.824320 -0.000000 0.000002 0.000020 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.564597 -0.043470 -82.893792 0.000001 -0.387464 -0.000001 0.879869 -0.033828 -4.403511 -0.000001 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 -8.017974 -0.000000 -2.600206 16.022866 82.099161 -0.000000 0.000000 0.000000 1.046036 0.047839 5.237181 0.000000 0.000003 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.037622 -7.647324 0.562916 0.002823 -2.848028 0.113561 -0.000001 -7.223927 -0.000000 -0.000001 -6.477781 -0.000000 0.000002 0.000022 -179.999991 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.564470 -0.043061 -82.745071 0.000000 -0.447278 -0.000001 0.879869 -0.033829 -4.403511 0.000001 -0.000000 0.000000 -0.000002 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000001 -0.000000 0.000000 -8.874993 -0.000000 -2.643791 16.037609 82.077106 0.000000 0.000000 0.000000 1.046036 0.047840 5.237182 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.045479 -8.401468 0.619198 0.003406 -3.127797 0.124737 -0.000001 -7.933592 0.000000 -0.000001 -7.153080 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.564293 -0.042715 -82.588489 0.000000 -0.512511 -0.000001 0.879869 -0.033829 -4.403510 -0.000002 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000001 0.000000 0.000001 -9.751429 0.000000 -2.684963 16.049544 82.051110 -0.000000 -0.000000 -0.000001 1.046036 0.047841 5.237180 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 0.000000 -0.000002 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000002 -0.000000 0.000001 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.054261 -9.168893 0.676697 0.004054 -3.412389 0.136113 -0.000001 -8.655416 -0.000000 -0.000001 -7.848160 -0.000000 0.000002 0.000026 -179.999991 0.000000 0.000003 0.000000 0.000000 0.000003 0.000000 0.000000 0.000003 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000001 0.000000 -0.564067 -0.042427 -82.424134 -0.000000 -0.583367 -0.000001 0.879869 -0.033831 -4.403510 0.000001 -0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000001 -10.643416 -0.000000 -2.723767 16.058946 82.020921 -0.000001 -0.000000 0.000001 1.046036 0.047840 5.237182 0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000000 -0.000002 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.063975 -9.946286 0.735197 0.004769 -3.700595 0.147639 -0.000001 -9.386329 -0.000000 -0.000001 -8.560942 -0.000000 0.000002 0.000021 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.563799 -0.042201 -82.252171 -0.000000 -0.660051 -0.000001 0.879870 -0.033829 -4.403510 -0.000003 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 -11.547090 -0.000000 -2.760247 16.066060 81.986381 -0.000000 -0.000000 0.000001 1.046035 0.047839 5.237182 0.000000 0.000003 0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.074614 -10.730323 0.794481 0.005550 -3.991210 0.159270 -0.000002 -10.123251 -0.000000 -0.000001 -9.289370 -0.000000 0.000002 0.000024 -179.999991 0.000000 0.000003 0.000000 0.000000 0.000003 0.000000 0.000000 0.000003 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.563494 -0.042038 -82.072701 -0.000001 -0.742767 0.000002 0.879871 -0.033830 -4.403510 -0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000002 -0.000000 0.000000 -0.000000 0.000001 -12.458562 -0.000000 -2.794448 16.071148 81.947285 0.000000 -0.000000 0.000001 1.046036 0.047840 5.237182 -0.000000 -0.000000 0.000000 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000002 0.000000 0.000001 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.086160 -11.517685 0.854328 0.006392 -4.283020 0.170957 -0.000002 -10.863119 -0.000000 -0.000001 -10.031352 0.000000 0.000002 0.000025 -179.999991 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 0.000000 0.000002 0.000000 -0.000000 0.000001 -0.000000 -0.563154 -0.041935 -81.885861 0.000000 -0.831723 0.000001 0.879869 -0.033828 -4.403512 0.000001 -0.000002 0.000000 0.000001 -0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000000 0.000001 0.000000 0.000001 -13.373931 -0.000000 -2.826410 16.074475 81.903428 -0.000000 -0.000000 0.000000 1.046035 0.047840 5.237180 0.000000 0.000003 0.000000 -0.000001 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000002 -0.000000 0.000001 0.000001 -0.000000 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.098581 -12.305030 0.914510 0.007296 -4.574828 0.182653 -0.000001 -11.602877 -0.000000 -0.000001 -10.784812 -0.000000 0.000002 0.000027 -179.999991 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 0.000000 0.000005 -0.000000 0.000000 0.000003 -0.000000 -0.562785 -0.041896 -81.691754 0.000001 -0.927122 -0.000000 0.879870 -0.033829 -4.403510 0.000001 0.000001 -0.000000 0.000002 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000001 -14.289304 -0.000000 -2.856179 16.076286 81.854606 0.000001 -0.000000 0.000000 1.046034 0.047840 5.237180 -0.000001 0.000002 0.000001 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 0.000001 0.000000 -0.000003 0.000000 0.000001 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.111832 -13.089033 0.974797 0.008255 -4.865423 0.194309 -0.000002 -12.339467 -0.000000 -0.000001 -11.547680 -0.000000 0.000002 0.000018 -179.999991 0.000000 -0.000004 0.000000 0.000000 -0.000004 0.000000 0.000000 -0.000004 0.000000 -0.000000 0.000002 -0.000000 -0.000001 0.000001 -0.000000 -0.562392 -0.041923 -81.490543 -0.000001 -1.029169 0.000000 0.879871 -0.033829 -4.403511 -0.000001 0.000001 -0.000000 0.000003 0.000000 -0.000001 -0.000003 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -15.200764 -0.000000 -2.883801 16.076853 81.800634 -0.000001 -0.000000 -0.000001 1.046035 0.047840 5.237181 0.000001 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000002 0.000000 -0.000001 0.000000 -0.000003 0.000000 -0.000001 0.000001 0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.125854 -13.866364 1.034953 0.009265 -5.153598 0.205879 -0.000002 -13.069885 -0.000000 -0.000002 -12.317869 -0.000000 0.000002 0.000021 -179.999991 -0.000000 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000002 0.000000 -0.561978 -0.042015 -81.282297 0.000000 -1.138071 -0.000001 0.879871 -0.033829 -4.403511 0.000001 0.000000 -0.000000 0.000002 -0.000000 -0.000000 -0.000001 0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000001 -16.104445 0.000000 -2.909318 16.076418 81.741279 0.000000 -0.000000 -0.000000 1.046035 0.047840 5.237181 0.000000 -0.000001 -0.000001 -0.000002 -0.000000 0.000001 -0.000001 0.000000 -0.000000 -0.000000 -0.000003 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.140569 -14.633711 1.094733 0.010321 -5.438153 0.217313 -0.000002 -13.791087 -0.000000 -0.000002 -13.093297 -0.000000 0.000002 0.000020 -179.999991 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 -0.000000 -0.000001 0.000004 0.000000 -0.561547 -0.042169 -81.067160 0.000004 -1.254032 -0.000000 0.879869 -0.033829 -4.403510 0.000003 0.000000 0.000001 0.000001 0.000000 -0.000001 0.000001 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000001 -16.996429 -0.000000 -2.932775 16.075255 81.676386 -0.000002 -0.000000 -0.000000 1.046037 0.047841 5.237181 -0.000003 0.000002 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000003 0.000000 -0.000001 0.000004 0.000000 -0.000001 0.000003 0.000000 -0.000000 0.000003 0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.155890 -15.387745 1.153886 0.011413 -5.717878 0.228564 -0.000002 -14.500094 -0.000000 -0.000002 -13.871891 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.561105 -0.042390 -80.845261 0.000004 -1.377257 0.000000 0.879871 -0.033830 -4.403511 -0.000003 0.000001 0.000000 0.000002 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000001 -17.872875 -0.000000 -2.954213 16.073605 81.605727 -0.000002 -0.000000 0.000000 1.046035 0.047840 5.237182 0.000000 0.000001 -0.000000 -0.000000 -0.000001 0.000001 -0.000003 -0.000000 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000004 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.171712 -16.125177 1.212153 0.012538 -5.991576 0.239583 -0.000002 -15.193915 -0.000000 -0.000002 -14.651582 -0.000000 0.000003 0.000024 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000003 0.000000 -0.560655 -0.042683 -80.616702 -0.000000 -1.507951 -0.000001 0.879868 -0.033830 -4.403510 -0.000002 0.000001 -0.000000 0.000001 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000001 -18.729895 0.000000 -2.973678 16.071741 81.529127 -0.000003 -0.000001 -0.000000 1.046035 0.047840 5.237181 -0.000002 -0.000000 0.000000 -0.000001 0.000000 0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000001 -0.000003 0.000000 -0.000001 -0.000002 0.000000 -0.000001 -0.000003 0.000000 -0.000001 -0.000002 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.187919 -16.842724 1.269268 0.013683 -6.258043 0.250321 -0.000002 -15.869565 -0.000000 -0.000002 -15.430306 -0.000000 0.000002 0.000025 -179.999991 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000002 -0.000000 0.000000 0.000001 -0.000000 -0.560202 -0.043039 -80.381607 0.000003 -1.646320 -0.000000 0.879869 -0.033829 -4.403509 -0.000001 0.000001 0.000000 0.000001 -0.000000 0.000001 0.000001 0.000000 0.000001 0.000000 -0.000001 0.000000 0.000002 -19.563668 -0.000000 -2.991214 16.069895 81.446365 -0.000002 -0.000000 0.000001 1.046037 0.047840 5.237182 0.000001 0.000001 0.000000 0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.204377 -17.537105 1.324954 0.014841 -6.516083 0.260731 -0.000002 -16.524111 -0.000000 -0.000002 -16.206010 -0.000000 0.000002 0.000018 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.559749 -0.043469 -80.140078 -0.000001 -1.792569 0.000000 0.879866 -0.033829 -4.403511 -0.000001 -0.000000 0.000000 -0.000002 -0.000000 -0.000000 -0.000002 0.000000 0.000000 -0.000000 -0.000002 -0.000000 0.000002 -20.370387 -0.000000 -3.006857 16.068355 81.357252 -0.000004 -0.000000 0.000001 1.046036 0.047840 5.237181 0.000001 0.000002 -0.000001 -0.000002 0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 0.000001 -0.000000 0.000000 0.000004 -0.000000 -0.000000 0.000003 -0.000000 -0.000000 0.000004 -0.000000 0.000000 0.000004 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.220939 -18.205074 1.378927 0.016002 -6.764487 0.270761 -0.000002 -17.154631 -0.000000 -0.000002 -16.976638 -0.000000 0.000002 0.000019 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000001 -0.000001 0.000000 -0.559301 -0.043967 -79.892231 0.000003 -1.946903 -0.000001 0.879868 -0.033829 -4.403510 -0.000002 -0.000002 0.000000 0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 -0.000001 0.000000 0.000001 -21.146281 -0.000000 -3.020653 16.067339 81.261588 -0.000002 -0.000000 -0.000001 1.046036 0.047840 5.237181 0.000002 0.000002 0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000002 0.000000 -0.000000 -0.000003 0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.237450 -18.843403 1.430894 0.017153 -7.002067 0.280365 -0.000002 -17.758188 -0.000001 -0.000002 -17.740166 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000003 0.000000 0.000000 0.000002 -0.000000 -0.558862 -0.044537 -79.638175 0.000005 -2.109524 -0.000000 0.879870 -0.033829 -4.403510 -0.000001 -0.000002 0.000000 -0.000001 -0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000002 -21.887585 -0.000000 -3.032640 16.067130 81.159183 -0.000001 -0.000000 0.000000 1.046038 0.047840 5.237182 -0.000002 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000002 0.000000 0.000000 0.000000 -0.000004 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000003 -0.000000 0.000000 -0.000002 -0.000000 0.000000 0.000000 -0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.253737 -19.448861 1.480553 0.018283 -7.227619 0.289491 -0.000003 -18.331874 -0.000000 -0.000003 -18.494552 -0.000000 0.000002 0.000023 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000002 0.000000 -0.000001 -0.000001 0.000000 -0.558437 -0.045184 -79.378020 0.000002 -2.280639 -0.000001 0.879872 -0.033829 -4.403511 -0.000003 -0.000001 0.000000 0.000000 0.000000 0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000001 -22.590562 -0.000000 -3.042856 16.067971 81.049818 -0.000000 -0.000001 0.000001 1.046035 0.047840 5.237181 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000001 0.000000 0.000003 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000002 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.269620 -20.018251 1.527593 0.019380 -7.439951 0.298091 -0.000003 -18.872788 -0.000001 -0.000002 -19.237796 -0.000000 0.000002 0.000022 -179.999991 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000002 0.000000 -0.000001 0.000003 -0.000000 -0.558028 -0.045895 -79.111882 0.000002 -2.460454 0.000000 0.879870 -0.033829 -4.403510 -0.000003 -0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000001 -23.251502 -0.000000 -3.051339 16.070134 80.933323 -0.000002 -0.000000 -0.000000 1.046034 0.047840 5.237181 -0.000001 0.000001 -0.000001 -0.000003 -0.000000 -0.000000 -0.000003 0.000000 -0.000000 0.000000 0.000003 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000002 0.000000 -0.000001 0.000003 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.284910 -20.548392 1.571699 0.020433 -7.637858 0.306114 -0.000002 -19.378071 -0.000001 -0.000003 -19.967880 -0.000000 0.000003 0.000025 -179.999991 0.000000 0.000003 -0.000000 0.000000 0.000003 -0.000000 0.000000 0.000003 -0.000000 -0.000000 -0.000004 0.000000 0.000000 0.000002 -0.000000 -0.557641 -0.046689 -78.839849 0.000002 -2.649173 0.000000 0.879870 -0.033830 -4.403510 -0.000000 -0.000003 0.000001 -0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000002 -23.866766 -0.000000 -3.058121 16.073839 80.809471 -0.000002 -0.000000 0.000000 1.046033 0.047840 5.237180 -0.000004 0.000001 -0.000001 -0.000002 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000003 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000004 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.299411 -21.036115 1.612547 0.021427 -7.820156 0.313510 -0.000003 -19.844807 -0.000000 -0.000002 -20.682832 -0.000000 0.000002 0.000022 -179.999991 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.557279 -0.047561 -78.562024 0.000000 -2.846999 0.000000 0.879867 -0.033829 -4.403511 -0.000004 0.000002 -0.000001 -0.000002 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000001 -0.000000 0.000002 -24.432669 0.000000 -3.063242 16.079372 80.678058 -0.000001 -0.000001 0.000000 1.046029 0.047840 5.237182 0.000002 0.000001 0.000000 -0.000004 -0.000001 0.000001 -0.000002 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000001 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000002 -0.000000 -0.000000 -0.000003 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.312921 -21.478264 1.649811 0.022351 -7.985633 0.320230 -0.000003 -20.270125 -0.000001 -0.000003 -21.380676 -0.000001 0.000002 0.000023 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000004 -0.000000 -0.000000 0.000001 0.000000 -0.556946 -0.048513 -78.278544 0.000001 -3.054134 0.000000 0.879866 -0.033827 -4.403513 0.000004 -0.000002 0.000000 0.000001 -0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000003 0.000000 0.000002 -24.945577 -0.000000 -3.066731 16.086970 80.538920 0.000002 -0.000000 0.000000 1.046035 0.047840 5.237181 -0.000002 -0.000001 -0.000001 -0.000001 -0.000001 -0.000000 0.000001 -0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000003 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000003 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.325238 -21.871678 1.683159 0.023192 -8.133107 0.326224 -0.000003 -20.651111 -0.000001 -0.000003 -22.059441 -0.000001 0.000002 0.000021 -179.999991 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.556645 -0.049532 -77.989443 0.000003 -3.270785 -0.000000 0.879867 -0.033829 -4.403510 -0.000001 0.000001 -0.000001 0.000003 -0.000000 0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000003 -0.000000 0.000002 -25.401870 -0.000000 -3.068617 16.096888 80.391825 0.000000 -0.000000 0.000000 1.046035 0.047839 5.237182 0.000003 0.000003 0.000001 0.000001 -0.000000 0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000003 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000003 -0.000000 0.000001 -0.000004 0.000000 0.000001 -0.000004 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.336159 -22.213227 1.712260 0.023936 -8.261364 0.331440 -0.000002 -20.984872 -0.000001 -0.000003 -22.717192 -0.000001 0.000002 0.000020 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000003 -0.000000 -0.556382 -0.050646 -77.694891 0.000003 -3.497154 -0.000000 0.879872 -0.033830 -4.403510 -0.000003 0.000001 0.000000 0.000003 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 0.000001 -0.000000 0.000002 -25.797923 -0.000000 -3.068925 16.109377 80.236554 -0.000001 -0.000001 0.000002 1.046037 0.047840 5.237182 0.000000 0.000002 0.000001 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000002 0.000000 -0.000001 0.000000 0.000001 0.000003 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000001 -0.000000 0.000001 0.000003 -0.000000 0.000001 0.000001 0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.345487 -22.499755 1.736783 0.024570 -8.369227 0.335829 -0.000003 -21.268480 -0.000000 -0.000003 -23.351976 -0.000001 0.000002 0.000019 -179.999991 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 -0.000000 0.000000 0.000000 -0.556160 -0.051835 -77.394923 -0.000002 -3.733441 0.000001 0.879871 -0.033828 -4.403511 -0.000003 0.000001 -0.000002 0.000003 -0.000000 -0.000001 -0.000003 0.000001 0.000001 0.000000 0.000000 0.000000 0.000002 -26.130139 0.000000 -3.067684 16.124695 80.072951 -0.000004 -0.000001 0.000000 1.046038 0.047839 5.237180 0.000002 0.000000 0.000000 0.000004 -0.000000 0.000000 -0.000002 -0.000001 0.000000 0.000000 -0.000003 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000002 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.353030 -22.728127 1.756402 0.025084 -8.455477 0.339341 -0.000003 -21.498973 -0.000001 -0.000003 -23.961868 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000004 -0.000000 -0.555982 -0.053106 -77.089688 0.000002 -3.979853 -0.000001 0.879872 -0.033830 -4.403511 -0.000001 -0.000003 0.000000 0.000004 -0.000001 -0.000001 0.000000 0.000001 -0.000000 0.000000 0.000005 -0.000000 0.000002 -26.394882 -0.000000 -3.064913 16.143103 79.900776 -0.000001 -0.000001 0.000000 1.046035 0.047841 5.237180 0.000004 0.000001 0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000003 -0.000000 -0.000000 -0.000002 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000002 0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.358611 -22.895180 1.770795 0.025465 -8.518915 0.341924 -0.000003 -21.673358 -0.000000 -0.000003 -24.544961 -0.000001 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.555853 -0.054470 -76.779236 0.000004 -4.236588 -0.000001 0.879867 -0.033831 -4.403508 -0.000001 0.000000 -0.000000 0.000002 -0.000002 0.000000 0.000001 0.000001 -0.000000 0.000000 0.000004 -0.000000 0.000002 -26.588521 -0.000000 -3.060631 16.164819 79.719851 -0.000003 -0.000001 -0.000000 1.046036 0.047840 5.237182 -0.000006 0.000004 0.000001 0.000002 -0.000000 0.000000 -0.000003 -0.000000 -0.000000 0.000000 -0.000004 0.000000 0.000000 0.000002 0.000000 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000000 0.000000 -0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.362063 -22.997756 1.779650 0.025704 -8.558342 0.343530 -0.000002 -21.788626 -0.000001 -0.000003 -25.099323 -0.000001 0.000002 0.000022 -179.999991 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000003 -0.000000 0.000000 0.000000 -0.000000 -0.555776 -0.055918 -76.463667 0.000004 -4.503849 -0.000000 0.879868 -0.033828 -4.403511 -0.000009 0.000000 -0.000001 0.000003 -0.000000 -0.000001 -0.000001 0.000000 0.000000 0.000000 0.000005 0.000000 0.000002 -26.707411 -0.000000 -3.054852 16.190132 79.529944 -0.000001 -0.000001 -0.000001 1.046035 0.047840 5.237182 -0.000000 -0.000000 0.000002 0.000003 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000004 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.363243 -23.032661 1.782666 0.025790 -8.572547 0.344109 -0.000003 -21.841688 -0.000000 -0.000003 -25.623062 -0.000000 0.000003 0.000023 -179.999991 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000002 0.000000 -0.555756 -0.057457 -76.143072 0.000002 -4.781833 0.000001 0.879870 -0.033828 -4.403510 -0.000003 -0.000000 0.000000 0.000003 0.000000 -0.000002 -0.000001 0.000001 0.000000 -0.000000 0.000005 -0.000000 0.000002 -26.747871 0.000000 -3.047587 16.219268 79.330865 -0.000001 -0.000001 -0.000000 1.046037 0.047840 5.237182 0.000000 0.000004 -0.000000 0.000001 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000004 0.000000 0.000000 0.000002 -0.000000 -0.000000 0.000003 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 0.116206 -0.000000 -0.000000 0.352208 -22.997901 1.778349 0.003342 -8.560751 0.342841 -0.055140 -21.851421 -0.003580 -0.032212 -26.120233 0.002472 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000003 -0.000000 -0.003748 -0.021326 -0.029988 -0.555642 -0.089851 -75.817764 -0.000000 -5.070631 0.000001 0.942304 -0.036147 -4.345855 0.000000 -0.000001 0.000001 0.000002 -0.000001 0.000001 -0.000003 0.000001 -0.000000 0.000000 0.000003 0.000000 0.003673 -26.687574 0.031693 -3.033861 16.255989 79.114457 -0.000002 0.025372 -0.000000 1.108234 0.050511 5.178407 0.000002 0.000001 0.000001 -0.000002 -0.000000 0.000001 -0.000003 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000004 0.000000 -0.120921 -0.012068 0.000210 0.008465 0.000035 -0.000388 0.008297 0.000932 -0.000833 -0.000013 0.000016 -0.000030 0.000000 0.000000 -0.000000 -0.000013 0.000015 -0.000030 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000135 -0.120897 0.011325 0.000282 0.007808 0.000049 -0.000581 0.009875 -0.001097 0.000878 0.000015 -0.000013 0.000025 -0.000000 -0.000000 0.000000 0.000016 -0.000013 0.000025 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 0.458190 -0.000000 -0.000000 0.319814 -22.895749 1.765711 -0.062637 -8.523757 0.339049 -0.217373 -21.839424 -0.014087 -0.127088 -26.596521 0.009170 0.000002 0.000021 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.014826 -0.084001 -0.118127 -0.554941 -0.182016 -75.488309 0.000002 -5.369677 0.000002 1.125903 -0.042603 -4.176302 0.000000 -0.000003 -0.000001 0.000001 -0.000000 -0.000001 -0.000000 0.000001 0.000001 0.000000 0.000002 0.000000 0.014238 -26.510304 0.124742 -3.008972 16.303452 78.873556 0.000004 0.099930 0.000001 1.291158 0.057988 5.005544 -0.000001 0.000002 -0.000001 -0.000000 0.000001 0.000000 0.000001 0.000001 0.000001 0.000000 0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 -0.476839 -0.047591 0.000682 0.033339 0.000130 -0.001926 0.032675 0.003667 -0.003288 -0.000008 0.000016 -0.000030 -0.000000 -0.000000 -0.000000 -0.000007 0.000017 -0.000030 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -0.476747 0.044657 0.001251 0.030749 0.000185 -0.001997 0.038913 -0.004324 0.003466 0.000009 -0.000014 0.000027 0.000000 -0.000000 -0.000000 0.000012 -0.000015 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 1.016676 -0.000000 -0.000000 0.267158 -22.729372 1.745283 -0.170087 -8.462756 0.332935 -0.481912 -21.806603 -0.031083 -0.281997 -27.052440 0.019097 0.000002 0.000021 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.033075 -0.186033 -0.261705 -0.553156 -0.331162 -75.155235 0.000001 -5.678187 0.000000 1.425338 -0.051967 -3.899772 0.000001 -0.000004 0.000000 0.000003 -0.000000 0.000001 -0.000004 0.000000 0.000001 0.000000 0.000002 -0.000000 0.030736 -26.221388 0.276006 -2.973350 16.361042 78.609542 -0.000003 0.221346 0.000000 1.589498 0.069001 4.723611 0.000002 0.000001 0.000001 -0.000003 -0.000001 0.000001 -0.000003 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000003 0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 0.000000 0.000001 -0.000002 -0.000000 0.000001 -0.000001 -0.000000 -1.058271 -0.105625 0.000978 0.073842 0.000283 -0.004431 0.072377 0.008120 -0.007286 -0.000011 0.000015 -0.000029 -0.000000 0.000000 -0.000000 -0.000012 0.000015 -0.000029 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 -1.058065 0.099092 0.003280 0.068104 0.000406 -0.004303 0.086199 -0.009576 0.007682 0.000011 -0.000012 0.000028 0.000000 -0.000000 -0.000000 0.000011 -0.000013 0.000026 0.000000 0.000002 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 1.783146 -0.000000 -0.000000 0.195382 -22.501899 1.717664 -0.316936 -8.378914 0.324750 -0.843927 -21.753784 -0.054016 -0.494290 -27.488537 0.031367 0.000002 0.000021 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000002 -0.000000 -0.058438 -0.325451 -0.458042 -0.549813 -0.534501 -74.819026 0.000002 -5.995376 0.000001 1.835471 -0.062443 -3.521002 -0.000001 0.000001 0.000000 0.000004 0.000001 -0.000000 0.000001 0.000001 -0.000000 -0.000000 0.000003 -0.000000 0.051870 -25.825970 0.482233 -2.927409 16.428128 78.323671 -0.000000 0.387299 0.000000 1.998160 0.081702 4.337417 -0.000000 0.000003 0.000000 -0.000004 -0.000000 -0.000001 -0.000002 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000003 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 -1.856616 -0.185310 0.000426 0.129191 0.000489 -0.007855 0.126629 0.014199 -0.012754 -0.000010 0.000016 -0.000030 0.000000 0.000000 0.000000 -0.000010 0.000016 -0.000028 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000136 -1.856251 0.173796 0.006963 0.119154 0.000704 -0.007454 0.150813 -0.016747 0.013448 0.000009 -0.000013 0.000027 0.000000 -0.000000 -0.000000 0.000008 -0.000013 0.000027 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 2.749661 -0.000000 -0.000001 0.105657 -22.216437 1.683510 -0.501106 -8.273389 0.314781 -1.298545 -21.681846 -0.082241 -0.761295 -27.905289 0.045196 0.000002 0.000022 -179.999991 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.090937 -0.500250 -0.704484 -0.544463 -0.789248 -74.480180 0.000000 -6.320459 0.000001 2.351303 -0.071769 -3.044599 -0.000003 -0.000001 -0.000001 0.000005 0.000001 0.000000 -0.000001 0.000000 0.000000 0.000000 0.000006 -0.000000 0.076091 -25.329167 0.740105 -2.871563 16.504064 78.017262 -0.000001 0.595469 0.000000 2.512179 0.093760 3.851635 0.000000 0.000002 -0.000000 -0.000006 -0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000001 -0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000003 0.000000 0.000001 0.000002 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000002 0.000000 -2.863957 -0.285829 -0.001856 0.198610 0.000743 -0.012149 0.194671 0.021817 -0.019618 -0.000008 0.000017 -0.000032 -0.000000 0.000000 0.000000 -0.000009 0.000017 -0.000030 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000137 -2.863382 0.267968 0.013097 0.183177 0.001076 -0.011407 0.231857 -0.025731 0.020690 0.000007 -0.000015 0.000026 0.000000 -0.000000 -0.000000 0.000007 -0.000016 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 3.908686 -0.000000 -0.000001 -0.000823 -21.876088 1.643515 -0.720516 -8.147352 0.303342 -1.840849 -21.591587 -0.115038 -1.080318 -28.303203 0.059898 0.000002 0.000021 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000002 0.000000 -0.130661 -0.708445 -0.998395 -0.536689 -1.092599 -74.139190 0.000001 -6.652654 0.000000 2.967907 -0.077288 -2.475109 0.000001 0.000003 -0.000001 0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000001 -0.000000 0.000005 -0.000000 0.101650 -24.735995 1.046267 -2.806224 16.588228 77.691626 -0.000001 0.843543 -0.000000 3.126704 0.102456 3.270876 0.000001 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 0.000003 -0.000000 0.000000 -0.000005 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000003 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 -4.072855 -0.406384 -0.006927 0.281313 0.001039 -0.017265 0.275738 0.030880 -0.027806 -0.000007 0.000016 -0.000029 0.000000 0.000000 -0.000000 -0.000007 0.000016 -0.000029 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 -4.072020 0.380816 0.022640 0.259455 0.001512 -0.016115 0.328409 -0.036426 0.029344 0.000009 -0.000013 0.000026 0.000000 0.000000 -0.000000 0.000007 -0.000014 0.000026 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 5.252909 -0.000001 -0.000001 -0.122848 -21.483959 1.598406 -0.973080 -8.001965 0.290772 -2.465870 -21.483851 -0.151624 -1.448632 -28.682806 0.074877 0.000002 0.000022 -179.999991 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000004 0.000000 -0.177747 -0.948005 -1.337160 -0.526105 -1.441771 -73.796526 0.000000 -6.991164 0.000001 3.680374 -0.076035 -1.817088 0.000002 -0.000001 0.000000 0.000002 -0.000000 -0.000001 -0.000001 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.126678 -24.051471 1.397366 -2.731808 16.679966 77.348061 0.000001 1.129210 0.000000 3.836836 0.104748 2.599752 -0.000002 -0.000000 0.000001 0.000003 -0.000000 0.000001 -0.000002 0.000000 0.000001 0.000000 0.000002 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000000 -5.476154 -0.546149 -0.016001 0.376524 0.001370 -0.023157 0.369065 0.041302 -0.037252 -0.000011 0.000018 -0.000031 -0.000000 0.000000 0.000000 -0.000011 0.000018 -0.000031 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -5.475001 0.511518 0.036701 0.347266 0.002007 -0.021537 0.439568 -0.048715 0.039319 0.000012 -0.000015 0.000030 0.000000 0.000000 -0.000000 0.000013 -0.000015 0.000030 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 6.775065 -0.000001 -0.000001 -0.259210 -21.043154 1.548919 -1.256710 -7.838397 0.277420 -3.168584 -21.359473 -0.191170 -1.863479 -29.044553 0.089622 0.000002 0.000023 -179.999991 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.232361 -1.216918 -1.718173 -0.512360 -1.833931 -73.452708 0.000003 -7.335210 0.000001 4.483711 -0.064805 -1.075153 -0.000005 0.000001 -0.000000 0.000001 -0.000001 0.000001 0.000000 0.000000 0.000001 0.000000 0.000002 -0.000000 0.149235 -23.280638 1.790081 -2.648731 16.778641 76.987884 0.000001 1.450153 0.000000 4.637625 0.097350 1.842944 0.000004 0.000003 -0.000000 -0.000001 0.000000 0.000000 0.000002 0.000001 0.000000 0.000000 0.000002 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000003 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000002 0.000000 0.000000 0.000001 0.000000 -7.066788 -0.704241 -0.030421 0.483462 0.001730 -0.029772 0.473888 0.052989 -0.047882 -0.000008 0.000018 -0.000033 0.000000 0.000000 0.000000 -0.000009 0.000018 -0.000032 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000136 -7.065252 0.659191 0.056501 0.445893 0.002552 -0.027628 0.564423 -0.062497 0.050555 0.000006 -0.000014 0.000027 -0.000000 -0.000000 -0.000000 0.000007 -0.000014 0.000025 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 8.467771 -0.000001 -0.000002 -0.408697 -20.556759 1.495797 -1.569314 -7.657819 0.263647 -3.943911 -21.219299 -0.232820 -2.322064 -29.388907 0.103704 0.000003 0.000022 -179.999991 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000003 0.000000 -0.294690 -1.513143 -2.138833 -0.495142 -2.266259 -73.108173 0.000003 -7.684001 0.000000 5.372795 -0.040241 -0.254063 -0.000001 -0.000001 0.000000 0.000004 -0.000001 0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000001 -0.000000 0.167367 -22.428557 2.221144 -2.557422 16.883615 76.612422 -0.000002 1.804059 -0.000000 5.524003 0.076825 1.005270 -0.000001 0.000001 0.000000 -0.000002 -0.000000 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000001 0.000000 -0.000001 0.000002 -0.000000 -0.000001 0.000001 0.000000 -0.000001 -0.000001 0.000000 -0.000001 0.000002 0.000000 0.000002 0.000003 -0.000000 0.000002 0.000003 -0.000000 -8.837577 -0.879679 -0.051630 0.601345 0.002114 -0.037067 0.589444 0.065850 -0.059624 -0.000012 0.000015 -0.000032 0.000000 0.000000 0.000000 -0.000012 0.000014 -0.000030 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -8.835586 0.822857 0.083355 0.554613 0.003142 -0.034343 0.702061 -0.077660 0.062978 0.000011 -0.000015 0.000031 -0.000000 -0.000000 -0.000000 0.000011 -0.000016 0.000029 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 10.323368 -0.000001 -0.000002 -0.570118 -20.027908 1.439773 -1.908802 -7.461407 0.249811 -4.786710 -21.064209 -0.275700 -2.821550 -29.716333 0.116766 0.000003 0.000022 -179.999991 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -0.364920 -1.834622 -2.596547 -0.474171 -2.735915 -72.763385 -0.000003 -8.036742 0.000001 6.342328 0.001083 0.641240 -0.000002 0.000000 0.000000 0.000005 -0.000000 0.000000 -0.000002 0.000001 0.000000 0.000000 -0.000000 0.000000 0.179153 -21.500409 2.687377 -2.458306 16.994241 76.222965 -0.000002 2.188608 -0.000001 6.490711 0.039655 0.091739 0.000000 -0.000000 -0.000001 -0.000004 0.000001 -0.000001 -0.000002 -0.000000 -0.000001 0.000000 0.000003 -0.000001 0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000002 -0.000000 0.000000 -0.000001 0.000000 -10.781051 -1.071352 -0.081133 0.729393 0.002512 -0.044992 0.714968 0.079793 -0.072407 -0.000015 0.000019 -0.000035 -0.000000 0.000000 0.000000 -0.000014 0.000019 -0.000035 -0.000002 0.000001 0.000000 -0.000000 0.000002 0.000136 -10.778521 1.001412 0.118628 0.672710 0.003768 -0.041640 0.851576 -0.094097 0.076506 0.000005 -0.000017 0.000030 -0.000000 0.000000 -0.000000 0.000006 -0.000016 0.000030 0.000000 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 12.333758 -0.000002 -0.000002 -0.742287 -19.459720 1.381567 -2.273080 -7.250344 0.236267 -5.691782 -20.895116 -0.318933 -3.359065 -30.027277 0.128527 0.000003 0.000021 -179.999991 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.443231 -2.179285 -3.088718 -0.449216 -3.240055 -72.418822 0.000005 -8.392648 -0.000000 7.386772 0.062596 1.605589 0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000003 0.000000 0.182749 -20.501448 3.185694 -2.351830 17.109895 75.820858 0.000002 2.601479 0.000001 7.532236 -0.017680 -0.892406 -0.000001 0.000001 -0.000000 0.000002 0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000000 0.000001 -0.000001 0.000000 0.000000 -0.000002 0.000000 -0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000001 0.000001 -0.000001 -0.000000 0.000001 -0.000002 -0.000000 -12.889279 -1.277983 -0.120466 0.866826 0.002922 -0.053497 0.849701 0.094723 -0.086157 -0.000016 0.000020 -0.000037 -0.000000 -0.000000 -0.000000 -0.000016 0.000019 -0.000038 -0.000002 0.000000 0.000000 -0.000000 0.000003 0.000137 -12.886117 1.193603 0.163709 0.799459 0.004422 -0.049471 1.012050 -0.111699 0.091081 0.000013 -0.000017 0.000031 0.000000 0.000000 0.000000 0.000015 -0.000017 0.000029 -0.000000 0.000001 0.000000 0.000000 0.000003 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 14.490274 -0.000002 -0.000003 -0.924048 -18.855347 1.321871 -2.660054 -7.025817 0.223358 -6.653866 -20.712941 -0.361662 -3.931691 -30.322164 0.138760 0.000003 0.000022 -179.999991 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 -0.000000 -0.000000 -0.000004 0.000000 -0.529777 -2.545052 -3.612748 -0.420084 -3.775809 -72.074936 -0.000002 -8.750918 -0.000000 8.500332 0.147631 2.633537 0.000003 0.000000 0.000001 0.000004 0.000000 0.000000 -0.000003 0.000000 -0.000001 -0.000000 0.000001 0.000001 0.176415 -19.437060 3.713119 -2.238448 17.229948 75.407406 -0.000002 3.040341 -0.000001 8.642805 -0.098611 -1.941646 -0.000001 0.000001 -0.000000 -0.000001 -0.000001 0.000001 -0.000002 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000002 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000001 -0.000001 -15.153692 -1.498113 -0.171146 1.012862 0.003333 -0.062538 0.992860 0.110557 -0.100812 -0.000009 0.000019 -0.000037 0.000000 -0.000000 0.000000 -0.000008 0.000018 -0.000037 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000136 -15.149780 1.397995 0.219962 0.934143 0.005100 -0.057794 1.182583 -0.130362 0.106622 0.000011 -0.000017 0.000028 -0.000000 -0.000000 -0.000000 0.000012 -0.000016 0.000027 -0.000000 0.000000 0.000000 0.000000 0.000003 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 16.783576 -0.000002 -0.000003 -1.114271 -18.217964 1.261348 -3.067630 -6.789033 0.211414 -7.667652 -20.518696 -0.403049 -4.536466 -30.601409 0.147308 0.000002 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000004 0.000000 -0.624679 -2.929826 -4.166027 -0.386624 -4.340297 -71.732197 0.000005 -9.110759 0.000000 9.676904 0.259339 3.719362 -0.000001 -0.000001 0.000001 0.000001 -0.000000 0.000000 0.000002 0.000001 -0.000001 0.000000 -0.000003 0.000000 0.158559 -18.312767 4.266794 -2.118630 17.353779 74.983968 -0.000000 3.502863 0.000002 9.816339 -0.206372 -3.050169 -0.000002 0.000003 0.000000 -0.000002 -0.000001 0.000000 0.000001 -0.000002 0.000001 0.000000 0.000000 -0.000000 -0.000002 -0.000000 0.000001 -0.000002 -0.000001 0.000000 -0.000001 -0.000002 0.000000 -0.000001 -0.000002 0.000001 -0.000000 -0.000001 0.000001 -0.000001 0.000000 0.000001 -17.564950 -1.730073 -0.234626 1.166722 0.003742 -0.072064 1.143695 0.127198 -0.116295 -0.000012 0.000018 -0.000035 -0.000000 -0.000000 -0.000000 -0.000014 0.000018 -0.000034 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 -17.560155 1.612969 0.288681 1.076040 0.005790 -0.066564 1.362263 -0.149971 0.123051 0.000013 -0.000014 0.000030 0.000000 0.000000 -0.000000 0.000013 -0.000013 0.000028 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 19.203512 -0.000003 -0.000003 -1.311847 -17.550758 1.200621 -3.493721 -6.541184 0.200737 -8.727765 -20.313384 -0.442303 -5.170395 -30.865454 0.154063 0.000003 0.000024 -179.999991 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.728012 -3.331481 -4.745939 -0.348735 -4.930623 -71.391036 0.000002 -9.471381 -0.000000 10.910109 0.400617 4.857030 0.000001 -0.000001 0.000000 0.000004 -0.000000 -0.000000 -0.000002 -0.000001 -0.000001 -0.000000 -0.000001 0.000000 0.127753 -17.134228 4.843973 -1.992856 17.480788 74.551897 -0.000002 3.986700 0.000001 11.046444 -0.343952 -4.211843 -0.000001 0.000000 -0.000000 -0.000002 -0.000001 0.000000 -0.000001 -0.000000 0.000003 -0.000000 0.000000 0.000001 0.000001 0.000001 -0.000000 0.000002 0.000001 -0.000000 0.000001 0.000004 0.000000 0.000000 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000002 0.000000 -0.000001 -20.112805 -1.971984 -0.312237 1.327623 0.004142 -0.082025 1.301444 0.144555 -0.132532 -0.000008 0.000023 -0.000043 0.000000 0.000000 -0.000000 -0.000010 0.000022 -0.000042 -0.000001 0.000000 -0.000000 -0.000000 0.000002 0.000138 -20.106988 1.836711 0.371039 1.224431 0.006491 -0.075739 1.550171 -0.170424 0.140304 0.000011 -0.000013 0.000029 -0.000000 0.000000 0.000000 0.000011 -0.000015 0.000027 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 21.739112 -0.000003 -0.000004 -1.515704 -16.856948 1.140272 -3.936229 -6.283499 0.191615 -9.828801 -20.098076 -0.478682 -5.830431 -31.114667 0.158970 0.000003 0.000023 -179.999991 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000000 -0.000001 0.000000 -0.839796 -3.747920 -5.349848 -0.306355 -5.543884 -71.051931 0.000001 -9.831980 0.000000 12.193226 0.574004 6.040232 -0.000002 -0.000001 0.000000 0.000002 0.000000 0.000000 -0.000002 -0.000001 -0.000001 0.000001 0.000001 -0.000000 0.082750 -15.907260 5.442029 -1.861622 17.610352 74.112552 -0.000001 4.489506 0.000002 12.326422 -0.513980 -5.420242 -0.000000 0.000004 -0.000000 -0.000001 0.000001 -0.000000 -0.000002 -0.000001 0.000003 0.000001 -0.000002 0.000001 -0.000001 0.000003 0.000000 -0.000001 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000001 0.000001 0.000000 0.000002 -0.000001 0.000001 0.000001 -0.000001 0.000000 -22.786042 -2.221756 -0.405136 1.494784 0.004528 -0.092376 1.465327 0.162543 -0.149452 -0.000012 0.000019 -0.000039 0.000000 -0.000000 0.000000 -0.000012 0.000019 -0.000040 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000138 -22.779036 2.067214 0.468034 1.378594 0.007193 -0.085271 1.745398 -0.191614 0.158296 0.000010 -0.000015 0.000031 -0.000000 0.000000 -0.000000 0.000012 -0.000015 0.000031 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 24.378496 -0.000004 -0.000004 -1.724793 -16.139776 1.080836 -4.393075 -6.017186 0.184296 -10.965307 -19.873902 -0.511507 -6.513496 -31.349486 0.162019 0.000004 0.000021 -179.999991 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 -0.000000 -0.000001 0.000000 0.000002 -0.959996 -4.177008 -5.975103 -0.259469 -6.177168 -70.715312 0.000001 -10.191762 -0.000001 13.519276 0.781616 7.262367 0.000002 -0.000001 -0.000001 0.000002 -0.000000 -0.000000 -0.000003 -0.000000 -0.000001 -0.000000 0.000000 -0.000002 0.022508 -14.637831 6.058432 -1.725443 17.741898 73.667306 -0.000002 5.008927 -0.000001 13.649283 -0.718651 -6.668656 -0.000000 0.000002 0.000001 0.000001 -0.000001 -0.000001 -0.000001 -0.000001 -0.000000 -0.000001 -0.000002 0.000000 -0.000001 -0.000001 0.000001 -0.000001 -0.000001 0.000001 -0.000001 -0.000001 0.000001 -0.000001 -0.000002 0.000001 -0.000000 -0.000001 0.000001 0.000000 -0.000002 0.000000 -25.572377 -2.477102 -0.514243 1.667423 0.004896 -0.103069 1.634589 0.181067 -0.166976 -0.000015 0.000022 -0.000041 0.000000 0.000000 0.000000 -0.000017 0.000023 -0.000038 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000136 -25.563989 2.302301 0.580438 1.537808 0.007891 -0.095118 1.947028 -0.213434 0.176953 0.000013 -0.000016 0.000035 -0.000000 -0.000000 -0.000000 0.000014 -0.000016 0.000032 0.000000 0.000000 0.000000 0.000000 0.000002 -0.000099 0.000002 -0.000000 -0.000000 0.000002 -0.000000 -0.000000
0.000000 1.067000 -0.000000 27.108884 -0.000004 -0.000004 -1.938107 -15.402498 1.022798 -4.862158 -5.743479 0.179004 -12.131802 -19.641983 -0.540179 -7.216473 -31.570306 0.163233 0.000003 0.000021 -179.999991 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000003 -0.000001 -1.088487 -4.616615 -6.619028 -0.208118 -6.827539 -70.381657 -0.000001 -10.549930 0.000000 14.881053 1.025060 8.516612 -0.000004 0.000001 -0.000001 -0.000002 -0.000000 0.000000 -0.000000 0.000002 -0.000001 -0.000002 0.000002 -0.000000 -0.053800 -13.332009 6.690744 -1.584851 17.874848 73.217511 0.000001 5.542600 0.000000 15.007777 -0.959639 -7.950123 -0.000000 0.000001 0.000000 -0.000002 0.000001 0.000000 -0.000001 -0.000001 0.000002 -0.000001 -0.000004 0.000001 -0.000002 -0.000001 0.000000 -0.000002 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -28.458477 -2.735579 -0.640192 1.844757 0.005239 -0.114051 1.808466 0.200043 -0.185038 -0.000013 0.000021 -0.000040 -0.000000 0.000000 -0.000000 -0.000015 0.000022 -0.000040 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000137 -28.448489 2.539658 0.708744 1.701353 0.008580 -0.105235 2.154157 -0.235778 0.196197 0.000012 -0.000015 0.000030 -0.000000 0.000000 0.000000 0.000012 -0.000016 0.000029 -0.000002 -0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 29.916673 -0.000005 -0.000005 -2.154677 -14.648406 0.966595 -5.341414 -5.463623 0.175924 -13.322799 -19.403528 -0.564176 -7.936215 -31.777500 0.162680 0.000003 0.000022 -179.999991 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000001 0.000001 -0.000000 -0.000001 -1.225081 -5.064607 -7.278927 -0.152377 -7.492075 -70.051424 0.000002 -10.905685 0.000000 16.271128 1.305389 9.795952 0.000001 -0.000000 -0.000001 0.000003 0.000000 0.000000 -0.000002 0.000000 -0.000001 0.000001 0.000000 -0.000000 -0.146783 -11.996022 7.336616 -1.440400 18.008639 72.764601 0.000000 6.088167 -0.000000 16.394467 -1.238057 -9.257482 0.000001 -0.000000 0.000000 0.000000 0.000001 0.000001 0.000000 -0.000002 0.000001 -0.000002 -0.000004 0.000001 -0.000002 0.000001 -0.000000 -0.000003 0.000000 -0.000000 -0.000001 0.000001 0.000000 -0.000002 0.000001 0.000000 0.000001 0.000001 -0.000001 0.000002 -0.000000 -0.000001 -31.429952 -2.994626 -0.783280 2.026006 0.005555 -0.125278 1.986184 0.219379 -0.203554 -0.000017 0.000022 -0.000043 0.000000 0.000000 0.000000 -0.000019 0.000024 -0.000043 -0.000001 0.000000 0.000000 -0.000000 0.000002 0.000136 -31.418133 2.776872 0.853126 1.868506 0.009254 -0.115578 2.365872 -0.258543 0.215952 0.000014 -0.000015 0.000032 0.000000 -0.000000 0.000000 0.000016 -0.000016 0.000029 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 32.787422 -0.000005 -0.000005 -2.373542 -13.880795 0.912607 -5.828743 -5.178847 0.175204 -14.532790 -19.159756 -0.583072 -8.669535 -31.971477 0.160459 0.000000 0.000020 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 -0.000001 -1.369500 -5.518881 -7.952076 -0.092382 -8.167828 -69.725132 -0.000000 -11.258218 0.000001 17.681931 1.623023 11.093233 -0.000000 -0.000002 -0.000001 0.000004 -0.000000 0.000000 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.256801 -10.636187 7.993744 -1.292646 18.142710 72.309956 0.000000 6.643257 -0.000000 17.801744 -1.554378 -10.583440 0.000001 0.000003 -0.000001 -0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000001 -0.000001 0.000002 -0.000001 -0.000000 0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000002 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -34.471439 -3.251618 -0.943423 2.210385 0.005840 -0.136701 2.166973 0.238991 -0.222457 -0.000014 0.000023 -0.000042 -0.000000 0.000000 -0.000000 -0.000015 0.000023 -0.000042 -0.000000 0.000001 0.000000 -0.000001 0.000002 0.000136 -34.457563 3.011492 1.013403 2.038547 0.009910 -0.126099 2.581249 -0.281628 0.236136 0.000016 -0.000018 0.000035 -0.000000 0.000000 -0.000000 0.000016 -0.000018 0.000034 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 35.706036 -0.000006 -0.000005 -2.593782 -13.103000 0.861163 -6.322078 -4.890406 0.176954 -15.756277 -18.911897 -0.596532 -9.413228 -32.152637 0.156691 0.000002 0.000022 -179.999991 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000001 -1.521386 -5.977309 -8.635713 -0.028303 -8.851859 -69.403226 0.000002 -11.606742 -0.000000 19.105801 1.977729 12.401246 -0.000003 -0.000001 0.000000 -0.000001 0.000000 -0.000000 0.000002 0.000001 -0.000000 0.000001 0.000002 -0.000000 -0.384003 -9.258905 8.659868 -1.142179 18.276533 71.855011 -0.000000 7.205478 -0.000001 19.221945 -1.908397 -11.920632 0.000002 0.000003 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000000 -0.000001 0.000001 -0.000001 -0.000000 -0.000002 0.000001 0.000000 0.000000 -0.000001 0.000001 -0.000001 0.000000 0.000001 -0.000003 -0.000001 0.000000 0.000001 -0.000001 -0.000000 -0.000001 -0.000000 -0.000001 -37.566741 -3.503946 -1.120145 2.397113 0.006092 -0.148268 2.350079 0.258793 -0.241663 -0.000020 0.000023 -0.000046 -0.000000 -0.000000 -0.000000 -0.000021 0.000023 -0.000047 -0.000001 0.000000 -0.000000 -0.000000 0.000002 0.000137 -37.550532 3.241090 1.189017 2.210753 0.010541 -0.136758 2.799378 -0.304927 0.256661 0.000013 -0.000019 0.000034 0.000000 0.000000 -0.000000 0.000013 -0.000018 0.000035 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 38.656897 -0.000007 -0.000005 -2.814497 -12.318343 0.812536 -6.819345 -4.599541 0.181241 -16.987792 -18.661228 -0.604333 -10.164080 -32.321405 0.151514 0.000001 0.000023 -179.999991 -0.000000 0.000002 -0.000001 -0.000000 0.000002 -0.000001 -0.000000 0.000002 -0.000001 -0.000001 -0.000002 0.000002 -1.680267 -6.437823 -9.327060 0.039631 -9.541233 -69.086250 0.000005 -11.950444 -0.000000 20.535128 2.368597 13.712802 0.000001 -0.000001 -0.000000 0.000002 0.000002 -0.000000 0.000002 0.000001 -0.000001 0.000003 -0.000001 -0.000000 -0.528267 -7.870634 9.332756 -0.989601 18.409586 71.401145 0.000000 7.772469 -0.000002 20.647382 -2.299223 -13.261710 0.000000 -0.000002 -0.000002 0.000001 -0.000002 -0.000000 0.000000 0.000000 -0.000001 -0.000002 -0.000001 -0.000000 -0.000001 0.000001 0.000001 -0.000002 0.000003 -0.000001 -0.000001 0.000003 0.000000 0.000000 0.000002 0.000001 0.000003 -0.000000 -0.000001 0.000002 -0.000001 0.000000 -40.698932 -3.749077 -1.312550 2.585406 0.006307 -0.159935 2.534725 0.278696 -0.261088 -0.000017 0.000024 -0.000047 -0.000000 -0.000000 -0.000000 -0.000017 0.000024 -0.000047 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000136 -40.680135 3.463333 1.379032 2.384402 0.011145 -0.147508 3.019348 -0.328347 0.277453 0.000015 -0.000017 0.000032 0.000000 0.000000 -0.000000 0.000016 -0.000017 0.000030 -0.000001 -0.000000 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 41.623962 -0.000007 -0.000006 -3.034833 -11.530167 0.766949 -7.318477 -4.307507 0.188091 -18.221883 -18.409030 -0.606353 -10.918827 -32.478140 0.145093 0.000001 0.000026 -179.999991 -0.000001 0.000002 0.000000 -0.000001 0.000002 0.000000 -0.000001 0.000002 -0.000000 0.000000 -0.000004 0.000002 -1.845601 -6.898333 -10.023292 0.111139 -10.233017 -68.774732 0.000003 -12.288525 -0.000001 21.962364 2.794041 15.020810 -0.000000 0.000000 -0.000001 0.000001 0.000001 -0.000000 0.000000 -0.000001 -0.000002 0.000001 0.000002 -0.000000 -0.689256 -6.477874 10.010168 -0.835522 18.541365 70.949847 0.000000 8.341843 -0.000002 22.070486 -2.725278 -14.599406 0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000000 0.000000 -0.000000 -0.000001 -0.000001 -0.000001 0.000000 -0.000002 0.000001 -0.000000 -0.000001 0.000002 0.000000 -0.000001 -0.000001 0.000000 -0.000003 0.000001 -0.000000 -0.000004 -0.000002 0.000001 -0.000004 -0.000000 -0.000000 -43.850586 -3.984644 -1.519351 2.774482 0.006483 -0.171649 2.720145 0.298620 -0.280661 -0.000017 0.000024 -0.000047 0.000000 -0.000001 0.000000 -0.000016 0.000024 -0.000046 -0.000001 0.000000 -0.000000 0.000000 0.000001 0.000136 -43.828945 3.676052 1.582143 2.558774 0.011722 -0.158303 3.240242 -0.351778 0.298415 0.000014 -0.000019 0.000036 -0.000000 -0.000000 -0.000000 0.000015 -0.000019 0.000035 -0.000002 -0.000001 0.000000 0.000000 0.000004 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 44.591033 -0.000008 -0.000006 -3.253933 -10.741826 0.724571 -7.817401 -4.015548 0.197491 -19.453135 -18.156566 -0.602566 -11.674228 -32.623282 0.137597 0.000002 0.000024 -179.999991 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000 0.000002 -0.000000 -0.000001 -0.000004 -0.000001 -2.016729 -7.356816 -10.721565 0.185912 -10.924274 -68.469190 0.000001 -12.620193 -0.000000 23.380069 3.251788 16.318333 0.000001 -0.000001 0.000000 0.000004 0.000001 -0.000000 0.000001 0.000001 0.000001 0.000005 -0.000001 -0.000003 -0.866362 -5.087098 10.689845 -0.680586 18.671388 70.502551 0.000001 8.911212 -0.000001 23.483797 -3.184278 -15.926627 -0.000002 0.000000 0.000002 -0.000001 -0.000002 -0.000002 0.000000 -0.000001 -0.000000 -0.000001 0.000002 -0.000001 0.000003 -0.000000 -0.000000 0.000005 -0.000001 0.000000 0.000006 -0.000001 0.000000 0.000002 -0.000000 0.000000 -0.000008 -0.000002 0.000001 -0.000006 -0.000002 0.000001 -47.003972 -4.208506 -1.738884 2.963559 0.006623 -0.183364 2.905571 0.318481 -0.300300 -0.000018 0.000024 -0.000047 0.000000 0.000000 -0.000000 -0.000019 0.000023 -0.000047 -0.000001 0.000001 0.000000 -0.000001 0.000002 0.000137 -46.979226 3.877312 1.796708 2.733145 0.012260 -0.169102 3.461151 -0.375133 0.319472 0.000011 -0.000016 0.000034 -0.000001 0.000000 -0.000000 0.000011 -0.000017 0.000033 -0.000002 -0.000001 -0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 47.541877 -0.000009 -0.000006 -3.470970 -9.956678 0.685519 -8.314048 -3.724913 0.209376 -20.676204 -17.905121 -0.593067 -12.427011 -32.757215 0.129212 0.000002 0.000027 -179.999991 0.000000 0.000003 0.000000 0.000000 0.000003 0.000000 0.000000 0.000003 0.000000 0.000001 -0.000003 -0.000001 -2.192905 -7.811258 -11.418984 0.263570 -11.612078 -68.170233 0.000004 -12.944634 -0.000000 24.781072 3.738939 17.598674 0.000000 -0.000002 0.000000 0.000006 -0.000001 0.000002 -0.000000 0.000001 0.000001 0.000003 -0.000001 0.000001 -1.058756 -3.704769 11.369476 -0.525441 18.799182 70.060706 0.000000 9.478201 -0.000000 24.880139 -3.673298 -17.236517 -0.000001 0.000003 0.000002 -0.000000 -0.000004 -0.000000 -0.000001 0.000001 0.000000 0.000004 -0.000002 0.000001 -0.000000 -0.000002 0.000001 0.000002 0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000001 -0.000000 -0.000001 -0.000002 0.000001 -0.000006 -0.000002 0.000001 -50.141313 -4.418825 -1.969159 3.151852 0.006722 -0.195033 3.090242 0.338196 -0.319922 -0.000018 0.000024 -0.000045 0.000000 0.000000 0.000000 -0.000019 0.000025 -0.000046 -0.000001 0.000002 0.000000 -0.000000 0.000003 0.000135 -50.113231 4.065468 2.020788 2.906796 0.012768 -0.179857 3.681145 -0.398307 0.340529 0.000014 -0.000019 0.000037 0.000000 -0.000000 -0.000000 0.000016 -0.000020 0.000034 -0.000001 0.000000 -0.000000 -0.000000 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 50.460512 -0.000009 -0.000006 -3.685131 -9.178063 0.649864 -8.806348 -3.436845 0.223648 -21.885806 -17.655942 -0.578040 -13.173916 -32.880384 0.120125 0.000003 0.000022 -179.999991 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000001 0.000002 -0.000000 -2.373281 -8.259696 -12.112628 0.343703 -12.293531 -67.878420 0.000004 -13.261059 -0.000001 26.158470 4.251995 18.855449 -0.000000 -0.000001 -0.000000 0.000001 -0.000002 0.000001 0.000002 0.000004 -0.000001 0.000004 0.000000 -0.000003 -1.265340 -2.337273 12.046689 -0.370772 18.924304 69.625801 0.000001 10.040428 -0.000001 26.252565 -4.188787 -18.522522 -0.000003 0.000002 0.000001 0.000001 0.000001 0.000000 -0.000000 0.000003 -0.000000 -0.000002 0.000001 -0.000001 -0.000004 0.000002 -0.000000 -0.000002 0.000002 -0.000000 -0.000003 0.000001 -0.000000 -0.000005 0.000001 -0.000000 0.000005 0.000000 -0.000000 0.000000 0.000000 -0.000001 -53.244999 -4.614109 -2.207924 3.338580 0.006785 -0.206603 3.273376 0.357685 -0.339443 -0.000021 0.000023 -0.000043 -0.000000 0.000000 0.000000 -0.000022 0.000021 -0.000042 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000135 -53.213396 4.239215 2.252213 3.079001 0.013237 -0.190523 3.899320 -0.421211 0.361502 0.000014 -0.000018 0.000034 -0.000000 0.000001 0.000000 0.000016 -0.000018 0.000035 -0.000001 -0.000002 -0.000000 0.000000 0.000001 -0.000099 0.000002 -0.000000 0.000000 0.000002 -0.000000 0.000000
0.000000 1.067000 -0.000000 53.331254 -0.000010 -0.000006 -3.895619 -8.409340 0.617625 -9.292281 -3.152586 0.240165 -23.076728 -17.410277 -0.557777 -13.911674 -32.993181 0.110519 0.000001 0.000023 -179.999991 -0.000001 0.000003 -0.000001 -0.000001 0.000003 -0.000001 -0.000001 0.000003 -0.000001 -0.000002 0.000002 -0.000001 -2.556913 -8.700214 -12.799535 0.425842 -12.965736 -67.594407 0.000002 -13.568655 0.000000 27.505705 4.786922 20.082607 0.000000 0.000001 0.000000 -0.000003 -0.000001 0.000002 0.000000 0.000003 0.000001 -0.000001 -0.000000 -0.000000 -1.484790 -0.990919 12.719035 -0.217232 19.046314 69.199297 -0.000001 10.595511 -0.000002 27.594531 -4.726680 -19.778467 -0.000001 0.000001 0.000002 0.000001 -0.000000 0.000000 -0.000001 -0.000002 -0.000001 0.000001 0.000001 -0.000002 -0.000003 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000005 -0.000001 0.000000 -0.000003 0.000001 -0.000000 0.000001 0.000000 -0.000000 0.000003 0.000000 -0.000000 -56.297841 -4.793250 -2.452722 3.522961 0.006806 -0.218029 3.454219 0.376868 -0.358778 -0.000015 0.000026 -0.000047 0.000001 -0.000000 -0.000000 -0.000016 0.000024 -0.000046 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000135 -56.262515 4.397608 2.488638 3.249043 0.013670 -0.201059 4.114767 -0.443744 0.382288 0.000015 -0.000017 0.000034 -0.000000 0.000000 -0.000000 0.000017 -0.000018 0.000034 -0.000000 -0.000000 -0.000000 -0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 56.139032 -0.000011 -0.000006 -4.101646 -7.653834 0.588781 -9.769771 -2.873368 0.258745 -24.243835 -17.169328 -0.532655 -14.637037 -33.096040 0.100583 0.000003 0.000019 -179.999991 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000001 0.000001 0.000000 -2.742777 -9.130928 -13.476714 0.509490 -13.625805 -67.318795 0.000003 -13.866629 0.000001 28.816602 5.339218 21.274516 0.000002 -0.000002 0.000000 0.000003 -0.000003 0.000001 -0.000001 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -1.715532 0.328115 13.383955 -0.065536 19.164794 68.782641 0.000000 11.141080 -0.000001 28.899845 -5.282396 -20.998541 0.000001 0.000003 0.000002 0.000000 -0.000002 0.000000 -0.000000 -0.000000 0.000000 -0.000001 0.000001 -0.000001 -0.000001 0.000000 -0.000001 -0.000007 -0.000000 -0.000000 -0.000005 0.000001 -0.000000 -0.000002 0.000000 0.000000 0.000003 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 -59.283248 -4.955546 -2.700979 3.704210 0.006794 -0.229259 3.632002 0.395665 -0.377847 -0.000023 0.000025 -0.000048 0.000001 -0.000000 0.000000 -0.000023 0.000025 -0.000046 -0.000000 0.000002 0.000000 -0.000001 0.000002 0.000136 -59.244091 4.540095 2.727628 3.416196 0.014064 -0.211414 4.326547 -0.465821 0.402815 0.000014 -0.000017 0.000037 -0.000001 -0.000001 -0.000000 0.000015 -0.000017 0.000035 -0.000001 -0.000001 -0.000000 0.000000 0.000003 -0.000100 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000
0.000000 1.067000 -0.000000 58.869441 -0.000011 -0.000006 -4.302424 -6.914879 0.563266 -10.236764 -2.600412 0.279166 -25.382100 -16.934284 -0.503138 -15.346750 -33.189405 0.090498 0.000003 0.000015 -179.999991 0.000001 -0.000005 -0.000000 0.000001 -0.000005 -0.000000 0.000001 -0.000005 -0.000000 0.000000 0.000001 0.000001 -2.929733 -9.550011 -14.141131 0.594089 -14.270902 -67.052288 -0.000003 -14.154171 0.000001 30.085368 5.903989 22.425941 0.000001 -0.000001 0.000001 0.000000 -0.000001 0.000000 -0.000001 0.000002 -0.000001 -0.000001 -0.000001 0.000001 -1.955759 1.613791 14.038786 0.083622 19.279338 68.377379 0.000001 11.674760 -0.000002 30.162764 -5.850974 -22.177392 0.000004 0.000001 0.000001 0.000000 0.000000 0.000000 0.000001 0.000005 -0.000000 0.000003 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000002 -0.000001 0.000000 -0.000001 -0.000000 0.000000 0.000001 0.000000 0.000001 -0.000002 -0.000001 -0.000000 -0.000003 -0.000001 0.000000 -62.185478 -5.100698 -2.950079 3.881542 0.006747 -0.240248 3.805943 0.413998 -0.396557 -0.000019 0.000024 -0.000042 -0.000000 0.000000 -0.000000 -0.000020 0.000024 -0.000039 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000136 -62.142386 4.666496 2.966718 3.579743 0.014421 -0.221549 4.533774 -0.487347 0.422970 0.000014 -0.000017 0.000037 -0.000001 0.000000 -0.000000 0.000016 -0.000016 0.000035 -0.000000 0.000000 0.000000 -0.000000 0.000003 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 61.508804 -0.000012 -0.000006 -4.497185 -6.195785 0.540976 -10.691236 -2.334938 0.301173 -26.486545 -16.706270 -0.469775 -16.037598 -33.273693 0.080429 0.000003 0.000022 -179.999991 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000000 0.000000 -0.000002 -0.000001 -0.000001 0.000001 -0.000000 -3.116597 -9.955693 -14.789736 0.679055 -14.898159 -66.795596 -0.000001 -14.430487 -0.000001 31.306623 6.476012 23.532081 0.000004 -0.000003 0.000000 0.000003 -0.000001 -0.000000 -0.000003 0.000005 -0.000002 -0.000000 0.000000 0.000002 -2.203439 2.860227 14.680727 0.229502 19.389555 67.984991 0.000004 12.194176 -0.000001 31.377910 -6.427122 -23.310083 -0.000003 0.000000 -0.000000 -0.000002 0.000002 0.000000 0.000001 0.000002 0.000000 0.000001 -0.000001 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000001 0.000000 0.000000 0.000000 0.000002 0.000000 -0.000000 -0.000003 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -64.989585 -5.228780 -3.197417 4.054182 0.006670 -0.250945 3.975285 0.431791 -0.414826 -0.000021 0.000023 -0.000049 -0.000000 -0.000000 0.000000 -0.000021 0.000022 -0.000047 -0.000001 0.000001 0.000000 -0.000000 0.000002 0.000136 -64.942525 4.776980 3.203477 3.738959 0.014740 -0.231416 4.735512 -0.508234 0.442668 0.000020 -0.000018 0.000035 -0.000000 -0.000000 0.000000 0.000019 -0.000020 0.000034 -0.000000 -0.000001 0.000001 0.000000 0.000002 -0.000101 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 64.044409 -0.000012 -0.000006 -4.685146 -5.499846 0.521772 -11.131111 -2.078153 0.324476 -27.552344 -16.486398 -0.433176 -16.706339 -33.349348 0.070536 0.000003 0.000023 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000001 0.000001 0.000001 -3.302078 -10.346248 -15.419427 0.763758 -15.504779 -66.549450 0.000000 -14.694768 0.000001 32.475364 7.049834 24.588553 0.000002 -0.000001 0.000000 0.000002 -0.000003 0.000002 -0.000001 0.000006 -0.000001 -0.000002 -0.000003 0.000001 -2.456317 4.061715 15.306842 0.371379 19.495079 67.606968 0.000001 12.696984 -0.000000 32.540377 -7.005318 -24.392101 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000001 -0.000002 0.000001 0.000001 -0.000001 -0.000001 0.000000 0.000003 -0.000001 -0.000000 0.000003 -0.000001 0.000000 0.000002 0.000000 0.000001 -0.000001 -0.000001 -0.000000 -0.000001 -0.000001 -0.000000 -67.681806 -5.340230 -3.440488 4.221342 0.006561 -0.261303 4.139268 0.448970 -0.432567 -0.000018 0.000025 -0.000043 0.000000 -0.000000 -0.000000 -0.000020 0.000023 -0.000043 -0.000000 0.000002 0.000000 0.000000 0.000002 0.000135 -67.630778 4.872054 3.435576 3.893122 0.015025 -0.240969 4.930855 -0.528389 0.461810 0.000017 -0.000017 0.000034 -0.000001 0.000000 -0.000000 0.000017 -0.000018 0.000033 -0.000001 0.000001 0.000000 -0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 66.464352 -0.000013 -0.000006 -4.865538 -4.830340 0.505480 -11.554376 -1.831252 0.348755 -28.574706 -16.275694 -0.394008 -17.349816 -33.416817 0.060966 0.000002 0.000021 -179.999991 0.000000 -0.000003 -0.000002 0.000000 -0.000003 -0.000002 0.000000 -0.000003 -0.000002 0.000000 0.000001 -0.000000 -3.484828 -10.720011 -16.027109 0.847544 -16.087956 -66.314594 0.000003 -14.946226 -0.000001 33.587080 7.619855 25.591385 -0.000003 0.000002 0.000000 0.000002 -0.000003 0.000001 -0.000001 0.000002 -0.000000 0.000001 0.000001 0.000001 -2.711936 5.212761 15.914069 0.508526 19.595567 67.244831 0.000003 13.180821 0.000000 33.645666 -7.579861 -25.419377 0.000002 0.000002 -0.000001 -0.000002 0.000001 -0.000000 0.000002 0.000001 0.000001 0.000001 0.000000 0.000002 -0.000004 0.000000 -0.000000 -0.000003 0.000000 0.000000 -0.000002 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 -70.249370 -5.435783 -3.676921 4.382245 0.006430 -0.271272 4.297110 0.465454 -0.449688 -0.000019 0.000025 -0.000046 0.000000 -0.000000 0.000000 -0.000019 0.000023 -0.000046 -0.000001 0.000001 -0.000000 0.000000 0.000002 0.000136 -70.194428 4.952502 3.660824 4.041514 0.015274 -0.250167 5.118887 -0.547729 0.480301 0.000015 -0.000016 0.000036 0.000000 0.000000 -0.000000 0.000017 -0.000017 0.000035 -0.000001 -0.000001 -0.000000 -0.000000 0.000002 -0.000100 -0.000002 0.000000 -0.000000 -0.000002 0.000000 -0.000000
0.000000 1.067000 -0.000000 68.757650 -0.000013 -0.000006 -5.037586 -4.190523 0.491901 -11.958977 -1.595425 0.373664 -29.548983 -16.075195 -0.352996 -17.964834 -33.476543 0.051851 0.000002 0.000021 -179.999991 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000001 -0.000000 -0.000001 -0.000001 0.000002 -0.000000 0.000000 -3.663431 -11.075360 -16.609616 0.929698 -16.644911 -66.091827 -0.000005 -15.184048 0.000000 34.637539 8.180386 26.537008 -0.000000 -0.000000 -0.000000 -0.000002 -0.000003 -0.000000 -0.000005 0.000002 0.000001 -0.000001 -0.000000 0.000001 -2.967646 6.308020 16.499183 0.640192 19.690648 66.900077 -0.000000 13.643339 -0.000002 34.689609 -8.144976 -26.388210 -0.000001 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000004 -0.000001 0.000000 -0.000000 0.000001 0.000005 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000004 0.000000 0.000000 -0.000001 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -72.680548 -5.516435 -3.904516 4.536105 0.006278 -0.280804 4.448050 0.481176 -0.466103 -0.000023 0.000025 -0.000044 -0.000000 0.000000 0.000000 -0.000024 0.000025 -0.000043 -0.000000 0.000001 0.000000 0.000000 0.000002 0.000137 -72.621822 5.019335 3.877206 4.183414 0.015489 -0.258963 5.298695 -0.566167 0.498043 0.000015 -0.000019 0.000036 -0.000000 -0.000000 -0.000000 0.000015 -0.000020 0.000033 -0.000001 -0.000001 0.000000 -0.000000 0.000003 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 70.914186 -0.000014 -0.000006 -5.200509 -3.583621 0.480810 -12.342888 -1.371850 0.398833 -30.470563 -15.885842 -0.310897 -18.548248 -33.528958 0.043299 0.000003 0.000020 -179.999991 -0.000000 -0.000004 0.000000 -0.000000 -0.000004 0.000000 -0.000000 -0.000004 0.000000 -0.000000 0.000000 0.000001 -3.836431 -11.410731 -17.163818 1.009531 -17.172892 -65.881956 -0.000001 -15.407442 -0.000001 35.622876 8.725696 27.422151 -0.000000 -0.000003 0.000000 0.000002 0.000002 -0.000001 -0.000003 0.000005 -0.000000 0.000002 -0.000001 -0.000000 -3.220629 7.342365 17.058838 0.765621 19.779996 66.574236 -0.000002 14.082206 -0.000001 35.668436 -8.694879 -27.295256 0.000000 0.000003 -0.000001 -0.000001 -0.000001 0.000000 -0.000002 0.000002 0.000001 0.000000 0.000001 -0.000002 -0.000002 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000002 -0.000001 0.000000 -0.000001 -0.000001 -0.000000 -74.964700 -5.583372 -4.121273 4.682144 0.006111 -0.289852 4.591324 0.496058 -0.481726 -0.000024 0.000023 -0.000042 0.000000 -0.000000 -0.000000 -0.000024 0.000023 -0.000041 -0.000000 0.000001 -0.000000 -0.000000 0.000002 0.000136 -74.902306 5.073744 4.082891 4.318099 0.015672 -0.267310 5.469366 -0.583612 0.514932 0.000013 -0.000019 0.000037 0.000000 0.000000 -0.000000 0.000016 -0.000019 0.000037 -0.000001 -0.000000 -0.000001 -0.000001 0.000003 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 72.924564 -0.000014 -0.000006 -5.353526 -3.012870 0.471962 -12.704072 -1.161693 0.423874 -31.334961 -15.708573 -0.268497 -19.096929 -33.574492 0.035412 0.000002 0.000023 -179.999991 -0.000000 0.000001 -0.000002 -0.000000 0.000001 -0.000002 -0.000000 0.000001 -0.000001 -0.000001 -0.000001 -0.000000 -4.002323 -11.724586 -17.686505 1.086270 -17.669146 -65.685806 0.000005 -15.615609 -0.000002 36.539480 9.250101 28.243874 -0.000000 -0.000001 -0.000000 -0.000001 -0.000001 0.000000 -0.000001 0.000005 -0.000002 0.000004 -0.000000 -0.000001 -3.467907 8.310837 17.589542 0.884057 19.863293 66.268804 -0.000002 14.495080 -0.000002 36.578607 -9.223781 -28.137451 0.000001 0.000003 0.000000 0.000000 0.000005 -0.000001 -0.000002 0.000006 -0.000003 -0.000002 -0.000000 -0.000002 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -77.092079 -5.637925 -4.325394 4.819577 0.005933 -0.298367 4.726159 0.510025 -0.496454 -0.000026 0.000023 -0.000048 -0.000001 -0.000000 0.000001 -0.000027 0.000024 -0.000045 -0.000000 0.000001 -0.000000 0.000000 0.000003 0.000136 -77.026202 5.117040 4.276253 4.444851 0.015827 -0.275169 5.629987 -0.599984 0.530876 0.000013 -0.000020 0.000036 -0.000000 -0.000001 -0.000001 0.000014 -0.000021 0.000035 -0.000000 0.000001 -0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 74.780162 -0.000015 -0.000006 -5.495846 -2.481456 0.465100 -13.040494 -0.966115 0.448385 -32.137700 -15.544261 -0.226604 -19.607784 -33.613625 0.028261 0.000003 0.000020 -179.999991 0.000001 -0.000002 0.000001 0.000001 -0.000002 0.000001 0.000001 -0.000002 0.000001 -0.000002 0.000001 -0.000000 -4.159563 -12.015440 -18.174508 1.159170 -18.130969 -65.504253 -0.000002 -15.807742 -0.000002 37.383992 9.747999 28.999474 0.000001 -0.000001 0.000000 0.000001 -0.000003 0.000001 -0.000002 0.000004 -0.000002 0.000004 -0.000000 -0.000000 -3.706366 9.208621 18.087676 0.994759 19.940208 65.985310 -0.000001 14.879622 -0.000002 37.416873 -9.726026 -28.911993 -0.000001 -0.000000 -0.000000 -0.000001 0.000004 -0.000003 -0.000002 0.000000 -0.000002 -0.000002 0.000002 -0.000000 -0.000000 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000000 0.000001 -0.000000 0.000000 0.000002 -0.000000 0.000000 -79.053784 -5.681507 -4.515287 4.947625 0.005748 -0.306299 4.851788 0.523009 -0.510211 -0.000017 0.000024 -0.000047 -0.000001 -0.000000 0.000000 -0.000019 0.000026 -0.000048 -0.000001 0.000000 -0.000000 0.000000 0.000002 0.000136 -78.984635 5.150607 4.455855 4.562948 0.015958 -0.282490 5.779636 -0.615199 0.545774 0.000013 -0.000018 0.000036 0.000000 -0.000001 0.000000 0.000014 -0.000019 0.000033 -0.000001 -0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 76.472861 -0.000015 -0.000006 -5.626665 -1.992563 0.459956 -13.350136 -0.786269 0.471952 -32.874442 -15.393771 -0.186026 -20.077727 -33.646775 0.021901 0.000002 0.000026 -179.999991 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 -0.000000 0.000003 0.000000 0.000000 0.000002 -0.000001 -4.306597 -12.281845 -18.624628 1.227462 -18.555638 -65.338150 0.000001 -15.983047 -0.000000 38.153269 10.213924 29.686410 0.000000 -0.000001 0.000001 0.000000 0.000001 -0.000002 -0.000003 0.000002 0.000001 0.000006 0.000002 -0.000000 -3.932848 10.031089 18.549556 1.096940 20.010414 65.725278 -0.000001 15.233526 -0.000002 38.180156 -10.196065 -29.616298 -0.000002 0.000002 -0.000001 -0.000001 0.000002 -0.000001 -0.000001 0.000002 -0.000001 -0.000002 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 0.000001 -0.000001 -0.000000 -0.000001 -0.000001 -0.000000 -80.841579 -5.715564 -4.689549 5.065509 0.005561 -0.313604 4.967450 0.534937 -0.522901 -0.000020 0.000024 -0.000046 0.000000 -0.000001 0.000000 -0.000020 0.000024 -0.000045 -0.000001 0.000002 0.000001 0.000000 0.000002 0.000135 -80.769446 5.175856 4.620444 4.671672 0.016064 -0.289229 5.917410 -0.629172 0.559521 0.000014 -0.000015 0.000034 0.000001 -0.000000 -0.000000 0.000012 -0.000016 0.000033 -0.000001 -0.000000 -0.000000 0.000000 0.000003 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 77.995023 -0.000016 -0.000006 -5.745198 -1.549361 0.456259 -13.630962 -0.623294 0.494163 -33.540819 -15.257917 -0.147571 -20.503707 -33.674414 0.016369 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000001 0.000000 -4.441863 -12.522354 -19.033663 1.290362 -18.940471 -65.188364 0.000001 -16.140727 -0.000002 38.844225 10.642542 30.302302 -0.000000 -0.000001 0.000000 0.000002 -0.000001 -0.000001 -0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000001 -4.144094 10.773695 18.971356 1.189873 20.073607 65.490197 -0.000003 15.554468 -0.000001 38.865477 -10.628507 -30.247834 -0.000001 0.000001 -0.000000 -0.000003 0.000005 -0.000001 -0.000001 -0.000001 -0.000001 -0.000000 0.000001 0.000002 0.000001 0.000000 -0.000000 0.000002 0.000000 0.000000 0.000001 0.000000 0.000000 0.000003 0.000000 0.000000 -0.000003 -0.000000 -0.000000 -0.000004 -0.000000 0.000000 -82.447760 -5.741533 -4.846945 5.172447 0.005381 -0.320225 5.072377 0.545733 -0.534431 -0.000021 0.000024 -0.000044 -0.000001 0.000001 0.000000 -0.000022 0.000023 -0.000043 -0.000000 0.000001 -0.000000 0.000000 0.000003 0.000137 -82.372922 5.194175 4.768914 4.770298 0.016148 -0.295342 6.042387 -0.641818 0.572023 0.000014 -0.000015 0.000031 0.000000 -0.000000 -0.000000 0.000016 -0.000016 0.000030 -0.000001 -0.000001 -0.000000 0.000000 0.000002 -0.000098 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000
0.000000 1.067000 -0.000000 79.339232 -0.000016 -0.000005 -5.850618 -1.155013 0.453741 -13.880921 -0.478342 0.514602 -34.132518 -15.137519 -0.112033 -20.882675 -33.696967 0.011687 0.000002 0.000021 -179.999991 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000001 -0.000002 0.000000 -0.000001 -4.563798 -12.735540 -19.398403 1.347127 -19.282770 -65.055803 0.000004 -16.279969 -0.000002 39.453813 11.028703 30.844759 -0.000002 0.000002 -0.000000 0.000003 0.000001 -0.000003 -0.000001 0.000004 0.000002 0.000001 0.000001 0.000000 -4.336846 11.431955 19.349236 1.272784 20.129483 65.281582 -0.000004 15.840136 -0.000001 39.469911 -11.018135 -30.804153 -0.000001 0.000000 -0.000000 -0.000001 0.000005 -0.000000 -0.000003 -0.000000 -0.000001 -0.000000 0.000002 0.000001 -0.000004 0.000000 -0.000000 -0.000003 -0.000000 0.000000 -0.000003 -0.000000 -0.000000 -0.000005 0.000000 0.000000 0.000002 0.000000 0.000000 0.000001 0.000000 0.000000 -83.864949 -5.760794 -4.986376 5.267658 0.005209 -0.326124 5.165793 0.555327 -0.544716 -0.000022 0.000021 -0.000042 -0.000000 -0.000000 0.000000 -0.000020 0.000021 -0.000041 -0.000000 0.000001 0.000001 -0.000001 0.000003 0.000136 -83.787693 5.206896 4.900296 4.858112 0.016215 -0.300788 6.153664 -0.653054 0.583175 0.000016 -0.000016 0.000033 -0.000001 -0.000000 -0.000001 0.000014 -0.000016 0.000033 -0.000001 -0.000001 -0.000001 0.000000 0.000002 -0.000100 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000
0.000000 1.067000 -0.000000 80.498267 -0.000016 -0.000005 -5.942111 -0.812655 0.452144 -14.098022 -0.352545 0.532861 -34.645236 -15.033371 -0.080178 -21.211600 -33.714849 0.007848 0.000002 0.000027 -179.999991 -0.000001 0.000003 0.000000 -0.000001 0.000003 0.000000 -0.000001 0.000003 -0.000000 0.000000 0.000001 -0.000000 -4.670862 -12.919999 -19.715676 1.396983 -19.579835 -64.941336 0.000000 -16.399989 -0.000003 39.979057 11.367483 31.311445 -0.000000 -0.000001 -0.000001 0.000002 -0.000001 -0.000002 -0.000002 0.000004 -0.000001 0.000001 0.000002 -0.000000 -4.507871 12.001478 19.679312 1.344930 20.177700 65.100965 0.000001 16.088213 -0.000001 39.990556 -11.359978 -31.282847 -0.000001 0.000002 -0.000000 -0.000000 -0.000000 0.000002 0.000003 0.000003 -0.000001 -0.000000 0.000001 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -85.085927 -5.774628 -5.106851 5.350363 0.005050 -0.331244 5.246947 0.563649 -0.553665 -0.000023 0.000023 -0.000042 -0.000000 0.000000 0.000001 -0.000023 0.000021 -0.000043 -0.000000 0.000000 0.000000 -0.000000 0.000002 0.000137 -85.006581 5.215263 5.013705 4.934390 0.016265 -0.305517 6.250328 -0.662797 0.592882 0.000012 -0.000016 0.000028 0.000000 -0.000000 -0.000001 0.000016 -0.000017 0.000028 -0.000001 -0.000001 -0.000001 0.000000 0.000003 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 1.067000 -0.000000 81.464773 -0.000016 -0.000005 -6.018855 -0.525456 0.451226 -14.280205 -0.247043 0.548551 -35.074667 -14.946271 -0.052743 -21.487471 -33.728533 0.004831 0.000002 0.000023 -179.999991 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000001 -0.000000 -0.000001 0.000001 -4.761547 -13.074283 -19.982272 1.439214 -19.828994 -64.845836 0.000000 -16.499983 -0.000003 40.416821 11.654130 31.699885 0.000000 -0.000001 -0.000000 0.000004 -0.000001 -0.000002 -0.000002 0.000006 -0.000003 -0.000000 0.000001 0.000001 -4.654002 12.477807 19.957710 1.405579 20.217942 64.949833 -0.000001 16.296387 -0.000003 40.424355 -11.649227 -31.681313 0.000001 0.000004 -0.000001 -0.000003 0.000003 -0.000002 -0.000000 0.000003 -0.000002 0.000002 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -86.103386 -5.784205 -5.207450 5.419780 0.004912 -0.335545 5.315057 0.570624 -0.561180 -0.000020 0.000023 -0.000044 0.000000 0.000000 0.000000 -0.000020 0.000023 -0.000043 -0.000000 0.000000 0.000000 -0.000000 0.000002 0.000137 -86.022298 5.220398 5.108330 4.998415 0.016303 -0.309487 6.331459 -0.670958 0.601038 0.000016 -0.000018 0.000035 -0.000000 -0.000000 -0.000000 0.000019 -0.000018 0.000036 -0.000001 0.000000 0.000001 -0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 82.231250 -0.000016 -0.000005 -6.080011 -0.296550 0.450770 -14.425450 -0.162979 0.561297 -35.416443 -14.877030 -0.030412 -21.707285 -33.738430 0.002600 0.000002 0.000023 -179.999991 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000000 0.000001 0.000001 -0.000002 -0.000001 0.000000 -4.834386 -13.196952 -20.195046 1.473115 -20.027537 -64.770144 -0.000001 -16.579150 -0.000003 40.763829 11.884146 32.007465 -0.000001 -0.000001 0.000000 0.000002 -0.000000 -0.000000 -0.000001 0.000007 -0.000001 0.000001 0.000003 -0.000000 -4.772228 12.856505 20.180590 1.453976 20.249890 64.829717 -0.000001 16.462341 -0.000007 40.768170 -11.881333 -31.996861 -0.000001 0.000001 -0.000000 -0.000002 0.000001 0.000000 -0.000000 0.000006 -0.000003 0.000001 0.000003 0.000002 -0.000003 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 0.000000 -0.000000 0.000004 0.000000 -0.000000 0.000003 0.000000 -0.000000 -86.909779 -5.790532 -5.287293 5.475130 0.004799 -0.338973 5.369368 0.576176 -0.567179 -0.000018 0.000025 -0.000042 -0.000000 0.000000 0.000000 -0.000020 0.000025 -0.000043 0.000001 -0.000000 -0.000000 -0.000000 0.000003 0.000137 -86.827291 5.223281 5.183379 5.049465 0.016330 -0.312653 6.396159 -0.677461 0.607552 0.000008 -0.000015 0.000034 -0.000000 -0.000001 -0.000000 0.000012 -0.000014 0.000031 -0.000001 -0.000001 -0.000000 0.000001 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 82.789727 -0.000017 -0.000005 -6.124750 -0.129110 0.450591 -14.531728 -0.101498 0.570758 -35.666189 -14.826483 -0.013818 -21.868025 -33.744973 0.001101 0.000002 0.000021 -179.999991 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000001 0.000000 -0.000000 -0.000000 -4.887986 -13.286519 -20.350863 1.498030 -20.172745 -64.715120 0.000001 -16.636695 -0.000000 41.016611 12.053253 32.231328 0.000000 -0.000000 0.000000 0.000002 -0.000003 0.000000 -0.000001 0.000002 0.000001 -0.000002 0.000001 -0.000001 -4.859696 13.132970 20.344200 1.489412 20.273171 64.742072 -0.000001 16.583751 -0.000005 41.018578 -12.051982 -32.226554 0.000001 -0.000001 -0.000000 -0.000000 -0.000003 0.000002 -0.000001 0.000002 -0.000002 -0.000002 0.000002 0.000002 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000002 -0.000001 0.000000 -0.000003 -0.000001 0.000000 -87.497114 -5.794435 -5.345493 5.515633 0.004714 -0.341482 5.409111 0.580238 -0.571575 -0.000017 0.000025 -0.000044 0.000000 -0.000000 0.000000 -0.000019 0.000023 -0.000043 0.000000 0.000001 0.000000 0.000000 0.000003 0.000136 -87.413594 5.224718 5.238059 5.086822 0.016350 -0.314967 6.443495 -0.682214 0.612326 0.000011 -0.000016 0.000029 -0.000001 -0.000000 -0.000000 0.000010 -0.000016 0.000027 -0.000001 -0.000000 -0.000000 0.000000 0.000003 -0.000099 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 83.131708 -0.000017 -0.000005 -6.152217 -0.026299 0.450545 -14.596985 -0.063752 0.576623 -35.819404 -14.795484 -0.003519 -21.966679 -33.748590 0.000264 0.000002 0.000023 -179.999991 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000001 0.000000 -0.000001 -4.921032 -13.341437 -20.446608 1.513367 -20.261905 -64.681550 -0.000001 -16.671797 -0.000001 41.171380 12.157438 32.368301 0.000001 -0.000002 0.000000 0.000002 0.000003 -0.000002 -0.000004 0.000002 -0.000003 -0.000000 0.000002 0.000002 -4.913815 13.302477 20.444887 1.511180 20.287421 64.688394 0.000001 16.658321 -0.000003 41.171868 -12.157114 -32.367095 0.000002 0.000000 -0.000001 -0.000002 0.000004 -0.000000 -0.000001 0.000002 -0.000000 0.000000 0.000002 -0.000000 -0.000002 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000002 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000000 -87.856614 -5.796530 -5.381138 5.540509 0.004661 -0.343023 5.433525 0.582734 -0.574275 -0.000021 0.000022 -0.000038 -0.000000 0.000000 -0.000000 -0.000022 0.000022 -0.000037 -0.000001 0.000002 -0.000000 0.000001 0.000003 0.000135 -87.772507 5.225324 5.271539 5.109762 0.016359 -0.316389 6.472563 -0.685132 0.615257 0.000011 -0.000017 0.000032 -0.000001 0.000000 -0.000000 0.000012 -0.000017 0.000030 -0.000001 -0.000001 -0.000001 -0.000000 0.000003 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 1.067000 -0.000000 83.247937 -0.000017 -0.000005 -6.161565 0.008684 0.450541 -14.619192 -0.050909 0.578629 -35.871511 -14.784942 0.000006 -22.000231 -33.749696 0.000004 0.000002 0.000024 -179.999991 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 0.000001 -0.000002 0.000001 0.000000 -4.932297 -13.360113 -20.479192 1.518588 -20.292243 -64.670184 0.000006 -16.683683 -0.000002 41.223962 12.192947 32.414835 0.000000 0.000002 0.000000 0.000002 -0.000001 -0.000000 0.000002 0.000002 0.000001 0.000001 -0.000000 -0.000000 -4.932296 13.360120 20.479192 1.518588 20.292256 64.670178 -0.000004 16.683686 -0.000004 41.223952 -12.192952 -32.414828 0.000000 0.000004 0.000000 -0.000002 0.000001 -0.000001 -0.000001 0.000004 -0.000003 0.000001 -0.000001 0.000001 0.000002 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000002 0.000000 0.000000 0.000002 0.000000 -0.000000 0.000002 -0.000001 0.000000 0.000003 -0.000001 0.000000 -87.978758 -5.797193 -5.393254 5.548971 0.004638 -0.343552 5.441830 0.583579 -0.575192 -0.000021 0.000023 -0.000046 -0.000001 0.000001 0.000000 -0.000023 0.000024 -0.000045 0.000000 0.000001 0.000000 -0.000000 0.000002 0.000136 -87.894412 5.225483 5.282915 5.117572 0.016364 -0.316871 6.482464 -0.686124 0.616256 0.000011 -0.000015 0.000030 -0.000000 0.000000 0.000000 0.000013 -0.000016 0.000028 -0.000000 -0.000000 -0.000001 0.000001 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000

View File

@@ -0,0 +1,461 @@
HIERARCHY
ROOT mPelvis
{
OFFSET 0.000000 1.067000 -0.000000
CHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation
JOINT mTorso
{
OFFSET 0.000000 0.084000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mChest
{
OFFSET 0.000000 0.205000 -0.015000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mNeck
{
OFFSET 0.000000 0.251000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mHead
{
OFFSET 0.000000 0.076000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mSkull
{
OFFSET 0.000000 0.079000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeRight
{
OFFSET -0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT mEyeLeft
{
OFFSET 0.036000 0.079000 0.098000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT HEAD
{
OFFSET 0.000000 0.070000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT NECK
{
OFFSET 0.000000 0.020000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarLeft
{
OFFSET 0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderLeft
{
OFFSET 0.079000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowLeft
{
OFFSET 0.248000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristLeft
{
OFFSET 0.205000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT L_HAND
{
OFFSET 0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_ARM
{
OFFSET 0.100000 0.000000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_ARM
{
OFFSET 0.120000 0.010000 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mCollarRight
{
OFFSET -0.085000 0.165000 -0.021000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mShoulderRight
{
OFFSET -0.079000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mElbowRight
{
OFFSET -0.248000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mWristRight
{
OFFSET -0.205000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT R_HAND
{
OFFSET -0.050000 0.000000 0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_ARM
{
OFFSET -0.100000 0.000000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_ARM
{
OFFSET -0.120000 0.010000 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_CLAVICLE
{
OFFSET 0.000000 0.020000 0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT CHEST
{
OFFSET 0.000000 0.070000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LEFT_PEC
{
OFFSET 0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT RIGHT_PEC
{
OFFSET -0.082000 0.042000 0.119000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
JOINT UPPER_BACK
{
OFFSET 0.000000 0.017253 0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT BELLY
{
OFFSET 0.000000 0.040000 0.028000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT LOWER_BACK
{
OFFSET 0.000000 0.022848 -0.000000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipRight
{
OFFSET -0.129000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeRight
{
OFFSET 0.049000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleRight
{
OFFSET -0.000000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootRight
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeRight
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT R_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT R_UPPER_LEG
{
OFFSET 0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT mHipLeft
{
OFFSET 0.127000 -0.041000 0.034000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mKneeLeft
{
OFFSET -0.046000 -0.491000 -0.001000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mAnkleLeft
{
OFFSET 0.001000 -0.468000 -0.029000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mFootLeft
{
OFFSET 0.000000 -0.061000 0.112000
CHANNELS 3 Xrotation Yrotation Zrotation
JOINT mToeLeft
{
OFFSET 0.000000 0.000000 0.109000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_FOOT
{
OFFSET 0.000000 -0.041000 0.077000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET 0.000000 -0.100000 0.000000
}
}
}
JOINT L_LOWER_LEG
{
OFFSET -0.000000 -0.200000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT L_UPPER_LEG
{
OFFSET -0.050000 -0.220000 -0.020000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
JOINT PELVIS
{
OFFSET -0.000000 -0.020000 -0.010000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
JOINT BUTT
{
OFFSET -0.000000 -0.100000 -0.060000
CHANNELS 3 Xrotation Yrotation Zrotation
End Site
{
OFFSET -0.000000 -0.100000 0.000000
}
}
}
MOTION
Frames: 91
Frame Time: 0.022222
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.555755 -0.057458 -84.096424 -0.000000 0.000000 0.000001 0.879869 -0.033829 -4.403510 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.541243 15.193717 82.081778 0.000002 0.000000 0.000001 1.046036 0.047842 5.237183 -0.000001 -0.000001 -0.000000 0.000001 0.000000 0.000001 -0.000001 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.016257 -0.000000 -0.000000 0.013241 -0.000000 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.014918 -0.000000 -0.556154 -0.057079 -84.248908 -0.000000 -0.000000 0.000000 0.879869 -0.033830 -4.403510 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.001596 -0.011474 0.003432 -1.547198 15.199871 82.196853 0.000002 0.000000 0.000001 1.046037 0.047839 5.237183 -0.000002 0.000001 0.000000 -0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.063978 -0.000000 -0.000000 0.052204 -0.000000 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.058710 0.000000 -0.556499 -0.056714 -84.390901 -0.000000 -0.000000 0.000000 0.879869 -0.033829 -4.403510 -0.000000 -0.000002 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.006424 -0.045157 0.013506 -1.552686 15.204703 82.304087 0.000002 0.000000 0.000001 1.046035 0.047841 5.237182 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000001 0.000001 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.141596 -0.000000 -0.000000 0.115745 -0.000000 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.129931 0.000000 -0.556792 -0.056365 -84.522758 0.000000 -0.000000 -0.000000 0.879869 -0.033829 -4.403510 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.014538 -0.099941 0.029882 -1.557716 15.208301 82.403787 0.000001 0.000000 -0.000000 1.046039 0.047839 5.237182 0.000000 0.000001 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.247540 -0.000000 -0.000000 0.202725 -0.000000 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.227139 0.000000 -0.557034 -0.056030 -84.644943 0.000000 0.000000 -0.000000 0.879869 -0.033829 -4.403510 -0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.025988 -0.174718 0.052222 -1.562299 15.210731 82.496254 0.000000 0.000000 0.000001 1.046039 0.047839 5.237183 0.000000 0.000003 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.380243 -0.000000 -0.000000 0.312002 -0.000000 -0.000000 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.348890 0.000000 -0.557230 -0.055712 -84.757839 -0.000000 0.000000 -0.000000 0.879869 -0.033831 -4.403510 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.040817 -0.268382 0.080179 -1.566444 15.212086 82.581789 0.000001 0.000000 0.000001 1.046038 0.047839 5.237181 0.000000 0.000003 -0.000000 0.000001 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.538139 -0.000000 -0.000000 0.442436 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.493740 0.000000 -0.557382 -0.055410 -84.861897 0.000000 0.000000 0.000000 0.879869 -0.033831 -4.403510 -0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.059067 -0.379829 0.113408 -1.570161 15.212431 82.660712 0.000001 0.000000 0.000000 1.046036 0.047839 5.237182 0.000003 0.000001 0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.719661 -0.000000 -0.000000 0.592887 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.660245 0.000000 -0.557493 -0.055124 -84.957520 0.000000 0.000000 0.000000 0.879869 -0.033830 -4.403510 -0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.080776 -0.507952 0.151559 -1.573469 15.211842 82.733337 0.000002 0.000000 0.000000 1.046036 0.047839 5.237182 0.000000 0.000000 -0.000000 -0.000001 -0.000000 0.000001 0.000001 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.923242 -0.000000 -0.000000 0.762217 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.846961 0.000000 -0.557564 -0.054856 -85.045131 -0.000000 0.000000 0.000000 0.879869 -0.033830 -4.403510 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.105980 -0.651650 0.194279 -1.576375 15.210401 82.799952 0.000001 -0.000000 0.000001 1.046037 0.047840 5.237182 0.000002 0.000001 0.000000 -0.000001 -0.000000 0.000002 0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 1.147314 -0.000000 -0.000000 0.949284 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 1.052444 0.000000 -0.557600 -0.054605 -85.125146 -0.000000 0.000000 -0.000000 0.879869 -0.033831 -4.403510 0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.134717 -0.809819 0.241215 -1.578891 15.208179 82.860884 0.000001 -0.000000 -0.000000 1.046037 0.047840 5.237181 -0.000001 0.000002 -0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 1.390311 -0.000000 -0.000000 1.152948 -0.000000 -0.000000 0.000003 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 1.275250 0.000000 -0.557602 -0.054372 -85.198011 0.000000 0.000000 -0.000000 0.879869 -0.033830 -4.403510 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.167023 -0.981355 0.292010 -1.581037 15.205270 82.916461 0.000001 -0.000000 -0.000000 1.046035 0.047840 5.237180 -0.000001 0.000002 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 1.650661 -0.000000 -0.000000 1.372067 -0.000000 -0.000000 0.000003 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 1.513933 0.000000 -0.557574 -0.054157 -85.264161 0.000000 0.000000 0.000000 0.879869 -0.033832 -4.403510 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.202935 -1.165157 0.346308 -1.582822 15.201725 82.966957 0.000000 -0.000000 0.000000 1.046037 0.047841 5.237181 0.000000 0.000000 0.000000 0.000001 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 1.926794 -0.000000 -0.000000 1.605502 -0.000000 -0.000000 0.000003 0.000022 -179.999991 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 1.767048 0.000000 -0.557517 -0.053960 -85.323959 -0.000000 0.000000 0.000000 0.879869 -0.033829 -4.403510 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.242496 -1.360122 0.403749 -1.584263 15.197637 83.012733 -0.000001 -0.000000 -0.000000 1.046035 0.047840 5.237181 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 2.217138 -0.000000 -0.000000 1.852108 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 2.033152 0.000000 -0.557435 -0.053781 -85.377918 0.000000 0.000000 -0.000000 0.879869 -0.033831 -4.403510 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.285746 -1.565147 0.463973 -1.585372 15.193074 83.054055 0.000000 0.000000 0.000000 1.046036 0.047839 5.237182 -0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 2.520120 -0.000000 -0.000000 2.110745 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 2.310796 0.000000 -0.557331 -0.053621 -85.426399 0.000000 0.000000 -0.000000 0.879869 -0.033830 -4.403510 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.332734 -1.779131 0.526622 -1.586164 15.188117 83.091259 -0.000000 -0.000000 0.000001 1.046036 0.047840 5.237182 -0.000000 0.000001 -0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 2.834162 -0.000000 -0.000001 2.380265 -0.000000 -0.000000 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 2.598536 0.000000 -0.557207 -0.053480 -85.469886 0.000000 0.000000 -0.000000 0.879869 -0.033830 -4.403511 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.383509 -2.000971 0.591334 -1.586659 15.182845 83.124679 0.000001 -0.000000 0.000001 1.046034 0.047840 5.237182 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 3.157690 -0.000000 -0.000001 2.659528 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 2.894927 0.000000 -0.557065 -0.053358 -85.508750 0.000000 0.000000 0.000000 0.879869 -0.033831 -4.403510 -0.000000 -0.000002 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.438126 -2.229563 0.657747 -1.586865 15.177322 83.154582 0.000000 0.000000 0.000000 1.046035 0.047840 5.237182 -0.000000 0.000001 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 3.489123 -0.000000 -0.000001 2.947385 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 3.198524 0.000000 -0.556908 -0.053254 -85.543461 0.000000 0.000000 -0.000001 0.879869 -0.033829 -4.403510 0.000000 -0.000002 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.496645 -2.463807 0.725503 -1.586805 15.171631 83.181336 0.000001 -0.000001 0.000000 1.046035 0.047839 5.237183 0.000001 0.000001 0.000000 0.000001 0.000000 0.000000 0.000001 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 3.826882 -0.000001 -0.000001 3.242691 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 3.507881 0.000001 -0.556739 -0.053171 -85.574436 0.000000 0.000000 0.000000 0.879869 -0.033830 -4.403510 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.559130 -2.702598 0.794240 -1.586487 15.165849 83.205221 -0.000000 0.000000 0.000000 1.046037 0.047840 5.237181 -0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 4.169389 -0.000001 -0.000001 3.544299 -0.000000 -0.000001 0.000001 0.000022 -179.999991 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 3.821556 0.000001 -0.556561 -0.053107 -85.602105 0.000000 0.000000 -0.000000 0.879870 -0.033829 -4.403511 0.000000 -0.000002 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.625651 -2.944831 0.863598 -1.585930 15.160052 83.226579 0.000001 -0.000000 0.000000 1.046037 0.047840 5.237181 0.000000 0.000003 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 4.515059 -0.000001 -0.000001 3.851062 -0.000000 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 4.138103 0.000001 -0.556376 -0.053063 -85.626885 0.000000 0.000000 -0.000000 0.879870 -0.033831 -4.403511 0.000000 -0.000002 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.696285 -3.189407 0.933219 -1.585145 15.154300 83.245663 0.000000 0.000000 0.000000 1.046037 0.047841 5.237181 0.000001 -0.000001 -0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 4.862313 -0.000001 -0.000001 4.161832 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 4.456079 0.000001 -0.556186 -0.053038 -85.649206 -0.000000 0.000000 -0.000000 0.879869 -0.033831 -4.403510 0.000000 -0.000002 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.771112 -3.435218 1.002747 -1.584154 15.148694 83.262875 0.000000 -0.000000 0.000000 1.046036 0.047839 5.237182 0.000000 0.000003 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 5.209565 -0.000001 -0.000001 4.475460 -0.000001 -0.000001 0.000001 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 4.774044 0.000001 -0.555995 -0.053034 -85.669485 0.000000 0.000000 0.000000 0.879869 -0.033830 -4.403510 -0.000001 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.850220 -3.681163 1.071824 -1.582967 15.143282 83.278461 0.000000 0.000000 0.000000 1.046036 0.047840 5.237182 0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 5.555237 -0.000001 -0.000001 4.790797 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 5.090559 0.000001 -0.555804 -0.053049 -85.688172 0.000000 0.000000 -0.000000 0.879869 -0.033829 -4.403510 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.933702 -3.926135 1.140098 -1.581600 15.138155 83.292757 -0.000000 -0.000000 -0.000000 1.046035 0.047840 5.237181 -0.000000 -0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 5.897743 -0.000001 -0.000001 5.106700 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 5.404184 0.000001 -0.555616 -0.053085 -85.705699 -0.000000 -0.000000 0.000000 0.879869 -0.033831 -4.403510 -0.000000 -0.000002 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -1.021657 -4.169030 1.207217 -1.580068 15.133380 83.306076 0.000000 0.000000 -0.000000 1.046034 0.047839 5.237182 0.000001 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 6.235503 -0.000001 -0.000001 5.422015 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 5.713480 0.000001 -0.555435 -0.053142 -85.722446 -0.000000 -0.000000 -0.000000 0.879869 -0.033831 -4.403509 0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.114189 -4.408742 1.272831 -1.578386 15.129045 83.318746 0.000000 0.000000 -0.000000 1.046036 0.047840 5.237181 0.000000 0.000002 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 6.566936 -0.000001 -0.000001 5.735599 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 6.017012 0.000001 -0.555262 -0.053220 -85.738887 -0.000000 0.000000 -0.000000 0.879869 -0.033829 -4.403510 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.211408 -4.644166 1.336598 -1.576568 15.125201 83.331040 0.000001 0.000000 0.000000 1.046037 0.047839 5.237182 -0.000001 0.000002 -0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 6.890463 -0.000001 -0.000001 6.046298 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 6.313347 0.000001 -0.555100 -0.053318 -85.755429 -0.000000 -0.000000 0.000000 0.879869 -0.033830 -4.403510 -0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -1.313427 -4.874195 1.398172 -1.574630 15.121945 83.343300 -0.000000 -0.000001 -0.000000 1.046036 0.047839 5.237182 0.000000 0.000001 -0.000000 0.000000 -0.000001 0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 7.204507 -0.000001 -0.000001 6.352975 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 6.601049 0.000001 -0.554951 -0.053437 -85.772484 -0.000000 0.000000 0.000000 0.879869 -0.033829 -4.403511 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 -1.420366 -5.097719 1.457218 -1.572586 15.119337 83.355840 0.000000 -0.000000 -0.000000 1.046036 0.047842 5.237182 0.000001 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 7.507486 -0.000001 -0.000001 6.654474 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 6.878689 0.000001 -0.554819 -0.053579 -85.790509 -0.000000 -0.000000 -0.000000 0.879869 -0.033829 -4.403510 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.532347 -5.313633 1.513400 -1.570452 15.117457 83.368961 0.000000 -0.000000 -0.000000 1.046036 0.047841 5.237181 0.000001 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 7.797831 -0.000001 -0.000001 6.949661 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 7.144838 0.000001 -0.554705 -0.053742 -85.809900 0.000000 -0.000000 0.000000 0.879869 -0.033831 -4.403510 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -1.649497 -5.520827 1.566391 -1.568241 15.116380 83.382990 -0.000001 -0.000000 0.000000 1.046035 0.047841 5.237182 0.000000 0.000002 -0.000000 -0.000000 -0.000000 0.000001 -0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 8.073964 -0.000001 -0.000001 7.237382 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 7.398068 0.000001 -0.554613 -0.053926 -85.831101 -0.000000 0.000000 -0.000000 0.879869 -0.033829 -4.403510 0.000000 0.000002 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 -1.771946 -5.718189 1.615867 -1.565967 15.116190 83.398235 -0.000000 -0.000000 -0.000000 1.046037 0.047840 5.237182 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 8.334314 -0.000001 -0.000002 7.516499 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 7.636947 0.000001 -0.554544 -0.054132 -85.854549 0.000001 0.000000 -0.000000 0.879870 -0.033831 -4.403510 -0.000000 -0.000002 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 -1.899825 -5.904605 1.661513 -1.563647 15.116944 83.414997 -0.000000 -0.000000 -0.000001 1.046036 0.047842 5.237182 0.000001 0.000003 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 8.577311 -0.000001 -0.000002 7.785869 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 7.860052 0.000001 -0.554502 -0.054360 -85.880654 0.000000 0.000000 0.000000 0.879869 -0.033829 -4.403511 -0.000000 -0.000002 -0.000000 0.000001 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -2.033266 -6.078964 1.703018 -1.561296 15.118735 83.433629 0.000000 0.000000 0.000000 1.046035 0.047840 5.237181 0.000000 0.000002 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 8.801383 -0.000001 -0.000002 8.044352 -0.000001 -0.000001 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 8.065957 0.000001 -0.554490 -0.054612 -85.909853 0.000001 0.000000 -0.000000 0.879870 -0.033830 -4.403510 -0.000000 -0.000002 -0.000000 0.000002 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -2.172406 -6.240146 1.740081 -1.558924 15.121627 83.454393 -0.000000 0.000001 -0.000001 1.046036 0.047841 5.237182 -0.000000 0.000002 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.004966 -0.000001 -0.000002 8.290809 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 8.253230 0.000001 -0.554508 -0.054885 -85.942556 0.000001 0.000000 -0.000000 0.879870 -0.033830 -4.403510 0.000001 0.000003 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -2.317376 -6.387036 1.772408 -1.556554 15.125696 83.477629 0.000001 -0.000001 -0.000001 1.046036 0.047840 5.237181 0.000000 0.000001 0.000000 0.000001 -0.000001 -0.000001 0.000001 -0.000001 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.186485 -0.000001 -0.000002 8.524098 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 8.420444 0.000001 -0.554562 -0.055183 -85.979234 0.000001 0.000000 -0.000001 0.879870 -0.033829 -4.403511 0.000000 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 0.000000 -0.000001 -0.000000 -2.468310 -6.518507 1.799713 -1.554194 15.131024 83.503666 0.000000 0.000001 -0.000000 1.046036 0.047841 5.237182 0.000002 -0.000002 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.344380 -0.000001 -0.000002 8.743084 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 8.566172 0.000001 -0.554652 -0.055504 -86.020304 0.000001 0.000000 -0.000000 0.879869 -0.033830 -4.403510 0.000001 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -2.625339 -6.633436 1.821723 -1.551866 15.137695 83.532824 -0.000001 -0.000000 0.000000 1.046036 0.047841 5.237181 0.000001 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.477086 -0.000001 -0.000002 8.946625 -0.000001 -0.000002 0.000000 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 8.688982 0.000001 -0.554782 -0.055847 -86.066203 0.000001 0.000000 -0.000000 0.879869 -0.033829 -4.403510 -0.000000 0.000002 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 -2.788591 -6.730694 1.838173 -1.549582 15.145762 83.565397 0.000000 -0.000001 0.000000 1.046035 0.047841 5.237181 0.000002 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.583028 -0.000001 -0.000002 9.133594 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000001 8.787438 0.000001 -0.554955 -0.056213 -86.117381 0.000001 0.000000 0.000000 0.879869 -0.033831 -4.403510 0.000001 0.000003 -0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 -2.958190 -6.809148 1.848813 -1.547362 15.155326 83.601707 0.000000 -0.000000 0.000000 1.046037 0.047843 5.237181 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.660646 -0.000001 -0.000002 9.302838 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 8.860103 0.000001 -0.555172 -0.056604 -86.174256 0.000001 0.000000 -0.000000 0.879869 -0.033831 -4.403510 -0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -3.134254 -6.867659 1.853401 -1.545219 15.166449 83.642100 0.000000 0.000000 0.000000 1.046035 0.047841 5.237182 0.000001 0.000001 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.708370 -0.000001 -0.000002 9.453232 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 8.905536 0.000001 -0.555438 -0.057019 -86.237285 -0.000000 0.000000 -0.000000 0.879868 -0.033830 -4.403510 0.000001 -0.000001 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -3.316895 -6.905086 1.851712 -1.543174 15.179219 83.686872 0.000000 -0.000000 -0.000000 1.046037 0.047842 5.237181 0.000000 0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.067000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 9.724624 -0.000001 -0.000002 9.583636 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 8.922288 0.000001 -0.555754 -0.057458 -86.306933 0.000000 0.000000 -0.000000 0.879870 -0.033828 -4.403510 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000001 -0.000000 -3.506220 -6.920278 1.843535 -1.541243 15.193718 83.736384 0.000000 -0.000000 0.000000 1.046035 0.047843 5.237182 0.000001 0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000003 0.000136 -0.000005 0.000000 -0.000000 -0.000008 0.000017 -0.000027 0.000000 -0.000000 -0.000000 -0.000010 0.000016 -0.000028 -0.000001 0.000000 0.000000 -0.000000 0.000003 0.000136 0.000000 0.000000 -0.000000 0.000000 0.000002 -0.000100 -0.000003 0.000002 -0.000001 0.000009 -0.000013 0.000025 0.000000 -0.000000 0.000000 0.000009 -0.000013 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 1.020322 0.000000 0.012797 -0.000000 -0.000000 -0.009974 0.000053 0.000728 -0.007397 0.000012 0.000294 9.724169 -0.000001 -0.000002 9.701078 -0.000001 -0.000002 0.000000 0.000022 -179.999991 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.025324 8.904778 0.013049 -0.520969 -0.167789 -86.401777 0.000001 -0.112681 -0.000000 0.877007 -0.033608 -4.389155 -0.000000 -0.000001 0.000000 0.000002 -0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000001 0.000000 -3.702956 -6.907490 1.818051 -1.503623 15.313158 83.809932 0.000000 0.114848 -0.000000 1.041823 0.047456 5.216028 0.000001 -0.000003 0.000000 -0.000001 -0.000000 -0.000001 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.100227 -0.002747 0.004686 0.156847 0.000591 -0.009565 0.110274 -0.011640 -0.007078 -0.000009 0.000015 -0.000027 0.000000 -0.000000 -0.000000 -0.000009 0.000015 -0.000027 -0.000001 0.000000 -0.000000 -0.000000 0.000003 0.000137 -0.099873 0.000511 -0.005233 0.156651 0.000923 -0.009769 0.112416 0.016109 -0.019158 0.000013 -0.000015 0.000027 0.000000 -0.000000 0.000000 0.000013 -0.000016 0.000025 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 0.883034 0.000000 0.050437 -0.000000 -0.000000 -0.039311 0.000209 0.002869 -0.029153 0.000046 0.001161 9.722837 -0.000001 -0.000002 9.813415 -0.000001 -0.000002 0.000000 0.000022 -179.999991 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.099799 8.849482 0.051387 -0.418246 -0.492411 -86.538674 0.000001 -0.444625 -0.000000 0.868586 -0.032967 -4.346936 0.000001 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -3.907371 -6.862603 1.765515 -1.396692 15.635454 83.925253 -0.000001 0.453200 0.000000 1.029428 0.046331 5.153813 0.000000 -0.000000 -0.000000 -0.000001 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.395367 -0.010884 0.018458 0.620207 0.002173 -0.038237 0.435119 -0.046012 -0.027794 -0.000005 0.000016 -0.000033 -0.000000 0.000000 0.000000 -0.000007 0.000016 -0.000030 -0.000002 0.000001 0.000000 -0.000000 0.000003 0.000135 -0.393970 0.002071 -0.020634 0.619413 0.003487 -0.038346 0.443651 0.063351 -0.075783 0.000008 -0.000013 0.000029 0.000000 -0.000000 -0.000000 0.000010 -0.000013 0.000027 -0.000001 0.000000 0.000000 0.000000 0.000002 -0.000100 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000
0.000000 0.659255 0.000000 0.111792 -0.000000 -0.000000 -0.087130 0.000460 0.006359 -0.064614 0.000101 0.002572 9.720655 -0.000001 -0.000002 9.920764 -0.000001 -0.000002 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.221145 8.757978 0.113737 -0.251141 -1.023914 -86.715105 0.000001 -0.987371 0.000000 0.854859 -0.031930 -4.278115 -0.000000 0.000001 0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -4.118848 -6.786906 1.687347 -1.223685 16.153399 84.079977 0.000000 1.006508 0.000000 1.009220 0.044528 5.052390 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000001 -0.000001 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000000 -0.877580 -0.024332 0.040870 1.382052 0.004271 -0.085398 0.966177 -0.102453 -0.061245 -0.000007 0.000014 -0.000030 -0.000000 0.000000 0.000000 -0.000008 0.000013 -0.000028 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000137 -0.874471 0.004788 -0.045781 1.380230 0.007201 -0.085372 0.985432 0.139896 -0.168970 0.000012 -0.000012 0.000027 0.000000 -0.000000 0.000000 0.000013 -0.000013 0.000027 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 0.353102 0.000000 0.195735 -0.000000 -0.000000 -0.152554 0.000799 0.011134 -0.113131 0.000175 0.004504 9.717677 -0.000001 -0.000002 10.023239 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.387036 8.631800 0.198739 -0.023291 -1.755780 -86.928084 -0.000000 -1.733252 -0.000000 0.836076 -0.030540 -4.183954 0.000000 -0.000002 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 -4.336732 -6.681679 1.584966 -0.987765 16.860621 84.271345 -0.000000 1.767065 -0.000000 0.981567 0.042117 4.913612 0.000000 0.000001 -0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -1.539553 -0.043098 0.071450 2.437625 0.006140 -0.150781 1.695829 -0.180511 -0.106354 -0.000007 0.000017 -0.000028 0.000000 0.000000 0.000000 -0.000009 0.000017 -0.000028 -0.000001 -0.000000 0.000000 -0.000000 0.000003 0.000137 -1.534082 0.008862 -0.080262 2.434278 0.011314 -0.150595 1.730377 0.243672 -0.298240 0.000009 -0.000013 0.000027 0.000000 -0.000000 0.000000 0.000010 -0.000014 0.000026 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000101 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -0.031304 0.000000 0.301142 -0.000000 -0.000000 -0.234703 0.001218 0.017130 -0.174050 0.000266 0.006929 9.713933 -0.000001 -0.000002 10.120952 -0.000001 -0.000002 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.595110 8.472432 0.304967 0.261625 -2.682192 -87.174258 -0.000001 -2.675220 -0.000001 0.812487 -0.028838 -4.065716 -0.000000 -0.000001 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -4.560341 -6.548218 1.459793 -0.692003 17.751368 84.496250 0.000000 2.727836 0.000000 0.946828 0.039181 4.739329 -0.000001 -0.000002 -0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000001 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -2.374384 -0.067267 0.109704 3.784978 0.006776 -0.234270 2.617040 -0.279880 -0.161876 -0.000008 0.000017 -0.000029 0.000000 0.000000 -0.000000 -0.000009 0.000017 -0.000031 -0.000001 0.000001 0.000000 -0.000000 0.000003 0.000135 -2.365915 0.014564 -0.123675 3.779516 0.014820 -0.233925 2.671802 0.372354 -0.463457 0.000006 -0.000014 0.000025 -0.000000 -0.000000 0.000000 0.000006 -0.000014 0.000024 -0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -0.489846 0.000000 0.426887 -0.000000 -0.000000 -0.332700 0.001706 0.024284 -0.246719 0.000370 0.009822 9.709472 -0.000001 -0.000002 10.214014 -0.000001 -0.000002 -0.000001 0.000022 -179.999991 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.842971 8.281323 0.430938 0.599924 -3.797827 -87.449917 0.000000 -3.806679 -0.000000 0.784343 -0.026873 -3.924659 0.000001 0.000002 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -4.788961 -6.387806 1.313244 -0.339363 18.820361 84.751269 -0.000001 3.882261 -0.000000 0.905370 0.035819 4.531388 0.000000 0.000002 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000001 0.000000 0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000001 -0.000000 -3.375459 -0.096981 0.155106 5.424551 0.004902 -0.335849 3.723192 -0.400370 -0.226441 -0.000004 0.000013 -0.000028 -0.000001 -0.000000 -0.000000 -0.000007 0.000013 -0.000026 -0.000002 0.000001 0.000000 -0.000000 0.000003 0.000135 -3.363365 0.022233 -0.175617 5.416265 0.016445 -0.335388 3.803553 0.523362 -0.664751 0.000010 -0.000011 0.000023 -0.000000 -0.000000 0.000000 0.000009 -0.000011 0.000023 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000100 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 -1.018404 0.000000 0.571844 -0.000000 -0.000000 -0.445667 0.002253 0.032532 -0.330487 0.000486 0.013158 9.704327 -0.000001 -0.000002 10.302540 -0.000001 -0.000002 -0.000000 0.000022 -179.999991 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -1.128203 8.059914 0.575130 0.987975 -5.097646 -87.751094 0.000000 -5.121313 -0.000000 0.751889 -0.024695 -3.762043 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000001 -0.000000 -5.021877 -6.201750 1.146731 0.067310 20.062564 85.032727 0.000001 5.224098 -0.000001 0.857557 0.032133 4.291635 0.000001 -0.000003 0.000000 0.000000 -0.000002 0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -4.536339 -0.132426 0.207097 7.358751 -0.001045 -0.455552 5.007935 -0.541865 -0.298493 -0.000002 0.000010 -0.000025 -0.000000 0.000000 -0.000000 -0.000005 0.000010 -0.000024 -0.000002 0.000000 -0.000000 -0.000001 0.000002 0.000136 -4.520003 0.032255 -0.235670 7.346786 0.014636 -0.455065 5.119804 0.693859 -0.902444 0.000005 -0.000011 0.000019 -0.000001 0.000000 -0.000000 0.000008 -0.000011 0.000019 0.000000 0.000001 0.000000 0.000000 0.000002 -0.000100 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 -1.612862 0.000000 0.734890 -0.000000 -0.000000 -0.572724 0.002849 0.041810 -0.424701 0.000611 0.016909 9.698541 -0.000001 -0.000002 10.386642 -0.000001 -0.000002 -0.000000 0.000022 -179.999991 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 0.000000 0.000000 -1.448371 7.809620 0.735988 1.422238 -6.576718 -88.073643 -0.000000 -6.612915 -0.000001 0.715378 -0.022352 -3.579129 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -5.258346 -5.991361 0.961659 0.525353 21.473058 85.336657 0.000001 6.747218 -0.000000 0.803751 0.028221 4.021913 -0.000001 0.000004 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -5.850638 -0.173818 0.265082 9.591527 -0.012928 -0.593393 6.465017 -0.704265 -0.376364 -0.000005 0.000015 -0.000025 -0.000001 0.000000 0.000000 -0.000004 0.000015 -0.000025 -0.000002 -0.000000 -0.000000 0.000000 0.000003 0.000136 -5.829448 0.045063 -0.303398 9.574843 0.007539 -0.593017 6.614889 0.880722 -1.176935 0.000010 -0.000008 0.000023 -0.000001 0.000000 -0.000000 0.000008 -0.000008 0.000021 -0.000001 0.000001 0.000000 -0.000000 0.000002 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -2.269098 0.000000 0.914898 -0.000000 -0.000000 -0.712997 0.003483 0.052054 -0.528710 0.000741 0.021051 9.692151 -0.000002 -0.000002 10.466442 -0.000001 -0.000002 0.000003 0.000022 -179.999991 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 -1.801031 7.531872 0.911940 1.899315 -8.229994 -88.413233 0.000000 -8.275229 -0.000001 0.675060 -0.019901 -3.377178 -0.000000 -0.000002 0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -5.497628 -5.757959 0.759419 1.032285 23.046805 85.658844 -0.000000 8.445452 -0.000000 0.744310 0.024197 3.724071 0.000001 0.000000 0.000001 -0.000001 -0.000002 0.000000 -0.000002 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -7.311910 -0.221388 0.328417 12.127852 -0.032930 -0.749276 8.088130 -0.887458 -0.458229 0.000006 0.000006 -0.000018 0.000001 0.000000 0.000000 0.000005 0.000005 -0.000019 -0.000002 0.000000 0.000000 0.000000 0.000003 0.000136 -7.285262 0.061114 -0.378331 12.105212 -0.007018 -0.749214 8.283115 1.080554 -1.488656 0.000006 -0.000007 0.000015 0.000001 -0.000000 0.000000 0.000006 -0.000008 0.000014 -0.000001 0.000001 0.000000 0.000000 0.000002 -0.000098 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000
0.000000 -2.982996 0.000000 1.110743 -0.000000 -0.000000 -0.865603 0.004144 0.063200 -0.641862 0.000875 0.025557 9.685205 -0.000001 -0.000002 10.542042 -0.000001 -0.000002 0.000000 0.000022 -179.999991 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 -0.000000 -2.183734 7.228096 1.101403 2.416011 -10.052131 -88.765371 -0.000000 -10.101786 -0.000001 0.631183 -0.017394 -3.157449 0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -5.738984 -5.502885 0.541391 1.585890 24.778494 85.994766 -0.000003 10.312409 -0.000001 0.679610 0.020170 3.399957 0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -8.913545 -0.275365 0.396422 14.973211 -0.063555 -0.922907 9.870793 -1.091263 -0.542132 0.000003 0.000007 -0.000021 -0.000000 -0.000000 0.000000 0.000004 0.000008 -0.000020 -0.000000 -0.000000 0.000000 -0.000000 0.000003 0.000135 -8.880847 0.080888 -0.459962 14.943149 -0.031530 -0.923443 10.118574 1.289683 -1.837961 0.000009 -0.000007 0.000012 -0.000001 -0.000000 -0.000000 0.000005 -0.000006 0.000011 0.000000 0.000002 0.000000 0.000000 0.000002 -0.000099 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 -3.750436 0.000000 1.321299 -0.000000 -0.000000 -1.029665 0.004822 0.075186 -0.763506 0.001009 0.030402 9.677734 -0.000001 -0.000002 10.613558 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -2.594030 6.899744 1.302798 2.969375 -12.037280 -89.125438 -0.000000 -12.085745 -0.000001 0.583998 -0.014891 -2.921208 0.000000 -0.000002 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -5.981677 -5.227498 0.308943 2.184242 26.662374 86.339656 -0.000003 12.341314 -0.000001 0.610008 0.016247 3.051426 0.000002 0.000001 0.000001 -0.000002 0.000001 0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -10.648669 -0.335963 0.468362 18.132938 -0.107617 -1.113678 11.806195 -1.315389 -0.626009 0.000004 0.000007 -0.000013 0.000003 0.000000 0.000000 0.000003 0.000007 -0.000012 -0.000001 0.000000 0.000000 -0.000000 0.000002 0.000137 -10.609327 0.104864 -0.547735 18.093728 -0.068810 -1.115183 12.114997 1.504147 -2.225002 0.000003 -0.000003 0.000013 -0.000001 -0.000000 -0.000000 0.000002 -0.000004 0.000010 0.000000 0.000001 -0.000000 -0.000001 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -4.567299 0.000000 1.545440 -0.000000 -0.000000 -1.204306 0.005506 0.087946 -0.892987 0.001139 0.035559 9.669781 -0.000001 -0.000002 10.681106 -0.000001 -0.000002 -0.000000 0.000022 -179.999991 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 -3.029479 6.548291 1.514556 3.556758 -14.178934 -89.488763 0.000000 -14.219763 -0.000001 0.533756 -0.012435 -2.669712 -0.000001 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -6.224973 -4.933167 0.063423 2.825812 28.692095 86.688426 0.000002 14.524843 -0.000001 0.535875 0.012536 2.680324 0.000001 0.000002 -0.000000 -0.000002 -0.000001 0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -12.510058 -0.403363 0.543462 21.611466 -0.168204 -1.320542 13.887057 -1.559384 -0.707704 0.000004 0.000001 -0.000004 -0.000004 0.000000 0.000000 0.000006 0.000001 -0.000002 -0.000003 0.000001 0.000000 -0.000001 0.000002 0.000137 -12.463488 0.133515 -0.641042 21.561114 -0.121951 -1.323486 14.265536 1.719758 -2.649705 0.000003 -0.000003 0.000004 -0.000001 0.000000 -0.000000 0.000003 -0.000003 0.000004 0.000000 0.000002 0.000000 -0.000000 0.000002 -0.000099 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 -5.429468 0.000000 1.782038 -0.000000 -0.000000 -1.388645 0.006186 0.101417 -1.029654 0.001264 0.041002 9.661391 -0.000001 -0.000002 10.744799 -0.000001 -0.000002 0.000002 0.000022 -179.999991 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 -3.487651 6.175247 1.735130 4.175859 -16.469732 -89.850537 -0.000000 -16.495853 -0.000002 0.480710 -0.010090 -2.404230 -0.000000 -0.000001 -0.000000 -0.000001 -0.000003 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -6.468158 -4.621286 -0.193836 3.509514 30.860526 87.035584 -0.000001 16.854993 -0.000001 0.457587 0.009140 2.288522 0.000000 -0.000001 0.000000 -0.000000 -0.000002 0.000001 0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -14.490035 -0.477697 0.620902 25.411435 -0.248604 -1.541876 16.105511 -1.822609 -0.784991 0.000010 0.000003 -0.000001 -0.000001 0.000000 0.000000 0.000008 0.000001 -0.000001 -0.000002 0.000001 0.000000 0.000002 0.000003 0.000135 -14.435683 0.167287 -0.739217 25.347705 -0.194261 -1.546847 16.562642 1.932108 -3.111597 -0.000001 0.000002 0.000006 0.000001 0.000000 -0.000000 0.000002 0.000001 0.000004 -0.000001 0.000001 0.000000 0.000002 0.000002 -0.000100 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -6.332822 0.000000 2.029962 -0.000000 -0.000000 -1.581801 0.006852 0.115535 -1.172855 0.001382 0.046706 9.652598 -0.000001 -0.000002 10.804750 -0.000001 -0.000002 0.000004 0.000022 -179.999991 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 0.000000 -0.000001 0.000000 -0.000000 -3.966132 5.782150 1.962997 4.824799 -18.901348 -90.205864 -0.000001 -18.905255 -0.000002 0.425110 -0.007889 -2.126026 -0.000001 -0.000002 0.000000 -0.000001 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -6.710531 -4.293265 -0.461523 4.234815 33.159680 87.375270 -0.000002 19.322948 -0.000001 0.375512 0.006155 1.877872 -0.000001 0.000004 -0.000000 0.000000 0.000001 -0.000000 -0.000002 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000001 0.000000 0.000001 -0.000001 0.000000 -16.580441 -0.559033 0.699827 29.532754 -0.352181 -1.775344 18.453040 -2.104180 -0.855618 0.000009 -0.000004 0.000006 0.000002 0.000000 0.000000 0.000014 -0.000002 0.000006 -0.000001 0.000001 0.000000 -0.000002 0.000002 0.000136 -16.517745 0.206585 -0.841539 29.453111 -0.289143 -1.783056 18.997888 2.136653 -3.609773 0.000002 0.000001 -0.000003 -0.000003 -0.000000 -0.000000 0.000006 0.000000 -0.000004 -0.000001 0.000002 -0.000000 -0.000001 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -7.273244 0.000000 2.288086 -0.000000 -0.000000 -1.782896 0.007495 0.130235 -1.321938 0.001490 0.052644 9.643446 -0.000002 -0.000002 10.861071 -0.000001 -0.000002 0.000001 0.000022 -179.999991 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 0.000000 -4.462529 5.370583 2.196675 5.502165 -21.464356 -90.549710 -0.000001 -21.438395 -0.000002 0.367212 -0.005883 -1.836366 -0.000001 -0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 -6.951411 -3.950542 -0.738346 5.001895 35.580586 87.701077 0.000001 21.918989 -0.000002 0.290021 0.003670 1.450251 -0.000000 0.000007 -0.000001 0.000001 0.000001 -0.000001 0.000002 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -18.772558 -0.647363 0.779352 33.971517 -0.482199 -2.017787 20.920359 -2.402960 -0.917354 0.000016 -0.000008 0.000013 -0.000003 0.000000 0.000000 0.000019 -0.000008 0.000012 0.000001 0.000001 0.000000 -0.000000 0.000002 0.000135 -18.700985 0.251758 -0.947228 33.873193 -0.409926 -2.029092 21.561898 2.328782 -4.142802 0.000004 0.000008 -0.000008 -0.000001 0.000000 -0.000001 0.000005 0.000007 -0.000009 0.000003 0.000002 0.000000 0.000003 0.000002 -0.000099 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -8.246617 0.000000 2.555278 -0.000000 -0.000000 -1.991049 0.008106 0.145453 -1.476248 0.001584 0.058792 9.633968 -0.000001 -0.000002 10.913878 -0.000001 -0.000002 0.000001 0.000022 -179.999991 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 0.000000 -4.974473 4.942176 2.434728 6.207088 -24.148156 -90.876862 -0.000000 -24.084772 -0.000003 0.307267 -0.004120 -1.536520 -0.000001 -0.000003 0.000000 -0.000001 0.000000 -0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 -7.190138 -3.594563 -1.023033 5.811767 38.113173 88.005888 0.000002 24.632415 -0.000002 0.201496 0.001770 1.007528 -0.000002 0.000002 0.000001 0.000002 0.000002 -0.000000 0.000003 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000001 -0.000001 -0.000000 0.000001 -0.000001 -0.000000 -21.057075 -0.742585 0.858573 38.718840 -0.641582 -2.265137 23.497365 -2.717517 -0.968040 0.000018 -0.000009 0.000020 0.000001 0.000000 -0.000000 0.000020 -0.000009 0.000020 -0.000001 0.000001 0.000000 0.000001 0.000003 0.000135 -20.976127 0.303083 -1.055455 38.598919 -0.559632 -2.281031 24.244187 2.503920 -4.708668 0.000003 0.000013 -0.000020 -0.000006 -0.000000 0.000001 0.000004 0.000012 -0.000020 -0.000002 0.000002 -0.000000 -0.000004 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -9.248819 0.000000 2.830407 -0.000000 -0.000001 -2.205377 0.008676 0.161125 -1.635134 0.001665 0.065121 9.624216 -0.000002 -0.000002 10.963284 -0.000001 -0.000002 0.000001 0.000022 -179.999991 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -5.499624 4.498603 2.675761 6.939313 -26.940911 -91.181905 -0.000001 -26.832922 -0.000003 0.245534 -0.002631 -1.227756 -0.000002 -0.000000 -0.000001 0.000000 -0.000000 0.000001 -0.000002 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -7.426082 -3.226810 -1.314334 6.666519 40.746306 88.281800 -0.000001 27.451485 -0.000002 0.110312 0.000527 0.551580 -0.000003 -0.000003 -0.000001 0.000002 -0.000000 0.000001 -0.000003 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -23.424117 -0.844499 0.936588 43.759875 -0.832635 -2.512424 26.173080 -3.046136 -1.005628 0.000030 -0.000016 0.000028 -0.000002 0.000000 0.000000 0.000028 -0.000015 0.000029 -0.000001 0.000001 -0.000000 0.000001 0.000002 0.000135 -23.333292 0.360748 -1.165349 43.615307 -0.740696 -2.534035 27.033175 2.657646 -5.304684 -0.000009 0.000017 -0.000030 -0.000005 -0.000000 -0.000000 -0.000008 0.000017 -0.000032 0.000004 0.000002 0.000000 -0.000000 0.000003 -0.000100 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -10.275733 0.000000 3.112341 -0.000000 -0.000001 -2.425001 0.009201 0.177186 -1.797940 0.001728 0.071607 9.614217 -0.000001 -0.000002 11.009398 -0.000001 -0.000002 0.000002 0.000022 -179.999991 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 -0.000000 0.000000 -6.035666 4.041579 2.918445 7.699296 -29.829553 -91.459040 -0.000001 -29.670482 -0.000003 0.182262 -0.001449 -0.911348 0.000000 0.000001 0.000001 -0.000001 0.000003 -0.000000 0.000002 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -7.658628 -2.848768 -1.611021 7.569570 43.467693 88.519737 -0.000004 30.363483 -0.000003 0.016857 0.000012 0.084288 0.000001 0.000001 -0.000001 -0.000000 -0.000001 -0.000001 -0.000005 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -25.863189 -0.952797 1.012509 49.072932 -1.056709 -2.753855 28.935734 -3.386798 -1.028280 0.000035 -0.000017 0.000033 -0.000003 -0.000000 -0.000000 0.000032 -0.000018 0.000033 0.000000 0.000001 -0.000000 -0.000001 0.000003 0.000135 -25.762056 0.424843 -1.276004 48.900681 -0.954648 -2.782432 29.916126 2.785826 -5.927577 -0.000011 0.000021 -0.000034 -0.000001 -0.000000 -0.000000 -0.000012 0.000020 -0.000034 0.000001 0.000002 0.000000 0.000000 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -11.323239 0.000001 3.399946 -0.000000 -0.000001 -2.649037 0.009672 0.193572 -1.964016 0.001775 0.078224 9.604023 -0.000001 -0.000002 11.052338 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -6.580326 3.572876 3.161507 8.488314 -32.799876 -91.702195 -0.000001 -32.584135 -0.000004 0.117711 -0.000604 -0.588567 0.000003 -0.000002 0.000001 0.000001 0.000001 -0.000000 -0.000001 0.000000 -0.000000 0.000001 0.000001 0.000000 -7.887206 -2.461957 -1.911889 8.526082 46.264006 88.709206 -0.000000 33.354655 -0.000003 -0.078497 0.000271 -0.392460 -0.000000 0.000001 0.000001 0.000001 0.000002 0.000001 0.000002 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -28.363267 -1.067055 1.085474 54.628854 -1.313899 -2.983024 31.772708 -3.737227 -1.034400 0.000032 -0.000025 0.000044 -0.000001 -0.000000 -0.000000 0.000030 -0.000024 0.000045 -0.000001 0.000002 0.000000 -0.000003 0.000002 0.000135 -28.251396 0.495345 -1.386504 54.425990 -1.201797 -3.019915 32.879192 2.884727 -6.573384 -0.000009 0.000027 -0.000044 0.000001 -0.000000 0.000000 -0.000007 0.000028 -0.000050 0.000004 0.000003 0.000001 -0.000002 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -12.387221 0.000001 3.692091 -0.000000 -0.000001 -2.876606 0.010085 0.210218 -2.132707 0.001802 0.084944 9.593663 -0.000001 -0.000002 11.092216 -0.000001 -0.000002 0.000002 0.000022 -179.999991 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -7.131352 3.094304 3.403742 9.308602 -35.836548 -91.904587 -0.000001 -35.559812 -0.000004 0.052135 -0.000120 -0.260686 -0.000001 -0.000001 0.000002 -0.000001 0.000001 -0.000001 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -8.111266 -2.067905 -2.215756 9.543437 49.120870 88.837675 0.000001 36.410400 -0.000004 -0.175350 0.001340 -0.876776 -0.000001 0.000003 0.000002 -0.000000 0.000001 0.000003 0.000003 0.000000 -0.000000 -0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -30.912818 -1.186739 1.154682 60.390955 -1.602778 -3.193265 34.670638 -4.094902 -1.022701 0.000035 -0.000030 0.000052 -0.000000 -0.000001 -0.000000 0.000034 -0.000029 0.000055 -0.000001 0.000002 -0.000000 0.000001 0.000002 0.000134 -30.789851 0.572114 -1.495925 60.154828 -1.480972 -3.239864 35.907541 2.951196 -7.237589 -0.000016 0.000031 -0.000054 -0.000000 -0.000000 -0.000000 -0.000019 0.000029 -0.000054 0.000000 0.000003 0.000001 0.000003 0.000003 -0.000098 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 -13.463561 0.000001 3.987641 -0.000001 -0.000001 -3.106820 0.010436 0.227059 -2.303358 0.001809 0.091743 9.583188 -0.000001 -0.000002 11.129142 -0.000001 -0.000002 0.000005 0.000022 -179.999991 0.000003 -0.000000 0.000000 0.000003 -0.000000 0.000000 0.000003 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -7.686546 2.607725 3.644011 10.163525 -38.923336 -92.058785 0.000001 -38.582646 -0.000005 -0.014206 -0.000009 0.071023 -0.000001 -0.000000 0.000000 -0.000001 0.000001 0.000000 0.000003 0.000000 -0.000000 0.000001 -0.000000 -0.000000 -8.330295 -1.668161 -2.521455 10.631994 52.022973 88.889906 0.000007 39.515294 -0.000004 -0.273328 0.003261 -1.366774 -0.000002 0.000002 0.000003 0.000001 -0.000000 0.000001 0.000005 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -33.499892 -1.311211 1.219399 66.315338 -1.920248 -3.378084 37.615508 -4.457109 -0.992264 0.000032 -0.000032 0.000058 0.000001 0.000000 -0.000000 0.000032 -0.000032 0.000056 0.000003 0.000002 -0.000000 -0.000001 0.000003 0.000135 -33.365501 0.654888 -1.603372 66.043736 -1.789358 -3.435775 38.985425 2.982732 -7.915184 -0.000021 0.000036 -0.000062 0.000001 0.000000 -0.000001 -0.000021 0.000035 -0.000062 0.000005 0.000003 0.000000 0.000003 0.000003 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -14.548135 0.000001 4.285458 -0.000001 -0.000001 -3.338803 0.010721 0.244031 -2.475318 0.001796 0.098594 9.572635 -0.000001 -0.000002 11.163242 -0.000001 -0.000002 0.000000 0.000022 -179.999991 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 0.000000 0.000000 0.000000 -8.243731 2.115039 3.881247 11.057810 -42.043199 -92.156368 -0.000001 -41.637253 -0.000005 -0.081052 -0.000285 0.405279 0.000000 -0.000000 0.000002 0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -8.543807 -1.264293 -2.827847 11.806127 54.954275 88.847012 0.000000 42.653316 -0.000005 -0.372046 0.006041 -1.860558 -0.000002 0.000003 0.000004 -0.000001 -0.000001 -0.000003 -0.000003 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 0.000000 0.000000 -0.000001 -0.000001 0.000000 -0.000001 -0.000001 -0.000000 -36.112183 -1.439730 1.278979 72.352057 -2.261575 -3.531683 40.592726 -4.821012 -0.942567 0.000028 -0.000033 0.000062 0.000001 -0.000000 0.000000 0.000027 -0.000035 0.000063 0.000001 0.000003 0.000000 0.000005 0.000002 0.000135 -35.966106 0.743279 -1.707981 72.043367 -2.122508 -3.601770 42.096416 2.977647 -8.600748 -0.000020 0.000040 -0.000074 -0.000001 0.000000 -0.000000 -0.000019 0.000040 -0.000074 0.000000 0.000003 0.000000 -0.000004 0.000002 -0.000098 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -15.636828 0.000001 4.584413 -0.000001 -0.000001 -3.571668 0.010938 0.261068 -2.647930 0.001763 0.105471 9.562037 -0.000001 -0.000002 11.194607 -0.000001 -0.000002 0.000001 0.000022 -179.999991 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -8.800767 1.618186 4.114468 11.997822 -45.178583 -92.187589 -0.000003 -44.707843 -0.000005 -0.148157 -0.000958 0.740809 -0.000002 -0.000002 0.000001 0.000001 0.000002 0.000000 0.000003 -0.000000 0.000000 0.000000 0.000000 -0.000001 -8.751351 -0.857877 -3.133812 13.085757 57.898018 88.684713 -0.000000 45.808016 -0.000005 -0.471120 0.009686 -2.356226 -0.000001 0.000006 -0.000000 -0.000003 -0.000003 -0.000000 -0.000000 -0.000000 0.000000 0.000001 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -38.737169 -1.571473 1.332890 78.446710 -2.620584 -3.649467 43.587347 -5.183708 -0.873527 0.000032 -0.000036 0.000066 -0.000000 0.000001 0.000000 0.000030 -0.000037 0.000067 -0.000001 0.000003 0.000000 0.000005 0.000003 0.000135 -38.579186 0.836788 -1.808949 78.099955 -2.474518 -3.733095 45.223618 2.935089 -9.288647 -0.000023 0.000043 -0.000076 -0.000000 0.000000 -0.000000 -0.000023 0.000043 -0.000078 0.000001 0.000004 0.000001 -0.000003 0.000002 -0.000099 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -16.725523 0.000001 4.883367 -0.000001 -0.000001 -3.804533 0.011086 0.278106 -2.820543 0.001708 0.112348 9.551437 -0.000001 -0.000002 11.223373 -0.000001 -0.000002 0.000001 0.000022 -179.999991 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -9.355555 1.119142 4.342753 12.992008 -48.311629 -92.141055 -0.000001 -47.778447 -0.000006 -0.215254 -0.002021 1.076344 0.000001 0.000002 0.000001 0.000002 0.000003 0.000001 0.000002 -0.000000 0.000000 0.000001 -0.000000 -0.000001 -8.952512 -0.450507 -3.438245 14.498647 60.836891 88.371235 -0.000002 48.962727 -0.000005 -0.570156 0.014193 -2.851892 -0.000003 0.000002 -0.000001 -0.000004 -0.000003 -0.000000 -0.000002 -0.000001 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -41.362208 -1.705546 1.380707 84.542497 -2.990056 -3.728453 46.584171 -5.542315 -0.785503 0.000022 -0.000039 0.000072 -0.000000 0.000001 -0.000000 0.000024 -0.000039 0.000072 0.000004 0.000003 -0.000000 0.000004 0.000003 0.000135 -41.192167 0.934802 -1.905551 84.157459 -2.838409 -3.826539 48.349929 2.855121 -9.973164 -0.000031 0.000047 -0.000084 -0.000000 -0.000000 -0.000000 -0.000030 0.000045 -0.000086 0.000002 0.000003 0.000000 0.000003 0.000003 -0.000097 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -17.810099 0.000001 5.181186 -0.000001 -0.000001 -4.036515 0.011164 0.295080 -2.992502 0.001634 0.119198 9.540883 -0.000001 -0.000002 11.249636 -0.000002 -0.000002 0.000002 0.000022 -179.999991 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -9.906035 0.619920 4.565260 14.051314 -51.424310 -92.003078 0.000000 -50.833048 -0.000007 -0.282091 -0.003472 1.410598 0.000002 -0.000004 -0.000002 0.000001 -0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000002 -0.000000 -0.000001 -9.146906 -0.043789 -3.740060 16.083939 63.753170 87.863601 -0.000001 52.100744 -0.000007 -0.668760 0.019530 -3.345648 -0.000002 0.000001 -0.000002 0.000003 -0.000001 -0.000001 -0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -43.974653 -1.841004 1.422151 90.582652 -3.362270 -3.767537 49.567950 -5.894037 -0.679298 0.000027 -0.000040 0.000076 -0.000001 0.000001 -0.000000 0.000028 -0.000040 0.000076 -0.000003 0.000004 -0.000000 0.000001 0.000003 0.000134 -43.792475 1.036615 -1.997154 90.159890 -3.206626 -3.880706 51.458239 2.738715 -10.648656 -0.000030 0.000044 -0.000081 0.000000 -0.000001 -0.000001 -0.000031 0.000043 -0.000079 -0.000002 0.000004 0.000001 -0.000000 0.000002 -0.000097 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -18.886438 0.000001 5.476736 -0.000001 -0.000001 -4.266730 0.011174 0.311925 -3.163155 0.001540 0.125996 9.530406 -0.000001 -0.000002 11.273518 -0.000002 -0.000002 0.000000 0.000022 -179.999991 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -10.450183 0.122553 4.781231 15.189972 -54.498803 -91.757007 -0.000006 -53.855878 -0.000007 -0.348409 -0.005299 1.742303 0.000003 -0.000002 0.000002 0.000001 0.000000 0.000003 -0.000003 0.000000 0.000000 -0.000001 0.000000 -0.000000 -9.334180 0.360667 -4.038194 17.897954 66.628605 87.102028 -0.000001 55.205653 -0.000007 -0.766571 0.025668 -3.835609 -0.000002 0.000002 -0.000001 0.000000 0.000001 0.000002 -0.000002 -0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -46.561963 -1.976878 1.457066 96.512724 -3.729577 -3.767536 52.523571 -6.236259 -0.556125 0.000019 -0.000044 0.000080 -0.000003 0.000000 -0.000000 0.000018 -0.000045 0.000079 0.000001 0.000004 0.000000 0.000008 0.000003 0.000134 -46.367634 1.141438 -2.083232 96.053504 -3.571615 -3.896090 54.531769 2.587710 -11.309734 -0.000028 0.000043 -0.000079 0.000001 0.000000 0.000000 -0.000025 0.000043 -0.000079 -0.000000 0.000002 -0.000000 -0.000000 0.000002 -0.000097 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000
0.000000 -19.950417 0.000001 5.768879 -0.000001 -0.000001 -4.494298 0.011117 0.328576 -3.331844 0.001426 0.132716 9.520049 -0.000001 -0.000002 11.295133 -0.000002 -0.000002 0.000001 0.000022 -179.999991 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -10.985989 -0.370892 4.989975 16.426463 -57.517604 -91.382296 -0.000003 -56.831542 -0.000009 -0.413949 -0.007477 2.070172 0.000001 -0.000003 -0.000000 -0.000000 0.000001 0.000001 0.000001 0.000000 -0.000000 -0.000002 0.000000 -0.000000 -9.514018 0.761234 -4.331592 20.023381 69.444241 86.000496 0.000001 58.261377 -0.000008 -0.863190 0.032555 -4.319881 -0.000001 -0.000002 -0.000001 0.000000 0.000002 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 -49.111864 -2.112186 1.485437 102.282622 -4.084957 -3.731041 55.436148 -6.566578 -0.417573 0.000019 -0.000041 0.000072 -0.000001 -0.000000 0.000000 0.000021 -0.000040 0.000072 0.000002 0.000004 -0.000000 -0.000004 0.000003 0.000134 -48.905418 1.248423 -2.163373 101.788868 -3.926359 -3.874934 57.554241 2.404758 -11.951415 -0.000026 0.000046 -0.000081 0.000001 -0.000000 0.000000 -0.000028 0.000044 -0.000083 -0.000001 0.000003 0.000001 0.000007 0.000002 -0.000097 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -20.997923 0.000001 6.056485 -0.000001 -0.000001 -4.718337 0.010996 0.344969 -3.497919 0.001294 0.139331 9.509847 -0.000001 -0.000002 11.314597 -0.000002 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -11.511495 -0.858341 5.190876 17.784749 -60.463676 -90.853038 -0.000007 -59.745201 -0.000010 -0.478456 -0.009993 2.392946 0.000002 0.000002 -0.000000 -0.000002 -0.000001 0.000001 -0.000002 0.000000 -0.000000 -0.000000 0.000000 0.000000 -9.686118 1.156286 -4.619216 22.585552 72.179964 84.430666 0.000003 61.252556 -0.000010 -0.958240 0.040136 -4.796570 -0.000002 0.000004 0.000001 -0.000001 0.000002 -0.000001 -0.000001 -0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -51.612400 -2.245965 1.507385 107.848421 -4.422468 -3.662074 58.291307 -6.882893 -0.265584 0.000009 -0.000040 0.000075 0.000001 -0.000001 0.000000 0.000011 -0.000042 0.000074 -0.000000 0.000003 0.000000 -0.000004 0.000002 0.000133 -51.393984 1.356680 -2.237284 107.322496 -4.264828 -3.820947 60.510148 2.193198 -12.569222 -0.000025 0.000049 -0.000085 -0.000003 -0.000000 0.000000 -0.000023 0.000047 -0.000085 -0.000002 0.000003 0.000001 -0.000001 0.000002 -0.000098 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -22.024841 0.000001 6.338420 -0.000001 -0.000001 -4.937961 0.010816 0.361037 -3.660726 0.001148 0.145816 9.499853 -0.000001 -0.000002 11.332010 -0.000002 -0.000002 0.000000 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -12.024768 -1.337694 5.383387 19.296089 -63.320525 -90.136258 -0.000006 -62.582756 -0.000010 -0.541675 -0.012812 2.709343 0.000002 0.000001 0.000000 0.000001 -0.000002 -0.000002 0.000001 -0.000001 -0.000000 0.000000 0.000000 -0.000000 -9.850243 1.544190 -4.900042 25.780822 74.813254 82.193274 0.000005 64.164566 -0.000012 -1.051337 0.048325 -5.263787 -0.000001 -0.000001 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000001 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 0.000001 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -54.052030 -2.377274 1.523148 113.173175 -4.737506 -3.565672 61.075210 -7.183413 -0.102340 0.000012 -0.000039 0.000071 -0.000003 -0.000001 0.000001 0.000009 -0.000039 0.000071 0.000001 0.000003 0.000000 0.000001 0.000003 0.000133 -53.821843 1.465292 -2.304802 112.617894 -4.582269 -3.738878 63.384886 1.956955 -13.159300 -0.000015 0.000043 -0.000079 -0.000002 0.000000 0.000001 -0.000016 0.000042 -0.000081 0.000001 0.000002 0.000000 -0.000002 0.000002 -0.000097 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000
0.000000 -23.027040 0.000001 6.613547 -0.000001 -0.000001 -5.152289 0.010581 0.376718 -3.819611 0.000986 0.152144 9.490099 -0.000001 -0.000002 11.347499 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 -0.000000 -12.523891 -1.806847 5.567027 21.001624 -66.072245 -89.189362 -0.000009 -65.330903 -0.000012 -0.603350 -0.015896 3.018094 0.000001 0.000001 -0.000001 0.000002 0.000002 -0.000002 -0.000002 -0.000001 -0.000000 -0.000001 0.000000 -0.000000 -10.006142 1.923308 -5.173052 29.929435 77.316785 78.965320 0.000005 66.983611 -0.000013 -1.142106 0.057054 -5.719658 -0.000000 -0.000001 -0.000000 0.000001 -0.000002 0.000000 0.000000 0.000001 0.000000 0.000001 -0.000000 -0.000001 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 0.000001 -0.000002 0.000000 -56.419716 -2.505233 1.533083 118.227460 -5.026917 -3.447416 63.774774 -7.466703 0.069775 -0.000002 -0.000039 0.000070 0.000002 0.000001 -0.000000 0.000000 -0.000039 0.000072 0.000005 0.000005 0.000000 0.000000 0.000002 0.000132 -56.178005 1.573340 -2.365871 117.645774 -4.875316 -3.634077 66.164869 1.700378 -13.718437 -0.000013 0.000042 -0.000074 0.000001 -0.000001 0.000000 -0.000011 0.000042 -0.000074 0.000002 0.000003 0.000001 -0.000006 0.000003 -0.000098 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -24.000408 0.000001 6.880740 -0.000001 -0.000001 -5.360441 0.010296 0.391946 -3.973922 0.000814 0.158289 9.480626 -0.000002 -0.000002 11.361165 -0.000002 -0.000002 0.000001 0.000022 -179.999991 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -13.006975 -2.263685 5.741377 22.955883 -68.703425 -87.956492 -0.000008 -67.977280 -0.000014 -0.663229 -0.019210 3.317930 -0.000001 0.000003 0.000000 0.000000 0.000000 0.000002 -0.000001 0.000000 -0.000000 0.000001 0.000000 -0.000000 -10.153623 2.292004 -5.437247 35.575488 79.653489 74.200470 0.000008 69.697040 -0.000019 -1.230177 0.066221 -6.162289 -0.000000 0.000002 -0.000001 0.000002 0.000001 0.000000 -0.000001 -0.000000 -0.000001 0.000001 -0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -58.704984 -2.629013 1.537648 122.989290 -5.288947 -3.313009 66.377616 -7.731698 0.248228 0.000009 -0.000037 0.000066 -0.000003 0.000001 -0.000001 0.000008 -0.000037 0.000066 0.000000 0.000002 -0.000000 0.000006 0.000003 0.000133 -58.452124 1.679920 -2.420554 122.384258 -5.141986 -3.512088 68.837652 1.428126 -14.244159 -0.000008 0.000041 -0.000069 -0.000003 -0.000000 0.000001 -0.000005 0.000041 -0.000072 0.000002 0.000003 0.000000 -0.000001 0.000002 -0.000097 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -24.940834 0.000001 7.138864 -0.000001 -0.000001 -5.561536 0.009968 0.406656 -4.123004 0.000631 0.164226 9.471475 -0.000001 -0.000002 11.373134 -0.000002 -0.000002 0.000000 0.000022 -179.999991 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 -0.000002 -0.000000 -0.000000 0.000001 0.000000 -0.000000 -13.472168 -2.706093 5.906077 25.231463 -71.198828 -86.363740 -0.000012 -70.510413 -0.000014 -0.721056 -0.022707 3.607577 -0.000000 -0.000007 -0.000001 0.000000 0.000003 0.000002 0.000000 -0.000000 0.000000 -0.000001 0.000000 -0.000000 -10.292499 2.648639 -5.691619 43.667360 81.765253 66.947827 0.000009 72.293099 -0.000021 -1.315175 0.075719 -6.589813 0.000000 0.000003 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -60.897953 -2.747863 1.537380 127.443489 -5.523085 -3.167935 68.872281 -7.977663 0.430433 0.000004 -0.000035 0.000062 -0.000004 0.000000 -0.000000 0.000003 -0.000033 0.000061 0.000002 0.000003 0.000000 -0.000000 0.000002 0.000133 -60.634321 1.784154 -2.469011 126.818130 -5.381503 -3.378290 71.391924 1.145019 -14.734642 0.000002 0.000033 -0.000057 -0.000004 0.000000 0.000001 0.000003 0.000032 -0.000058 0.000000 0.000003 0.000001 0.000000 0.000002 -0.000097 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -25.844189 0.000001 7.386787 -0.000001 -0.000001 -5.754696 0.009605 0.420785 -4.266206 0.000441 0.169928 9.462679 -0.000002 -0.000002 11.383513 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -13.917605 -3.131956 6.060825 27.925724 -73.543133 -84.312798 -0.000017 -72.919824 -0.000018 -0.776580 -0.026343 3.885764 0.000001 0.000002 0.000000 0.000000 0.000003 -0.000001 -0.000001 0.000000 -0.000000 0.000002 -0.000000 0.000000 -10.422601 2.991575 -5.935185 55.798821 83.550029 55.611598 0.000012 74.761038 -0.000016 -1.396729 0.085436 -7.000354 -0.000000 0.000000 0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -62.989289 -2.861108 1.532881 131.580794 -5.729808 -3.017211 71.248019 -8.204185 0.613784 -0.000002 -0.000033 0.000058 0.000000 0.000001 0.000000 -0.000004 -0.000033 0.000059 -0.000000 0.000004 0.000000 0.000003 0.000003 0.000131 -62.715364 1.885204 -2.511493 130.937991 -5.594108 -3.237659 73.817406 0.855902 -15.188708 0.000000 0.000030 -0.000054 -0.000002 0.000000 0.000002 -0.000000 0.000030 -0.000054 0.000000 0.000003 0.000000 -0.000003 0.000003 -0.000097 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -26.706356 0.000001 7.623387 -0.000001 -0.000001 -5.939035 0.009214 0.434267 -4.402872 0.000246 0.175370 9.454289 -0.000001 -0.000002 11.392412 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -14.341461 -3.539163 6.205348 31.169111 -75.720269 -81.671946 -0.000020 -75.195916 -0.000020 -0.829548 -0.030066 4.151231 -0.000000 -0.000001 0.000001 -0.000000 0.000001 0.000001 0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -10.543797 3.319177 -6.166950 73.950827 84.825806 38.208379 0.000015 77.091177 -0.000026 -1.474475 0.095251 -7.392054 -0.000001 0.000002 -0.000000 0.000001 0.000001 -0.000000 -0.000000 -0.000002 0.000000 0.000001 -0.000000 0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -64.970276 -2.968146 1.524807 135.396998 -5.910352 -2.865249 73.495062 -8.411162 0.795734 -0.000004 -0.000029 0.000052 0.000001 0.000001 -0.000000 -0.000000 -0.000030 0.000053 -0.000000 0.000004 0.000000 -0.000001 0.000002 0.000133 -64.686570 1.982281 -2.548324 134.739374 -5.780807 -3.094611 76.104966 0.565555 -15.605775 0.000002 0.000024 -0.000041 0.000004 0.000000 0.000000 0.000005 0.000025 -0.000044 -0.000000 0.000001 0.000000 -0.000007 0.000002 -0.000097 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -27.523220 0.000001 7.847526 -0.000001 -0.000001 -6.113676 0.008803 0.447039 -4.532354 0.000048 0.180525 9.446336 -0.000002 -0.000002 11.399954 -0.000002 -0.000002 -0.000001 0.000022 -179.999991 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 -0.000003 -0.000000 -0.000000 0.000000 0.000000 0.000000 -14.741911 -3.925612 6.339431 35.134234 -77.712636 -78.267718 -0.000027 -77.329926 -0.000026 -0.879710 -0.033816 4.402709 0.000001 -0.000002 0.000000 -0.000001 -0.000000 -0.000000 0.000000 0.000001 0.000000 0.000000 0.000000 -0.000001 -10.655962 3.629812 -6.385934 97.676896 85.351683 15.182932 0.000019 79.274727 -0.000031 -1.548051 0.105039 -7.763042 -0.000000 0.000002 -0.000001 -0.000001 -0.000002 0.000000 0.000000 0.000001 0.000000 0.000002 0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -66.832718 -3.068456 1.513843 138.891610 -6.066459 -2.715794 75.604300 -8.598736 0.973820 -0.000004 -0.000021 0.000042 0.000001 0.000001 0.000000 -0.000004 -0.000023 0.000042 0.000001 0.000003 -0.000000 -0.000001 0.000003 0.000133 -66.539805 2.074649 -2.579886 138.221568 -5.943140 -2.952936 78.246347 0.278614 -15.985742 0.000010 0.000025 -0.000041 0.000002 0.000000 0.000000 0.000012 0.000024 -0.000044 -0.000000 0.000004 0.000000 0.000002 0.000003 -0.000096 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -28.290663 0.000001 8.058081 -0.000001 -0.000001 -6.277740 0.008382 0.459036 -4.653997 -0.000146 0.185367 9.438865 -0.000001 -0.000002 11.406241 -0.000002 -0.000002 0.000001 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 -0.000000 -15.117138 -4.289203 6.462874 40.041946 -79.500185 -73.878372 -0.000028 -79.313885 -0.000030 -0.926813 -0.037539 4.638938 0.000000 -0.000004 -0.000000 0.000000 0.000001 0.000001 -0.000000 0.000001 0.000000 -0.000001 0.000001 -0.000001 -10.758981 3.921859 -6.591148 120.723375 85.063367 -7.212985 0.000020 81.303614 -0.000034 -1.617093 0.114665 -8.111467 -0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000001 0.000001 -0.000000 -0.000001 0.000001 -0.000000 -68.568966 -3.161597 1.500685 142.067006 -6.200161 -2.571934 77.567405 -8.767251 1.145685 -0.000001 -0.000025 0.000046 -0.000001 -0.000000 -0.000000 -0.000002 -0.000026 0.000045 0.000001 0.000003 -0.000000 0.000000 0.000003 0.000132 -68.267454 2.161634 -2.606600 141.386692 -6.082961 -2.815788 80.234184 -0.000559 -16.328926 0.000017 0.000019 -0.000031 -0.000000 0.000000 -0.000001 0.000017 0.000019 -0.000035 -0.000000 0.000003 0.000000 -0.000001 0.000002 -0.000096 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -29.004560 0.000001 8.253928 -0.000001 -0.000002 -6.430347 0.007959 0.470195 -4.767150 -0.000338 0.189871 9.431916 -0.000001 -0.000002 11.411393 -0.000002 -0.000002 0.000003 0.000022 -179.999991 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -15.465334 -4.627847 6.575510 46.151021 -81.059449 -68.244040 -0.000035 -81.140455 -0.000038 -0.970612 -0.041176 4.858648 0.000000 -0.000000 -0.000000 0.000000 0.000002 0.000000 0.000000 0.000001 -0.000000 0.000001 0.000001 -0.000002 -10.852751 4.193685 -6.781606 137.643543 84.225808 -23.534805 0.000027 83.170592 -0.000045 -1.681247 0.123990 -8.435469 -0.000001 0.000004 0.000000 -0.000001 -0.000004 0.000000 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -70.171711 -3.247177 1.486036 144.927298 -6.313612 -2.436164 79.376640 -8.917227 1.309123 -0.000007 -0.000021 0.000036 0.000000 0.000000 -0.000000 -0.000008 -0.000023 0.000038 0.000000 0.000004 0.000000 0.000004 0.000003 0.000133 -69.862283 2.242609 -2.628924 144.238610 -6.202287 -2.685744 82.061704 -0.267785 -16.635984 0.000014 0.000017 -0.000026 -0.000001 0.000000 0.000001 0.000015 0.000015 -0.000028 -0.000001 0.000003 0.000000 0.000001 0.000002 -0.000097 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -29.660795 0.000001 8.433934 -0.000001 -0.000002 -6.570620 0.007545 0.480450 -4.871159 -0.000521 0.194011 9.425530 -0.000001 -0.000002 11.415527 -0.000002 -0.000002 0.000001 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -15.784688 -4.939472 6.677183 53.705969 -82.363953 -61.119381 -0.000050 -82.802759 -0.000050 -1.010853 -0.044672 5.060583 0.000000 -0.000001 0.000000 -0.000000 -0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 0.000000 -0.000002 -10.937173 4.443681 -6.956321 148.730866 83.155559 -34.077719 0.000046 84.868802 -0.000068 -1.740153 0.132884 -8.733206 -0.000001 0.000003 -0.000000 -0.000001 -0.000002 0.000000 0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -71.634081 -3.324872 1.470583 147.477608 -6.408946 -2.310448 81.024786 -9.049262 1.462082 -0.000009 -0.000019 0.000033 0.000000 0.000001 -0.000000 -0.000010 -0.000021 0.000031 -0.000001 0.000003 0.000000 -0.000002 0.000002 0.000134 -71.317413 2.317005 -2.647318 146.782145 -6.303134 -2.564859 83.722731 -0.519231 -16.907739 0.000024 0.000011 -0.000019 -0.000001 0.000000 0.000001 0.000024 0.000010 -0.000021 -0.000002 0.000003 0.000000 0.000001 0.000002 -0.000096 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -30.255251 0.000001 8.596983 -0.000001 -0.000002 -6.697679 0.007147 0.489738 -4.965372 -0.000694 0.197760 9.419744 -0.000002 -0.000001 11.418741 -0.000002 -0.000002 0.000001 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 -0.000000 0.000000 -16.073397 -5.222026 6.767751 62.798398 -83.387772 -52.411665 -0.000058 -84.294370 -0.000062 -1.047291 -0.047958 5.243484 0.000000 0.000002 -0.000001 0.000000 -0.000000 -0.000000 -0.000000 0.000001 -0.000000 -0.000001 -0.000000 -0.000001 -11.012153 4.670228 -7.114305 155.991289 82.044833 -40.849657 0.000062 86.391935 -0.000101 -1.793461 0.141204 -9.002827 -0.000001 0.000001 0.000000 -0.000002 -0.000000 0.000000 -0.000000 -0.000000 -0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000001 -0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000 -0.000001 0.000000 -72.949453 -3.394391 1.454992 149.723238 -6.488199 -2.196320 82.504949 -9.164040 1.602646 -0.000006 -0.000017 0.000033 0.000001 0.000000 -0.000001 -0.000006 -0.000018 0.000032 0.000000 0.000003 0.000000 0.000002 0.000002 0.000132 -72.626303 2.384301 -2.662243 149.022338 -6.387443 -2.454763 85.211405 -0.751357 -17.145185 0.000021 0.000009 -0.000012 0.000000 0.000000 0.000001 0.000022 0.000007 -0.000013 -0.000002 0.000002 0.000000 -0.000001 0.000003 -0.000096 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000
0.000000 -30.783815 0.000001 8.741938 -0.000001 -0.000002 -6.810647 0.006777 0.497996 -5.049142 -0.000855 0.201094 9.414597 -0.000001 -0.000002 11.421167 -0.000002 -0.000002 0.000002 0.000022 -179.999991 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -16.329632 -5.473437 6.847046 73.143178 -84.115678 -42.404994 -0.000070 -85.608997 -0.000067 -1.079677 -0.050975 5.406087 0.000000 -0.000002 -0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000002 0.000001 -0.000001 -11.077584 4.871724 -7.254549 160.896526 80.991564 -45.324142 0.000093 87.733780 -0.000129 -1.840809 0.148807 -9.242487 -0.000000 0.000002 -0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000001 0.000001 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000001 -0.000002 0.000000 0.000001 -0.000002 0.000000 -74.111323 -3.455483 1.439894 151.668940 -6.553213 -2.094980 83.810519 -9.262219 1.729072 -0.000004 -0.000014 0.000028 -0.000001 0.000000 -0.000000 -0.000003 -0.000014 0.000029 0.000000 0.000003 0.000000 -0.000005 0.000003 0.000132 -73.782470 2.444013 -2.674145 150.963805 -6.456984 -2.356734 86.522084 -0.960866 -17.349312 0.000032 0.000004 -0.000005 -0.000000 -0.000000 0.000001 0.000031 0.000003 -0.000005 -0.000002 0.000001 0.000000 0.000001 0.000002 -0.000096 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -31.242353 0.000001 8.867684 -0.000001 -0.000002 -6.908644 0.006442 0.505159 -5.121810 -0.000995 0.203986 9.410134 -0.000001 -0.000002 11.422906 -0.000002 -0.000002 -0.000000 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -16.551570 -5.691685 6.914899 83.921325 -84.558746 -31.917102 -0.000100 -86.740445 -0.000102 -1.107763 -0.053666 5.547131 -0.000001 -0.000004 0.000000 -0.000001 -0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000001 0.000000 -0.000000 -11.133367 5.046568 -7.376054 164.305173 80.047194 -48.361971 0.000234 88.888191 -0.000266 -1.881851 0.155562 -9.450353 -0.000001 0.000001 -0.000000 0.000000 0.000001 0.000001 0.000001 -0.000002 0.000001 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000000 -75.113325 -3.507909 1.425879 153.318527 -6.605623 -2.007368 84.934946 -9.344440 1.839728 -0.000008 -0.000012 0.000022 0.000000 -0.000000 0.000000 -0.000008 -0.000014 0.000022 -0.000001 0.000004 0.000000 0.000001 0.000002 0.000132 -74.779534 2.495689 -2.683437 152.610113 -6.513332 -2.271795 87.649099 -1.144821 -17.521044 0.000022 0.000005 -0.000002 0.000000 -0.000000 -0.000000 0.000025 0.000004 -0.000005 -0.000001 0.000002 0.000000 0.000001 0.000003 -0.000095 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -31.626757 0.000001 8.973092 -0.000001 -0.000002 -6.990795 0.006152 0.511163 -5.182727 -0.001116 0.206409 9.406394 -0.000002 -0.000002 11.424078 -0.000002 -0.000002 0.000002 0.000022 -179.999991 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 0.000000 0.000000 -0.000000 -16.737385 -5.874740 6.971113 93.973233 -84.764874 -22.106433 -0.000155 -87.682431 -0.000122 -1.131299 -0.055978 5.665358 0.000000 0.000001 0.000000 0.000000 -0.000001 -0.000000 -0.000000 0.000001 0.000001 0.000001 0.000000 0.000001 -11.179380 5.193167 -7.477803 166.705315 79.241437 -50.453255 0.001724 89.848967 -0.002293 -1.916228 0.161337 -9.624560 -0.000001 -0.000002 0.000000 0.000001 -0.000001 0.000002 -0.000000 -0.000000 -0.000001 0.000001 -0.000000 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 0.000001 -0.000000 -0.000000 0.000001 -0.000000 -0.000000 -75.948965 -3.551438 1.413489 154.674306 -6.646799 -1.934250 85.871604 -9.411272 1.933123 -0.000010 -0.000015 0.000026 -0.000000 0.000001 0.000000 -0.000010 -0.000015 0.000028 -0.000001 0.000003 0.000000 0.000001 0.000003 0.000131 -75.611068 2.538904 -2.690498 153.963420 -6.557810 -2.200778 88.586659 -1.300455 -17.661201 0.000022 -0.000000 0.000004 0.000000 -0.000000 0.000000 0.000025 -0.000001 0.000003 -0.000003 0.000000 0.000000 0.000001 0.000002 -0.000096 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000
0.000000 -31.932913 0.000001 9.057035 -0.000001 -0.000002 -7.056218 0.005915 0.515944 -5.231246 -0.001214 0.208340 9.403415 -0.000001 -0.000002 11.424781 -0.000001 -0.000002 0.000004 0.000022 -179.999991 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000002 0.000000 -0.000000 0.000000 0.000000 -0.000000 -16.885201 -6.020578 7.015441 102.292765 -84.810165 -13.977501 -0.000231 -88.428301 -0.000204 -1.150041 -0.057852 5.759514 0.000000 -0.000007 -0.000000 -0.000000 -0.000002 0.000000 -0.000000 -0.000002 -0.000000 0.000000 0.000001 -0.000001 -11.215493 5.309929 -7.558771 168.378657 78.593593 -51.881885 -0.000407 90.609522 0.000591 -1.943593 0.166012 -9.763287 -0.000000 0.000004 -0.000001 -0.000000 -0.000000 0.000000 -0.000000 -0.000001 -0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000001 -0.000000 0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000001 -0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 -76.611575 -3.585820 1.403215 155.736591 -6.677850 -1.876290 86.613622 -9.463125 2.007888 -0.000012 -0.000012 0.000022 -0.000000 -0.000000 -0.000001 -0.000014 -0.000012 0.000023 -0.000000 0.000004 0.000000 0.000002 0.000003 0.000132 -76.270455 2.573240 -2.695652 155.023902 -6.591491 -2.144403 89.328561 -1.425261 -17.770329 0.000025 0.000001 0.000002 0.000000 0.000000 0.000001 0.000026 0.000002 0.000001 -0.000003 -0.000002 0.000000 0.000002 0.000002 -0.000097 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000
0.000000 -32.156685 0.000001 9.118386 -0.000001 -0.000002 -7.104039 0.005739 0.519438 -5.266707 -0.001288 0.209751 9.401234 -0.000002 -0.000002 11.425157 -0.000002 -0.000002 0.000000 0.000022 -179.999991 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000002 0.000000 0.000000 -0.000001 0.000000 0.000000 -16.993154 -6.127212 7.047602 108.344525 -84.775516 -8.064533 -0.000360 -88.971055 -0.000289 -1.163736 -0.059244 5.828324 -0.000001 -0.000002 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000002 0.000000 0.000001 0.000001 -0.000001 -11.241535 5.395279 -7.617918 169.489259 78.117652 -52.814400 -0.000140 91.162829 0.000290 -1.963583 0.169470 -9.864663 0.000000 0.000003 -0.000000 0.000001 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000002 0.000000 -0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -77.094278 -3.610790 1.395479 156.503348 -6.699596 -1.834100 87.153740 -9.500252 2.062724 -0.000008 -0.000010 0.000019 -0.000000 -0.000000 0.000000 -0.000008 -0.000010 0.000020 -0.000001 0.000003 0.000000 -0.000002 0.000003 0.000131 -76.750795 2.598290 -2.699155 155.789430 -6.615158 -2.103325 89.868146 -1.516946 -17.848688 0.000031 0.000003 0.000001 -0.000000 -0.000000 0.000000 0.000032 0.000001 -0.000001 -0.000002 0.000003 0.000000 0.000002 0.000003 -0.000096 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000
0.000000 -32.293980 0.000001 9.156029 -0.000001 -0.000002 -7.133373 0.005629 0.521582 -5.288462 -0.001333 0.210616 9.399898 -0.000001 -0.000002 11.425295 -0.000002 -0.000002 0.000001 0.000022 -179.999991 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 -17.059338 -6.192640 7.067230 111.981546 -84.726707 -4.512072 -0.000490 -89.302989 -0.000428 -1.172136 -0.060104 5.870544 -0.000000 -0.000002 0.000001 0.000000 0.000000 0.000000 -0.000000 -0.000002 0.000000 -0.000001 0.000000 -0.000000 -11.257331 5.447641 -7.654193 170.128934 77.824910 -53.345157 -0.000141 91.501155 0.000209 -1.975843 0.171606 -9.926853 0.000001 0.000000 -0.000000 -0.000000 -0.000002 0.000000 0.000002 -0.000002 0.000001 0.000000 -0.000001 0.000000 -0.000000 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 -77.389732 -3.626039 1.390641 156.969727 -6.712548 -1.808296 87.484164 -9.522718 2.096445 -0.000007 -0.000010 0.000015 0.000000 0.000000 -0.000001 -0.000009 -0.000012 0.000015 -0.000001 0.000002 -0.000000 -0.000000 0.000002 0.000131 -77.044793 2.613637 -2.701196 156.255085 -6.629283 -2.078183 90.198085 -1.573359 -17.896190 0.000028 -0.000003 0.000003 -0.000000 -0.000000 -0.000000 0.000030 -0.000003 0.000001 -0.000003 0.000003 0.000000 0.000003 0.000002 -0.000096 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
0.000000 -32.340652 0.000001 9.168825 -0.000001 -0.000002 -7.143349 0.005590 0.522311 -5.295858 -0.001348 0.210911 9.399442 -0.000001 -0.000002 11.425315 -0.000002 -0.000002 0.000002 0.000022 -179.999991 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 0.000000 -0.000000 0.000000 -0.000000 -17.081842 -6.214888 7.073883 113.198979 -84.705479 -3.323484 -0.001207 -89.415673 -0.001070 -1.174991 -0.060397 5.884893 0.000001 -0.000001 0.000000 0.000000 -0.000001 0.000000 0.000000 -0.000001 -0.000000 0.000000 0.000000 -0.000001 -11.262648 5.465438 -7.666524 170.339604 77.725299 -53.518801 0.000058 91.616018 -0.000018 -1.980011 0.172340 -9.947997 -0.000000 -0.000000 -0.000000 -0.000000 -0.000001 0.000000 -0.000000 -0.000001 0.000001 -0.000001 -0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 -0.000000 0.000000 -0.000000 0.000000 0.000000 0.000000 0.000000 -0.000001 -0.000000 0.000000 -0.000001 -0.000000 -77.490067 -3.631213 1.388978 157.127600 -6.716883 -1.799539 87.596356 -9.530300 2.107924 -0.000010 -0.000012 0.000023 0.000000 0.000000 0.000000 -0.000011 -0.000012 0.000022 -0.000001 0.000002 0.000000 -0.000004 0.000002 0.000132 -77.144644 2.618851 -2.701872 156.412725 -6.634017 -2.069647 90.310052 -1.592574 -17.912238 0.000035 -0.000005 0.000012 0.000000 0.000000 0.000000 0.000035 -0.000005 0.000012 -0.000002 0.000002 0.000000 0.000000 0.000002 -0.000095 -0.000001 -0.000000 -0.000000 -0.000001 -0.000000 -0.000000

Some files were not shown because too many files have changed in this diff Show More