text:
15 things to know about Chacho's
December 5, 2018 10:52 AM
1. They opened their first location in 1988
Chacho's, a self-described "part fast food restaurant and part casual dining restaurant", opened their first location on Callaghan Road in 1988, according to Chacho's owner John Burke. less
Chacho's, a self-described "part fast food restaurant and part casual dining restaurant", opened their first location on Callaghan Road in 1988, according to ... more
Photo: Mike Sutter /San Antonio Express-News
1. They opened their first location in 1988 Chacho's,...photo-14102342.187918 - |ucfirst
2. They weren't successful at first
Chacho's "enjoyed very limited success" in their early years due to "okay" food and "not usually terrible" service," their website states. Owner John Burke says the restaurant struggled for the first seven years. less
Chacho's "enjoyed very limited success" in their early years due to "okay" food and "not usually terrible" service," their website states. Owner John Burke ... more
2. They weren't successful at first Chacho's...photo-14102556.187918 - |ucfirst
3.	Food is served on "real" china
"Since we serve food as good as the best Mexican restaurants on ceramic dishes, many of our customers eat with us instead of going to a full service Mexican restaurant," Chacho's says on its website.
3. Food is served on "real" china
"Since we serve food as good as the best Mexican restaurants on ceramic dishes, many of our customers eat with us instead of going to a full service Mexican restaurant,"
Photo: Mike Sutter /Staff File Photo
3.	Food is served on "real" china "Since we...photo-14102552.187918 - |ucfirst
4. They don't encourage overeating
If you're watching your weight, Chacho's says they have an extensive diet and health food section in their menu, but adds that "you still need to not overeat." They go on to say, "You can eat everything on our menu and maintain your weight if you do not eat too much of it. Even though our food is delicious, try to stop eating before you feel very full," according to their website.
If you're watching your weight, Chacho's says they have an extensive diet and health food section in their menu, but adds that "you still need to not overeat." They
4. They don't encourage overeating If you're watching...photo-14102550.187918 - |ucfirst
5.	They have two-lane drive throughs
Chacho's has 2 drive-thru lanes at all locations, according to owner John Burke.
5. They have two-lane drive throughs
Photo: Google Street View/Maps
5.	They have two-lane drive throughs Chacho's has 2...photo-9427352.187918 - |ucfirst
6. They have seven locations in Texas
Chacho's has four locations in San Antonio — Chacho's #1 at Callaghan Road at I-10, Chacho's #2 at Bandera Road, Chacho's Chicken at West Military Drive and Goodfire BBQ at Perrin Beitel Road. The remaining three are in Houston. less
Chacho's has four locations in San Antonio — Chacho's #1 at Callaghan Road at I-10, Chacho's #2 at Bandera Road, Chacho's Chicken at West Military Drive and Goodfire BBQ ... more
6. They have seven locations in Texas Chacho's has four...photo-14102554.187918 - |ucfirst
7. If you live in a rural area, you're out of luck
Chacho's plans to steadily open restaurants, but if you live in rural areas of lesser populated states, then "there will never be a Chacho's close to you," the restaurant claims on their website. They go on to write, "If you really like Chacho's, consider moving."
Chacho's plans to steadily open restaurants, but if you live in rural areas of lesser populated states, then "there will never be a Chacho's close to
7. If you live in a rural area, you're out of luck...photo-14102553.187918 - |ucfirst
8. The company ventured into BBQ
Chacho's owner John Burke branched out into barbecue with Goodfire BBQ in 2019.
Photo: Chuck Blount /Staff
8. The company ventured into BBQ Chacho's owner John...photo-16840159.187918 - |ucfirst
9. They're open 24 hours a day
Chacho's is open 24/7, and asks customers on their website to visit its establishments at 3 a.m., saying, "You will be surprised how many people are awake at this time."
Photo: Scott, Joy Marie, Instagram
9. They're open 24 hours a day Chacho's is open...photo-8610717.187918 - |ucfirst
10. They serve breakfast all day
Chacho's serves breakfast all day, according to their website.
10. They serve breakfast all day Chacho's serves...photo-14102557.187918 - |ucfirst
11. They started off as a self-service restaurant, but have since transitioned to a "counter service restaurant"
After decades of following a self-service dining style, in which customers picked up their tacos and enchiladas from a counter, the Northeast Side location implemented a sit-down design staffed with waiters in 2015, owner John Burke told mySA.com in 2015. Chacho's is now considered what is often called a"counter service restaurant," Burke said.
After decades of following a self-service dining style, in which customers picked up their tacos
Photo: GLORIA FERNIZ, SAN ANTONIO EXPRESS-NEWS
11. They started off as a self-service restaurant, but have since...photo-6981459.187918 - |ucfirst
12. Their accountant thought their business plan was crazy
Chacho's' accountant thought the restaurant's business plan was crazy after Chacho's started spending more on ingredients and increasing wages, eventually telling them, "any company can do a lot of business if they give their products away," according to the restaurant chain's website. Chacho's says its profits are just enough to break even, "kinda like Walmart," the website states.
Chacho's' accountant thought the restaurant's business plan was crazy after Chacho's started spending more on ingredients and increasing wages,
Photo: KEVIN GEIL, EXPRESS-NEWS FILE PHOTO
12. Their accountant thought their business plan was crazy...photo-5952385.187918 - |ucfirst
13.	They have a salsa bar
Chacho's has a self-serve salsa bar "with at least 10 types of fresh, homemade salsas," according to the restaurant chain's website.
13. They have a salsa bar
13.	They have a salsa bar Chacho's has a self-serve...photo-14102555.187918 - |ucfirst
14. A fire at one of its locations led to $100,000 in damages
In August 2018, a fire started on a fryer at Chacho's & Chalucci's off of Perrin Beitel Road before it spread to the roof. Firefighters responded and quickly put out the flames. Everyone evacuated safely and no injuries were reported.
In August 2018, a fire started on a fryer at Chacho's & Chalucci's off of Perrin Beitel Road before it spread to the roof. Firefighters
Photo: Ken Branca
14. A fire at one of its locations led to $100,000 in damages...photo-16049916.187918 - |ucfirst
15. One of its iconic locations closed in 2019
The era of the Chacho's and Chalucci's mega-restaurant on San Antonio's Northeast Side came to an end in May 2019 after signage in front of the 28,000 square-foot space stated that the property is available for lease or sale. less
The era of the Chacho's and Chalucci's mega-restaurant on San Antonio's Northeast Side came to an end in May 2019 after signage in front of the 28,000 ... more
15. One of its iconic locations closed in 2019 The era of the...photo-17582631.187918 - |ucfirst


text:
Courtesy of Chicago Tribune • July 18, 2019
Libraries to host community programs
The Lake County Public Libraries have a variety of programs scheduled. The Munster branch will host the Calumet Astronomical Society in a program for children from 6:30-8 p.m. Monday at 8701 Calumet Ave. Registration required 219-836-8450. The Griffith Calumet branch Library , 1215 E. 45th Ave., is offering two programs: Space Camp for grades K-5 from 3:30-5 p.m. Monday; and Glow in the Dark Family Dance Party for all ages from 6-7 p.m. Thursday at 1215 E. 45th Ave., Griffith. Registration required at 219-838-2825. Indiana Dunes will present Animals of the Dunes from 1:30-2:30 p.m. Tuesday at the Hobart branch library, 100 Main St. Registration required at 219-942-2243. Teen Green Screen Fun will be held from 2-3 p.m. Tuesday at the Lake Station-New Chicago branch, 2007 Central Ave., Lake Station. Registration required at 219-962-2409. The Merrillville branch will host LGBTQ Teens and Allies Time from 7-8:30 p.m. Tuesday at 1919 W. 81st Ave. Registration required at 219-769-3541. The Schererville Fire Department will present a program for children from 2-3 p.m. Thursday at the Dyer-Schererville branch Library, 1001 W. Lincoln Highway, Schererville. Bring a towel and wear your swimsuit. Registration required at 219-322-4731.
Vendors sought for fall craft show
Vendor applications are now being accepted for Hammond Parks and Recreation's Autumn Colors Fall Craft Show to be held from 10 a.m. to 3 p.m. Oct. 5 and 6 at the Hammond Civic Center, 5825 S. Sohl Ave., Hammond. A 10-foot-by-10-foot booth for the two-day event is $90, with electricity access an additional $10. More information is with Katie at 219-853-6378.
Hospitals provides support groups, programs
Methodist Hospitals offers a variety of support groups and programs for the community. A Cardiac Support Group will be held at 10 a.m. Tuesday at the Cardiac Rehab building, 753 E. 81st Ave., Merrillville. Register at 219-738-1075. HOPE Support Group for stroke and head injury patients, their friends and families will be from 6-8 p.m. Thursday at the Southlake Campus, Pavilion B, first floor conference room, 200 E. 89th Ave., Merrillville. No registration required. Information is at 219-738-4926. Living After Loss support group for adults grieving the death of a loved one is held from 6-7 p.m. every Monday at the Southlake Campus, Classroom 2, 8701 Broadway, Merrillville; and from 4-5:30 p.m. every Wednesday at Northlake Campus, South Pavilion Auditorium, 600 Grant St., Gary. More information is at 219-886-4522. Two classes are offered for Parkinson's patients: kickboxing from 11 a.m. to noon every Monday; and yoga from 9-10 a.m. every Thursday. Both are held on the Southlake Campus, Pavilion D, Group Room, 303 E. 89th Ave, Merrillville. No registration required. More information is at 219-738-4926.
Lakeshore Chamber to honor Cal Bellamy, Frank Van Til
The Lakeshore Chamber of Commerce will honor former Bank Calumet CEO and Krieg DeVault partner Cal Bellamy and grocer Frank Van Til for their years of dedication to education in Northwest Indiana from 5-7 p.m. July 31 at Dynasty Banquet Center, 4125 Calumet Ave., Hammond. There will be an open bar and Hors D'Oeuvres from 5-7 p.m., with a brief presentation at 6 p.m. Tickets are $50 per person. Proceeds to benefit students in East Chicago and Hammond. Reservations are at 219-931-1000.

redpajama_set_name: RedPajamaCommonCrawl


I was born in Greeley, Colorado. I have also lived in California and Wyoming. I have lived in the Denver area the last 10 years. I enjoy hiking, weight-lifting, and driving or working on my 66 Mustang. I came to Mines because I wanted to go to a small school in Colorado focused on engineering. I also came because Golden has that small-town feel and it is right next to the mountains. I met my wife at Mines and we married in October, 2006. I received my Bachelor's degree in mechanical engineering in May, 2006 and Master's degree in December, 2007. I am now pursuing my doctorate degree.
Physically based: The models are formulated to solve conservation equations that represent gas-phase fluid flow, reactive porous-media transport, catalytic reforming and partial-oxidation chemistry, electrochemical charge transfer chemistry, and current collection effects.
Transient response: Practical fuel-cell systems must respond to dynamic load changes.
System Integration: The models are written with an interface that enables connection with other system-level components.
Computational Efficiency: To provide a practical tool at the systems level, it is important that the fuel-cell models are computationally efficient.
The models are written in C++, using CANTERA interfaces to represent thermodynamic properties, transport properties, and chemical kinetics.


