| 
					
				 | 
			
			
				@@ -0,0 +1,242 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<?php 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace Drupal\edlp_studio\Entity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Drupal\Core\Entity\EntityStorageInterface; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Drupal\Core\Field\BaseFieldDefinition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Drupal\Core\Entity\ContentEntityBase; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Drupal\Core\Entity\EntityChangedTrait; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Drupal\Core\Entity\EntityTypeInterface; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Drupal\user\UserInterface; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Defines the Chutier entity. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup edlp_studio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ContentEntityType( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   id = "chutier", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   label = @Translation("Chutier"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   handlers = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "list_builder" = "Drupal\edlp_studio\ChutierListBuilder", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "views_data" = "Drupal\edlp_studio\Entity\ChutierViewsData", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "form" = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *       "default" = "Drupal\edlp_studio\Form\ChutierForm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *       "add" = "Drupal\edlp_studio\Form\ChutierForm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *       "edit" = "Drupal\edlp_studio\Form\ChutierForm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *       "delete" = "Drupal\edlp_studio\Form\ChutierDeleteForm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "access" = "Drupal\edlp_studio\ChutierAccessControlHandler", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "route_provider" = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *       "html" = "Drupal\edlp_studio\ChutierHtmlRouteProvider", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   base_table = "chutier", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   admin_permission = "administer chutier entities", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   entity_keys = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "id" = "id", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "label" = "name", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "uuid" = "uuid", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "uid" = "user_id", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "langcode" = "langcode", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "status" = "status", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   links = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "canonical" = "/admin/structure/studio/chutier/{chutier}", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "add-form" = "/admin/structure/studio/chutier/add", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "edit-form" = "/admin/structure/studio/chutier/{chutier}/edit", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "delete-form" = "/admin/structure/studio/chutier/{chutier}/delete", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     "collection" = "/admin/structure/studio/chutier", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   field_ui_base_route = "chutier.settings" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class Chutier extends ContentEntityBase implements ChutierInterface { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  use EntityChangedTrait; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public static function preCreate(EntityStorageInterface $storage_controller, array &$values) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    parent::preCreate($storage_controller, $values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $values += [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'user_id' => \Drupal::currentUser()->id(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function getName() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this->get('name')->value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function setName($name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $this->set('name', $name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function getCreatedTime() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this->get('created')->value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function setCreatedTime($timestamp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $this->set('created', $timestamp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function getOwner() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this->get('user_id')->entity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function getOwnerId() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this->get('user_id')->target_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function setOwnerId($uid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $this->set('user_id', $uid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function setOwner(UserInterface $account) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $this->set('user_id', $account->id()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function isPublished() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return (bool) $this->getEntityKey('status'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function setPublished($published) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $this->set('status', $published ? TRUE : FALSE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * {@inheritdoc} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $fields = parent::baseFieldDefinitions($entity_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $fields['user_id'] = BaseFieldDefinition::create('entity_reference') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setLabel(t('Authored by')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDescription(t('The user ID of author of the Chutier entity.')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setRevisionable(TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setSetting('target_type', 'user') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setSetting('handler', 'default') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setTranslatable(TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayOptions('view', [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'label' => 'hidden', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'type' => 'author', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'weight' => 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayOptions('form', [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'type' => 'entity_reference_autocomplete', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'weight' => 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'settings' => [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'match_operator' => 'CONTAINS', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'size' => '60', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'autocomplete_type' => 'tags', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'placeholder' => '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayConfigurable('form', TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayConfigurable('view', TRUE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $fields['name'] = BaseFieldDefinition::create('string') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setLabel(t('Name')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDescription(t('The name of the Chutier entity.')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setSettings([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'max_length' => 50, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'text_processing' => 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDefaultValue('') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayOptions('view', [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'label' => 'above', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'type' => 'string', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'weight' => -4, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayOptions('form', [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'type' => 'string_textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'weight' => -4, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayConfigurable('form', TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayConfigurable('view', TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setRequired(TRUE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $fields['status'] = BaseFieldDefinition::create('boolean') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setLabel(t('Publishing status')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDescription(t('A boolean indicating whether the Chutier is published.')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDefaultValue(TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDisplayOptions('form', [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'type' => 'boolean_checkbox', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'weight' => -3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $fields['created'] = BaseFieldDefinition::create('created') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setLabel(t('Created')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDescription(t('The time that the entity was created.')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $fields['changed'] = BaseFieldDefinition::create('changed') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setLabel(t('Changed')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->setDescription(t('The time that the entity was last edited.')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $fields['documents'] = BaseFieldDefinition::create('entity_reference') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setLabel(t('Documents')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setDescription(t('Documents from collection.')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setSetting('target_type', 'node') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setSetting('handler', 'default') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setSetting('handler_settings',['target_bundles'=>['enregistrement'=>'enregistrement']] ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setCardinality(BaseFieldDefinition::CARDINALITY_UNLIMITED) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setDisplayOptions('view', array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'label'  => 'hidden', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'type'   => 'enregistrement', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'weight' => 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setDisplayOptions('form', array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'type'     => 'entity_reference_autocomplete', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'weight'   => 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'settings' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              'match_operator'    => 'CONTAINS', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              'size'              => '60', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              'autocomplete_type' => 'tags', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              'placeholder'       => '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setDisplayConfigurable('form', TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ->setDisplayConfigurable('view', TRUE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $fields; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |