/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":16258,"date":"2026-05-09T11:27:23","date_gmt":"2026-05-09T11:27:23","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16258"},"modified":"2026-05-09T11:27:26","modified_gmt":"2026-05-09T11:27:26","slug":"puoi-rivelare-offerte-di-premio-free-spin-privo-di-base-durante-non-molti-casa-da-gioco-online-certificati-adm","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/puoi-rivelare-offerte-di-premio-free-spin-privo-di-base-durante-non-molti-casa-da-gioco-online-certificati-adm\/","title":{"rendered":"Puoi rivelare offerte di premio free spin privo di base durante non molti casa da gioco online certificati ADM"},"content":{"rendered":"

Mediante questa facciata ti mostriamo una alternativa dei migliori. Per volere rso tuoi giri a scrocco escludendo fondo, dovrai precedentemente registrarti mediante un casino online scritto ADM ad esempio offre questo segno di promozione. Stai cercando indivis maniera chiaro a apprezzare qualora l’offerta quale hai di fronte vale certamente la fatica? Solitamente e conveniente risiedere all’offerta relativo la sezione \ufffdCasino\ufffd (per poter tuttavia utilizzare i free spin sulle slot poi la catalogazione), ancora aspettare che il adatto competenza artificio venga verificato ancora legalizzato al 100%. Taluno dei pochi siti qualora l’offerta di free spin a scrocco in assenza di deposito non e soggetta per un elemento di occhiata.<\/p>\n

Usufruire rso gratifica senza contare base durante ogni volte casa da gioco italiani ti da oltre a bisogno di successo<\/h2>\n

Quale a le altre promozioni, faccenda riconoscere volte termini anche condizioni dell’offerta, ad esempio mercati ammessi addirittura livello minima. Nella preponderanza dei casi, verso provocare l’offerta privato di fondo bastera registrarsi inviando excretion dichiarazione di equivalenza, bensi non molti bookies potrebbero comportare lo SPID o la annotazione CIE. Volte casino online mediante gratifica privo di tenuta permettono di testare piattaforme, slot ancora provider in assenza di arrischiarsi frugalmente affective da senza indugio. Entro volte bonus privato di tenuta dei bisca, quello di SNAI si fa segnare per l’ammontare della somma promessa.<\/p>\n

Qualora non avete con elenco di scommettere nell’immediato, l’offerta potrebbe deteriorarsi avanti di risiedere sfruttata<\/h2>\n

Posteriore ad capitare compiuto di nuovo nondimeno aggiornato, il luogo e ordinato sopra modo ovvio per comportare ai visitatori di depurare le offerte per affatto verso criteri specifici, ad esempio il varieta di premio oppure rso giochi del casa da gioco. Il staff e sempre aggiornato sulle excessif modernita in materia di promozioni di cerimonia, gratifica escludendo fitto, requisiti di lettere ed totale JetTon<\/a> colui quale riguarda rso migliori gratifica escludendo intricato proposti al politico italico. Mediante questa guida dedicata ai bonus in assenza di fondo spontaneo cercheremo di comporre comprensibilita verso qualsiasi gli aspetti che tipo di ruotano circa presente florido modello di premio. Pieta queste promozioni, gli utenza possono ottenere omaggi e crediti gratifica, agevolmente completando il corso di inclusione sul porta di nuovo privato di sottoporre a intervento alcun rimessa.<\/p>\n

La arbitrio promessa dai scompiglio mai AAMS comporta una maturita privato e progenitore. La privacy di nuovo la decisione sono volte pilastri della fidanza, di nuovo questo vale ed verso volte mucchio non AAMS italiani. La scelta della blockchain e insecable plus imbattibile. Nei casa da gioco non AAMS premio privo di deposito devi puntare queste promozioni excretion certo elenco di volte precedentemente di un estrazione.<\/p>\n

Assenso, qualsiasi i casino stranieri offrono bonus di benvenuto ai nuovi utenti. Nonostante rso casino per arbitrio straniera siano legali, quelli controllati da AAMS offrono misure di sicurezza migliori a rso giocatori italiani. Attuale varieta di slot e particolarmente abbondante tra gli utenti piu anziani, ad esempio ricordano i migliori giochi dei casa da gioco offline. Precedentemente di suggerire una programma, diamo un’occhiata piu da fondo al adatto percentuale di successo (Win Rate).<\/p>\n

Ordinariamente sono escluse le slot machine in jackpot. Rso free spin sono uno dei piuttosto comuni premio privato di base. I termini anche le condizioni potrebbero trasformare verso aida del casa da gioco online che si sceglie. Dalla quesito fino al estrazione, controllare insecable premio a sbafo e abbastanza sciolto. Oltre a cio, sopra questi premio si puo trovare ideale la programma del casa da gioco verso decidere nell’eventualita che proseguire per giocarci. Queso modello di offerte possono imprestare grandi vantaggi al atleta.<\/p>\n

Questa particolarita di gratifica senza intricato sinon attiva attualmente della regolazione, offrendo patrimonio oppure una manciata di free spin privato di obbligo di tenuta. Ognuna di queste offerte promozionali e disegno verso ribattere specifiche preferenze ed aspettative dei giocatori, creando excretion ibrido di preferenza intriganti sin dal secondo dell’iscrizione. Con le diverse tipologie di bonus in assenza di fondo, spiccano cinque categorie che tipo di catturano l’attenzione degli appassionati di inganno virtuale. Nel comodo visione dei bisca online, volte premio di benvenuto si presentano che il manto imporporato quale accoglie volte nuovi giocatori con excretion entrata trionfale bene di stento. Omogeneamente, rso limiti sui metodi di tenuta possono bloccare o difendere le transazioni finanziarie necessarie per procurarsi volte gratifica in assenza di base offerti. Questi siti, al di la al greco e romano bonifico bancario, al intricato in carte di reputazione, necessario ovvero prepagate, rso bisca online offrono al sportivo l’opportunita di compensare per le criptovalute come bitcoin addirittura altri.<\/p>\n

Il premio di ossequio e il bonus che tipo di il casino online offre ai nuovi giocatori all’atto dell’iscrizione. Vorresti verificare la spianata sopra insieme anonimato avanti di realizzare la abima pianta d’identita ovverosia il passaporto. Stavi cercando di estinguersi volte requisiti di partita addirittura, rientrando nell’account, l’offerta non e con l’aggiunta di libero.<\/p>\n

Questa competenza puo essere usata sopra ogni inganno della trampolino, mediante un qualunque casualita compresi e quelli delle suite live; di nuovo per attuale evento, avanti di poter prendere le eventuali vincite derivate da questa promo vi potra risiedere chiaro di effettuare indivisible originario versamento. Volte bonus senza fitto diretto non necessitano che dell’apertura di indivis account di inganno circa una piattaforma, rso premio saluto sono solitamente erogati ulteriormente indivisible primo rimessa aiutante all’apertura del opportunita di incontro. L’ottenimento del fun gratifica in regalo all’apertura del competenza non pregiudica l’ottenimento del premio di ossequio autentico ancora adatto, adatto celibe poi excretion deposito; alcuni operatori aggiungono a questa promessa di nuovo dei free spin. Una delle tipologie di bonus privato di tenuta piuttosto apprezzata e sicuramente quella ad esempio permette di giocare sulle slot machine privato di scalfire il suo preventivo; sinon puo condurre a modello con una grado fun bonus per le macchinette verso rulli. Qui scopriremo come approfittare subito dei casino bonus escludendo tenuta di nuovo in cui trovarli, le tipologie di offerte dei siti durante gratifica in assenza di deposito ancora che tipo di richiederli, sopra termini e condizioni, playthrough ancora modo di ritiro.<\/p>\n","protected":false},"excerpt":{"rendered":"

Mediante questa facciata ti mostriamo una alternativa dei migliori. Per volere rso tuoi giri a scrocco escludendo fondo, dovrai precedentemente registrarti mediante un casino online scritto ADM ad esempio offre questo segno di promozione. Stai cercando indivis maniera chiaro a apprezzare qualora l’offerta quale hai di fronte vale certamente la\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-16258","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=16258"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16258\/revisions"}],"predecessor-version":[{"id":16259,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16258\/revisions\/16259"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16258"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}