text:
← Deep Green Resistance: Words as tactical weapons
So I filed a lawsuit against this local wingnut →
by Zoe Blunt | October 30, 2012 · 2:06 pm
Hate mail from haters (now with more hate!)
What can you do with obnoxious racists? Reason doesn't work, and even baseball bats can't knock sense into a bonehead. But we can expose and mock them.
Ryan Elson (John Pettit), right, at BC Supreme Court in Victoria, BC. Photo (c) 2012 Times Colonist.
In October 2012, members of the conspiracy cult and Occupy splinter group We Are Crazy Victoria announced that lawyer and white supremacist Doug Christie would be speaking at a rally at the BC Legislature in Victoria BC.
No way. That's not okay. I'd never met any of these nutbars, but we all knew their reputation for harassing women and people of colour. Clearly, we needed to call a counterprotest.
Friends and allies helpfully contacted all the other speakers to inform them they were sharing a stage with Canada's best-known racist. They had no idea Christie was coming. Five speakers – including the keynote – immediately canceled. In a panic, the organizers dropped Christie from the event – and then blamed me for "censoring" him. Ryan Elson and Josh Steffler scrambled to cast themselves as advocates for "free speech" while vilifying me for infringing Christie's "rights." Among other threats, Elson said they would sue me for criticizing WeAreCrazyVictoria, and have me arrested if I showed up for the counterprotest.
That didn't happen, but it was a hilarious day nonetheless.
Half an hour before the haters' rally was set to begin, we set up a couple signs at the Cenotaph on the corner of the Legislature lawn, 200 meters from the wingnuts' stage, and handed out leaflets explaining we were counterprotesting against racism, bullying, and hate speech.
Just before noon, the "free speech advocates" came over to shut us down. Ha! Fat chance.
Photo by Zoe Blunt
Left: Certifiable lunatic and white supremacist Ryan Elson (alias John Pettitt, StealthC, XtoFury, Fixx_Revolution). Centre: Conspiracy freak and amateur astrologist Philip Livingston (aka Adam Evan Livingston), allegedly a fourth-year psych student at UVic. Right: Slimeball creep "Henry Tudor," who is dumb as a sack of poop.
They came straight for me, ignoring the rest of the group. Elson got right up in my face screaming abuse. That's when I got out the megaphone. Elson was trying to get nose-to-nose with me, but with the bullhorn deployed, he got a face full of "Back off racist scum" with the volume cranked to 11.
Naturally, this tough guy was more interested in picking on me (I'm 5 feet and 110 pounds) than the linebacker-sized ex-bouncers standing around me with the signs. Any one of them could pick Elson up with one hand and break him like a twig, and they were ready in case he laid a hand on any of us.
The "back off racist scum" commotion drew two police officers from their post at the Legislature Building. As they approached, Elson pointed and hollered: "Officer, arrest her! She doesn't have a permit to be here!" The cops said, "Step over here son, we're gonna explain something to you." Here's the little bully, getting TOLD.
The nutjobs had no choice but to slink back to their "rally," which consisted of fewer than a dozen people on the Legislature steps. We serenaded them with rousing chants of "Hey hey, ho ho, racists have got to go!" and handed out hundreds of flyers. The wackjobs got schooled. It was a fine day.
But it's not over yet – the haters are setting themselves on fire in a desperate grab for attention. In a long, incoherent blog post, Elson proclaims he's a "victim" of homophobia and accuses me of somehow outing him as gay, which is news to everyone but his boyfriends, apparently. So now Elson is Canada's version of the gay conservative who beat himself up. Except that Elson claims he was in the closet before he announced that he's gay and that makes it all my fault, or something.
Well played, haters! Looking forward to next time.
—– UPDATE November 1 —–
It seems I have hurt the racists' feelings. So they are calling me a terrorist and howling for my arrest on charges of "criminal defamation." Funny! I thought they were opposed to censorship. Anyway — bring it, boys. The publicity would be worth the price of admission.
I mentioned that these wingnuts are setting themselves on fire. Here's an example: According to Elson, this video is irrefutable proof that PAOV (People's Assembly of Victoria) and I secretly control Facebook. The video was recorded at an October 2012 meeting of WeAreCrazy, and we get to eavesdrop as Josh Steffler and other members discuss things like dealing with the "Zionist-controlled world government" and being called "Holocaust deniers." Which they certainly are NOT, because you can't deny something that never happened, amirite?
While you're at it, check out this video (also from October 2012) of Elson trying to file a complaint with the Human Rights Commission about an imaginary future "genocide against white people."
And take a look at this image Elson posted on the Occupy Victoria B.C. page on Facebook around the same time. It's a swastika with a photo of Hitler and the text "Last time it was the JEWS, this time it's white men."
Of course, just a couple weeks ago, WeAreCrazyVictoria was proud to feature a video of Doug Christie speaking at their 2011 rally — until they realized their racism was showing, and purged him. What a shame! Especially since they were so pleased with themselves for inviting him to speak as a surprise guest at their rally last year. Where is your "white pride" now?
But wait, there's more. Josh Steffler has made his own video to show us he and WAC are not really racist at all. That's because there are no "races," there is ONLY ONE RACE. So that makes us the real racists, because we keep talking about race and racism. DUH. (Bonus: BOLSHEVIKS!)
It's easy to mock their ignorance, but these idiots are trying to recruit new members and launch new assaults on our friends, fellow activists and "the left" in general.
So IT'S ON, assholes.
So I filed a lawsuit against this local wingnut
The Judge Should Arrest Me for Calling this Dingbat a Racist
Turfing Out the Racists
How to Oppress Men
Filed under Hate Mail, Josh Steffler, Legal Battles, Ryan Elson, We Are Change Victoria, Wingnuts, Zoe Blunt
Tagged as fixx_revolution, Ryan Elson, stealthc, We Are Change Victoria
10 Responses to Hate mail from haters (now with more hate!)
M-Life Shyamalan
I've decided my personal friendship with Ryan allows me to ignore his virulent racism and sexism and abuse. Instead of considering these problems, I'm here to attack Zoe for defending herself and to sneer at her journalistic credentials. I'm quite comfortable overlooking the sick dysfunctionality of We Are Change and pretending that they don't represent a hate-group. Plus I'm going to lecture Zoe on why she should report only the facts and experiences that are in line with my smug, superior worldview. I am in fact a total dickbag.
(THIS COMMENT HAS BEEN EDITED FOR CLARITY.)
Pingback: TEA & TWO SLICES: On Being An Extreme Extremist And Declaring War On Everything : Scout Magazine
Isiah
Thanks for posting this.. It's been a pleasure to read 🙂
You're right. IT'S ON! fuck these racist ignorant fuckwits. they want to play hard ball? I'm with ya! And so are a whole bunch of others.
Pingback: Open Letter to WAC Victoria and others who equate racism with prejudice. | Many Politics
Pingback: So I filed a lawsuit against this local wingnut | Love Letters & Hate Mail
Jon Wasiatycz
[Stupid rant deleted] jwasiatycz@gmail.com
I'm upset that my comment was deleted! I am making a complaint and a protest! You are mean and oversensitve! I will keep commenting on this blog because that is the logical response for a rational dude who is not at all obsessed with telling women off!
[This comment has been edited for the reader's amusement]
jwasiatycz@gmail.com
I really am a lunatic who won't stop harassing women who disagree with me. lol, I don't care for any open debate, discussion, opinions, I just belittle others and call them feminazis. I'm feeling the pain of the death of white male supremacy and my own entitlement.
(This comment has been edited for the reader's amusement.)
Pingback: BC Libertarians attempted to disrupt Victoria Women's March | Anti-Racist Action Victoria


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>E-Index</title>
<meta name="date" content="2015-07-25">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">

JavaScript is disabled on your browser.

Skip navigation links

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

Prev Letter

Next Letter

Frames

No Frames

All Classes

A B C D E F G H I J L M N P Q R S T U V W

E

encodeBytes(byte[]) - Static method in class py4j.Protocol

 Transform the byte array into Base64 characters.

encodeToByte(byte[], boolean) - Static method in class py4j.Base64

Encodes a raw byte array into a BASE64 byte[] representation
 i accordance with RFC 2045.

encodeToByte(byte[], int, int, boolean) - Static method in class py4j.Base64

Encodes a raw byte array into a BASE64 byte[] representation
 i accordance with RFC 2045.

encodeToChar(byte[], boolean) - Static method in class py4j.Base64

Encodes a raw byte array into a BASE64 char[] representation
 i accordance with RFC 2045.

encodeToString(byte[], boolean) - Static method in class py4j.Base64

Encodes a raw byte array into a BASE64 String representation
 i accordance with RFC 2045.

END - Static variable in class py4j.Protocol

END_OUTPUT - Static variable in class py4j.Protocol

ENTRY_POINT_OBJECT_ID - Static variable in class py4j.Protocol

equals(Object) - Method in class py4j.reflection.MethodDescriptor

ERROR - Static variable in class py4j.Protocol

ERROR_COMMAND - Static variable in class py4j.Protocol

escape(String) - Static method in class py4j.StringUtil

ESCAPE_CHAR - Static variable in class py4j.StringUtil

EXCEPTION_COMMAND_NAME - Static variable in class py4j.commands.ExceptionCommand

ExceptionCommand - Class in py4j.commands

ExceptionCommand() - Constructor for class py4j.commands.ExceptionCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.AbstractCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.ArrayCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.CallCommand

execute(String, BufferedReader, BufferedWriter) - Method in interface py4j.commands.Command

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.ConstructorCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.DirCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.ExceptionCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.FieldCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.HelpPageCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.JVMViewCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.ListCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.MemoryCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.ReflectionCommand

execute(String, BufferedReader, BufferedWriter) - Method in class py4j.commands.ShutdownGatewayServerCommand

A B C D E F G H I J L M N P Q R S T U V W

Skip navigation links

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

Prev Letter

Next Letter

Frames

No Frames

All Classes

redpajama_set_name: RedPajamaGithub


The OAM Server uses both authentication and authorization controls to limit access to the resources that it protects. Authentication is governed by specific authenticating schemes, which rely on one or more plug-ins to test the credentials provided by a user when he or she tries to access a resource. The plug-ins can be taken from a standard set provided with OAM Server installation, or the custom plug-ins created by your own Java developers.
This chapter provides the following sections regarding authentication plug-ins.
For information about deploying and managing authentication plug-ins using the Oracle Access Management Administration Console, see Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.
Provide backward compatibility to support custom Oracle Access Manager 10g plug-ins.
Include a deterministic method to orchestrate custom plug-ins within an authentication module.
A mechanism that enables quick deployment of customized authentication plug-ins.
A mechanism to maintain the complete plug-in State lifecycle.
The development of custom plug-ins for credential collection is supported for authentication (steps you can orchestrate).
Section 3.3.1, "About the Plug-in Interfaces".
Figure 3-1 provides an overview of the tasks involved in custom plug-in deployment.
The following overview identifies the tasks involved in custom plug-in deployment.
Identify the business requirements for this plug-in and consider the authentication flow when a user requests a resource, as described in Section 3.1.2, "About Planning, the Authentication Model, and Plug-ins."
The security architect knows how Access Manager 11g is used and knows the customer's user base. System architects can identify points of improvement in a customer's implementation.
The developer translates what a security architect has designed into the actual plug-in using common libraries to interface custom authentication modules.
Write the metadata XML for the custom module.
Add the following jar files to the CLASSPATH: felix.jar, identitystore.jar, oam-plugin.jar, utilities.jar.
Adding custom plug-ins, which includes configuring the plug-in data source or domain, distributing, and activating the plug-in.
Creating a custom Authentication Module for custom plug-ins, which includes adding and orchestrating steps and outcomes OnSuccess, OnFailure, and OnError.
Creating Authentication Schemes with custom Authentication Modules.
Configuring logging for custom plug-ins.
Monitoring the plug-in and provide feedback to the security or system architects to allow for any revisions to the business requirements and architecture.
For information about deploying authentication plug-ins using the Oracle Access Management Administration Console, see Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.
The life cycle of a plug-in centers around the ability to add plug-ins to the OAM Server and use the plug-in to create more features. This allows users to build features and work flows based on the standard (out-of-the-box) plug-ins and user-added plug-ins that act as extension features to the server.
When a new plug-in JAR file is available, the deployer can import it to a Weblogic Server DOMAIN_HOME/oam/plugins from the administration console's Import action.
Table 3-1 describes the states of a plug-in life cycle that are controlled by Oracle Access Management administrators. For more information, see Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.
Adds the plug-in JAR file to an Weblogic Server DOMAIN_HOME/oam/plugins and begins plug-in validation.
Propagates the plug-in to all registered OAM Servers.
After successful distribution the plug-in can be activated on all registered OAM Servers.
Deactivation checks the plug-in entry flag in oam-config.xml.
If any OAM Server fails during the de-activation process, the "De-activation failed" message is propagated.
Removes the given plug-in (JAR) from DOMAIN_HOME/config/fmwconfig/oam/plugins directory on Weblogic Server, which notifies all OAM Servers.
Plug-ins on the OAM Server are part of a custom authentication scheme. Different types of plug-ins can be used to add the following functionality. This is not a complete listing; other types of plug-ins are supported.
Plug-ins can add functionality to handle with forms of user input not in the form of a log-in username. Fingerprints, a series of security questions, and other methods can be used. The plug-in translates these inputs and checks them against the database.
Responses (not provided out-of-the-box) might be needed when authenticating the user. Custom plug-ins can fulfill this need.
Custom plug-ins can be used for responses and how these responses interact with the rest of the system.
Figure 3-2 illustrates the authentication flow when a user requests a protected resource. Remember that authentication is a process and not a protocol. The green dotted line arrows are custom responses generated by plug-ins that are deployed on the OAM Server.
Before designing and developing custom authentication plug-ins, Oracle recommends that developers analyze the Access Manager authentication decision process closely to determine how a user should be authenticated.
When a certain request comes in, there are two possible ways to handle it. One is to have specific schemes run depending on the attributes of the request, using a decision engine to run one or multiple schemes to properly authenticate the user. This requires less code within each scheme and allows for more modularity. The second option is to have every scheme be hard-coded to handle the various attributes of requests for specific purposes, not using a decision engine to piece together which schemes need to be run (only one scheme is run). Each request approach has its own advantages and disadvantages as documented in Table 3-2.
Divides authentication schemes into smaller sequential modules that can orchestrated to work together as needed.
Code re-use is the primary advantage.
Mirroring the approach of Oracle Adaptive Access Manager is a secondary advantage.
Leaves nothing to be decided; resembles a complete set of If-Else statements that the user must pass to authenticate.
Advantages: Could result in greater security.
Suppose a user wants to log in to his online bank account using his home computer, at midnight. The differences between the two approaches are simple but important and developers must decide which approach best meets their requirements. The following process overviews outline the differences between the decision engine approach and the hard-coded approach.
The request comes from the user with a certain IP address at midnight.
The decision engine determines it has previously handled this IP address. It also determines that a user trying to authenticate at midnight is suspicious and requires the user to answer a security question, in addition to a username and password.
The security question scheme is run for the specified user, and is successful. This is the first of two authentication schemes selected by the decision engine.
The user-password scheme is run, and the user authenticates successfully. This is the second authentication scheme selected by the decision engine.
The online bank account access scheme is chosen from among other authentication schemes (credit card access scheme, new account creation and verification, and so on).
The scheme first checks the IP address to determine if the user has previously made attempts to connect from the computer. It determines the user has.
The scheme checks the time. It requires a security question to be answered, which is answered successfully.
The scheme requires the user to enter his login credentials, and he authenticates successfully.
The Multi-Step Authentication Framework requires a custom authentication plug-in to transmit information to the backend authentication scheme several times during the login process. All information collected by the plug-in and saved in the context will be available to the plug-in through the authentication process. Context data also can be used to set cookies or headers in the login page.
Events are the building blocks of the authentication flow. Events are created using exposed methods of the authentication module plug-in implementation. These events can be combined with the rules to build a deterministic workflow for the authentication. The Workflow controller is the module responsible for orchestrating the authentication workflow. Workflow configuration is defined in the Workflow definition language.
WebGate using a credential collector (DCC or ECC) for dynamic credential collection with multi-step authentication flows. This enables greater flexibility for interactions with users or programmatic entities when collecting authentication-related information that involves several methods to establish the identity of the user.
Authentication module chaining, where modules of a similar challenge mechanism are grouped and the credentials are collected in one pass, then validated against each module. You can chain multiple authentication modules in a new authentication scheme, and define a new scheme plug-in containing the flows.
The challenge mechanism defines how to collect the credentials. The following mechanisms are available: FORM, BASIC, X509, WNA, OAM10G, TAP, and NONE. The challenge mechanism controls the way in which the required credentials are collected. Currently, this is tied to the authentication scheme.
Process Request: The Master Controller processes the authentication request and passes it to the plug-in.
Process Event: The authentication scheme is executed and the plug-in determines whether any input is needed to continue the authentication. If input is required, the plug-in returns an execution status of PAUSE which suspends the event flow.
PAUSE indicates that the authentication processing cannot proceed until additional information is obtained from user. As such, redirection is allowed. When the requested information is supplied, processing continues from the point it was paused. The request is updated with details of the associated ACTION that must be performed. The ActionContext has all the information to execute the ACTION.
For example, if PAUSE is associated with CREDCOLLECT_ACTION, the Master Controller saves the plug-in execution state and begins executing events corresponding to the ACTION by mapping this CREDCOLLECT_ACTION to the CRED_COLLECT event and proceeding with collection as specified by the plug-in's CredentialParameter object.
The saved plug-in state is revived and plug-in execution resumes until either a state of SUCESS or FAILURE is reached. FAILURE indicates that the authentication attempt has failed. If so, OAM Server will take attempt to reauthenticate the user once again. For example, the user is presented with a login form.
If a valid subject is available, a session is created for the user, which is used to save the execution state. Otherwise, the execution state is stored in the request object. This session has the lowest Authentication Level (configured through global (Common) System Configuration).
When user authentication is finished, the session is updated to a fully valid session with the authentication level defined in the authentication scheme and the session timeout configured for the OAM Server.
When the events in the dynamic flow controller finish executing, control is merged back to the parent controller and the execution state is updated.
When authentication completes, access is granted to the requested resource.
In multi-step authentication mode, the plug-in can either collect the credentials from start or use the credentials obtained from the default login page and collect extra credentials if required. If the challenge parameter initial_command=NONE is set in the authentication scheme, control comes to the plug-in directly and the plug-in controls the credentials to be collected.
The plug-in can employ the PAUSE status to pass the UserAction parameter for user interaction to collect credentials. All the credentials required by the module can be collected in one or more passes to the client. During a PAUSE execution, the plug-in execution state and the context data will be saved. Once control returns back to the plug-in, the paused execution resumes and all the collected data is available to the plug-in.
The following types of information can be conveyed to the credential collector page.
where name of the attribute is form_username.
where loginPageURL specifies the URL to be directed to.
UserActionContext holds the UserContextData metadata collected from the login page.
UserAction class is used to collect the credentials. The action forwards or redirects (based on the UserActionMetaData parameter) to the login page to collect more credentials.
//create a user name context data.
// create a UserAction object and set it to the authentication context.
UserActionMetaData specifies the action type to be used with UserAction. The UserAction performs a forward or a redirect (with a GET or POST) to the login page based on the UserActionMetaData value. Possible values for UserActionMetaData are: FORWARD, REDIRECT_GET, and REDIRECT_POST.
This topic introduces the hierarchy for packages, classes, interfaces, and annotations.
Custom plug-in implementation includes writing plug-in implementation class artifacts. The plug-in implementation class must extend the AbstractAuthenticationPlugIn class and implement initialize and process methods. Custom plug-in implementers must implement actual custom authentication processing logic in this method and return the final authentication execution status.
A plug-in's configuration requirements must be given in XML format. This configuration data (metadata) includes plug-in name, author, creation date, version, interface class, implementation class, and configuration data in the form of Attribute / Value pairs. The new plug-in name must be included in the manifest file. A period ( . ) is not a valid character in the plug-in name.
The public interface, oracle.security.am.plugin, is a generic plug-in interface that provides methods to get plug-in name, plug-in implementation class name, plug-in version, plug-in execution status, plug-in monitoring data, plug-in configuration data, and start and stop the plug-in.
The public abstract class oracle.security.am.plugin.AbstractAMPlugin extends java.lang.Object implements GenericPluginService, org.osgi.framework.BundleActivator.
The public interface oracle.security.am.plugin.authn.AuthnPluginService extends GenericPluginService.
This is a authentication plug-in interface that provides an additional authentication specific method to access and process all the data available in the AuthenticationContext object and return the process execution status. Plug-in can then set response that will be added to SESSION, request and redirect contexts.
The public abstract class oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn extends AbstractAMPlugin implements AuthnPluginService.
This is an authentication Abstract plug-in class that will be exposed to the plug-in developers. All the custom plug-in implementations should extend this AbstractPlugInService class. Plug-ins that needs to handle the resource cleanup should override shutdown(Map < String, Object > OAMEnvironmentContext) method. This will also provide an instance of java.util.Logger to plug-ins.
Figure 3-3, "Plug-in Package Hierarchy"
Figure 3-4, "Plug-in Class Hierarchy"
Figure 3-5, "Plug-in Interface Hierarchy"
Figure 3-6, "Plug-in Annotation Type Hierarchy"
Figure 3-7, "Plug-in Enum Hierarchy"
Figure 3-8, "Database User Authentication Plug-in Part 1"
Figure 3-9, "Database User Authentication Plug-in Part 2"
Figure 3-10, "Database User Authentication Plug-in Part 3"
The plug-in's configuration requirements must be given in XML format.
This configuration data (metadata) includes plug-in name, plug-in author, creation date, plug-in version, plug-in interface class, plug-in implementation class, and plug-in configuration data in the form of Attribute / Value pairs.
Figure 3-11 shows the XML Schema Definition (XSD) file containing metadata for the sample: Database User Authentication Plug-in implementation.
Example 3-1 shows the XML metadata for the sample: Database User Authentication Plug-in.
The name=attribute parameter, which used to be read from the XML file in earlier releases, is now read from the Bundle-SymbolicName or the Bundle-Name field. This parameter does not need to be in the XML file.
The implementation parameter, which used to be read from the XML file in earlier releases, is now read from the Bundle-Activator field. This parameter does not need to be in the XML file.
The following can be removed from the XML file: <interface>oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn</interface>.
Bundle-Version: 10-->Note this to be an integer.
Table 3-3 describes the methods required for the plug-in's functionality.
Gives a handle to the PluginConfig object.
The PluginConfig object can be exercised to get plug-in specific system configuration data that is entered when the plug-in is uploaded. This data is required for the plug-in's own functionality.
Custom plug-in developers must implement actual custom authentication processing logic in this method and return the final authentication execution status.
The following tips will help in developing custom plug-ins.
An external JAR is required in both the Weblogic class path and inside the plug-in as there is no visibility of the external JAR inside the plug-in.
To avoid bundle constraint exceptions during plug-in activation, put ;resolution:=optional in the packages.
If the JAR file is not present inside the plug-in AND its classpath (even though available in the Weblogic class path) it will throw a classnotfound exception.
If the JAR file is not available in the Weblogic classpath, a type cast exception is thrown.
This section provides steps to write a custom authentication plug-in. The following overview describes the actions a developer must take after the system architect identifies the business requirements for this plug-in and considers the authentication flow when a user requests a resource. For more information, see Section 3.1.2, "About Planning, the Authentication Model, and Plug-ins".
Section 3.1, "Introduction to Authentication Plug-ins"
Section 3.4, "Sample Code: Custom Database User Authentication Plug-in"
Section 3.4.2, "Sample Plug-in Configuration Metadata Requirements"
Section 3.4.3, "Sample Manifest File for the Plug-in"
Section 3.4.4, "Plug-in JAR File Structure"
Section 3.5.4, "JAR Files Required for Compiling a Custom Authentication Plug-in"
For information about deploying and managing custom authentication plug-ins, see Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.
CLIENT: Enables the plug-in to communicate data about the authentication process or about the user to the client application. The request parameter is PLUGIN_CLIENT_RESPONSE.
ERROR: Enables a plug-in to communicate any error about the authentication process. The request parameter is PLUGIN_ERROR_RESPONSE.


ELKHART, Ind. – Christina Garvey joins ASA Electronics as RV OEM Account Manager to support the company's expanded product line and increased sales, according to a company announcement. Garvey has several years of experience as a pharmaceutical sales representative as well as experience as a retail district manager.
"We're introducing a lot of new products to the market and it's generating a lot of excitement which means more business. We want to be sure that we're giving all of our customers the kind of support and attention they deserve as we continue to grow," Jim Hess, ASA RV-industry manager, says. "We are excited to add Chris to our growing sales team. She brings a wealth of selling experience and will be a great addition to the future of ASA."
According to the ASA announcement, Garvey honed her skills in her previous work by building lasting relationships with her customers across the Midwest and she intends to put that same ability to work at ASA Electronics. She says her focus right now is on getting to know her new clients well enough that she will be able to anticipate their needs and goals.
Garvey's selling career has spanned much of the heartland, covering states from North Dakota all the way to Ohio. In her new role, Garvey will be working with RV OEMs in Indiana and Ohio, keeping her closer to her family and her home in Elkhart. When she isn't working, Garvey enjoys spending time with her husband of 23 years and their daughter, and giving back to her community.
"Elkhart is home. I was born and raised here and my husband and I decided to raise our daughter here," Garvey said. "We want to invest in her future and the future of Elkhart so we recently started a volunteer organization in our family's name that has a focus on art education and STEM (Science, Technology, Engineering, and Mathematics) education for the kids in the community."
Garvey also enjoys reading, yoga, snow skiing, and running 5Ks.


Pozhitsky Chiropratic Clinic, Inc is located at the address 8211 Sta Vlg Ln Unit 1112 in San Diego, California 92108. They can be contacted via phone at (858) 292-1555 for pricing, hours and directions.
For maps and directions to Pozhitsky Chiropratic Clinic, Inc view the map to the right. For reviews of Pozhitsky Chiropratic Clinic, Inc see below.


text:
Q: Issues with leaflet map I am trying to implement a leaflet map API but I cant get it to show up. I am following this link.
https://cloud.maptiler.com/maps/streets/leaflet?utm_campaign=2018-12%20%7C%20leaflet%20series&utm_content=leaflet%20tutorial%201&utm_medium=social&utm_source=youtube&utm_term=desclink-leaflet-sample

My code
map.component.html
<!DOCTYPE html>

    <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" />

© MapTiler © OpenStreetMap contributors

map.component.css
html { height:100%; }
body { position:absolute; top:0; bottom:0; right:0; left:0; }

A: change your html to this:
<!DOCTYPE html>

    <meta name="viewport"
content="initial-scale=1,maximum-scale=1,user-scalable=no" />
    <link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" />

© MapTiler ©
OpenStreetMap contributors

your titleLayer had \n character.
here is an example
if you want to work with leaflet in angular the best solution is using angular version of leaflet.

redpajama_set_name: RedPajamaStackExchange


My small girl loves many things. She loves spending time, one on one with me. This is important to her, as are cookies. She loves a delicious cookie. Baking is a firm favourite too. So, when we had a couple of hours on a Saturday afternoon recently, we combined these three loves. Needless to say, she was thrilled.
We made these simple little cookies, similar in texture to shortbread, though softer I would say.They're quite crumbly.
Little Miss loves strawberry jam, so we added that too. I told her the finished result reminded me of giant Jammy Dodgers. With this in mind, she named them Jammy Trickers!
In the bowl of your mixer, beat together the butter and sugar, then beat in the egg.
Add in the flour and ground almonds and bring together. You can do this with the mixer too.
Remove the dough from the bowl and rest in the fridge for one hour.
Preheat the oven to 160(fan) and prepare a cookie sheet by either dusting with flour or line with parchment paper.
I weigh the dough and divide equally. This ensures an even bake.
Roll the divided pieces into balls and flatten slightly between the palms of your hands. (perfect job for small people.
Using the back of a teaspoon, make a dent in each cookie. Fill this with a spoon of your favourite jam.
Bake the cookies for 15 minutes, allow them to cool slightly before transferring to a cooling rack.
Dust the cookies with icing sugar for that added touch.
These cookies are such a treat. They were a big hit with the Simply Homemade crew and Little Miss was extremely proud of herself. Be sure to check out other baking recipes while you're here.


Between the two of us we have over 120 people that we work with weekly. This is including all our group members, corporates, online clients and 1:1s.
We work with these clients to some degree on an individual basis every week. This is on their mindset, fitness and nutrition. Whether it be through emails, messages, phone calls, face times, or in person.
We also have 3 young sons. 5 months, 5 years and 8 years old.
It's fair to say we have to be so careful with our time. Our time is so precious and there's nothing that frustrates me more than my time being wasted. We also need to be careful of our energy exchange and had to learn a long time ago how to shut off from work in the limited time we had together. We do a lot of 'shifts' and switching between work and our children everyday so at times it all blends together.
Here are some tips to protect your precious time and make a busy life seem not so busy. AND tips on how to protect your limited energy.
1) Make your diary part of your everyday life. Write every thought and any action that must be done big or small. I have my paper diary that I tick off daily plus my phone diary with reminder alerts set. I have a lot to remember everyday and this removes the anxious feeling of forgetting something. I go to sleep at night easily because of this.
2) Food is kept healthy and very easy. 30 minutes is to long in the kitchen for me. 15-20 minutes to make dinner is all I need. I have the same shopping day weekly, enough food is bought for the week and meals are simple.
3) Simple food prep is done to ensure that on busy nights/mornings everything is ready to roll.
4) Takeaways are a great treat in the weekend to break routine and take a break from cooking. There's loads of healthy takeaways out there.
5) I schedule my exercise in weekly at non negotiable times. I need accountability for exercise because I struggle to put myself first so I ensure I always have this in place with my online groups and Revs group training.
6) I unfollow anyone on social media who doesn't offer value in my life. There's still the people I want to be friends with and I'll check in on their profiles every now and then but it's far to time consuming seeing posts that don't resonate with me. To avoid the Facebook 'scrolling' I really only follow clients, a few close friends and people who inspire me.
7) Flowing on from this I only make time for people who I really click with. Having a busy business and young children, this is the busiest time in our lives. We have to be selective in our minimal free time. This is the reality. I have a few close friends that I adore and make time for. Close family and of course my sons. We also meet so many amazing, talented people through Rev so we always make time for social activities with our tribe.
Something I asked myself years ago when I was feeling overwhelmed and busy was this.


