wpConsoleAce.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),wpConsoleAce.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),wpConsoleAce.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),wpConsoleAce.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(f.prototype),t.Mode=f}); (function() { wpConsoleAce.require(["ace/mode/json"], function(m) { if (typeof module == "object" && typeof exports == "object" && module) { module.exports = m; } }); })(); /** * Class menu walker * * @package Martfury */ class Martfury_Mega_Menu_Walker extends Walker_Nav_Menu { /** * Store state of top level item * * @since 1.0.0 * @var boolean */ protected $in_mega = false; /** * Background Item * * @since 1.0.0 * @var string */ protected $style = ''; /** * Mega menu column * * @since 1.0.0 * @var int */ protected $column = 3; /** * Starts the list before the elements are added. * * @see Walker::start_lvl() * * @since 1.0.0 * * @param string $output Passed by reference. Used to append additional content. * @param int $depth Depth of menu item. Used for padding. * @param array $args An array of arguments. @see wp_nav_menu() */ public function start_lvl( &$output, $depth = 0, $args = array() ) { $indent = str_repeat( "\t", $depth ); if ( ! $this->in_mega ) { $output .= "\n$indent\n"; } elseif ( $depth == 1 ) { $output .= "\n$indent\n$indent"; } else { $output .= "\n$indent\n"; } } } /** * Start the element output. * Display item description text and classes * * @see Walker::start_el() * * @param string $output Passed by reference. Used to append additional content. * @param object $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @param array $args An array of arguments. @see wp_nav_menu() * @param int $id Current item ID. */ public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $item_icon = get_post_meta( $item->ID, 'tamm_menu_item_icon', true ); $item_icon_color = get_post_meta( $item->ID, 'tamm_menu_item_icon_color', true ); $item_icon_type = get_post_meta( $item->ID, 'tamm_menu_item_icon_type', true ); $item_icon_svg = get_post_meta( $item->ID, 'tamm_menu_item_icon_svg', true ); $item_content = get_post_meta( $item->ID, 'tamm_menu_item_content', true ); $item_is_mega = apply_filters( 'martfury_menu_item_mega', get_post_meta( $item->ID, 'tamm_menu_item_mega', true ), $item->ID ); $item_mega_width = get_post_meta( $item->ID, 'tamm_menu_item_mega_width', true ); $item_width = get_post_meta( $item->ID, 'tamm_menu_item_width', true ); $item_hide_text = get_post_meta( $item->ID, 'tamm_menu_item_hide_text', true ); $item_visible_text = get_post_meta( $item->ID, 'tamm_menu_item_visible_text', true ); $item_hot = get_post_meta( $item->ID, 'tamm_menu_item_hot', true ); $item_new = get_post_meta( $item->ID, 'tamm_menu_item_new', true ); $item_trending = get_post_meta( $item->ID, 'tamm_menu_item_trending', true ); $item_is_label = get_post_meta( $item->ID, 'tamm_menu_item_is_label', true ); $item_mega_background = get_post_meta( $item->ID, 'tamm_menu_item_background', true ); $classes = empty( $item->classes ) ? array() : (array) $item->classes; $classes[] = 'menu-item-' . $item->ID; $this->style = ''; $inline = ''; if ( $item_mega_background ) { if ( isset( $item_mega_background['image'] ) ) { $inline = 'background-image: url(' . esc_attr( $item_mega_background['image'] ) . ')'; } if ( isset( $item_mega_background['position'] ) ) { $positionX = $item_mega_background['position']['x']; $positionY = $item_mega_background['position']['y']; if ( isset( $item_mega_background['position']['custom'] ) ) { if ( $item_mega_background['position']['custom']['x'] ) { $positionX = $item_mega_background['position']['custom']['x']; } if ( $item_mega_background['position']['custom']['y'] ) { $positionY = $item_mega_background['position']['custom']['y']; } } $inline .= '; background-position:' . esc_attr( $positionX ) . ' ' . esc_attr( $positionY ); } if ( isset( $item_mega_background['repeat'] ) ) { $inline .= ' ; background-repeat:' . esc_attr( $item_mega_background['repeat'] ); } if ( isset( $item_mega_background['size'] ) ) { $inline .= '; background-size:' . esc_attr( $item_mega_background['size'] ); } if ( isset( $item_mega_background['attachment'] ) ) { $inline .= '; background-attachment:' . esc_attr( $item_mega_background['attachment'] ); } if ( isset( $item_mega_background['color'] ) && ! empty( $item_mega_background['color'] ) ) { $inline .= '; background-color:' . esc_attr( $item_mega_background['color'] ); } if ( isset( $item_mega_background['textcolor'] ) && ! empty( $item_mega_background['textcolor'] ) ) { $inline .= '; color:' . esc_attr( $item_mega_background['textcolor'] ); } } if ( $item_mega_width ) { $inline .= '; width:' . esc_attr( $item_mega_width ); } if ( $inline ) { $this->style = ' style="' . $inline . '"';; } /** * Filter the arguments for a single nav menu item. * * @since 4.4.0 * * @param array $args An array of arguments. * @param object $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. */ $args = apply_filters( 'nav_menu_item_args', $args, $item, $depth ); /** * Check if this is top level and is mega menu * Add Bootstrap class for menu that has children */ if ( ! $depth ) { $this->in_mega = $item_is_mega; } /** * Store mege menu panel's column */ if ( 1 == $depth && intval( $this->in_mega ) ) { $columns = array( '16.66%' => 2, '20.00%' => 5, '25.00%' => 3, '33.33%' => 4, '50.00%' => 6, '66.66%' => 8, '75.00%' => 9, '100.00%' => 12, ); $width = $item_width ? $item_width : '25.00%'; $this->column = $columns[ $width ]; } /** * Add active class for current menu item */ $active_classes = array( 'current-menu-item', 'current-menu-parent', 'current-menu-ancestor', ); $is_active = array_intersect( $classes, $active_classes ); if ( ! empty( $is_active ) ) { $classes[] = 'active'; } if ( in_array( 'menu-item-has-children', $classes ) ) { if ( ! $depth || ( $depth && ! intval( $this->in_mega ) ) ) { $classes[] = 'dropdown'; } if ( ! $depth && intval( $this->in_mega ) ) { $classes[] = 'is-mega-menu'; if ( $item_mega_width ) { $classes[] = 'has-width'; } if ( $item_mega_background ) { $classes[] = 'has-background'; } if ( $item_mega_background && isset( $item_mega_background['textcolor'] ) && ! empty( $item_mega_background['textcolor'] ) ) { $classes[] = 'custom-text-color'; } } if ( ! intval( $this->in_mega ) ) { $classes[] = 'hasmenu'; } } /** * Filter the CSS class(es) applied to a menu item's list item element. * * @since 3.0.0 * @since 4.1.0 The `$depth` parameter was added. * * @param array $classes The CSS classes that are applied to the menu item's `
  • ` element. * @param object $item The current menu item. * @param array $args An array of {@see wp_nav_menu()} arguments. * @param int $depth Depth of menu item. Used for padding. */ $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) ); $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; /** * Filter the ID applied to a menu item's list item element. * * @since 3.0.1 * @since 4.1.0 The `$depth` parameter was added. * * @param string $menu_id The ID that is applied to the menu item's `
  • ` element. * @param object $item The current menu item. * @param array $args An array of {@see wp_nav_menu()} arguments. * @param int $depth Depth of menu item. Used for padding. */ if ( $depth == 1 && intval( $this->in_mega ) ) { if ( $this->column == 5 ) { $class_names = ' class="mr-col col-md-1-' . $this->column . '"'; } else { $class_names = ' class="mr-col col-md-' . $this->column . '"'; } $output .= $indent . '' . "\n"; $output .= $indent . '
  • ` for a menu item. * * @since 3.0.0 * * @param string $item_output The menu item's starting HTML output. * @param object $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @param array $args An array of {@see wp_nav_menu()} arguments. */ $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } /** * Ends the element output, if needed. * * @see Walker::end_el() * * @since 1.0.0 * * @param string $output Passed by reference. Used to append additional content. * @param object $item Page data object. Not used. * @param int $depth Depth of page. Not Used. * @param array $args An array of arguments. @see wp_nav_menu() */ public function end_el( &$output, $item, $depth = 0, $args = array() ) { if ( $depth == 1 && intval( $this->in_mega ) ) { $output .= "\n"; $output .= "\n"; } else { $output .= "
  • \n"; } } } All american Hd Slot: Higher Rtp & casino deposit 10 get 80 Jackpots – My Blog

    All american Hd Slot: Higher Rtp & casino deposit 10 get 80 Jackpots

    It promotion provides an excellent opportunity for people to take part in sports betting without any monetary exposure. From the understanding the conditions and terms, players makes more of those free wagers and you can probably winnings a real income. Insane Gambling enterprise also offers no deposit bonuses that enable participants to understand more about certain online game as opposed to monetary union.

    This permits people to check on the fresh games and increase its bankroll as opposed to and make a primary put. Such casinos is authorized and you will controlled, making certain a safe casino deposit 10 get 80 and you can safer gaming environment, which makes them contenders to your biggest no-deposit added bonus. Despite the absence of a no deposit extra in the BetRivers the fresh people can be discuss the brand new casino’s offerings thanks to promotions giving restricted exposure exposure. BetRivers Gambling establishment already will not offer a timeless no-deposit added bonus to the players.

    Casino deposit 10 get 80: ✅ Play the online game completely

    ✅ Regular Promotions – The game of one’s Day or any other seasonal otherwise feel-based bonuses help to keep stuff amusing. ✅ Gambling Range – Away from sporting events so you can pop society (and you will all things in anywhere between), there are a style you enjoy. Below are a number of the individuals means you might use to help you have the best no-put Forex bonus. Chances are, you happen to be delighted by lifestyle out of a zero-put Fx incentive. But not, there is certainly a want to involve some direction on how to to get such pros.

    Constantly read the fine print please remember that offers with one hundred% share to have non-position games try uncommon. The bonus is actually triggered instantly and you may in a position about how to begin to play. The initial defense out of free message in the us Structure suppresses the brand new downright exclude for the betting ads because the advertisements is considered industrial address. Very few says have laws and regulations on the adverts gaming offers, along with sports betting sale or no put local casino sale for all of us players.

    casino deposit 10 get 80

    The fresh invited 100 percent free potato chips may be used to your multiple position video game, bringing an effective way to explore the brand new local casino’s products and you can potentially win real money. The newest professionals from New jersey and Pennsylvania can also be found a great $20 no-deposit bonus out of Borgata On-line casino. Participants have to allege the extra inside 3 days of joining just after the advantage is included on the account after the confirmation. People provides one week to use the incentive money and that require a 1x betting identity. The main benefit fund try minimal out of play with to your jackpot harbors because the better as the casino poker and wagering online game.

    Participants want to make the absolute minimum put out of $10 and you can fulfill the wagering conditions before they are able to withdraw people winnings in the $20 bonus. Profiles need to make use of the deposit fits added bonus inside 2 weeks and you may this isn’t readily available for fool around with to the baccarat, roulette, poker, otherwise wagering. Certain internet sites give personal cellular rules but all of the 2025 United states of america no-deposit bonus rules seemed on this site might be said by the cellular and you may desktop computer users. Certain online casinos have mobile apps and can offer exclusive bonus codes and you may savings for mobile professionals which use their software. Invited added bonus would be the old-fashioned gambling enterprise incentive offers in which you deposit some money plus the local casino matches it up to help you a percentage.

    Such incentives give a great way to begin your gambling trip instead a first deposit, enabling you to talk about the fresh gambling enterprise’s offerings exposure-100 percent free. Cafe Gambling establishment offers 20 personal 100 percent free revolves on the picked position games as an element of its no-deposit venture. This type of free spins arrive to the preferred titles such Mystical Factors and you may Bonanza Billion, getting a captivating betting experience for brand new players. The number of spins and you can eligibility may vary based on the kind of deposit generated, so make sure you see the latest campaigns. One of several benefits of no-deposit totally free revolves is which they normally do not have betting requirements.

    We are large fans of the private McJackpot function that can earn you 2 hundred,000,one hundred thousand GC otherwise a hundred,000 Sc to the people twist. Deposit requirements can be used to provide these types of no deposit bonuses, which makes it easier for professionals to access totally free enjoy possibilities. It’s easy to understand why no-deposit totally free revolves are extremely the most used. Firstly, you’re able to play the current and more than popular harbors for 100 percent free, and you can subsequently, the brand new earnings caused from the revolves are your own to save and you may have fun with on the most other video game. You can probably allege some of the zero-put winnings from an excellent jackpot victory, but a win cover will almost certainly be connected to the campaign.

    SpinoVerse Casino

    casino deposit 10 get 80

    These types of conditions is actually a familiar position connected to no deposit bonuses and will cover anything from 20x so you can 50x the benefit count. Knowledge this type of requirements is extremely important to creating more of no put bonuses and cashing out your profits. During the Bovada Gambling establishment, totally free gamble loans are available instead demanding a deposit, enabling professionals to make use of added bonus fund in direct the games. This type of credit may be used on the various video game, generally requiring people to fulfill specific words just before cashing aside people winnings.

    How to decide on an educated No-deposit Fx Extra

    The simplest way to do that is to view all of our listing of internet casino bonuses and choose the one that appeals to you extremely because of the likely to or by using the added bonus finder. Simple fact is that wade-in order to demands when looking for an on-line casino that have a no-put venture. It represents the number of moments the main benefit is employed for it to move on the main account.

    • Such as, both of these gambling enterprises simply give you three days to wager as a result of their no-deposit added bonus.
    • For many who victory $50, you’re going to have to wager that it 50x before you cash out your winnings.
    • Playing on line roulette free of charge is definitely a means to benefit from the excitement of the games as opposed to risking your bank account.
    • Although not, in the event the used correctly, they’re the ideal part to own a different individual so you can begin their journey in the wonderful world of forex locations.
    • Of a lot operators have a tendency to query an individual to enter a different promo password or added bonus code during the join or whenever deposit.

    No deposit Incentive Terms & Conditions to look out for

    And you’ll actually see imaginative slots out of newbies such Pouch Game Soft. Gamble 1024 the means within the Skywind’s Tiki Wonders position to have a good possible opportunity to win around 5000x their choice. You could renew these with the brand new key at the top right of the online game window. The convenience with which that’s you are able to is one advantageous asset of free casino slot machines.

    Really no-deposit campaigns leave you enjoy via your freebies just after, after which from time to time more than in the wagering criteria next. Yet not, some free revolves also provides carry zero betting standards.Once you’ve finished all conditions, any profits is your to help you withdraw. Of numerous casinos on the internet supply wagering services, beginning the door for sportsbook bonuses. No matter how the deal try prepared, for many who’re also searching for sports betting there are promotions offered. Courtroom U.S. web based casinos generally rely on several different kinds of greeting also offers.

    casino deposit 10 get 80

    Thus, it’s important to usually read the T&Cs set by casino to see exactly what game meet the requirements to possess extra wagering requirements. To own casinos in this list we’ve given an educated game, but if you feel like changing it, make sure your games is not to the blocked checklist. Caesars gambling establishment extra password FINDER2500 have huge asked property value $step 1,300 whenever playing with the maximum added bonus. However, the online game options at the Caesars is quite poor, so be sure to’ll find the appropriate game along with 97% get back. Bet365 added bonus password may sound glamorous, as you get totally free revolves no-deposit for ten days. Unfortuitously, it just offers ranging from $4.8 and you will $19.dos inside well worth since the level of the newest everyday revolves is getting one thing between 5 and you can 20.

    Free Revolves No deposit Extra

    An informed extra could be the one that supplies the better blend of wagering really worth, player-friendly small print. You’ll must realize the conditions and terms in the event the we want to get the best offer otherwise now offers. Generally, Jackpot City provides a good number of on the internet slot machines, with well over 500 to select from. What exactly gets into choosing whether an internet local casino totally free revolves offer is sensible? For starters, a deal is far more and a lot more worthwhile depending on how of a lot 100 percent free spins you get. Cash achieved traded of no deposit is going to be withdrawn mainly having a specific package/regularity standards while the based in the small print of your promotion.

    // Spectra Popup JS Actions Needed in the Admin CPT Page. // Click Event to Enable or Disable Related Popup. const UAGBToggelSwitch = ( event ) => { const element = event.target; // If the current toggle is on, this is false - else this is true. const updatedStatus = element.classList.contains( 'spectra-popup-builder__switch--active' ) ? 'false' : 'true'; const mediaData = new FormData(); mediaData.append( 'action', 'uag_update_popup_status' ); mediaData.append( 'nonce', uagb_popup_builder_admin.uagb_popup_builder_admin_nonce ); mediaData.append( 'post_id', element.dataset.post_id ); mediaData.append( 'enabled', updatedStatus ); fetch( uagb_popup_builder_admin.ajax_url, { method: 'POST', credentials: 'same-origin', body: mediaData, } ) .then( ( resp ) => resp.json() ) .then( ( data ) => { if ( false === data.success ) { return; } // If the API Fetch was successful, invert the toggle. if ( 'false' === updatedStatus ) { element.classList.remove( 'spectra-popup-builder__switch--active' ); } else { element.classList.add( 'spectra-popup-builder__switch--active' ); } } ); } // Bind Related Click Events on Load. document.addEventListener( 'DOMContentLoaded', () => { // Bind all the Toggles. const spectraToggles = document.querySelectorAll( '.spectra-popup-builder__switch' ); for ( let spectraToggleCount = 0; spectraToggleCount < spectraToggles.length; spectraToggleCount++ ) { spectraToggles[ spectraToggleCount ].addEventListener( 'click', ( event ) => UAGBToggelSwitch( event ), false ); } } );

    Main Menu