<?php

namespace Webfan\Transform;

use League\Pipeline\StageInterface;

class RemoteApiObjectsTransformAll extends Sequence implements StageInterface, TransformInterface
{
	const RAT0 = 0x52415430;

	protected $SecurityManagerCallbacks = null;
	protected $SecurityManagerTransforms = null;


	public function __construct()
	{
		parent::__construct(
			new UrlsafeBinaryTransform(),
			new OpisTranform(),
			new TransformCallbacks()
		);
	}


	public function __invoke($payload)
	{
		$this->direction = $this->detect($payload);
		   switch($this->direction){
		   case -1:
			     $payload = $this->down($payload);
			   break;
		   case 1:
			     $payload = $this->up($payload);
			   break;
			  default :

			   break;
		   }
		return $payload;
	}


	public function up($payload)
	{
		foreach($this->getInnerIterator() as $stage) {
		  if($stage->detect($payload) === $this->direction &&  $this->direction > 0){
			  $payload = $stage->up($payload);
		  }
		}

		return static::RAT0.$payload;
	}


	public function down($payload)
	{
		$payload = is_string($payload) && str_starts_with($payload, static::RAT0) ? substr($payload, strlen(static::RAT0)) : $payload;

		foreach($this->reverseIterator($this->getInnerIterator()) as $stage) {
		  if($stage->detect($payload) === $this->direction &&  $this->direction < 0){
			  $payload = $stage->down($payload);
		 }
		}

		return $payload;
	}


	public function detect($payload): int
	{
		return is_string($payload) && str_starts_with($payload, static::RAT0) ? -1 : 1;
	}
}
__halt_compiler();----SIGNATURE:----kLJxxhYAZl7R198zouss+KyUG0OtXsIHjsmCYNCiWbkMTXpggXQao2O2EMos4mbdS9KZ0YNcsT9ZvBrrb6nZ9VtxeJbd5NoAoJK49ab+nYAOwnNgr/8HRd7R97cnKHZTQfijpuW8oT0sRO5T8hnTZxgOT1wlT4K583s8GNQWRPeqlccKXjRwbVNMbnaGQdX2RwSJzsamOaQkrJirOpnITKNi6guhotKxmbtULGtwPbgIdfTkK22MncFpsikAivzOqtvLfj1cJYP+XTMAvQnU855mn79MlIzkxhhgXW2Tm1QsbMA55CvN8AMfuhyPnyNvtMYM5bpd8vbj5xZzSOtdz4v8QbmQgczDmGdjV06JtVxjCftDb5ngePY7lI6lqMSGBVYn5ZhJldX4zuEUVscJfxO9H2bZJeg8sKUoAC/5sFs0BODo+VuJZIGINVS7u46ggOlsb5N38rorp4dWFsLDCfpTGWnnHVz6SGeJs7iNtVCEDaYm5wWuf3P1o1T6ccmQLhgv3JOblDlotCzg5U1VRuEOAfauTq3SGyYkyEI045J6UG22xCDq2czBvcaafbS5BbRkDuRqbWeUH1MFLG2MiJebYxx7zgEr4z7vjaVkNqQjA3+imbM3f1oINUqoSjGMV+YGvgeRT+gk+KEd9AkZbOzuRPlkx7oYcaU+6pVIX6o=----ATTACHMENT:----MzU5ODc5MjM0ODY0MzI5MCA4OTA3OTIxOTA4MDY0NDk0IDQwMDUwMzI2NjM3MjExNzE=