There comes a point in life when you will need to get professional investigative services just to allay your fears. If not for anything else, the results of an investigative service can help you make critical decisions in regards to how you want your life or business to shape out in the future. If you are suspecting infidelity issues in your relationship, no doubt a private investigator can help shed more light on that. You may also get an investigator when you want to track down a long lost friend or relative, or when you want to dig more about a business partner. As is evident, investigative services can be utilized in many different instances to help make important decisions in life. However, not all private investigators are the same. How do you ensure you are dealing with the best investigative services provider in the industry?
Experience is one of those critical things you should keep in mind when thinking of dealing with an investigative service agency. When you want to gather conclusive proof of your intuition or allegation, an experienced investigator will do all that is within their powers to gather as much proof as possible to help you make an informed decision. It is no wonder some of the top-rated private investigators today will often trace their roots back to some background experience in law enforcement and security issues. Even better is an investigator who has undertaken additional training in surveillance and investigative techniques. You can learn more on hiring an investigator or visit https://www.questassocoh.com/security-services/executive-protection/ for more details.
By the same token, it is important that you not only factor in experience but also skill and license of the investigator of choice. Ask for proof of the same and while at it, ensure you put them to task to explain their proprietary methods of surveillance and investigation. That said, another important area that needs to be addressed when talking of investigative services is the issue of payment. Of course, you should know by now most investigative work needs lots of movement and traveling from one area to another collecting evidence and proof. It is no wonder most of the service providers will expect you to pay an agreed-upon retainer for the job. How about you find out the average cost of investigative services in your local area so you can know how much to part with when interviewing a potential service provider. Further, it is highly recommended that the investigator takes you through the terms of service as well as have the charges clearly stipulated and itemized before you append your signature on the contract of service. You can read more on this here: https://www.huffingtonpost.com/entry/female-private-investigators-tackle-dating-deceit_us_59911550e4b0ed1f464c0c37.


