./play.it 2.12: API, GUI and video games
./play.it is a free/libre software that builds native packages for several Linux distributions from
DRM-free installers for a collection of commercial games. These packages can then be installed using the standard distribution-provided tools (
APT,
pacman,
emerge, etc.).
A more complete description of
./play.it has already been posted in
linux_gaming a couple months ago:
./play.it, an easy way to install commercial games on GNU/Linux It's already been one year since version
2.11 was released, in January 2019. We will only briefly review the changelog of version
2.12 and focus on the different points of
./play.it that kept us busy during all this time, and of which coding was only a small part.
What’s new with 2.12?
Though not the focus of this article, it would be a pity not to present all the added features of this brand new version. ;)
Compared to the usual updates,
2.12 is a major one, especially since for two years, we slowed down the addition of new features. Some patches took dust since the end of 2018 before finally be integrated in this update!
The list of changes for this 2.12 release can be found
on our forge. Here is a full copy for convenience:
- New options:
- --output-dir: Set the output directory for generated packages
- --overwrite: Replace packages if they already exist
- --icons: Allow including icons only if dependencies are present
- Wrapper changes:
- Drop $XDG_RUNTIME_DIR from the candidates for temporary directories
- Prevent scan of unneeded directories
- Drop script identification by MD5 hash
- Archive-related changes:
- Only extract needed files when using unzip
- Allow to use renamed installers
- Add support for LHA archives extraction
- Engines-related changes:
- New engine: ResidualVM
- New engine: System-provided Mono runtime
- DOSBox: Use $PLAYIT_DOSBOX_BINARY in launchers if defined
- Packages-related changes:
- Add ability to set variables for package-specific postinst and prerm scripts
- Arch Linux: Improve consistence of 32-bit packages naming
- New helper functions:
- version_target_is_older_than: Check if the game script target version is older than a given one
- toupper: Convert files name to upper case
- New generic dependency keywords:
- libgdk_pixbuf-2.0.so.0
- libglib-2.0.so.0 / libgobject-2.0.so.0
- libmbedtls.so.12
- libpng16.so.16
- libopenal.so.1 (alias for openal)
- libSDL2-2.0.so.0 (alias for sdl2)
- libturbojpeg.so.0
- libuv.so.1
- libvorbisfile.so.3 (alias for vorbis)
- libz.so.1
- Codebase clean-up and improvements:
- Massive rework of all message-related functions
- Drop hardcoded paths for icons and .desktop launchers
- Use system-specific default installation prefix for generated packages
- Forcefully set errexit setting on library initialization
- Use dirname/basename instead of built-in shell patterns
Development migration
History
As many free/libre projects,
./play.it development started on some random sector of a creaking hard drive, and unsurprisingly, a whole part of its history (everything predating version
1.13.15 released on Mars 30th, 2016) disappeared into the limbs because some unwise operation destroyed the only copy of the repository… Lesson learned, what's not shared don't stay long, and so was born the first public Git repository of the project. The easing of collaborative work was only accidentally achieved by this quest for eternity, but wasn't the original motivation for making the repository publicly available.
Following this decision,
./play.it source code has been hosted successively by many shared forge platforms:
- GitHub, that we all know of, choosing it was more a short-term fallback than a long-term decision ;
- some Gogs instance, which was hosted by debian-fr.xyz, a community the main ./play.it author is close to ;
- Framagit, a famous instance of the infamous GitLab forge, hosted by Framasoft.
Dedicated forge
As development progressed,
./play.it began to increase its need for resources, dividing its code into several repositories to improve the workflow of the different aspects of the projects, adding continuous integration tests and their constraints, etc. A furious desire to understand the nooks and crannies behind a forge platform was the last deciding factor towards hosting a dedicated forge.
So it happened, we deployed a forge platform on a dedicated server, hugely benefiting from the tremendous work achieved by
the GitLab's package Debian Maintainers team. In return, we tried to
contribute our findings in improving this software packaging.
That was not expected, but this migration happened just a little time before the announcement “
Déframasoftisons Internet !” (French article) about the planned end of
Framagit.
This dedicated instance used to be hosted on a VPS rented from
Digital Ocean until the second half of July 2020, and since then has been moved to another VPS, rented from
Hetzner. The specifications are similar, as well as the service, but thanks to this migration our hosting costs have been cut in half. Keeping in mind that this is paid by a single person, so any little donation helps a lot on this front. ;)
To the surprise of our system administrator, this last migration took only a couple hours with no service interruption reported by our users.
Forge access
This new forge can be found at
forge.dotslashplay.it. Registrations are open to the public, but we ask you to not abuse this, the main restriction being that we do not wish to host projects unrelated to
./play.it. Of course exceptions are made for our active contributors, who are allowed to host some personal projects there.
So, if you wish to use this forge to host your own work, you first need to make some significant contributions to
./play.it.
API
The collection of supported games growing endlessly, we have started the development of a
public API allowing access to lots of information related to
./play.it.
This API, which is not yet stabilized, is simply an interface to a versioned database containing all the
./play.it scripts, handled archives, games installable through the project. Relations are, of course, handled between those items, enabling its use for requests like : « What packages are required on my system to install
Cæsar Ⅲ ? » or « What are the free (as in beer) games handled via
DOSBox ? ».
Originally developed as support for the new, in-development, Web site (we'll talk about it later on), this API should facilitate the development of tools around
./play.it. For example, it'll be useful for whomever would like to build a complete video game handling software (downloading, installation, starting, etc.) using
./play.it as one of its building bricks.
For those curious about the technical side, it's an API based on
Lumeneffectuant that makes requests on a
MariaDB database, all self-hosted on a
Debian Sid. Not only is the code of the API versioned on
our forge, but also the structure
and content of the databases, which will allow those who desired it to install a local version easily.
New website
Based on the aforementioned API, a new website is under development and will replace our
current website based on
DokuWiki.
Indeed, if the lack of database and the plain text files structure of DokuWiki seemed at first attractive,
as ./play.it supported only a handful of games (link in French), this feature became more inconvenient as the library of
./play.it supported games grew.
We shall make an in-depth presentation of this website for the
2.13 release of
./play.it, but a
public demo of the development version from
our forge is already available.
If you feel like providing an helping hand on this task, some
priority tasks have been identified to allow opening a new Web site able to replace the current one. And for those interested in technical details, this web Site was developed in
PHP using the framework
Laravel. The current in-development version is hosted for now on the same
Debian Sid than the API.
GUI
A regular comment that is done about the project is that, if the purpose is to make installing games accessible to everyone without technical skills, having to run scripts in the terminal remains somewhat intimidating. Our answer until now has been that while the project itself doesn't aim to providing a graphical interface (
KISS principle "Keep it simple, stupid"), still and always), but that it would be relatively easy to, later on, develop a graphical front-end to it.
Well, it happens that is now reality. Around the time of our
latest publication, one of our contributors, using the API we just talked about, developed a small prototype that is usable enough to warrant a little shout out. :-)
In practice, it is some small
Python 3 code (an
HCI completely in POSIX shell is for a later date :-°), using
GTK 3 (and still a VTE terminal to display the commands issued, but the user shouldn't have to input anything in it, except perhaps the
root password to install some packages). This allowed to verify that, as we used to say, it would be relatively easy, since a script of less than 500 lines of code (written quickly over a week-end) was enough to do the job !
Of course, this graphical interface project stays independent from the main project, and is maintained in a
specific repository. It seems interesting to us to promote it in order to ease the use of
./play.it, but this doesn't prevent any other similar projects to be born, for example using a different language or graphical toolkit (we, globally, don't have any particular affinity towards Python or GTK).
The use of this
HCI needs three steps : first, a list of available games is displayed, coming directly from our API. You just need to select in the list (optionally using the search bar) the game you want to install. Then it switches to a second display, which list the required files. If several alternatives are available, the user can select the one he wants to use. All those files must be in the same directory, the address bar on the top enabling to select which one to use (click on the open button on the top opens a filesystem navigation window). Once all those files available (if they can be downloaded, the software will do it automatically), you can move ahead to the third step, which is just watching
./play.it do its job :-) Once done, a simple click on the button on the bottom will run the game (even if, from this step, the game is fully integrated on your system as usual, you no longer need this tool to run it).
To download potentially missing files, the HCI will use, depending on what's available on the system, either
wget,
curl or
aria2c (this last one also handling torrents), of which the output will be displayed in the terminal of the third phase, just before running the scripts. For privilege escalation to install packages, sudo will be used preferentially if available (with the option to use a third-party application for password input, if the corresponding environment variable is set, which is more user-friendly), else su will be used.
Of course, any suggestion for an improvement will be received with pleasure.
New games
Of course, such an announcement would not be complete without a list of the games that got added to our collection since the
2.11 release… So here you go:
- 7 Billion Humans
- Agatha Christie: The ABC Murders
- Age of Mythology Demo
- Among the Sleep
- Anomaly: Warzone Earth
- Another Lost Phone: Lauraʼs Story
- Assault Android Cactus
- Baba Is You
- Blade Runner
- Bleed
- Bleed 2
- Blocks that matter (previously supported by ./play.it 1.x)
- Butcher Demo
- Capsized
- Cayne
- Cineris Somnia
- Commandos 3: Destination Berlin
- Diablo
- Din’s Curse
- Divine Divinity (previously supported by ./play.it 1.x)
- Duet (previously supported by ./play.it 1.x)
- Earthworm Jim
- Edna & Harvey: The Breakout — Anniversary Edition
- Element4l
- Factorio — Demo
- Finding Paradise
- Firewatch
- FlatOut 2
- Forced
- Forgotton Anne
- Freelancer Demo
- Frostpunk
- Full Throttle Remastered
- Giana Sisters: Twisted Dreams
- Gibbous — A Cthulhu Adventure
- Gorogoa
- Indiana Jones and the Last Crusade
- Into the Breach
- Kerbal Space Program
- LEGO Batman: The Videogame
- Lego Harry Potter Years 1-4
- Maniac Mansion
- Metal Slug 3 (previously supported by ./play.it 1.x)
- MIND: Path to thalamus
- Minecraftn 4K
- Minit
- Monkey Island 4: Escape from Monkey Island
- Multiwinia (previously supported by ./play.it 1.x)
- Mushroom 11
- Myst: Masterpiece Edition (previously supported by ./play.it 1.x)
- Neverwinter Nights: Enhanced Edition
- Overgrowth
- Perimeter
- Populous: Promised Lands (previously supported by ./play.it 1.x)
- Populous 2 (previously supported by ./play.it 1.x)
- Prison Architect
- Q.U.B.E. 2
- Quern — Undying Thoughts
- Rayman Origins
- Retro City Rampage (previously supported by ./play.it 1.x)
- RiME
- Satellite Reign (previously supported by ./play.it 1.x)
- Star Wars: Knights of the Old Republic (previously supported by ./play.it 1.x)
- Starship Titanic
- SteamWorld Quest: Hand of Gilgamech
- Stellaris
- Ancient Relics Story Pack
- Apocalypse
- Arachnoid Portrait Pack
- Distant Stars Story Pack
- Federations
- Horizon Signal
- Humanoids Species Pack
- Leviathans Story Pack
- Lithoids Species Pack
- Megacorp
- Plantoids Species Pack
- Synthetic Dawn Story Pack
- Utopia
- Strike Suit Zero
- Sundered
- Sunless Skies
- Symphony
- Tangledeep
- Tengami
- Tetrobot and Co.
- The Adventures of Shuggy
- The Aquatic Adventure of the Last Human
- The Count Lucanor
- The First Tree
- The Longing
- The Pillars of the Earth
- The Witcher (previously supported by ./play.it 1.x)
- The Witcher 3: Wild Hunt
- Tonight We Riot
- Toren
- Touhou Chireiden ~ Subterranean Animism — Demo
- Touhou Hifuu Nightmare Diary ~ Violet Detector
- Triple Triad Gold
- Vambrace: Cold Soul
- VVVVVV (previously supported by ./play.it 1.x)
- War for the Overworld (the base game was already supported, new expansions have been added):
- Heart of Gold
- Seasonal Worker Skins
- The Under Games
- Warcraft: Orcs & Humans
- Warhammer 40,000: Dawn of War — Winter Assault Demo
- Warhammer 40,000: Gladius — Relics of War
- Warlords Battlecry II (previously supported by ./play.it 1.x)
- Wing Commander (previously supported by ./play.it 1.x)
- Wing Commander II (previously supported by ./play.it 1.x)
- Yooka Laylee
- Zak McKracken and the Alien Mindbenders
If your favourite game is not supported by
./play.it yet, you should ask for it in
the dedicated tracker on our forge. The only requirement to be a valid request is that there exists a version of the game that is not burdened by DRM.
What’s next?
Our team being inexhaustible, work on the
future 2.13 version has already begun…
A few major objectives of this next version are :
- the complete and definitive relegation to the archive bin of ./play.it 1.14, which is still required for about twenty games ;
- the initial release of the new Web site ;
- redaction of documentation towards end-users but also potential contributors ;
- and, after all this time waiting for it, handling of CD‑ROM !
If your desired features aren't on this list, don't hesitate to signal it us, in the comments of this news release. ;)
Links
submitted by hello All ,i'm going to strenghten my knowledge (or not) on WDS/PXE Feature on SCCM v2006.
History :
Configuration :
DHCP options 66+67 on DHCP Instance, I know Microsoft doesn't recommand that design for subnet/vlan reaching but who know i don't wanna explain to network engineer what i intent to implement ... waster of time , anyway until now work like a charm .
EG :
https://preview.redd.it/do3v84uyl4n51.png?width=498&format=png&auto=webp&s=7de51b7130f7d8aed656f789edacc7b525d7ba6e Was implemented on release before v1901 about one year ago (can't recall exactly)
Was updated on v2002 : after that ... broken
Was forced to use Norton ghost as last resort for past two weeks (and it was painfull to .. wait) .. thanks for guyz on reddit (for SCCM client rearm :) )
Problem/Issues related (Testing VM machine) where firewall turned off on OS supervisor .. :
Booting on PXE After That . Steps
- I tried to re-set again PXE and WDS , cleaner windir\temp folder, cleaned once old WDS repo'
- WDS was installed before and unconfigured
- PXE was enable after that
- BootImg was created with MDT Kit
- D:\RemoteInstall structure seems fine
SMSImages SMSTemp BootImage Logs from SMSPXE.log after last attempt , i read someone Cert chain no validated can be culprit , on log seems ok-ish
I recalled first time i've that worked without the pain , this time wont try to find proper boot file .. (:X) .
If anyone faced same problem ? because now i can say "what the fonk seriously" :D.
With the power of fonk , i going to use IP-Helpers .. not sure if will help ..
And finally logs (SMSPXE.log)
InstallBootFilesForImage failed. 0x80004005 SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
Warning: Failed to copy the needed boot binaries from the boot image D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim.
The operation completed successfully. (Error: 00000000; Source: Windows) SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
Failed adding image D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim. Will Retry..
Unspecified error (Error: 80004005; Source: Windows) SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
File D:\RemoteInstall\SMSTemp\2020.09.14.16.37.13.01.{84E47845-E5AB-460E-93B5-9B7F08051E40}.boot.bcd deleted. SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
File D:\RemoteInstall\SMSTemp\2020.09.14.16.37.13.01.{84E47845-E5AB-460E-93B5-9B7F08051E40}.boot.bcd.log deleted. SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
Found new image 034000AD SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
Loaded Windows Imaging API DLL (version '10.0.19041.1') from location 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\wimgapi.dll' SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
Opening image file D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
Found Image file: D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim
PackageID: 034000AD
ProductName: Microsoft® Windows® Operating System
Architecture: 0
Description: Microsoft Windows PE (x86)
Version:
Creator:
SystemDir: WINDOWS
`SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)`
Closing image file D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim SMSPXE 9/14/2020 4:37:15 PM 13052 (0x32FC)
InstallBootFilesForImage failed. 0x80004005 SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
Warning: Failed to copy the needed boot binaries from the boot image D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim.
The operation completed successfully. (Error: 00000000; Source: Windows) SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
Failed adding image D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim. Will Retry..
Unspecified error (Error: 80004005; Source: Windows) SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
File D:\RemoteInstall\SMSTemp\2020.09.14.16.37.15.02.{75724072-C04C-4BF2-B834-A47B23D7FDF7}.boot.bcd deleted. SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
File D:\RemoteInstall\SMSTemp\2020.09.14.16.37.15.02.{75724072-C04C-4BF2-B834-A47B23D7FDF7}.boot.bcd.log deleted. SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
Begin validation of Certificate [Thumbprint 6EF26DCEC790BA64CFD3519502FA750109D455E1] issued to '335523aa-73c7-4343-9fb3-10dea91b547d' SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
Completed validation of Certificate [Thumbprint 6EF26DCEC790BA64CFD3519502FA750109D455E1] issued to '335523aa-73c7-4343-9fb3-10dea91b547d' SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
PXE Provider finished loading. SMSPXE 9/14/2020 4:37:16 PM 13052 (0x32FC)
Error opening file: D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim. Win32=32 SMSPXE 9/14/2020 4:37:18 PM 5632 (0x1600)
Retrying D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim SMSPXE 9/14/2020 4:37:18 PM 5632 (0x1600)
Found new image 034000AC SMSPXE 9/14/2020 4:37:21 PM 5632 (0x1600)
Loaded Windows Imaging API DLL (version '10.0.19041.1') from location 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\wimgapi.dll' SMSPXE 9/14/2020 4:37:21 PM 5632 (0x1600)
Opening image file D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim SMSPXE 9/14/2020 4:37:21 PM 5632 (0x1600)
Found Image file: D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim
PackageID: 034000AC
ProductName: Microsoft® Windows® Operating System
Architecture: 9
Description: Microsoft Windows PE (x64)
Version:
Creator:
SystemDir: WINDOWS
`SMSPXE 9/14/2020 4:37:21 PM 5632 (0x1600)`
Closing image file D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim SMSPXE 9/14/2020 4:37:21 PM 5632 (0x1600)
Found new image 034000AD SMSPXE 9/14/2020 4:37:23 PM 5632 (0x1600)
Loaded Windows Imaging API DLL (version '10.0.19041.1') from location 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\wimgapi.dll' SMSPXE 9/14/2020 4:37:23 PM 5632 (0x1600)
Opening image file D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim SMSPXE 9/14/2020 4:37:23 PM 5632 (0x1600)
Found Image file: D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim
PackageID: 034000AD
ProductName: Microsoft® Windows® Operating System
Architecture: 0
Description: Microsoft Windows PE (x86)
Version:
Creator:
SystemDir: WINDOWS
`SMSPXE 9/14/2020 4:37:23 PM 5632 (0x1600)`
Closing image file D:\RemoteInstall\SMSImages\034000AD\WinPE.034000AD.wim SMSPXE 9/14/2020 4:37:23 PM 5632 (0x1600)
Boot image 034000AC has changed since added SMSPXE 9/14/2020 4:37:28 PM 5632 (0x1600)
Loaded Windows Imaging API DLL (version '10.0.19041.1') from location 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\wimgapi.dll' SMSPXE 9/14/2020 4:37:28 PM 5632 (0x1600)
Opening image file D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim SMSPXE 9/14/2020 4:37:28 PM 5632 (0x1600)
Found Image file: D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim
PackageID: 034000AC
ProductName: Microsoft® Windows® Operating System
Architecture: 9
Description: Microsoft Windows PE (x64)
Version:
Creator:
SystemDir: WINDOWS
`SMSPXE 9/14/2020 4:37:28 PM 5632 (0x1600)`
Closing image file D:\RemoteInstall\SMSImages\034000AC\WinPE.034000AC.wim SMSPXE 9/14/2020 4:37:28 PM 5632 (0x1600)
============> Received from client: SMSPXE 9/14/2020 4:38:55 PM 5156 (0x1424)
Operation: BootRequest (1) Addr type: 1 Addr Len: 6 Hop Count: 0 ID: 0001E240
Sec Since Boot: 65535 Client IP:
172.025.168.158 Your IP:
000.000.000.000 Server IP:
172.025.169.187 Relay Agent IP:
000.000.000.000 Addr: 00:15:5d:01:31:08:
Magic Cookie: 63538263
Options:
Type=93 Client Arch: EFI BC
Type=97 UUID: 00832d0a20cbcfa24c9774be443d9fdf64
Type=53 Msg Type: 3=Request
Type=60 ClassId: PXEClient
Type=55 Param Request List: 3c8081828384858687
Type=250 0c01000d020800010200070e0100ff SMSPXE 9/14/2020 4:38:55 PM 5156 (0x1424)
Prioritizing local MP
http://CSFOREFRONT03.netia-ad.local. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
Not in SSL. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
RequestMPKeyInformation: Send() failed. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
Unsuccessful in getting MP key information. 80004005. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
PXE::MP_InitializeTransport failed; 0x80004005 SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
PXE::MP_LookupDevice failed; 0x80070490 SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
Prioritizing local MP
http://CSFOREFRONT03.netia-ad.local. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
Not in SSL. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
RequestMPKeyInformation: Send() failed. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
Unsuccessful in getting MP key information. 80004005. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
PXE::MP_InitializeTransport failed; 0x80004005 SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
PXE::MP_ReportStatus failed; 0x80070490 SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
PXE Provider failed to process message.
Element not found. (Error: 80070490; Source: Windows) SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
00:15:5D:01:31:08, 200A2D83-CFCB-4CA2-9774-BE443D9FDF64: Not serviced. SMSPXE 9/14/2020 4:38:55 PM 9128 (0x23A8)
File D:\RemoteInstall\SMSTemp\2020.09.14.16.37.21.03.{922B1EC8-ECAD-42F6-A001-84177BDD5C13}.boot.bcd deleted. SMSPXE 9/14/2020 4:47:16 PM 3120 (0x0C30)
File D:\RemoteInstall\SMSTemp\2020.09.14.16.37.21.03.{922B1EC8-ECAD-42F6-A001-84177BDD5C13}.boot.bcd.log deleted. SMSPXE 9/14/2020 4:47:16 PM 3120 (0x0C30)
============> Received from client: SMSPXE 9/14/2020 4:53:04 PM 5156 (0x1424)
Operation: BootRequest (1) Addr type: 1 Addr Len: 6 Hop Count: 0 ID: 0001E240
Sec Since Boot: 65535 Client IP:
172.025.168.158 Your IP:
000.000.000.000 Server IP:
172.025.169.187 Relay Agent IP:
000.000.000.000 Addr: 00:15:5d:01:31:08:
Magic Cookie: 63538263
Options:
Type=93 Client Arch: EFI BC
Type=97 UUID: 00832d0a20cbcfa24c9774be443d9fdf64
Type=53 Msg Type: 3=Request
Type=60 ClassId: PXEClient
Type=55 Param Request List: 3c8081828384858687
Type=250 0c01000d020800010200070e0100ff SMSPXE 9/14/2020 4:53:04 PM 5156 (0x1424)
Prioritizing local MP
http://CSFOREFRONT03.netia-ad.local. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
Not in SSL. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
RequestMPKeyInformation: Send() failed. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
Unsuccessful in getting MP key information. 80004005. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
PXE::MP_InitializeTransport failed; 0x80004005 SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
PXE::MP_LookupDevice failed; 0x80070490 SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
Prioritizing local MP
http://CSFOREFRONT03.netia-ad.local. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
Not in SSL. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
RequestMPKeyInformation: Send() failed. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
Unsuccessful in getting MP key information. 80004005. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
PXE::MP_InitializeTransport failed; 0x80004005 SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
PXE::MP_ReportStatus failed; 0x80070490 SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
PXE Provider failed to process message.
Element not found. (Error: 80070490; Source: Windows) SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
00:15:5D:01:31:08, 200A2D83-CFCB-4CA2-9774-BE443D9FDF64: Not serviced. SMSPXE 9/14/2020 4:53:04 PM 9128 (0x23A8)
submitted by debug.cpp TesterHook.cpp entityidxarray.cpp graph.cpp graphnode.cpp modAI_Memory.cpp aAI_CommsInstructions.cpp aAI_EntityInterface.cpp cAI_Action.cpp cAI_AdminManager.cpp cAI_Agent.cpp cAI_CommsModule.cpp cAI_CommsPrefix.cpp cAI_CommsPrep.cpp cAI_EntityGame.cpp cAI_EntityPlayer.cpp cAI_TransitionData.cpp cAI_Variables.cpp modAI_Audio.cpp modAI_Communication.cpp modAI_Identifier.cpp modAI_Interaction.cpp modAI_Interface.cpp modAI_Senses.cpp modAI_Synchronisation.cpp aAI_PerformTask.cpp cAI_ActionManager.cpp cAI_AnimInterface.cpp cAI_LowLevelInterface.cpp cAI_PerformanceManager.cpp cAI_PerformancePhase.cpp cAI_PerformTaskAction.cpp cAI_PerformTaskAnim.cpp cAI_PerformTaskAudio.cpp cAI_SpeechInterface.cpp aAI_Controller.cpp aAI_ControllerCombat.cpp aAI_Coordinator.cpp aAI_EntityIDArray.cpp aAI_Objective.cpp cAI_ControllerBoundary.cpp cAI_ControllerCamp.cpp cAI_ControllerCombatBlind.cpp cAI_ControllerCombatCover.cpp cAI_ControllerCombatMelee.cpp cAI_ControllerCoverSeek.cpp cAI_ControllerFollow.cpp cAI_ControllerFollowThrough.cpp cAI_ControllerGoto.cpp cAI_ControllerGotoGunfire.cpp cAI_ControllerGuard.cpp cAI_ControllerHide.cpp cAI_ControllerIdle.cpp cAI_ControllerOrbit.cpp cAI_ControllerSearch.cpp cAI_ControllerStop.cpp cAI_CoordinateBoundary.cpp cAI_CoordinateGenericAction.cpp cAI_CoordinateGenericCombat.cpp cAI_CoordinateGuard.cpp cAI_CoordinateIdle.cpp cAI_CoordinateInvestigate.cpp cAI_CoordinateKillEnemy.cpp cAI_CoordinateSearch.cpp cAI_Goal.cpp cAI_GoalDefinition.cpp cAI_IdleActions.cpp cAI_ObjectiveBeBuddy.cpp cAI_ObjectiveHuntEnemy.cpp cAI_ObjectiveIdle.cpp cAI_ObjectiveScriptedAction.cpp cAI_Pack.cpp cAI_Subpack.cpp cAI_HearingSense.cpp cAI_SensesData.cpp cAI_SensingPhase.cpp cAI_VisionSense.cpp meleeTraits.cpp traits.cpp acts.cpp atomicActs.cpp combatUtil.cpp coverActs.cpp gunActBase.cpp meleeActs.cpp pedBodyAnimFSM.cpp pedTorsoAnimFSM.cpp compDriver.cpp weaponController.cpp formation.cpp motion.cpp navigation.cpp navPoint.cpp navTactics.cpp pointTracker.cpp squad.cpp pedSpace.cpp gunPerception.cpp itemPerception.cpp meleeCombatPerception.cpp pedRelationshipPerception.cpp selfPerception.cpp Senses.cpp Vision.cpp AnimBlendAssociation.cpp AnimBlendClumpData.cpp AnimBlendHierarchy.cpp AnimBlendNode.cpp AnimBlendSequence.cpp AnimHierarchy.cpp AnimManager.cpp Compressed.cpp EntityAnim.cpp App.cpp GameTime.cpp AmbientTransitionManager.cpp AudioAnim.cpp audiobloodfx.cpp AudioCollision.cpp audiolog.cpp audioman.cpp AudioMisc.cpp AudioScripted.cpp AudioTextMap.cpp CriAdxStream.cpp CriAixStream.cpp CriInterface.cpp dmaudio.cpp music.cpp SampleManagerChannelFunctions.cpp sampman.cpp ScriptedStream.cpp SpeechManager.cpp VolumeFader.cpp AgeSupport.cpp manager.cpp sfx.cpp system_wii.cpp BufferedSoundWii.cpp CRC.cpp SectorReadables.cpp ColAABox.cpp ColArch.cpp ColData.cpp ColFrustum.cpp ColLine.cpp Collision.cpp ColModelLine.cpp ColModelPoint.cpp ColModelSphere.cpp ColModelTri.cpp ColPrim.cpp ColSphere.cpp ColTri.cpp ContactInfo.cpp ColCylinder.cpp ColModelCylinder.cpp console.cpp skel.cpp wiiplatform.cpp CollectableEffect.cpp CreationManager.cpp Entity.cpp EntityManager.cpp OddEntity.cpp TypeData.cpp Character.cpp ped.cpp pedstates.cpp attackdirectiondata.cpp attackdirectionlookup.cpp pedcombatlookups.cpp pedspinecontrol.cpp pushporter.cpp Climb.cpp Crawl.cpp Crouch.cpp Detector.cpp Dive.cpp Jump.cpp JumpPredictor.cpp autoped.cpp Hunter.cpp Leader.cpp PedHead.cpp delayedHunterSpawn.cpp RsvGoreEffectForExecutions.cpp CameraData.cpp collectable.cpp conveyor.cpp door.cpp EntityLight.cpp Lift.cpp mover.cpp ShotEntity.cpp slidedoor.cpp switch.cpp Trigger.cpp Useable.cpp EntitySound.cpp EnvironmentalExecution.cpp Helicopter.cpp ShadowPlane.cpp FileHandler.cpp FileNames.cpp LoadSave.cpp eyelayerinset.cpp Frontend.cpp FrontendMenu.cpp GameInfo.cpp GameInventory.cpp GameMap.cpp randomuvanimator.cpp tvlayerinset.cpp confirmnewgamepage.cpp inventorystatussettings.cpp layeredbackground.cpp layeredpage.cpp pageeffects.cpp randomoverlay.cpp screenanim.cpp screeneffectsmanager.cpp startpage.cpp texanimator.cpp weaponslotcolours.cpp weaponswapper.cpp weaponswappersettings.cpp backgroundPicAnim.cpp bar.cpp confirmingameQuitPage.cpp ContextButtonDisplay.cpp controllerPage.cpp defaultSettingsPage.cpp ExecutionBox.cpp ExecutionFrame.cpp FlexText.cpp GoalFlexText.cpp hud.cpp hudItem.cpp ingameMainPage.cpp InventorySelector.cpp inventoryStatus.cpp item.cpp LevelNameFlexText.cpp LoadProgressScreen.cpp menu.cpp newGameBrightnessPage.cpp page.cpp radar.cpp saveGamesPage.cpp sceneselectionPage.cpp screen.cpp startLanguageSelectionPage.cpp textures.cpp cGEN_String.cpp cGEN_Timer.cpp gGEN_Globals.cpp gGEN_StandardFunctions.cpp modGEN_Housekeeping.cpp modGEN_Memory.cpp stats.cpp aGEN_Array.cpp cGEN_CharArray.cpp cDBG_DebugFile.cpp modDBG_LowLevelDebug.cpp aGEN_Memory.cpp modGEN_MemoryReporting.cpp rwcore.cpp TextUtils.cpp UniCodeUtils.cpp MhGlobalData.cpp MhLoadSave_Wii.cpp MhPeripherals_Wii.cpp Pad_Wii.cpp WiiLoadSave.cpp CheatHandler.cpp InputManager.cpp WiiAccelerometer.cpp WiiGesture.cpp ActionMapping.cpp KeyCode.cpp Inventory.cpp fx.cpp fxEmitter.cpp fxInfo.cpp fxInterp.cpp fxKeyGen.cpp fxList.cpp fxManager.cpp fxPrim.cpp fxSystem.cpp fxUtils.cpp MHtoFXinterface.cpp Maths.cpp Matrix.cpp Quaternion.cpp Vector.cpp MemManager.cpp PoolAllocationManager.cpp PoolAllocator.cpp CutsceneCamera.cpp EntityFadeController.cpp SimpleLinearAllocator.cpp Cylinder.cpp FrisbeeArm.cpp CriAfsPartition.cpp CriDataStream.cpp DataStreamManager.cpp Portal.cpp StreamedLevelSector.cpp StreamedLevelSectorCore.cpp StreamedLevelSectorManager.cpp StreamedAnimation.cpp StreamedAnimationManager.cpp TexturePool.cpp TexturePoolGroup.cpp TexturePoolManager.cpp AiHelpers.cpp EntityAttrReader.cpp EntityAttrWriter.cpp EntityTextureRenderer.cpp EnvironmentID.cpp PathSearch.cpp RsvDebuggingInfoForUseables.cpp RsvTvpChecker.cpp StringHashing.cpp OverlayMgr.cpp RwRGBA_Globals.cpp ScreenStringsOverlay.cpp TextOverlay.cpp Physics.cpp collisionFrame.cpp camglobals.cpp Crosshair.cpp ExecutionTutorial.cpp handicam.cpp ImpactDamageMap.cpp player.cpp playercam.cpp PLayerLimits.cpp playerstates.cpp WiiExecutionMap.cpp WiiQuickTimeMoment.cpp grenade.cpp responder.cpp Atomic.cpp Camera.cpp CharacterDamageManager.cpp CharacterDamageMap.cpp Clump.cpp ClumpDict.cpp clumplist.cpp collisionmaterial.cpp EntityShadow.cpp EntityShadowManager.cpp Frame.cpp Geometry.cpp Light.cpp lights.cpp material.cpp materiallist.cpp scene.cpp sceneData.cpp skin.cpp spline.cpp texdictionary.cpp texture.cpp tvp.cpp utils.cpp uvanimator.cpp World.cpp WorldSector.cpp CutScene.cpp CutScenePlayed.cpp EntityShadowFader.cpp MaterialMapper.cpp lit_environmentmap.cpp lit_singletexture.cpp lit_singletexture_uvanim.cpp lit_texreconfig.cpp unlit_32indtexture.cpp unlit_notexture.cpp unlit_singletexture.cpp entityData.cpp LoadedScript.cpp ScriptCaseFloat.cpp ScriptCaseGame.cpp ScriptCaseGame2.cpp ScriptCaseGame3.cpp ScriptCaseGameRsv.cpp ScriptCaseInternals.cpp ScriptCaseStandard.cpp ScriptCaseStrings.cpp ScriptLoader.cpp ScriptManager.cpp ScriptVM.cpp BreakingGlass.cpp clouds.cpp Decal.cpp dualtexture.cpp fogpatch.cpp FXMode.cpp LightFX.cpp ParticleEffect.cpp ParticleModel.cpp rats.cpp Renderbuffer.cpp rubbish.cpp SFXManager.cpp StreakEffect.cpp TrailEffect.cpp Weather.cpp jitter.cpp lipsync.cpp spotlight.cpp spotlightcone.cpp throwgraphic.cpp OverbrightEffect.cpp VideoScreenEffect.cpp Str.cpp Timer.cpp Shot.cpp Weapon.cpp WeaponManager.cpp colramp.cpp Gu.cpp GuProfiler.cpp main.cpp renderer.cpp rslengine.cpp shadermgr.cpp vectorASM.cpp volatilemem.cpp WiiGeometry.cpp WiiShader.cpp WorldCollision.cpp actor.c control.c displayObject.c dmabuffer.cpp fileCache.c geoPalette.c GQRSetup.c List.c normalTable.c SKNControl.c SKNMath.c string.c texPalette.c Tree.c HomeButtonMenu.cpp display.cpp binkfunctions.cpp binkplayer.cpp wiitextures.c adler32.c infblock.c infcodes.c inffast.c inflate.c inftrees.c infutil.c zutil.c binkwii.c binkread.c wiiax.c wiifile.c binkacd.c radcb.c expand.c popmal.c radmem.c fft.c dct.c bitplane.c ai.c arc.c AX.c AXAlloc.c AXAux.c AXCL.c AXOut.c AXSPB.c AXVPB.c AXProf.c AXComp.c DSPCode.c AXFXReverbHi.c AXFXReverbHiDpl2.c AXFXReverbHiExp.c AXFXReverbHiExpDpl2.c AXFXReverbStd.c AXFXReverbStdExp.c AXFXHooks.c PPCArch.c gki_buffer.c gki_time.c gki_ppc.c hcisu_h2.c uusb_ppc.c bta_dm_cfg.c bta_hh_cfg.c bta_sys_cfg.c bte_hcisu.c bte_init.c bte_logmsg.c bte_main.c btu_task1.c bd.c bta_sys_conn.c bta_sys_main.c ptim.c utl.c bta_dm_act.c bta_dm_api.c bta_dm_main.c bta_dm_pm.c bta_hh_act.c bta_hh_api.c bta_hh_main.c bta_hh_utils.c btm_acl.c btm_dev.c btm_devctl.c btm_discovery.c btm_inq.c btm_main.c btm_pm.c btm_sco.c btm_sec.c btu_hcif.c btu_init.c wbt_ext.c gap_api.c gap_conn.c gap_utils.c hcicmds.c hidd_api.c hidd_conn.c hidd_mgmt.c hidd_pm.c hidh_api.c hidh_conn.c l2c_api.c l2c_csm.c l2c_link.c l2c_main.c l2c_utils.c port_api.c port_rfc.c port_utils.c rfc_l2cap_if.c rfc_mx_fsm.c rfc_port_fsm.c rfc_port_if.c rfc_ts_frames.c rfc_utils.c sdp_api.c sdp_db.c sdp_discovery.c sdp_main.c sdp_server.c sdp_utils.c db.c dsp.c dsp_debug.c dsp_task.c dvdfs.c dvd.c dvdqueue.c dvderror.c dvdidutils.c dvdFatal.c dvd_broadway.c euart.c EXIBios.c EXIUart.c EXICommon.c fs.c GXInit.c GXFifo.c GXAttr.c GXMisc.c GXGeometry.c GXFrameBuf.c GXLight.c GXTexture.c GXBump.c GXTev.c GXPixel.c GXDisplayList.c GXTransform.c GXPerf.c HBMBase.cpp HBMAnmController.cpp HBMFrameController.cpp HBMGUIManager.cpp HBMController.cpp HBMRemoteSpk.cpp db_assert.cpp db_console.cpp db_DbgPrintBase.cpp db_directPrint.cpp db_mapFile.cpp lyt_animation.cpp lyt_arcResourceAccessor.cpp lyt_bounding.cpp lyt_common.cpp lyt_drawInfo.cpp lyt_group.cpp lyt_layout.cpp lyt_material.cpp lyt_pane.cpp lyt_picture.cpp lyt_resourceAccessor.cpp lyt_textBox.cpp lyt_window.cpp math_triangular.cpp snd_AnimSound.cpp snd_AxManager.cpp snd_AxVoice.cpp snd_Bank.cpp snd_BankFile.cpp snd_BasicSound.cpp snd_Channel.cpp snd_DisposeCallbackManager.cpp snd_DvdSoundArchive.cpp snd_EnvGenerator.cpp snd_ExternalSoundPlayer.cpp snd_FrameHeap.cpp snd_InstancePool.cpp snd_Lfo.cpp snd_MemorySoundArchive.cpp snd_MidiSeqPlayer.cpp snd_MidiSeqTrack.cpp snd_MmlParser.cpp snd_MmlSeqTrack.cpp snd_MmlSeqTrackAllocator.cpp snd_NandSoundArchive.cpp snd_PlayerHeap.cpp snd_RemoteSpeaker.cpp snd_RemoteSpeakerManager.cpp snd_SeqFile.cpp snd_SeqPlayer.cpp snd_SeqSound.cpp snd_SeqSoundHandle.cpp snd_SeqTrack.cpp snd_SoundArchive.cpp snd_SoundArchiveFile.cpp snd_SoundArchiveLoader.cpp snd_SoundArchivePlayer.cpp snd_SoundHandle.cpp snd_SoundHeap.cpp snd_SoundPlayer.cpp snd_SoundStartable.cpp snd_SoundSystem.cpp snd_SoundThread.cpp snd_StrmChannel.cpp snd_StrmFile.cpp snd_StrmPlayer.cpp snd_StrmSound.cpp snd_StrmSoundHandle.cpp snd_TaskManager.cpp snd_TaskThread.cpp snd_Util.cpp snd_WaveFile.cpp snd_WavePlayer.cpp snd_WaveSound.cpp snd_WaveSoundHandle.cpp snd_WsdFile.cpp snd_WsdPlayer.cpp snd_WsdTrack.cpp ut_binaryFileFormat.cpp ut_CharStrmReader.cpp ut_CharWriter.cpp ut_DvdFileStream.cpp ut_DvdLockedFileStream.cpp ut_FileStream.cpp ut_Font.cpp ut_IOStream.cpp ut_LinkList.cpp ut_list.cpp ut_ResFont.cpp ut_ResFontBase.cpp ut_TagProcessorBase.cpp ut_TextWriterBase.cpp ipcMain.c ipcclt.c memory.c ipcProfile.c KPAD.c mem_heapCommon.c mem_expHeap.c mem_frameHeap.c mem_unitHeap.c mem_allocator.c mem_list.c mix.c remote.c mtx.c mtxvec.c mtx44.c vec.c psmtx.c nand.c NANDOpenClose.c NANDCore.c NANDCheck.c OS.c OSAlarm.c OSAlloc.c OSArena.c OSAudioSystem.c OSCache.c OSContext.c OSError.c OSExec.c OSFatal.c OSFont.c OSInterrupt.c OSLink.c OSMessage.c OSMemory.c OSMutex.c OSReboot.c OSReset.c OSRtc.c OSSemaphore.c OSSync.c OSThread.c OSTime.c OSUtf.c OSIpc.c OSStateTM.c __start.c OSPlayRecord.c OSStateFlags.c OSNet.c OSNandbootInfo.c __ppc_eabi_init.cpp Pad.c scsystem.c scapi.c scapi_prdinfo.c seq.c SIBios.c SISamplingRate.c syn.c TPL.c usb.c vi.c i2c.c vi3in1.c wenc.c WPAD.c WPADHIDParser.c WPADEncrypt.c WPADMem.c debug_msg.c WUD.c WUDHidHost.c debug_msg.c DebuggerDriver.c exi2.c float.cpp alloc.c ansi_files.c ansi_fp.c arith.c buffer_io.c ctype.c direct_io.c errno.c file_io.c FILE_POS.C locale.c mbstring.c mem.c mem_funcs.c math_api.c misc_io.c printf.c qsort.c rand.c scanf.c signal.c string.c strtold.c strtoul.c wctype.c wstring.c wchar_io.c uart_console_io_gcn.c abort_exit_ppc_eabi.c math_sun.c extras.c e_atan2.c e_exp.c e_fmod.c e_log.c e_log10.c e_pow.c e_rem_pio2.c k_cos.c k_rem_pio2.c k_sin.c k_tan.c s_atan.c s_ceil.c s_copysign.c s_cos.c s_floor.c s_frexp.c s_ldexp.c s_sin.c s_tan.c w_atan2.c w_exp.c w_fmod.c w_log.c w_log10.c w_pow.c e_sqrt.c math_ppc.c w_sqrt.c __mem.c __va_arg.c global_destructor_chain.c NMWException.cp ptmf.c runtime.c __init_cpp_exceptions.cpp Gecko_ExceptionPPC.cp GCN_mem_alloc.c mainloop.c nubevent.c nubinit.c msg.c msgbuf.c serpoll.c usr_put.c dispatch.c msghndlr.c support.c mutex_TRK.c notify.c flush_cache.c mem_TRK.c string_TRK.c __exception.s targimpl.c targsupp.s mpc_7xx_603e.c mslsupp.c dolphin_trk.c main_TRK.c dolphin_trk_glue.c targcont.c target_options.c UDP_Stubs.c main.c CircleBuffer.c MWCriticalSection_gc.cpp HashKeyFunctions.cpp MemMan.cpp Random.cpp RelocatableChunk.cpp fmod_eventi.cpp fmod_eventsystemi.cpp fmod_sounddef.cpp fmod_eventcategoryi.cpp fmod_eventparameteri.cpp fmod_eventprojecti.cpp fmod_eventgroupi.cpp fmod_reverbdef.cpp fmod_channel_revolution.cpp fmod_os_misc.cpp fmod_os_output.cpp fmod_output_revolution.cpp fmod_sample_revolution.cpp fmod_dsp.cpp fmod_dspi.cpp fmod_codec_aiff.cpp fmod_codec_dsp.cpp fmod_codec_fsb.cpp fmod_codec_user.cpp fmod.cpp fmod_async.cpp fmod_channel.cpp fmod_channel_emulated.cpp fmod_channel_real.cpp fmod_channel_realmanual3d.cpp fmod_channel_stream.cpp fmod_channeli.cpp fmod_channelpool.cpp fmod_channelgroup.cpp fmod_channelgroupi.cpp fmod_codec.cpp fmod_debug.cpp fmod_file.cpp fmod_file_disk.cpp fmod_file_memory.cpp fmod_file_null.cpp fmod_file_user.cpp fmod_listener.cpp fmod_memory.cpp fmod_metadata.cpp fmod_output.cpp fmod_output_emulated.cpp fmod_output_polled.cpp fmod_plugin.cpp fmod_pluginfactory.cpp fmod_sound.cpp fmod_sound_sample.cpp fmod_sound_stream.cpp fmod_soundi.cpp fmod_string.cpp fmod_stringw.cpp fmod_system.cpp fmod_systemi.cpp fmod_thread.cpp fmod_time.cpp fmod_globals.cpp fmod_output_nosound.cpp fmod_output_nosound_nrt.cpp fmod_reverbi.cpp fmod_speakerlevels_pool.cpp
submitted by We've been running DHCPD for years and just ran into a problem that has stumped me for weeks. I'm hoping there are some experts here that have overcome this issue before.
We normally log option 82 with our IPv4 clients which includes a text string from a downstream fibre to the home access node. The string is ASCII and looks something similar to: "NODE 1/1/4/1/xyz12345678"
We then log this with client.remote-id. No issues, been doing it for years.
Recently we've been working towards a general customer IPv6 dual-stack roll out. Our access gear provides the identical string as above in option 37. We use v6relay to pick out the correct string. Problem is the string comes encoded as per the RFC. Using binary-to-ascii(16,8,"", v6relay(1, option client.remote-id)) yields nothing. As a matter of fact the entire log line is skipped. I've tried some other binary to ascii options without success. If I extract the value of option 37 from a pcap (nested value 1... because the access gear + cisco router with ip helper both add option 37 values) I can see the value is encoded as hex. If I grab the value and paste it into any hex to ascii converter everything is there.
Am I missing something here with binary-to-ascii, or is this just not doable in the dhcpd config file?
E: autocorrect typo
submitted by Continuing “Hello and good day, gentlemen”, I say. “I am Doctor Rocknocker. You may and will refer to me as ‘Rock’. OK? None of this ‘Doctor’ or ‘Sir’ guff. We green here?”
There was a buzz of voices but no direct answers.
“OK. Let’s get a few things down right here and now.
(1.) Call me Rock.
(b.) Answer me loudly. I will need to hear you loud and clear. Best get used to that now.
(iii.) “We green?” means “Are we in agreement?” It’s a form of shorthand I use here and in the field.
(⍾.) “
You diggin’ me, Beaumont? means you’ve
really done gone and pissed me off; you’ve done something untoward. Pray you never hear that phrase, and,
(∞.) I’m the boss. The top dog. The hookin’ bull. The
Maharaja here. I possess the first, final and only words you’re going to listen to for the next couple of weeks. What I say, goes. Any problem, please let me know now so we can replace you most quickly.”
A gentle buzz, but no replies.
“Gentlemen. Do we agree?” I ask.
“Yes, Rock.” Was the reply.
OK, there might be some form of a societal prohibition against making loud noises. That’s the first thing that has to go.
“Gentlemen, we will be working in the great outdoors where there are wind, rain, waves, and other environmental nonsense making all sorts of unrequited noise. We need clear and proper lines of communication. I need to hear you clearly and vice-versa. When speaking, you will speak slowly, clearly, and loudly. “
“
DO WE AGREE!?!” I yell, rather deafeningly.
“YES, ROCK!” came the eventual reply.
“Outstanding”. I ponder.
Continuing…
“Mr. Sanjay is my
de facto second in command. If I’m out having a smoke, taking a piss, or having a snort, he’s in charge. Listen to him as if I suddenly lost 150 pounds, shaved my beard, and inexplicably become Indian.” I chuckled.
They seemed to enjoy that. I actually elicited a few chuckles.
“Mr. Sanjay will now distribute to you your locker boxes. You will wait until he hands you yours. Do not get up and mill around the room. We green?” I ask.
“Green! Doctor Rock.” Came the noisy reply.
“Progress. Marvelous.”, I reflect.
“I’ll be right back. Mr. Sanjay, the room is yours.” I note. I might need to cut back on the coffee.
I slope off to the loo and it’s just as horrible as you can imagine an outdoor communal shithouse in sunny India attended by 30,000 Indian gentlemen could be.
Fuck COVID-19. I’m thinking hot and cold running dysentery, dengue, and death here. Ick.
Glad I have a highly functioning immune system.
I retrieve a shiny aluminum Halliburton™ case from Headquarters and ease off to an unused office space to change.
I went from my usual field garb to full PPEs. It was quite a sight.
I’ll be telling you about it in mere moments. Contain the excitement.
I’m walking back to Outbuilding #2 and damned if my get-up didn’t elicit a few gasps, shielded guffaws, and a salute or two. I have to admit, to the uninitiated, I was a sight right out of Area 52, the more secret one, west by northeast of Roswell, New Mexico.
I get back to the outbuilding and enter. Everyone was looking through their locker boxes, chuckling about their good fortune and wondering with Joker-like glee what the hell all these wonderful gizmos were and where did I get them? They all stopped dead in their tracks when I walked in.
Their silence was palpable.
“Gentlemen”, I said, “Here’s how you are going to look at work tomorrow. Revel in its utility, comfort, and extreme fashion sense.” I did a quick spin like I used to on the runway.
At O’Hare when we were doing field geostatic tests. Whatever were you thinking?
Anyways…
I was wearing a pair of size 66-XTall NFPA 70E blaze orange Carhartt Nomex coveralls. I had on a Dax carbon-fiber blaze orange “Coal Scuttle” hardhat with swing-away hearing protection keyed into your personal communications module, and a gold-anodized, pull-down full face shield. The helmet was designed to drain away falling water down over one’s back and not down one’s neck.
I had a pair of ‘wet’ gloves under the snap retainer on my left shoulder, a pair of ‘dry’ gloves on my right. I was wearing an orange CMC Safety 9-point safety and rescue harness, good to well over 1,500 pounds. Over both shoulders, around the crotch, up the front, and around the back, X-style. This popular harness features multiple D-ring attachment points and the patented JackBack removable padding with breathable D-3 cloth, which keeps shoulder straps separated and makes donning and doffing a breeze. It had several catch-points where one could easily and readily attach to the snap carabiners and get bodily dragged out of a nasty situation by rope or chain. The front waist D-ring allows a comfortable, stable sitting position for rappels and the sternum D-ring works well for helicopter or crane-assist hoists. Gear loops offer easy access to equipment, and quick-connect-disconnect shoulder straps and leg loops make the harness quick to don or doff. It could be used for impromptu spelunking on days off.
I had on Size 16 EEE Gear Box 8088 Men's 8 inch Black Leather intrinsically-safe hard-toed lace-up black turned-heel leather work boots with the new self-cleaning, oil-and chemical resistant Vibram soles.
They couldn’t see, but I was also wearing a cotton-Nomex blend wifebeater and boxers as well. Nomex tends to chafe. Best be safe.
I had a powerful Maglite flashlight clipped to my rescue harness, as well as my mini Air Horn; a blaster’s must. I also had a mobile VHF-Commslink™ radio in a pocket on the back of my coveralls on the left shoulder. I had the microphone for it Velcro-ed to my rescue harness within easy reach. Very cop like. Very cool. Very necessary.
I had a traditional Zippo and Bic Butane lighters in my right-hand chest pocket and a brace of cigars, though these were optional, in my left pocket. I carried a bespoke constructed Swiss Army Knife on a lanyard in my right front pocket and had a custom Bears Paw Leatherman hanging on the left of my rescue harness.
Also clipped to the harness was a Silva orienteering compass. There was a selection of
NASA write anywhere pens, Sharpies, and oil-writing chalk pencils in my other front pockets. I had an oil industry tally book in my other front pocket.
Why blaze orange? Well, Red Adair already co-opted bright red, and fluorescent green wasn’t available in my size.
So, we’re now ready to plant explosives in West India or go deer hunting in the Northwoods of Baja Canada.
“Questions, Gentlemen?” I asked.
I explained that in their locker boxes were purchase orders, POs, for every bit of kit I was wearing. They were to take these POs to the Company Store and get, well, kitted out in their own sizes and preferences. I wanted to see everyone back here tomorrow at 1300 hours looking as I do now. Well, maybe skip the cigar and be not quite so large.
I sat down on the table in front of the crowd and had Sanjay bring over the demo locker box.
“OK, gents,” I said, “This locker box is yours and is numbered as such. They will be stored here in Outbuilding #2. Each of you will receive a key for this building as it is now your headquarters. We’ll get back to locker boxes in a minute. Anyone need a break for a few minutes?” I asked.
No one dared answer at this magical juncture in the narrative.
“Well, I do”, I said, “Meet back here in twenty minutes. Sanjay?”
The class wandered out and I conversed with Sanjay. We found the maps I had ordered.
They were an aerial view of the breaking yard and it was split into 6 zones, all a different color. There was one master for the wall and 28 copies for the guys. I also had a log-in/log-out board made. Vertically numbered 1 to 28. There were also 7 vertical bars labeled Zone 1 through Zone 6, and one for ‘in dispose’; i.e., in Latrin-e Land. This was so I’d know where my guys were at all times.
There was a hook for each one of these areas to log in, and to let anyone know where a certain person was during the day or night. You’re number 10? And you’re going to be wielding a torch over in Zone 5? Your brass tag goes right there. You’re going to skip over to Zone 3? Get your ass back here and swap it over to where you’re going. There is no excuse for being where you haven’t said you were, short of active accident or dismemberment.
Everyone shuffles back in and I explain the tote board.
“Notice there’s no spot to leave your brass chit if you’ve gone off the reservation?” I asked. “Why do you suppose that is?”
Confused looks all around.
“Because you keep that brass token with you when you’re not on the job. Lose it, lose your job. Sounds harsh, but so is getting your fucking hands blown off. Think of it as an exercise in discipline.”
There was a very little rebuttal.
“When you are on location, your brass token
will reflect where you are. You are off-site, put the brass token in your wallet next to your lucky ‘circular impression’.
There were several knowing grins in my cadets.
Wear it around your neck on a chain. Keep it on your keyring. You can wrap it up in ribbons, you can slip it in your sock; I don’t care. Thing is, it is your ticket to this job. Hold on to it, there will be no replacements. We green?”
“Green, Doctor!”
“Outstanding.”
“Now, locker boxes. Gentlemen”, I continued. “These are your personal boxes that will be archived here. They will contain everything that you will need to carry out the job initially and help you with training the next crew that comes through after I leave. Keep them neat and tidy. I like to pull unannounced locker box inspections, gentlemen. Be forewarned.”
The sound of active scribbling is music to my tinny ears.
“Now, as such”, I continue, “Each locker box, at this point, is identical. Please follow along with me as we do inventory: Each gets locker box will contain (as I pull out the item for identification):
• 1- set Purchase Orders (POs) for PPEs
• 1- Galvanometer
• 2- Blaster’s pliers
• 1- Custom Leatherman
• 1- Metal clipboard
• Various Pens, pencils, paper, etc.
• 5- Sharpies
• 1 copy: Blasters Protocols Handbook, 15th Edition
• 1 copy: Blasting and explosives safety training manual by the IEE.
• 1 copy: Theory and practice of blasting, by Hino (A classic)
• 1 copy: Blasters Handbook, 17th Edition
• Various Explosives catalogs
• 1- Custom Swiss Army Knife
• Several Butane lighters
“Are we in agreement, gentlemen?” I ask. “Please check to be certain you have what the manifest states.”
“As long as we’re going over locker boxes, let’s look at our set of PPE purchase orders. Each locker box will contain POs for:
• 1 pair Orange Nomex coveralls, in your size
• 1 Dax carbon-fibre blaze orange hardhat with ear protection, gold face shield
• 1- CMC Safety 9-point extraction harness with carabiners
• 2- pairs Safety Glasses
• 2- pairs of gloves –wet & dry
• 1- pair Gear Box 8088 hard-toed intrinsically safe 8” work boots
• 1- Silva Orienteering Compass
• 3- pairs of cotton WaterWick socks
• 1- CommsLink™ VHF radio with microphone
• 1- Maglight power flashlight
• 1- Rain suit – also Nomex, bibs and outer shell
• 1- Mini Air Horn Power Tootler
• 1- Pair cotton/Nomex blende underwear – anti-chafe, wifebeateboxer: 3 sets.
• 1- 16-ounce container ‘Babies Bottom’ Talcum powder. Nomex chafes.
“Well, that’s a lot of gear; you best become real familiar with it as soon as you can. You are responsible for your PPEs. Lose them and replace them at your own cost. Wear them out? No problem. We will replace them. Get caught on location without your proper PPEs?
Alavida. Goodbye. There is no second try. Fuck up once, and you’re gone. I am here for a limited time to try and teach you characters how to blast boats. I am not here to be your wet-nurse or mother. We green?” I ask.
“YES! Green! Rock!”
“Outstanding!”
We spend about an hour going over the various contents of the locker boxes and I answer general questions about blasting and explosives.
“We will use Primacord by the mile and tons of C-4 primarily. I might introduce you to binary explosives if there’s time. We might also get into PETN and RDX. Dynamite for training. But that’s about it.”
“We will use demolition wire and electrically fired blasting caps and boosters. We might have some time to look at set-pull-forget mechanicochemical fuses. But you’ll all learn some basic electrical wiring and how to design a circuit.”
“Tomorrow, given it doesn’t rain and the creek don’t rise.”
“Time, gentlemen!” I said. It’s been a long day and I’m a bit jet-lagged knackered. Besides, I wanted to give that Jacuzzi a spin.
“OK, remember: get your PPEs tomorrow morning at the Company Store. I expect to see each and every one of you here tomorrow, kitted out and ready to go, at 1300 sharp. That’s it. See you tomorrow.
Susandhya. [Good evening.]” I said.
Locker boxes are locked and stowed in an orderly fashion. Each and everyone one of my 24 acolytes come to me before he leaves work to thank me personally and shake my hand.
“This might just work out”, I say to no one in particular.
Sanjay and I head back to the Raj for the night. I’m really tired, finally feeling the jet travel hit, and not the least bit hungry.
However, I do ring up the 214 cigar dude and relieve him of a selection of fine smokes. I drop by the bar for a couple of barley-pops before I retire to my capacious room for the night.
“Sanjay”, I say, “I’m knackered. If anyone wants me, head them off until tomorrow. It can wait. I’m going to get some kip and don’t want to be disturbed. No maids, no Majordomo, no butler. I just want to get unconscious for a while.”
“No problem, Rock”, Sanjay assures me, “I’ll tell them you’ve gone bush and haven’t left a forwarding address.”
“Good man”, I say, patting him on the shoulder. Hell, I must be getting old. Shit like teaching a band of newbies and whooping a little ass would have never as much as caused me a short breath. Then again, it’s probably not the years, it’s really the mileage…
After a quick light breakfast come morning, Sanjay and I are back on location. I’m being given a tour of the place by the day-shift foreman, one Mr. Vikramaditya Shrivastava.
“Yikes”, I say to Sanjay, “You characters really go for your 11-syllable names.”
“Call him ‘Vik’, Rock”, Sanjay smiles, “Good thing you’ve never asked about my last name.”
“Probably is”, I snicker back. I’m not getting roped into this little tussle.
Vik speaks fairly passable English, but I’m still glad Sanjay is here. The first order of business is to see the explosives bunker I sent plans for and how that’s coming along. They tell me it’s almost finished and ready to be stocked with what I’ve ordered.
“Outstanding, let’s have a look,” I say.
Into the Citation Golf Cart, we go. None of this plebian walking shit. We’re MIPs,
Monstrously Important People.
Plebes walk, we ride.
We drive around the piles of rusty scrap, huge hunks of bulkhead, and disconcertingly quickly through polychromatic puddles of who-knows-what to slide to a stop in front of a large canvas tent.
Think M *A *S *H-type mess tent.
“What’s this?” I ask, “Commissary? First Aid?”
“No, Dr. Rock”, Vik explains, “Here are your explosives.”
My eyes grow large.
“What do you mean?” I ask. What the fuck do you mean? I mean.
“Building of your bunker is taking more time than we expected what with your design imperatives. But your order was filled most expediently. We are storing it here until the bunker is complete.” He smiles in that inimitable Indian manner that is so irritating when they don’t realize the major fuck-up they’ve just committed.
“OK. Simmer down, Rock.” I say to myself. “Sanjay, ask him again what’s in that tent. That bottomless tent that’s just a sheet of tarpaulin held up by metal poles.”
“He says that’s your explosives order, Rock,” Sanjay says. His demeanor went from perky and helpful to terrified as he saw me turn several shades of crimson and begin to emit wisps of steam.
“Sanjay”, I said in calm, calculated terms. “You are telling me there are over 9 tons of high explosives, blasting caps, boosters, demo wire, and ANFO sitting on wet sand in this heat under a sheet of fucking tarpaulin?”
“Yes?” he stammered, with a squeak.
“OK.”, I said. “We need to keep very calm and not go completely apeshit; and I’m telling you, right now, that’s taking Augean-level effort. We have a situation here, Mr. Sanjay. A very, very dangerous and very deadly situation. Let’s above all, remain calm.”
“Right, Rock”, he replies.
I turn to Vik and say in a calm and collected tone, “
YOU STUPID MOTHERFUCKER! WHAT HAVE YOU DONE?”
“Calm and collected, right, Rock?” Sanjay smirks and Mr. Vik withers under my verbal assault.
“Sorry, I had to get that one out.”, I apologized, “Mr. Vik. You have created a real blockbuster here. Quite literally. I figured, erroneously it seems, that you would not take delivery of over
9 TONS of high explosives before you had a very safe and secure place to store such.”
“It arrived sooner than we thought. We got a good price on it,” he explained.
You did? Fucking great! Holy mothering fuck!
Now I was even more worried. One does not get discounts or bargain-basement deals on
quality high explosives.
“Pray, Mr. Vik”, I entreated, “From where did you source these detonic components?”
“From Best Blast and Supply Llc of Hong Kong Enterprises.” He replied, “Bulk discount quantities, quick delivery bonus. Saved
crore rupee.”
No. I was wrong, it could get worse.
Not only 9 tons of high explosives, 9 tons of counterfeit, knock-off, and non-regulated manufacturer explosives.
“OK”, I said, “Let’s take stock here. My bunker isn’t finished yet? Correct? So you and the company meatheads ordered 9 tons of knock-off explosives from some shady and cheesy Chinese dealer and you stored them on wet beach sand, in this heat, under a tarp? Have I got all that right?”
“Oh, yes Doctor Rock.”, he smiled.
“Sanjay”, I said in a low, firm tone, “We have a…situation. We need to cordon this area off and build an exclusion zone as far as we can around it. No one, and I mean no one, gets within what, 10 kilometers? of the tent. This thing goes off, it’s going to leave a much larger than that cone of devastation. Then we need to visit with the management of this place and have a few thousand well-chosen four-letter words. Then I can think about what the fuck we’re going to do about this situation. I’m struggling to remain calm so everyone else will, but this is just a
wee bit tetchy. Find me some red flags and start planting them around the tent, working our way out. Let’s go. Calmly, collectively, and with purpose.”
We find a source of 2-meter poles with red pennants. Sanjay also finds a few miles of yellow “Danger: Stay The Fuck Away” tape. We gather then and head back to the tent. We start to spiral out from it planting flags and running tape.
We did the best we could, but we were disrupting daily business activities. Good. Let the head idiots in charge know they’ve fucked up and grandly.
Back at headquarters, I’m fuming. I’m damn mad. I’m loud and being all extremely American about all this.
“You fucking idiots! 9 tons of cheap-shit high explosives? From China? Stored on wet sand in this heat? Under a
benchod tarp? Why the flying fuck do you think I sent such detailed plans for a storage bunker? Do you assholes even think?” I railed on like this for at least half an hour, going all Gene Wilder in ‘Young Frankenstein’.
“Yes, Doctor”, one Mr. Karam Kanungo, the local boss and company president said, “That is all true and steps will be taken to redress the situation. But that doesn’t address the issue at hand. What do you suggest?”
“I suggest you are all taken out and given hot coffee high colonics to clear out your thinking processes”, I spit, “But that still leaves us with a nine-ton headache out there waiting to bloom into something even more aggravating.”
The entire assembled board agreed.
I calm down a bit and have a think. Fuck your boardroom, I’m having a cigar.
“You need a licensed, certified, master blaster to go and sort that out. Do you happen to have one handy?” I asked, sweeter than clover honey.
“Ah, yes, you are…oh.”, was the collective realization.
“Yeah, I know. It’s me. I’m the only one that can sort this shit out. We can’t even wait until we find someone from the world to assist. We are sitting on a literal time bomb, gentlemen.” I reply.
They all agreed and were relieved I was going to take on the challenge.
What else could I do? That stuff lights off and we’re talking easily hundreds if not thousands of fatalities and countless injuries. Fuck that. Not on my watch.
I tells ya’ what. The fucking Karma Fairy better shower me with gifts and accolades, blowjobs and candy corn after all this.
In a metaphorical sense, of course.
“OK, Mr. Sanjay, you’re with me.” I say, “Now look, Herr Macs”, I address the collective board, “Before I had
carte blanche. Now, if I even think we might need something, it appears. We’ll sort out our honoraria and bonuses for this after we get back.”
Everyone present agreed most hastily. Handshakes all around and apologies from the board cemented the issue.
“OK, Sanjay. I need a bus. At least 24-seater. With a driver than knows how, when, and where to stop. OK?” I ask.
“24, Rock?”, Sanjay asks, “You’re not thinking of including the recruits now, are you?”
“Yes I am, Mr. Sanjay.”, I replied sternly, “On the job training. Meet me at outbuilding #2 at 1300 as per plan. Order a bus and arrange the largest forklift that can manage beach sand, about 100 wooden pallets, plastic wrap, and sandbags. Lots and lots of sandbags. Have them stockpiled away from the tent in a muster area. OK. You got all that?”
“Yes, Rock”, he said, “I’ll be there in a couple of hours. It will only take a few phone calls.”
“Marvelous.”
Not even 1000 in the fucking morning and I’m facing life and death decisions once again. I dig an emergency flask out of my field vest. If this doesn’t qualify as an emergency, what the fuck does?
A tot or two later, I change into my PPEs, and light a cigar. I catch a tap-tap to the region of the tent. I need to reconnoiter the area and figure out what sort of dragon I have to slay and the best way of going about slaughtering the sumbitch.
I’m standing alone, about 250 meters from the tent of death.
I’m puzzling and puzzling; but I can’t allow for my puzzler to go sore. Not this early, anyway.
“OK, me ol’ mucker”, I sigh, “It’s me or thee. Pucker up, Buckwheat. Here I come.”
A blast suit like the ones bomb disposal dudes wear wouldn’t help in the least. All it would do is hold the mashed body parts together to make for easier disposal. I’m anywhere within a kilometer or so of this pile of Chinese counterfeit boom-makers and it decides to let go; I’m lunchmeat. That’s it. Alive one second; kerpow, splat, instantaneously zonked into component particles the next. That’s the long and short of it. No ‘thank you’s. No ‘good bye’s. Just existing here one minute and in an alternate dimension the next.
Doesn't that just take the biscuit? Funny old thing, life.
I trod onwards.
For a moment, nothing happened. Then, after a second or so, nothing continued to happen.
I was walking up to the tent, clearing a path for the forklift. No fucking way I’m schlepping nine tons of dodgy explosives out of here, over wet beach sand, by hand and hoof.
Sand. I’m with young Anakin on this one. I hate sand. I hate walking in dry sand, hiking in wet sand. It makes for a wonderful oil reservoir and I love its porosity and permeability at depth. But at the surface, forget it. Yow! Let me tell you about the time I was out in the Rub al-Khali desert. The great Sand Erg. Wind blowing a force 9 gale! Seif dunes 1,000 meters high…
Yeah. I know. I’m stalling.
I’m approaching the tent. Carefully. I pause to light a new cigar. You might think that daft, but it’s really not. None of the stuff inside is heat-sensitive; let me clarify. None of the stuff is going to go off if hit by errant ash or even a sustained flame. But sitting out in the 30
C+ heat? OK, that makes it twitchier. Cigars do the opposite for me. Give me something to concentrate upon and it calms me down.
I need calm now. By the bucketful. Where’s a monsoon when you really need one?
OK, I made it. I’m at the tent. Got to hand it to the workers around here, they respect authority and don’t come anywhere near the tent. They also don’t apparently give a shit as there no crowd gathered filming me with their iPhones to post to You Tube© if the tent decides to go all detonic.
Good. I couldn’t yell anything at them they’d understand to clear out anyway.
I open the hole in the side of the tent and pause. I’m hit with a wave of hot air. And the heady redolence of onions, sewer gas, and dog farts.
Sorry, that’s just me. Weird midnight snack last night. Frozen durian. What a treat.
Anyways.
I smell kerosene. Old wood pulp, like musty magazines. And an undercurrent of almonds.
“Oh, treble fuck me,” I say to no one within 100 square kilometers.
Kerosene is sweaty C-4. Old wood pulp is dynamite. Almonds? My old friend, nitroglycerine.
Things, if possible, went from real to super-uber major-league holy-fuck real.
“OK”, I say, as I dig out my phone and begin to snap pictures at a frantic rate.
Luckily, all the ordnance was piled like-with-like. Blasting caps? All over here. C-4, all along this ‘wall’. Dynamite? All over here. Non-explosives? Right over here.
I was mentally running like a squadron of overclocked Crays, wondering what I need to do to sort out this little situation. I’m so deep in thought, someone would need to throw me a rope to get my attention.
Or, just tap me on the shoulder.
Once I returned from low earth orbit, I turn to see a little wisp of an Indian feller, who had to be at least 27 years Methuselah’s senior.
“What? THE? Actual? Fuck? Are? You? DOING? Here?” I screamed.
“A thousand pardons, Sahib.”, the ancient one said, “I saw you working alone. Salim wonders if you need some help? Salim is good helper. Salim will help you good.”
“Yes, Salim. Oh, hello by the way.”, I said, calming a bit, forcing myself to smile so I didn’t kill him on the spot, “I do need your help. I need you to go, very slowly, out of this tent and to where the flags begin. Stand there and allow access to no one. OK. We green?”
Salim smiles broadly revealing both teeth. I slowly usher him out and remind myself to order a few new pairs of boxers before the day is out.
Back to the problem at hand. There are some salvageable items here. But the most the C-4, all the dynamite and every sack of ANFO has to go. And by ‘go’, I mean be disposed of. How?
By blowing it up, how else?
An idea creeps into my skull. I puff and puff while it grows and finally, I’ve a plan of attack.
I close the tent and slowly walk away. I hand Salim 1000 rupees and tell him that no one, I don’t care if it was Mahatma Gandhi reincarnate, goes anywhere near that tent.
“You savvy?” I ask.
“Oh, Sahib! I savvy! Thank you! Salaam! I savvy!” he is beside himself with joy, 13 bucks, and a task.
I look at my watch. It’s just gone noon. Good. I need a sandwich, some fluid replacement, as I’ve probably literally sweated off 5 kilos in the last hour and a half, and some time to jot down my plans.
I catch a tap-tap, geez, these things are everywhere around here. They form an unsanctioned, but necessary, sort of intradepartmental transport system here. I tip a couple of hundred rupees for every trip. They see blaze orange and they have this Pavlovian reaction. I sometimes need to break up fist-fights over which driver arrived first.
“Commissary”, I say, sit down, let the tap-tap, which is really nothing more than a glorified golf cart, adjust to my Western bulk and away we zip.
Salim is waving to me as we depart.
I shudder to think if I hadn’t had a tot or two and was a bit jumpier from the morning’s caffeine. Here's to alcohol: the cause of, and solution to, all of life's problems.
At the commissary, I grab a tall iced, fruit cocktail juice; a slurry of mixed dragon fruit, kiwi, carambola, blood orange, green apple, watermelon, bitter melon, sweet melon, & bailan melon fruity essence. I’m incredibly thirsty and I need some calories, but not in bulk and not from onion bhajis, mutton kabobs, or something claiming to be grilled chicken on a stick.
The last thing I need today is a case of the trots or even sharp gas pains in the next few hours. I add about 5 fingers of Old Fornicator Vodka to the juice and sip it slowly as my biometric rhythms return from the ionosphere and back to more normal levels.
Remember, I’m EtOh-based. I need to control my various fluid levels very carefully.
The blasting muse is upon me. In less than 30 minutes, I have a plan. Both a written out procedure and a map of what needs to be done.
I finish off another tall, icy glass of potato and various fruit juices, venture outside feeling almost like I’ve once again regained the illusion of control of the situation and my life.
I fire up a heater and decide to walk the approximately 1100 meters to outbuilding #2. I’m thinking as I sashay along; figuring this and calculating that.
I round the corner and see Outbuilding #2 and a bus parked next to it.
The bus looks like a refugee from Sgt. Pepper’s Lonely Hearts Club Band. The movie and album.
I go into Outbuilding #2 and see about half the class has arrived, and they are all kitted out in their new, stiff, and scratchy PPEs.
I nod hello to all and see Sanjay over across the room.
“Mr. Sanjay”, I say, “Nice bus. What’s the story?”
“Only one I could find that was a 24 seater, not actively falling apart, and with an English speaking driver. Rock. Mr. Maha, owneoperator.” He replied.
“Mr. Maha”, I said, shaking his hand. “Love the bus. Some sort of passion project?”
Mr. Maha laughs. “I was city bus driver for 39 years. I retire and go nuts. I buy old bus and fix up mechanicals. Runs all like excellently. Looks like dung heap. I begin to paint and never quite knew when to stop.”
“I like it. Adds a sense of surrealism to the day, as if it really needs more.” I reply, “However, I do hope you know how to stop. I mean that sincerely. We have a literal bomb to defuse. Does that bother you?”
“No, Doctor”, he says, “Nothing much bothers me anymore. I know. You are here. You are to make safe. I feel safe that you’re here. Let us go to work.”
“Outstanding”. I say.
I tell him that a fat bonus will be his when this is all over if all goes to plan.
“Unnecessary.”, he replies, “Mr. Sanjay has already paid me.”
“Paid? Perhaps”, I reply, “You are going to get danger money whether you like it or not.”
“I guess I will like it, Doctor.” He smiles.
“Marvelous.”
I look at the clock, it’s 1256. Almost showtime.
1300 on the spot. I pick up the microphone and address the assembled 24.
“Gentlemen”, I say, “Very good. You all look like late October in the United States. Very festive.” as all are kitted out in their respective PPEs.
“We have a little matter to handle. One that has just cropped up and one you’re certainly not ready for, but I have no other choice. Does that bother anyone here?” I ask.
Head shakes and questions arise.
“OK, class”, I say, “For your first training exercise, we’re going to defuse a 9-ton bomb. Let’s go.”
The collective gasp drew my cigar smoke in another direction, right towards them.
“Doctor…Ah, Rock. Really?” one brave soul asked for the crowd.
“Yes”, I said, “seems your company officials got a ‘real deal’ on some dodgy Chinese explosives. They didn’t wait until they finished the storage bunker I had designed, so they simply set the stuff on the beach and covered it with a canvas tent.”
There were more gasps.
“Indeed”, I said, “We need to neutralize this threat. Sanjay is passing out copies of my plan and designs on just how to do this. Read them over and let me know what you think. You have 5 minutes. We’re out of here at 1330 on the nose.”
They read quickly, cogitated over the plans and as I had assumed, didn’t find any flaws within.
“OK”, I say after an inch of cigar had passed, “You follow my directions, directly and without question, there’s no reason you can’t come out of this alive and happy, free to pursue a life of religious fulfillment.”
There was a chuckle or two at that last line. ‘Airplane’ is such a classic movie.
“Now I know”, I continued, “That this is pretty scary shit. Especially for you guys, being tossed in the deep end like this. I know because I’m scared to death.”
“Oh, Doctor Rock”, one of my acolytes said, “We do not believe this is so.”
“I stay alive by being scared to death”, I replied. “You will learn this as well.”
Sanjay checks out everyone’s PPE and all appear in good order. They are happy to have such nice, new equipment.
And that’s a problem. People used to ragged and ratty shit with which to work will go to extraordinary lengths to not filthy-up brand new working gear. This is one little bugaboo I’m going to settle here and now.
“One thing, gentlemen”, I note, “You all have nice, clean, and new PPEs. You look great. You come back to Outbuilding #2 looking as pristine, you’re gone. Keeping clean is not a part of your training. You’re going to sweat and stink. You keep to clean and it tells me you’re goldbricking, that is, not doing your job.” I say as I surreptitiously unscrew the top of my travel mug, ‘accidentally’ trip and shower the front row with Greenland coffee, lukewarm.
“See?”, I saw, “They were totally protected. That’s what PPEs are all about. We green?”
“Somewhat brown, Rock”, a couple of the guys in the front row reply without a hint of irony.
“Outstanding.”
“Gentlemen, it is time. Take what you think you’ll need and leave the rest in your locker box. Brass tags to Sector 4. On the bus, we leave in 5 minutes.”
I move my brass marker to Zone 4, puff a blue cloud for all to see, and head out to the bus.
We’re loaded and headed to Sector 4 in less than 5 minutes.
“OK”, I say”, I’m going to break you up into groups of 4. Tags number 1 to 4, you’re group 1. 5-8, group 2, and so on. OK?”
All respond in the affirmative.
OK. Six groups of four, Sanjay and me to lead the pack. We roll up to just outside the exclusion zone. With a squeal of brakes, we grind to a halt.
“Outside”, I command, “Assemble in your groups next to the bus. Go!”.
Like a well-oiled team, they de-bus and stand together in 6 groups. Sanjay and I walk along, inspecting the troops.
“OK”, I say, “This may seem like a shit job, but group 4. Back on the bus. To the commissary. Water, juice, and whatever else you think we’ll need to stay hydrated out there. Don’t worry, we’re going on rotation once you get back. You’ll all get a chance to do the exciting stuff. Now, move it.”
I say something to Sanjay, he jots it down in his book, certain to remind me later.
“OK, let’s see. Group 1. Storage detail. Build the temporary in-ground storage locker like it’s shown in the plan. Get help and have them source the manpower and materials. It needs to be done in the next 2 hours. Go!”
There are some explosives that can be salvaged. I need a place to store them. I’ve scouted and laid out a spot away from prying eyes where they can build an 8x8x8 hole in the ground, line it with marine plywood, and store whatever we can salvage. A plywood roof over the thing, a couple of locks, and well, Robert’s your Mother’s Sister’s Husband.
Next, I send group 3 to build a road from the tent to an area on the beach sourced as Disposal Area #1. They will take flags and tape and run a road, of sorts, from the tent to the beach; cordoning it off so we can take the forklift and its loads of dodgy high explosives to the disposal area.
The other groups are doing needful and necessary things as well. I tell Sanjay to keep a lid on things, I’m going to bring the forklift, a few pallets, sandbags and such in for the first run.
I find the forklift, and it’s a huge old Hyster 52-ton truck.
It’ll do.
The keys are in, so I drop in and fire it up. It catches on the first twirl and I pick up a half-dozen wooden pallets, a bunch of sandbags, and a few huge rolls of plastic wrapping. It’s like driving a tank, but it has plenty of power and just a low gear range.
I drive it back to Sector 4 and almost rum over Salim. He was taking my previous orders very seriously, indeed.
“All cool, Salim”, I say over the roar of the forklift, “It’s just me.”
He waves and lets me pass. He’s serious as a heart attack about keeping people out.
I drive and realize that I can’t drive ‘gingerly’ in a conveyance such as this. I can drive deliberately and with forethought, but it rumbles and shudders the ground. Best to slide in, drop the load, and shut her down while I figure out what’s next.
I do so and drop the pallets, etc., just outside the flap of the tent. I back off a few feet, drop the forks, and shut the noisy machine down for the time being.
Sanjay appears. As does Crew #5. I motion them to come over, slowly and with forethought.
We’re all standing outside the tent flap. I raise an index finger, right, of course, to get their attention.
“Gentlemen, first lesson. What says these explosives have gone bad? Answer:” and I open the tent flap.
“Take a whiff. What do you smell?” I instruct.
“Old paper?” was one answer.
“Oil? Petrol? Something petrochemical?” was the next.
“Almonds?” Sanjay says.
“Highest marks. We’ve old C-4. It sweats and smells like kerosene. Old paper or pulp? Dynamite gone wet and bad. Almonds? Bitter, bitter almonds? Nitroglycerine. Yes, guys. We’ve got rogue nitro inside. Anyone want to quit? Now’s your chance.” I ask, being deadly serious.
One looks to another; then they all look to me…eyes wide…
To be continued… submitted by Binary options helper thesaurus amazing For more help with basic punctuation. Helpers at thesaurus with free online thesaurus, antonyms.spedizione veloce e reso gratuiti.building a trading strategy for.synonyms for helper at thesaurus with free online thesaurus, antonymsis. This MT4 indicator released by pointzero-trading with cost 99 US$. The PZ Binary Options indicator analyzes price action patterns and helps you to make positive equity decisions in the binary options market. Amazingly easy to trade Trade both call and put options No crystal ball and no predictions The indicator is non-repainting The only strategy… Looking for a reliable and well-recognized Binary Options broker? You have landed on the right page. Trade with as little as $1 on the most widely-traded currency pairs. More than trading, you can benefit from our risk-free plans. The support team is available round the clock. We are here to limit your trading risk! Read More Mobile trading is increasingly popular and binary options apps are quickly becoming the preferred access point for active investors. Brokers have taken notice and regardless of which mobile OS you prefer – Android or iPhone – brokers are developing top quality mobile trading applications that rival others in the financial space. Download Binary Options Robot Echo_Digits V2.01: Trading robots and strategies for binary.com: Wednesday at 2:51 PM: Recruitment of participants Last Digits Even/Odd Binary: Binary Options Robot: May 13, 2020: Download DigitsStats Binary.com bot: Trading robots and strategies for binary.com: Jun 4, 2019: Download Binary XML bot for odd digits only
https://binaryoptionsbeat.com/ #Binaryoptions #Nadex #Nadextutorial You can always contact me via [email protected] In this video I tried to explain ... Watch Premium Binary Options Accurate and Non Repaint Indicator PT PRO indicator. The best options tutorial that can help you use Latest PT PRO Indicator and... Simple trading strategy on how to trade Nadex 5 minute binaries following an accurate signal indicator for binary options. Get FX Master Code signals: https:... This video explains you best strategy that can help you make best profits. I wish you goodluck. We as a team, put a lot of effort in bringing you the summari... In this video you are taking a look at Binary Options EA guide which may help you to understand profitable potential trades. I bet you will be surprised to s...