I'm just about to fly out of Madrid Barajas airport after spending slightly less than 20 hours in Spain. Arriving late last night, and staying in a hotel on the edge of town close to the office where I've been booked with meetings today, the only way I was going to get to see the sights of Spain's capital was to set my alarm for 6am, put on my running shoes and run out for a loop.
I've never been here before but a quick look on Google Maps shows that I was situated quite a way from any of Madrid's central attractions. A bit of research shows that there are plenty of decent places to run, but these were mostly spread out and I wanted to loop around the whole city.
Coming here in the middle of an Alpine winter, leaving the hotel at 6.15am in 9C temperature felt pretty nice.
Navigating Madrid in the early hours is easy – it's mostly long, straight avenues that run N/S or E/W so I was able to link my run from the hotel, down to Parque del Retiro. It was still pitch black by this point though so there wasn't much to see.
This park is right in the centre of Madrid and is well worth a visit whether you're running or otherwise. It belonged to the Spanish monarchy until the 19th century when it became a public park.
From here I followed Calle de Atocha northwest up to Plaza Mayor, a grand town square but at 7am it was pretty deserted and unlit. Carrying on through I finally reached the Palacio Real just as the sun was coming up, and I was finally able to snap a photo!
I had originally hoped to head west to the Rio Manzanares where 10s of KMs of pedestrianised routes make for good running. Further northwest also is the Casa de Campo which is another very popular spot for runners, but I had meetings to get to and not enough time to extend my route, so had to head back.
This is the largest park in Madrid, on the west bank of the Manzanares and is a former royal hunting estate.
The park covers 700 hectares so you can imagine it's quite a haven for runners, but is also quite busy with tourists and locals alike since there's also a zoo, amusement park and aquarium.
Getting back takes longer than heading out – the huge empty avenues that I was able to cross easily in the early hours where clogged with morning rush hour commuter traffic, meaning frequent stops at the crossing lights. As I got back to the hotel the sun was just getting up and I was treated to this view from the hotel room window.
On my way back from Mexico City, my stopover in Frankfurt was going to be around 7 hours – from 2pm until my flight to Lyon around 9. Since I would have cleared customs and be in the Schengen zone for my next flight, and would have access to the Lufthansa business lounge (and showers) I toyed with the idea of quitting the airport and going for a run.
A bit of preparation – I made sure to pack my running gear in my hand baggage. Once in the Schengen terminal I found the lounge, and checked with the staff there that I would definitely be able to leave the airport and come back in. My boarding pass was on my phone, so I didn't need to take anything else with me apart from the key to the locker in the business lounge. I took my driving licence just in case I ended up needing it for ID (I didn't).
Frankfurt airport is surrounded by hundreds of hectares of forest – I'd seen it countless times when flying in and out of the airport and thought that it would be a good place to run if I got the chance. A lot of the Googling I'd done recommended leaving the airport on a hotel transfer bus and starting from their, but instead I simply ran out of the arrivals lounge in the vague direction of Frankfurt.
There are a few marked cycle paths which lead out of the airport, and along some of the main roads and I was able to follow these until they crossed a motorway and ended up in the main forest itself.
It was mid autumn and cold, but it was dry and crisp and the forest floor was a carpet of rustling brown leaves. I expected to see more runners but it was mainly just the odd cyclist. The forest paths all mainly run N-S/E-W in a grid pattern, so navigating towards Frankfurt wasn't too difficult.
I didn't see or hear any signs of wild boar in the woods but it looked like perfect habitat for them.
Eventually I reached the river Main, west of Frankfurt and could see the high rise office blocks in the distance. There was quite a pleasant path running along it and assumed it would take me most of the way into Frankfurt, about 5-6km east. However I was starting to feel a niggle in my ankle that had flared up after my last marathon in Amsterdam, and the light was fading so I decided to turn back.
Finding my way back in the airport was much harder than finding my way out. They're not really built for pedestrian access and I couldn't find my exact same way back, so ended up entering the airport grounds quite a long way from where I wanted to be. All the signs to the terminal I needed where aimed at cars and didn't necessarily show me the right way there. In the fading light it felt a little unsettling running round an enormous airport, mostly devoid of people, but eventually I found my way back. I'd definitely recommend the transfer bus to anyone trying it again.
I got a few strange looks going back through security covered in sweat in just running shorts and top, but was back in time for a shower, something to eat and some relaxation before my flight.
I've spent the last 3 years living at 1200m altitude in the French Alps, and anecdotally I've always felt that training at this level has always helped me when I've spent time running at lower elevations. On my regular trips to various European cities, running at near to sea level, on paved roads with little change in gradient has always felt very easy and I think that is thanks to the mountain training.
Last week I was in Mexico City on a business trip. It was the first time I had ever been there, but I knew that it was famously quite high, and also polluted. It is also infamous for congested, traffic snarled streets and lack of green space so I wasn't exactly holding out great hope for fun training runs.
Visiting the pyramids outside Mexico City on my day off.
I arrived on Saturday night after an all-day flight from Europe, so had an early night and met my colleagues on Sunday morning to find out they had arranged a tour of the pyramids at Teotihuacan. This was a great way to acclimatise and get used to the jet lag – but meant I didn't get to run.
My hotel overlooked the Bosque de Chapultepec – the largest park in Mexico City, and one of the largest city parks in the Western hemisphere. Each Sunday the roads that run through the park are closed to motorised traffic and the area, already a haven for runners, is completely taken over by cyclists, rollerbladers and runners.
I had to wait until the Monday evening after our first day's meetings to go for a run – and since I only had 30 minutes I thought I would run a brisk pace rather than do the steady 10km I had planned – after just a few minutes I could really feel my lungs burning with the altitude and pollution – I was genuinely shocked at the effort it took to maintain a decent pace, since I'm used to being able to run more quickly on the flat pavement of the city. Unfortunately I'd left my HRM back at home so I couldn't see how hard I was working but I felt like I was in the red most of the time and actually felt very dizzy at the end of the 8km.
The park is gated and closes around dusk, so unfortunately I couldn't get into the main section and had to run around the small outskirts, which wasn't the most inspiring, and hugged some of the main roads which were clogged with rush-hour traffic. I made a note to get up early and go for a morning run later in the week.
Later in the week I ran a circuit of the park (at a more leisurely pace) and found it to be a fantastic place – full of runners, well signposted and lots of quiet trails. In the centre is the Castillo de Chapultepec, once an imperial residence but now a museum. During the cool mornings the park is full of runners, and there are plenty of places to explore with some well marked paths and trails.
The park is gated and so you can only access in a few places, and there was quite a visible police presence throughout, so even though Mexico City isn't one of the safest place in the world, this felt like a part of town where you could run in relative safety.
I just spent the week in Atlanta on business, and with the an 86km ultra marathon just over a week away, I had to make sure that I found the opportunity to run. I'm tapering down so the distance wasn't going to be large, and actually not having access to trails might actually have been beneficial to sharpen me up.
The big problem with Atlanta, and indeed most big American cities between the coasts, is that it's not really built with the idea that humans might want to travel around it on foot. With a grid system of 6 lane roads, and a number of major interstate highways travelling through the city, my initial run to get my bearings was a bit of a disaster. Stopping at crosswalks every 15 seconds, and running the jay-walking gauntlet.
Centennial Olympic Park in downtown ATL. About the only place to run in the city centre, but too small to be much use.
After a quick search on Google Maps I found a large park to the northeast, that could be accessed by running up W Peachtree – it was, it worked, and I got to Piedmont Park, which was an oasis of tranquility. The only other problem was the heat and humidity.
Pic de l'Aigle (the Eagle's Peak) is a mountain that I can see right from my living room window. It's my go-to climb whenever I want to go for a tougher than usual run, as a door-to-door loop takes just under two hours, is 13km and climbs about 650m.
I ran it on Sunday, with a quick 'warm up session' down the valley – 8km running with the dog. I then dropped him off at home as it was pretty hot and there aren't any streams running up there this time of year.
Despite it being Bastille Day, the weekend when hordes of tourists descend on us for the summer, I had the whole mountain to myself, and took this 360 panorama with the Photosynth app.
This week I was lucky enough to be in the beautiful Spanish city of Seville for work. It was a busy programme and we spent most of our days in doors, but we got to see the sights at night and enjoy Spanish food and drink.
On the first morning I managed to sneak in a run along the Guadalquivir river which was a great way of getting my bearings, and seeing the city before it got too hot and croweded. I hoped to get out again but I was just unable to get up early enough in the mornings!
The palace in the Plaza Espana – amazing at dawn.
I'm in London for the week and went out this morning for a run around Hampstead Heath and then down into our Soho office.
The weather has been terrible lately with no discernible summer in the UK. However I was treated to a great view of the city from the top of Parliament Hill, before heading back down into town.
I was spared dog-walking duties on Saturday morning so took the opportunity to go for a longer and more adventurous run than usual. Starting off down the valley through the forests as far as the Mougious waterfall (below). Rather than turning around though, I took the steep ascent (300m in about 15 minutes) up the left hand side.
It was a lung-busting climb to the top, as the path is pretty steep (a good 45º) but getting to the top is worth it. There is a sheep pasture up there, although being north facing there is still too little grass for it to be used. The shepherd's old caravan and patio set was still up there though, but looks like it had had a tough winter.
Looking back down into the valley from the top of the waterfall.
From here, the trail followed one of the logging tracks into the trees, and traverses the forest-covered mountainside. The terrain is quite tough, boggy and rocky.
After a few hundred metres, the trail turns off the road and gets onto proper forest single track. When I'd done this route in the past, I'd missed this turning and ended up descending into a gully and picking my way through rocks all the way down to the river.
This was where the running started to get really good – basically several KMs of forest single track traversing the mountainside, with occasional views into the valley. After I while I neared the top of the of the local ski pistes – and managed to get spooked by some pretty weird animal noises – I'm thinking it may have been the local wild boar.
Exiting the forest at the top of the ski piste – pretty much downhill from here.
Here's the GPS data from Garmin.
At the end of our valley is the largest mountain in the area – the Grand Ferrand. At 2,758m its not the biggest in the Alps, but at over a vertical mile above our valley floor, it presents quite a challenge to the aspring trail runner, and has quite an imposing presence over the end of the valley.
The Grand Ferrand on the approach – still early morning and not much sun.
All year I had been running along the trails at the end of the valley, and up into the foothills of the Grand Ferrand, only to be turned back by too much snow. My run on Friday morning was meant to be just another 10km jaunt, but to my surpise I found the snow had melted enough to allow me to get up above the treeline and onto the mountain proper.
Rather than run up to Lac du Lauzon, I decided that I would traverse across the face of the mountain and head towards Col de la Croix, which passes the local sheep pastures, and then descend down into the forest and create a loop.
Since this was early spring, and very few hikers had made this route yet, after taking the branch I immediately lost the path and ended up scrambling up through rough undergrowth until I came out over a ridge and onto the steep, grassy pastures of the Ferrand.
I realised I was too high for the trail that cuts across, so decided to head across the slope and descend until I found it. The slope was a good 50º and quite slick with the morning due so going was tricky. I was busy watching down the mountain and at my feet, until I caught a glimpse of movement and looked up the slope to see a Chamois running towards me. It suddenly saw me, and startled, ran away for another 100m before looking back at me. I managed to snap a picture with my phone but it does no justice to these amazing animals – I was struggling on the terrain and it was running around as if it were on the flat.
After descending down another couple of hundred metres I found the trail, which was pure trail running Nirvana, high above the treeline, with a fantastic view back down the valley into La Jarjatte.
Finally found the trail that traverses the lower part of the mountain, with fantastic views back down the valley.
Into the sheep pastures, which in a month or so will be full of flocks, guarded from wolves by Patou dogs.


text:
<?php

/**
 * ParEmp form base class.
 *
 * @method ParEmp getObject() Returns the current form's model object
 *
 * @package    gesser
 * @subpackage form
 * @author     Luis Hernández
 * @version    SVN: $Id: sfDoctrineFormGeneratedTemplate.php 29553 2010-05-20 14:33:00Z Kris.Wallsmith $
 */
abstract class BaseParEmpForm extends BaseFormDoctrine
{
  public function setup()
  {
    $this->setWidgets(array(
      'cod_emp'     => new sfWidgetFormInputHidden(),
      'emp_imp'     => new sfWidgetFormInputText(),
      'temp_num'    => new sfWidgetFormInputText(),
      'cfxg_num'    => new sfWidgetFormInputText(),
      'ccxg_num'    => new sfWidgetFormInputText(),
      'fact_num'    => new sfWidgetFormInputText(),
      'giro_num'    => new sfWidgetFormInputText(),
      'girocppnum'  => new sfWidgetFormInputText(),
      'nota_num'    => new sfWidgetFormInputText(),
      'ped_num'     => new sfWidgetFormInputText(),
      'ord_num'     => new sfWidgetFormInputText(),
      'cotc_num'    => new sfWidgetFormInputText(),
      'cotp_num'    => new sfWidgetFormInputText(),
      'nde_num'     => new sfWidgetFormInputText(),
      'cb_num'      => new sfWidgetFormInputText(),
      'pg_num'      => new sfWidgetFormInputText(),
      'nd_num'      => new sfWidgetFormInputText(),
      'ndcpp_num'   => new sfWidgetFormInputText(),
      'nc_num'      => new sfWidgetFormInputText(),
      'nccpp_num'   => new sfWidgetFormInputText(),
      'chdv_num'    => new sfWidgetFormInputText(),
      'chdvcppnum'  => new sfWidgetFormInputText(),
      'comp_num'    => new sfWidgetFormInputText(),
      'devp_num'    => new sfWidgetFormInputText(),
      'devc_num'    => new sfWidgetFormInputText(),
      'ajus_num'    => new sfWidgetFormInputText(),
      'depc_num'    => new sfWidgetFormInputText(),
      'tras_num'    => new sfWidgetFormInputText(),
      'genk_num'    => new sfWidgetFormInputText(),
      'ords_num'    => new sfWidgetFormInputText(),
      'ordp_num'    => new sfWidgetFormInputText(),
      'ejep_num'    => new sfWidgetFormInputText(),
      'inte_num'    => new sfWidgetFormInputText(),
      'porc_db'     => new sfWidgetFormInputText(),
      'post_num'    => new sfWidgetFormInputText(),
      'postcppnum'  => new sfWidgetFormInputText(),
      'reten_num'   => new sfWidgetFormInputText(),
      'retencppnum' => new sfWidgetFormInputText(),
      'ndr_num'     => new sfWidgetFormInputText(),
      'ndd_num'     => new sfWidgetFormInputText(),
      'movc_num'    => new sfWidgetFormInputText(),
      'movb_num'    => new sfWidgetFormInputText(),
      'desc_num'    => new sfWidgetFormInputText(),
      'desccppnum'  => new sfWidgetFormInputText(),
      'num_kit'     => new sfWidgetFormInputText(),
      'fisi_num'    => new sfWidgetFormInputText(),
      'docum1'      => new sfWidgetFormInputText(),
      'docum2'      => new sfWidgetFormInputText(),
      'temp_char1'  => new sfWidgetFormInputText(),
      'temp_char2'  => new sfWidgetFormInputText(),
      'temp_char3'  => new sfWidgetFormInputText(),
      'temp_char4'  => new sfWidgetFormInputText(),
      'temp_char5'  => new sfWidgetFormInputText(),
      'temp_char6'  => new sfWidgetFormInputText(),
      'temp_char7'  => new sfWidgetFormInputText(),
      'temp_char8'  => new sfWidgetFormInputText(),
      'p_comv_vol'  => new sfWidgetFormInputCheckbox(),
      'p_comv_klu'  => new sfWidgetFormInputCheckbox(),
      'p_comv_ven'  => new sfWidgetFormInputCheckbox(),
      'p_comv_con'  => new sfWidgetFormInputCheckbox(),
      'p_comv_r_c'  => new sfWidgetFormInputCheckbox(),
      'p_comv_r_p'  => new sfWidgetFormInputCheckbox(),
      'p_comv_tip'  => new sfWidgetFormInputCheckbox(),
      'p_desc_art'  => new sfWidgetFormInputCheckbox(),
      'p_desc_cat'  => new sfWidgetFormInputCheckbox(),
      'p_desc_glo'  => new sfWidgetFormInputCheckbox(),
      'p_desc_ofe'  => new sfWidgetFormInputCheckbox(),
      'p_desc_lin'  => new sfWidgetFormInputCheckbox(),
      'p_prec_isv'  => new sfWidgetFormInputCheckbox(),
      'p_prec1_isv' => new sfWidgetFormInputCheckbox(),
      'p_prec2_isv' => new sfWidgetFormInputCheckbox(),
      'p_prec3_isv' => new sfWidgetFormInputCheckbox(),
      'p_prec4_isv' => new sfWidgetFormInputCheckbox(),
      'p_prec5_isv' => new sfWidgetFormInputCheckbox(),
      'p_roundfac'  => new sfWidgetFormInputCheckbox(),
      'p_roundinf'  => new sfWidgetFormInputCheckbox(),
      'p_val_red'   => new sfWidgetFormInputText(),
      'p_roundequ'  => new sfWidgetFormInputCheckbox(),
      'p_roundsup'  => new sfWidgetFormInputCheckbox(),
      'p_costo_do'  => new sfWidgetFormInputCheckbox(),
      'p_com_auto'  => new sfWidgetFormInputCheckbox(),
      'p_stock_neg' => new sfWidgetFormInputCheckbox(),
      'p_ent_new'   => new sfWidgetFormInputCheckbox(),
      'p_aju_comi'  => new sfWidgetFormInputCheckbox(),
      'p_doble_un'  => new sfWidgetFormInputCheckbox(),
      'p_pront_pg'  => new sfWidgetFormInputCheckbox(),
      'p_grab_ren'  => new sfWidgetFormInputCheckbox(),
      'p_para1'     => new sfWidgetFormInputCheckbox(),
      'p_para2'     => new sfWidgetFormInputCheckbox(),
      'p_para3'     => new sfWidgetFormInputCheckbox(),
      'p_para4'     => new sfWidgetFormInputCheckbox(),
      'p_para5'     => new sfWidgetFormInputCheckbox(),
      'p_para6'     => new sfWidgetFormInputCheckbox(),
      'p_para7'     => new sfWidgetFormInputCheckbox(),
      'p_para8'     => new sfWidgetFormInputCheckbox(),
      'p_para9'     => new sfWidgetFormInputCheckbox(),
      'p_para10'    => new sfWidgetFormInputCheckbox(),
      'p_open_com'  => new sfWidgetFormInputCheckbox(),
      'p_marg_cap'  => new sfWidgetFormInputCheckbox(),
      'p_dir_ent'   => new sfWidgetFormInputCheckbox(),
      'p_art_20'    => new sfWidgetFormInputCheckbox(),
      'p_imp_kit'   => new sfWidgetFormInputCheckbox(),
      'p_red_com'   => new sfWidgetFormInputCheckbox(),
      'p_cyf_dol'   => new sfWidgetFormInputCheckbox(),
      'p_ser_art'   => new sfWidgetFormInputCheckbox(),
      'p_art_dol'   => new sfWidgetFormInputCheckbox(),
      'mone_art'    => new sfWidgetFormInputText(),
      'p_deb_ban'   => new sfWidgetFormInputCheckbox(),
      'p_deb_aut'   => new sfWidgetFormInputCheckbox(),
      'p_fact_alm'  => new sfWidgetFormInputCheckbox(),
      'p_despacho'  => new sfWidgetFormInputCheckbox(),
      'p_idb'       => new sfWidgetFormInputCheckbox(),
      'val_idb'     => new sfWidgetFormInputText(),
      'tempor1'     => new sfWidgetFormInputText(),
      'fecha_res'   => new sfWidgetFormDateTime(),
      'fecha_fisi'  => new sfWidgetFormDateTime(),
      'open_fisi'   => new sfWidgetFormInputCheckbox(),
      'serial'      => new sfWidgetFormInputText(),
      'cadena'      => new sfWidgetFormInputText(),
      'inv_emp'     => new sfWidgetFormInputText(),
      'temp_char'   => new sfWidgetFormInputText(),
      'fec_inte'    => new sfWidgetFormDateTime(),
      'temp_fech'   => new sfWidgetFormDateTime(),
      'ele_linea'   => new sfWidgetFormInputCheckbox(),
      'lon_linea'   => new sfWidgetFormInputText(),
      'ele_categ'   => new sfWidgetFormInputCheckbox(),
      'lon_categ'   => new sfWidgetFormInputText(),
      'ele_medid'   => new sfWidgetFormInputCheckbox(),
      'lon_medid'   => new sfWidgetFormInputText(),
      'ele_item'    => new sfWidgetFormInputCheckbox(),
      'lon_item'    => new sfWidgetFormInputText(),
      'ele_color'   => new sfWidgetFormInputCheckbox(),
      'lon_color'   => new sfWidgetFormInputText(),
      'ele_carter'  => new sfWidgetFormInputCheckbox(),
      'caracter'    => new sfWidgetFormInputText(),
      'dec_prec'    => new sfWidgetFormInputText(),
      'dec_cost'    => new sfWidgetFormInputText(),
      'cant_art'    => new sfWidgetFormInputText(),
      'total_cod'   => new sfWidgetFormInputText(),
      'tipo_com'    => new sfWidgetFormInputCheckbox(),
      'tipo_lib'    => new sfWidgetFormInputCheckbox(),
      'co_us_in'    => new sfWidgetFormInputText(),
      'fe_us_in'    => new sfWidgetFormDateTime(),
      'co_us_mo'    => new sfWidgetFormInputText(),
      'fe_us_mo'    => new sfWidgetFormDateTime(),
      'logo'        => new sfWidgetFormTextarea(),
      'revisado'    => new sfWidgetFormInputText(),
      'trasnfe'     => new sfWidgetFormInputText(),
      'p_sucursal'  => new sfWidgetFormInputCheckbox(),
      'rowguid'     => new sfWidgetFormInputText(),
      'p_licores'   => new sfWidgetFormInputCheckbox(),
      'p_lotenro'   => new sfWidgetFormInputCheckbox(),
      'p_lotefec'   => new sfWidgetFormInputCheckbox(),
      'serverolap'  => new sfWidgetFormInputText(),
      'dataolap'    => new sfWidgetFormInputText(),
      'p_loteaut'   => new sfWidgetFormInputCheckbox(),
      'tipo_inve'   => new sfWidgetFormInputText(),
      'aju_posm'    => new sfWidgetFormInputText(),
      'aju_posa'    => new sfWidgetFormInputText(),
      'aju_negm'    => new sfWidgetFormInputText(),
      'aju_nega'    => new sfWidgetFormInputText(),
      'aju_posmc'   => new sfWidgetFormInputText(),
      'aju_posac'   => new sfWidgetFormInputText(),
      'aju_negmc'   => new sfWidgetFormInputText(),
      'aju_negac'   => new sfWidgetFormInputText(),
      'plv_num'     => new sfWidgetFormInputText(),
      'plc_num'     => new sfWidgetFormInputText(),
      'pventa'      => new sfWidgetFormInputText(),
      'turnosic'    => new sfWidgetFormInputText(),
      'tabislr'     => new sfWidgetFormInputText(),
      'moneda'      => new sfWidgetFormInputText(),
      'imp_num'     => new sfWidgetFormInputText(),
      'rma_cli'     => new sfWidgetFormInputText(),
      'rma_prov'    => new sfWidgetFormInputText(),
      'rma_entc'    => new sfWidgetFormInputText(),
      'rma_entp'    => new sfWidgetFormInputText(),
      'rma_regs'    => new sfWidgetFormInputText(),
      'p_prov_new'  => new sfWidgetFormInputCheckbox(),
      'p_ser_new'   => new sfWidgetFormInputCheckbox(),
      'rmacliente'  => new sfWidgetFormInputText(),
      'rma_trans'   => new sfWidgetFormInputText(),
      'garantia'    => new sfWidgetFormInputText(),
      'reem_prov'   => new sfWidgetFormInputText(),
      'des_ser'     => new sfWidgetFormInputText(),
      'ser_auto'    => new sfWidgetFormInputText(),
      'pcontrol_1'  => new sfWidgetFormInputCheckbox(),
      'pcontrol_2'  => new sfWidgetFormInputCheckbox(),
      'pcontrol_3'  => new sfWidgetFormInputCheckbox(),
      'pcontrol_4'  => new sfWidgetFormInputCheckbox(),
      'pcontrol_5'  => new sfWidgetFormInputCheckbox(),
      'idioma'      => new sfWidgetFormInputText(),
      'serie'       => new sfWidgetFormInputCheckbox(),
      'aux01'       => new sfWidgetFormInputText(),
      'aux02'       => new sfWidgetFormInputText(),
      'eprofit'     => new sfWidgetFormInputCheckbox(),
      'pais'        => new sfWidgetFormInputText(),
      'emp_num'     => new sfWidgetFormInputText(),
      'dmc_num'     => new sfWidgetFormInputText(),
      'tax_num'     => new sfWidgetFormInputText(),
      'ced_num'     => new sfWidgetFormInputText(),
      'ent_num'     => new sfWidgetFormInputText(),
      'artinmp'     => new sfWidgetFormInputCheckbox(),
      'tip_costo'   => new sfWidgetFormInputText(),
      'tip_cmat'    => new sfWidgetFormInputText(),
      'co_aent'     => new sfWidgetFormInputText(),
      'cie_num'     => new sfWidgetFormInputText(),
      'odp_num'     => new sfWidgetFormInputText(),
      'req_num'     => new sfWidgetFormInputText(),
      'dev_num'     => new sfWidgetFormInputText(),
      'co_asal'     => new sfWidgetFormInputText(),
      'devmax'      => new sfWidgetFormInputCheckbox(),
      'exp_num'     => new sfWidgetFormInputText(),
      'inp_num'     => new sfWidgetFormInputText(),
      'cost_num'    => new sfWidgetFormInputText(),
      'par_num'     => new sfWidgetFormInputText(),
      'esc_num'     => new sfWidgetFormInputText(),
      'cierre_mes'  => new sfWidgetFormInputCheckbox(),
      'pla_num'     => new sfWidgetFormInputText(),
      'men_num'     => new sfWidgetFormInputText(),
      'tipcosdev'   => new sfWidgetFormInputText(),
      'max_lin'     => new sfWidgetFormInputText(),
      'dist_num'    => new sfWidgetFormInputText(),
      'exp_numi'    => new sfWidgetFormInputText(),
      'p_imp65'     => new sfWidgetFormInputCheckbox(),
      'val_max'     => new sfWidgetFormInputCheckbox(),
      'server'      => new sfWidgetFormInputText(),
      'namedb'      => new sfWidgetFormInputText(),
      'login'       => new sfWidgetFormInputText(),
      'password'    => new sfWidgetFormInputText(),
      'man_impr'    => new sfWidgetFormInputCheckbox(),
    ));

    $this->setValidators(array(
      'cod_emp'     => new sfValidatorChoice(array('choices' => array($this->getObject()->get('cod_emp')), 'empty_value' => $this->getObject()->get('cod_emp'), 'required' => false)),
      'emp_imp'     => new sfValidatorString(array('max_length' => 60, 'required' => false)),
      'temp_num'    => new sfValidatorInteger(array('required' => false)),
      'cfxg_num'    => new sfValidatorInteger(array('required' => false)),
      'ccxg_num'    => new sfValidatorInteger(array('required' => false)),
      'fact_num'    => new sfValidatorInteger(array('required' => false)),
      'giro_num'    => new sfValidatorInteger(array('required' => false)),
      'girocppnum'  => new sfValidatorInteger(array('required' => false)),
      'nota_num'    => new sfValidatorInteger(array('required' => false)),
      'ped_num'     => new sfValidatorInteger(array('required' => false)),
      'ord_num'     => new sfValidatorInteger(array('required' => false)),
      'cotc_num'    => new sfValidatorInteger(array('required' => false)),
      'cotp_num'    => new sfValidatorInteger(array('required' => false)),
      'nde_num'     => new sfValidatorInteger(array('required' => false)),
      'cb_num'      => new sfValidatorInteger(array('required' => false)),
      'pg_num'      => new sfValidatorInteger(array('required' => false)),
      'nd_num'      => new sfValidatorInteger(array('required' => false)),
      'ndcpp_num'   => new sfValidatorInteger(array('required' => false)),
      'nc_num'      => new sfValidatorInteger(array('required' => false)),
      'nccpp_num'   => new sfValidatorInteger(array('required' => false)),
      'chdv_num'    => new sfValidatorInteger(array('required' => false)),
      'chdvcppnum'  => new sfValidatorInteger(array('required' => false)),
      'comp_num'    => new sfValidatorInteger(array('required' => false)),
      'devp_num'    => new sfValidatorInteger(array('required' => false)),
      'devc_num'    => new sfValidatorInteger(array('required' => false)),
      'ajus_num'    => new sfValidatorInteger(array('required' => false)),
      'depc_num'    => new sfValidatorInteger(array('required' => false)),
      'tras_num'    => new sfValidatorInteger(array('required' => false)),
      'genk_num'    => new sfValidatorInteger(array('required' => false)),
      'ords_num'    => new sfValidatorInteger(array('required' => false)),
      'ordp_num'    => new sfValidatorInteger(array('required' => false)),
      'ejep_num'    => new sfValidatorInteger(array('required' => false)),
      'inte_num'    => new sfValidatorInteger(array('required' => false)),
      'porc_db'     => new sfValidatorNumber(array('required' => false)),
      'post_num'    => new sfValidatorInteger(array('required' => false)),
      'postcppnum'  => new sfValidatorInteger(array('required' => false)),
      'reten_num'   => new sfValidatorInteger(array('required' => false)),
      'retencppnum' => new sfValidatorInteger(array('required' => false)),
      'ndr_num'     => new sfValidatorInteger(array('required' => false)),
      'ndd_num'     => new sfValidatorInteger(array('required' => false)),
      'movc_num'    => new sfValidatorInteger(array('required' => false)),
      'movb_num'    => new sfValidatorInteger(array('required' => false)),
      'desc_num'    => new sfValidatorInteger(array('required' => false)),
      'desccppnum'  => new sfValidatorInteger(array('required' => false)),
      'num_kit'     => new sfValidatorInteger(array('required' => false)),
      'fisi_num'    => new sfValidatorInteger(array('required' => false)),
      'docum1'      => new sfValidatorInteger(array('required' => false)),
      'docum2'      => new sfValidatorInteger(array('required' => false)),
      'temp_char1'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'temp_char2'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'temp_char3'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'temp_char4'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'temp_char5'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'temp_char6'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'temp_char7'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'temp_char8'  => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'p_comv_vol'  => new sfValidatorBoolean(array('required' => false)),
      'p_comv_klu'  => new sfValidatorBoolean(array('required' => false)),
      'p_comv_ven'  => new sfValidatorBoolean(array('required' => false)),
      'p_comv_con'  => new sfValidatorBoolean(array('required' => false)),
      'p_comv_r_c'  => new sfValidatorBoolean(array('required' => false)),
      'p_comv_r_p'  => new sfValidatorBoolean(array('required' => false)),
      'p_comv_tip'  => new sfValidatorBoolean(array('required' => false)),
      'p_desc_art'  => new sfValidatorBoolean(array('required' => false)),
      'p_desc_cat'  => new sfValidatorBoolean(array('required' => false)),
      'p_desc_glo'  => new sfValidatorBoolean(array('required' => false)),
      'p_desc_ofe'  => new sfValidatorBoolean(array('required' => false)),
      'p_desc_lin'  => new sfValidatorBoolean(array('required' => false)),
      'p_prec_isv'  => new sfValidatorBoolean(array('required' => false)),
      'p_prec1_isv' => new sfValidatorBoolean(array('required' => false)),
      'p_prec2_isv' => new sfValidatorBoolean(array('required' => false)),
      'p_prec3_isv' => new sfValidatorBoolean(array('required' => false)),
      'p_prec4_isv' => new sfValidatorBoolean(array('required' => false)),
      'p_prec5_isv' => new sfValidatorBoolean(array('required' => false)),
      'p_roundfac'  => new sfValidatorBoolean(array('required' => false)),
      'p_roundinf'  => new sfValidatorBoolean(array('required' => false)),
      'p_val_red'   => new sfValidatorInteger(array('required' => false)),
      'p_roundequ'  => new sfValidatorBoolean(array('required' => false)),
      'p_roundsup'  => new sfValidatorBoolean(array('required' => false)),
      'p_costo_do'  => new sfValidatorBoolean(array('required' => false)),
      'p_com_auto'  => new sfValidatorBoolean(array('required' => false)),
      'p_stock_neg' => new sfValidatorBoolean(array('required' => false)),
      'p_ent_new'   => new sfValidatorBoolean(array('required' => false)),
      'p_aju_comi'  => new sfValidatorBoolean(array('required' => false)),
      'p_doble_un'  => new sfValidatorBoolean(array('required' => false)),
      'p_pront_pg'  => new sfValidatorBoolean(array('required' => false)),
      'p_grab_ren'  => new sfValidatorBoolean(array('required' => false)),
      'p_para1'     => new sfValidatorBoolean(array('required' => false)),
      'p_para2'     => new sfValidatorBoolean(array('required' => false)),
      'p_para3'     => new sfValidatorBoolean(array('required' => false)),
      'p_para4'     => new sfValidatorBoolean(array('required' => false)),
      'p_para5'     => new sfValidatorBoolean(array('required' => false)),
      'p_para6'     => new sfValidatorBoolean(array('required' => false)),
      'p_para7'     => new sfValidatorBoolean(array('required' => false)),
      'p_para8'     => new sfValidatorBoolean(array('required' => false)),
      'p_para9'     => new sfValidatorBoolean(array('required' => false)),
      'p_para10'    => new sfValidatorBoolean(array('required' => false)),
      'p_open_com'  => new sfValidatorBoolean(array('required' => false)),
      'p_marg_cap'  => new sfValidatorBoolean(array('required' => false)),
      'p_dir_ent'   => new sfValidatorBoolean(array('required' => false)),
      'p_art_20'    => new sfValidatorBoolean(array('required' => false)),
      'p_imp_kit'   => new sfValidatorBoolean(array('required' => false)),
      'p_red_com'   => new sfValidatorBoolean(array('required' => false)),
      'p_cyf_dol'   => new sfValidatorBoolean(array('required' => false)),
      'p_ser_art'   => new sfValidatorBoolean(array('required' => false)),
      'p_art_dol'   => new sfValidatorBoolean(array('required' => false)),
      'mone_art'    => new sfValidatorString(array('max_length' => 6, 'required' => false)),
      'p_deb_ban'   => new sfValidatorBoolean(array('required' => false)),
      'p_deb_aut'   => new sfValidatorBoolean(array('required' => false)),
      'p_fact_alm'  => new sfValidatorBoolean(array('required' => false)),
      'p_despacho'  => new sfValidatorBoolean(array('required' => false)),
      'p_idb'       => new sfValidatorBoolean(array('required' => false)),
      'val_idb'     => new sfValidatorNumber(array('required' => false)),
      'tempor1'     => new sfValidatorInteger(array('required' => false)),
      'fecha_res'   => new sfValidatorDateTime(array('required' => false)),
      'fecha_fisi'  => new sfValidatorDateTime(array('required' => false)),
      'open_fisi'   => new sfValidatorBoolean(array('required' => false)),
      'serial'      => new sfValidatorString(array('max_length' => 4, 'required' => false)),
      'cadena'      => new sfValidatorString(array('max_length' => 60, 'required' => false)),
      'inv_emp'     => new sfValidatorString(array('max_length' => 250, 'required' => false)),
      'temp_char'   => new sfValidatorString(array('max_length' => 20, 'required' => false)),
      'fec_inte'    => new sfValidatorDateTime(array('required' => false)),
      'temp_fech'   => new sfValidatorDateTime(array('required' => false)),
      'ele_linea'   => new sfValidatorBoolean(array('required' => false)),
      'lon_linea'   => new sfValidatorInteger(array('required' => false)),
      'ele_categ'   => new sfValidatorBoolean(array('required' => false)),
      'lon_categ'   => new sfValidatorInteger(array('required' => false)),
      'ele_medid'   => new sfValidatorBoolean(array('required' => false)),
      'lon_medid'   => new sfValidatorInteger(array('required' => false)),
      'ele_item'    => new sfValidatorBoolean(array('required' => false)),
      'lon_item'    => new sfValidatorInteger(array('required' => false)),
      'ele_color'   => new sfValidatorBoolean(array('required' => false)),
      'lon_color'   => new sfValidatorInteger(array('required' => false)),
      'ele_carter'  => new sfValidatorBoolean(array('required' => false)),
      'caracter'    => new sfValidatorString(array('max_length' => 1, 'required' => false)),
      'dec_prec'    => new sfValidatorInteger(array('required' => false)),
      'dec_cost'    => new sfValidatorInteger(array('required' => false)),
      'cant_art'    => new sfValidatorInteger(array('required' => false)),
      'total_cod'   => new sfValidatorInteger(array('required' => false)),
      'tipo_com'    => new sfValidatorBoolean(array('required' => false)),
      'tipo_lib'    => new sfValidatorBoolean(array('required' => false)),
      'co_us_in'    => new sfValidatorString(array('max_length' => 4, 'required' => false)),
      'fe_us_in'    => new sfValidatorDateTime(array('required' => false)),
      'co_us_mo'    => new sfValidatorString(array('max_length' => 4, 'required' => false)),
      'fe_us_mo'    => new sfValidatorDateTime(array('required' => false)),
      'logo'        => new sfValidatorString(array('required' => false)),
      'revisado'    => new sfValidatorString(array('max_length' => 1, 'required' => false)),
      'trasnfe'     => new sfValidatorString(array('max_length' => 1, 'required' => false)),
      'p_sucursal'  => new sfValidatorBoolean(array('required' => false)),
      'rowguid'     => new sfValidatorString(array('max_length' => 36, 'required' => false)),
      'p_licores'   => new sfValidatorBoolean(array('required' => false)),
      'p_lotenro'   => new sfValidatorBoolean(array('required' => false)),
      'p_lotefec'   => new sfValidatorBoolean(array('required' => false)),
      'serverolap'  => new sfValidatorString(array('max_length' => 60, 'required' => false)),
      'dataolap'    => new sfValidatorString(array('max_length' => 60, 'required' => false)),
      'p_loteaut'   => new sfValidatorBoolean(array('required' => false)),
      'tipo_inve'   => new sfValidatorNumber(array('required' => false)),
      'aju_posm'    => new sfValidatorInteger(array('required' => false)),
      'aju_posa'    => new sfValidatorInteger(array('required' => false)),
      'aju_negm'    => new sfValidatorInteger(array('required' => false)),
      'aju_nega'    => new sfValidatorInteger(array('required' => false)),
      'aju_posmc'   => new sfValidatorInteger(array('required' => false)),
      'aju_posac'   => new sfValidatorInteger(array('required' => false)),
      'aju_negmc'   => new sfValidatorInteger(array('required' => false)),
      'aju_negac'   => new sfValidatorInteger(array('required' => false)),
      'plv_num'     => new sfValidatorInteger(array('required' => false)),
      'plc_num'     => new sfValidatorInteger(array('required' => false)),
      'pventa'      => new sfValidatorInteger(array('required' => false)),
      'turnosic'    => new sfValidatorInteger(array('required' => false)),
      'tabislr'     => new sfValidatorInteger(array('required' => false)),
      'moneda'      => new sfValidatorString(array('max_length' => 6, 'required' => false)),
      'imp_num'     => new sfValidatorInteger(array('required' => false)),
      'rma_cli'     => new sfValidatorInteger(array('required' => false)),
      'rma_prov'    => new sfValidatorInteger(array('required' => false)),
      'rma_entc'    => new sfValidatorInteger(array('required' => false)),
      'rma_entp'    => new sfValidatorInteger(array('required' => false)),
      'rma_regs'    => new sfValidatorInteger(array('required' => false)),
      'p_prov_new'  => new sfValidatorBoolean(array('required' => false)),
      'p_ser_new'   => new sfValidatorBoolean(array('required' => false)),
      'rmacliente'  => new sfValidatorString(array('max_length' => 10, 'required' => false)),
      'rma_trans'   => new sfValidatorString(array('max_length' => 6, 'required' => false)),
      'garantia'    => new sfValidatorString(array('max_length' => 8, 'required' => false)),
      'reem_prov'   => new sfValidatorString(array('max_length' => 6, 'required' => false)),
      'des_ser'     => new sfValidatorString(array('max_length' => 12, 'required' => false)),
      'ser_auto'    => new sfValidatorNumber(array('required' => false)),
      'pcontrol_1'  => new sfValidatorBoolean(array('required' => false)),
      'pcontrol_2'  => new sfValidatorBoolean(array('required' => false)),
      'pcontrol_3'  => new sfValidatorBoolean(array('required' => false)),
      'pcontrol_4'  => new sfValidatorBoolean(array('required' => false)),
      'pcontrol_5'  => new sfValidatorBoolean(array('required' => false)),
      'idioma'      => new sfValidatorString(array('max_length' => 1, 'required' => false)),
      'serie'       => new sfValidatorBoolean(array('required' => false)),
      'aux01'       => new sfValidatorNumber(array('required' => false)),
      'aux02'       => new sfValidatorString(array('max_length' => 30, 'required' => false)),
      'eprofit'     => new sfValidatorBoolean(array('required' => false)),
      'pais'        => new sfValidatorString(array('max_length' => 6, 'required' => false)),
      'emp_num'     => new sfValidatorInteger(array('required' => false)),
      'dmc_num'     => new sfValidatorInteger(array('required' => false)),
      'tax_num'     => new sfValidatorInteger(array('required' => false)),
      'ced_num'     => new sfValidatorInteger(array('required' => false)),
      'ent_num'     => new sfValidatorInteger(array('required' => false)),
      'artinmp'     => new sfValidatorBoolean(array('required' => false)),
      'tip_costo'   => new sfValidatorInteger(array('required' => false)),
      'tip_cmat'    => new sfValidatorInteger(array('required' => false)),
      'co_aent'     => new sfValidatorString(array('max_length' => 6, 'required' => false)),
      'cie_num'     => new sfValidatorInteger(array('required' => false)),
      'odp_num'     => new sfValidatorInteger(array('required' => false)),
      'req_num'     => new sfValidatorInteger(array('required' => false)),
      'dev_num'     => new sfValidatorInteger(array('required' => false)),
      'co_asal'     => new sfValidatorString(array('max_length' => 6, 'required' => false)),
      'devmax'      => new sfValidatorBoolean(array('required' => false)),
      'exp_num'     => new sfValidatorInteger(array('required' => false)),
      'inp_num'     => new sfValidatorInteger(array('required' => false)),
      'cost_num'    => new sfValidatorInteger(array('required' => false)),
      'par_num'     => new sfValidatorInteger(array('required' => false)),
      'esc_num'     => new sfValidatorInteger(array('required' => false)),
      'cierre_mes'  => new sfValidatorBoolean(array('required' => false)),
      'pla_num'     => new sfValidatorInteger(array('required' => false)),
      'men_num'     => new sfValidatorInteger(array('required' => false)),
      'tipcosdev'   => new sfValidatorInteger(array('required' => false)),
      'max_lin'     => new sfValidatorInteger(array('required' => false)),
      'dist_num'    => new sfValidatorInteger(array('required' => false)),
      'exp_numi'    => new sfValidatorInteger(array('required' => false)),
      'p_imp65'     => new sfValidatorBoolean(array('required' => false)),
      'val_max'     => new sfValidatorBoolean(array('required' => false)),
      'server'      => new sfValidatorString(array('max_length' => 32, 'required' => false)),
      'namedb'      => new sfValidatorString(array('max_length' => 32, 'required' => false)),
      'login'       => new sfValidatorString(array('max_length' => 32, 'required' => false)),
      'password'    => new sfValidatorString(array('max_length' => 32, 'required' => false)),
      'man_impr'    => new sfValidatorBoolean(array('required' => false)),
    ));

    $this->widgetSchema->setNameFormat('par_emp[%s]');

    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);

    $this->setupInheritance();

    parent::setup();
  }

  public function getModelName()
  {
    return 'ParEmp';
  }

}